Merge "Prune UsageStats data belonging to uninstalled packages."
diff --git a/Android.bp b/Android.bp
index 2a820cb..a7ce917 100644
--- a/Android.bp
+++ b/Android.bp
@@ -225,7 +225,6 @@
":framework-mca-filterfw-sources",
":framework-mca-filterpacks-sources",
":framework-media-sources",
- ":framework-mime-sources",
":framework-mms-sources",
":framework-opengl-sources",
":framework-rs-sources",
@@ -267,10 +266,19 @@
}
filegroup {
+ name: "framework-updatable-sources",
+ srcs: [
+ ":framework-sdkext-sources",
+ ":updatable-media-srcs",
+ ]
+}
+
+filegroup {
name: "framework-all-sources",
srcs: [
+ ":framework-mime-sources",
":framework-non-updatable-sources",
- ":updatable-media-srcs",
+ ":framework-updatable-sources",
],
}
@@ -319,12 +327,14 @@
"android.hardware.cas-V1.1-java",
"android.hardware.cas-V1.0-java",
"android.hardware.contexthub-V1.0-java",
+ "android.hardware.gnss-V1.0-java",
"android.hardware.health-V1.0-java-constants",
"android.hardware.radio-V1.0-java",
"android.hardware.radio-V1.1-java",
"android.hardware.radio-V1.2-java",
"android.hardware.radio-V1.3-java",
"android.hardware.radio-V1.4-java",
+ "android.hardware.radio-V1.5-java",
"android.hardware.thermal-V1.0-java-constants",
"android.hardware.thermal-V1.0-java",
"android.hardware.thermal-V1.1-java",
@@ -375,7 +385,6 @@
static_libs: [
"framework-internal-utils",
- "mimemap",
],
dxflags: [
@@ -437,6 +446,12 @@
"services-platform-compat-config",
"media-provider-platform-compat-config",
"services-devicepolicy-platform-compat-config",
+ "services-core-platform-compat-config",
+ ],
+ static_libs: [
+ // If MimeMap ever becomes its own APEX, then this dependency would need to be removed
+ // in favor of an API stubs dependency in java_library "framework" below.
+ "mimemap",
],
// For backwards compatibility.
stem: "framework",
@@ -572,6 +587,12 @@
],
}
+java_library {
+ name: "framework-annotations-lib",
+ srcs: [ ":framework-annotations" ],
+ sdk_version: "current",
+}
+
filegroup {
name: "framework-networkstack-shared-srcs",
srcs: [
@@ -772,7 +793,7 @@
filegroup {
name: "incremental_aidl",
srcs: [
- "core/java/android/os/incremental/IIncrementalService.aidl",
+ "core/java/android/os/incremental/IIncrementalManager.aidl",
"core/java/android/os/incremental/IIncrementalServiceProxy.aidl",
"core/java/android/os/incremental/IncrementalDataLoaderParamsParcel.aidl",
"core/java/android/os/incremental/IncrementalFileSystemControlParcel.aidl",
@@ -1015,14 +1036,15 @@
stubs_defaults {
name: "framework-doc-stubs-default",
srcs: [
+ ":framework-mime-sources",
":framework-non-updatable-sources",
+ ":framework-updatable-sources",
"core/java/**/*.logtags",
"test-base/src/**/*.java",
":opt-telephony-srcs",
":opt-net-voip-srcs",
":core-current-stubs-source",
":core_public_api_files",
- ":updatable-media-srcs",
"test-mock/src/**/*.java",
"test-runner/src/**/*.java",
],
@@ -1034,7 +1056,7 @@
"sdk-dir",
"api-versions-jars-dir",
],
- previous_api: ":last-released-public-api-for-metalava-annotations",
+ previous_api: ":last-released-public-api",
merge_annotations_dirs: [
"metalava-manual",
],
@@ -1080,17 +1102,18 @@
name: "metalava-api-stubs-default",
srcs: [
":framework-non-updatable-sources",
+ ":framework-updatable-sources",
"core/java/**/*.logtags",
":opt-telephony-srcs",
":opt-net-voip-srcs",
":core-current-stubs-source",
":core_public_api_files",
- ":updatable-media-srcs",
+ ":ike-api-srcs",
],
libs: ["framework-internal-utils"],
installable: false,
annotations_enabled: true,
- previous_api: ":last-released-public-api-for-metalava-annotations",
+ previous_api: ":last-released-public-api",
merge_annotations_dirs: [
"metalava-manual",
],
@@ -1426,7 +1449,7 @@
installable: false,
sdk_version: "core_platform",
annotations_enabled: true,
- previous_api: ":last-released-public-api-for-metalava-annotations",
+ previous_api: ":last-released-public-api",
merge_annotations_dirs: [
"metalava-manual",
],
@@ -1610,19 +1633,16 @@
"core/java/android/os/RegistrantList.java",
"core/java/android/os/Registrant.java",
"core/java/android/util/LocalLog.java",
- "core/java/android/util/Slog.java",
"core/java/android/util/TimeUtils.java",
"core/java/com/android/internal/os/SomeArgs.java",
- "core/java/com/android/internal/util/ArrayUtils.java",
- "core/java/com/android/internal/util/DumpUtils.java",
"core/java/com/android/internal/util/FastXmlSerializer.java",
"core/java/com/android/internal/util/HexDump.java",
+ "core/java/com/android/internal/util/IState.java",
"core/java/com/android/internal/util/IndentingPrintWriter.java",
"core/java/com/android/internal/util/Preconditions.java",
"core/java/com/android/internal/util/State.java",
"core/java/com/android/internal/util/StateMachine.java",
"core/java/com/android/internal/util/UserIcons.java",
- "core/java/com/android/internal/util/XmlUtils.java",
],
}
@@ -1631,8 +1651,10 @@
filegroup {
name: "framework-cellbroadcast-shared-srcs",
srcs: [
+ "core/java/android/os/HandlerExecutor.java",
"core/java/android/util/LocalLog.java",
- "core/java/android/util/Slog.java",
+ "core/java/com/android/internal/util/IState.java",
+ "core/java/com/android/internal/util/Preconditions.java",
"core/java/com/android/internal/util/State.java",
"core/java/com/android/internal/util/StateMachine.java",
],
diff --git a/CleanSpec.mk b/CleanSpec.mk
index f7a2858..8fac394 100644
--- a/CleanSpec.mk
+++ b/CleanSpec.mk
@@ -255,6 +255,7 @@
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/app/CaptivePortalLogin)
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/framework/ext.jar)
$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/framework_intermediates/src/telephony/java/com/google/android/mms)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/framework/*-service.jar)
# ******************************************************************
# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST ABOVE THIS BANNER
# ******************************************************************
diff --git a/TEST_MAPPING b/TEST_MAPPING
new file mode 100644
index 0000000..55fa5ed
--- /dev/null
+++ b/TEST_MAPPING
@@ -0,0 +1,17 @@
+{
+ "presubmit": [
+ {
+ "name": "FrameworksUiServicesTests",
+ "options": [
+ {
+ "exclude-annotation": "androidx.test.filters.FlakyTest"
+ }
+ ]
+ }
+ ],
+ "postsubmit-managedprofile-stress": [
+ {
+ "name": "ManagedProfileLifecycleStressTest"
+ }
+ ]
+}
diff --git a/apex/appsearch/Android.bp b/apex/appsearch/Android.bp
new file mode 100644
index 0000000..bcdcc7d
--- /dev/null
+++ b/apex/appsearch/Android.bp
@@ -0,0 +1,35 @@
+// Copyright (C) 2019 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.
+
+apex {
+ name: "com.android.appsearch",
+
+ manifest: "apex_manifest.json",
+
+ key: "com.android.appsearch.key",
+ certificate: ":com.android.appsearch.certificate",
+}
+
+apex_key {
+ name: "com.android.appsearch.key",
+ public_key: "com.android.appsearch.avbpubkey",
+ private_key: "com.android.appsearch.pem",
+}
+
+android_app_certificate {
+ name: "com.android.appsearch.certificate",
+ // This will use com.android.appsearch.x509.pem (the cert) and
+ // com.android.appsearch.pk8 (the private key)
+ certificate: "com.android.appsearch",
+}
diff --git a/apex/appsearch/apex_manifest.json b/apex/appsearch/apex_manifest.json
new file mode 100644
index 0000000..273b867
--- /dev/null
+++ b/apex/appsearch/apex_manifest.json
@@ -0,0 +1,4 @@
+{
+ "name": "com.android.appsearch",
+ "version": 1
+}
diff --git a/apex/appsearch/com.android.appsearch.avbpubkey b/apex/appsearch/com.android.appsearch.avbpubkey
new file mode 100644
index 0000000..4e5acae9
--- /dev/null
+++ b/apex/appsearch/com.android.appsearch.avbpubkey
Binary files differ
diff --git a/apex/appsearch/com.android.appsearch.pem b/apex/appsearch/com.android.appsearch.pem
new file mode 100644
index 0000000..4ed5945
--- /dev/null
+++ b/apex/appsearch/com.android.appsearch.pem
@@ -0,0 +1,51 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIJKQIBAAKCAgEAro9f/jvoIsj6ywuRmuUQS8UtprhohJitrovDMfm/T2R/WQvy
+AvUxgetyF4XvBPCDRqCsGxXCJMQOn1furrAeTmWbGHPhA0PI1Ys/qtfNMbh9THyn
+70I2c4X70CUQ+8/Y8BJ8CAB4iER/s9QtD28QLvM2BBUzRoKUSBGUYNMlYobjgRdK
+57V7yg48LkvUIg1fzIW3M5gCgOXa0u1xOadKX3m7tzCboHcXp5anfWX5PH1+okRu
+jzdI8OjtUq23qhoRw5Skz0Vbf4a+8t3kT3slF/Q7O8LoRPwpZsvIcvTyCGAqlra7
+2L2LN4H1p+u2ko3r/QmRbJn2eXW07elkyrggXMyn2rTxibQgk53wYfSavMyNd/E7
++de/uJ60l2aPa+5KUaR8eYwchXEELdqQ+zRgSZ2711xCaY4glEj7DT6VlEEdr26x
+akX0ra7e2sVGv1um/dvSyVO5aFKKjVvo4LqhWKWO8yvDMxmDDTNatvWhY2Bhd3RA
+0hilYpWQFb9Tv5f4E0tZmfvlddgux7sw++Y/RIimBFoSyf5AezAUIFYYoYvEzytB
+muq1/ecNHr+Z2tZMxN88sJVhzRzD9tKUyXhvxOV2Lg9TIeVTWGwQqgSnHWtIe+1p
+cw8inPfYEhP4Q+3W/RlPvNdu75x8Nj2aG7bxZnhoQDRDw5ddgma27I+a8esCAwEA
+AQKCAgBsNh9I6HRAVBz8kCBkSEnw3rwtFTZdtJQ+lw+bRHpvShqT5g7R/JQDOSTS
+JkoE4uBOgT4P0E45Inz6FLW2/yDacqxR3UwJDRVMI/WFACCJCRhLuR8V+BLvTIjN
+AJ1lrPSL5rmS8E/IEcakgQyp+6ypnkXHBCl0NXCcuKEl4N7VFE+mb/0UZPHnUSnH
+fWR085uGmwH17u7mXxdnGKDPH8DALSPMLUrcj9dPIdqUpwl5kUZWa1uqVphWF98/
+GMe5oE2Q0+3TO+i7xplKz3lAOFPHZLTvmCUK1tMHkZ6ifOwpewwLwB30/5N1BpB1
+126nrWk0xKCtFUixBOHzdnLwJHKSbi7chQU5q39oAJoTfxdmAJlaG0zQHUQZ44MQ
+gemzSA7uJbtoAOAZVF1K14xbIpnfidqTB7N3RCmiJE+/Hpkq6PxgPfu5rqocPbPC
+t0FgJ4NXNmKOAuJllSlrrHATcUOhF4g5pX7tvOc8X4y7bvfwOmtw5ez3INKMF0q6
+/y0vVCi6N1Z7CTa9eY8feZ1PImk/Fkq4NInSPyx7ZE3pLYmsvuJjliFrWo9TRVae
+Dt5vvBKBOpAfhDiHkeXbX7Raj2B6c6adF4no/3SAVlAjIq1iBVjfQWyHAGUoEW1O
+u3LdHTIb6gSTLJ4AfryEKrOE+1VMlYt92GwX692KKXMaJjytSQKCAQEA3pYbl8HD
+Y++UyEN5VzWAQedT3//GDwpDfgdERe2E4smYrkVNJ2WAG2SqY1A35DIl8be3eHvl
+soaL38j48ailfDYY9tI+IlapNh+VOLej+HiOytaPlLhcv2FpSC2qZT4EiU6IBXLo
++l6FrmD/VQXTjvoktzsDB/n1t4Dfa3Ogf+lLf1Jxr94YpEnDh18V5ofj78SplVLm
+NrzsHxAafE4Ni2a7dyWjcDYIuL7FTShT+0K4W45tRr+CGxThxu7LEe7zw4Z1IagU
+jJNtXjvDD/Zw4UTqI6RwWGZsu6UjPS6LHhOqnWqflWmFRIfMbDkuWvnGZTM9DkVg
+kk1+BNi1PECZXwKCAQEAyMOjbVo6XV3lFN0X8TpHyg/z9ar00/SE7WEJHqPSuzYT
+rSfU4vDDlaPAwkYvGi9ZKi9VM+R3CyBNxnK9Yq6NurHhhrYcAwdS/hGLT1K2o0Y8
+Pgv7gZCFb+SIwLBhlUG9otGULcBzLneqgVUqyMG6IoCjuC2LRyB71Xc2UMyg6n/f
+XpV2RTMb8f+26cgm6nj0SDAfgpr8HV6uNV80c6l1A8gq86nUWwiVAEUdmExSDe7J
+shsfWAj8RSErqDXf1BtEdPLJUSIPX5VXkzAXOXIkengwVno0vv0dBN8uraS8iQSG
+0JsJLLcw9b5kvnh6FEbE7POsIqKyCZV9VADwO6YW9QKCAQBYQsdwNqoGv6KMgozj
+8tgHyfWtVduwbQ50M+dznwpZbzz2pY5Bd/MDabhSpyVyfBwlrAa5ZM+hKc7fDu7/
+zDLKfR0LCjUPIrP4PS/LjK4dQZjFf6zxeOV2EedQcqMlgCEGXTh8iKMvXDm/+sBk
+c2n/QNs8OM8r44b2m8h78B6NefGw6/0ekn/M7V72F9M0VWAh3Cauim+09tbePmFy
+NvUR+MuPJEKZpSNyNltADCS49izqSSC1tAygNniMjHXDh6/rMS7TCLYVRARTIHlp
+o/wAp3X8aiEOPJcTFRlTElihtYSq5POgqHXqxbpek5H5CyALUvT76rCvcsDspQ3A
+dZEbAoIBAQCoLEmP5o8Rev/UdEgECB/uwWJIngYsLp3TAv/SrMRvkiL1X3JTD/+m
+L9/eXVBDjPoR/khPCcg2h77ex2qhaTrL8wnKAG6CkvYQYb3impTnPIRmLT9nDxrX
+2gY78wQrNUCXTRvlH1rcx90KLb+DH9S95ig+tdf/otRYwl27XU5GYQtJfcXuvZth
+IiWku8btjpiCh909WHpsV81yY+faI08j9d8U8WQzRYMbEMpzsyrhBO/rxBCDfDNl
+7R1W8JooYRb9KAs/bVqXZNBROW2a72RjOp6zMfdRLVHLrPC7AE32MNaFk/khfesD
+T5OwgdcxeP6oxo2hDcw5fwHXBlo2fTCpAoIBAQChgjv5AfQ50spqvHy6MNem4tV0
+L0IsxmNLsi8X2a6s4kStwUzOxDA8c/e54XabxQNZ0ERU1q+bgbG7PWC4twDMPR8i
+2DO6rgqSK4MjGOTgAoeDuy3mElFQmCLRs04Wf4jh8kPi217WFlYBynh2HmBKbh42
+JmIrLetbKEK13FXRvMkgZcX4OIDrT5TOvev4VZArU8PTRlWv3sqsKAVXjX0clGHf
+I0/2kSsr2qq1UY7JrYWZsZ9uqz2ZH0pF19a6O/Cq4uqTYoL+sYzFTSeFmChRjV1g
+ancTvTn9lcBqECDMgq5DE/p96Oxg/t8elalR6WDUlysafphVz3nTuyMTh7ka
+-----END RSA PRIVATE KEY-----
diff --git a/apex/appsearch/com.android.appsearch.pk8 b/apex/appsearch/com.android.appsearch.pk8
new file mode 100644
index 0000000..77e98b2
--- /dev/null
+++ b/apex/appsearch/com.android.appsearch.pk8
Binary files differ
diff --git a/apex/appsearch/com.android.appsearch.x509.pem b/apex/appsearch/com.android.appsearch.x509.pem
new file mode 100644
index 0000000..e37c4b9
--- /dev/null
+++ b/apex/appsearch/com.android.appsearch.x509.pem
@@ -0,0 +1,35 @@
+-----BEGIN CERTIFICATE-----
+MIIGETCCA/mgAwIBAgIUGl+MIvpEi0+TWzj0ieh6WtjXmP8wDQYJKoZIhvcNAQEL
+BQAwgZYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQH
+DA1Nb3VudGFpbiBWaWV3MRAwDgYDVQQKDAdBbmRyb2lkMRAwDgYDVQQLDAdBbmRy
+b2lkMRIwEAYDVQQDDAlhcHBzZWFyY2gxIjAgBgkqhkiG9w0BCQEWE2FuZHJvaWRA
+YW5kcm9pZC5jb20wIBcNMTkxMTIwMjMxNTM1WhgPNDc1NzEwMTYyMzE1MzVaMIGW
+MQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNTW91
+bnRhaW4gVmlldzEQMA4GA1UECgwHQW5kcm9pZDEQMA4GA1UECwwHQW5kcm9pZDES
+MBAGA1UEAwwJYXBwc2VhcmNoMSIwIAYJKoZIhvcNAQkBFhNhbmRyb2lkQGFuZHJv
+aWQuY29tMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAsyPlp3q3P9Xg
+W1WhIwQiF9em9oqaGQ/3dbIxickAy591qcRbpHb4lDTZusRECfqlV215mV+lv5x4
+EhOnId3uPKBAJ/YDtL7zUW6TWL7to7zEnUqSIKTcoQzNF2EiCeGuRhrtgYvAD3HQ
+dwr4xrbSADbDArF04A49voLpsmq1fyNgl86VISiMRqoSLJnA6eghlduuOt+nf252
+6WgxDs/JrO/eK70q0+RwmWzVJ/tVr+36a65N4EHhfL4t2hdV0k0XFob7hBn7XWzC
+QrSR3jCvE3yAfAr3tq5c19/WWBA7V45nEHzXyAvBUHWubYvDi+vm/yzqU2rQwScC
+bzp4zK4CnhBHqb4gHoy0+kfFIwJ1A3GT2pl3ba/NsIYgliMtPQfkDV5PE5RTNcwH
+21ewH7vm2+spQv5Z/2TEV2lEHlp2vuAliyn2AT4u1ginr6vtBRFLmpPeziFcfB0y
+7h04GctZpX8odz+XI7aMDe47RNu9XyJX0vulntxmlDF76k8Z9DIXg02hY+yc/i7+
+2ztnj1eXL51p+HyhK5VbvJWbKkVaMQijlbuIMYNzMA6L0WHWRc2Cux9UDODMGoiC
+w09JpqudCS/95I/F1xaWJ/Kh3vKeQshHAz0hrL7v7wpjmfeXf6NGsWJGy+giCwZj
+ABtn9nFQoesgi7M1LeazD5Q/4v4AMaUCAwEAAaNTMFEwHQYDVR0OBBYEFJpHCy2Y
+3qaL6cLpE9fe53L61KEEMB8GA1UdIwQYMBaAFJpHCy2Y3qaL6cLpE9fe53L61KEE
+MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggIBAGDYAcOhbOYcDB2K
+WDZka+FCORFFvz4nLQGE7Z9TAn1g7XusM2KbXlb2drIN6CWOFlnKQrUsNsAHrc+s
+tl+A1vC3/NfYKKBVuizPx/kHUgz3k/UIJzbzEu/uCJd86idcJoUTqC/qEJAeeQqM
+XpsNP1Yg7oyzZT8sFlUAKeDeXJ7fIDXR6nduUQ6uJXkee/5JF3VedHdgHAUsC19/
+KHhyVU3MLDUNBdAmM79+DsdVYi2Pw31jojMu95Zz1MYTRBcgQAiEw5nncr38k6ac
+Gy+JffgJR68FzI4QLBSxnDRFD2zXJ09lpP6Sjb1FVcDzk7Bi/EQDLBkrkbeLsk5F
+a0xz9VoJ3kM7Cc4R9MXN4ZWuePjdJwgasnHmllsXn45R9odgJgmfzuUwtgNw/XKQ
+QcQl7Q9QUrBCqIoHijxscUZCBSmIHVNBBDckRAmSXHeWMRlO3uBR4IA/Jfrt//4f
+uc7CNUp+LQ6EzBXJOVFrXRtau6Oj+jM1+fzxKo1uV2+T+GdVEE5jeF/6nB3qna6h
+2NmyLqbqeqp2QxgzBWSGy8Ugs6zg4wItJBqOoRLKKFxTJu5OAzJ4fUA+g7WFXNhR
+kG56SJ863LZoORKHWE72oXYeIW98Tq0qKLH3NzH5L4tfX8DeBTq+APezHetH1ljA
+D0avPy62g0i643bbpwZgezBgRIKL
+-----END CERTIFICATE-----
diff --git a/apex/appsearch/framework/java/android/app/TEST_MAPPING b/apex/appsearch/framework/java/android/app/TEST_MAPPING
new file mode 100644
index 0000000..12188f8
--- /dev/null
+++ b/apex/appsearch/framework/java/android/app/TEST_MAPPING
@@ -0,0 +1,7 @@
+{
+ "imports": [
+ {
+ "path": "frameworks/base/apex/appsearch/service/java/com/android/server/appsearch"
+ }
+ ]
+}
diff --git a/apex/appsearch/service/Android.bp b/apex/appsearch/service/Android.bp
index 2821fbe..4ebafce8 100644
--- a/apex/appsearch/service/Android.bp
+++ b/apex/appsearch/service/Android.bp
@@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
java_library {
- name: "appsearch-service",
+ name: "service-appsearch",
installable: true,
srcs: [
"java/**/*.java",
@@ -21,4 +21,7 @@
"framework",
"services.core",
],
+ static_libs: [
+ "icing-java-proto-lite",
+ ]
}
diff --git a/apex/appsearch/service/java/com/android/server/appsearch/TEST_MAPPING b/apex/appsearch/service/java/com/android/server/appsearch/TEST_MAPPING
new file mode 100644
index 0000000..08811f8
--- /dev/null
+++ b/apex/appsearch/service/java/com/android/server/appsearch/TEST_MAPPING
@@ -0,0 +1,15 @@
+{
+ "presubmit": [
+ {
+ "name": "CtsAppSearchTestCases"
+ },
+ {
+ "name": "FrameworksServicesTests",
+ "options": [
+ {
+ "include-filter": "com.android.server.appsearch"
+ }
+ ]
+ }
+ ]
+}
diff --git a/apex/appsearch/service/java/com/android/server/appsearch/impl/FakeIcing.java b/apex/appsearch/service/java/com/android/server/appsearch/impl/FakeIcing.java
new file mode 100644
index 0000000..5ac922c
--- /dev/null
+++ b/apex/appsearch/service/java/com/android/server/appsearch/impl/FakeIcing.java
@@ -0,0 +1,168 @@
+/*
+ * Copyright (C) 2019 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.appsearch.impl;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.util.ArrayMap;
+import android.util.ArraySet;
+import android.util.SparseArray;
+
+import com.google.android.icing.proto.DocumentProto;
+import com.google.android.icing.proto.PropertyProto;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicInteger;
+
+/**
+ * Fake in-memory implementation of the Icing key-value store and reverse index.
+ * <p>
+ * Currently, only queries by single exact term are supported. There is no support for persistence,
+ * namespaces, i18n tokenization, or schema.
+ *
+ * @hide
+ */
+public class FakeIcing {
+ private final AtomicInteger mNextDocId = new AtomicInteger();
+ private final Map<String, Integer> mUriToDocIdMap = new ArrayMap<>();
+ /** Array of Documents where index into the array is the docId. */
+ private final SparseArray<DocumentProto> mDocStore = new SparseArray<>();
+ /** Map of term to posting-list (the set of DocIds containing that term). */
+ private final Map<String, Set<Integer>> mIndex = new ArrayMap<>();
+
+ /**
+ * Inserts a document into the index.
+ *
+ * @param document The document to insert.
+ */
+ public void put(@NonNull DocumentProto document) {
+ String uri = document.getUri();
+
+ // Update mDocIdMap
+ Integer docId = mUriToDocIdMap.get(uri);
+ if (docId != null) {
+ // Delete the old doc
+ mDocStore.remove(docId);
+ }
+
+ // Allocate a new docId
+ docId = mNextDocId.getAndIncrement();
+ mUriToDocIdMap.put(uri, docId);
+
+ // Update mDocStore
+ mDocStore.put(docId, document);
+
+ // Update mIndex
+ indexDocument(docId, document);
+ }
+
+ /**
+ * Retrieves a document from the index.
+ *
+ * @param uri The URI of the document to retrieve.
+ * @return The body of the document, or {@code null} if no such document exists.
+ */
+ @Nullable
+ public DocumentProto get(@NonNull String uri) {
+ Integer docId = mUriToDocIdMap.get(uri);
+ if (docId == null) {
+ return null;
+ }
+ return mDocStore.get(docId);
+ }
+
+ /**
+ * Returns documents containing the given term.
+ *
+ * @param term A single exact term to look up in the index.
+ * @return The matching documents, or an empty {@code List} if no documents match.
+ */
+ @NonNull
+ public List<DocumentProto> query(@NonNull String term) {
+ String normTerm = normalizeString(term);
+ Set<Integer> docIds = mIndex.get(normTerm);
+ if (docIds == null || docIds.isEmpty()) {
+ return Collections.emptyList();
+ }
+ List<DocumentProto> matches = new ArrayList<>(docIds.size());
+ for (int docId : docIds) {
+ DocumentProto document = mDocStore.get(docId);
+ if (document != null) {
+ matches.add(document);
+ }
+ }
+ return matches;
+ }
+
+ /**
+ * Deletes a document by its URI.
+ *
+ * @param uri The URI of the document to be deleted.
+ */
+ public void delete(@NonNull String uri) {
+ // Update mDocIdMap
+ Integer docId = mUriToDocIdMap.get(uri);
+ if (docId != null) {
+ // Delete the old doc
+ mDocStore.remove(docId);
+ mUriToDocIdMap.remove(uri);
+ }
+ }
+
+ private void indexDocument(int docId, DocumentProto document) {
+ for (PropertyProto property : document.getPropertiesList()) {
+ for (String stringValue : property.getStringValuesList()) {
+ String[] words = normalizeString(stringValue).split("\\s+");
+ for (String word : words) {
+ indexTerm(docId, word);
+ }
+ }
+ for (Long longValue : property.getInt64ValuesList()) {
+ indexTerm(docId, longValue.toString());
+ }
+ for (Double doubleValue : property.getDoubleValuesList()) {
+ indexTerm(docId, doubleValue.toString());
+ }
+ for (Boolean booleanValue : property.getBooleanValuesList()) {
+ indexTerm(docId, booleanValue.toString());
+ }
+ // Intentionally skipping bytes values
+ for (DocumentProto documentValue : property.getDocumentValuesList()) {
+ indexDocument(docId, documentValue);
+ }
+ }
+ }
+
+ private void indexTerm(int docId, String term) {
+ Set<Integer> postingList = mIndex.get(term);
+ if (postingList == null) {
+ postingList = new ArraySet<>();
+ mIndex.put(term, postingList);
+ }
+ postingList.add(docId);
+ }
+
+ /** Strips out punctuation and converts to lowercase. */
+ private static String normalizeString(String input) {
+ return input.replaceAll("\\p{P}", "").toLowerCase(Locale.getDefault());
+ }
+}
diff --git a/apex/blobstore/service/Android.bp b/apex/blobstore/service/Android.bp
index 019f989..d8caa5a 100644
--- a/apex/blobstore/service/Android.bp
+++ b/apex/blobstore/service/Android.bp
@@ -13,7 +13,7 @@
// limitations under the License.
java_library {
- name: "blobstore-service",
+ name: "service-blobstore",
installable: true,
srcs: [
@@ -24,4 +24,4 @@
"framework",
"services.core",
],
-}
\ No newline at end of file
+}
diff --git a/apex/jobscheduler/README_js-mainline.md b/apex/jobscheduler/README_js-mainline.md
index ea20e3e..134ff3d 100644
--- a/apex/jobscheduler/README_js-mainline.md
+++ b/apex/jobscheduler/README_js-mainline.md
@@ -2,14 +2,14 @@
## Current structure
-- JS service side classes are put in `jobscheduler-service.jar`.
+- JS service side classes are put in `service-jobscheduler.jar`.
It's *not* included in services.jar, and instead it's put in the system server classpath,
which currently looks like the following:
-`SYSTEMSERVERCLASSPATH=/system/framework/services.jar:/system/framework/ethernet-service.jar:/system/framework/com.android.location.provider.jar:/system/framework/jobscheduler-service.jar`
+`SYSTEMSERVERCLASSPATH=/system/framework/services.jar:/system/framework/ethernet-service.jar:/system/framework/com.android.location.provider.jar:/system/framework/service-jobscheduler.jar`
`SYSTEMSERVERCLASSPATH` is generated from `PRODUCT_SYSTEM_SERVER_JARS`.
-- JS framework side classes are put in `jobscheduler-framework.jar`,
+- JS framework side classes are put in `framework-jobscheduler.jar`,
and the rest of the framework code is put in `framework-minus-apex.jar`,
as of http://ag/9145619.
diff --git a/apex/jobscheduler/framework/Android.bp b/apex/jobscheduler/framework/Android.bp
index 3902aa2..98bbe82 100644
--- a/apex/jobscheduler/framework/Android.bp
+++ b/apex/jobscheduler/framework/Android.bp
@@ -11,7 +11,7 @@
}
java_library {
- name: "jobscheduler-framework",
+ name: "framework-jobscheduler",
installable: false,
compile_dex: true,
sdk_version: "core_platform",
diff --git a/apex/jobscheduler/framework/java/android/app/job/JobSchedulerFrameworkInitializer.java b/apex/jobscheduler/framework/java/android/app/job/JobSchedulerFrameworkInitializer.java
index 3835d93..0c4fcb4 100644
--- a/apex/jobscheduler/framework/java/android/app/job/JobSchedulerFrameworkInitializer.java
+++ b/apex/jobscheduler/framework/java/android/app/job/JobSchedulerFrameworkInitializer.java
@@ -16,6 +16,7 @@
package android.app.job;
+import android.annotation.SystemApi;
import android.app.JobSchedulerImpl;
import android.app.SystemServiceRegistry;
import android.content.Context;
@@ -28,6 +29,7 @@
*
* @hide
*/
+@SystemApi
public class JobSchedulerFrameworkInitializer {
private JobSchedulerFrameworkInitializer() {
}
@@ -38,8 +40,6 @@
* {@link Context#getSystemService} can return them.
*
* <p>If this is called from other places, it throws a {@link IllegalStateException).
- *
- * TODO Make it a system API
*/
public static void registerServiceWrappers() {
SystemServiceRegistry.registerStaticService(
diff --git a/apex/jobscheduler/framework/java/android/os/DeviceIdleManager.java b/apex/jobscheduler/framework/java/android/os/DeviceIdleManager.java
index 0568beb..8019d4f 100644
--- a/apex/jobscheduler/framework/java/android/os/DeviceIdleManager.java
+++ b/apex/jobscheduler/framework/java/android/os/DeviceIdleManager.java
@@ -44,6 +44,10 @@
mService = service;
}
+ IDeviceIdleController getService() {
+ return mService;
+ }
+
/**
* @return package names the system has white-listed to opt out of power save restrictions,
* except for device idle mode.
diff --git a/apex/jobscheduler/framework/java/android/os/IDeviceIdleController.aidl b/apex/jobscheduler/framework/java/android/os/IDeviceIdleController.aidl
index 21ce5cc..643d47c 100644
--- a/apex/jobscheduler/framework/java/android/os/IDeviceIdleController.aidl
+++ b/apex/jobscheduler/framework/java/android/os/IDeviceIdleController.aidl
@@ -45,6 +45,7 @@
void addPowerSaveTempWhitelistApp(String name, long duration, int userId, String reason);
long addPowerSaveTempWhitelistAppForMms(String name, int userId, String reason);
long addPowerSaveTempWhitelistAppForSms(String name, int userId, String reason);
+ long whitelistAppTemporarily(String name, int userId, String reason);
void exitIdle(String reason);
int setPreIdleTimeoutMode(int Mode);
void resetPreIdleTimeoutMode();
diff --git a/apex/jobscheduler/framework/java/android/os/PowerWhitelistManager.java b/apex/jobscheduler/framework/java/android/os/PowerWhitelistManager.java
index 06ed52d..7a3ed92 100644
--- a/apex/jobscheduler/framework/java/android/os/PowerWhitelistManager.java
+++ b/apex/jobscheduler/framework/java/android/os/PowerWhitelistManager.java
@@ -16,12 +16,17 @@
package android.os;
+import android.annotation.IntDef;
import android.annotation.NonNull;
+import android.annotation.RequiresPermission;
import android.annotation.SystemApi;
import android.annotation.SystemService;
import android.annotation.TestApi;
import android.content.Context;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
/**
* Interface to access and modify the power save whitelist.
*
@@ -32,11 +37,91 @@
@SystemService(Context.POWER_WHITELIST_MANAGER)
public class PowerWhitelistManager {
private final Context mContext;
+ // Proxy to DeviceIdleController for now
+ // TODO: migrate to PowerWhitelistController
+ private final IDeviceIdleController mService;
+
+ /**
+ * Indicates that an unforeseen event has occurred and the app should be whitelisted to handle
+ * it.
+ */
+ public static final int EVENT_UNSPECIFIED = 0;
+
+ /**
+ * Indicates that an SMS event has occurred and the app should be whitelisted to handle it.
+ */
+ public static final int EVENT_SMS = 1;
+
+ /**
+ * Indicates that an MMS event has occurred and the app should be whitelisted to handle it.
+ */
+ public static final int EVENT_MMS = 2;
+
+ /**
+ * @hide
+ */
+ @Retention(RetentionPolicy.SOURCE)
+ @IntDef(prefix = {"EVENT_"}, value = {
+ EVENT_UNSPECIFIED,
+ EVENT_SMS,
+ EVENT_MMS,
+ })
+ public @interface WhitelistEvent {
+ }
/**
* @hide
*/
public PowerWhitelistManager(@NonNull Context context) {
mContext = context;
+ mService = context.getSystemService(DeviceIdleManager.class).getService();
+ }
+
+ /**
+ * Add an app to the temporary whitelist for a short amount of time.
+ *
+ * @param packageName The package to add to the temp whitelist
+ * @param durationMs How long to keep the app on the temp whitelist for (in milliseconds)
+ */
+ @RequiresPermission(android.Manifest.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST)
+ public void whitelistAppTemporarily(@NonNull String packageName, long durationMs) {
+ String reason = "from:" + UserHandle.formatUid(Binder.getCallingUid());
+ try {
+ mService.addPowerSaveTempWhitelistApp(packageName, durationMs, mContext.getUserId(),
+ reason);
+ } catch (RemoteException e) {
+ e.rethrowFromSystemServer();
+ }
+ }
+
+ /**
+ * Add an app to the temporary whitelist for a short amount of time for a specific reason.
+ *
+ * @param packageName The package to add to the temp whitelist
+ * @param event The reason to add the app to the temp whitelist
+ * @param reason A human-readable reason explaining why the app is temp whitelisted. Only used
+ * for logging purposes
+ * @return The duration (in milliseconds) that the app is whitelisted for
+ */
+ @RequiresPermission(android.Manifest.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST)
+ public long whitelistAppTemporarilyForEvent(@NonNull String packageName,
+ @WhitelistEvent int event, @NonNull String reason) {
+ try {
+ switch (event) {
+ case EVENT_MMS:
+ return mService.addPowerSaveTempWhitelistAppForMms(
+ packageName, mContext.getUserId(), reason);
+ case EVENT_SMS:
+ return mService.addPowerSaveTempWhitelistAppForSms(
+ packageName, mContext.getUserId(), reason);
+ case EVENT_UNSPECIFIED:
+ default:
+ return mService.whitelistAppTemporarily(
+ packageName, mContext.getUserId(), reason);
+ }
+ } catch (RemoteException e) {
+ e.rethrowFromSystemServer();
+ return 0;
+ }
}
}
diff --git a/apex/jobscheduler/service/Android.bp b/apex/jobscheduler/service/Android.bp
index ca6dc45..c9d9d6c 100644
--- a/apex/jobscheduler/service/Android.bp
+++ b/apex/jobscheduler/service/Android.bp
@@ -1,7 +1,7 @@
// Job Scheduler Service jar, which will eventually be put in the jobscheduler mainline apex.
-// jobscheduler-service needs to be added to PRODUCT_SYSTEM_SERVER_JARS.
+// service-jobscheduler needs to be added to PRODUCT_SYSTEM_SERVER_JARS.
java_library {
- name: "jobscheduler-service",
+ name: "service-jobscheduler",
installable: true,
srcs: [
diff --git a/apex/jobscheduler/service/java/com/android/server/DeviceIdleController.java b/apex/jobscheduler/service/java/com/android/server/DeviceIdleController.java
index dfe7a90..701ea84 100644
--- a/apex/jobscheduler/service/java/com/android/server/DeviceIdleController.java
+++ b/apex/jobscheduler/service/java/com/android/server/DeviceIdleController.java
@@ -1662,7 +1662,17 @@
return isPowerSaveWhitelistAppInternal(name);
}
- @Override public void addPowerSaveTempWhitelistApp(String packageName, long duration,
+ @Override
+ public long whitelistAppTemporarily(String packageName, int userId, String reason)
+ throws RemoteException {
+ // At least 10 seconds.
+ long duration = Math.max(10_000L, mConstants.MAX_TEMP_APP_WHITELIST_DURATION / 2);
+ addPowerSaveTempWhitelistAppChecked(packageName, duration, userId, reason);
+ return duration;
+ }
+
+ @Override
+ public void addPowerSaveTempWhitelistApp(String packageName, long duration,
int userId, String reason) throws RemoteException {
addPowerSaveTempWhitelistAppChecked(packageName, duration, userId, reason);
}
diff --git a/apex/permission/Android.bp b/apex/permission/Android.bp
index 0274814..5945fb3 100644
--- a/apex/permission/Android.bp
+++ b/apex/permission/Android.bp
@@ -14,9 +14,12 @@
apex {
name: "com.android.permission",
-
+ defaults: ["com.android.permission-defaults"],
manifest: "apex_manifest.json",
+}
+apex_defaults {
+ name: "com.android.permission-defaults",
key: "com.android.permission.key",
certificate: ":com.android.permission.certificate",
}
diff --git a/apex/permission/testing/Android.bp b/apex/permission/testing/Android.bp
new file mode 100644
index 0000000..f8978dc
--- /dev/null
+++ b/apex/permission/testing/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2019 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.
+
+apex {
+ name: "test_com.android.permission",
+ visibility: [
+ "//system/apex/tests",
+ ],
+ defaults: ["com.android.permission-defaults"],
+ manifest: "test_manifest.json",
+ file_contexts: ":com.android.permission-file_contexts",
+ // Test APEX, should never be installed
+ installable: false,
+}
diff --git a/apex/permission/testing/test_manifest.json b/apex/permission/testing/test_manifest.json
new file mode 100644
index 0000000..bc19a9e
--- /dev/null
+++ b/apex/permission/testing/test_manifest.json
@@ -0,0 +1,4 @@
+{
+ "name": "com.android.permission",
+ "version": 2147483647
+}
diff --git a/apex/sdkext/Android.bp b/apex/sdkext/Android.bp
new file mode 100644
index 0000000..b8dcb90
--- /dev/null
+++ b/apex/sdkext/Android.bp
@@ -0,0 +1,32 @@
+// Copyright (C) 2019 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.
+
+apex {
+ name: "com.android.sdkext",
+ manifest: "manifest.json",
+ java_libs: [ "framework-sdkext" ],
+ key: "com.android.sdkext.key",
+ certificate: ":com.android.sdkext.certificate",
+}
+
+apex_key {
+ name: "com.android.sdkext.key",
+ public_key: "com.android.sdkext.avbpubkey",
+ private_key: "com.android.sdkext.pem",
+}
+
+android_app_certificate {
+ name: "com.android.sdkext.certificate",
+ certificate: "com.android.sdkext",
+}
diff --git a/apex/sdkext/OWNERS b/apex/sdkext/OWNERS
new file mode 100644
index 0000000..feb2742
--- /dev/null
+++ b/apex/sdkext/OWNERS
@@ -0,0 +1 @@
+hansson@google.com
diff --git a/apex/sdkext/com.android.sdkext.avbpubkey b/apex/sdkext/com.android.sdkext.avbpubkey
new file mode 100644
index 0000000..8f47741
--- /dev/null
+++ b/apex/sdkext/com.android.sdkext.avbpubkey
Binary files differ
diff --git a/apex/sdkext/com.android.sdkext.pem b/apex/sdkext/com.android.sdkext.pem
new file mode 100644
index 0000000..8164601
--- /dev/null
+++ b/apex/sdkext/com.android.sdkext.pem
@@ -0,0 +1,51 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIJKQIBAAKCAgEAr72pTSavrziDP54AtQZlRclDxJf9HXRZwFRbYx9hWZ4z7ZtO
+pNBDPvPJCiAOVUsILgCQhBUolz2dyLob25Fd0PVp0n9ibIPEQYjTfHjOK40qb57N
+LhEp2ceGiAfsywPSi0TH1PQ6JgbCe/RM4TefI/sj3gYJPka3ksMvylhMIgUVLgME
+kYizhzwHqlLMspB858SioREZdGwcdZrMMIajGFU69Q9ZRDBzhPvxyKhYoObcOtk1
+uVaiE/fNoi3wKGJz2l2vhUuNrQW7MWlVMag+Qes4YACUTk9LZrOVFEJFjWc8xGUi
+ABtfKGs5JgNr/sWnhvifLn8lJuf0/BJmjD+L5QwXYs2cS7gcZJtTM12J94r0Twgw
+wF2lNmIxAE9sYqj5Rh3dIlTPE5vMUECmQEGjIBB/hzT65VxVqSjU/IlS506JTg3p
+IOQtZ15cUzTBpda4jrvqcq6RNVvgBCu2bV5D8Z4z9FUlPyvD+Zq/6lcoJfLtznAs
+G2463hyPAHTGBIcZ5p5bTuGxoAb6ivyqo4b9Qi4yYA6je9HJmuy8T3Mn5JROoeu9
+BH1K54r/mpT4TQPwuKUvRRtBAV2OPHjo+zp0Gd4Y6rxDYxEIdfEae7pQr/QExSPB
+q/QCr9RhixR1mO373LHuja+MxdAxIxugb2HTS61PQo+PbYrhJMcVuxTwJOECAwEA
+AQKCAgAH7ToRrMkH0ji5SdsmTx+KQkW4PFLCXVke/68PjX7KmAQnl3W4oVwnHr/W
+oROEbVn1GTlre7jU+YaAY0SWZrwgjLE1OWGrG1ZizlUbrCdAd6GOX09J4KROml1L
+DXB0x7tbZMLOrCVjSbLD/ITrM6MN8Gnxvbv0/yOQjxU8vzbP4gLOjHxMRCo001RV
+Ll7lPvcjTQ84zJilU6sE8vJ6zdfVZSK/ou2X0cekG+kP7+fvefo8/UcbEPlGhUrV
+IdVPPQGUu90K2hmN0FBdLi8Vik0klAN68Qu/bHwuKbNzsnmIoztucFFUR+fG3u84
+87aPS0L/J3+mjT2Tv6qhJANUGBmrK/h7MkelpKXlRTCITJLX9xP7hfSbJ4f6aLVq
+ZYPPciGxSBbUDgAwvPtOlMDzccg7YsYyiBBO28wh8MN97rePmc0z6nGmjeXhcbCC
+QktG50VYFCyqp5muKgqQmRfRjHFHLWs8GEqgxMeEL3U3HjYfCYr+6E8Sr5OnOBeH
+3buCi1+zgnNYCvbamgY/OJmW7f9h5O31hxmTplc2E1ZuxUGQZthabt1rN3bmNkyf
+KUmPwnIYkDkWBSV5lzyQExfS3/EVvj0EnHhx8faamimNrGo8xCcfnLT3c0WEFVmo
+yIyVRX3EpXJFM2JkeJ21/IEZXTzHSoNxk12CBG8i8lLSflWSMQKCAQEA2ZqVnOuV
+SZfLCUYUUh8Hvhc5zONstfq7ma1Zsttsdaj9t68nLRiBDvLOGnMjDkYZzoSd4fyl
+oy+YqWGBqcqa5kg1NOCH0I46p9d8RcWAfDnB4sqbLgWh70qsvni6igRijmsMDvkA
+U9HeEdPaLCjQ4UXw7GQvN5rRxuRt+OSqV3tV/Pk9JYyYjz7faC8dmbKDrWHHuOvm
+/9y6Xy+L5IgftykNlUeddSCIoMOAadM7BiRjsrHnOYBQ8xBcn0OYafpIswItrgVi
+IrsPJaBFidx8QYK4MVibyka6U0cm28OocDSPtSk/4jrnCEEhLjFUnWwuMXuBGlrd
+W7wP/muoJqb1VwKCAQEAzsAT90kkOCvAcrfGRE3KkUjwWAsQyP8u2+27JIQPqrpW
+GfWAzJXFt80TSp0Zf/Lrq3/SQ9n4AaL4K9dcMoreedoQN9C9JI7zPtZAWNrJVUcV
+dq2gZjBQ78+oK7uQgvFNWxga5D+Nh+Y+9Tp537fc5HIh0Y13PgsxxPk2OnZJTvLX
+HM5H7Aua9ssmqChsrKihuUsDSPozfBz+H7FNHEdKMqVLqJJSK6m0uMxuLovdVfka
+5S7iBMjEGZc46Iz3ckE0pdOiQLooNqfEQqFe5Uou/KZxxKI1NW25rEEBTVyQWt+2
+BNUCfKP7noZ45u5sUY3eJrgI7BrPEDbNS81WYaLchwKCAQA8Q4mHyd6wYO+EA/qA
+u8NDK9+AFMP4qhXme5HJ7Obetwx9IG7zGEQ1xZy6yoQ84cEn5qZq/bNJvFbFIhHs
+2gWIHRtPJ5e1dI5eCVmLYSUyQjSmAIJ1fm3YfY/VuE3BB3HcC11tkBw9GnQr78YO
+UMd4fAw7C4vgFGpgcMbcFUfvrmKkCsqaaZOeqETq75F9DWlWTSwo1HxHA/RBhENz
+6RcPfLkcTJcY5wevrjUUGcHQ86cAyDBHRngkuLVODkRZpU0Y9lN8TFVfVPre6sIX
+ag6nffJRCD8tB+V2RtBGMKunV4ctHt1oY/Oz34W260aJynoIjjG1ANEpJK4xQdNx
+0O9FAoIBAQCz2AGGKemHswdEwveEkuaSWpA3Bekj7lYkmTchHH9EU7JyAkx3qhDD
+QXB2hxGXawf1tsqAmypQwiJ+gGeCz6mW9UkGRF1DX9XX4yc2I5rew2a4RXAxc/Xz
+pP70i8O5I43Wn7FEusOyY2aAis1Y/eb4EQ+56QTAw5wXa3DwidRbCIJ2XDnT6oRy
+CWUnAYMG7ek/9TB2Wq5OWCn2B5S79IdmZsLZb+5qbMT3u1xcwO1Xy8jJc27IGpv6
+ZsDqCTV1/aJ+XQnWpBg28tiV3Sle6pjUzTRJh5AhWcEZRbKMSOiJI/CBY4k2Qq6t
+xuuEdgFjL7T+mTepqehUglcyiPuLEtAhAoIBAQDDQ5pTFOlunfYzm+CIvvImAgy7
+vrEabJYABATytAbXRMMbrKoEdU2ApEDyEW7PgysDnYLAZ+icObnJlBTYvNdlWFly
+XiviGVfpjFWDT9U/gUwFQu2lfEjoiivoGS92USHUy4UMVHiiznnm20VLLkgd3xna
+HUNSDdHIEgzOTmDsKJwMfA9zGckx23JJimPR5ekv6vr6QllYtECs4lTC1gVQAp2f
+5daxHRbkmO6gw1RgQADLkAnYz3aI1jNuHm5VyAZGt/d3JCtZ3Wwwejll8uJ4J09G
+oEtqyY9RVeHK50bLO4lyAXFiE+J6qqXjsGC20cpxeZYW5llMY/dhA6WV4YXV
+-----END RSA PRIVATE KEY-----
diff --git a/apex/sdkext/com.android.sdkext.pk8 b/apex/sdkext/com.android.sdkext.pk8
new file mode 100644
index 0000000..ccc0bf4
--- /dev/null
+++ b/apex/sdkext/com.android.sdkext.pk8
Binary files differ
diff --git a/apex/sdkext/com.android.sdkext.x509.pem b/apex/sdkext/com.android.sdkext.x509.pem
new file mode 100644
index 0000000..45d2ade
--- /dev/null
+++ b/apex/sdkext/com.android.sdkext.x509.pem
@@ -0,0 +1,35 @@
+-----BEGIN CERTIFICATE-----
+MIIGIzCCBAugAwIBAgIUXuDL7QvzQh7S6rihWz2KRvCFVT0wDQYJKoZIhvcNAQEL
+BQAwgZ8xCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQH
+DA1Nb3VudGFpbiBWaWV3MRAwDgYDVQQKDAdBbmRyb2lkMRAwDgYDVQQLDAdBbmRy
+b2lkMRswGQYDVQQDDBJjb20uYW5kcm9pZC5zZGtleHQxIjAgBgkqhkiG9w0BCQEW
+E2FuZHJvaWRAYW5kcm9pZC5jb20wIBcNMTkxMjAyMTQyNDM0WhgPNDc1NzEwMjgx
+NDI0MzRaMIGfMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQG
+A1UEBwwNTW91bnRhaW4gVmlldzEQMA4GA1UECgwHQW5kcm9pZDEQMA4GA1UECwwH
+QW5kcm9pZDEbMBkGA1UEAwwSY29tLmFuZHJvaWQuc2RrZXh0MSIwIAYJKoZIhvcN
+AQkBFhNhbmRyb2lkQGFuZHJvaWQuY29tMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A
+MIICCgKCAgEAxFvZZ6ES1oqAu1K74/ZxnC3SOhHnLISLBgJEe7DqtdpuNFAwvdVO
+RL/HULhDbjYlOhpU2x3SavDIZZ2lRfiS9Q+M25WftxTRHVjBcpgwbV77TVxPKlAa
+tVN2lUVOY+s4QAVMNIXjC4kCKK/pCQtacH715EtdV47fWdg/Nx4iP/Aord8k3KGI
+9iI2ZOUjaugTRxu5lKRNDrv0bw5rEzyYmDyMud+kR/iS3/5oog57wPE0ffAkZXWE
+p3L2Cejre3ekCizsvVh6EmH6ForKLtL6f0z5Zir1f4R9+YcENspTlJR3pDhg7y3I
+uTQT/iDCtV0l+g2PjGZPEeAQHND3+kDQR7Sno/WC1Nhws6vcu1MdrC+kIh1ewx4y
+8moy/yqb5M98PJDzTSi/AOTB/OiqLXo/T8rjLBmirs9y3fTT6gJ6qXxOWgt8dle9
+7TBfa84Xi8uVY61c+A+YI0nLal7QDPsP3RPv5sJSQ9x9YnweVfD9Q0EOi52sSNu+
+QuN/kcUrMgPgha20VhfH/CkkPDyIp6aZyHHM69MIl+cYEm8vPa5uy3dosuRomT0f
+I4HOBjULDIuj+rIi+Rg3qHvmpuejwZXI/FBNWIhLEUG3ytgksjMaBoYAYflGdrcj
+BQexuF3EO+j4uo7JGjNcaT7wRoCH9gt29VHckDg2qz6VWXrlpmME4UkCAwEAAaNT
+MFEwHQYDVR0OBBYEFISN2nmUHllgPZMZ62U7mU3ZxzlXMB8GA1UdIwQYMBaAFISN
+2nmUHllgPZMZ62U7mU3ZxzlXMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEL
+BQADggIBAFHIwyBNIVyHXUsDUdcjxfojXQsF/BCL9ehE3pgdkvDfQanaIREWn0nc
+oCFDFkYMRqaXOGC5TKq4OCjXOLsdfODt8HQ3F9J1B0ghQ5tfOdw7xDugNAszqP/Q
+h7kpvqLTycjrqOeZ5KjxEEYtP/KlUmALgOKcTcSH+XhWyxhjF4j24T9F2yJRr3/A
+r1NGU/djH953bHKC8OpJ2teUpDLA4TxVp/EhslH2eVigF80c/w74QPLEWkD9zv/4
+YeRg/R5N83zHs99NtlWMIeHfK6fUbzMyaSZtvm+jK20tkByQb/OQRed+drk25MtL
+68IRvxqri367qRScdpTZbu0ByLO4X8gFdubRUWr+tcO4pZX+DJRVriExbOkU2xhS
+Vtslq23V/hwTuUNm1CXjR70mPS13BTmHrIQDqLoIw/WTQlGh+vxnlAFRIHM3KB2c
+OdzUBu+NcB4aZEd0KKtct600A0DKPr1MQPb5jDq9wEtPSQYwMF0nRFNnXltbrXMd
+4hhwnhKr74fVMUmb+7eQP56XE/Nk4D+npMO54vv1pav+DI2/nxCND9BOLBweY38p
+Tvd2RjesMok0zXuVXiCIu4GEpwo7WkSnv25xrb0Ey2M8QWnGNnCcX7Kv6ip3RdWy
+HiN0G8RJrs/yNEVSDRx8ZhtwTpXVPQxbARbmhNF4/fnolElkmrMP
+-----END CERTIFICATE-----
diff --git a/apex/sdkext/framework/Android.bp b/apex/sdkext/framework/Android.bp
new file mode 100644
index 0000000..b17f0f8
--- /dev/null
+++ b/apex/sdkext/framework/Android.bp
@@ -0,0 +1,30 @@
+// Copyright (C) 2019 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.
+
+filegroup {
+ name: "framework-sdkext-sources",
+ srcs: [
+ "java/**/*.java",
+ ],
+ path: "java",
+}
+
+java_library {
+ name: "framework-sdkext",
+ srcs: [ ":framework-sdkext-sources" ],
+ sdk_version: "system_current",
+ libs: [ "framework-annotations-lib" ],
+ permitted_packages: [ "android.os.ext" ],
+ installable: true,
+}
diff --git a/apex/sdkext/framework/java/android/os/ext/SdkExtensions.java b/apex/sdkext/framework/java/android/os/ext/SdkExtensions.java
new file mode 100644
index 0000000..c039a82
--- /dev/null
+++ b/apex/sdkext/framework/java/android/os/ext/SdkExtensions.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.os.ext;
+
+import android.annotation.IntDef;
+import android.os.Build.VERSION_CODES;
+import android.os.SystemProperties;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/** @hide */
+public class SdkExtensions {
+
+ private static final int R_EXTENSION_INT;
+ static {
+ R_EXTENSION_INT = SystemProperties.getInt("persist.com.android.sdkext.sdk_info", 0);
+ }
+
+ /** Values suitable as parameters for {@link #getExtensionVersion(int)}. */
+ @IntDef(value = { VERSION_CODES.R })
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface SdkVersion {}
+
+ /**
+ * Return the version of the extension to the given SDK.
+ *
+ * @param sdk the SDK version to get the extension version of.
+ * @see SdkVersion
+ * @throws IllegalArgumentException if sdk is not an sdk version with extensions
+ */
+ public static int getExtensionVersion(@SdkVersion int sdk) {
+ if (sdk < VERSION_CODES.R) {
+ throw new IllegalArgumentException();
+ }
+ return R_EXTENSION_INT;
+ }
+
+}
diff --git a/apex/sdkext/framework/java/android/os/ext/package.html b/apex/sdkext/framework/java/android/os/ext/package.html
new file mode 100644
index 0000000..34c1697
--- /dev/null
+++ b/apex/sdkext/framework/java/android/os/ext/package.html
@@ -0,0 +1,5 @@
+<HTML>
+<BODY>
+Provides APIs to interface with the SDK extensions.
+</BODY>
+</HTML>
diff --git a/apex/sdkext/framework/tests/Android.bp b/apex/sdkext/framework/tests/Android.bp
new file mode 100644
index 0000000..3d5dbb3
--- /dev/null
+++ b/apex/sdkext/framework/tests/Android.bp
@@ -0,0 +1,10 @@
+android_test {
+ name: "framework-sdkext-tests",
+ srcs: ["src/**/*.java"],
+ libs: [
+ "android.test.base",
+ "android.test.runner",
+ ],
+ static_libs: [ "framework-sdkext" ],
+ platform_apis: true,
+}
diff --git a/apex/sdkext/framework/tests/AndroidManifest.xml b/apex/sdkext/framework/tests/AndroidManifest.xml
new file mode 100644
index 0000000..831f132
--- /dev/null
+++ b/apex/sdkext/framework/tests/AndroidManifest.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2019 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.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.android.sdkext.tests">
+
+ <application>
+ <uses-library android:name="android.test.runner" />
+ </application>
+
+ <instrumentation android:name="android.test.InstrumentationTestRunner"
+ android:targetPackage="com.android.sdkext.tests" />
+
+</manifest>
diff --git a/apex/sdkext/framework/tests/src/android/os/ext/SdkExtensionsTest.java b/apex/sdkext/framework/tests/src/android/os/ext/SdkExtensionsTest.java
new file mode 100644
index 0000000..6885110
--- /dev/null
+++ b/apex/sdkext/framework/tests/src/android/os/ext/SdkExtensionsTest.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.os.ext;
+
+import android.os.Build;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import junit.framework.TestCase;
+
+public class SdkExtensionsTest extends TestCase {
+
+ @SmallTest
+ public void testBadArgument() throws Exception {
+ try {
+ SdkExtensions.getExtensionVersion(Build.VERSION_CODES.Q);
+ fail("expected IllegalArgumentException");
+ } catch (IllegalArgumentException expected) { }
+
+ try {
+ SdkExtensions.getExtensionVersion(999999);
+ fail("expected IllegalArgumentException");
+ } catch (IllegalArgumentException expected) { }
+ }
+
+ @SmallTest
+ public void testDefault() throws Exception {
+ int r = SdkExtensions.getExtensionVersion(Build.VERSION_CODES.R);
+ assertTrue(r >= 0);
+ }
+
+}
diff --git a/apex/sdkext/manifest.json b/apex/sdkext/manifest.json
new file mode 100644
index 0000000..048f5c4
--- /dev/null
+++ b/apex/sdkext/manifest.json
@@ -0,0 +1,4 @@
+{
+ "name": "com.android.sdkext",
+ "version": 1
+}
diff --git a/apex/statsd/service/Android.bp b/apex/statsd/service/Android.bp
index 786e8b0..f71d74f 100644
--- a/apex/statsd/service/Android.bp
+++ b/apex/statsd/service/Android.bp
@@ -1,8 +1,8 @@
// Statsd Service jar, which will eventually be put in the statsd mainline apex.
-// statsd-service needs to be added to PRODUCT_SYSTEM_SERVER_JARS.
+// service-statsd needs to be added to PRODUCT_SYSTEM_SERVER_JARS.
// This jar will contain StatsCompanionService
java_library {
- name: "statsd-service",
+ name: "service-statsd",
installable: true,
srcs: [
@@ -13,4 +13,4 @@
"framework",
"services.core",
],
-}
\ No newline at end of file
+}
diff --git a/apex/statsd/service/java/com/android/server/stats/StatsCompanionService.java b/apex/statsd/service/java/com/android/server/stats/StatsCompanionService.java
index 8a00c83..f11d4f8 100644
--- a/apex/statsd/service/java/com/android/server/stats/StatsCompanionService.java
+++ b/apex/statsd/service/java/com/android/server/stats/StatsCompanionService.java
@@ -18,6 +18,7 @@
import static android.app.AppOpsManager.OP_FLAGS_ALL_TRUSTED;
import static android.content.pm.PackageInfo.REQUESTED_PERMISSION_GRANTED;
import static android.content.pm.PermissionInfo.PROTECTION_DANGEROUS;
+import static android.os.Process.THREAD_PRIORITY_BACKGROUND;
import static android.os.Process.getUidForPid;
import static android.os.storage.VolumeInfo.TYPE_PRIVATE;
import static android.os.storage.VolumeInfo.TYPE_PUBLIC;
@@ -115,7 +116,6 @@
import com.android.internal.annotations.GuardedBy;
import com.android.internal.app.procstats.IProcessStats;
import com.android.internal.app.procstats.ProcessStats;
-import com.android.internal.os.BackgroundThread;
import com.android.internal.os.BatterySipper;
import com.android.internal.os.BatteryStatsHelper;
import com.android.internal.os.BinderCallsStats.ExportedCallStat;
@@ -535,7 +535,7 @@
// Assumes that sStatsdLock is held.
@GuardedBy("sStatsdLock")
- private final void informAllUidsLocked(Context context) throws RemoteException {
+ private void informAllUidsLocked(Context context) throws RemoteException {
UserManager um = (UserManager) context.getSystemService(Context.USER_SERVICE);
PackageManager pm = context.getPackageManager();
final List<UserInfo> users = um.getUsers(true);
@@ -557,7 +557,11 @@
Slog.e(TAG, "Failed to close the read side of the pipe.", e);
}
final ParcelFileDescriptor writeFd = fds[1];
- BackgroundThread.getHandler().post(() -> {
+ HandlerThread backgroundThread = new HandlerThread(
+ "statsCompanionService.bg", THREAD_PRIORITY_BACKGROUND);
+ backgroundThread.start();
+ Handler handler = new Handler(backgroundThread.getLooper());
+ handler.post(() -> {
FileOutputStream fout = new ParcelFileDescriptor.AutoCloseOutputStream(writeFd);
try {
ProtoOutputStream output = new ProtoOutputStream(fout);
@@ -565,7 +569,8 @@
// Add in all the apps for every user/profile.
for (UserInfo profile : users) {
List<PackageInfo> pi =
- pm.getInstalledPackagesAsUser(PackageManager.MATCH_KNOWN_PACKAGES,
+ pm.getInstalledPackagesAsUser(PackageManager.MATCH_UNINSTALLED_PACKAGES
+ | PackageManager.MATCH_ANY_USER,
profile.id);
for (int j = 0; j < pi.size(); j++) {
if (pi.get(j).applicationInfo != null) {
@@ -606,6 +611,8 @@
}
} finally {
IoUtils.closeQuietly(fout);
+ backgroundThread.quit();
+ backgroundThread.interrupt();
}
});
}
@@ -1156,12 +1163,12 @@
final WifiActivityEnergyInfo wifiInfo = awaitControllerInfo(wifiReceiver);
StatsLogEventWrapper e = new StatsLogEventWrapper(tagId, elapsedNanos,
wallClockNanos);
- e.writeLong(wifiInfo.getTimeStamp());
+ e.writeLong(wifiInfo.getTimeSinceBootMillis());
e.writeInt(wifiInfo.getStackState());
- e.writeLong(wifiInfo.getControllerTxTimeMillis());
- e.writeLong(wifiInfo.getControllerRxTimeMillis());
- e.writeLong(wifiInfo.getControllerIdleTimeMillis());
- e.writeLong(wifiInfo.getControllerEnergyUsed());
+ e.writeLong(wifiInfo.getControllerTxDurationMillis());
+ e.writeLong(wifiInfo.getControllerRxDurationMillis());
+ e.writeLong(wifiInfo.getControllerIdleDurationMillis());
+ e.writeLong(wifiInfo.getControllerEnergyUsedMicroJoules());
pulledData.add(e);
} catch (RemoteException e) {
Slog.e(TAG,
@@ -2076,6 +2083,7 @@
private void pullDangerousPermissionState(long elapsedNanos, final long wallClockNanos,
List<StatsLogEventWrapper> pulledData) {
long token = Binder.clearCallingIdentity();
+ Set<Integer> reportedUids = new HashSet<>();
try {
PackageManager pm = mContext.getPackageManager();
@@ -2096,6 +2104,12 @@
continue;
}
+ if (reportedUids.contains(pkg.applicationInfo.uid)) {
+ // do not report same uid twice
+ continue;
+ }
+ reportedUids.add(pkg.applicationInfo.uid);
+
int numPerms = pkg.requestedPermissions.length;
for (int permNum = 0; permNum < numPerms; permNum++) {
String permName = pkg.requestedPermissions[permNum];
@@ -2120,7 +2134,7 @@
e.writeString(permName);
e.writeInt(pkg.applicationInfo.uid);
- e.writeString(pkg.packageName);
+ e.writeString(null);
e.writeBoolean((pkg.requestedPermissionsFlags[permNum]
& REQUESTED_PERMISSION_GRANTED) != 0);
e.writeInt(permissionFlags);
@@ -2169,6 +2183,20 @@
e.writeLong(op.getBackgroundRejectCount(OP_FLAGS_ALL_TRUSTED));
e.writeLong(op.getForegroundAccessDuration(OP_FLAGS_ALL_TRUSTED));
e.writeLong(op.getBackgroundAccessDuration(OP_FLAGS_ALL_TRUSTED));
+
+ String perm = AppOpsManager.opToPermission(op.getOpCode());
+ if (perm == null) {
+ e.writeBoolean(false);
+ } else {
+ PermissionInfo permInfo;
+ try {
+ permInfo = mContext.getPackageManager().getPermissionInfo(perm, 0);
+ e.writeBoolean(permInfo.getProtection() == PROTECTION_DANGEROUS);
+ } catch (PackageManager.NameNotFoundException exception) {
+ e.writeBoolean(false);
+ }
+ }
+
pulledData.add(e);
}
}
@@ -2729,23 +2757,20 @@
filter.addAction(Intent.ACTION_PACKAGE_ADDED);
filter.addAction(Intent.ACTION_PACKAGE_REMOVED);
filter.addDataScheme("package");
- mContext.registerReceiverAsUser(mAppUpdateReceiver, UserHandle.ALL, filter,
- null,
- null);
+ mContext.registerReceiverForAllUsers(mAppUpdateReceiver, filter, null, null);
// Setup receiver for user initialize (which happens once for a new user)
// and
// if a user is removed.
filter = new IntentFilter(Intent.ACTION_USER_INITIALIZE);
filter.addAction(Intent.ACTION_USER_REMOVED);
- mContext.registerReceiverAsUser(mUserUpdateReceiver, UserHandle.ALL,
- filter, null, null);
+ mContext.registerReceiverForAllUsers(mUserUpdateReceiver, filter, null, null);
// Setup receiver for device reboots or shutdowns.
filter = new IntentFilter(Intent.ACTION_REBOOT);
filter.addAction(Intent.ACTION_SHUTDOWN);
- mContext.registerReceiverAsUser(
- mShutdownEventReceiver, UserHandle.ALL, filter, null, null);
+ mContext.registerReceiverForAllUsers(
+ mShutdownEventReceiver, filter, null, null);
final long token = Binder.clearCallingIdentity();
try {
// Pull the latest state of UID->app name, version mapping when
diff --git a/api/current.txt b/api/current.txt
index f010fca..884bc5a 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -1865,6 +1865,7 @@
field public static final int accessibilityActionPageLeft = 16908360; // 0x1020048
field public static final int accessibilityActionPageRight = 16908361; // 0x1020049
field public static final int accessibilityActionPageUp = 16908358; // 0x1020046
+ field public static final int accessibilityActionPressAndHold = 16908362; // 0x102004a
field public static final int accessibilityActionScrollDown = 16908346; // 0x102003a
field public static final int accessibilityActionScrollLeft = 16908345; // 0x1020039
field public static final int accessibilityActionScrollRight = 16908347; // 0x102003b
@@ -4759,18 +4760,18 @@
field public static final int VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION = 3; // 0x3
}
- public class ExpandableListActivity extends android.app.Activity implements android.widget.ExpandableListView.OnChildClickListener android.widget.ExpandableListView.OnGroupCollapseListener android.widget.ExpandableListView.OnGroupExpandListener android.view.View.OnCreateContextMenuListener {
- ctor public ExpandableListActivity();
- method public android.widget.ExpandableListAdapter getExpandableListAdapter();
- method public android.widget.ExpandableListView getExpandableListView();
- method public long getSelectedId();
- method public long getSelectedPosition();
- method public boolean onChildClick(android.widget.ExpandableListView, android.view.View, int, int, long);
- method public void onGroupCollapse(int);
- method public void onGroupExpand(int);
- method public void setListAdapter(android.widget.ExpandableListAdapter);
- method public boolean setSelectedChild(int, int, boolean);
- method public void setSelectedGroup(int);
+ @Deprecated public class ExpandableListActivity extends android.app.Activity implements android.widget.ExpandableListView.OnChildClickListener android.widget.ExpandableListView.OnGroupCollapseListener android.widget.ExpandableListView.OnGroupExpandListener android.view.View.OnCreateContextMenuListener {
+ ctor @Deprecated public ExpandableListActivity();
+ method @Deprecated public android.widget.ExpandableListAdapter getExpandableListAdapter();
+ method @Deprecated public android.widget.ExpandableListView getExpandableListView();
+ method @Deprecated public long getSelectedId();
+ method @Deprecated public long getSelectedPosition();
+ method @Deprecated public boolean onChildClick(android.widget.ExpandableListView, android.view.View, int, int, long);
+ method @Deprecated public void onGroupCollapse(int);
+ method @Deprecated public void onGroupExpand(int);
+ method @Deprecated public void setListAdapter(android.widget.ExpandableListAdapter);
+ method @Deprecated public boolean setSelectedChild(int, int, boolean);
+ method @Deprecated public void setSelectedGroup(int);
}
@Deprecated public class Fragment implements android.content.ComponentCallbacks2 android.view.View.OnCreateContextMenuListener {
@@ -5212,40 +5213,40 @@
method @Deprecated public void onKeyguardExitResult(boolean);
}
- public abstract class LauncherActivity extends android.app.ListActivity {
- ctor public LauncherActivity();
- method protected android.content.Intent getTargetIntent();
- method protected android.content.Intent intentForPosition(int);
- method protected android.app.LauncherActivity.ListItem itemForPosition(int);
- method public java.util.List<android.app.LauncherActivity.ListItem> makeListItems();
- method protected java.util.List<android.content.pm.ResolveInfo> onQueryPackageManager(android.content.Intent);
- method protected void onSetContentView();
+ @Deprecated public abstract class LauncherActivity extends android.app.ListActivity {
+ ctor @Deprecated public LauncherActivity();
+ method @Deprecated protected android.content.Intent getTargetIntent();
+ method @Deprecated protected android.content.Intent intentForPosition(int);
+ method @Deprecated protected android.app.LauncherActivity.ListItem itemForPosition(int);
+ method @Deprecated public java.util.List<android.app.LauncherActivity.ListItem> makeListItems();
+ method @Deprecated protected java.util.List<android.content.pm.ResolveInfo> onQueryPackageManager(android.content.Intent);
+ method @Deprecated protected void onSetContentView();
}
- public class LauncherActivity.IconResizer {
- ctor public LauncherActivity.IconResizer();
- method public android.graphics.drawable.Drawable createIconThumbnail(android.graphics.drawable.Drawable);
+ @Deprecated public class LauncherActivity.IconResizer {
+ ctor @Deprecated public LauncherActivity.IconResizer();
+ method @Deprecated public android.graphics.drawable.Drawable createIconThumbnail(android.graphics.drawable.Drawable);
}
- public static class LauncherActivity.ListItem {
- ctor public LauncherActivity.ListItem();
- field public String className;
- field public android.os.Bundle extras;
- field public android.graphics.drawable.Drawable icon;
- field public CharSequence label;
- field public String packageName;
- field public android.content.pm.ResolveInfo resolveInfo;
+ @Deprecated public static class LauncherActivity.ListItem {
+ ctor @Deprecated public LauncherActivity.ListItem();
+ field @Deprecated public String className;
+ field @Deprecated public android.os.Bundle extras;
+ field @Deprecated public android.graphics.drawable.Drawable icon;
+ field @Deprecated public CharSequence label;
+ field @Deprecated public String packageName;
+ field @Deprecated public android.content.pm.ResolveInfo resolveInfo;
}
- public class ListActivity extends android.app.Activity {
- ctor public ListActivity();
- method public android.widget.ListAdapter getListAdapter();
- method public android.widget.ListView getListView();
- method public long getSelectedItemId();
- method public int getSelectedItemPosition();
- method protected void onListItemClick(android.widget.ListView, android.view.View, int, long);
- method public void setListAdapter(android.widget.ListAdapter);
- method public void setSelection(int);
+ @Deprecated public class ListActivity extends android.app.Activity {
+ ctor @Deprecated public ListActivity();
+ method @Deprecated public android.widget.ListAdapter getListAdapter();
+ method @Deprecated public android.widget.ListView getListView();
+ method @Deprecated public long getSelectedItemId();
+ method @Deprecated public int getSelectedItemPosition();
+ method @Deprecated protected void onListItemClick(android.widget.ListView, android.view.View, int, long);
+ method @Deprecated public void setListAdapter(android.widget.ListAdapter);
+ method @Deprecated public void setSelection(int);
}
@Deprecated public class ListFragment extends android.app.Fragment {
@@ -6725,7 +6726,8 @@
method @Nullable public String getAlwaysOnVpnPackage(@NonNull android.content.ComponentName);
method @NonNull @WorkerThread public android.os.Bundle getApplicationRestrictions(@Nullable android.content.ComponentName, String);
method @Deprecated @Nullable public String getApplicationRestrictionsManagingPackage(@NonNull android.content.ComponentName);
- method public boolean getAutoTimeRequired();
+ method public boolean getAutoTime(@NonNull android.content.ComponentName);
+ method @Deprecated public boolean getAutoTimeRequired();
method @NonNull public java.util.List<android.os.UserHandle> getBindDeviceAdminTargetUsers(@NonNull android.content.ComponentName);
method public boolean getBluetoothContactSharingDisabled(@NonNull android.content.ComponentName);
method public boolean getCameraDisabled(@Nullable android.content.ComponentName);
@@ -6841,7 +6843,8 @@
method public boolean setApplicationHidden(@NonNull android.content.ComponentName, String, boolean);
method @WorkerThread public void setApplicationRestrictions(@Nullable android.content.ComponentName, String, android.os.Bundle);
method @Deprecated public void setApplicationRestrictionsManagingPackage(@NonNull android.content.ComponentName, @Nullable String) throws android.content.pm.PackageManager.NameNotFoundException;
- method public void setAutoTimeRequired(@NonNull android.content.ComponentName, boolean);
+ method public void setAutoTime(@NonNull android.content.ComponentName, boolean);
+ method @Deprecated public void setAutoTimeRequired(@NonNull android.content.ComponentName, boolean);
method public void setBackupServiceEnabled(@NonNull android.content.ComponentName, boolean);
method public void setBluetoothContactSharingDisabled(@NonNull android.content.ComponentName, boolean);
method public void setCameraDisabled(@NonNull android.content.ComponentName, boolean);
@@ -9899,6 +9902,7 @@
method public abstract void sendOrderedBroadcast(@RequiresPermission android.content.Intent, @Nullable String);
method public abstract void sendOrderedBroadcast(@NonNull @RequiresPermission android.content.Intent, @Nullable String, @Nullable android.content.BroadcastReceiver, @Nullable android.os.Handler, int, @Nullable String, @Nullable android.os.Bundle);
method public void sendOrderedBroadcast(@NonNull android.content.Intent, @Nullable String, @Nullable String, @Nullable android.content.BroadcastReceiver, @Nullable android.os.Handler, int, @Nullable String, @Nullable android.os.Bundle);
+ method public void sendOrderedBroadcast(@NonNull @RequiresPermission android.content.Intent, @Nullable String, @Nullable String, @Nullable android.os.Bundle, @Nullable android.content.BroadcastReceiver, @Nullable android.os.Handler, int, @Nullable String, @Nullable android.os.Bundle);
method @RequiresPermission("android.permission.INTERACT_ACROSS_USERS") public abstract void sendOrderedBroadcastAsUser(@RequiresPermission android.content.Intent, android.os.UserHandle, @Nullable String, android.content.BroadcastReceiver, @Nullable android.os.Handler, int, @Nullable String, @Nullable android.os.Bundle);
method @Deprecated @RequiresPermission(android.Manifest.permission.BROADCAST_STICKY) public abstract void sendStickyBroadcast(@RequiresPermission android.content.Intent);
method @Deprecated @RequiresPermission(allOf={"android.permission.INTERACT_ACROSS_USERS", android.Manifest.permission.BROADCAST_STICKY}) public abstract void sendStickyBroadcastAsUser(@RequiresPermission android.content.Intent, android.os.UserHandle);
@@ -11555,8 +11559,11 @@
field public static final int STATUS_FAILURE_ABORTED = 3; // 0x3
field public static final int STATUS_FAILURE_BLOCKED = 2; // 0x2
field public static final int STATUS_FAILURE_CONFLICT = 5; // 0x5
+ field public static final int STATUS_FAILURE_ILLEGAL_STATE = 9; // 0x9
field public static final int STATUS_FAILURE_INCOMPATIBLE = 7; // 0x7
field public static final int STATUS_FAILURE_INVALID = 4; // 0x4
+ field public static final int STATUS_FAILURE_NAME_NOT_FOUND = 8; // 0x8
+ field public static final int STATUS_FAILURE_SECURITY = 10; // 0xa
field public static final int STATUS_FAILURE_STORAGE = 6; // 0x6
field public static final int STATUS_PENDING_USER_ACTION = -1; // 0xffffffff
field public static final int STATUS_SUCCESS = 0; // 0x0
@@ -11578,6 +11585,7 @@
method public void removeChildSessionId(int);
method public void removeSplit(@NonNull String) throws java.io.IOException;
method public void setStagingProgress(float);
+ method public void transfer(@NonNull String, @NonNull android.content.IntentSender) throws android.content.pm.PackageManager.NameNotFoundException;
method public void transfer(@NonNull String) throws android.content.pm.PackageManager.NameNotFoundException;
}
@@ -22955,6 +22963,7 @@
method public int getAccumulatedDeltaRangeState();
method public double getAccumulatedDeltaRangeUncertaintyMeters();
method public double getAutomaticGainControlLevelDb();
+ method @FloatRange(from=0, to=50) public double getBasebandCn0DbHz();
method @Deprecated public long getCarrierCycles();
method public float getCarrierFrequencyHz();
method @Deprecated public double getCarrierPhase();
@@ -22972,6 +22981,7 @@
method public int getSvid();
method public double getTimeOffsetNanos();
method public boolean hasAutomaticGainControlLevelDb();
+ method public boolean hasBasebandCn0DbHz();
method @Deprecated public boolean hasCarrierCycles();
method public boolean hasCarrierFrequencyHz();
method @Deprecated public boolean hasCarrierPhase();
@@ -23063,6 +23073,7 @@
public final class GnssStatus {
method @FloatRange(from=0, to=360) public float getAzimuthDegrees(@IntRange(from=0) int);
+ method @FloatRange(from=0, to=63) public float getBasebandCn0DbHz(@IntRange(from=0) int);
method @FloatRange(from=0) public float getCarrierFrequencyHz(@IntRange(from=0) int);
method @FloatRange(from=0, to=63) public float getCn0DbHz(@IntRange(from=0) int);
method public int getConstellationType(@IntRange(from=0) int);
@@ -23070,6 +23081,7 @@
method @IntRange(from=0) public int getSatelliteCount();
method @IntRange(from=1, to=200) public int getSvid(@IntRange(from=0) int);
method public boolean hasAlmanacData(@IntRange(from=0) int);
+ method public boolean hasBasebandCn0DbHz(@IntRange(from=0) int);
method public boolean hasCarrierFrequencyHz(@IntRange(from=0) int);
method public boolean hasEphemerisData(@IntRange(from=0) int);
method public boolean usedInFix(@IntRange(from=0) int);
@@ -23085,7 +23097,7 @@
public static final class GnssStatus.Builder {
ctor public GnssStatus.Builder();
- method @NonNull public android.location.GnssStatus.Builder addSatellite(int, @IntRange(from=1, to=200) int, @FloatRange(from=0, to=63) float, @FloatRange(from=0xffffffa6, to=90) float, @FloatRange(from=0, to=360) float, boolean, boolean, boolean, boolean, @FloatRange(from=0) float);
+ method @NonNull public android.location.GnssStatus.Builder addSatellite(int, @IntRange(from=1, to=200) int, @FloatRange(from=0, to=63) float, @FloatRange(from=0xffffffa6, to=90) float, @FloatRange(from=0, to=360) float, boolean, boolean, boolean, boolean, @FloatRange(from=0) float, boolean, @FloatRange(from=0, to=63) float);
method @NonNull public android.location.GnssStatus build();
method @NonNull public android.location.GnssStatus.Builder clearSatellites();
}
@@ -25048,6 +25060,7 @@
method @NonNull public java.util.List<byte[]> getSecureStopIds();
method @NonNull public java.util.List<byte[]> getSecureStops();
method @android.media.MediaDrm.SecurityLevel public int getSecurityLevel(@NonNull byte[]);
+ method @NonNull public static java.util.List<java.util.UUID> getSupportedCryptoSchemes();
method public static boolean isCryptoSchemeSupported(@NonNull java.util.UUID);
method public static boolean isCryptoSchemeSupported(@NonNull java.util.UUID, @NonNull String);
method public static boolean isCryptoSchemeSupported(@NonNull java.util.UUID, @NonNull String, @android.media.MediaDrm.SecurityLevel int);
@@ -28925,6 +28938,7 @@
method @Nullable public String getInterfaceName();
method @NonNull public java.util.List<android.net.LinkAddress> getLinkAddresses();
method public int getMtu();
+ method @Nullable public android.net.IpPrefix getNat64Prefix();
method @Nullable public String getPrivateDnsServerName();
method @NonNull public java.util.List<android.net.RouteInfo> getRoutes();
method public boolean isPrivateDnsActive();
@@ -28935,6 +28949,7 @@
method public void setInterfaceName(@Nullable String);
method public void setLinkAddresses(@NonNull java.util.Collection<android.net.LinkAddress>);
method public void setMtu(int);
+ method public void setNat64Prefix(@Nullable android.net.IpPrefix);
method public void writeToParcel(android.os.Parcel, int);
field @NonNull public static final android.os.Parcelable.Creator<android.net.LinkProperties> CREATOR;
}
@@ -29165,14 +29180,17 @@
}
public class ProxyInfo implements android.os.Parcelable {
+ ctor public ProxyInfo(@Nullable android.net.ProxyInfo);
method public static android.net.ProxyInfo buildDirectProxy(String, int);
method public static android.net.ProxyInfo buildDirectProxy(String, int, java.util.List<java.lang.String>);
method public static android.net.ProxyInfo buildPacProxy(android.net.Uri);
+ method @NonNull public static android.net.ProxyInfo buildPacProxy(@NonNull android.net.Uri, int);
method public int describeContents();
method public String[] getExclusionList();
method public String getHost();
method public android.net.Uri getPacFileUrl();
method public int getPort();
+ method public boolean isValid();
method public void writeToParcel(android.os.Parcel, int);
field @NonNull public static final android.os.Parcelable.Creator<android.net.ProxyInfo> CREATOR;
}
@@ -29886,6 +29904,7 @@
ctor @Deprecated public WifiConfiguration();
method public int describeContents();
method @Deprecated public android.net.ProxyInfo getHttpProxy();
+ method @Deprecated @NonNull public String getKey();
method @Deprecated @NonNull public android.net.MacAddress getRandomizedMacAddress();
method @Deprecated public boolean isPasspoint();
method @Deprecated public void setHttpProxy(android.net.ProxyInfo);
@@ -30059,7 +30078,6 @@
method @Deprecated public int addNetwork(android.net.wifi.WifiConfiguration);
method @RequiresPermission(android.Manifest.permission.CHANGE_WIFI_STATE) public int addNetworkSuggestions(@NonNull java.util.List<android.net.wifi.WifiNetworkSuggestion>);
method public void addOrUpdatePasspointConfiguration(android.net.wifi.hotspot2.PasspointConfiguration);
- method @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE) public void addScanResultsListener(@NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.WifiManager.ScanResultsListener);
method @RequiresPermission(allOf={android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.ACCESS_WIFI_STATE}) public void addSuggestionConnectionStatusListener(@NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.WifiManager.SuggestionConnectionStatusListener);
method @Deprecated public static int calculateSignalLevel(int, int);
method public int calculateSignalLevel(int);
@@ -30096,10 +30114,10 @@
method @Deprecated public boolean pingSupplicant();
method @Deprecated public boolean reassociate();
method @Deprecated public boolean reconnect();
+ method @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE) public void registerScanResultsCallback(@NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.WifiManager.ScanResultsCallback);
method @Deprecated public boolean removeNetwork(int);
method @RequiresPermission(android.Manifest.permission.CHANGE_WIFI_STATE) public int removeNetworkSuggestions(@NonNull java.util.List<android.net.wifi.WifiNetworkSuggestion>);
method @Deprecated @RequiresPermission(anyOf={"android.permission.NETWORK_SETTINGS", "android.permission.NETWORK_CARRIER_PROVISIONING"}) public void removePasspointConfiguration(String);
- method @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE) public void removeScanResultsListener(@NonNull android.net.wifi.WifiManager.ScanResultsListener);
method @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE) public void removeSuggestionConnectionStatusListener(@NonNull android.net.wifi.WifiManager.SuggestionConnectionStatusListener);
method @Deprecated public boolean saveConfiguration();
method public void setTdlsEnabled(java.net.InetAddress, boolean);
@@ -30108,6 +30126,7 @@
method @RequiresPermission(allOf={android.Manifest.permission.CHANGE_WIFI_STATE, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void startLocalOnlyHotspot(android.net.wifi.WifiManager.LocalOnlyHotspotCallback, @Nullable android.os.Handler);
method @Deprecated public boolean startScan();
method @Deprecated public void startWps(android.net.wifi.WpsInfo, android.net.wifi.WifiManager.WpsCallback);
+ method @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE) public void unregisterScanResultsCallback(@NonNull android.net.wifi.WifiManager.ScanResultsCallback);
method @Deprecated public int updateNetwork(android.net.wifi.WifiConfiguration);
field public static final String ACTION_PICK_WIFI_NETWORK = "android.net.wifi.PICK_WIFI_NETWORK";
field public static final String ACTION_REQUEST_SCAN_ALWAYS_AVAILABLE = "android.net.wifi.action.REQUEST_SCAN_ALWAYS_AVAILABLE";
@@ -30181,8 +30200,9 @@
method public void setReferenceCounted(boolean);
}
- public static interface WifiManager.ScanResultsListener {
- method public void onScanResultsAvailable();
+ public abstract static class WifiManager.ScanResultsCallback {
+ ctor public WifiManager.ScanResultsCallback();
+ method public abstract void onScanResultsAvailable();
}
public static interface WifiManager.SuggestionConnectionStatusListener {
@@ -30239,6 +30259,7 @@
method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setIsEnhancedOpen(boolean);
method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setIsHiddenSsid(boolean);
method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setIsMetered(boolean);
+ method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setIsUserAllowedToManuallyConnect(boolean);
method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setIsUserInteractionRequired(boolean);
method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setPasspointConfig(@NonNull android.net.wifi.hotspot2.PasspointConfiguration);
method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setPriority(@IntRange(from=0) int);
@@ -30560,6 +30581,7 @@
method @Nullable public android.net.wifi.p2p.WifiP2pWfdInfo getWfdInfo();
method public boolean isGroupOwner();
method public boolean isServiceDiscoveryCapable();
+ method public void update(@NonNull android.net.wifi.p2p.WifiP2pDevice);
method public boolean wpsDisplaySupported();
method public boolean wpsKeypadSupported();
method public boolean wpsPbcSupported();
@@ -34826,8 +34848,8 @@
}
public final class FileUtils {
- method public static void closeQuietly(@Nullable AutoCloseable);
- method public static void closeQuietly(@Nullable java.io.FileDescriptor);
+ method @Deprecated public static void closeQuietly(@Nullable AutoCloseable);
+ method @Deprecated public static void closeQuietly(@Nullable java.io.FileDescriptor);
method public static long copy(@NonNull java.io.InputStream, @NonNull java.io.OutputStream) throws java.io.IOException;
method public static long copy(@NonNull java.io.InputStream, @NonNull java.io.OutputStream, @Nullable android.os.CancellationSignal, @Nullable java.util.concurrent.Executor, @Nullable android.os.FileUtils.ProgressListener) throws java.io.IOException;
method public static long copy(@NonNull java.io.FileDescriptor, @NonNull java.io.FileDescriptor) throws java.io.IOException;
@@ -34964,7 +34986,7 @@
method @Nullable public static android.os.Looper myLooper();
method @NonNull public static android.os.MessageQueue myQueue();
method public static void prepare();
- method public static void prepareMainLooper();
+ method @Deprecated public static void prepareMainLooper();
method public void quit();
method public void quitSafely();
method public void setMessageLogging(@Nullable android.util.Printer);
@@ -41521,6 +41543,7 @@
field public static final int FLAG_DONT_SAVE_ON_FINISH = 2; // 0x2
field public static final int FLAG_SAVE_ON_ALL_VIEWS_INVISIBLE = 1; // 0x1
field public static final int NEGATIVE_BUTTON_STYLE_CANCEL = 0; // 0x0
+ field public static final int NEGATIVE_BUTTON_STYLE_NEVER = 2; // 0x2
field public static final int NEGATIVE_BUTTON_STYLE_REJECT = 1; // 0x1
field public static final int POSITIVE_BUTTON_STYLE_CONTINUE = 1; // 0x1
field public static final int POSITIVE_BUTTON_STYLE_SAVE = 0; // 0x0
@@ -44277,6 +44300,7 @@
field public static final int EUTRAN = 3; // 0x3
field public static final int GERAN = 1; // 0x1
field public static final int IWLAN = 5; // 0x5
+ field public static final int NGRAN = 6; // 0x6
field public static final int UNKNOWN = 0; // 0x0
field public static final int UTRAN = 2; // 0x2
}
@@ -44349,6 +44373,52 @@
field public static final int BAND_T810 = 7; // 0x7
}
+ public static final class AccessNetworkConstants.NgranBands {
+ field public static final int BAND_1 = 1; // 0x1
+ field public static final int BAND_12 = 12; // 0xc
+ field public static final int BAND_14 = 14; // 0xe
+ field public static final int BAND_18 = 18; // 0x12
+ field public static final int BAND_2 = 2; // 0x2
+ field public static final int BAND_20 = 20; // 0x14
+ field public static final int BAND_25 = 25; // 0x19
+ field public static final int BAND_257 = 257; // 0x101
+ field public static final int BAND_258 = 258; // 0x102
+ field public static final int BAND_260 = 260; // 0x104
+ field public static final int BAND_261 = 261; // 0x105
+ field public static final int BAND_28 = 28; // 0x1c
+ field public static final int BAND_29 = 29; // 0x1d
+ field public static final int BAND_3 = 3; // 0x3
+ field public static final int BAND_30 = 30; // 0x1e
+ field public static final int BAND_34 = 34; // 0x22
+ field public static final int BAND_38 = 38; // 0x26
+ field public static final int BAND_39 = 39; // 0x27
+ field public static final int BAND_40 = 40; // 0x28
+ field public static final int BAND_41 = 41; // 0x29
+ field public static final int BAND_48 = 48; // 0x30
+ field public static final int BAND_5 = 5; // 0x5
+ field public static final int BAND_50 = 50; // 0x32
+ field public static final int BAND_51 = 51; // 0x33
+ field public static final int BAND_65 = 65; // 0x41
+ field public static final int BAND_66 = 66; // 0x42
+ field public static final int BAND_7 = 7; // 0x7
+ field public static final int BAND_70 = 70; // 0x46
+ field public static final int BAND_71 = 71; // 0x47
+ field public static final int BAND_74 = 74; // 0x4a
+ field public static final int BAND_75 = 75; // 0x4b
+ field public static final int BAND_76 = 76; // 0x4c
+ field public static final int BAND_77 = 77; // 0x4d
+ field public static final int BAND_78 = 78; // 0x4e
+ field public static final int BAND_79 = 79; // 0x4f
+ field public static final int BAND_8 = 8; // 0x8
+ field public static final int BAND_80 = 80; // 0x50
+ field public static final int BAND_81 = 81; // 0x51
+ field public static final int BAND_82 = 82; // 0x52
+ field public static final int BAND_83 = 83; // 0x53
+ field public static final int BAND_84 = 84; // 0x54
+ field public static final int BAND_86 = 86; // 0x56
+ field public static final int BAND_90 = 90; // 0x5a
+ }
+
public static final class AccessNetworkConstants.UtranBand {
field public static final int BAND_1 = 1; // 0x1
field public static final int BAND_10 = 10; // 0xa
@@ -44416,6 +44486,7 @@
field public static final String KEY_CALL_BARRING_VISIBILITY_BOOL = "call_barring_visibility_bool";
field public static final String KEY_CALL_FORWARDING_BLOCKS_WHILE_ROAMING_STRING_ARRAY = "call_forwarding_blocks_while_roaming_string_array";
field public static final String KEY_CARRIER_ALLOW_TURNOFF_IMS_BOOL = "carrier_allow_turnoff_ims_bool";
+ field public static final String KEY_CARRIER_APP_REQUIRED_DURING_SIM_SETUP_BOOL = "carrier_app_required_during_setup_bool";
field public static final String KEY_CARRIER_CALL_SCREENING_APP_STRING = "call_screening_app";
field public static final String KEY_CARRIER_CONFIG_VERSION_STRING = "carrier_config_version_string";
field public static final String KEY_CARRIER_DATA_CALL_PERMANENT_FAILURE_STRINGS = "carrier_data_call_permanent_failure_strings";
@@ -44733,6 +44804,7 @@
method public abstract int getAsuLevel();
method public abstract int getDbm();
method @IntRange(from=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN, to=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_GREAT) public abstract int getLevel();
+ method public static final int getNumSignalStrengthLevels();
method public abstract int hashCode();
field public static final int SIGNAL_STRENGTH_GOOD = 3; // 0x3
field public static final int SIGNAL_STRENGTH_GREAT = 4; // 0x4
@@ -44931,6 +45003,12 @@
field public static final int SCAN_TYPE_PERIODIC = 1; // 0x1
}
+ public final class PhoneCapability implements android.os.Parcelable {
+ method public int describeContents();
+ method public void writeToParcel(@NonNull android.os.Parcel, int);
+ field @NonNull public static final android.os.Parcelable.Creator<android.telephony.PhoneCapability> CREATOR;
+ }
+
public class PhoneNumberFormattingTextWatcher implements android.text.TextWatcher {
ctor public PhoneNumberFormattingTextWatcher();
ctor public PhoneNumberFormattingTextWatcher(String);
@@ -45976,6 +46054,193 @@
}
+package android.telephony.ims {
+
+ public final class ImsReasonInfo implements android.os.Parcelable {
+ ctor public ImsReasonInfo(int, int, @Nullable String);
+ method public int describeContents();
+ method public int getCode();
+ method public int getExtraCode();
+ method @Nullable public String getExtraMessage();
+ method public void writeToParcel(@NonNull android.os.Parcel, int);
+ field public static final int CODE_ACCESS_CLASS_BLOCKED = 1512; // 0x5e8
+ field public static final int CODE_ANSWERED_ELSEWHERE = 1014; // 0x3f6
+ field public static final int CODE_BLACKLISTED_CALL_ID = 506; // 0x1fa
+ field public static final int CODE_CALL_BARRED = 240; // 0xf0
+ field public static final int CODE_CALL_DROP_IWLAN_TO_LTE_UNAVAILABLE = 1100; // 0x44c
+ field public static final int CODE_CALL_END_CAUSE_CALL_PULL = 1016; // 0x3f8
+ field public static final int CODE_CALL_PULL_OUT_OF_SYNC = 1015; // 0x3f7
+ field public static final int CODE_DATA_DISABLED = 1406; // 0x57e
+ field public static final int CODE_DATA_LIMIT_REACHED = 1405; // 0x57d
+ field public static final int CODE_DIAL_MODIFIED_TO_DIAL = 246; // 0xf6
+ field public static final int CODE_DIAL_MODIFIED_TO_DIAL_VIDEO = 247; // 0xf7
+ field public static final int CODE_DIAL_MODIFIED_TO_SS = 245; // 0xf5
+ field public static final int CODE_DIAL_MODIFIED_TO_USSD = 244; // 0xf4
+ field public static final int CODE_DIAL_VIDEO_MODIFIED_TO_DIAL = 248; // 0xf8
+ field public static final int CODE_DIAL_VIDEO_MODIFIED_TO_DIAL_VIDEO = 249; // 0xf9
+ field public static final int CODE_DIAL_VIDEO_MODIFIED_TO_SS = 250; // 0xfa
+ field public static final int CODE_DIAL_VIDEO_MODIFIED_TO_USSD = 251; // 0xfb
+ field public static final int CODE_ECBM_NOT_SUPPORTED = 901; // 0x385
+ field public static final int CODE_EMERGENCY_PERM_FAILURE = 364; // 0x16c
+ field public static final int CODE_EMERGENCY_TEMP_FAILURE = 363; // 0x16b
+ field public static final int CODE_EPDG_TUNNEL_ESTABLISH_FAILURE = 1400; // 0x578
+ field public static final int CODE_EPDG_TUNNEL_LOST_CONNECTION = 1402; // 0x57a
+ field public static final int CODE_EPDG_TUNNEL_REKEY_FAILURE = 1401; // 0x579
+ field public static final int CODE_FDN_BLOCKED = 241; // 0xf1
+ field public static final int CODE_IKEV2_AUTH_FAILURE = 1408; // 0x580
+ field public static final int CODE_IMEI_NOT_ACCEPTED = 243; // 0xf3
+ field public static final int CODE_IWLAN_DPD_FAILURE = 1300; // 0x514
+ field public static final int CODE_LOCAL_CALL_BUSY = 142; // 0x8e
+ field public static final int CODE_LOCAL_CALL_CS_RETRY_REQUIRED = 146; // 0x92
+ field public static final int CODE_LOCAL_CALL_DECLINE = 143; // 0x8f
+ field public static final int CODE_LOCAL_CALL_EXCEEDED = 141; // 0x8d
+ field public static final int CODE_LOCAL_CALL_RESOURCE_RESERVATION_FAILED = 145; // 0x91
+ field public static final int CODE_LOCAL_CALL_TERMINATED = 148; // 0x94
+ field public static final int CODE_LOCAL_CALL_VCC_ON_PROGRESSING = 144; // 0x90
+ field public static final int CODE_LOCAL_CALL_VOLTE_RETRY_REQUIRED = 147; // 0x93
+ field public static final int CODE_LOCAL_ENDED_BY_CONFERENCE_MERGE = 108; // 0x6c
+ field public static final int CODE_LOCAL_HO_NOT_FEASIBLE = 149; // 0x95
+ field public static final int CODE_LOCAL_ILLEGAL_ARGUMENT = 101; // 0x65
+ field public static final int CODE_LOCAL_ILLEGAL_STATE = 102; // 0x66
+ field public static final int CODE_LOCAL_IMS_SERVICE_DOWN = 106; // 0x6a
+ field public static final int CODE_LOCAL_INTERNAL_ERROR = 103; // 0x67
+ field public static final int CODE_LOCAL_LOW_BATTERY = 112; // 0x70
+ field public static final int CODE_LOCAL_NETWORK_IP_CHANGED = 124; // 0x7c
+ field public static final int CODE_LOCAL_NETWORK_NO_LTE_COVERAGE = 122; // 0x7a
+ field public static final int CODE_LOCAL_NETWORK_NO_SERVICE = 121; // 0x79
+ field public static final int CODE_LOCAL_NETWORK_ROAMING = 123; // 0x7b
+ field public static final int CODE_LOCAL_NOT_REGISTERED = 132; // 0x84
+ field public static final int CODE_LOCAL_NO_PENDING_CALL = 107; // 0x6b
+ field public static final int CODE_LOCAL_POWER_OFF = 111; // 0x6f
+ field public static final int CODE_LOCAL_SERVICE_UNAVAILABLE = 131; // 0x83
+ field public static final int CODE_LOW_BATTERY = 505; // 0x1f9
+ field public static final int CODE_MAXIMUM_NUMBER_OF_CALLS_REACHED = 1403; // 0x57b
+ field public static final int CODE_MEDIA_INIT_FAILED = 401; // 0x191
+ field public static final int CODE_MEDIA_NOT_ACCEPTABLE = 403; // 0x193
+ field public static final int CODE_MEDIA_NO_DATA = 402; // 0x192
+ field public static final int CODE_MEDIA_UNSPECIFIED = 404; // 0x194
+ field public static final int CODE_MULTIENDPOINT_NOT_SUPPORTED = 902; // 0x386
+ field public static final int CODE_NETWORK_DETACH = 1513; // 0x5e9
+ field public static final int CODE_NETWORK_REJECT = 1504; // 0x5e0
+ field public static final int CODE_NETWORK_RESP_TIMEOUT = 1503; // 0x5df
+ field public static final int CODE_NO_CSFB_IN_CS_ROAM = 1516; // 0x5ec
+ field public static final int CODE_NO_VALID_SIM = 1501; // 0x5dd
+ field public static final int CODE_OEM_CAUSE_1 = 61441; // 0xf001
+ field public static final int CODE_OEM_CAUSE_10 = 61450; // 0xf00a
+ field public static final int CODE_OEM_CAUSE_11 = 61451; // 0xf00b
+ field public static final int CODE_OEM_CAUSE_12 = 61452; // 0xf00c
+ field public static final int CODE_OEM_CAUSE_13 = 61453; // 0xf00d
+ field public static final int CODE_OEM_CAUSE_14 = 61454; // 0xf00e
+ field public static final int CODE_OEM_CAUSE_15 = 61455; // 0xf00f
+ field public static final int CODE_OEM_CAUSE_2 = 61442; // 0xf002
+ field public static final int CODE_OEM_CAUSE_3 = 61443; // 0xf003
+ field public static final int CODE_OEM_CAUSE_4 = 61444; // 0xf004
+ field public static final int CODE_OEM_CAUSE_5 = 61445; // 0xf005
+ field public static final int CODE_OEM_CAUSE_6 = 61446; // 0xf006
+ field public static final int CODE_OEM_CAUSE_7 = 61447; // 0xf007
+ field public static final int CODE_OEM_CAUSE_8 = 61448; // 0xf008
+ field public static final int CODE_OEM_CAUSE_9 = 61449; // 0xf009
+ field public static final int CODE_RADIO_ACCESS_FAILURE = 1505; // 0x5e1
+ field public static final int CODE_RADIO_INTERNAL_ERROR = 1502; // 0x5de
+ field public static final int CODE_RADIO_LINK_FAILURE = 1506; // 0x5e2
+ field public static final int CODE_RADIO_LINK_LOST = 1507; // 0x5e3
+ field public static final int CODE_RADIO_OFF = 1500; // 0x5dc
+ field public static final int CODE_RADIO_RELEASE_ABNORMAL = 1511; // 0x5e7
+ field public static final int CODE_RADIO_RELEASE_NORMAL = 1510; // 0x5e6
+ field public static final int CODE_RADIO_SETUP_FAILURE = 1509; // 0x5e5
+ field public static final int CODE_RADIO_UPLINK_FAILURE = 1508; // 0x5e4
+ field public static final int CODE_REGISTRATION_ERROR = 1000; // 0x3e8
+ field public static final int CODE_REJECTED_ELSEWHERE = 1017; // 0x3f9
+ field public static final int CODE_REJECT_1X_COLLISION = 1603; // 0x643
+ field public static final int CODE_REJECT_CALL_ON_OTHER_SUB = 1602; // 0x642
+ field public static final int CODE_REJECT_CALL_TYPE_NOT_ALLOWED = 1605; // 0x645
+ field public static final int CODE_REJECT_CONFERENCE_TTY_NOT_ALLOWED = 1617; // 0x651
+ field public static final int CODE_REJECT_INTERNAL_ERROR = 1612; // 0x64c
+ field public static final int CODE_REJECT_MAX_CALL_LIMIT_REACHED = 1608; // 0x648
+ field public static final int CODE_REJECT_ONGOING_CALL_SETUP = 1607; // 0x647
+ field public static final int CODE_REJECT_ONGOING_CALL_TRANSFER = 1611; // 0x64b
+ field public static final int CODE_REJECT_ONGOING_CALL_UPGRADE = 1616; // 0x650
+ field public static final int CODE_REJECT_ONGOING_CALL_WAITING_DISABLED = 1601; // 0x641
+ field public static final int CODE_REJECT_ONGOING_CONFERENCE_CALL = 1618; // 0x652
+ field public static final int CODE_REJECT_ONGOING_CS_CALL = 1621; // 0x655
+ field public static final int CODE_REJECT_ONGOING_E911_CALL = 1606; // 0x646
+ field public static final int CODE_REJECT_ONGOING_ENCRYPTED_CALL = 1620; // 0x654
+ field public static final int CODE_REJECT_ONGOING_HANDOVER = 1614; // 0x64e
+ field public static final int CODE_REJECT_QOS_FAILURE = 1613; // 0x64d
+ field public static final int CODE_REJECT_SERVICE_NOT_REGISTERED = 1604; // 0x644
+ field public static final int CODE_REJECT_UNKNOWN = 1600; // 0x640
+ field public static final int CODE_REJECT_UNSUPPORTED_SDP_HEADERS = 1610; // 0x64a
+ field public static final int CODE_REJECT_UNSUPPORTED_SIP_HEADERS = 1609; // 0x649
+ field public static final int CODE_REJECT_VT_AVPF_NOT_ALLOWED = 1619; // 0x653
+ field public static final int CODE_REJECT_VT_TTY_NOT_ALLOWED = 1615; // 0x64f
+ field public static final int CODE_REMOTE_CALL_DECLINE = 1404; // 0x57c
+ field public static final int CODE_SESSION_MODIFICATION_FAILED = 1517; // 0x5ed
+ field public static final int CODE_SIP_ALTERNATE_EMERGENCY_CALL = 1514; // 0x5ea
+ field public static final int CODE_SIP_AMBIGUOUS = 376; // 0x178
+ field public static final int CODE_SIP_BAD_ADDRESS = 337; // 0x151
+ field public static final int CODE_SIP_BAD_REQUEST = 331; // 0x14b
+ field public static final int CODE_SIP_BUSY = 338; // 0x152
+ field public static final int CODE_SIP_CALL_OR_TRANS_DOES_NOT_EXIST = 372; // 0x174
+ field public static final int CODE_SIP_CLIENT_ERROR = 342; // 0x156
+ field public static final int CODE_SIP_EXTENSION_REQUIRED = 370; // 0x172
+ field public static final int CODE_SIP_FORBIDDEN = 332; // 0x14c
+ field public static final int CODE_SIP_GLOBAL_ERROR = 362; // 0x16a
+ field public static final int CODE_SIP_INTERVAL_TOO_BRIEF = 371; // 0x173
+ field public static final int CODE_SIP_LOOP_DETECTED = 373; // 0x175
+ field public static final int CODE_SIP_METHOD_NOT_ALLOWED = 366; // 0x16e
+ field public static final int CODE_SIP_NOT_ACCEPTABLE = 340; // 0x154
+ field public static final int CODE_SIP_NOT_FOUND = 333; // 0x14d
+ field public static final int CODE_SIP_NOT_REACHABLE = 341; // 0x155
+ field public static final int CODE_SIP_NOT_SUPPORTED = 334; // 0x14e
+ field public static final int CODE_SIP_PROXY_AUTHENTICATION_REQUIRED = 367; // 0x16f
+ field public static final int CODE_SIP_REDIRECTED = 321; // 0x141
+ field public static final int CODE_SIP_REQUEST_CANCELLED = 339; // 0x153
+ field public static final int CODE_SIP_REQUEST_ENTITY_TOO_LARGE = 368; // 0x170
+ field public static final int CODE_SIP_REQUEST_PENDING = 377; // 0x179
+ field public static final int CODE_SIP_REQUEST_TIMEOUT = 335; // 0x14f
+ field public static final int CODE_SIP_REQUEST_URI_TOO_LARGE = 369; // 0x171
+ field public static final int CODE_SIP_SERVER_ERROR = 354; // 0x162
+ field public static final int CODE_SIP_SERVER_INTERNAL_ERROR = 351; // 0x15f
+ field public static final int CODE_SIP_SERVER_TIMEOUT = 353; // 0x161
+ field public static final int CODE_SIP_SERVICE_UNAVAILABLE = 352; // 0x160
+ field public static final int CODE_SIP_TEMPRARILY_UNAVAILABLE = 336; // 0x150
+ field public static final int CODE_SIP_TOO_MANY_HOPS = 374; // 0x176
+ field public static final int CODE_SIP_TRANSACTION_DOES_NOT_EXIST = 343; // 0x157
+ field public static final int CODE_SIP_UNDECIPHERABLE = 378; // 0x17a
+ field public static final int CODE_SIP_USER_MARKED_UNWANTED = 365; // 0x16d
+ field public static final int CODE_SIP_USER_REJECTED = 361; // 0x169
+ field public static final int CODE_SUPP_SVC_CANCELLED = 1202; // 0x4b2
+ field public static final int CODE_SUPP_SVC_FAILED = 1201; // 0x4b1
+ field public static final int CODE_SUPP_SVC_REINVITE_COLLISION = 1203; // 0x4b3
+ field public static final int CODE_TIMEOUT_1XX_WAITING = 201; // 0xc9
+ field public static final int CODE_TIMEOUT_NO_ANSWER = 202; // 0xca
+ field public static final int CODE_TIMEOUT_NO_ANSWER_CALL_UPDATE = 203; // 0xcb
+ field public static final int CODE_UNSPECIFIED = 0; // 0x0
+ field public static final int CODE_USER_CANCELLED_SESSION_MODIFICATION = 512; // 0x200
+ field public static final int CODE_USER_DECLINE = 504; // 0x1f8
+ field public static final int CODE_USER_IGNORE = 503; // 0x1f7
+ field public static final int CODE_USER_NOANSWER = 502; // 0x1f6
+ field public static final int CODE_USER_REJECTED_SESSION_MODIFICATION = 511; // 0x1ff
+ field public static final int CODE_USER_TERMINATED = 501; // 0x1f5
+ field public static final int CODE_USER_TERMINATED_BY_REMOTE = 510; // 0x1fe
+ field public static final int CODE_UT_CB_PASSWORD_MISMATCH = 821; // 0x335
+ field public static final int CODE_UT_NETWORK_ERROR = 804; // 0x324
+ field public static final int CODE_UT_NOT_SUPPORTED = 801; // 0x321
+ field public static final int CODE_UT_OPERATION_NOT_ALLOWED = 803; // 0x323
+ field public static final int CODE_UT_SERVICE_UNAVAILABLE = 802; // 0x322
+ field public static final int CODE_UT_SS_MODIFIED_TO_DIAL = 822; // 0x336
+ field public static final int CODE_UT_SS_MODIFIED_TO_DIAL_VIDEO = 825; // 0x339
+ field public static final int CODE_UT_SS_MODIFIED_TO_SS = 824; // 0x338
+ field public static final int CODE_UT_SS_MODIFIED_TO_USSD = 823; // 0x337
+ field public static final int CODE_WIFI_LOST = 1407; // 0x57f
+ field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.ImsReasonInfo> CREATOR;
+ field public static final int EXTRA_CODE_CALL_RETRY_BY_SETTINGS = 3; // 0x3
+ field public static final int EXTRA_CODE_CALL_RETRY_NORMAL = 1; // 0x1
+ field public static final int EXTRA_CODE_CALL_RETRY_SILENT_REDIAL = 2; // 0x2
+ }
+
+}
+
package android.telephony.mbms {
public class DownloadProgressListener {
@@ -46480,30 +46745,30 @@
public static class Layout.Directions {
}
- public abstract class LoginFilter implements android.text.InputFilter {
- method public CharSequence filter(CharSequence, int, int, android.text.Spanned, int, int);
- method public abstract boolean isAllowed(char);
- method public void onInvalidCharacter(char);
- method public void onStart();
- method public void onStop();
+ @Deprecated public abstract class LoginFilter implements android.text.InputFilter {
+ method @Deprecated public CharSequence filter(CharSequence, int, int, android.text.Spanned, int, int);
+ method @Deprecated public abstract boolean isAllowed(char);
+ method @Deprecated public void onInvalidCharacter(char);
+ method @Deprecated public void onStart();
+ method @Deprecated public void onStop();
}
- public static class LoginFilter.PasswordFilterGMail extends android.text.LoginFilter {
- ctor public LoginFilter.PasswordFilterGMail();
- ctor public LoginFilter.PasswordFilterGMail(boolean);
- method public boolean isAllowed(char);
+ @Deprecated public static class LoginFilter.PasswordFilterGMail extends android.text.LoginFilter {
+ ctor @Deprecated public LoginFilter.PasswordFilterGMail();
+ ctor @Deprecated public LoginFilter.PasswordFilterGMail(boolean);
+ method @Deprecated public boolean isAllowed(char);
}
- public static class LoginFilter.UsernameFilterGMail extends android.text.LoginFilter {
- ctor public LoginFilter.UsernameFilterGMail();
- ctor public LoginFilter.UsernameFilterGMail(boolean);
- method public boolean isAllowed(char);
+ @Deprecated public static class LoginFilter.UsernameFilterGMail extends android.text.LoginFilter {
+ ctor @Deprecated public LoginFilter.UsernameFilterGMail();
+ ctor @Deprecated public LoginFilter.UsernameFilterGMail(boolean);
+ method @Deprecated public boolean isAllowed(char);
}
- public static class LoginFilter.UsernameFilterGeneric extends android.text.LoginFilter {
- ctor public LoginFilter.UsernameFilterGeneric();
- ctor public LoginFilter.UsernameFilterGeneric(boolean);
- method public boolean isAllowed(char);
+ @Deprecated public static class LoginFilter.UsernameFilterGeneric extends android.text.LoginFilter {
+ ctor @Deprecated public LoginFilter.UsernameFilterGeneric();
+ ctor @Deprecated public LoginFilter.UsernameFilterGeneric(boolean);
+ method @Deprecated public boolean isAllowed(char);
}
public interface NoCopySpan {
@@ -48901,12 +49166,12 @@
method @Nullable public static java.util.List<java.lang.String> getTimeZoneIdsForCountryCode(@NonNull String);
}
- public class TimingLogger {
- ctor public TimingLogger(String, String);
- method public void addSplit(String);
- method public void dumpToLog();
- method public void reset(String, String);
- method public void reset();
+ @Deprecated public class TimingLogger {
+ ctor @Deprecated public TimingLogger(String, String);
+ method @Deprecated public void addSplit(String);
+ method @Deprecated public void dumpToLog();
+ method @Deprecated public void reset(String, String);
+ method @Deprecated public void reset();
}
public class TypedValue {
@@ -52492,6 +52757,9 @@
package android.view.accessibility {
public final class AccessibilityEvent extends android.view.accessibility.AccessibilityRecord implements android.os.Parcelable {
+ ctor public AccessibilityEvent();
+ ctor public AccessibilityEvent(int);
+ ctor public AccessibilityEvent(@NonNull android.view.accessibility.AccessibilityEvent);
method public void appendRecord(android.view.accessibility.AccessibilityRecord);
method public int describeContents();
method public static String eventTypeToString(int);
@@ -52602,6 +52870,10 @@
}
public class AccessibilityNodeInfo implements android.os.Parcelable {
+ ctor public AccessibilityNodeInfo();
+ ctor public AccessibilityNodeInfo(@NonNull android.view.View);
+ ctor public AccessibilityNodeInfo(@NonNull android.view.View, int);
+ ctor public AccessibilityNodeInfo(@NonNull android.view.accessibility.AccessibilityNodeInfo);
method public void addAction(android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction);
method @Deprecated public void addAction(int);
method public void addChild(android.view.View);
@@ -52749,6 +53021,7 @@
field public static final String ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT = "ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT";
field public static final String ACTION_ARGUMENT_MOVE_WINDOW_X = "ACTION_ARGUMENT_MOVE_WINDOW_X";
field public static final String ACTION_ARGUMENT_MOVE_WINDOW_Y = "ACTION_ARGUMENT_MOVE_WINDOW_Y";
+ field public static final String ACTION_ARGUMENT_PRESS_HOLD_DURATION_MILLIS_INT = "android.view.accessibility.action.ARGUMENT_PRESS_HOLD_DURATION_MILLIS_INT";
field public static final String ACTION_ARGUMENT_PROGRESS_VALUE = "android.view.accessibility.action.ARGUMENT_PROGRESS_VALUE";
field public static final String ACTION_ARGUMENT_ROW_INT = "android.view.accessibility.action.ARGUMENT_ROW_INT";
field public static final String ACTION_ARGUMENT_SELECTION_END_INT = "ACTION_ARGUMENT_SELECTION_END_INT";
@@ -52816,6 +53089,7 @@
field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_PAGE_RIGHT;
field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_PAGE_UP;
field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_PASTE;
+ field @NonNull public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_PRESS_AND_HOLD;
field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY;
field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_PREVIOUS_HTML_ELEMENT;
field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SCROLL_BACKWARD;
@@ -52835,6 +53109,8 @@
}
public static final class AccessibilityNodeInfo.CollectionInfo {
+ ctor public AccessibilityNodeInfo.CollectionInfo(int, int, boolean);
+ ctor public AccessibilityNodeInfo.CollectionInfo(int, int, boolean, int);
method public int getColumnCount();
method public int getRowCount();
method public int getSelectionMode();
@@ -52847,6 +53123,8 @@
}
public static final class AccessibilityNodeInfo.CollectionItemInfo {
+ ctor public AccessibilityNodeInfo.CollectionItemInfo(int, int, int, int, boolean);
+ ctor public AccessibilityNodeInfo.CollectionItemInfo(int, int, int, int, boolean, boolean);
method public int getColumnIndex();
method public int getColumnSpan();
method public int getRowIndex();
@@ -52858,6 +53136,7 @@
}
public static final class AccessibilityNodeInfo.RangeInfo {
+ ctor public AccessibilityNodeInfo.RangeInfo(int, float, float, float);
method public float getCurrent();
method public float getMax();
method public float getMin();
@@ -52889,6 +53168,8 @@
}
public class AccessibilityRecord {
+ ctor public AccessibilityRecord();
+ ctor public AccessibilityRecord(@NonNull android.view.accessibility.AccessibilityRecord);
method public int getAddedCount();
method public CharSequence getBeforeText();
method public CharSequence getClassName();
@@ -52949,6 +53230,8 @@
}
public final class AccessibilityWindowInfo implements android.os.Parcelable {
+ ctor public AccessibilityWindowInfo();
+ ctor public AccessibilityWindowInfo(@NonNull android.view.accessibility.AccessibilityWindowInfo);
method public int describeContents();
method public android.view.accessibility.AccessibilityNodeInfo getAnchor();
method public void getBoundsInScreen(android.graphics.Rect);
@@ -55131,12 +55414,12 @@
}
public class WebView extends android.widget.AbsoluteLayout implements android.view.ViewGroup.OnHierarchyChangeListener android.view.ViewTreeObserver.OnGlobalFocusChangeListener {
- ctor public WebView(android.content.Context);
- ctor public WebView(android.content.Context, android.util.AttributeSet);
- ctor public WebView(android.content.Context, android.util.AttributeSet, int);
- ctor public WebView(android.content.Context, android.util.AttributeSet, int, int);
- ctor @Deprecated public WebView(android.content.Context, android.util.AttributeSet, int, boolean);
- method public void addJavascriptInterface(Object, String);
+ ctor public WebView(@NonNull android.content.Context);
+ ctor public WebView(@NonNull android.content.Context, @Nullable android.util.AttributeSet);
+ ctor public WebView(@NonNull android.content.Context, @Nullable android.util.AttributeSet, int);
+ ctor public WebView(@NonNull android.content.Context, @Nullable android.util.AttributeSet, int, int);
+ ctor @Deprecated public WebView(@NonNull android.content.Context, @Nullable android.util.AttributeSet, int, boolean);
+ method public void addJavascriptInterface(@NonNull Object, @NonNull String);
method public boolean canGoBack();
method public boolean canGoBackOrForward(int);
method public boolean canGoForward();
@@ -55150,40 +55433,40 @@
method public void clearMatches();
method public void clearSslPreferences();
method @Deprecated public void clearView();
- method public android.webkit.WebBackForwardList copyBackForwardList();
+ method @NonNull public android.webkit.WebBackForwardList copyBackForwardList();
method @Deprecated public android.print.PrintDocumentAdapter createPrintDocumentAdapter();
- method public android.print.PrintDocumentAdapter createPrintDocumentAdapter(String);
- method public android.webkit.WebMessagePort[] createWebMessageChannel();
+ method @NonNull public android.print.PrintDocumentAdapter createPrintDocumentAdapter(@NonNull String);
+ method @NonNull public android.webkit.WebMessagePort[] createWebMessageChannel();
method public void destroy();
method public static void disableWebView();
- method public void documentHasImages(android.os.Message);
+ method public void documentHasImages(@NonNull android.os.Message);
method public static void enableSlowWholeDocumentDraw();
- method public void evaluateJavascript(String, @Nullable android.webkit.ValueCallback<java.lang.String>);
+ method public void evaluateJavascript(@NonNull String, @Nullable android.webkit.ValueCallback<java.lang.String>);
method @Deprecated @Nullable public static String findAddress(String);
method @Deprecated public int findAll(String);
- method public void findAllAsync(String);
+ method public void findAllAsync(@NonNull String);
method public void findNext(boolean);
method public void flingScroll(int, int);
method @Deprecated public void freeMemory();
method @Nullable public android.net.http.SslCertificate getCertificate();
method @android.view.ViewDebug.ExportedProperty(category="webview") public int getContentHeight();
method @Nullable public static android.content.pm.PackageInfo getCurrentWebViewPackage();
- method public android.graphics.Bitmap getFavicon();
- method public android.webkit.WebView.HitTestResult getHitTestResult();
+ method @Nullable public android.graphics.Bitmap getFavicon();
+ method @NonNull public android.webkit.WebView.HitTestResult getHitTestResult();
method @Deprecated @Nullable public String[] getHttpAuthUsernamePassword(String, String);
- method @android.view.ViewDebug.ExportedProperty(category="webview") public String getOriginalUrl();
+ method @android.view.ViewDebug.ExportedProperty(category="webview") @Nullable public String getOriginalUrl();
method public int getProgress();
method public boolean getRendererPriorityWaivedWhenNotVisible();
method public int getRendererRequestedPriority();
method @NonNull public static android.net.Uri getSafeBrowsingPrivacyPolicyUrl();
method @Deprecated @android.view.ViewDebug.ExportedProperty(category="webview") public float getScale();
- method public android.webkit.WebSettings getSettings();
+ method @NonNull public android.webkit.WebSettings getSettings();
method @NonNull public android.view.textclassifier.TextClassifier getTextClassifier();
- method @android.view.ViewDebug.ExportedProperty(category="webview") public String getTitle();
- method @android.view.ViewDebug.ExportedProperty(category="webview") public String getUrl();
+ method @android.view.ViewDebug.ExportedProperty(category="webview") @Nullable public String getTitle();
+ method @android.view.ViewDebug.ExportedProperty(category="webview") @Nullable public String getUrl();
method @Nullable public android.webkit.WebChromeClient getWebChromeClient();
method @NonNull public static ClassLoader getWebViewClassLoader();
- method public android.webkit.WebViewClient getWebViewClient();
+ method @NonNull public android.webkit.WebViewClient getWebViewClient();
method @NonNull public android.os.Looper getWebViewLooper();
method @Nullable public android.webkit.WebViewRenderProcess getWebViewRenderProcess();
method @Nullable public android.webkit.WebViewRenderProcessClient getWebViewRenderProcessClient();
@@ -55192,10 +55475,10 @@
method public void goForward();
method public void invokeZoomPicker();
method public boolean isPrivateBrowsingEnabled();
- method public void loadData(String, @Nullable String, @Nullable String);
- method public void loadDataWithBaseURL(@Nullable String, String, @Nullable String, @Nullable String, @Nullable String);
- method public void loadUrl(String, java.util.Map<java.lang.String,java.lang.String>);
- method public void loadUrl(String);
+ method public void loadData(@NonNull String, @Nullable String, @Nullable String);
+ method public void loadDataWithBaseURL(@Nullable String, @NonNull String, @Nullable String, @Nullable String, @Nullable String);
+ method public void loadUrl(@NonNull String, @NonNull java.util.Map<java.lang.String,java.lang.String>);
+ method public void loadUrl(@NonNull String);
method @Deprecated public void onChildViewAdded(android.view.View, android.view.View);
method @Deprecated public void onChildViewRemoved(android.view.View, android.view.View);
method @Deprecated public void onGlobalFocusChanged(android.view.View, android.view.View);
@@ -55206,23 +55489,23 @@
method public boolean pageDown(boolean);
method public boolean pageUp(boolean);
method public void pauseTimers();
- method public void postUrl(String, byte[]);
- method public void postVisualStateCallback(long, android.webkit.WebView.VisualStateCallback);
- method public void postWebMessage(android.webkit.WebMessage, android.net.Uri);
+ method public void postUrl(@NonNull String, @NonNull byte[]);
+ method public void postVisualStateCallback(long, @NonNull android.webkit.WebView.VisualStateCallback);
+ method public void postWebMessage(@NonNull android.webkit.WebMessage, @NonNull android.net.Uri);
method public void reload();
method public void removeJavascriptInterface(@NonNull String);
method public void requestFocusNodeHref(@Nullable android.os.Message);
- method public void requestImageRef(android.os.Message);
- method @Nullable public android.webkit.WebBackForwardList restoreState(android.os.Bundle);
+ method public void requestImageRef(@NonNull android.os.Message);
+ method @Nullable public android.webkit.WebBackForwardList restoreState(@NonNull android.os.Bundle);
method public void resumeTimers();
method @Deprecated public void savePassword(String, String, String);
- method @Nullable public android.webkit.WebBackForwardList saveState(android.os.Bundle);
- method public void saveWebArchive(String);
- method public void saveWebArchive(String, boolean, @Nullable android.webkit.ValueCallback<java.lang.String>);
+ method @Nullable public android.webkit.WebBackForwardList saveState(@NonNull android.os.Bundle);
+ method public void saveWebArchive(@NonNull String);
+ method public void saveWebArchive(@NonNull String, boolean, @Nullable android.webkit.ValueCallback<java.lang.String>);
method @Deprecated public void setCertificate(android.net.http.SslCertificate);
- method public static void setDataDirectorySuffix(String);
- method public void setDownloadListener(android.webkit.DownloadListener);
- method public void setFindListener(android.webkit.WebView.FindListener);
+ method public static void setDataDirectorySuffix(@NonNull String);
+ method public void setDownloadListener(@Nullable android.webkit.DownloadListener);
+ method public void setFindListener(@Nullable android.webkit.WebView.FindListener);
method @Deprecated public void setHorizontalScrollbarOverlay(boolean);
method @Deprecated public void setHttpAuthUsernamePassword(String, String, String, String);
method public void setInitialScale(int);
@@ -55233,9 +55516,9 @@
method public static void setSafeBrowsingWhitelist(@NonNull java.util.List<java.lang.String>, @Nullable android.webkit.ValueCallback<java.lang.Boolean>);
method public void setTextClassifier(@Nullable android.view.textclassifier.TextClassifier);
method @Deprecated public void setVerticalScrollbarOverlay(boolean);
- method public void setWebChromeClient(android.webkit.WebChromeClient);
+ method public void setWebChromeClient(@Nullable android.webkit.WebChromeClient);
method public static void setWebContentsDebuggingEnabled(boolean);
- method public void setWebViewClient(android.webkit.WebViewClient);
+ method public void setWebViewClient(@NonNull android.webkit.WebViewClient);
method public void setWebViewRenderProcessClient(@NonNull java.util.concurrent.Executor, @NonNull android.webkit.WebViewRenderProcessClient);
method public void setWebViewRenderProcessClient(@Nullable android.webkit.WebViewRenderProcessClient);
method @Deprecated public boolean shouldDelayChildPressedState();
@@ -55283,8 +55566,8 @@
public class WebView.WebViewTransport {
ctor public WebView.WebViewTransport();
- method public android.webkit.WebView getWebView();
- method public void setWebView(android.webkit.WebView);
+ method @Nullable public android.webkit.WebView getWebView();
+ method public void setWebView(@Nullable android.webkit.WebView);
}
public class WebViewClient {
diff --git a/api/system-current.txt b/api/system-current.txt
index 3adef5b..fb7ec01 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -58,7 +58,7 @@
field public static final String CLEAR_APP_USER_DATA = "android.permission.CLEAR_APP_USER_DATA";
field public static final String CONFIGURE_DISPLAY_BRIGHTNESS = "android.permission.CONFIGURE_DISPLAY_BRIGHTNESS";
field public static final String CONFIGURE_WIFI_DISPLAY = "android.permission.CONFIGURE_WIFI_DISPLAY";
- field public static final String CONNECTIVITY_INTERNAL = "android.permission.CONNECTIVITY_INTERNAL";
+ field @Deprecated public static final String CONNECTIVITY_INTERNAL = "android.permission.CONNECTIVITY_INTERNAL";
field public static final String CONNECTIVITY_USE_RESTRICTED_NETWORKS = "android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS";
field public static final String CONTROL_DISPLAY_COLOR_TRANSFORMS = "android.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS";
field public static final String CONTROL_DISPLAY_SATURATION = "android.permission.CONTROL_DISPLAY_SATURATION";
@@ -75,7 +75,7 @@
field public static final String GET_PROCESS_STATE_AND_OOM_SCORE = "android.permission.GET_PROCESS_STATE_AND_OOM_SCORE";
field public static final String GET_RUNTIME_PERMISSIONS = "android.permission.GET_RUNTIME_PERMISSIONS";
field public static final String GET_TOP_ACTIVITY_INFO = "android.permission.GET_TOP_ACTIVITY_INFO";
- field public static final String GRANT_PROFILE_OWNER_DEVICE_IDS_ACCESS = "android.permission.GRANT_PROFILE_OWNER_DEVICE_IDS_ACCESS";
+ field @Deprecated public static final String GRANT_PROFILE_OWNER_DEVICE_IDS_ACCESS = "android.permission.GRANT_PROFILE_OWNER_DEVICE_IDS_ACCESS";
field public static final String GRANT_RUNTIME_PERMISSIONS = "android.permission.GRANT_RUNTIME_PERMISSIONS";
field public static final String GRANT_RUNTIME_PERMISSIONS_TO_TELEPHONY_DEFAULTS = "android.permission.GRANT_RUNTIME_PERMISSIONS_TO_TELEPHONY_DEFAULTS";
field public static final String HANDLE_CAR_MODE_CHANGES = "android.permission.HANDLE_CAR_MODE_CHANGES";
@@ -126,6 +126,7 @@
field public static final String MODIFY_QUIET_MODE = "android.permission.MODIFY_QUIET_MODE";
field public static final String MOVE_PACKAGE = "android.permission.MOVE_PACKAGE";
field public static final String NETWORK_CARRIER_PROVISIONING = "android.permission.NETWORK_CARRIER_PROVISIONING";
+ field public static final String NETWORK_FACTORY = "android.permission.NETWORK_FACTORY";
field public static final String NETWORK_MANAGED_PROVISIONING = "android.permission.NETWORK_MANAGED_PROVISIONING";
field public static final String NETWORK_SCAN = "android.permission.NETWORK_SCAN";
field public static final String NETWORK_SETTINGS = "android.permission.NETWORK_SETTINGS";
@@ -135,6 +136,7 @@
field public static final String NOTIFICATION_DURING_SETUP = "android.permission.NOTIFICATION_DURING_SETUP";
field public static final String NOTIFY_TV_INPUTS = "android.permission.NOTIFY_TV_INPUTS";
field public static final String OBSERVE_APP_USAGE = "android.permission.OBSERVE_APP_USAGE";
+ field public static final String OBSERVE_NETWORK_POLICY = "android.permission.OBSERVE_NETWORK_POLICY";
field public static final String OBSERVE_ROLE_HOLDERS = "android.permission.OBSERVE_ROLE_HOLDERS";
field public static final String OPEN_ACCESSIBILITY_DETAILS_SETTINGS = "android.permission.OPEN_ACCESSIBILITY_DETAILS_SETTINGS";
field public static final String OVERRIDE_WIFI_CONFIG = "android.permission.OVERRIDE_WIFI_CONFIG";
@@ -213,6 +215,8 @@
field public static final String USER_ACTIVITY = "android.permission.USER_ACTIVITY";
field public static final String USE_RESERVED_DISK = "android.permission.USE_RESERVED_DISK";
field public static final String WHITELIST_RESTRICTED_PERMISSIONS = "android.permission.WHITELIST_RESTRICTED_PERMISSIONS";
+ field public static final String WIFI_SET_DEVICE_MOBILITY_STATE = "android.permission.WIFI_SET_DEVICE_MOBILITY_STATE";
+ field public static final String WIFI_UPDATE_USABILITY_STATS_SCORE = "android.permission.WIFI_UPDATE_USABILITY_STATS_SCORE";
field public static final String WRITE_DEVICE_CONFIG = "android.permission.WRITE_DEVICE_CONFIG";
field public static final String WRITE_DREAM_STATE = "android.permission.WRITE_DREAM_STATE";
field public static final String WRITE_EMBEDDED_SUBSCRIPTIONS = "android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS";
@@ -604,6 +608,10 @@
method public void setNotificationAssistantAccessGranted(@Nullable android.content.ComponentName, boolean);
}
+ public class SearchManager implements android.content.DialogInterface.OnCancelListener android.content.DialogInterface.OnDismissListener {
+ method public void launchAssist(@Nullable android.os.Bundle);
+ }
+
public final class StatsManager {
method @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public void addConfig(long, byte[]) throws android.app.StatsManager.StatsUnavailableException;
method @Deprecated @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public boolean addConfiguration(long, byte[]);
@@ -648,6 +656,29 @@
method public boolean isStatusBarExpansionDisabled();
}
+ public final class SystemServiceRegistry {
+ method public static <TServiceClass> void registerContextAwareService(@NonNull String, @NonNull Class<TServiceClass>, @NonNull android.app.SystemServiceRegistry.ContextAwareServiceProducerWithBinder<TServiceClass>);
+ method public static <TServiceClass> void registerContextAwareService(@NonNull String, @NonNull Class<TServiceClass>, @NonNull android.app.SystemServiceRegistry.ContextAwareServiceProducerWithoutBinder<TServiceClass>);
+ method public static <TServiceClass> void registerStaticService(@NonNull String, @NonNull Class<TServiceClass>, @NonNull android.app.SystemServiceRegistry.StaticServiceProducerWithBinder<TServiceClass>);
+ method public static <TServiceClass> void registerStaticService(@NonNull String, @NonNull Class<TServiceClass>, @NonNull android.app.SystemServiceRegistry.StaticServiceProducerWithoutBinder<TServiceClass>);
+ }
+
+ public static interface SystemServiceRegistry.ContextAwareServiceProducerWithBinder<TServiceClass> {
+ method @NonNull public TServiceClass createService(@NonNull android.content.Context, @NonNull android.os.IBinder);
+ }
+
+ public static interface SystemServiceRegistry.ContextAwareServiceProducerWithoutBinder<TServiceClass> {
+ method @NonNull public TServiceClass createService(@NonNull android.content.Context);
+ }
+
+ public static interface SystemServiceRegistry.StaticServiceProducerWithBinder<TServiceClass> {
+ method @NonNull public TServiceClass createService(@NonNull android.os.IBinder);
+ }
+
+ public static interface SystemServiceRegistry.StaticServiceProducerWithoutBinder<TServiceClass> {
+ method @NonNull public TServiceClass createService();
+ }
+
public class UiModeManager {
method @RequiresPermission(android.Manifest.permission.ENTER_CAR_MODE_PRIORITIZED) public void enableCarMode(@IntRange(from=0) int, int);
field public static final String ACTION_ENTER_CAR_MODE_PRIORITIZED = "android.app.action.ENTER_CAR_MODE_PRIORITIZED";
@@ -741,7 +772,7 @@
method @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) public boolean packageHasActiveAdmins(String);
method @Deprecated @RequiresPermission("android.permission.MANAGE_DEVICE_ADMINS") public boolean setActiveProfileOwner(@NonNull android.content.ComponentName, String) throws java.lang.IllegalArgumentException;
method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public void setDeviceProvisioningConfigApplied();
- method @RequiresPermission(value=android.Manifest.permission.GRANT_PROFILE_OWNER_DEVICE_IDS_ACCESS, conditional=true) public void setProfileOwnerCanAccessDeviceIds(@NonNull android.content.ComponentName);
+ method @Deprecated @RequiresPermission(value=android.Manifest.permission.GRANT_PROFILE_OWNER_DEVICE_IDS_ACCESS, conditional=true) public void setProfileOwnerCanAccessDeviceIds(@NonNull android.content.ComponentName);
field public static final String ACCOUNT_FEATURE_DEVICE_OR_PROFILE_OWNER_ALLOWED = "android.account.DEVICE_OR_PROFILE_OWNER_ALLOWED";
field public static final String ACCOUNT_FEATURE_DEVICE_OR_PROFILE_OWNER_DISALLOWED = "android.account.DEVICE_OR_PROFILE_OWNER_DISALLOWED";
field public static final String ACTION_PROVISION_FINALIZATION = "android.app.action.PROVISION_FINALIZATION";
@@ -801,6 +832,7 @@
method @RequiresPermission(android.Manifest.permission.BACKUP) public void backupNow();
method @RequiresPermission(android.Manifest.permission.BACKUP) public android.app.backup.RestoreSession beginRestoreSession();
method @RequiresPermission(android.Manifest.permission.BACKUP) public void cancelBackups();
+ method @RequiresPermission(android.Manifest.permission.BACKUP) public void excludeKeysFromRestore(@NonNull String, @NonNull java.util.List<java.lang.String>);
method @RequiresPermission(android.Manifest.permission.BACKUP) public long getAvailableRestoreToken(String);
method @RequiresPermission(android.Manifest.permission.BACKUP) public android.content.Intent getConfigurationIntent(String);
method @RequiresPermission(android.Manifest.permission.BACKUP) public String getCurrentTransport();
@@ -1087,6 +1119,10 @@
method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public abstract int scheduleAsPackage(@NonNull android.app.job.JobInfo, @NonNull String, int, String);
}
+ public class JobSchedulerFrameworkInitializer {
+ method public static void registerServiceWrappers();
+ }
+
}
package android.app.prediction {
@@ -1162,6 +1198,7 @@
field public static final int ACTION_DISMISS = 2; // 0x2
field public static final int ACTION_LAUNCH = 1; // 0x1
field public static final int ACTION_PIN = 3; // 0x3
+ field public static final int ACTION_UNPIN = 4; // 0x4
field @NonNull public static final android.os.Parcelable.Creator<android.app.prediction.AppTargetEvent> CREATOR;
}
@@ -1279,7 +1316,7 @@
method @RequiresPermission(allOf={android.Manifest.permission.SUSPEND_APPS, android.Manifest.permission.OBSERVE_APP_USAGE}) public void unregisterAppUsageLimitObserver(int);
method @RequiresPermission(android.Manifest.permission.OBSERVE_APP_USAGE) public void unregisterAppUsageObserver(int);
method @RequiresPermission(android.Manifest.permission.OBSERVE_APP_USAGE) public void unregisterUsageSessionObserver(int);
- method @RequiresPermission(android.Manifest.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST) public void whitelistAppTemporarily(String, long, android.os.UserHandle);
+ method @Deprecated @RequiresPermission(android.Manifest.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST) public void whitelistAppTemporarily(String, long, android.os.UserHandle);
field public static final String EXTRA_OBSERVER_ID = "android.app.usage.extra.OBSERVER_ID";
field public static final String EXTRA_TIME_LIMIT = "android.app.usage.extra.TIME_LIMIT";
field public static final String EXTRA_TIME_USED = "android.app.usage.extra.TIME_USED";
@@ -1293,6 +1330,11 @@
package android.bluetooth {
+ public final class BluetoothA2dp implements android.bluetooth.BluetoothProfile {
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public int getConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice);
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean setConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice, int);
+ }
+
public final class BluetoothAdapter {
method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean addOnMetadataChangedListener(@NonNull android.bluetooth.BluetoothDevice, @NonNull java.util.concurrent.Executor, @NonNull android.bluetooth.BluetoothAdapter.OnMetadataChangedListener);
method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean connectAllEnabledProfiles(@NonNull android.bluetooth.BluetoothDevice);
@@ -1305,10 +1347,14 @@
method public boolean isBleScanAlwaysAvailable();
method public boolean isLeEnabled();
method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean removeOnMetadataChangedListener(@NonNull android.bluetooth.BluetoothDevice, @NonNull android.bluetooth.BluetoothAdapter.OnMetadataChangedListener);
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean setActiveDevice(@Nullable android.bluetooth.BluetoothDevice, int);
method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public boolean setScanMode(int, int);
method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public boolean setScanMode(int);
field public static final String ACTION_BLE_STATE_CHANGED = "android.bluetooth.adapter.action.BLE_STATE_CHANGED";
field public static final String ACTION_REQUEST_BLE_SCAN_ALWAYS_AVAILABLE = "android.bluetooth.adapter.action.REQUEST_BLE_SCAN_ALWAYS_AVAILABLE";
+ field public static final int ACTIVE_DEVICE_ALL = 2; // 0x2
+ field public static final int ACTIVE_DEVICE_AUDIO = 0; // 0x0
+ field public static final int ACTIVE_DEVICE_PHONE_CALL = 1; // 0x1
}
public static interface BluetoothAdapter.OnMetadataChangedListener {
@@ -1353,12 +1399,38 @@
public final class BluetoothHeadset implements android.bluetooth.BluetoothProfile {
method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean connect(android.bluetooth.BluetoothDevice);
method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean disconnect(android.bluetooth.BluetoothDevice);
- method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean setPriority(android.bluetooth.BluetoothDevice, int);
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public int getConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice);
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean setConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice, int);
+ method @Deprecated @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean setPriority(android.bluetooth.BluetoothDevice, int);
+ }
+
+ public final class BluetoothHearingAid implements android.bluetooth.BluetoothProfile {
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public int getConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice);
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean setConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice, int);
+ }
+
+ public final class BluetoothPan implements android.bluetooth.BluetoothProfile {
+ method protected void finalize();
+ method @NonNull public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices();
+ method public int getConnectionState(@Nullable android.bluetooth.BluetoothDevice);
+ method public boolean isTetheringOn();
+ method public void setBluetoothTethering(boolean);
+ field public static final String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.pan.profile.action.CONNECTION_STATE_CHANGED";
+ field public static final String EXTRA_LOCAL_ROLE = "android.bluetooth.pan.extra.LOCAL_ROLE";
+ field public static final int LOCAL_NAP_ROLE = 1; // 0x1
+ field public static final int LOCAL_PANU_ROLE = 2; // 0x2
+ field public static final int PAN_ROLE_NONE = 0; // 0x0
+ field public static final int REMOTE_NAP_ROLE = 1; // 0x1
+ field public static final int REMOTE_PANU_ROLE = 2; // 0x2
}
public interface BluetoothProfile {
- field public static final int PRIORITY_OFF = 0; // 0x0
- field public static final int PRIORITY_ON = 100; // 0x64
+ field public static final int CONNECTION_POLICY_ALLOWED = 100; // 0x64
+ field public static final int CONNECTION_POLICY_FORBIDDEN = 0; // 0x0
+ field public static final int CONNECTION_POLICY_UNKNOWN = -1; // 0xffffffff
+ field public static final int PAN = 5; // 0x5
+ field @Deprecated public static final int PRIORITY_OFF = 0; // 0x0
+ field @Deprecated public static final int PRIORITY_ON = 100; // 0x64
}
}
@@ -1433,6 +1505,7 @@
method @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public abstract void sendBroadcastAsUser(@RequiresPermission android.content.Intent, android.os.UserHandle, @Nullable String, @Nullable android.os.Bundle);
method public abstract void sendOrderedBroadcast(@NonNull android.content.Intent, @Nullable String, @Nullable android.os.Bundle, @Nullable android.content.BroadcastReceiver, @Nullable android.os.Handler, int, @Nullable String, @Nullable android.os.Bundle);
method @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) public void startActivityAsUser(@NonNull @RequiresPermission android.content.Intent, @NonNull android.os.UserHandle);
+ field public static final String APP_INTEGRITY_SERVICE = "app_integrity";
field public static final String APP_PREDICTION_SERVICE = "app_prediction";
field public static final String BACKUP_SERVICE = "backup";
field public static final String BATTERY_STATS_SERVICE = "batterystats";
@@ -1485,6 +1558,7 @@
field public static final String ACTION_MANAGE_PERMISSION_APPS = "android.intent.action.MANAGE_PERMISSION_APPS";
field @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public static final String ACTION_MANAGE_SPECIAL_APP_ACCESSES = "android.intent.action.MANAGE_SPECIAL_APP_ACCESSES";
field public static final String ACTION_MASTER_CLEAR_NOTIFICATION = "android.intent.action.MASTER_CLEAR_NOTIFICATION";
+ field public static final String ACTION_PACKAGE_NEEDS_INTEGRITY_VERIFICATION = "android.intent.action.PACKAGE_NEEDS_INTEGRITY_VERIFICATION";
field public static final String ACTION_PENDING_INCIDENT_REPORTS_CHANGED = "android.intent.action.PENDING_INCIDENT_REPORTS_CHANGED";
field public static final String ACTION_PRE_BOOT_COMPLETED = "android.intent.action.PRE_BOOT_COMPLETED";
field public static final String ACTION_QUERY_PACKAGE_RESTART = "android.intent.action.QUERY_PACKAGE_RESTART";
@@ -1532,6 +1606,150 @@
}
+package android.content.integrity {
+
+ public final class AppInstallMetadata {
+ method @NonNull public String getAppCertificate();
+ method @Nullable public String getInstallerCertificate();
+ method @Nullable public String getInstallerName();
+ method @NonNull public String getPackageName();
+ method public int getVersionCode();
+ method public boolean isPreInstalled();
+ }
+
+ public static final class AppInstallMetadata.Builder {
+ ctor public AppInstallMetadata.Builder();
+ method @NonNull public android.content.integrity.AppInstallMetadata build();
+ method @NonNull public android.content.integrity.AppInstallMetadata.Builder setAppCertificate(@NonNull String);
+ method @NonNull public android.content.integrity.AppInstallMetadata.Builder setInstallerCertificate(@NonNull String);
+ method @NonNull public android.content.integrity.AppInstallMetadata.Builder setInstallerName(@NonNull String);
+ method @NonNull public android.content.integrity.AppInstallMetadata.Builder setIsPreInstalled(boolean);
+ method @NonNull public android.content.integrity.AppInstallMetadata.Builder setPackageName(@NonNull String);
+ method @NonNull public android.content.integrity.AppInstallMetadata.Builder setVersionCode(int);
+ }
+
+ public class AppIntegrityManager {
+ method @NonNull public String getCurrentRuleSetProvider();
+ method @NonNull public String getCurrentRuleSetVersion();
+ method public void updateRuleSet(@NonNull android.content.integrity.RuleSet, @NonNull android.content.IntentSender);
+ field public static final String EXTRA_STATUS = "android.content.integrity.extra.STATUS";
+ field public static final int STATUS_FAILURE = 1; // 0x1
+ field public static final int STATUS_SUCCESS = 0; // 0x0
+ }
+
+ public abstract class AtomicFormula implements android.content.integrity.Formula {
+ ctor public AtomicFormula(@android.content.integrity.AtomicFormula.Key int);
+ method public int getKey();
+ field public static final int APP_CERTIFICATE = 1; // 0x1
+ field public static final int EQ = 0; // 0x0
+ field public static final int GE = 4; // 0x4
+ field public static final int GT = 3; // 0x3
+ field public static final int INSTALLER_CERTIFICATE = 3; // 0x3
+ field public static final int INSTALLER_NAME = 2; // 0x2
+ field public static final int LE = 2; // 0x2
+ field public static final int LT = 1; // 0x1
+ field public static final int PACKAGE_NAME = 0; // 0x0
+ field public static final int PRE_INSTALLED = 5; // 0x5
+ field public static final int VERSION_CODE = 4; // 0x4
+ }
+
+ public static final class AtomicFormula.BooleanAtomicFormula extends android.content.integrity.AtomicFormula implements android.os.Parcelable {
+ ctor public AtomicFormula.BooleanAtomicFormula(@android.content.integrity.AtomicFormula.Key int, boolean);
+ method public int describeContents();
+ method public int getTag();
+ method public boolean getValue();
+ method public boolean isSatisfied(@NonNull android.content.integrity.AppInstallMetadata);
+ method public void writeToParcel(@NonNull android.os.Parcel, int);
+ field @NonNull public static final android.os.Parcelable.Creator<android.content.integrity.AtomicFormula.BooleanAtomicFormula> CREATOR;
+ }
+
+ public static final class AtomicFormula.IntAtomicFormula extends android.content.integrity.AtomicFormula implements android.os.Parcelable {
+ ctor public AtomicFormula.IntAtomicFormula(@android.content.integrity.AtomicFormula.Key int, @android.content.integrity.AtomicFormula.Operator int, int);
+ method public int describeContents();
+ method public int getOperator();
+ method public int getTag();
+ method public int getValue();
+ method public boolean isSatisfied(@NonNull android.content.integrity.AppInstallMetadata);
+ method public void writeToParcel(@NonNull android.os.Parcel, int);
+ field @NonNull public static final android.os.Parcelable.Creator<android.content.integrity.AtomicFormula.IntAtomicFormula> CREATOR;
+ }
+
+ @IntDef({android.content.integrity.AtomicFormula.PACKAGE_NAME, android.content.integrity.AtomicFormula.APP_CERTIFICATE, android.content.integrity.AtomicFormula.INSTALLER_NAME, android.content.integrity.AtomicFormula.INSTALLER_CERTIFICATE, android.content.integrity.AtomicFormula.VERSION_CODE, android.content.integrity.AtomicFormula.PRE_INSTALLED}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface AtomicFormula.Key {
+ }
+
+ @IntDef({android.content.integrity.AtomicFormula.EQ, android.content.integrity.AtomicFormula.LT, android.content.integrity.AtomicFormula.LE, android.content.integrity.AtomicFormula.GT, android.content.integrity.AtomicFormula.GE}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface AtomicFormula.Operator {
+ }
+
+ public static final class AtomicFormula.StringAtomicFormula extends android.content.integrity.AtomicFormula implements android.os.Parcelable {
+ ctor public AtomicFormula.StringAtomicFormula(@android.content.integrity.AtomicFormula.Key int, @NonNull String, boolean);
+ method public int describeContents();
+ method public boolean getIsHashedValue();
+ method public int getTag();
+ method @NonNull public String getValue();
+ method public boolean isSatisfied(@NonNull android.content.integrity.AppInstallMetadata);
+ method public void writeToParcel(@NonNull android.os.Parcel, int);
+ field @NonNull public static final android.os.Parcelable.Creator<android.content.integrity.AtomicFormula.StringAtomicFormula> CREATOR;
+ }
+
+ public final class CompoundFormula implements android.content.integrity.Formula android.os.Parcelable {
+ ctor public CompoundFormula(@android.content.integrity.CompoundFormula.Connector int, @NonNull java.util.List<android.content.integrity.Formula>);
+ method public int describeContents();
+ method @android.content.integrity.CompoundFormula.Connector public int getConnector();
+ method @NonNull public java.util.List<android.content.integrity.Formula> getFormulas();
+ method public int getTag();
+ method public boolean isSatisfied(@NonNull android.content.integrity.AppInstallMetadata);
+ method public void writeToParcel(@NonNull android.os.Parcel, int);
+ field public static final int AND = 0; // 0x0
+ field @NonNull public static final android.os.Parcelable.Creator<android.content.integrity.CompoundFormula> CREATOR;
+ field public static final int NOT = 2; // 0x2
+ field public static final int OR = 1; // 0x1
+ }
+
+ @IntDef({android.content.integrity.CompoundFormula.AND, android.content.integrity.CompoundFormula.OR, android.content.integrity.CompoundFormula.NOT}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface CompoundFormula.Connector {
+ }
+
+ public interface Formula {
+ method @android.content.integrity.Formula.Tag public int getTag();
+ method public boolean isSatisfied(@NonNull android.content.integrity.AppInstallMetadata);
+ method @NonNull public static android.content.integrity.Formula readFromParcel(@NonNull android.os.Parcel);
+ method public static void writeToParcel(@NonNull android.content.integrity.Formula, @NonNull android.os.Parcel, int);
+ field public static final int BOOLEAN_ATOMIC_FORMULA_TAG = 3; // 0x3
+ field public static final int COMPOUND_FORMULA_TAG = 0; // 0x0
+ field public static final int INT_ATOMIC_FORMULA_TAG = 2; // 0x2
+ field public static final int STRING_ATOMIC_FORMULA_TAG = 1; // 0x1
+ }
+
+ @IntDef({android.content.integrity.Formula.COMPOUND_FORMULA_TAG, android.content.integrity.Formula.STRING_ATOMIC_FORMULA_TAG, android.content.integrity.Formula.INT_ATOMIC_FORMULA_TAG, android.content.integrity.Formula.BOOLEAN_ATOMIC_FORMULA_TAG}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface Formula.Tag {
+ }
+
+ public final class Rule implements android.os.Parcelable {
+ ctor public Rule(@NonNull android.content.integrity.Formula, @android.content.integrity.Rule.Effect int);
+ method public int describeContents();
+ method @android.content.integrity.Rule.Effect public int getEffect();
+ method @NonNull public android.content.integrity.Formula getFormula();
+ method public void writeToParcel(@NonNull android.os.Parcel, int);
+ field @NonNull public static final android.os.Parcelable.Creator<android.content.integrity.Rule> CREATOR;
+ field public static final int DENY = 0; // 0x0
+ field public static final int FORCE_ALLOW = 1; // 0x1
+ }
+
+ @IntDef({android.content.integrity.Rule.DENY, android.content.integrity.Rule.FORCE_ALLOW}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface Rule.Effect {
+ }
+
+ public class RuleSet {
+ method @NonNull public java.util.List<android.content.integrity.Rule> getRules();
+ method @NonNull public String getVersion();
+ }
+
+ public static class RuleSet.Builder {
+ ctor public RuleSet.Builder();
+ method @NonNull public android.content.integrity.RuleSet.Builder addRules(@NonNull java.util.List<android.content.integrity.Rule>);
+ method @NonNull public android.content.integrity.RuleSet build();
+ method @NonNull public android.content.integrity.RuleSet.Builder setVersion(@NonNull String);
+ }
+
+}
+
package android.content.om {
public final class OverlayInfo implements android.os.Parcelable {
@@ -1823,7 +2041,6 @@
field public static final int PROTECTION_FLAG_SYSTEM_TEXT_CLASSIFIER = 65536; // 0x10000
field public static final int PROTECTION_FLAG_TELEPHONY = 4194304; // 0x400000
field public static final int PROTECTION_FLAG_WELLBEING = 131072; // 0x20000
- field public static final int PROTECTION_FLAG_WIFI = 8388608; // 0x800000
field @Nullable public final String backgroundPermission;
field @StringRes public int requestRes;
}
@@ -4147,7 +4364,7 @@
public class ConnectivityManager {
method @NonNull @RequiresPermission(android.Manifest.permission.PACKET_KEEPALIVE_OFFLOAD) public android.net.SocketKeepalive createNattKeepalive(@NonNull android.net.Network, @NonNull android.os.ParcelFileDescriptor, @NonNull java.net.InetAddress, @NonNull java.net.InetAddress, @NonNull java.util.concurrent.Executor, @NonNull android.net.SocketKeepalive.Callback);
method @NonNull @RequiresPermission(android.Manifest.permission.PACKET_KEEPALIVE_OFFLOAD) public android.net.SocketKeepalive createSocketKeepalive(@NonNull android.net.Network, @NonNull java.net.Socket, @NonNull java.util.concurrent.Executor, @NonNull android.net.SocketKeepalive.Callback);
- method @RequiresPermission(android.Manifest.permission.LOCAL_MAC_ADDRESS) public String getCaptivePortalServerUrl();
+ method @Deprecated @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public String getCaptivePortalServerUrl();
method @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED) public void getLatestTetheringEntitlementResult(int, boolean, @NonNull java.util.concurrent.Executor, @NonNull android.net.ConnectivityManager.OnTetheringEntitlementResultListener);
method @RequiresPermission(anyOf={android.Manifest.permission.TETHER_PRIVILEGED, android.Manifest.permission.WRITE_SETTINGS}) public boolean isTetheringSupported();
method @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED) public void registerTetheringEventCallback(@NonNull java.util.concurrent.Executor, @NonNull android.net.ConnectivityManager.OnTetheringEventCallback);
@@ -4183,6 +4400,35 @@
method public void onUpstreamChanged(@Nullable android.net.Network);
}
+ public final class IpConfiguration implements android.os.Parcelable {
+ ctor public IpConfiguration();
+ ctor public IpConfiguration(@NonNull android.net.IpConfiguration);
+ method public int describeContents();
+ method @Nullable public android.net.ProxyInfo getHttpProxy();
+ method @NonNull public android.net.IpConfiguration.IpAssignment getIpAssignment();
+ method @NonNull public android.net.IpConfiguration.ProxySettings getProxySettings();
+ method @Nullable public android.net.StaticIpConfiguration getStaticIpConfiguration();
+ method public void setHttpProxy(@Nullable android.net.ProxyInfo);
+ method public void setIpAssignment(@NonNull android.net.IpConfiguration.IpAssignment);
+ method public void setProxySettings(@NonNull android.net.IpConfiguration.ProxySettings);
+ method public void setStaticIpConfiguration(@Nullable android.net.StaticIpConfiguration);
+ method public void writeToParcel(@NonNull android.os.Parcel, int);
+ field @NonNull public static final android.os.Parcelable.Creator<android.net.IpConfiguration> CREATOR;
+ }
+
+ public enum IpConfiguration.IpAssignment {
+ enum_constant public static final android.net.IpConfiguration.IpAssignment DHCP;
+ enum_constant public static final android.net.IpConfiguration.IpAssignment STATIC;
+ enum_constant public static final android.net.IpConfiguration.IpAssignment UNASSIGNED;
+ }
+
+ public enum IpConfiguration.ProxySettings {
+ enum_constant public static final android.net.IpConfiguration.ProxySettings NONE;
+ enum_constant public static final android.net.IpConfiguration.ProxySettings PAC;
+ enum_constant public static final android.net.IpConfiguration.ProxySettings STATIC;
+ enum_constant public static final android.net.IpConfiguration.ProxySettings UNASSIGNED;
+ }
+
public final class IpPrefix implements android.os.Parcelable {
ctor public IpPrefix(@NonNull java.net.InetAddress, @IntRange(from=0, to=128) int);
ctor public IpPrefix(@NonNull String);
@@ -4219,7 +4465,6 @@
ctor public LinkProperties(@Nullable android.net.LinkProperties);
method public boolean addDnsServer(@NonNull java.net.InetAddress);
method public boolean addLinkAddress(@NonNull android.net.LinkAddress);
- method @Nullable public android.net.IpPrefix getNat64Prefix();
method @NonNull public java.util.List<java.net.InetAddress> getPcscfServers();
method @Nullable public String getTcpBufferSizes();
method @NonNull public java.util.List<java.net.InetAddress> getValidatedPrivateDnsServers();
@@ -4233,7 +4478,6 @@
method public boolean removeDnsServer(@NonNull java.net.InetAddress);
method public boolean removeLinkAddress(@NonNull android.net.LinkAddress);
method public boolean removeRoute(@NonNull android.net.RouteInfo);
- method public void setNat64Prefix(@Nullable android.net.IpPrefix);
method public void setPcscfServers(@NonNull java.util.Collection<java.net.InetAddress>);
method public void setPrivateDnsServerName(@Nullable String);
method public void setTcpBufferSizes(@Nullable String);
@@ -4255,6 +4499,7 @@
public class NetworkKey implements android.os.Parcelable {
ctor public NetworkKey(android.net.WifiKey);
+ method @Nullable public static android.net.NetworkKey createFromScanResult(@Nullable android.net.wifi.ScanResult);
method public int describeContents();
method public void writeToParcel(android.os.Parcel, int);
field @NonNull public static final android.os.Parcelable.Creator<android.net.NetworkKey> CREATOR;
@@ -4277,16 +4522,23 @@
method @RequiresPermission(anyOf={android.Manifest.permission.SCORE_NETWORKS, "android.permission.REQUEST_NETWORK_SCORES"}) public boolean clearScores() throws java.lang.SecurityException;
method @RequiresPermission(anyOf={android.Manifest.permission.SCORE_NETWORKS, "android.permission.REQUEST_NETWORK_SCORES"}) public void disableScoring() throws java.lang.SecurityException;
method @RequiresPermission(anyOf={android.Manifest.permission.SCORE_NETWORKS, "android.permission.REQUEST_NETWORK_SCORES"}) public String getActiveScorerPackage();
+ method @RequiresPermission("android.permission.REQUEST_NETWORK_SCORES") public void registerNetworkScoreCallback(int, int, @NonNull java.util.concurrent.Executor, @NonNull android.net.NetworkScoreManager.NetworkScoreCallback) throws java.lang.SecurityException;
+ method @RequiresPermission("android.permission.REQUEST_NETWORK_SCORES") public boolean requestScores(@NonNull android.net.NetworkKey[]) throws java.lang.SecurityException;
method @RequiresPermission(anyOf={android.Manifest.permission.SCORE_NETWORKS, "android.permission.REQUEST_NETWORK_SCORES"}) public boolean setActiveScorer(String) throws java.lang.SecurityException;
- method @RequiresPermission(android.Manifest.permission.SCORE_NETWORKS) public boolean updateScores(android.net.ScoredNetwork[]) throws java.lang.SecurityException;
- field public static final String ACTION_CHANGE_ACTIVE = "android.net.scoring.CHANGE_ACTIVE";
+ method @RequiresPermission(android.Manifest.permission.SCORE_NETWORKS) public boolean updateScores(@NonNull android.net.ScoredNetwork[]) throws java.lang.SecurityException;
+ field @Deprecated public static final String ACTION_CHANGE_ACTIVE = "android.net.scoring.CHANGE_ACTIVE";
field public static final String ACTION_CUSTOM_ENABLE = "android.net.scoring.CUSTOM_ENABLE";
field public static final String ACTION_RECOMMEND_NETWORKS = "android.net.action.RECOMMEND_NETWORKS";
field public static final String ACTION_SCORER_CHANGED = "android.net.scoring.SCORER_CHANGED";
- field public static final String ACTION_SCORE_NETWORKS = "android.net.scoring.SCORE_NETWORKS";
- field public static final String EXTRA_NETWORKS_TO_SCORE = "networksToScore";
+ field @Deprecated public static final String ACTION_SCORE_NETWORKS = "android.net.scoring.SCORE_NETWORKS";
+ field @Deprecated public static final String EXTRA_NETWORKS_TO_SCORE = "networksToScore";
field public static final String EXTRA_NEW_SCORER = "newScorer";
- field public static final String EXTRA_PACKAGE_NAME = "packageName";
+ field @Deprecated public static final String EXTRA_PACKAGE_NAME = "packageName";
+ }
+
+ public static interface NetworkScoreManager.NetworkScoreCallback {
+ method public void clearScores();
+ method public void updateScores(@NonNull java.util.List<android.net.ScoredNetwork>);
}
public class NetworkStack {
@@ -4408,6 +4660,258 @@
}
+package android.net.eap {
+
+ public final class EapSessionConfig {
+ }
+
+ public static final class EapSessionConfig.Builder {
+ ctor public EapSessionConfig.Builder();
+ method @NonNull public android.net.eap.EapSessionConfig build();
+ method @NonNull public android.net.eap.EapSessionConfig.Builder setEapAkaConfig(int, int);
+ method @NonNull public android.net.eap.EapSessionConfig.Builder setEapAkaPrimeConfig(int, int, @NonNull String, boolean);
+ method @NonNull public android.net.eap.EapSessionConfig.Builder setEapIdentity(@NonNull byte[]);
+ method @NonNull public android.net.eap.EapSessionConfig.Builder setEapMsChapV2Config(@NonNull String, @NonNull String);
+ method @NonNull public android.net.eap.EapSessionConfig.Builder setEapSimConfig(int, int);
+ }
+
+ public static class EapSessionConfig.EapAkaConfig extends android.net.eap.EapSessionConfig.EapUiccConfig {
+ }
+
+ public static class EapSessionConfig.EapAkaPrimeConfig extends android.net.eap.EapSessionConfig.EapAkaConfig {
+ method public boolean allowsMismatchedNetworkNames();
+ method @NonNull public String getNetworkName();
+ }
+
+ public abstract static class EapSessionConfig.EapMethodConfig {
+ method public int getMethodType();
+ }
+
+ public static class EapSessionConfig.EapMsChapV2Config extends android.net.eap.EapSessionConfig.EapMethodConfig {
+ method @NonNull public String getPassword();
+ method @NonNull public String getUsername();
+ }
+
+ public static class EapSessionConfig.EapSimConfig extends android.net.eap.EapSessionConfig.EapUiccConfig {
+ }
+
+ public abstract static class EapSessionConfig.EapUiccConfig extends android.net.eap.EapSessionConfig.EapMethodConfig {
+ method public int getAppType();
+ method public int getSubId();
+ }
+
+}
+
+package android.net.ipsec.ike {
+
+ public final class ChildSaProposal extends android.net.ipsec.ike.SaProposal {
+ }
+
+ public static final class ChildSaProposal.Builder {
+ ctor public ChildSaProposal.Builder();
+ method @NonNull public android.net.ipsec.ike.ChildSaProposal.Builder addDhGroup(int);
+ method @NonNull public android.net.ipsec.ike.ChildSaProposal.Builder addEncryptionAlgorithm(int, int);
+ method @NonNull public android.net.ipsec.ike.ChildSaProposal.Builder addIntegrityAlgorithm(int);
+ method @NonNull public android.net.ipsec.ike.ChildSaProposal build();
+ }
+
+ public interface ChildSessionCallback {
+ method public void onClosed();
+ method public void onClosedExceptionally(@NonNull android.net.ipsec.ike.exceptions.IkeException);
+ method public void onIpSecTransformCreated(@NonNull android.net.IpSecTransform, int);
+ method public void onIpSecTransformDeleted(@NonNull android.net.IpSecTransform, int);
+ method public void onOpened(@NonNull android.net.ipsec.ike.ChildSessionConfiguration);
+ }
+
+ public final class ChildSessionConfiguration {
+ method @NonNull public java.util.List<android.net.ipsec.ike.IkeTrafficSelector> getInboundTrafficSelectors();
+ method @NonNull public java.util.List<android.net.LinkAddress> getInternalAddresses();
+ method @NonNull public java.util.List<java.net.InetAddress> getInternalDhcpServers();
+ method @NonNull public java.util.List<java.net.InetAddress> getInternalDnsServers();
+ method @NonNull public java.util.List<android.net.LinkAddress> getInternalSubnets();
+ method @NonNull public java.util.List<android.net.ipsec.ike.IkeTrafficSelector> getOutboundTrafficSelectors();
+ }
+
+ public abstract class ChildSessionOptions {
+ }
+
+ public class IkeFqdnIdentification extends android.net.ipsec.ike.IkeIdentification {
+ ctor public IkeFqdnIdentification(@NonNull String);
+ field @NonNull public final String fqdn;
+ }
+
+ public abstract class IkeIdentification {
+ }
+
+ public final class IkeIpv4AddrIdentification extends android.net.ipsec.ike.IkeIdentification {
+ ctor public IkeIpv4AddrIdentification(@NonNull java.net.Inet4Address);
+ field @NonNull public final java.net.Inet4Address ipv4Address;
+ }
+
+ public class IkeIpv6AddrIdentification extends android.net.ipsec.ike.IkeIdentification {
+ ctor public IkeIpv6AddrIdentification(@NonNull java.net.Inet6Address);
+ field @NonNull public final java.net.Inet6Address ipv6Address;
+ }
+
+ public final class IkeKeyIdIdentification extends android.net.ipsec.ike.IkeIdentification {
+ ctor public IkeKeyIdIdentification(@NonNull byte[]);
+ field @NonNull public final byte[] keyId;
+ }
+
+ public final class IkeRfc822AddrIdentification extends android.net.ipsec.ike.IkeIdentification {
+ ctor public IkeRfc822AddrIdentification(@NonNull String);
+ field @NonNull public final String rfc822Name;
+ }
+
+ public final class IkeSaProposal extends android.net.ipsec.ike.SaProposal {
+ method @NonNull public java.util.List<java.lang.Integer> getPseudorandomFunctions();
+ }
+
+ public static final class IkeSaProposal.Builder {
+ ctor public IkeSaProposal.Builder();
+ method @NonNull public android.net.ipsec.ike.IkeSaProposal.Builder addDhGroup(int);
+ method @NonNull public android.net.ipsec.ike.IkeSaProposal.Builder addEncryptionAlgorithm(int, int);
+ method @NonNull public android.net.ipsec.ike.IkeSaProposal.Builder addIntegrityAlgorithm(int);
+ method @NonNull public android.net.ipsec.ike.IkeSaProposal.Builder addPseudorandomFunction(int);
+ method @NonNull public android.net.ipsec.ike.IkeSaProposal build();
+ }
+
+ public final class IkeSession implements java.lang.AutoCloseable {
+ ctor public IkeSession(@NonNull android.content.Context, @NonNull android.net.ipsec.ike.IkeSessionOptions, @NonNull android.net.ipsec.ike.ChildSessionOptions, @NonNull java.util.concurrent.Executor, @NonNull android.net.ipsec.ike.IkeSessionCallback, @NonNull android.net.ipsec.ike.ChildSessionCallback);
+ method public void close();
+ method public void closeChildSession(@NonNull android.net.ipsec.ike.ChildSessionCallback);
+ method public void kill();
+ method public void openChildSession(@NonNull android.net.ipsec.ike.ChildSessionOptions, @NonNull android.net.ipsec.ike.ChildSessionCallback);
+ }
+
+ public interface IkeSessionCallback {
+ method public void onClosed();
+ method public void onClosedExceptionally(@NonNull android.net.ipsec.ike.exceptions.IkeException);
+ method public void onError(@NonNull android.net.ipsec.ike.exceptions.IkeProtocolException);
+ method public void onOpened(@NonNull android.net.ipsec.ike.IkeSessionConfiguration);
+ }
+
+ public final class IkeSessionConfiguration {
+ ctor public IkeSessionConfiguration();
+ method @NonNull public String getRemoteApplicationVersion();
+ method public boolean isIkeExtensionEnabled(int);
+ field public static final int EXTENSION_TYPE_FRAGMENTATION = 1; // 0x1
+ field public static final int EXTENSION_TYPE_MOBIKE = 2; // 0x2
+ }
+
+ public final class IkeSessionOptions {
+ }
+
+ public static final class IkeSessionOptions.Builder {
+ ctor public IkeSessionOptions.Builder();
+ method @NonNull public android.net.ipsec.ike.IkeSessionOptions.Builder addSaProposal(@NonNull android.net.ipsec.ike.IkeSaProposal);
+ method @NonNull public android.net.ipsec.ike.IkeSessionOptions build();
+ method @NonNull public android.net.ipsec.ike.IkeSessionOptions.Builder setAuthDigitalSignature(@NonNull java.security.cert.X509Certificate, @NonNull java.security.cert.X509Certificate, @NonNull java.security.PrivateKey);
+ method @NonNull public android.net.ipsec.ike.IkeSessionOptions.Builder setAuthDigitalSignature(@NonNull java.security.cert.X509Certificate, @NonNull java.security.cert.X509Certificate, @NonNull java.util.List<java.security.cert.X509Certificate>, @NonNull java.security.PrivateKey);
+ method @NonNull public android.net.ipsec.ike.IkeSessionOptions.Builder setAuthEap(@NonNull java.security.cert.X509Certificate, @NonNull android.net.eap.EapSessionConfig);
+ method @NonNull public android.net.ipsec.ike.IkeSessionOptions.Builder setAuthPsk(@NonNull byte[]);
+ method @NonNull public android.net.ipsec.ike.IkeSessionOptions.Builder setLocalIdentification(@NonNull android.net.ipsec.ike.IkeIdentification);
+ method @NonNull public android.net.ipsec.ike.IkeSessionOptions.Builder setRemoteIdentification(@NonNull android.net.ipsec.ike.IkeIdentification);
+ method @NonNull public android.net.ipsec.ike.IkeSessionOptions.Builder setServerAddress(@NonNull java.net.InetAddress);
+ method @NonNull public android.net.ipsec.ike.IkeSessionOptions.Builder setUdpEncapsulationSocket(@NonNull android.net.IpSecManager.UdpEncapsulationSocket);
+ }
+
+ public final class IkeTrafficSelector {
+ ctor public IkeTrafficSelector(int, int, @NonNull java.net.InetAddress, @NonNull java.net.InetAddress);
+ field public final int endPort;
+ field @NonNull public final java.net.InetAddress endingAddress;
+ field public final int startPort;
+ field @NonNull public final java.net.InetAddress startingAddress;
+ }
+
+ public abstract class SaProposal {
+ method @NonNull public java.util.List<java.lang.Integer> getDhGroups();
+ method @NonNull public java.util.List<android.util.Pair<java.lang.Integer,java.lang.Integer>> getEncryptionAlgorithms();
+ method @NonNull public java.util.List<java.lang.Integer> getIntegrityAlgorithms();
+ field public static final int DH_GROUP_1024_BIT_MODP = 2; // 0x2
+ field public static final int DH_GROUP_2048_BIT_MODP = 14; // 0xe
+ field public static final int DH_GROUP_NONE = 0; // 0x0
+ field public static final int ENCRYPTION_ALGORITHM_3DES = 3; // 0x3
+ field public static final int ENCRYPTION_ALGORITHM_AES_CBC = 12; // 0xc
+ field public static final int ENCRYPTION_ALGORITHM_AES_GCM_12 = 19; // 0x13
+ field public static final int ENCRYPTION_ALGORITHM_AES_GCM_16 = 20; // 0x14
+ field public static final int ENCRYPTION_ALGORITHM_AES_GCM_8 = 18; // 0x12
+ field public static final int INTEGRITY_ALGORITHM_AES_XCBC_96 = 5; // 0x5
+ field public static final int INTEGRITY_ALGORITHM_HMAC_SHA1_96 = 2; // 0x2
+ field public static final int INTEGRITY_ALGORITHM_HMAC_SHA2_256_128 = 12; // 0xc
+ field public static final int INTEGRITY_ALGORITHM_HMAC_SHA2_384_192 = 13; // 0xd
+ field public static final int INTEGRITY_ALGORITHM_HMAC_SHA2_512_256 = 14; // 0xe
+ field public static final int INTEGRITY_ALGORITHM_NONE = 0; // 0x0
+ field public static final int KEY_LEN_AES_128 = 128; // 0x80
+ field public static final int KEY_LEN_AES_192 = 192; // 0xc0
+ field public static final int KEY_LEN_AES_256 = 256; // 0x100
+ field public static final int KEY_LEN_UNUSED = 0; // 0x0
+ field public static final int PSEUDORANDOM_FUNCTION_AES128_XCBC = 4; // 0x4
+ field public static final int PSEUDORANDOM_FUNCTION_HMAC_SHA1 = 2; // 0x2
+ }
+
+ public final class TransportModeChildSessionOptions extends android.net.ipsec.ike.ChildSessionOptions {
+ }
+
+ public static final class TransportModeChildSessionOptions.Builder {
+ ctor public TransportModeChildSessionOptions.Builder();
+ method @NonNull public android.net.ipsec.ike.TransportModeChildSessionOptions.Builder addInboundTrafficSelectors(@NonNull android.net.ipsec.ike.IkeTrafficSelector);
+ method @NonNull public android.net.ipsec.ike.TransportModeChildSessionOptions.Builder addOutboundTrafficSelectors(@NonNull android.net.ipsec.ike.IkeTrafficSelector);
+ method @NonNull public android.net.ipsec.ike.TransportModeChildSessionOptions.Builder addSaProposal(@NonNull android.net.ipsec.ike.ChildSaProposal);
+ method @NonNull public android.net.ipsec.ike.TransportModeChildSessionOptions build();
+ }
+
+ public final class TunnelModeChildSessionOptions extends android.net.ipsec.ike.ChildSessionOptions {
+ }
+
+ public static final class TunnelModeChildSessionOptions.Builder {
+ ctor public TunnelModeChildSessionOptions.Builder();
+ method @NonNull public android.net.ipsec.ike.TunnelModeChildSessionOptions.Builder addInboundTrafficSelectors(@NonNull android.net.ipsec.ike.IkeTrafficSelector);
+ method @NonNull public android.net.ipsec.ike.TunnelModeChildSessionOptions.Builder addInternalAddressRequest(int);
+ method @NonNull public android.net.ipsec.ike.TunnelModeChildSessionOptions.Builder addInternalAddressRequest(@NonNull java.net.InetAddress, int);
+ method @NonNull public android.net.ipsec.ike.TunnelModeChildSessionOptions.Builder addInternalDhcpServerRequest(int);
+ method @NonNull public android.net.ipsec.ike.TunnelModeChildSessionOptions.Builder addInternalDhcpServerRequest(@NonNull java.net.InetAddress);
+ method @NonNull public android.net.ipsec.ike.TunnelModeChildSessionOptions.Builder addInternalDnsServerRequest(int);
+ method @NonNull public android.net.ipsec.ike.TunnelModeChildSessionOptions.Builder addInternalDnsServerRequest(@NonNull java.net.InetAddress);
+ method @NonNull public android.net.ipsec.ike.TunnelModeChildSessionOptions.Builder addInternalSubnetRequest(int);
+ method @NonNull public android.net.ipsec.ike.TunnelModeChildSessionOptions.Builder addOutboundTrafficSelectors(@NonNull android.net.ipsec.ike.IkeTrafficSelector);
+ method @NonNull public android.net.ipsec.ike.TunnelModeChildSessionOptions.Builder addSaProposal(@NonNull android.net.ipsec.ike.ChildSaProposal);
+ method @NonNull public android.net.ipsec.ike.TunnelModeChildSessionOptions build();
+ }
+
+}
+
+package android.net.ipsec.ike.exceptions {
+
+ public abstract class IkeException extends java.lang.Exception {
+ }
+
+ public final class IkeInternalException extends android.net.ipsec.ike.exceptions.IkeException {
+ }
+
+ public abstract class IkeProtocolException extends android.net.ipsec.ike.exceptions.IkeException {
+ method @Nullable public byte[] getErrorData();
+ method public int getErrorType();
+ field public static final int ERROR_TYPE_AUTHENTICATION_FAILED = 24; // 0x18
+ field public static final int ERROR_TYPE_CHILD_SA_NOT_FOUND = 44; // 0x2c
+ field public static final int ERROR_TYPE_FAILED_CP_REQUIRED = 37; // 0x25
+ field public static final int ERROR_TYPE_INTERNAL_ADDRESS_FAILURE = 36; // 0x24
+ field public static final int ERROR_TYPE_INVALID_IKE_SPI = 4; // 0x4
+ field public static final int ERROR_TYPE_INVALID_KE_PAYLOAD = 17; // 0x11
+ field public static final int ERROR_TYPE_INVALID_MAJOR_VERSION = 5; // 0x5
+ field public static final int ERROR_TYPE_INVALID_MESSAGE_ID = 9; // 0x9
+ field public static final int ERROR_TYPE_INVALID_SELECTORS = 39; // 0x27
+ field public static final int ERROR_TYPE_INVALID_SYNTAX = 7; // 0x7
+ field public static final int ERROR_TYPE_NO_ADDITIONAL_SAS = 35; // 0x23
+ field public static final int ERROR_TYPE_NO_PROPOSAL_CHOSEN = 14; // 0xe
+ field public static final int ERROR_TYPE_SINGLE_PAIR_REQUIRED = 34; // 0x22
+ field public static final int ERROR_TYPE_TEMPORARY_FAILURE = 43; // 0x2b
+ field public static final int ERROR_TYPE_TS_UNACCEPTABLE = 38; // 0x26
+ field public static final int ERROR_TYPE_UNSUPPORTED_CRITICAL_PAYLOAD = 1; // 0x1
+ }
+
+}
+
package android.net.metrics {
public final class ApfProgramEvent implements android.net.metrics.IpConnectivityLog.Event {
@@ -4794,18 +5298,30 @@
public final class SoftApConfiguration implements android.os.Parcelable {
method public int describeContents();
+ method public int getBand();
method @Nullable public android.net.MacAddress getBssid();
+ method public int getChannel();
+ method public int getSecurityType();
method @Nullable public String getSsid();
method @Nullable public String getWpa2Passphrase();
+ method public boolean isHiddenSsid();
method public void writeToParcel(@NonNull android.os.Parcel, int);
+ field public static final int BAND_2GHZ = 0; // 0x0
+ field public static final int BAND_5GHZ = 1; // 0x1
+ field public static final int BAND_ANY = -1; // 0xffffffff
field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.SoftApConfiguration> CREATOR;
+ field public static final int SECURITY_TYPE_OPEN = 0; // 0x0
+ field public static final int SECURITY_TYPE_WPA2_PSK = 1; // 0x1
}
public static final class SoftApConfiguration.Builder {
ctor public SoftApConfiguration.Builder();
ctor public SoftApConfiguration.Builder(@NonNull android.net.wifi.SoftApConfiguration);
method @NonNull public android.net.wifi.SoftApConfiguration build();
+ method @NonNull public android.net.wifi.SoftApConfiguration.Builder setBand(int);
method @NonNull public android.net.wifi.SoftApConfiguration.Builder setBssid(@Nullable android.net.MacAddress);
+ method @NonNull public android.net.wifi.SoftApConfiguration.Builder setChannel(int);
+ method @NonNull public android.net.wifi.SoftApConfiguration.Builder setHiddenSsid(boolean);
method @NonNull public android.net.wifi.SoftApConfiguration.Builder setSsid(@Nullable String);
method @NonNull public android.net.wifi.SoftApConfiguration.Builder setWpa2Passphrase(@Nullable String);
}
@@ -4825,6 +5341,32 @@
field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.SoftApInfo> CREATOR;
}
+ public final class WifiActivityEnergyInfo implements android.os.Parcelable {
+ ctor public WifiActivityEnergyInfo(long, int, long, long, long, long, long);
+ method public int describeContents();
+ method public long getControllerEnergyUsedMicroJoules();
+ method public long getControllerIdleDurationMillis();
+ method public long getControllerRxDurationMillis();
+ method public long getControllerScanDurationMillis();
+ method public long getControllerTxDurationMillis();
+ method public int getStackState();
+ method public long getTimeSinceBootMillis();
+ method public boolean isValid();
+ method public void setControllerEnergyUsedMicroJoules(long);
+ method public void setControllerIdleDurationMillis(long);
+ method public void setControllerRxDurationMillis(long);
+ method public void setControllerScanDurationMillis(long);
+ method public void setControllerTxDurationMillis(long);
+ method public void setStackState(int);
+ method public void setTimeSinceBootMillis(long);
+ method public void writeToParcel(@NonNull android.os.Parcel, int);
+ field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.WifiActivityEnergyInfo> CREATOR;
+ field public static final int STACK_STATE_INVALID = 0; // 0x0
+ field public static final int STACK_STATE_STATE_ACTIVE = 1; // 0x1
+ field public static final int STACK_STATE_STATE_IDLE = 3; // 0x3
+ field public static final int STACK_STATE_STATE_SCANNING = 2; // 0x2
+ }
+
public final class WifiClient implements android.os.Parcelable {
method public int describeContents();
method @NonNull public android.net.MacAddress getMacAddress();
@@ -4833,19 +5375,46 @@
}
@Deprecated public class WifiConfiguration implements android.os.Parcelable {
+ method @Deprecated public int getAuthType();
+ method @Deprecated @NonNull public android.net.IpConfiguration.IpAssignment getIpAssignment();
+ method @Deprecated @NonNull public android.net.wifi.WifiConfiguration.NetworkSelectionStatus getNetworkSelectionStatus();
+ method @Deprecated @NonNull public String getPrintableSsid();
+ method @Deprecated @NonNull public android.net.IpConfiguration.ProxySettings getProxySettings();
+ method @Deprecated @Nullable public android.net.StaticIpConfiguration getStaticIpConfiguration();
method @Deprecated public boolean hasNoInternetAccess();
method @Deprecated public boolean isEphemeral();
+ method @Deprecated public static boolean isMetered(@Nullable android.net.wifi.WifiConfiguration, @Nullable android.net.wifi.WifiInfo);
method @Deprecated public boolean isNoInternetAccessExpected();
+ method @Deprecated public void setIpConfiguration(@Nullable android.net.IpConfiguration);
+ method @Deprecated public void setProxy(@NonNull android.net.IpConfiguration.ProxySettings, @NonNull android.net.ProxyInfo);
+ field @Deprecated public static final int AP_BAND_2GHZ = 0; // 0x0
+ field @Deprecated public static final int AP_BAND_5GHZ = 1; // 0x1
+ field @Deprecated public static final int AP_BAND_ANY = -1; // 0xffffffff
+ field @Deprecated public static final int INVALID_NETWORK_ID = -1; // 0xffffffff
+ field @Deprecated public static final int METERED_OVERRIDE_METERED = 1; // 0x1
+ field @Deprecated public static final int METERED_OVERRIDE_NONE = 0; // 0x0
+ field @Deprecated public static final int METERED_OVERRIDE_NOT_METERED = 2; // 0x2
+ field @Deprecated public static final int RANDOMIZATION_NONE = 0; // 0x0
+ field @Deprecated public static final int RANDOMIZATION_PERSISTENT = 1; // 0x1
field @Deprecated public boolean allowAutojoin;
+ field @Deprecated public int apBand;
field @Deprecated public int carrierId;
field @Deprecated public String creatorName;
field @Deprecated public int creatorUid;
+ field @Deprecated public boolean fromWifiNetworkSpecifier;
+ field @Deprecated public boolean fromWifiNetworkSuggestion;
field @Deprecated public String lastUpdateName;
field @Deprecated public int lastUpdateUid;
+ field @Deprecated public int macRandomizationSetting;
field @Deprecated public boolean meteredHint;
+ field @Deprecated public int meteredOverride;
field @Deprecated public int numAssociation;
field @Deprecated public int numScorerOverride;
field @Deprecated public int numScorerOverrideAndSwitchedNetwork;
+ field @Deprecated @NonNull public final android.net.wifi.WifiConfiguration.RecentFailure recentFailure;
+ field @Deprecated public boolean requirePMF;
+ field @Deprecated @Nullable public String saePasswordId;
+ field @Deprecated public boolean shared;
field @Deprecated public boolean useExternalScores;
}
@@ -4853,6 +5422,49 @@
field @Deprecated public static final int WPA2_PSK = 4; // 0x4
}
+ @Deprecated public static class WifiConfiguration.NetworkSelectionStatus {
+ method @Deprecated public int getDisableReasonCounter(int);
+ method @Deprecated public long getDisableTime();
+ method @Deprecated public boolean getHasEverConnected();
+ method @Deprecated @Nullable public static String getNetworkDisableReasonString(int);
+ method @Deprecated public int getNetworkSelectionDisableReason();
+ method @Deprecated @NonNull public String getNetworkStatusString();
+ method @Deprecated public boolean isNetworkEnabled();
+ method @Deprecated public boolean isNetworkPermanentlyDisabled();
+ field @Deprecated public static final int DISABLED_ASSOCIATION_REJECTION = 1; // 0x1
+ field @Deprecated public static final int DISABLED_AUTHENTICATION_FAILURE = 2; // 0x2
+ field @Deprecated public static final int DISABLED_AUTHENTICATION_NO_CREDENTIALS = 5; // 0x5
+ field @Deprecated public static final int DISABLED_AUTHENTICATION_NO_SUBSCRIPTION = 9; // 0x9
+ field @Deprecated public static final int DISABLED_BY_WIFI_MANAGER = 7; // 0x7
+ field @Deprecated public static final int DISABLED_BY_WRONG_PASSWORD = 8; // 0x8
+ field @Deprecated public static final int DISABLED_DHCP_FAILURE = 3; // 0x3
+ field @Deprecated public static final int DISABLED_NO_INTERNET_PERMANENT = 6; // 0x6
+ field @Deprecated public static final int DISABLED_NO_INTERNET_TEMPORARY = 4; // 0x4
+ field @Deprecated public static final int NETWORK_SELECTION_DISABLED_MAX = 10; // 0xa
+ field @Deprecated public static final int NETWORK_SELECTION_ENABLE = 0; // 0x0
+ }
+
+ @Deprecated public static class WifiConfiguration.RecentFailure {
+ method @Deprecated public int getAssociationStatus();
+ field @Deprecated public static final int NONE = 0; // 0x0
+ field @Deprecated public static final int STATUS_AP_UNABLE_TO_HANDLE_NEW_STA = 17; // 0x11
+ }
+
+ public class WifiEnterpriseConfig implements android.os.Parcelable {
+ method @Nullable public String[] getCaCertificateAliases();
+ method @NonNull public String getCaPath();
+ method @NonNull public String getClientCertificateAlias();
+ method public int getOcsp();
+ method public void setCaCertificateAliases(@Nullable String[]);
+ method public void setCaPath(@Nullable String);
+ method public void setClientCertificateAlias(@Nullable String);
+ method public void setOcsp(int);
+ field public static final int OCSP_NONE = 0; // 0x0
+ field public static final int OCSP_REQUEST_CERT_STATUS = 1; // 0x1
+ field public static final int OCSP_REQUIRE_ALL_NON_TRUSTED_CERTS_STATUS = 3; // 0x3
+ field public static final int OCSP_REQUIRE_CERT_STATUS = 2; // 0x2
+ }
+
public class WifiFrameworkInitializer {
method public static void registerServiceWrappers();
}
@@ -4873,7 +5485,7 @@
}
public class WifiManager {
- method @RequiresPermission("android.permission.WIFI_UPDATE_USABILITY_STATS_SCORE") public void addOnWifiUsabilityStatsListener(@NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.WifiManager.OnWifiUsabilityStatsListener);
+ method @RequiresPermission(android.Manifest.permission.WIFI_UPDATE_USABILITY_STATS_SCORE) public void addOnWifiUsabilityStatsListener(@NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.WifiManager.OnWifiUsabilityStatsListener);
method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void allowAutojoin(int, boolean);
method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD, android.Manifest.permission.NETWORK_STACK}) public void connect(@NonNull android.net.wifi.WifiConfiguration, @Nullable android.net.wifi.WifiManager.ActionListener);
method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD, android.Manifest.permission.NETWORK_STACK}) public void connect(int, @Nullable android.net.wifi.WifiManager.ActionListener);
@@ -4889,8 +5501,9 @@
method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD}) public java.util.Map<android.net.wifi.hotspot2.OsuProvider,java.util.List<android.net.wifi.ScanResult>> getMatchingOsuProviders(@Nullable java.util.List<android.net.wifi.ScanResult>);
method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD}) public java.util.Map<android.net.wifi.hotspot2.OsuProvider,android.net.wifi.hotspot2.PasspointConfiguration> getMatchingPasspointConfigsForOsuProviders(@NonNull java.util.Set<android.net.wifi.hotspot2.OsuProvider>);
method @RequiresPermission(allOf={android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.ACCESS_WIFI_STATE, android.Manifest.permission.READ_WIFI_CREDENTIAL}) public java.util.List<android.net.wifi.WifiConfiguration> getPrivilegedConfiguredNetworks();
+ method @NonNull @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE) public android.net.wifi.SoftApConfiguration getSoftApConfiguration();
method public int getVerboseLoggingLevel();
- method @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE) public android.net.wifi.WifiConfiguration getWifiApConfiguration();
+ method @Deprecated @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE) public android.net.wifi.WifiConfiguration getWifiApConfiguration();
method @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE) public int getWifiApState();
method public boolean isApMacRandomizationSupported();
method public boolean isConnectedMacRandomizationSupported();
@@ -4906,27 +5519,31 @@
method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void registerSoftApCallback(@NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.WifiManager.SoftApCallback);
method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void registerTrafficStateCallback(@NonNull android.net.wifi.WifiManager.TrafficStateCallback);
method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void registerTrafficStateCallback(@NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.WifiManager.TrafficStateCallback);
- method @RequiresPermission("android.permission.WIFI_UPDATE_USABILITY_STATS_SCORE") public void removeOnWifiUsabilityStatsListener(@NonNull android.net.wifi.WifiManager.OnWifiUsabilityStatsListener);
+ method @RequiresPermission(android.Manifest.permission.WIFI_UPDATE_USABILITY_STATS_SCORE) public void removeOnWifiUsabilityStatsListener(@NonNull android.net.wifi.WifiManager.OnWifiUsabilityStatsListener);
method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void restoreBackupData(@NonNull byte[]);
+ method @Nullable @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void restoreSoftApBackupData(@NonNull byte[]);
method @Deprecated @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void restoreSupplicantBackupData(@NonNull byte[], @NonNull byte[]);
method @NonNull @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public byte[] retrieveBackupData();
+ method @Nullable @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public byte[] retrieveSoftApBackupData();
method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD, android.Manifest.permission.NETWORK_STACK}) public void save(@NonNull android.net.wifi.WifiConfiguration, @Nullable android.net.wifi.WifiManager.ActionListener);
- method @RequiresPermission("android.permission.WIFI_SET_DEVICE_MOBILITY_STATE") public void setDeviceMobilityState(int);
- method @RequiresPermission(android.Manifest.permission.CHANGE_WIFI_STATE) public boolean setWifiApConfiguration(android.net.wifi.WifiConfiguration);
+ method @RequiresPermission(android.Manifest.permission.WIFI_SET_DEVICE_MOBILITY_STATE) public void setDeviceMobilityState(int);
+ method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public boolean setSoftApConfiguration(@NonNull android.net.wifi.SoftApConfiguration);
+ method @Deprecated @RequiresPermission(android.Manifest.permission.CHANGE_WIFI_STATE) public boolean setWifiApConfiguration(android.net.wifi.WifiConfiguration);
method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD}) public void startEasyConnectAsConfiguratorInitiator(@NonNull String, int, int, @NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.EasyConnectStatusCallback);
method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD}) public void startEasyConnectAsEnrolleeInitiator(@NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.EasyConnectStatusCallback);
method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD}) public void startLocalOnlyHotspot(@NonNull android.net.wifi.SoftApConfiguration, @Nullable java.util.concurrent.Executor, @Nullable android.net.wifi.WifiManager.LocalOnlyHotspotCallback);
method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public boolean startScan(android.os.WorkSource);
- method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_STACK, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public boolean startSoftAp(@Nullable android.net.wifi.WifiConfiguration);
method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD}) public void startSubscriptionProvisioning(@NonNull android.net.wifi.hotspot2.OsuProvider, @NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.hotspot2.ProvisioningCallback);
+ method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_STACK, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public boolean startTetheredHotspot(@Nullable android.net.wifi.SoftApConfiguration);
method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD}) public void stopEasyConnectSession();
method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_STACK, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public boolean stopSoftAp();
method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void unregisterNetworkRequestMatchCallback(@NonNull android.net.wifi.WifiManager.NetworkRequestMatchCallback);
method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void unregisterSoftApCallback(@NonNull android.net.wifi.WifiManager.SoftApCallback);
method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void unregisterTrafficStateCallback(@NonNull android.net.wifi.WifiManager.TrafficStateCallback);
method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_STACK, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public void updateInterfaceIpState(@Nullable String, int);
- method @RequiresPermission("android.permission.WIFI_UPDATE_USABILITY_STATS_SCORE") public void updateWifiUsabilityScore(int, int, int);
+ method @RequiresPermission(android.Manifest.permission.WIFI_UPDATE_USABILITY_STATS_SCORE) public void updateWifiUsabilityScore(int, int, int);
field public static final String ACTION_LINK_CONFIGURATION_CHANGED = "android.net.wifi.LINK_CONFIGURATION_CHANGED";
+ field @RequiresPermission(android.Manifest.permission.NETWORK_CARRIER_PROVISIONING) public static final String ACTION_NETWORK_SETTINGS_RESET = "android.net.wifi.action.NETWORK_SETTINGS_RESET";
field public static final String ACTION_PASSPOINT_LAUNCH_OSU_VIEW = "android.net.wifi.action.PASSPOINT_LAUNCH_OSU_VIEW";
field public static final String ACTION_REQUEST_DISABLE = "android.net.wifi.action.REQUEST_DISABLE";
field public static final String ACTION_REQUEST_ENABLE = "android.net.wifi.action.REQUEST_ENABLE";
@@ -5028,6 +5645,7 @@
method @NonNull @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public java.util.List<java.lang.Integer> getAvailableChannels(int);
method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public boolean getScanResults();
method @NonNull @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public java.util.List<android.net.wifi.ScanResult> getSingleScanResults();
+ method @RequiresPermission(android.Manifest.permission.NETWORK_STACK) public void registerScanListener(@NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.WifiScanner.ScanListener);
method @RequiresPermission(android.Manifest.permission.NETWORK_STACK) public void setScanningEnabled(boolean);
method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void startBackgroundScan(android.net.wifi.WifiScanner.ScanSettings, android.net.wifi.WifiScanner.ScanListener);
method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void startBackgroundScan(android.net.wifi.WifiScanner.ScanSettings, android.net.wifi.WifiScanner.ScanListener, android.os.WorkSource);
@@ -5039,6 +5657,7 @@
method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void stopScan(android.net.wifi.WifiScanner.ScanListener);
method @Deprecated public void stopTrackingBssids(android.net.wifi.WifiScanner.BssidListener);
method @Deprecated public void stopTrackingWifiChange(android.net.wifi.WifiScanner.WifiChangeListener);
+ method public void unregisterScanListener(@NonNull android.net.wifi.WifiScanner.ScanListener);
field public static final int MAX_SCAN_PERIOD_MS = 1024000; // 0xfa000
field public static final int MIN_SCAN_PERIOD_MS = 1000; // 0x3e8
field public static final int REASON_DUPLICATE_REQEUST = -5; // 0xfffffffb
@@ -5051,10 +5670,16 @@
field public static final int REPORT_EVENT_AFTER_EACH_SCAN = 1; // 0x1
field public static final int REPORT_EVENT_FULL_SCAN_RESULT = 2; // 0x2
field public static final int REPORT_EVENT_NO_BATCH = 4; // 0x4
+ field public static final int SCAN_TYPE_HIGH_ACCURACY = 2; // 0x2
+ field public static final int SCAN_TYPE_LOW_LATENCY = 0; // 0x0
+ field public static final int SCAN_TYPE_LOW_POWER = 1; // 0x1
+ field public static final int WIFI_BAND_24_5_6_GHZ = 11; // 0xb
+ field public static final int WIFI_BAND_24_5_WITH_DFS_6_GHZ = 15; // 0xf
field public static final int WIFI_BAND_24_GHZ = 1; // 0x1
field public static final int WIFI_BAND_5_GHZ = 2; // 0x2
field public static final int WIFI_BAND_5_GHZ_DFS_ONLY = 4; // 0x4
field public static final int WIFI_BAND_5_GHZ_WITH_DFS = 6; // 0x6
+ field public static final int WIFI_BAND_6_GHZ = 8; // 0x8
field public static final int WIFI_BAND_BOTH = 3; // 0x3
field public static final int WIFI_BAND_BOTH_WITH_DFS = 7; // 0x7
field public static final int WIFI_BAND_UNSPECIFIED = 0; // 0x0
@@ -5119,6 +5744,7 @@
ctor public WifiScanner.ScanSettings();
field public int band;
field public android.net.wifi.WifiScanner.ChannelSpec[] channels;
+ field @NonNull @RequiresPermission(android.Manifest.permission.NETWORK_STACK) public final java.util.List<android.net.wifi.WifiScanner.ScanSettings.HiddenNetwork> hiddenNetworks;
field public boolean hideFromAppOps;
field public boolean ignoreLocationSettings;
field public int maxPeriodInMs;
@@ -5127,6 +5753,12 @@
field public int periodInMs;
field public int reportEvents;
field public int stepCount;
+ field @RequiresPermission(android.Manifest.permission.NETWORK_STACK) public int type;
+ }
+
+ public static class WifiScanner.ScanSettings.HiddenNetwork {
+ ctor public WifiScanner.ScanSettings.HiddenNetwork(@NonNull String);
+ field @NonNull public final String ssid;
}
@Deprecated public static interface WifiScanner.WifiChangeListener extends android.net.wifi.WifiScanner.ActionListener {
@@ -5441,6 +6073,7 @@
public final class BugreportManager {
method @RequiresPermission(android.Manifest.permission.DUMP) public void cancelBugreport();
+ method @RequiresPermission(android.Manifest.permission.DUMP) public void requestBugreport(@NonNull android.os.BugreportParams, @Nullable CharSequence, @Nullable CharSequence);
method @RequiresPermission(android.Manifest.permission.DUMP) public void startBugreport(@NonNull android.os.ParcelFileDescriptor, @Nullable android.os.ParcelFileDescriptor, @NonNull android.os.BugreportParams, @NonNull java.util.concurrent.Executor, @NonNull android.os.BugreportManager.BugreportCallback);
}
@@ -5734,6 +6367,11 @@
}
public class PowerWhitelistManager {
+ method @RequiresPermission(android.Manifest.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST) public void whitelistAppTemporarily(@NonNull String, long);
+ method @RequiresPermission(android.Manifest.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST) public long whitelistAppTemporarilyForEvent(@NonNull String, int, @NonNull String);
+ field public static final int EVENT_MMS = 2; // 0x2
+ field public static final int EVENT_SMS = 1; // 0x1
+ field public static final int EVENT_UNSPECIFIED = 0; // 0x0
}
public class RecoverySystem {
@@ -5862,6 +6500,7 @@
}
public final class UserHandle implements android.os.Parcelable {
+ method @NonNull public static String formatUid(int);
method public static int getAppId(int);
method public int getIdentifier();
method @Deprecated public boolean isOwner();
@@ -5880,6 +6519,7 @@
method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public android.os.PersistableBundle getSeedAccountOptions();
method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public String getSeedAccountType();
method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public long[] getSerialNumbersOfUsers(boolean);
+ method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public java.util.List<android.os.UserHandle> getUserHandles(boolean);
method @Nullable @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.GET_ACCOUNTS_PRIVILEGED}) public android.graphics.Bitmap getUserIcon();
method @Deprecated @android.os.UserManager.UserRestrictionSource @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public int getUserRestrictionSource(String, android.os.UserHandle);
method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public java.util.List<android.os.UserManager.EnforcingUser> getUserRestrictionSources(String, android.os.UserHandle);
@@ -6414,6 +7054,7 @@
field public static final String ACTION_ACCESSIBILITY_DETAILS_SETTINGS = "android.settings.ACCESSIBILITY_DETAILS_SETTINGS";
field public static final String ACTION_ENTERPRISE_PRIVACY_SETTINGS = "android.settings.ENTERPRISE_PRIVACY_SETTINGS";
field public static final String ACTION_LOCATION_CONTROLLER_EXTRA_PACKAGE_SETTINGS = "android.settings.LOCATION_CONTROLLER_EXTRA_PACKAGE_SETTINGS";
+ field public static final String ACTION_MANAGE_APP_OVERLAY_PERMISSION = "android.settings.MANAGE_APP_OVERLAY_PERMISSION";
field public static final String ACTION_MANAGE_DOMAIN_URLS = "android.settings.MANAGE_DOMAIN_URLS";
field public static final String ACTION_MANAGE_MORE_DEFAULT_APPS_SETTINGS = "android.settings.MANAGE_MORE_DEFAULT_APPS_SETTINGS";
field public static final String ACTION_NOTIFICATION_POLICY_ACCESS_DETAIL_SETTINGS = "android.settings.NOTIFICATION_POLICY_ACCESS_DETAIL_SETTINGS";
@@ -6445,7 +7086,7 @@
public static final class Settings.Secure extends android.provider.Settings.NameValueTable {
method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public static boolean putString(@NonNull android.content.ContentResolver, @NonNull String, @Nullable String, @Nullable String, boolean);
method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public static void resetToDefaults(@NonNull android.content.ContentResolver, @Nullable String);
- field public static final String ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED = "accessibility_display_magnification_navbar_enabled";
+ field @Deprecated public static final String ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED = "accessibility_display_magnification_navbar_enabled";
field public static final String ASSIST_GESTURE_SETUP_COMPLETE = "assist_gesture_setup_complete";
field public static final String AUTOFILL_FEATURE_FIELD_CLASSIFICATION = "autofill_field_classification";
field public static final String AUTOFILL_USER_DATA_MAX_CATEGORY_COUNT = "autofill_user_data_max_category_count";
@@ -6465,6 +7106,7 @@
field public static final String LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS = "lock_screen_allow_private_notifications";
field public static final String LOCK_SCREEN_SHOW_NOTIFICATIONS = "lock_screen_show_notifications";
field public static final String ODI_CAPTIONS_ENABLED = "odi_captions_enabled";
+ field public static final String SECURE_FRP_MODE = "secure_frp_mode";
field public static final String THEME_CUSTOMIZATION_OVERLAY_PACKAGES = "theme_customization_overlay_packages";
field public static final String USER_SETUP_COMPLETE = "user_setup_complete";
field public static final int USER_SETUP_PERSONALIZATION_COMPLETE = 10; // 0xa
@@ -7413,7 +8055,7 @@
}
public static class CallScreeningService.CallResponse.Builder {
- method public android.telecom.CallScreeningService.CallResponse.Builder setShouldScreenCallFurther(boolean);
+ method @NonNull public android.telecom.CallScreeningService.CallResponse.Builder setShouldScreenCallViaAudioProcessing(boolean);
}
public abstract class Conference extends android.telecom.Conferenceable {
@@ -7451,6 +8093,10 @@
field public static final int PROPERTY_REMOTELY_HOSTED = 2048; // 0x800
}
+ public final class ConnectionRequest implements android.os.Parcelable {
+ method @Nullable public String getTelecomCallId();
+ }
+
public abstract class ConnectionService extends android.app.Service {
method public final void addExistingConnection(@NonNull android.telecom.PhoneAccountHandle, @NonNull android.telecom.Connection, @NonNull android.telecom.Conference);
}
@@ -7658,6 +8304,7 @@
method public java.util.List<android.telecom.PhoneAccountHandle> getAllPhoneAccountHandles();
method public java.util.List<android.telecom.PhoneAccount> getAllPhoneAccounts();
method public int getAllPhoneAccountsCount();
+ method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public java.util.List<android.telecom.PhoneAccountHandle> getCallCapablePhoneAccounts(boolean);
method public int getCallState();
method public android.telecom.PhoneAccountHandle getConnectionManager();
method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getCurrentTtyMode();
@@ -7778,6 +8425,10 @@
field public final double lng;
}
+ public class CellBroadcastIntents {
+ method public static void sendOrderedBroadcastForBackgroundReceivers(@NonNull android.content.Context, @Nullable android.os.UserHandle, @NonNull android.content.Intent, @Nullable String, @Nullable String, @Nullable android.content.BroadcastReceiver, @Nullable android.os.Handler, int, @Nullable String, @Nullable android.os.Bundle);
+ }
+
public abstract class CellBroadcastService extends android.app.Service {
ctor public CellBroadcastService();
method @CallSuper public android.os.IBinder onBind(@Nullable android.content.Intent);
@@ -8249,7 +8900,7 @@
}
public final class ModemActivityInfo implements android.os.Parcelable {
- ctor public ModemActivityInfo(long, int, int, @NonNull int[], int);
+ ctor public ModemActivityInfo(long, int, int, @Nullable int[], int);
method public int describeContents();
method public int getIdleTimeMillis();
method public int getReceiveTimeMillis();
@@ -8616,6 +9267,7 @@
method @NonNull public android.content.ContentValues getContentValues();
method @Nullable public android.telephony.SmsCbEtwsInfo getEtwsWarningInfo();
method public int getGeographicalScope();
+ method @NonNull public java.util.List<android.telephony.CbGeoUtils.Geometry> getGeometries();
method @Nullable public String getLanguageCode();
method @NonNull public android.telephony.SmsCbLocation getLocation();
method public int getMaximumWaitingDuration();
@@ -8660,6 +9312,7 @@
}
public class SubscriptionManager {
+ method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean canDisablePhysicalSubscription();
method public java.util.List<android.telephony.SubscriptionInfo> getAvailableSubscriptionInfoList();
method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getEnabledSubscriptionId(int);
method @NonNull public static android.content.res.Resources getResourcesForSubId(@NonNull android.content.Context, int);
@@ -8746,6 +9399,7 @@
method @NonNull public static String getDefaultSimCountryIso();
method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String getDeviceSoftwareVersion(int);
method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean getEmergencyCallbackMode();
+ method public int getEmergencyNumberDbVersion();
method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String getIsimDomain();
method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String getIsimIst();
method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public java.util.Map<java.lang.Integer,java.lang.Integer> getLogicalToPhysicalSlotMapping();
@@ -8775,6 +9429,7 @@
method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isDataEnabledForApn(int);
method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isEmergencyAssistanceEnabled();
method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isIdle();
+ method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isInEmergencySmsMode();
method public boolean isModemEnabledForSlot(int);
method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isOffhook();
method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isOpportunisticNetworkEnabled();
@@ -8785,6 +9440,7 @@
method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isVideoCallingEnabled();
method @Deprecated @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public boolean isVisualVoicemailEnabled(android.telecom.PhoneAccountHandle);
method public boolean needsOtaServiceProvisioning();
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void notifyOtaEmergencyNumberDbInstalled();
method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean rebootRadio();
method @RequiresPermission(allOf={android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.MODIFY_PHONE_STATE}) public void requestCellInfoUpdate(@NonNull android.os.WorkSource, @NonNull java.util.concurrent.Executor, @NonNull android.telephony.TelephonyManager.CellInfoCallback);
method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void requestNumberVerification(@NonNull android.telephony.PhoneNumberRange, long, @NonNull java.util.concurrent.Executor, @NonNull android.telephony.NumberVerificationCallback);
@@ -8813,8 +9469,8 @@
method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean switchSlots(int[]);
method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void toggleRadioOnOff();
method public void updateServiceLocation();
+ method @RequiresPermission(android.Manifest.permission.READ_ACTIVE_EMERGENCY_SESSION) public void updateTestOtaEmergencyNumberDbFilePath(@NonNull String);
field @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public static final String ACTION_ANOMALY_REPORTED = "android.telephony.action.ANOMALY_REPORTED";
- field @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public static final String ACTION_OTA_EMERGENCY_NUMBER_DB_INSTALLED = "android.telephony.action.OTA_EMERGENCY_NUMBER_DB_INSTALLED";
field public static final String ACTION_SIM_APPLICATION_STATE_CHANGED = "android.telephony.action.SIM_APPLICATION_STATE_CHANGED";
field public static final String ACTION_SIM_CARD_STATE_CHANGED = "android.telephony.action.SIM_CARD_STATE_CHANGED";
field public static final String ACTION_SIM_SLOT_STATUS_CHANGED = "android.telephony.action.SIM_SLOT_STATUS_CHANGED";
@@ -8827,6 +9483,7 @@
field public static final String EXTRA_SIM_STATE = "android.telephony.extra.SIM_STATE";
field public static final String EXTRA_VISUAL_VOICEMAIL_ENABLED_BY_USER_BOOL = "android.telephony.extra.VISUAL_VOICEMAIL_ENABLED_BY_USER_BOOL";
field public static final String EXTRA_VOICEMAIL_SCRAMBLED_PIN_STRING = "android.telephony.extra.VOICEMAIL_SCRAMBLED_PIN_STRING";
+ field public static final int INVALID_EMERGENCY_NUMBER_DB_VERSION = -1; // 0xffffffff
field public static final int KEY_TYPE_EPDG = 1; // 0x1
field public static final int KEY_TYPE_WLAN = 2; // 0x2
field public static final long NETWORK_TYPE_BITMASK_1xRTT = 64L; // 0x40L
@@ -9452,186 +10109,6 @@
}
public final class ImsReasonInfo implements android.os.Parcelable {
- ctor public ImsReasonInfo(int, int, String);
- method public int describeContents();
- method public int getCode();
- method public int getExtraCode();
- method public String getExtraMessage();
- method public void writeToParcel(android.os.Parcel, int);
- field public static final int CODE_ACCESS_CLASS_BLOCKED = 1512; // 0x5e8
- field public static final int CODE_ANSWERED_ELSEWHERE = 1014; // 0x3f6
- field public static final int CODE_BLACKLISTED_CALL_ID = 506; // 0x1fa
- field public static final int CODE_CALL_BARRED = 240; // 0xf0
- field public static final int CODE_CALL_DROP_IWLAN_TO_LTE_UNAVAILABLE = 1100; // 0x44c
- field public static final int CODE_CALL_END_CAUSE_CALL_PULL = 1016; // 0x3f8
- field public static final int CODE_CALL_PULL_OUT_OF_SYNC = 1015; // 0x3f7
- field public static final int CODE_DATA_DISABLED = 1406; // 0x57e
- field public static final int CODE_DATA_LIMIT_REACHED = 1405; // 0x57d
- field public static final int CODE_DIAL_MODIFIED_TO_DIAL = 246; // 0xf6
- field public static final int CODE_DIAL_MODIFIED_TO_DIAL_VIDEO = 247; // 0xf7
- field public static final int CODE_DIAL_MODIFIED_TO_SS = 245; // 0xf5
- field public static final int CODE_DIAL_MODIFIED_TO_USSD = 244; // 0xf4
- field public static final int CODE_DIAL_VIDEO_MODIFIED_TO_DIAL = 248; // 0xf8
- field public static final int CODE_DIAL_VIDEO_MODIFIED_TO_DIAL_VIDEO = 249; // 0xf9
- field public static final int CODE_DIAL_VIDEO_MODIFIED_TO_SS = 250; // 0xfa
- field public static final int CODE_DIAL_VIDEO_MODIFIED_TO_USSD = 251; // 0xfb
- field public static final int CODE_ECBM_NOT_SUPPORTED = 901; // 0x385
- field public static final int CODE_EMERGENCY_PERM_FAILURE = 364; // 0x16c
- field public static final int CODE_EMERGENCY_TEMP_FAILURE = 363; // 0x16b
- field public static final int CODE_EPDG_TUNNEL_ESTABLISH_FAILURE = 1400; // 0x578
- field public static final int CODE_EPDG_TUNNEL_LOST_CONNECTION = 1402; // 0x57a
- field public static final int CODE_EPDG_TUNNEL_REKEY_FAILURE = 1401; // 0x579
- field public static final int CODE_FDN_BLOCKED = 241; // 0xf1
- field public static final int CODE_IKEV2_AUTH_FAILURE = 1408; // 0x580
- field public static final int CODE_IMEI_NOT_ACCEPTED = 243; // 0xf3
- field public static final int CODE_IWLAN_DPD_FAILURE = 1300; // 0x514
- field public static final int CODE_LOCAL_CALL_BUSY = 142; // 0x8e
- field public static final int CODE_LOCAL_CALL_CS_RETRY_REQUIRED = 146; // 0x92
- field public static final int CODE_LOCAL_CALL_DECLINE = 143; // 0x8f
- field public static final int CODE_LOCAL_CALL_EXCEEDED = 141; // 0x8d
- field public static final int CODE_LOCAL_CALL_RESOURCE_RESERVATION_FAILED = 145; // 0x91
- field public static final int CODE_LOCAL_CALL_TERMINATED = 148; // 0x94
- field public static final int CODE_LOCAL_CALL_VCC_ON_PROGRESSING = 144; // 0x90
- field public static final int CODE_LOCAL_CALL_VOLTE_RETRY_REQUIRED = 147; // 0x93
- field public static final int CODE_LOCAL_ENDED_BY_CONFERENCE_MERGE = 108; // 0x6c
- field public static final int CODE_LOCAL_HO_NOT_FEASIBLE = 149; // 0x95
- field public static final int CODE_LOCAL_ILLEGAL_ARGUMENT = 101; // 0x65
- field public static final int CODE_LOCAL_ILLEGAL_STATE = 102; // 0x66
- field public static final int CODE_LOCAL_IMS_SERVICE_DOWN = 106; // 0x6a
- field public static final int CODE_LOCAL_INTERNAL_ERROR = 103; // 0x67
- field public static final int CODE_LOCAL_LOW_BATTERY = 112; // 0x70
- field public static final int CODE_LOCAL_NETWORK_IP_CHANGED = 124; // 0x7c
- field public static final int CODE_LOCAL_NETWORK_NO_LTE_COVERAGE = 122; // 0x7a
- field public static final int CODE_LOCAL_NETWORK_NO_SERVICE = 121; // 0x79
- field public static final int CODE_LOCAL_NETWORK_ROAMING = 123; // 0x7b
- field public static final int CODE_LOCAL_NOT_REGISTERED = 132; // 0x84
- field public static final int CODE_LOCAL_NO_PENDING_CALL = 107; // 0x6b
- field public static final int CODE_LOCAL_POWER_OFF = 111; // 0x6f
- field public static final int CODE_LOCAL_SERVICE_UNAVAILABLE = 131; // 0x83
- field public static final int CODE_LOW_BATTERY = 505; // 0x1f9
- field public static final int CODE_MAXIMUM_NUMBER_OF_CALLS_REACHED = 1403; // 0x57b
- field public static final int CODE_MEDIA_INIT_FAILED = 401; // 0x191
- field public static final int CODE_MEDIA_NOT_ACCEPTABLE = 403; // 0x193
- field public static final int CODE_MEDIA_NO_DATA = 402; // 0x192
- field public static final int CODE_MEDIA_UNSPECIFIED = 404; // 0x194
- field public static final int CODE_MULTIENDPOINT_NOT_SUPPORTED = 902; // 0x386
- field public static final int CODE_NETWORK_DETACH = 1513; // 0x5e9
- field public static final int CODE_NETWORK_REJECT = 1504; // 0x5e0
- field public static final int CODE_NETWORK_RESP_TIMEOUT = 1503; // 0x5df
- field public static final int CODE_NO_CSFB_IN_CS_ROAM = 1516; // 0x5ec
- field public static final int CODE_NO_VALID_SIM = 1501; // 0x5dd
- field public static final int CODE_OEM_CAUSE_1 = 61441; // 0xf001
- field public static final int CODE_OEM_CAUSE_10 = 61450; // 0xf00a
- field public static final int CODE_OEM_CAUSE_11 = 61451; // 0xf00b
- field public static final int CODE_OEM_CAUSE_12 = 61452; // 0xf00c
- field public static final int CODE_OEM_CAUSE_13 = 61453; // 0xf00d
- field public static final int CODE_OEM_CAUSE_14 = 61454; // 0xf00e
- field public static final int CODE_OEM_CAUSE_15 = 61455; // 0xf00f
- field public static final int CODE_OEM_CAUSE_2 = 61442; // 0xf002
- field public static final int CODE_OEM_CAUSE_3 = 61443; // 0xf003
- field public static final int CODE_OEM_CAUSE_4 = 61444; // 0xf004
- field public static final int CODE_OEM_CAUSE_5 = 61445; // 0xf005
- field public static final int CODE_OEM_CAUSE_6 = 61446; // 0xf006
- field public static final int CODE_OEM_CAUSE_7 = 61447; // 0xf007
- field public static final int CODE_OEM_CAUSE_8 = 61448; // 0xf008
- field public static final int CODE_OEM_CAUSE_9 = 61449; // 0xf009
- field public static final int CODE_RADIO_ACCESS_FAILURE = 1505; // 0x5e1
- field public static final int CODE_RADIO_INTERNAL_ERROR = 1502; // 0x5de
- field public static final int CODE_RADIO_LINK_FAILURE = 1506; // 0x5e2
- field public static final int CODE_RADIO_LINK_LOST = 1507; // 0x5e3
- field public static final int CODE_RADIO_OFF = 1500; // 0x5dc
- field public static final int CODE_RADIO_RELEASE_ABNORMAL = 1511; // 0x5e7
- field public static final int CODE_RADIO_RELEASE_NORMAL = 1510; // 0x5e6
- field public static final int CODE_RADIO_SETUP_FAILURE = 1509; // 0x5e5
- field public static final int CODE_RADIO_UPLINK_FAILURE = 1508; // 0x5e4
- field public static final int CODE_REGISTRATION_ERROR = 1000; // 0x3e8
- field public static final int CODE_REJECTED_ELSEWHERE = 1017; // 0x3f9
- field public static final int CODE_REJECT_1X_COLLISION = 1603; // 0x643
- field public static final int CODE_REJECT_CALL_ON_OTHER_SUB = 1602; // 0x642
- field public static final int CODE_REJECT_CALL_TYPE_NOT_ALLOWED = 1605; // 0x645
- field public static final int CODE_REJECT_CONFERENCE_TTY_NOT_ALLOWED = 1617; // 0x651
- field public static final int CODE_REJECT_INTERNAL_ERROR = 1612; // 0x64c
- field public static final int CODE_REJECT_MAX_CALL_LIMIT_REACHED = 1608; // 0x648
- field public static final int CODE_REJECT_ONGOING_CALL_SETUP = 1607; // 0x647
- field public static final int CODE_REJECT_ONGOING_CALL_TRANSFER = 1611; // 0x64b
- field public static final int CODE_REJECT_ONGOING_CALL_UPGRADE = 1616; // 0x650
- field public static final int CODE_REJECT_ONGOING_CALL_WAITING_DISABLED = 1601; // 0x641
- field public static final int CODE_REJECT_ONGOING_CONFERENCE_CALL = 1618; // 0x652
- field public static final int CODE_REJECT_ONGOING_CS_CALL = 1621; // 0x655
- field public static final int CODE_REJECT_ONGOING_E911_CALL = 1606; // 0x646
- field public static final int CODE_REJECT_ONGOING_ENCRYPTED_CALL = 1620; // 0x654
- field public static final int CODE_REJECT_ONGOING_HANDOVER = 1614; // 0x64e
- field public static final int CODE_REJECT_QOS_FAILURE = 1613; // 0x64d
- field public static final int CODE_REJECT_SERVICE_NOT_REGISTERED = 1604; // 0x644
- field public static final int CODE_REJECT_UNKNOWN = 1600; // 0x640
- field public static final int CODE_REJECT_UNSUPPORTED_SDP_HEADERS = 1610; // 0x64a
- field public static final int CODE_REJECT_UNSUPPORTED_SIP_HEADERS = 1609; // 0x649
- field public static final int CODE_REJECT_VT_AVPF_NOT_ALLOWED = 1619; // 0x653
- field public static final int CODE_REJECT_VT_TTY_NOT_ALLOWED = 1615; // 0x64f
- field public static final int CODE_REMOTE_CALL_DECLINE = 1404; // 0x57c
- field public static final int CODE_SESSION_MODIFICATION_FAILED = 1517; // 0x5ed
- field public static final int CODE_SIP_ALTERNATE_EMERGENCY_CALL = 1514; // 0x5ea
- field public static final int CODE_SIP_AMBIGUOUS = 376; // 0x178
- field public static final int CODE_SIP_BAD_ADDRESS = 337; // 0x151
- field public static final int CODE_SIP_BAD_REQUEST = 331; // 0x14b
- field public static final int CODE_SIP_BUSY = 338; // 0x152
- field public static final int CODE_SIP_CALL_OR_TRANS_DOES_NOT_EXIST = 372; // 0x174
- field public static final int CODE_SIP_CLIENT_ERROR = 342; // 0x156
- field public static final int CODE_SIP_EXTENSION_REQUIRED = 370; // 0x172
- field public static final int CODE_SIP_FORBIDDEN = 332; // 0x14c
- field public static final int CODE_SIP_GLOBAL_ERROR = 362; // 0x16a
- field public static final int CODE_SIP_INTERVAL_TOO_BRIEF = 371; // 0x173
- field public static final int CODE_SIP_LOOP_DETECTED = 373; // 0x175
- field public static final int CODE_SIP_METHOD_NOT_ALLOWED = 366; // 0x16e
- field public static final int CODE_SIP_NOT_ACCEPTABLE = 340; // 0x154
- field public static final int CODE_SIP_NOT_FOUND = 333; // 0x14d
- field public static final int CODE_SIP_NOT_REACHABLE = 341; // 0x155
- field public static final int CODE_SIP_NOT_SUPPORTED = 334; // 0x14e
- field public static final int CODE_SIP_PROXY_AUTHENTICATION_REQUIRED = 367; // 0x16f
- field public static final int CODE_SIP_REDIRECTED = 321; // 0x141
- field public static final int CODE_SIP_REQUEST_CANCELLED = 339; // 0x153
- field public static final int CODE_SIP_REQUEST_ENTITY_TOO_LARGE = 368; // 0x170
- field public static final int CODE_SIP_REQUEST_PENDING = 377; // 0x179
- field public static final int CODE_SIP_REQUEST_TIMEOUT = 335; // 0x14f
- field public static final int CODE_SIP_REQUEST_URI_TOO_LARGE = 369; // 0x171
- field public static final int CODE_SIP_SERVER_ERROR = 354; // 0x162
- field public static final int CODE_SIP_SERVER_INTERNAL_ERROR = 351; // 0x15f
- field public static final int CODE_SIP_SERVER_TIMEOUT = 353; // 0x161
- field public static final int CODE_SIP_SERVICE_UNAVAILABLE = 352; // 0x160
- field public static final int CODE_SIP_TEMPRARILY_UNAVAILABLE = 336; // 0x150
- field public static final int CODE_SIP_TOO_MANY_HOPS = 374; // 0x176
- field public static final int CODE_SIP_TRANSACTION_DOES_NOT_EXIST = 343; // 0x157
- field public static final int CODE_SIP_UNDECIPHERABLE = 378; // 0x17a
- field public static final int CODE_SIP_USER_MARKED_UNWANTED = 365; // 0x16d
- field public static final int CODE_SIP_USER_REJECTED = 361; // 0x169
- field public static final int CODE_SUPP_SVC_CANCELLED = 1202; // 0x4b2
- field public static final int CODE_SUPP_SVC_FAILED = 1201; // 0x4b1
- field public static final int CODE_SUPP_SVC_REINVITE_COLLISION = 1203; // 0x4b3
- field public static final int CODE_TIMEOUT_1XX_WAITING = 201; // 0xc9
- field public static final int CODE_TIMEOUT_NO_ANSWER = 202; // 0xca
- field public static final int CODE_TIMEOUT_NO_ANSWER_CALL_UPDATE = 203; // 0xcb
- field public static final int CODE_UNSPECIFIED = 0; // 0x0
- field public static final int CODE_USER_CANCELLED_SESSION_MODIFICATION = 512; // 0x200
- field public static final int CODE_USER_DECLINE = 504; // 0x1f8
- field public static final int CODE_USER_IGNORE = 503; // 0x1f7
- field public static final int CODE_USER_NOANSWER = 502; // 0x1f6
- field public static final int CODE_USER_REJECTED_SESSION_MODIFICATION = 511; // 0x1ff
- field public static final int CODE_USER_TERMINATED = 501; // 0x1f5
- field public static final int CODE_USER_TERMINATED_BY_REMOTE = 510; // 0x1fe
- field public static final int CODE_UT_CB_PASSWORD_MISMATCH = 821; // 0x335
- field public static final int CODE_UT_NETWORK_ERROR = 804; // 0x324
- field public static final int CODE_UT_NOT_SUPPORTED = 801; // 0x321
- field public static final int CODE_UT_OPERATION_NOT_ALLOWED = 803; // 0x323
- field public static final int CODE_UT_SERVICE_UNAVAILABLE = 802; // 0x322
- field public static final int CODE_UT_SS_MODIFIED_TO_DIAL = 822; // 0x336
- field public static final int CODE_UT_SS_MODIFIED_TO_DIAL_VIDEO = 825; // 0x339
- field public static final int CODE_UT_SS_MODIFIED_TO_SS = 824; // 0x338
- field public static final int CODE_UT_SS_MODIFIED_TO_USSD = 823; // 0x337
- field public static final int CODE_WIFI_LOST = 1407; // 0x57f
- field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.ImsReasonInfo> CREATOR;
- field public static final int EXTRA_CODE_CALL_RETRY_BY_SETTINGS = 3; // 0x3
- field public static final int EXTRA_CODE_CALL_RETRY_NORMAL = 1; // 0x1
- field public static final int EXTRA_CODE_CALL_RETRY_SILENT_REDIAL = 2; // 0x2
field public static final String EXTRA_MSG_SERVICE_NOT_AUTHORIZED = "Forbidden. Not Authorized for Service";
}
diff --git a/api/system-lint-baseline.txt b/api/system-lint-baseline.txt
index 7eb5443..fcf5178 100644
--- a/api/system-lint-baseline.txt
+++ b/api/system-lint-baseline.txt
@@ -65,7 +65,7 @@
MissingNullability: android.media.tv.TvRecordingClient.RecordingCallback#onEvent(String, String, android.os.Bundle) parameter #1:
MissingNullability: android.media.tv.TvRecordingClient.RecordingCallback#onEvent(String, String, android.os.Bundle) parameter #2:
-
+
MissingNullability: android.net.wifi.rtt.RangingRequest.Builder#addResponder(android.net.wifi.rtt.ResponderConfig):
MissingNullability: android.printservice.recommendation.RecommendationService#attachBaseContext(android.content.Context) parameter #0:
@@ -152,10 +152,37 @@
+
+MutableBareField: android.net.IpConfiguration#httpProxy:
+ Bare field httpProxy must be marked final, or moved behind accessors if mutable
+MutableBareField: android.net.IpConfiguration#ipAssignment:
+ Bare field ipAssignment must be marked final, or moved behind accessors if mutable
+MutableBareField: android.net.IpConfiguration#proxySettings:
+ Bare field proxySettings must be marked final, or moved behind accessors if mutable
+MutableBareField: android.net.IpConfiguration#staticIpConfiguration:
+ Bare field staticIpConfiguration must be marked final, or moved behind accessors if mutable
MutableBareField: android.net.wifi.WifiConfiguration#allowAutojoin:
+MutableBareField: android.net.wifi.WifiConfiguration#apBand:
+ Bare field apBand must be marked final, or moved behind accessors if mutable
MutableBareField: android.net.wifi.WifiConfiguration#carrierId:
+MutableBareField: android.net.wifi.WifiConfiguration#fromWifiNetworkSpecifier:
+ Bare field fromWifiNetworkSpecifier must be marked final, or moved behind accessors if mutable
+MutableBareField: android.net.wifi.WifiConfiguration#fromWifiNetworkSuggestion:
+ Bare field fromWifiNetworkSuggestion must be marked final, or moved behind accessors if mutable
+MutableBareField: android.net.wifi.WifiConfiguration#macRandomizationSetting:
+ Bare field macRandomizationSetting must be marked final, or moved behind accessors if mutable
+MutableBareField: android.net.wifi.WifiConfiguration#meteredOverride:
+ Bare field meteredOverride must be marked final, or moved behind accessors if mutable
+MutableBareField: android.net.wifi.WifiConfiguration#requirePMF:
+ Bare field requirePMF must be marked final, or moved behind accessors if mutable
+MutableBareField: android.net.wifi.WifiConfiguration#saePasswordId:
+ Bare field saePasswordId must be marked final, or moved behind accessors if mutable
+MutableBareField: android.net.wifi.WifiConfiguration#shared:
+ Bare field shared must be marked final, or moved behind accessors if mutable
+MutableBareField: android.net.wifi.WifiScanner.ScanSettings#type:
+ Bare field type must be marked final, or moved behind accessors if mutable
NoClone: android.service.contentcapture.ContentCaptureService#dump(java.io.FileDescriptor, java.io.PrintWriter, String[]) parameter #0:
diff --git a/api/test-current.txt b/api/test-current.txt
index c4bd5b2..3ddbbf8 100644
--- a/api/test-current.txt
+++ b/api/test-current.txt
@@ -578,6 +578,7 @@
field public static final int ACTION_DISMISS = 2; // 0x2
field public static final int ACTION_LAUNCH = 1; // 0x1
field public static final int ACTION_PIN = 3; // 0x3
+ field public static final int ACTION_UNPIN = 4; // 0x4
field @NonNull public static final android.os.Parcelable.Creator<android.app.prediction.AppTargetEvent> CREATOR;
}
@@ -812,7 +813,6 @@
field public static final int PROTECTION_FLAG_TELEPHONY = 4194304; // 0x400000
field public static final int PROTECTION_FLAG_VENDOR_PRIVILEGED = 32768; // 0x8000
field public static final int PROTECTION_FLAG_WELLBEING = 131072; // 0x20000
- field public static final int PROTECTION_FLAG_WIFI = 8388608; // 0x800000
field @Nullable public final String backgroundPermission;
}
@@ -1087,6 +1087,7 @@
ctor public GnssMeasurement();
method public void reset();
method public void resetAutomaticGainControlLevel();
+ method public void resetBasebandCn0DbHz();
method @Deprecated public void resetCarrierCycles();
method public void resetCarrierFrequencyHz();
method @Deprecated public void resetCarrierPhase();
@@ -1098,6 +1099,7 @@
method public void setAccumulatedDeltaRangeState(int);
method public void setAccumulatedDeltaRangeUncertaintyMeters(double);
method public void setAutomaticGainControlLevelInDb(double);
+ method public void setBasebandCn0DbHz(double);
method @Deprecated public void setCarrierCycles(long);
method public void setCarrierFrequencyHz(float);
method @Deprecated public void setCarrierPhase(double);
@@ -1467,7 +1469,6 @@
ctor public LinkProperties(@Nullable android.net.LinkProperties);
method public boolean addDnsServer(@NonNull java.net.InetAddress);
method public boolean addLinkAddress(@NonNull android.net.LinkAddress);
- method @Nullable public android.net.IpPrefix getNat64Prefix();
method @NonNull public java.util.List<java.net.InetAddress> getPcscfServers();
method @Nullable public String getTcpBufferSizes();
method @NonNull public java.util.List<java.net.InetAddress> getValidatedPrivateDnsServers();
@@ -1481,7 +1482,6 @@
method public boolean removeDnsServer(@NonNull java.net.InetAddress);
method public boolean removeLinkAddress(@NonNull android.net.LinkAddress);
method public boolean removeRoute(@NonNull android.net.RouteInfo);
- method public void setNat64Prefix(@Nullable android.net.IpPrefix);
method public void setPcscfServers(@NonNull java.util.Collection<java.net.InetAddress>);
method public void setPrivateDnsServerName(@Nullable String);
method public void setTcpBufferSizes(@Nullable String);
@@ -1757,6 +1757,7 @@
public final class BugreportManager {
method @RequiresPermission(android.Manifest.permission.DUMP) public void cancelBugreport();
+ method @RequiresPermission(android.Manifest.permission.DUMP) public void requestBugreport(@NonNull android.os.BugreportParams, @Nullable CharSequence, @Nullable CharSequence);
method @RequiresPermission(android.Manifest.permission.DUMP) public void startBugreport(@NonNull android.os.ParcelFileDescriptor, @Nullable android.os.ParcelFileDescriptor, @NonNull android.os.BugreportParams, @NonNull java.util.concurrent.Executor, @NonNull android.os.BugreportManager.BugreportCallback);
}
@@ -2044,6 +2045,11 @@
}
public class PowerWhitelistManager {
+ method @RequiresPermission("android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST") public void whitelistAppTemporarily(@NonNull String, long);
+ method @RequiresPermission("android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST") public long whitelistAppTemporarilyForEvent(@NonNull String, int, @NonNull String);
+ field public static final int EVENT_MMS = 2; // 0x2
+ field public static final int EVENT_SMS = 1; // 0x1
+ field public static final int EVENT_UNSPECIFIED = 0; // 0x0
}
public class Process {
@@ -2457,6 +2463,7 @@
public final class Settings {
field public static final String ACTION_ENTERPRISE_PRIVACY_SETTINGS = "android.settings.ENTERPRISE_PRIVACY_SETTINGS";
+ field public static final String ACTION_MANAGE_APP_OVERLAY_PERMISSION = "android.settings.MANAGE_APP_OVERLAY_PERMISSION";
field public static final String ACTION_REQUEST_ENABLE_CONTENT_CAPTURE = "android.settings.REQUEST_ENABLE_CONTENT_CAPTURE";
field public static final int RESET_MODE_PACKAGE_DEFAULTS = 1; // 0x1
}
@@ -2938,7 +2945,7 @@
}
public static class CallScreeningService.CallResponse.Builder {
- method public android.telecom.CallScreeningService.CallResponse.Builder setShouldScreenCallFurther(boolean);
+ method @NonNull public android.telecom.CallScreeningService.CallResponse.Builder setShouldScreenCallViaAudioProcessing(boolean);
}
public abstract class Conference extends android.telecom.Conferenceable {
@@ -2970,6 +2977,23 @@
field public static final int PROPERTY_REMOTELY_HOSTED = 2048; // 0x800
}
+ public final class ConnectionRequest implements android.os.Parcelable {
+ method @Nullable public String getTelecomCallId();
+ }
+
+ public static final class ConnectionRequest.Builder {
+ ctor public ConnectionRequest.Builder();
+ method @NonNull public android.telecom.ConnectionRequest build();
+ method @NonNull public android.telecom.ConnectionRequest.Builder setAccountHandle(@NonNull android.telecom.PhoneAccountHandle);
+ method @NonNull public android.telecom.ConnectionRequest.Builder setAddress(@NonNull android.net.Uri);
+ method @NonNull public android.telecom.ConnectionRequest.Builder setExtras(@NonNull android.os.Bundle);
+ method @NonNull public android.telecom.ConnectionRequest.Builder setRttPipeFromInCall(@NonNull android.os.ParcelFileDescriptor);
+ method @NonNull public android.telecom.ConnectionRequest.Builder setRttPipeToInCall(@NonNull android.os.ParcelFileDescriptor);
+ method @NonNull public android.telecom.ConnectionRequest.Builder setShouldShowIncomingCallUi(boolean);
+ method @NonNull public android.telecom.ConnectionRequest.Builder setTelecomCallId(@NonNull String);
+ method @NonNull public android.telecom.ConnectionRequest.Builder setVideoState(int);
+ }
+
public static class PhoneAccount.Builder {
method @NonNull public android.telecom.PhoneAccount.Builder setGroupId(@NonNull String);
}
@@ -2983,6 +3007,7 @@
}
public class TelecomManager {
+ method @NonNull @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public java.util.List<android.telecom.PhoneAccountHandle> getCallCapablePhoneAccounts(boolean);
method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public int getCurrentTtyMode();
method @Nullable @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getDefaultDialerPackage(int);
method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean isInEmergencyCall();
@@ -3157,16 +3182,19 @@
method public int getCarrierIdListVersion();
method public java.util.List<java.lang.String> getCarrierPackageNamesForIntent(android.content.Intent);
method @Nullable public static android.content.ComponentName getDefaultRespondViaMessageApplication(@NonNull android.content.Context, boolean);
+ method public int getEmergencyNumberDbVersion();
method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String getLine1AlphaTag();
method @NonNull @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getNetworkCountryIso(int);
method public android.util.Pair<java.lang.Integer,java.lang.Integer> getRadioHalVersion();
method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void refreshUiccProfile();
method @Deprecated public void setCarrierTestOverride(String, String, String, String, String, String, String);
method public void setCarrierTestOverride(String, String, String, String, String, String, String, String, String);
+ method @RequiresPermission("android.permission.READ_ACTIVE_EMERGENCY_SESSION") public void updateTestOtaEmergencyNumberDbFilePath(@NonNull String);
field public static final int CARRIER_PRIVILEGE_STATUS_ERROR_LOADING_RULES = -2; // 0xfffffffe
field public static final int CARRIER_PRIVILEGE_STATUS_HAS_ACCESS = 1; // 0x1
field public static final int CARRIER_PRIVILEGE_STATUS_NO_ACCESS = 0; // 0x0
field public static final int CARRIER_PRIVILEGE_STATUS_RULES_NOT_LOADED = -1; // 0xffffffff
+ field public static final int INVALID_EMERGENCY_NUMBER_DB_VERSION = -1; // 0xffffffff
field public static final int UNKNOWN_CARRIER_ID_LIST_VERSION = -1; // 0xffffffff
}
@@ -3427,190 +3455,6 @@
ctor @Deprecated public ImsMmTelManager.RegistrationCallback();
}
- public final class ImsReasonInfo implements android.os.Parcelable {
- ctor public ImsReasonInfo(int, int, String);
- method public int describeContents();
- method public int getCode();
- method public int getExtraCode();
- method public String getExtraMessage();
- method public void writeToParcel(android.os.Parcel, int);
- field public static final int CODE_ACCESS_CLASS_BLOCKED = 1512; // 0x5e8
- field public static final int CODE_ANSWERED_ELSEWHERE = 1014; // 0x3f6
- field public static final int CODE_BLACKLISTED_CALL_ID = 506; // 0x1fa
- field public static final int CODE_CALL_BARRED = 240; // 0xf0
- field public static final int CODE_CALL_DROP_IWLAN_TO_LTE_UNAVAILABLE = 1100; // 0x44c
- field public static final int CODE_CALL_END_CAUSE_CALL_PULL = 1016; // 0x3f8
- field public static final int CODE_CALL_PULL_OUT_OF_SYNC = 1015; // 0x3f7
- field public static final int CODE_DATA_DISABLED = 1406; // 0x57e
- field public static final int CODE_DATA_LIMIT_REACHED = 1405; // 0x57d
- field public static final int CODE_DIAL_MODIFIED_TO_DIAL = 246; // 0xf6
- field public static final int CODE_DIAL_MODIFIED_TO_DIAL_VIDEO = 247; // 0xf7
- field public static final int CODE_DIAL_MODIFIED_TO_SS = 245; // 0xf5
- field public static final int CODE_DIAL_MODIFIED_TO_USSD = 244; // 0xf4
- field public static final int CODE_DIAL_VIDEO_MODIFIED_TO_DIAL = 248; // 0xf8
- field public static final int CODE_DIAL_VIDEO_MODIFIED_TO_DIAL_VIDEO = 249; // 0xf9
- field public static final int CODE_DIAL_VIDEO_MODIFIED_TO_SS = 250; // 0xfa
- field public static final int CODE_DIAL_VIDEO_MODIFIED_TO_USSD = 251; // 0xfb
- field public static final int CODE_ECBM_NOT_SUPPORTED = 901; // 0x385
- field public static final int CODE_EMERGENCY_PERM_FAILURE = 364; // 0x16c
- field public static final int CODE_EMERGENCY_TEMP_FAILURE = 363; // 0x16b
- field public static final int CODE_EPDG_TUNNEL_ESTABLISH_FAILURE = 1400; // 0x578
- field public static final int CODE_EPDG_TUNNEL_LOST_CONNECTION = 1402; // 0x57a
- field public static final int CODE_EPDG_TUNNEL_REKEY_FAILURE = 1401; // 0x579
- field public static final int CODE_FDN_BLOCKED = 241; // 0xf1
- field public static final int CODE_IKEV2_AUTH_FAILURE = 1408; // 0x580
- field public static final int CODE_IMEI_NOT_ACCEPTED = 243; // 0xf3
- field public static final int CODE_IWLAN_DPD_FAILURE = 1300; // 0x514
- field public static final int CODE_LOCAL_CALL_BUSY = 142; // 0x8e
- field public static final int CODE_LOCAL_CALL_CS_RETRY_REQUIRED = 146; // 0x92
- field public static final int CODE_LOCAL_CALL_DECLINE = 143; // 0x8f
- field public static final int CODE_LOCAL_CALL_EXCEEDED = 141; // 0x8d
- field public static final int CODE_LOCAL_CALL_RESOURCE_RESERVATION_FAILED = 145; // 0x91
- field public static final int CODE_LOCAL_CALL_TERMINATED = 148; // 0x94
- field public static final int CODE_LOCAL_CALL_VCC_ON_PROGRESSING = 144; // 0x90
- field public static final int CODE_LOCAL_CALL_VOLTE_RETRY_REQUIRED = 147; // 0x93
- field public static final int CODE_LOCAL_ENDED_BY_CONFERENCE_MERGE = 108; // 0x6c
- field public static final int CODE_LOCAL_HO_NOT_FEASIBLE = 149; // 0x95
- field public static final int CODE_LOCAL_ILLEGAL_ARGUMENT = 101; // 0x65
- field public static final int CODE_LOCAL_ILLEGAL_STATE = 102; // 0x66
- field public static final int CODE_LOCAL_IMS_SERVICE_DOWN = 106; // 0x6a
- field public static final int CODE_LOCAL_INTERNAL_ERROR = 103; // 0x67
- field public static final int CODE_LOCAL_LOW_BATTERY = 112; // 0x70
- field public static final int CODE_LOCAL_NETWORK_IP_CHANGED = 124; // 0x7c
- field public static final int CODE_LOCAL_NETWORK_NO_LTE_COVERAGE = 122; // 0x7a
- field public static final int CODE_LOCAL_NETWORK_NO_SERVICE = 121; // 0x79
- field public static final int CODE_LOCAL_NETWORK_ROAMING = 123; // 0x7b
- field public static final int CODE_LOCAL_NOT_REGISTERED = 132; // 0x84
- field public static final int CODE_LOCAL_NO_PENDING_CALL = 107; // 0x6b
- field public static final int CODE_LOCAL_POWER_OFF = 111; // 0x6f
- field public static final int CODE_LOCAL_SERVICE_UNAVAILABLE = 131; // 0x83
- field public static final int CODE_LOW_BATTERY = 505; // 0x1f9
- field public static final int CODE_MAXIMUM_NUMBER_OF_CALLS_REACHED = 1403; // 0x57b
- field public static final int CODE_MEDIA_INIT_FAILED = 401; // 0x191
- field public static final int CODE_MEDIA_NOT_ACCEPTABLE = 403; // 0x193
- field public static final int CODE_MEDIA_NO_DATA = 402; // 0x192
- field public static final int CODE_MEDIA_UNSPECIFIED = 404; // 0x194
- field public static final int CODE_MULTIENDPOINT_NOT_SUPPORTED = 902; // 0x386
- field public static final int CODE_NETWORK_DETACH = 1513; // 0x5e9
- field public static final int CODE_NETWORK_REJECT = 1504; // 0x5e0
- field public static final int CODE_NETWORK_RESP_TIMEOUT = 1503; // 0x5df
- field public static final int CODE_NO_CSFB_IN_CS_ROAM = 1516; // 0x5ec
- field public static final int CODE_NO_VALID_SIM = 1501; // 0x5dd
- field public static final int CODE_OEM_CAUSE_1 = 61441; // 0xf001
- field public static final int CODE_OEM_CAUSE_10 = 61450; // 0xf00a
- field public static final int CODE_OEM_CAUSE_11 = 61451; // 0xf00b
- field public static final int CODE_OEM_CAUSE_12 = 61452; // 0xf00c
- field public static final int CODE_OEM_CAUSE_13 = 61453; // 0xf00d
- field public static final int CODE_OEM_CAUSE_14 = 61454; // 0xf00e
- field public static final int CODE_OEM_CAUSE_15 = 61455; // 0xf00f
- field public static final int CODE_OEM_CAUSE_2 = 61442; // 0xf002
- field public static final int CODE_OEM_CAUSE_3 = 61443; // 0xf003
- field public static final int CODE_OEM_CAUSE_4 = 61444; // 0xf004
- field public static final int CODE_OEM_CAUSE_5 = 61445; // 0xf005
- field public static final int CODE_OEM_CAUSE_6 = 61446; // 0xf006
- field public static final int CODE_OEM_CAUSE_7 = 61447; // 0xf007
- field public static final int CODE_OEM_CAUSE_8 = 61448; // 0xf008
- field public static final int CODE_OEM_CAUSE_9 = 61449; // 0xf009
- field public static final int CODE_RADIO_ACCESS_FAILURE = 1505; // 0x5e1
- field public static final int CODE_RADIO_INTERNAL_ERROR = 1502; // 0x5de
- field public static final int CODE_RADIO_LINK_FAILURE = 1506; // 0x5e2
- field public static final int CODE_RADIO_LINK_LOST = 1507; // 0x5e3
- field public static final int CODE_RADIO_OFF = 1500; // 0x5dc
- field public static final int CODE_RADIO_RELEASE_ABNORMAL = 1511; // 0x5e7
- field public static final int CODE_RADIO_RELEASE_NORMAL = 1510; // 0x5e6
- field public static final int CODE_RADIO_SETUP_FAILURE = 1509; // 0x5e5
- field public static final int CODE_RADIO_UPLINK_FAILURE = 1508; // 0x5e4
- field public static final int CODE_REGISTRATION_ERROR = 1000; // 0x3e8
- field public static final int CODE_REJECTED_ELSEWHERE = 1017; // 0x3f9
- field public static final int CODE_REJECT_1X_COLLISION = 1603; // 0x643
- field public static final int CODE_REJECT_CALL_ON_OTHER_SUB = 1602; // 0x642
- field public static final int CODE_REJECT_CALL_TYPE_NOT_ALLOWED = 1605; // 0x645
- field public static final int CODE_REJECT_CONFERENCE_TTY_NOT_ALLOWED = 1617; // 0x651
- field public static final int CODE_REJECT_INTERNAL_ERROR = 1612; // 0x64c
- field public static final int CODE_REJECT_MAX_CALL_LIMIT_REACHED = 1608; // 0x648
- field public static final int CODE_REJECT_ONGOING_CALL_SETUP = 1607; // 0x647
- field public static final int CODE_REJECT_ONGOING_CALL_TRANSFER = 1611; // 0x64b
- field public static final int CODE_REJECT_ONGOING_CALL_UPGRADE = 1616; // 0x650
- field public static final int CODE_REJECT_ONGOING_CALL_WAITING_DISABLED = 1601; // 0x641
- field public static final int CODE_REJECT_ONGOING_CONFERENCE_CALL = 1618; // 0x652
- field public static final int CODE_REJECT_ONGOING_CS_CALL = 1621; // 0x655
- field public static final int CODE_REJECT_ONGOING_E911_CALL = 1606; // 0x646
- field public static final int CODE_REJECT_ONGOING_ENCRYPTED_CALL = 1620; // 0x654
- field public static final int CODE_REJECT_ONGOING_HANDOVER = 1614; // 0x64e
- field public static final int CODE_REJECT_QOS_FAILURE = 1613; // 0x64d
- field public static final int CODE_REJECT_SERVICE_NOT_REGISTERED = 1604; // 0x644
- field public static final int CODE_REJECT_UNKNOWN = 1600; // 0x640
- field public static final int CODE_REJECT_UNSUPPORTED_SDP_HEADERS = 1610; // 0x64a
- field public static final int CODE_REJECT_UNSUPPORTED_SIP_HEADERS = 1609; // 0x649
- field public static final int CODE_REJECT_VT_AVPF_NOT_ALLOWED = 1619; // 0x653
- field public static final int CODE_REJECT_VT_TTY_NOT_ALLOWED = 1615; // 0x64f
- field public static final int CODE_REMOTE_CALL_DECLINE = 1404; // 0x57c
- field public static final int CODE_SESSION_MODIFICATION_FAILED = 1517; // 0x5ed
- field public static final int CODE_SIP_ALTERNATE_EMERGENCY_CALL = 1514; // 0x5ea
- field public static final int CODE_SIP_AMBIGUOUS = 376; // 0x178
- field public static final int CODE_SIP_BAD_ADDRESS = 337; // 0x151
- field public static final int CODE_SIP_BAD_REQUEST = 331; // 0x14b
- field public static final int CODE_SIP_BUSY = 338; // 0x152
- field public static final int CODE_SIP_CALL_OR_TRANS_DOES_NOT_EXIST = 372; // 0x174
- field public static final int CODE_SIP_CLIENT_ERROR = 342; // 0x156
- field public static final int CODE_SIP_EXTENSION_REQUIRED = 370; // 0x172
- field public static final int CODE_SIP_FORBIDDEN = 332; // 0x14c
- field public static final int CODE_SIP_GLOBAL_ERROR = 362; // 0x16a
- field public static final int CODE_SIP_INTERVAL_TOO_BRIEF = 371; // 0x173
- field public static final int CODE_SIP_LOOP_DETECTED = 373; // 0x175
- field public static final int CODE_SIP_METHOD_NOT_ALLOWED = 366; // 0x16e
- field public static final int CODE_SIP_NOT_ACCEPTABLE = 340; // 0x154
- field public static final int CODE_SIP_NOT_FOUND = 333; // 0x14d
- field public static final int CODE_SIP_NOT_REACHABLE = 341; // 0x155
- field public static final int CODE_SIP_NOT_SUPPORTED = 334; // 0x14e
- field public static final int CODE_SIP_PROXY_AUTHENTICATION_REQUIRED = 367; // 0x16f
- field public static final int CODE_SIP_REDIRECTED = 321; // 0x141
- field public static final int CODE_SIP_REQUEST_CANCELLED = 339; // 0x153
- field public static final int CODE_SIP_REQUEST_ENTITY_TOO_LARGE = 368; // 0x170
- field public static final int CODE_SIP_REQUEST_PENDING = 377; // 0x179
- field public static final int CODE_SIP_REQUEST_TIMEOUT = 335; // 0x14f
- field public static final int CODE_SIP_REQUEST_URI_TOO_LARGE = 369; // 0x171
- field public static final int CODE_SIP_SERVER_ERROR = 354; // 0x162
- field public static final int CODE_SIP_SERVER_INTERNAL_ERROR = 351; // 0x15f
- field public static final int CODE_SIP_SERVER_TIMEOUT = 353; // 0x161
- field public static final int CODE_SIP_SERVICE_UNAVAILABLE = 352; // 0x160
- field public static final int CODE_SIP_TEMPRARILY_UNAVAILABLE = 336; // 0x150
- field public static final int CODE_SIP_TOO_MANY_HOPS = 374; // 0x176
- field public static final int CODE_SIP_TRANSACTION_DOES_NOT_EXIST = 343; // 0x157
- field public static final int CODE_SIP_UNDECIPHERABLE = 378; // 0x17a
- field public static final int CODE_SIP_USER_MARKED_UNWANTED = 365; // 0x16d
- field public static final int CODE_SIP_USER_REJECTED = 361; // 0x169
- field public static final int CODE_SUPP_SVC_CANCELLED = 1202; // 0x4b2
- field public static final int CODE_SUPP_SVC_FAILED = 1201; // 0x4b1
- field public static final int CODE_SUPP_SVC_REINVITE_COLLISION = 1203; // 0x4b3
- field public static final int CODE_TIMEOUT_1XX_WAITING = 201; // 0xc9
- field public static final int CODE_TIMEOUT_NO_ANSWER = 202; // 0xca
- field public static final int CODE_TIMEOUT_NO_ANSWER_CALL_UPDATE = 203; // 0xcb
- field public static final int CODE_UNSPECIFIED = 0; // 0x0
- field public static final int CODE_USER_CANCELLED_SESSION_MODIFICATION = 512; // 0x200
- field public static final int CODE_USER_DECLINE = 504; // 0x1f8
- field public static final int CODE_USER_IGNORE = 503; // 0x1f7
- field public static final int CODE_USER_NOANSWER = 502; // 0x1f6
- field public static final int CODE_USER_REJECTED_SESSION_MODIFICATION = 511; // 0x1ff
- field public static final int CODE_USER_TERMINATED = 501; // 0x1f5
- field public static final int CODE_USER_TERMINATED_BY_REMOTE = 510; // 0x1fe
- field public static final int CODE_UT_CB_PASSWORD_MISMATCH = 821; // 0x335
- field public static final int CODE_UT_NETWORK_ERROR = 804; // 0x324
- field public static final int CODE_UT_NOT_SUPPORTED = 801; // 0x321
- field public static final int CODE_UT_OPERATION_NOT_ALLOWED = 803; // 0x323
- field public static final int CODE_UT_SERVICE_UNAVAILABLE = 802; // 0x322
- field public static final int CODE_UT_SS_MODIFIED_TO_DIAL = 822; // 0x336
- field public static final int CODE_UT_SS_MODIFIED_TO_DIAL_VIDEO = 825; // 0x339
- field public static final int CODE_UT_SS_MODIFIED_TO_SS = 824; // 0x338
- field public static final int CODE_UT_SS_MODIFIED_TO_USSD = 823; // 0x337
- field public static final int CODE_WIFI_LOST = 1407; // 0x57f
- field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.ImsReasonInfo> CREATOR;
- field public static final int EXTRA_CODE_CALL_RETRY_BY_SETTINGS = 3; // 0x3
- field public static final int EXTRA_CODE_CALL_RETRY_NORMAL = 1; // 0x1
- field public static final int EXTRA_CODE_CALL_RETRY_SILENT_REDIAL = 2; // 0x2
- field public static final String EXTRA_MSG_SERVICE_NOT_AUTHORIZED = "Forbidden. Not Authorized for Service";
- }
-
public class ImsService extends android.app.Service {
ctor public ImsService();
method public android.telephony.ims.feature.MmTelFeature createMmTelFeature(int);
@@ -4267,6 +4111,7 @@
field public static final String PERSIST_PREFIX = "persist.sys.fflag.override.";
field public static final String SCREENRECORD_LONG_PRESS = "settings_screenrecord_long_press";
field public static final String SEAMLESS_TRANSFER = "settings_seamless_transfer";
+ field public static final String SETTINGS_FUSE_FLAG = "settings_fuse";
field public static final String SETTINGS_WIFITRACKER2 = "settings_wifitracker2";
}
diff --git a/api/test-lint-baseline.txt b/api/test-lint-baseline.txt
index ba85ae6..3aa8187 100644
--- a/api/test-lint-baseline.txt
+++ b/api/test-lint-baseline.txt
@@ -399,6 +399,8 @@
GetterSetterNames: android.location.GnssClock#setTimeUncertaintyNanos(double):
+GetterSetterNames: android.location.GnssMeasurement#setBasebandCn0DbHz(double):
+
GetterSetterNames: android.location.GnssMeasurement#setCarrierFrequencyHz(float):
GetterSetterNames: android.location.GnssMeasurement#setCodeType(String):
diff --git a/cmds/am/src/com/android/commands/am/Am.java b/cmds/am/src/com/android/commands/am/Am.java
index 22e1d01..bdb8380 100644
--- a/cmds/am/src/com/android/commands/am/Am.java
+++ b/cmds/am/src/com/android/commands/am/Am.java
@@ -175,7 +175,11 @@
} else if (opt.equals("--no-hidden-api-checks")) {
instrument.disableHiddenApiChecks = true;
} else if (opt.equals("--no-test-api-checks")) {
- instrument.disableTestApiChecks = true;
+ // TODO(satayev): remove this option, only kept for backwards compatibility with
+ // cached tradefed instance
+ instrument.disableTestApiChecks = false;
+ } else if (opt.equals("--no-test-api-access")) {
+ instrument.disableTestApiChecks = false;
} else if (opt.equals("--no-isolated-storage")) {
instrument.disableIsolatedStorage = true;
} else if (opt.equals("--user")) {
diff --git a/cmds/am/src/com/android/commands/am/Instrument.java b/cmds/am/src/com/android/commands/am/Instrument.java
index 6afd7c4..2adbc1f 100644
--- a/cmds/am/src/com/android/commands/am/Instrument.java
+++ b/cmds/am/src/com/android/commands/am/Instrument.java
@@ -86,7 +86,7 @@
String logPath = null;
public boolean noWindowAnimation = false;
public boolean disableHiddenApiChecks = false;
- public boolean disableTestApiChecks = false;
+ public boolean disableTestApiChecks = true;
public boolean disableIsolatedStorage = false;
public String abi = null;
public int userId = UserHandle.USER_CURRENT;
diff --git a/cmds/bootanimation/BootAnimation.cpp b/cmds/bootanimation/BootAnimation.cpp
index e1cb7ca..459520a 100644
--- a/cmds/bootanimation/BootAnimation.cpp
+++ b/cmds/bootanimation/BootAnimation.cpp
@@ -1157,10 +1157,10 @@
parseAnimationDesc(*animation);
if (!preloadZip(*animation)) {
+ releaseAnimation(animation);
return nullptr;
}
-
mLoadedFiles.remove(fn);
return animation;
}
diff --git a/cmds/dpm/src/com/android/commands/dpm/Dpm.java b/cmds/dpm/src/com/android/commands/dpm/Dpm.java
index 6c6797a..d0c2a24 100644
--- a/cmds/dpm/src/com/android/commands/dpm/Dpm.java
+++ b/cmds/dpm/src/com/android/commands/dpm/Dpm.java
@@ -48,8 +48,8 @@
private static final String COMMAND_CLEAR_FREEZE_PERIOD_RECORD = "clear-freeze-period-record";
private static final String COMMAND_FORCE_NETWORK_LOGS = "force-network-logs";
private static final String COMMAND_FORCE_SECURITY_LOGS = "force-security-logs";
- private static final String COMMAND_GRANT_PO_DEVICE_ID_ACCESS =
- "grant-profile-owner-device-ids-access";
+ private static final String COMMAND_MARK_PO_ON_ORG_OWNED_DEVICE =
+ "mark-profile-owner-on-organization-owned-device";
private IDevicePolicyManager mDevicePolicyManager;
private int mUserId = UserHandle.USER_SYSTEM;
@@ -93,7 +93,7 @@
"dpm " + COMMAND_FORCE_SECURITY_LOGS + ": makes all security logs available to " +
"the DPC and triggers DeviceAdminReceiver.onSecurityLogsAvailable() if needed."
+ "\n"
- + "usage: dpm " + COMMAND_GRANT_PO_DEVICE_ID_ACCESS + ": "
+ + "usage: dpm " + COMMAND_MARK_PO_ON_ORG_OWNED_DEVICE + ": "
+ "[ --user <USER_ID> | current ] <COMPONENT>\n");
}
@@ -129,8 +129,8 @@
case COMMAND_FORCE_SECURITY_LOGS:
runForceSecurityLogs();
break;
- case COMMAND_GRANT_PO_DEVICE_ID_ACCESS:
- runGrantProfileOwnerDeviceIdsAccess();
+ case COMMAND_MARK_PO_ON_ORG_OWNED_DEVICE:
+ runMarkProfileOwnerOnOrganizationOwnedDevice();
break;
default:
throw new IllegalArgumentException ("unknown command '" + command + "'");
@@ -251,9 +251,9 @@
}
- private void runGrantProfileOwnerDeviceIdsAccess() throws RemoteException {
+ private void runMarkProfileOwnerOnOrganizationOwnedDevice() throws RemoteException {
parseArgs(/*canHaveName=*/ false);
- mDevicePolicyManager.grantDeviceIdsAccessToProfileOwner(mComponent, mUserId);
+ mDevicePolicyManager.markProfileOwnerOnOrganizationOwnedDevice(mComponent, mUserId);
System.out.println("Success");
}
diff --git a/cmds/statsd/Android.bp b/cmds/statsd/Android.bp
index 360ddd4..17427a2 100644
--- a/cmds/statsd/Android.bp
+++ b/cmds/statsd/Android.bp
@@ -117,6 +117,10 @@
"src/uid_data.proto",
],
+ cflags: [
+ // "-DNEW_ENCODING_SCHEME",
+ ],
+
local_include_dirs: [
"src",
],
@@ -282,7 +286,10 @@
include_dirs: ["external/protobuf/src"],
},
- shared_libs: ["libprotobuf-cpp-lite"],
+ shared_libs: [
+ "libprotobuf-cpp-lite",
+ "libstatssocket"
+ ],
}
@@ -325,7 +332,7 @@
"-Wno-unused-function",
// Bug: http://b/29823425 Disable -Wvarargs for Clang update to r271374
- "-Wno-varargs"
+ "-Wno-varargs",
],
static_libs: [
@@ -334,8 +341,9 @@
shared_libs: [
"libgtest_prod",
- "libstatslog",
"libprotobuf-cpp-lite",
+ "libstatslog",
+ "libstatssocket",
],
}
diff --git a/cmds/statsd/benchmark/log_event_benchmark.cpp b/cmds/statsd/benchmark/log_event_benchmark.cpp
index 2603469..bdfdb2e 100644
--- a/cmds/statsd/benchmark/log_event_benchmark.cpp
+++ b/cmds/statsd/benchmark/log_event_benchmark.cpp
@@ -16,55 +16,30 @@
#include <vector>
#include "benchmark/benchmark.h"
#include "logd/LogEvent.h"
+#include "stats_event.h"
namespace android {
namespace os {
namespace statsd {
-using std::vector;
+static size_t createAndParseStatsEvent(uint8_t* msg) {
+ struct stats_event* event = stats_event_obtain();
+ stats_event_set_atom_id(event, 100);
+ stats_event_write_int32(event, 2);
+ stats_event_write_float(event, 2.0);
+ stats_event_build(event);
-/* Special markers for android_log_list_element type */
-static const char EVENT_TYPE_LIST_STOP = '\n'; /* declare end of list */
-static const char EVENT_TYPE_UNKNOWN = '?'; /* protocol error */
-
-static const char EVENT_TYPE_INT = 0;
-static const char EVENT_TYPE_LONG = 1;
-static const char EVENT_TYPE_STRING = 2;
-static const char EVENT_TYPE_LIST = 3;
-static const char EVENT_TYPE_FLOAT = 4;
-
-static const int kLogMsgHeaderSize = 28;
-
-static void write4Bytes(int val, vector<char>* buffer) {
- buffer->push_back(static_cast<char>(val));
- buffer->push_back(static_cast<char>((val >> 8) & 0xFF));
- buffer->push_back(static_cast<char>((val >> 16) & 0xFF));
- buffer->push_back(static_cast<char>((val >> 24) & 0xFF));
-}
-
-static void getSimpleLogMsgData(log_msg* msg) {
- vector<char> buffer;
- // stats_log tag id
- write4Bytes(1937006964, &buffer);
- buffer.push_back(EVENT_TYPE_LIST);
- buffer.push_back(2); // field counts;
- buffer.push_back(EVENT_TYPE_INT);
- write4Bytes(10 /* atom id */, &buffer);
- buffer.push_back(EVENT_TYPE_INT);
- write4Bytes(99 /* a value to log*/, &buffer);
- buffer.push_back(EVENT_TYPE_LIST_STOP);
-
- msg->entry.len = buffer.size();
- msg->entry.hdr_size = kLogMsgHeaderSize;
- msg->entry.sec = time(nullptr);
- std::copy(buffer.begin(), buffer.end(), msg->buf + kLogMsgHeaderSize);
+ size_t size;
+ uint8_t* buf = stats_event_get_buffer(event, &size);
+ memcpy(msg, buf, size);
+ return size;
}
static void BM_LogEventCreation(benchmark::State& state) {
- log_msg msg;
- getSimpleLogMsgData(&msg);
+ uint8_t msg[LOGGER_ENTRY_MAX_PAYLOAD];
+ size_t size = createAndParseStatsEvent(msg);
while (state.KeepRunning()) {
- benchmark::DoNotOptimize(LogEvent(msg));
+ benchmark::DoNotOptimize(LogEvent(msg, size, /*uid=*/ 1000));
}
}
BENCHMARK(BM_LogEventCreation);
diff --git a/cmds/statsd/src/atoms.proto b/cmds/statsd/src/atoms.proto
index 49cc3c4..b9051da 100644
--- a/cmds/statsd/src/atoms.proto
+++ b/cmds/statsd/src/atoms.proto
@@ -6362,7 +6362,8 @@
optional bool is_preinstalled = 3;
// True if the package is privileged.
- optional bool is_priv_app = 4;
+ // Starting from Android 11, this boolean is not set and will always be false.
+ optional bool is_priv_app = 4 [deprecated = true];
}
/**
@@ -6716,6 +6717,9 @@
// For long-running operations, total duration of the operation
// while the app was in the background (only for trusted requests)
optional int64 trusted_background_duration_millis = 9;
+
+ // Whether AppOps is guarded by Runtime permission
+ optional bool is_runtime_permission = 10;
}
/**
diff --git a/cmds/statsd/src/logd/LogEvent.cpp b/cmds/statsd/src/logd/LogEvent.cpp
index 262921e..67022a0 100644
--- a/cmds/statsd/src/logd/LogEvent.cpp
+++ b/cmds/statsd/src/logd/LogEvent.cpp
@@ -35,16 +35,21 @@
using std::string;
using std::vector;
-LogEvent::LogEvent(log_msg& msg) {
- mContext =
- create_android_log_parser(msg.msg() + sizeof(uint32_t), msg.len() - sizeof(uint32_t));
- mLogdTimestampNs = msg.entry.sec * NS_PER_SEC + msg.entry.nsec;
- mLogUid = msg.entry.uid;
+// Msg is expected to begin at the start of the serialized atom -- it should not
+// include the android_log_header_t or the StatsEventTag.
+LogEvent::LogEvent(uint8_t* msg, uint32_t len, uint32_t uid)
+ : mBuf(msg),
+ mRemainingLen(len),
+ mLogdTimestampNs(time(nullptr)),
+ mLogUid(uid)
+{
+#ifdef NEW_ENCODING_SCHEME
+ initNew();
+# else
+ mContext = create_android_log_parser((char*)msg, len);
init(mContext);
- if (mContext) {
- // android_log_destroy will set mContext to NULL
- android_log_destroy(&mContext);
- }
+ if (mContext) android_log_destroy(&mContext); // set mContext to NULL
+#endif
}
LogEvent::LogEvent(const LogEvent& event) {
@@ -438,6 +443,186 @@
return false;
}
+void LogEvent::parseInt32(int32_t* pos, int32_t depth, bool* last) {
+ int32_t value = readNextValue<int32_t>();
+ addToValues(pos, depth, value, last);
+}
+
+void LogEvent::parseInt64(int32_t* pos, int32_t depth, bool* last) {
+ int64_t value = readNextValue<int64_t>();
+ addToValues(pos, depth, value, last);
+}
+
+void LogEvent::parseString(int32_t* pos, int32_t depth, bool* last) {
+ int32_t numBytes = readNextValue<int32_t>();
+ if ((uint32_t)numBytes > mRemainingLen) {
+ mValid = false;
+ return;
+ }
+
+ string value = string((char*)mBuf, numBytes);
+ mBuf += numBytes;
+ mRemainingLen -= numBytes;
+ addToValues(pos, depth, value, last);
+}
+
+void LogEvent::parseFloat(int32_t* pos, int32_t depth, bool* last) {
+ float value = readNextValue<float>();
+ addToValues(pos, depth, value, last);
+}
+
+void LogEvent::parseBool(int32_t* pos, int32_t depth, bool* last) {
+ // cast to int32_t because FieldValue does not support bools
+ int32_t value = (int32_t)readNextValue<uint8_t>();
+ addToValues(pos, depth, value, last);
+}
+
+void LogEvent::parseByteArray(int32_t* pos, int32_t depth, bool* last) {
+ int32_t numBytes = readNextValue<int32_t>();
+ if ((uint32_t)numBytes > mRemainingLen) {
+ mValid = false;
+ return;
+ }
+
+ vector<uint8_t> value(mBuf, mBuf + numBytes);
+ mBuf += numBytes;
+ mRemainingLen -= numBytes;
+ addToValues(pos, depth, value, last);
+}
+
+void LogEvent::parseKeyValuePairs(int32_t* pos, int32_t depth, bool* last) {
+ int32_t numPairs = readNextValue<uint8_t>();
+
+ for (pos[1] = 1; pos[1] <= numPairs; pos[1]++) {
+ last[1] = (pos[1] == numPairs);
+
+ // parse key
+ pos[2] = 1;
+ parseInt32(pos, 2, last);
+
+ // parse value
+ last[2] = true;
+ uint8_t typeId = getTypeId(readNextValue<uint8_t>());
+ switch (typeId) {
+ case INT32_TYPE:
+ pos[2] = 2; // pos[2] determined by index of type in KeyValuePair in atoms.proto
+ parseInt32(pos, 2, last);
+ break;
+ case INT64_TYPE:
+ pos[2] = 3;
+ parseInt64(pos, 2, last);
+ break;
+ case STRING_TYPE:
+ pos[2] = 4;
+ parseString(pos, 2, last);
+ break;
+ case FLOAT_TYPE:
+ pos[2] = 5;
+ parseFloat(pos, 2, last);
+ break;
+ default:
+ mValid = false;
+ }
+ }
+
+ pos[1] = pos[2] = 1;
+ last[1] = last[2] = false;
+}
+
+void LogEvent::parseAttributionChain(int32_t* pos, int32_t depth, bool* last) {
+ int32_t numNodes = readNextValue<uint8_t>();
+ for (pos[1] = 1; pos[1] <= numNodes; pos[1]++) {
+ last[1] = (pos[1] == numNodes);
+
+ // parse uid
+ pos[2] = 1;
+ parseInt32(pos, 2, last);
+
+ // parse tag
+ pos[2] = 2;
+ last[2] = true;
+ parseString(pos, 2, last);
+ }
+
+ pos[1] = pos[2] = 1;
+ last[1] = last[2] = false;
+}
+
+
+// This parsing logic is tied to the encoding scheme used in StatsEvent.java and
+// stats_event.c
+void LogEvent::initNew() {
+ int32_t pos[] = {1, 1, 1};
+ bool last[] = {false, false, false};
+
+ // Beginning of buffer is OBJECT_TYPE | NUM_FIELDS | TIMESTAMP | ATOM_ID
+ uint8_t typeInfo = readNextValue<uint8_t>();
+ if (getTypeId(typeInfo) != OBJECT_TYPE) mValid = false;
+
+ uint8_t numElements = readNextValue<uint8_t>();
+ if (numElements < 2 || numElements > 127) mValid = false;
+
+ typeInfo = readNextValue<uint8_t>();
+ if (getTypeId(typeInfo) != INT64_TYPE) mValid = false;
+ mElapsedTimestampNs = readNextValue<int64_t>();
+ numElements--;
+
+ typeInfo = readNextValue<uint8_t>();
+ if (getTypeId(typeInfo) != INT32_TYPE) mValid = false;
+ mTagId = readNextValue<int32_t>();
+ numElements--;
+
+
+ for (pos[0] = 1; pos[0] <= numElements && mValid; pos[0]++) {
+ typeInfo = readNextValue<uint8_t>();
+ uint8_t typeId = getTypeId(typeInfo);
+
+ last[0] = (pos[0] == numElements);
+
+ // TODO(b/144373276): handle errors passed to the socket
+ // TODO(b/144373257): parse annotations
+ switch(typeId) {
+ case BOOL_TYPE:
+ parseBool(pos, 0, last);
+ break;
+ case INT32_TYPE:
+ parseInt32(pos, 0, last);
+ break;
+ case INT64_TYPE:
+ parseInt64(pos, 0, last);
+ break;
+ case FLOAT_TYPE:
+ parseFloat(pos, 0, last);
+ break;
+ case BYTE_ARRAY_TYPE:
+ parseByteArray(pos, 0, last);
+ break;
+ case STRING_TYPE:
+ parseString(pos, 0, last);
+ break;
+ case KEY_VALUE_PAIRS_TYPE:
+ parseKeyValuePairs(pos, 0, last);
+ break;
+ case ATTRIBUTION_CHAIN_TYPE:
+ parseAttributionChain(pos, 0, last);
+ break;
+ default:
+ mValid = false;
+ }
+ }
+
+ if (mRemainingLen != 0) mValid = false;
+ mBuf = nullptr;
+}
+
+uint8_t LogEvent::getTypeId(uint8_t typeInfo) {
+ return typeInfo & 0x0F; // type id in lower 4 bytes
+}
+
+uint8_t LogEvent::getNumAnnotations(uint8_t typeInfo) {
+ return (typeInfo >> 4) & 0x0F;
+}
+
/**
* The elements of each log event are stored as a vector of android_log_list_elements.
* The goal is to do as little preprocessing as possible, because we read a tiny fraction
diff --git a/cmds/statsd/src/logd/LogEvent.h b/cmds/statsd/src/logd/LogEvent.h
index f1f45a2..1ff95f7 100644
--- a/cmds/statsd/src/logd/LogEvent.h
+++ b/cmds/statsd/src/logd/LogEvent.h
@@ -24,6 +24,7 @@
#include <log/log_read.h>
#include <private/android_logger.h>
#include <stats_event_list.h>
+#include <stats_event.h>
#include <utils/Errors.h>
#include <string>
@@ -69,9 +70,9 @@
class LogEvent {
public:
/**
- * Read a LogEvent from a log_msg.
+ * Read a LogEvent from the socket
*/
- explicit LogEvent(log_msg& msg);
+ explicit LogEvent(uint8_t* msg, uint32_t len, uint32_t uid);
/**
* Creates LogEvent from StatsLogEventWrapper.
@@ -206,6 +207,10 @@
return &mValues;
}
+ bool isValid() {
+ return mValid;
+ }
+
inline LogEvent makeCopy() {
return LogEvent(*this);
}
@@ -216,6 +221,69 @@
*/
LogEvent(const LogEvent&);
+
+ /**
+ * Parsing function for new encoding scheme.
+ */
+ void initNew();
+
+ void parseInt32(int32_t* pos, int32_t depth, bool* last);
+ void parseInt64(int32_t* pos, int32_t depth, bool* last);
+ void parseString(int32_t* pos, int32_t depth, bool* last);
+ void parseFloat(int32_t* pos, int32_t depth, bool* last);
+ void parseBool(int32_t* pos, int32_t depth, bool* last);
+ void parseByteArray(int32_t* pos, int32_t depth, bool* last);
+ void parseKeyValuePairs(int32_t* pos, int32_t depth, bool* last);
+ void parseAttributionChain(int32_t* pos, int32_t depth, bool* last);
+
+ /**
+ * mBuf is a pointer to the current location in the buffer being parsed.
+ * Because the buffer lives on the StatsSocketListener stack, this pointer
+ * is only valid during the LogEvent constructor. It will be set to null at
+ * the end of initNew.
+ */
+ uint8_t* mBuf;
+
+ uint32_t mRemainingLen; // number of valid bytes left in the buffer being parsed
+ bool mValid = true; // stores whether the event we received from the socket is valid
+
+ /**
+ * Side-effects:
+ * If there is enough space in buffer to read value of type T
+ * - move mBuf past the value that was just read
+ * - decrement mRemainingLen by size of T
+ * Else
+ * - set mValid to false
+ */
+ template <class T>
+ T readNextValue() {
+ T value;
+ if (mRemainingLen < sizeof(T)) {
+ mValid = false;
+ value = 0; // all primitive types can successfully cast 0
+ } else {
+ value = *((T*)mBuf);
+ mBuf += sizeof(T);
+ mRemainingLen -= sizeof(T);
+ }
+ return value;
+ }
+
+ template <class T>
+ void addToValues(int32_t* pos, int32_t depth, T& value, bool* last) {
+ Field f = Field(mTagId, pos, depth);
+ // do not decorate last position at depth 0
+ for (int i = 1; i < depth; i++) {
+ if (last[i]) f.decorateLastPos(i);
+ }
+
+ Value v = Value(value);
+ mValues.push_back(FieldValue(f, v));
+ }
+
+ uint8_t getTypeId(uint8_t typeInfo);
+ uint8_t getNumAnnotations(uint8_t typeInfo);
+
/**
* Parses a log_msg into a LogEvent object.
*/
diff --git a/cmds/statsd/src/socket/StatsSocketListener.cpp b/cmds/statsd/src/socket/StatsSocketListener.cpp
index b59d88d..4308a110 100755
--- a/cmds/statsd/src/socket/StatsSocketListener.cpp
+++ b/cmds/statsd/src/socket/StatsSocketListener.cpp
@@ -39,8 +39,6 @@
namespace os {
namespace statsd {
-static const int kLogMsgHeaderSize = 28;
-
StatsSocketListener::StatsSocketListener(std::shared_ptr<LogEventQueue> queue)
: SocketListener(getLogSocket(), false /*start listen*/), mQueue(queue) {
}
@@ -95,7 +93,7 @@
cred->uid = DEFAULT_OVERFLOWUID;
}
- char* ptr = ((char*)buffer) + sizeof(android_log_header_t);
+ uint8_t* ptr = ((uint8_t*)buffer) + sizeof(android_log_header_t);
n -= sizeof(android_log_header_t);
// When a log failed to write to statsd socket (e.g., due ot EBUSY), a special message would
@@ -124,18 +122,13 @@
}
}
- log_msg msg;
-
- msg.entry.len = n;
- msg.entry.hdr_size = kLogMsgHeaderSize;
- msg.entry.sec = time(nullptr);
- msg.entry.pid = cred->pid;
- msg.entry.uid = cred->uid;
-
- memcpy(msg.buf + kLogMsgHeaderSize, ptr, n + 1);
+ // move past the 4-byte StatsEventTag
+ uint8_t* msg = ptr + sizeof(uint32_t);
+ uint32_t len = n - sizeof(uint32_t);
+ uint32_t uid = cred->uid;
int64_t oldestTimestamp;
- if (!mQueue->push(std::make_unique<LogEvent>(msg), &oldestTimestamp)) {
+ if (!mQueue->push(std::make_unique<LogEvent>(msg, len, uid), &oldestTimestamp)) {
StatsdStats::getInstance().noteEventQueueOverflow(oldestTimestamp);
}
diff --git a/cmds/statsd/tests/LogEvent_test.cpp b/cmds/statsd/tests/LogEvent_test.cpp
index 0743480..9f50701 100644
--- a/cmds/statsd/tests/LogEvent_test.cpp
+++ b/cmds/statsd/tests/LogEvent_test.cpp
@@ -17,6 +17,8 @@
#include <log/log_event_list.h>
#include "frameworks/base/cmds/statsd/src/atoms.pb.h"
#include "frameworks/base/core/proto/android/stats/launcher/launcher.pb.h"
+#include <stats_event.h>
+
#ifdef __ANDROID__
@@ -25,9 +27,277 @@
namespace statsd {
using std::string;
+using std::vector;
using util::ProtoOutputStream;
using util::ProtoReader;
+
+#ifdef NEW_ENCODING_SCHEME
+
+Field getField(int32_t tag, const vector<int32_t>& pos, int32_t depth, const vector<bool>& last) {
+ Field f(tag, (int32_t*)pos.data(), depth);
+
+ // For loop starts at 1 because the last field at depth 0 is not decorated.
+ for (int i = 1; i < depth; i++) {
+ if (last[i]) f.decorateLastPos(i);
+ }
+
+ return f;
+}
+
+TEST(LogEventTest, TestPrimitiveParsing) {
+ struct stats_event* event = stats_event_obtain();
+ stats_event_set_atom_id(event, 100);
+ stats_event_write_int32(event, 10);
+ stats_event_write_int64(event, 0x123456789);
+ stats_event_write_float(event, 2.0);
+ stats_event_write_bool(event, true);
+ stats_event_build(event);
+
+ size_t size;
+ uint8_t* buf = stats_event_get_buffer(event, &size);
+
+ LogEvent logEvent(buf, size, /*uid=*/ 1000);
+ EXPECT_TRUE(logEvent.isValid());
+ EXPECT_EQ(100, logEvent.GetTagId());
+
+ const vector<FieldValue>& values = logEvent.getValues();
+ EXPECT_EQ(4, values.size());
+
+ const FieldValue& int32Item = values[0];
+ Field expectedField = getField(100, {1, 1, 1}, 0, {false, false, false});
+ EXPECT_EQ(expectedField, int32Item.mField);
+ EXPECT_EQ(Type::INT, int32Item.mValue.getType());
+ EXPECT_EQ(10, int32Item.mValue.int_value);
+
+ const FieldValue& int64Item = values[1];
+ expectedField = getField(100, {2, 1, 1}, 0, {false, false, false});
+ EXPECT_EQ(expectedField, int64Item.mField);
+ EXPECT_EQ(Type::LONG, int64Item.mValue.getType());
+ EXPECT_EQ(0x123456789, int64Item.mValue.long_value);
+
+ const FieldValue& floatItem = values[2];
+ expectedField = getField(100, {3, 1, 1}, 0, {false, false, false});
+ EXPECT_EQ(expectedField, floatItem.mField);
+ EXPECT_EQ(Type::FLOAT, floatItem.mValue.getType());
+ EXPECT_EQ(2.0, floatItem.mValue.float_value);
+
+ const FieldValue& boolItem = values[3];
+ expectedField = getField(100, {4, 1, 1}, 0, {true, false, false});
+ EXPECT_EQ(expectedField, boolItem.mField);
+ EXPECT_EQ(Type::INT, boolItem.mValue.getType()); // FieldValue does not support boolean type
+ EXPECT_EQ(1, boolItem.mValue.int_value);
+
+ stats_event_release(event);
+}
+
+
+TEST(LogEventTest, TestStringAndByteArrayParsing) {
+ struct stats_event* event = stats_event_obtain();
+ stats_event_set_atom_id(event, 100);
+ string str = "test";
+ stats_event_write_string8(event, str.c_str());
+ stats_event_write_byte_array(event, (uint8_t*)str.c_str(), str.length());
+ stats_event_build(event);
+
+ size_t size;
+ uint8_t* buf = stats_event_get_buffer(event, &size);
+
+ LogEvent logEvent(buf, size, /*uid=*/ 1000);
+ EXPECT_TRUE(logEvent.isValid());
+ EXPECT_EQ(100, logEvent.GetTagId());
+
+ const vector<FieldValue>& values = logEvent.getValues();
+ EXPECT_EQ(2, values.size());
+
+ const FieldValue& stringItem = values[0];
+ Field expectedField = getField(100, {1, 1, 1}, 0, {false, false, false});
+ EXPECT_EQ(expectedField, stringItem.mField);
+ EXPECT_EQ(Type::STRING, stringItem.mValue.getType());
+ EXPECT_EQ(str, stringItem.mValue.str_value);
+
+ const FieldValue& storageItem = values[1];
+ expectedField = getField(100, {2, 1, 1}, 0, {true, false, false});
+ EXPECT_EQ(expectedField, storageItem.mField);
+ EXPECT_EQ(Type::STORAGE, storageItem.mValue.getType());
+ vector<uint8_t> expectedValue = {'t', 'e', 's', 't'};
+ EXPECT_EQ(expectedValue, storageItem.mValue.storage_value);
+
+ stats_event_release(event);
+}
+
+TEST(LogEventTest, TestEmptyString) {
+ struct stats_event* event = stats_event_obtain();
+ stats_event_set_atom_id(event, 100);
+ string empty = "";
+ stats_event_write_string8(event, empty.c_str());
+ stats_event_build(event);
+
+ size_t size;
+ uint8_t* buf = stats_event_get_buffer(event, &size);
+
+ LogEvent logEvent(buf, size, /*uid=*/ 1000);
+ EXPECT_TRUE(logEvent.isValid());
+ EXPECT_EQ(100, logEvent.GetTagId());
+
+ const vector<FieldValue>& values = logEvent.getValues();
+ EXPECT_EQ(1, values.size());
+
+ const FieldValue& item = values[0];
+ Field expectedField = getField(100, {1, 1, 1}, 0, {true, false, false});
+ EXPECT_EQ(expectedField, item.mField);
+ EXPECT_EQ(Type::STRING, item.mValue.getType());
+ EXPECT_EQ(empty, item.mValue.str_value);
+
+ stats_event_release(event);
+}
+
+TEST(LogEventTest, TestByteArrayWithNullCharacter) {
+ struct stats_event* event = stats_event_obtain();
+ stats_event_set_atom_id(event, 100);
+ uint8_t message[] = {'\t', 'e', '\0', 's', 't'};
+ stats_event_write_byte_array(event, message, 5);
+ stats_event_build(event);
+
+ size_t size;
+ uint8_t* buf = stats_event_get_buffer(event, &size);
+
+ LogEvent logEvent(buf, size, /*uid=*/ 1000);
+ EXPECT_TRUE(logEvent.isValid());
+ EXPECT_EQ(100, logEvent.GetTagId());
+
+ const vector<FieldValue>& values = logEvent.getValues();
+ EXPECT_EQ(1, values.size());
+
+ const FieldValue& item = values[0];
+ Field expectedField = getField(100, {1, 1, 1}, 0, {true, false, false});
+ EXPECT_EQ(expectedField, item.mField);
+ EXPECT_EQ(Type::STORAGE, item.mValue.getType());
+ vector<uint8_t> expectedValue(message, message + 5);
+ EXPECT_EQ(expectedValue, item.mValue.storage_value);
+
+ stats_event_release(event);
+}
+
+TEST(LogEventTest, TestKeyValuePairs) {
+ struct stats_event* event = stats_event_obtain();
+ stats_event_set_atom_id(event, 100);
+
+ struct key_value_pair pairs[4];
+ pairs[0] = {.key = 0, .valueType = INT32_TYPE, .int32Value = 1};
+ pairs[1] = {.key = 1, .valueType = INT64_TYPE, .int64Value = 0x123456789};
+ pairs[2] = {.key = 2, .valueType = FLOAT_TYPE, .floatValue = 2.0};
+ string str = "test";
+ pairs[3] = {.key = 3, .valueType = STRING_TYPE, .stringValue = str.c_str()};
+
+ stats_event_write_key_value_pairs(event, pairs, 4);
+ stats_event_build(event);
+
+ size_t size;
+ uint8_t* buf = stats_event_get_buffer(event, &size);
+
+ LogEvent logEvent(buf, size, /*uid=*/ 1000);
+ EXPECT_TRUE(logEvent.isValid());
+ EXPECT_EQ(100, logEvent.GetTagId());
+
+ const vector<FieldValue>& values = logEvent.getValues();
+ EXPECT_EQ(8, values.size()); // 2 FieldValues per key-value pair
+
+ // Check the keys first
+ for (int i = 0; i < values.size() / 2; i++) {
+ const FieldValue& item = values[2 * i];
+ int32_t depth1Pos = i + 1;
+ bool depth1Last = i == (values.size() / 2 - 1);
+ Field expectedField = getField(100, {1, depth1Pos, 1}, 2, {true, depth1Last, false});
+
+ EXPECT_EQ(expectedField, item.mField);
+ EXPECT_EQ(Type::INT, item.mValue.getType());
+ EXPECT_EQ(i, item.mValue.int_value);
+ }
+
+ // Check the values now
+ // Note: pos[2] = index of type in KeyValuePair in atoms.proto
+ const FieldValue& int32Item = values[1];
+ Field expectedField = getField(100, {1, 1, 2}, 2, {true, false, true});
+ EXPECT_EQ(expectedField, int32Item.mField);
+ EXPECT_EQ(Type::INT, int32Item.mValue.getType());
+ EXPECT_EQ(1, int32Item.mValue.int_value);
+
+ const FieldValue& int64Item = values[3];
+ expectedField = getField(100, {1, 2, 3}, 2, {true, false, true});
+ EXPECT_EQ(expectedField, int64Item.mField);
+ EXPECT_EQ(Type::LONG, int64Item.mValue.getType());
+ EXPECT_EQ(0x123456789, int64Item.mValue.long_value);
+
+ const FieldValue& floatItem = values[5];
+ expectedField = getField(100, {1, 3, 5}, 2, {true, false, true});
+ EXPECT_EQ(expectedField, floatItem.mField);
+ EXPECT_EQ(Type::FLOAT, floatItem.mValue.getType());
+ EXPECT_EQ(2.0, floatItem.mValue.float_value);
+
+ const FieldValue& stringItem = values[7];
+ expectedField = getField(100, {1, 4, 4}, 2, {true, true, true});
+ EXPECT_EQ(expectedField, stringItem.mField);
+ EXPECT_EQ(Type::STRING, stringItem.mValue.getType());
+ EXPECT_EQ(str, stringItem.mValue.str_value);
+
+ stats_event_release(event);
+}
+
+TEST(LogEventTest, TestAttributionChain) {
+ struct stats_event* event = stats_event_obtain();
+ stats_event_set_atom_id(event, 100);
+
+ string tag1 = "tag1";
+ string tag2 = "tag2";
+
+ uint32_t uids[] = {1001, 1002};
+ const char* tags[] = {tag1.c_str(), tag2.c_str()};
+
+ stats_event_write_attribution_chain(event, uids, tags, 2);
+ stats_event_build(event);
+
+ size_t size;
+ uint8_t* buf = stats_event_get_buffer(event, &size);
+
+ LogEvent logEvent(buf, size, /*uid=*/ 1000);
+ EXPECT_TRUE(logEvent.isValid());
+ EXPECT_EQ(100, logEvent.GetTagId());
+
+ const vector<FieldValue>& values = logEvent.getValues();
+ EXPECT_EQ(4, values.size()); // 2 per attribution node
+
+ // Check first attribution node
+ const FieldValue& uid1Item = values[0];
+ Field expectedField = getField(100, {1, 1, 1}, 2, {true, false, false});
+ EXPECT_EQ(expectedField, uid1Item.mField);
+ EXPECT_EQ(Type::INT, uid1Item.mValue.getType());
+ EXPECT_EQ(1001, uid1Item.mValue.int_value);
+
+ const FieldValue& tag1Item = values[1];
+ expectedField = getField(100, {1, 1, 2}, 2, {true, false, true});
+ EXPECT_EQ(expectedField, tag1Item.mField);
+ EXPECT_EQ(Type::STRING, tag1Item.mValue.getType());
+ EXPECT_EQ(tag1, tag1Item.mValue.str_value);
+
+ // Check second attribution nodes
+ const FieldValue& uid2Item = values[2];
+ expectedField = getField(100, {1, 2, 1}, 2, {true, true, false});
+ EXPECT_EQ(expectedField, uid2Item.mField);
+ EXPECT_EQ(Type::INT, uid2Item.mValue.getType());
+ EXPECT_EQ(1002, uid2Item.mValue.int_value);
+
+ const FieldValue& tag2Item = values[3];
+ expectedField = getField(100, {1, 2, 2}, 2, {true, true, true});
+ EXPECT_EQ(expectedField, tag2Item.mField);
+ EXPECT_EQ(Type::STRING, tag2Item.mValue.getType());
+ EXPECT_EQ(tag2, tag2Item.mValue.str_value);
+
+ stats_event_release(event);
+}
+
+#else // NEW_ENCODING_SCHEME
+
TEST(LogEventTest, TestLogParsing) {
LogEvent event1(1, 2000);
@@ -659,6 +929,7 @@
EXPECT_EQ(proto[1], 0xae);
EXPECT_EQ(proto[2], 0x27);
}
+#endif // NEW_ENCODING_SCHEME
} // namespace statsd
diff --git a/cmds/telecom/src/com/android/commands/telecom/Telecom.java b/cmds/telecom/src/com/android/commands/telecom/Telecom.java
index a4b3058..03b08f7 100644
--- a/cmds/telecom/src/com/android/commands/telecom/Telecom.java
+++ b/cmds/telecom/src/com/android/commands/telecom/Telecom.java
@@ -58,7 +58,6 @@
private static final String COMMAND_SET_TEST_CALL_SCREENING_APP = "set-test-call-screening-app";
private static final String COMMAND_ADD_OR_REMOVE_CALL_COMPANION_APP =
"add-or-remove-call-companion-app";
- private static final String COMMAND_SET_TEST_AUTO_MODE_APP = "set-test-auto-mode-app";
private static final String COMMAND_SET_PHONE_ACCOUNT_SUGGESTION_COMPONENT =
"set-phone-acct-suggestion-component";
private static final String COMMAND_UNREGISTER_PHONE_ACCOUNT = "unregister-phone-account";
@@ -99,7 +98,6 @@
+ "<USER_SN>\n"
+ "usage: telecom set-test-call-redirection-app <PACKAGE>\n"
+ "usage: telecom set-test-call-screening-app <PACKAGE>\n"
- + "usage: telecom set-test-auto-mode-app <PACKAGE>\n"
+ "usage: telecom set-phone-acct-suggestion-component <COMPONENT>\n"
+ "usage: telecom add-or-remove-call-companion-app <PACKAGE> <1/0>\n"
+ "usage: telecom register-sim-phone-account <COMPONENT> <ID> <USER_SN>"
@@ -191,9 +189,6 @@
case COMMAND_ADD_OR_REMOVE_CALL_COMPANION_APP:
runAddOrRemoveCallCompanionApp();
break;
- case COMMAND_SET_TEST_AUTO_MODE_APP:
- runSetTestAutoModeApp();
- break;
case COMMAND_SET_PHONE_ACCOUNT_SUGGESTION_COMPONENT:
runSetTestPhoneAcctSuggestionComponent();
break;
@@ -305,11 +300,6 @@
mTelecomService.addOrRemoveTestCallCompanionApp(packageName, isAddedBool);
}
- private void runSetTestAutoModeApp() throws RemoteException {
- final String packageName = nextArg();
- mTelecomService.setTestAutoModeApp(packageName);
- }
-
private void runSetTestPhoneAcctSuggestionComponent() throws RemoteException {
final String componentName = nextArg();
mTelecomService.setTestPhoneAcctSuggestionComponent(componentName);
diff --git a/config/hiddenapi-greylist-max-o.txt b/config/hiddenapi-greylist-max-o.txt
index 15026b0..023bf38 100644
--- a/config/hiddenapi-greylist-max-o.txt
+++ b/config/hiddenapi-greylist-max-o.txt
@@ -12,7 +12,6 @@
Landroid/accessibilityservice/AccessibilityButtonController;->mCallbacks:Landroid/util/ArrayMap;
Landroid/accessibilityservice/AccessibilityButtonController;->mLock:Ljava/lang/Object;
Landroid/accessibilityservice/AccessibilityButtonController;->mServiceConnection:Landroid/accessibilityservice/IAccessibilityServiceConnection;
-Landroid/accessibilityservice/AccessibilityService$Callbacks;
Landroid/accessibilityservice/AccessibilityService$Callbacks;->init(ILandroid/os/IBinder;)V
Landroid/accessibilityservice/AccessibilityService$Callbacks;->onAccessibilityButtonAvailabilityChanged(Z)V
Landroid/accessibilityservice/AccessibilityService$Callbacks;->onAccessibilityButtonClicked()V
@@ -26,12 +25,10 @@
Landroid/accessibilityservice/AccessibilityService$Callbacks;->onPerformGestureResult(IZ)V
Landroid/accessibilityservice/AccessibilityService$Callbacks;->onServiceConnected()V
Landroid/accessibilityservice/AccessibilityService$Callbacks;->onSoftKeyboardShowModeChanged(I)V
-Landroid/accessibilityservice/AccessibilityService$GestureResultCallbackInfo;
Landroid/accessibilityservice/AccessibilityService$GestureResultCallbackInfo;-><init>(Landroid/accessibilityservice/GestureDescription;Landroid/accessibilityservice/AccessibilityService$GestureResultCallback;Landroid/os/Handler;)V
Landroid/accessibilityservice/AccessibilityService$GestureResultCallbackInfo;->callback:Landroid/accessibilityservice/AccessibilityService$GestureResultCallback;
Landroid/accessibilityservice/AccessibilityService$GestureResultCallbackInfo;->gestureDescription:Landroid/accessibilityservice/GestureDescription;
Landroid/accessibilityservice/AccessibilityService$GestureResultCallbackInfo;->handler:Landroid/os/Handler;
-Landroid/accessibilityservice/AccessibilityService$IAccessibilityServiceClientWrapper;
Landroid/accessibilityservice/AccessibilityService$IAccessibilityServiceClientWrapper;-><init>(Landroid/content/Context;Landroid/os/Looper;Landroid/accessibilityservice/AccessibilityService$Callbacks;)V
Landroid/accessibilityservice/AccessibilityService$IAccessibilityServiceClientWrapper;->clearAccessibilityCache()V
Landroid/accessibilityservice/AccessibilityService$IAccessibilityServiceClientWrapper;->DO_ACCESSIBILITY_BUTTON_AVAILABILITY_CHANGED:I
@@ -77,7 +74,6 @@
Landroid/accessibilityservice/AccessibilityService$SoftKeyboardController;->mService:Landroid/accessibilityservice/AccessibilityService;
Landroid/accessibilityservice/AccessibilityService$SoftKeyboardController;->onServiceConnected()V
Landroid/accessibilityservice/AccessibilityService$SoftKeyboardController;->setSoftKeyboardCallbackEnabled(Z)V
-Landroid/accessibilityservice/AccessibilityService$SoftKeyboardShowMode;
Landroid/accessibilityservice/AccessibilityService;->dispatchServiceConnected()V
Landroid/accessibilityservice/AccessibilityService;->LOG_TAG:Ljava/lang/String;
Landroid/accessibilityservice/AccessibilityService;->mAccessibilityButtonController:Landroid/accessibilityservice/AccessibilityButtonController;
@@ -97,12 +93,10 @@
Landroid/accessibilityservice/AccessibilityService;->onPerformGestureResult(IZ)V
Landroid/accessibilityservice/AccessibilityService;->onSoftKeyboardShowModeChanged(I)V
Landroid/accessibilityservice/AccessibilityService;->sendServiceInfo()V
-Landroid/accessibilityservice/AccessibilityServiceInfo$CapabilityInfo;
Landroid/accessibilityservice/AccessibilityServiceInfo$CapabilityInfo;-><init>(III)V
Landroid/accessibilityservice/AccessibilityServiceInfo$CapabilityInfo;->capability:I
Landroid/accessibilityservice/AccessibilityServiceInfo$CapabilityInfo;->descResId:I
Landroid/accessibilityservice/AccessibilityServiceInfo$CapabilityInfo;->titleResId:I
-Landroid/accessibilityservice/AccessibilityServiceInfo$FeedbackType;
Landroid/accessibilityservice/AccessibilityServiceInfo;-><init>(Landroid/content/pm/ResolveInfo;Landroid/content/Context;)V
Landroid/accessibilityservice/AccessibilityServiceInfo;->appendCapabilities(Ljava/lang/StringBuilder;I)V
Landroid/accessibilityservice/AccessibilityServiceInfo;->appendEventTypes(Ljava/lang/StringBuilder;I)V
@@ -138,14 +132,12 @@
Landroid/accessibilityservice/FingerprintGestureController;->onGesture(I)V
Landroid/accessibilityservice/FingerprintGestureController;->onGestureDetectionActiveChanged(Z)V
Landroid/accessibilityservice/GestureDescription$Builder;->mStrokes:Ljava/util/List;
-Landroid/accessibilityservice/GestureDescription$GestureStep;
Landroid/accessibilityservice/GestureDescription$GestureStep;-><init>(JI[Landroid/accessibilityservice/GestureDescription$TouchPoint;)V
Landroid/accessibilityservice/GestureDescription$GestureStep;-><init>(Landroid/os/Parcel;)V
Landroid/accessibilityservice/GestureDescription$GestureStep;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/accessibilityservice/GestureDescription$GestureStep;->numTouchPoints:I
Landroid/accessibilityservice/GestureDescription$GestureStep;->timeSinceGestureStart:J
Landroid/accessibilityservice/GestureDescription$GestureStep;->touchPoints:[Landroid/accessibilityservice/GestureDescription$TouchPoint;
-Landroid/accessibilityservice/GestureDescription$MotionEventGenerator;
Landroid/accessibilityservice/GestureDescription$MotionEventGenerator;-><init>()V
Landroid/accessibilityservice/GestureDescription$MotionEventGenerator;->getCurrentTouchPoints(I)[Landroid/accessibilityservice/GestureDescription$TouchPoint;
Landroid/accessibilityservice/GestureDescription$MotionEventGenerator;->getGestureStepsFromGestureDescription(Landroid/accessibilityservice/GestureDescription;I)Ljava/util/List;
@@ -166,7 +158,6 @@
Landroid/accessibilityservice/GestureDescription$StrokeDescription;->mTapLocation:[F
Landroid/accessibilityservice/GestureDescription$StrokeDescription;->mTimeToLengthConversion:F
Landroid/accessibilityservice/GestureDescription$StrokeDescription;->sIdCounter:I
-Landroid/accessibilityservice/GestureDescription$TouchPoint;
Landroid/accessibilityservice/GestureDescription$TouchPoint;-><init>()V
Landroid/accessibilityservice/GestureDescription$TouchPoint;-><init>(Landroid/accessibilityservice/GestureDescription$TouchPoint;)V
Landroid/accessibilityservice/GestureDescription$TouchPoint;-><init>(Landroid/os/Parcel;)V
@@ -189,7 +180,6 @@
Landroid/accessibilityservice/GestureDescription;->MAX_STROKE_COUNT:I
Landroid/accessibilityservice/GestureDescription;->mStrokes:Ljava/util/List;
Landroid/accessibilityservice/GestureDescription;->mTempPos:[F
-Landroid/accessibilityservice/IAccessibilityServiceClient$Stub$Proxy;
Landroid/accessibilityservice/IAccessibilityServiceClient$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/accessibilityservice/IAccessibilityServiceClient$Stub$Proxy;->clearAccessibilityCache()V
Landroid/accessibilityservice/IAccessibilityServiceClient$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
@@ -206,7 +196,6 @@
Landroid/accessibilityservice/IAccessibilityServiceClient$Stub$Proxy;->onMagnificationChanged(Landroid/graphics/Region;FFF)V
Landroid/accessibilityservice/IAccessibilityServiceClient$Stub$Proxy;->onPerformGestureResult(IZ)V
Landroid/accessibilityservice/IAccessibilityServiceClient$Stub$Proxy;->onSoftKeyboardShowModeChanged(I)V
-Landroid/accessibilityservice/IAccessibilityServiceClient$Stub;
Landroid/accessibilityservice/IAccessibilityServiceClient$Stub;-><init>()V
Landroid/accessibilityservice/IAccessibilityServiceClient$Stub;->asInterface(Landroid/os/IBinder;)Landroid/accessibilityservice/IAccessibilityServiceClient;
Landroid/accessibilityservice/IAccessibilityServiceClient$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -223,7 +212,6 @@
Landroid/accessibilityservice/IAccessibilityServiceClient$Stub;->TRANSACTION_onMagnificationChanged:I
Landroid/accessibilityservice/IAccessibilityServiceClient$Stub;->TRANSACTION_onPerformGestureResult:I
Landroid/accessibilityservice/IAccessibilityServiceClient$Stub;->TRANSACTION_onSoftKeyboardShowModeChanged:I
-Landroid/accessibilityservice/IAccessibilityServiceClient;
Landroid/accessibilityservice/IAccessibilityServiceClient;->clearAccessibilityCache()V
Landroid/accessibilityservice/IAccessibilityServiceClient;->init(Landroid/accessibilityservice/IAccessibilityServiceConnection;ILandroid/os/IBinder;)V
Landroid/accessibilityservice/IAccessibilityServiceClient;->onAccessibilityButtonAvailabilityChanged(Z)V
@@ -237,7 +225,6 @@
Landroid/accessibilityservice/IAccessibilityServiceClient;->onMagnificationChanged(Landroid/graphics/Region;FFF)V
Landroid/accessibilityservice/IAccessibilityServiceClient;->onPerformGestureResult(IZ)V
Landroid/accessibilityservice/IAccessibilityServiceClient;->onSoftKeyboardShowModeChanged(I)V
-Landroid/accessibilityservice/IAccessibilityServiceConnection$Stub$Proxy;
Landroid/accessibilityservice/IAccessibilityServiceConnection$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/accessibilityservice/IAccessibilityServiceConnection$Stub$Proxy;->disableSelf()V
Landroid/accessibilityservice/IAccessibilityServiceConnection$Stub$Proxy;->findAccessibilityNodeInfoByAccessibilityId(IJILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;IJLandroid/os/Bundle;)[Ljava/lang/String;
@@ -266,7 +253,6 @@
Landroid/accessibilityservice/IAccessibilityServiceConnection$Stub$Proxy;->setServiceInfo(Landroid/accessibilityservice/AccessibilityServiceInfo;)V
Landroid/accessibilityservice/IAccessibilityServiceConnection$Stub$Proxy;->setSoftKeyboardCallbackEnabled(Z)V
Landroid/accessibilityservice/IAccessibilityServiceConnection$Stub$Proxy;->setSoftKeyboardShowMode(I)Z
-Landroid/accessibilityservice/IAccessibilityServiceConnection$Stub;
Landroid/accessibilityservice/IAccessibilityServiceConnection$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/accessibilityservice/IAccessibilityServiceConnection$Stub;->TRANSACTION_disableSelf:I
Landroid/accessibilityservice/IAccessibilityServiceConnection$Stub;->TRANSACTION_findAccessibilityNodeInfoByAccessibilityId:I
@@ -293,7 +279,6 @@
Landroid/accessibilityservice/IAccessibilityServiceConnection$Stub;->TRANSACTION_setServiceInfo:I
Landroid/accessibilityservice/IAccessibilityServiceConnection$Stub;->TRANSACTION_setSoftKeyboardCallbackEnabled:I
Landroid/accessibilityservice/IAccessibilityServiceConnection$Stub;->TRANSACTION_setSoftKeyboardShowMode:I
-Landroid/accessibilityservice/IAccessibilityServiceConnection;
Landroid/accessibilityservice/IAccessibilityServiceConnection;->disableSelf()V
Landroid/accessibilityservice/IAccessibilityServiceConnection;->findAccessibilityNodeInfoByAccessibilityId(IJILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;IJLandroid/os/Bundle;)[Ljava/lang/String;
Landroid/accessibilityservice/IAccessibilityServiceConnection;->findAccessibilityNodeInfosByText(IJLjava/lang/String;ILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;J)[Ljava/lang/String;
@@ -319,8 +304,6 @@
Landroid/accessibilityservice/IAccessibilityServiceConnection;->setServiceInfo(Landroid/accessibilityservice/AccessibilityServiceInfo;)V
Landroid/accessibilityservice/IAccessibilityServiceConnection;->setSoftKeyboardCallbackEnabled(Z)V
Landroid/accessibilityservice/IAccessibilityServiceConnection;->setSoftKeyboardShowMode(I)Z
-Landroid/accounts/AbstractAccountAuthenticator$Transport;
-Landroid/accounts/AbstractAccountAuthenticator$Transport;-><init>()V
Landroid/accounts/AbstractAccountAuthenticator$Transport;->addAccount(Landroid/accounts/IAccountAuthenticatorResponse;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Landroid/os/Bundle;)V
Landroid/accounts/AbstractAccountAuthenticator$Transport;->addAccountFromCredentials(Landroid/accounts/IAccountAuthenticatorResponse;Landroid/accounts/Account;Landroid/os/Bundle;)V
Landroid/accounts/AbstractAccountAuthenticator$Transport;->confirmCredentials(Landroid/accounts/IAccountAuthenticatorResponse;Landroid/accounts/Account;Landroid/os/Bundle;)V
@@ -348,42 +331,28 @@
Landroid/accounts/Account;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
Landroid/accounts/Account;->getAccessId()Ljava/lang/String;
Landroid/accounts/Account;->sAccessedAccounts:Ljava/util/Set;
-Landroid/accounts/AccountAndUser;
Landroid/accounts/AccountAuthenticatorActivity;->mAccountAuthenticatorResponse:Landroid/accounts/AccountAuthenticatorResponse;
Landroid/accounts/AccountAuthenticatorActivity;->mResultBundle:Landroid/os/Bundle;
Landroid/accounts/AccountAuthenticatorResponse;->mAccountAuthenticatorResponse:Landroid/accounts/IAccountAuthenticatorResponse;
Landroid/accounts/AccountAuthenticatorResponse;->TAG:Ljava/lang/String;
-Landroid/accounts/AccountManager$AccountVisibility;
-Landroid/accounts/AccountManager$AmsTask$Response;
-Landroid/accounts/AccountManager$AmsTask$Response;-><init>()V
Landroid/accounts/AccountManager$AmsTask$Response;->onError(ILjava/lang/String;)V
Landroid/accounts/AccountManager$AmsTask$Response;->onResult(Landroid/os/Bundle;)V
-Landroid/accounts/AccountManager$AmsTask;
-Landroid/accounts/AccountManager$AmsTask;-><init>(Landroid/app/Activity;Landroid/os/Handler;Landroid/accounts/AccountManagerCallback;)V
Landroid/accounts/AccountManager$AmsTask;->doWork()V
Landroid/accounts/AccountManager$AmsTask;->internalGetResult(Ljava/lang/Long;Ljava/util/concurrent/TimeUnit;)Landroid/os/Bundle;
Landroid/accounts/AccountManager$AmsTask;->mCallback:Landroid/accounts/AccountManagerCallback;
Landroid/accounts/AccountManager$AmsTask;->set(Landroid/os/Bundle;)V
Landroid/accounts/AccountManager$AmsTask;->start()Landroid/accounts/AccountManagerFuture;
-Landroid/accounts/AccountManager$BaseFutureTask$Response;
-Landroid/accounts/AccountManager$BaseFutureTask$Response;-><init>()V
Landroid/accounts/AccountManager$BaseFutureTask$Response;->onError(ILjava/lang/String;)V
Landroid/accounts/AccountManager$BaseFutureTask$Response;->onResult(Landroid/os/Bundle;)V
-Landroid/accounts/AccountManager$BaseFutureTask;
-Landroid/accounts/AccountManager$BaseFutureTask;-><init>(Landroid/os/Handler;)V
Landroid/accounts/AccountManager$BaseFutureTask;->bundleToResult(Landroid/os/Bundle;)Ljava/lang/Object;
Landroid/accounts/AccountManager$BaseFutureTask;->doWork()V
Landroid/accounts/AccountManager$BaseFutureTask;->mHandler:Landroid/os/Handler;
Landroid/accounts/AccountManager$BaseFutureTask;->mResponse:Landroid/accounts/IAccountManagerResponse;
Landroid/accounts/AccountManager$BaseFutureTask;->postRunnableToHandler(Ljava/lang/Runnable;)V
Landroid/accounts/AccountManager$BaseFutureTask;->startTask()V
-Landroid/accounts/AccountManager$Future2Task;
-Landroid/accounts/AccountManager$Future2Task;-><init>(Landroid/os/Handler;Landroid/accounts/AccountManagerCallback;)V
Landroid/accounts/AccountManager$Future2Task;->internalGetResult(Ljava/lang/Long;Ljava/util/concurrent/TimeUnit;)Ljava/lang/Object;
Landroid/accounts/AccountManager$Future2Task;->mCallback:Landroid/accounts/AccountManagerCallback;
Landroid/accounts/AccountManager$Future2Task;->start()Landroid/accounts/AccountManager$Future2Task;
-Landroid/accounts/AccountManager$GetAuthTokenByTypeAndFeaturesTask;
-Landroid/accounts/AccountManager$GetAuthTokenByTypeAndFeaturesTask;-><init>(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Landroid/app/Activity;Landroid/os/Bundle;Landroid/os/Bundle;Landroid/accounts/AccountManagerCallback;Landroid/os/Handler;)V
Landroid/accounts/AccountManager$GetAuthTokenByTypeAndFeaturesTask;->doWork()V
Landroid/accounts/AccountManager$GetAuthTokenByTypeAndFeaturesTask;->mAccountType:Ljava/lang/String;
Landroid/accounts/AccountManager$GetAuthTokenByTypeAndFeaturesTask;->mAddAccountOptions:Landroid/os/Bundle;
@@ -424,39 +393,31 @@
Landroid/accounts/AccountManager;->someUserHasAccount(Landroid/accounts/Account;)Z
Landroid/accounts/AccountManager;->TAG:Ljava/lang/String;
Landroid/accounts/AccountManager;->updateAppPermission(Landroid/accounts/Account;Ljava/lang/String;IZ)V
-Landroid/accounts/AccountManagerInternal$OnAppPermissionChangeListener;
Landroid/accounts/AccountManagerInternal$OnAppPermissionChangeListener;->onAppPermissionChanged(Landroid/accounts/Account;I)V
-Landroid/accounts/AccountManagerInternal;
Landroid/accounts/AccountManagerInternal;-><init>()V
Landroid/accounts/AccountManagerInternal;->addOnAppPermissionChangeListener(Landroid/accounts/AccountManagerInternal$OnAppPermissionChangeListener;)V
Landroid/accounts/AccountManagerInternal;->backupAccountAccessPermissions(I)[B
Landroid/accounts/AccountManagerInternal;->hasAccountAccess(Landroid/accounts/Account;I)Z
Landroid/accounts/AccountManagerInternal;->requestAccountAccess(Landroid/accounts/Account;Ljava/lang/String;ILandroid/os/RemoteCallback;)V
Landroid/accounts/AccountManagerInternal;->restoreAccountAccessPermissions([BI)V
-Landroid/accounts/AccountManagerResponse;
Landroid/accounts/AccountManagerResponse;-><init>(Landroid/accounts/IAccountManagerResponse;)V
Landroid/accounts/AccountManagerResponse;-><init>(Landroid/os/Parcel;)V
Landroid/accounts/AccountManagerResponse;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/accounts/AccountManagerResponse;->mResponse:Landroid/accounts/IAccountManagerResponse;
Landroid/accounts/AccountManagerResponse;->onError(ILjava/lang/String;)V
Landroid/accounts/AccountManagerResponse;->onResult(Landroid/os/Bundle;)V
-Landroid/accounts/CantAddAccountActivity;
Landroid/accounts/CantAddAccountActivity;-><init>()V
Landroid/accounts/CantAddAccountActivity;->EXTRA_ERROR_CODE:Ljava/lang/String;
Landroid/accounts/CantAddAccountActivity;->onCancelButtonClicked(Landroid/view/View;)V
-Landroid/accounts/ChooseAccountActivity$AccountArrayAdapter;
Landroid/accounts/ChooseAccountActivity$AccountArrayAdapter;-><init>(Landroid/content/Context;I[Landroid/accounts/ChooseAccountActivity$AccountInfo;)V
Landroid/accounts/ChooseAccountActivity$AccountArrayAdapter;->mInfos:[Landroid/accounts/ChooseAccountActivity$AccountInfo;
Landroid/accounts/ChooseAccountActivity$AccountArrayAdapter;->mLayoutInflater:Landroid/view/LayoutInflater;
-Landroid/accounts/ChooseAccountActivity$AccountInfo;
Landroid/accounts/ChooseAccountActivity$AccountInfo;-><init>(Ljava/lang/String;Landroid/graphics/drawable/Drawable;)V
Landroid/accounts/ChooseAccountActivity$AccountInfo;->drawable:Landroid/graphics/drawable/Drawable;
Landroid/accounts/ChooseAccountActivity$AccountInfo;->name:Ljava/lang/String;
-Landroid/accounts/ChooseAccountActivity$ViewHolder;
Landroid/accounts/ChooseAccountActivity$ViewHolder;-><init>()V
Landroid/accounts/ChooseAccountActivity$ViewHolder;->icon:Landroid/widget/ImageView;
Landroid/accounts/ChooseAccountActivity$ViewHolder;->text:Landroid/widget/TextView;
-Landroid/accounts/ChooseAccountActivity;
Landroid/accounts/ChooseAccountActivity;-><init>()V
Landroid/accounts/ChooseAccountActivity;->getAuthDescriptions()V
Landroid/accounts/ChooseAccountActivity;->getDrawableForType(Ljava/lang/String;)Landroid/graphics/drawable/Drawable;
@@ -468,27 +429,22 @@
Landroid/accounts/ChooseAccountActivity;->mTypeToAuthDescription:Ljava/util/HashMap;
Landroid/accounts/ChooseAccountActivity;->onListItemClick(Landroid/widget/ListView;Landroid/view/View;IJ)V
Landroid/accounts/ChooseAccountActivity;->TAG:Ljava/lang/String;
-Landroid/accounts/ChooseAccountTypeActivity$AccountArrayAdapter;
Landroid/accounts/ChooseAccountTypeActivity$AccountArrayAdapter;-><init>(Landroid/content/Context;ILjava/util/ArrayList;)V
Landroid/accounts/ChooseAccountTypeActivity$AccountArrayAdapter;->mInfos:Ljava/util/ArrayList;
Landroid/accounts/ChooseAccountTypeActivity$AccountArrayAdapter;->mLayoutInflater:Landroid/view/LayoutInflater;
-Landroid/accounts/ChooseAccountTypeActivity$AuthInfo;
Landroid/accounts/ChooseAccountTypeActivity$AuthInfo;-><init>(Landroid/accounts/AuthenticatorDescription;Ljava/lang/String;Landroid/graphics/drawable/Drawable;)V
Landroid/accounts/ChooseAccountTypeActivity$AuthInfo;->desc:Landroid/accounts/AuthenticatorDescription;
Landroid/accounts/ChooseAccountTypeActivity$AuthInfo;->drawable:Landroid/graphics/drawable/Drawable;
Landroid/accounts/ChooseAccountTypeActivity$AuthInfo;->name:Ljava/lang/String;
-Landroid/accounts/ChooseAccountTypeActivity$ViewHolder;
Landroid/accounts/ChooseAccountTypeActivity$ViewHolder;-><init>()V
Landroid/accounts/ChooseAccountTypeActivity$ViewHolder;->icon:Landroid/widget/ImageView;
Landroid/accounts/ChooseAccountTypeActivity$ViewHolder;->text:Landroid/widget/TextView;
-Landroid/accounts/ChooseAccountTypeActivity;
Landroid/accounts/ChooseAccountTypeActivity;-><init>()V
Landroid/accounts/ChooseAccountTypeActivity;->buildTypeToAuthDescriptionMap()V
Landroid/accounts/ChooseAccountTypeActivity;->mAuthenticatorInfosToDisplay:Ljava/util/ArrayList;
Landroid/accounts/ChooseAccountTypeActivity;->mTypeToAuthenticatorInfo:Ljava/util/HashMap;
Landroid/accounts/ChooseAccountTypeActivity;->setResultAndFinish(Ljava/lang/String;)V
Landroid/accounts/ChooseAccountTypeActivity;->TAG:Ljava/lang/String;
-Landroid/accounts/ChooseTypeAndAccountActivity;
Landroid/accounts/ChooseTypeAndAccountActivity;-><init>()V
Landroid/accounts/ChooseTypeAndAccountActivity;->EXTRA_ADD_ACCOUNT_AUTH_TOKEN_TYPE_STRING:Ljava/lang/String;
Landroid/accounts/ChooseTypeAndAccountActivity;->EXTRA_ADD_ACCOUNT_OPTIONS_BUNDLE:Ljava/lang/String;
@@ -539,7 +495,6 @@
Landroid/accounts/ChooseTypeAndAccountActivity;->setResultAndFinish(Ljava/lang/String;Ljava/lang/String;)V
Landroid/accounts/ChooseTypeAndAccountActivity;->startChooseAccountTypeActivity()V
Landroid/accounts/ChooseTypeAndAccountActivity;->TAG:Ljava/lang/String;
-Landroid/accounts/GrantCredentialsPermissionActivity;
Landroid/accounts/GrantCredentialsPermissionActivity;-><init>()V
Landroid/accounts/GrantCredentialsPermissionActivity;->EXTRAS_ACCOUNT:Ljava/lang/String;
Landroid/accounts/GrantCredentialsPermissionActivity;->EXTRAS_AUTH_TOKEN_TYPE:Ljava/lang/String;
@@ -553,7 +508,6 @@
Landroid/accounts/GrantCredentialsPermissionActivity;->mUid:I
Landroid/accounts/GrantCredentialsPermissionActivity;->newPackageView(Ljava/lang/String;)Landroid/view/View;
Landroid/accounts/GrantCredentialsPermissionActivity;->setAccountAuthenticatorResult(Landroid/os/Bundle;)V
-Landroid/accounts/IAccountAuthenticator$Stub$Proxy;
Landroid/accounts/IAccountAuthenticator$Stub$Proxy;->addAccount(Landroid/accounts/IAccountAuthenticatorResponse;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Landroid/os/Bundle;)V
Landroid/accounts/IAccountAuthenticator$Stub$Proxy;->addAccountFromCredentials(Landroid/accounts/IAccountAuthenticatorResponse;Landroid/accounts/Account;Landroid/os/Bundle;)V
Landroid/accounts/IAccountAuthenticator$Stub$Proxy;->confirmCredentials(Landroid/accounts/IAccountAuthenticatorResponse;Landroid/accounts/Account;Landroid/os/Bundle;)V
@@ -569,7 +523,6 @@
Landroid/accounts/IAccountAuthenticator$Stub$Proxy;->startAddAccountSession(Landroid/accounts/IAccountAuthenticatorResponse;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Landroid/os/Bundle;)V
Landroid/accounts/IAccountAuthenticator$Stub$Proxy;->startUpdateCredentialsSession(Landroid/accounts/IAccountAuthenticatorResponse;Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;)V
Landroid/accounts/IAccountAuthenticator$Stub$Proxy;->updateCredentials(Landroid/accounts/IAccountAuthenticatorResponse;Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;)V
-Landroid/accounts/IAccountAuthenticator$Stub;
Landroid/accounts/IAccountAuthenticator$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/accounts/IAccountAuthenticator$Stub;->TRANSACTION_addAccount:I
Landroid/accounts/IAccountAuthenticator$Stub;->TRANSACTION_addAccountFromCredentials:I
@@ -585,23 +538,18 @@
Landroid/accounts/IAccountAuthenticator$Stub;->TRANSACTION_startAddAccountSession:I
Landroid/accounts/IAccountAuthenticator$Stub;->TRANSACTION_startUpdateCredentialsSession:I
Landroid/accounts/IAccountAuthenticator$Stub;->TRANSACTION_updateCredentials:I
-Landroid/accounts/IAccountAuthenticator;
Landroid/accounts/IAccountAuthenticator;->finishSession(Landroid/accounts/IAccountAuthenticatorResponse;Ljava/lang/String;Landroid/os/Bundle;)V
Landroid/accounts/IAccountAuthenticator;->isCredentialsUpdateSuggested(Landroid/accounts/IAccountAuthenticatorResponse;Landroid/accounts/Account;Ljava/lang/String;)V
Landroid/accounts/IAccountAuthenticator;->startAddAccountSession(Landroid/accounts/IAccountAuthenticatorResponse;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Landroid/os/Bundle;)V
Landroid/accounts/IAccountAuthenticator;->startUpdateCredentialsSession(Landroid/accounts/IAccountAuthenticatorResponse;Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;)V
-Landroid/accounts/IAccountAuthenticatorResponse$Stub$Proxy;
Landroid/accounts/IAccountAuthenticatorResponse$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/accounts/IAccountAuthenticatorResponse$Stub$Proxy;->onError(ILjava/lang/String;)V
Landroid/accounts/IAccountAuthenticatorResponse$Stub$Proxy;->onRequestContinued()V
Landroid/accounts/IAccountAuthenticatorResponse$Stub$Proxy;->onResult(Landroid/os/Bundle;)V
-Landroid/accounts/IAccountAuthenticatorResponse$Stub;
Landroid/accounts/IAccountAuthenticatorResponse$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/accounts/IAccountAuthenticatorResponse$Stub;->TRANSACTION_onError:I
Landroid/accounts/IAccountAuthenticatorResponse$Stub;->TRANSACTION_onRequestContinued:I
Landroid/accounts/IAccountAuthenticatorResponse$Stub;->TRANSACTION_onResult:I
-Landroid/accounts/IAccountAuthenticatorResponse;
-Landroid/accounts/IAccountManager$Stub$Proxy;
Landroid/accounts/IAccountManager$Stub$Proxy;->accountAuthenticated(Landroid/accounts/Account;)Z
Landroid/accounts/IAccountManager$Stub$Proxy;->addAccount(Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;ZLandroid/os/Bundle;)V
Landroid/accounts/IAccountManager$Stub$Proxy;->addAccountAsUser(Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;ZLandroid/os/Bundle;I)V
@@ -655,7 +603,6 @@
Landroid/accounts/IAccountManager$Stub$Proxy;->unregisterAccountListener([Ljava/lang/String;Ljava/lang/String;)V
Landroid/accounts/IAccountManager$Stub$Proxy;->updateAppPermission(Landroid/accounts/Account;Ljava/lang/String;IZ)V
Landroid/accounts/IAccountManager$Stub$Proxy;->updateCredentials(Landroid/accounts/IAccountManagerResponse;Landroid/accounts/Account;Ljava/lang/String;ZLandroid/os/Bundle;)V
-Landroid/accounts/IAccountManager$Stub;
Landroid/accounts/IAccountManager$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/accounts/IAccountManager$Stub;->TRANSACTION_accountAuthenticated:I
Landroid/accounts/IAccountManager$Stub;->TRANSACTION_addAccount:I
@@ -708,7 +655,6 @@
Landroid/accounts/IAccountManager$Stub;->TRANSACTION_unregisterAccountListener:I
Landroid/accounts/IAccountManager$Stub;->TRANSACTION_updateAppPermission:I
Landroid/accounts/IAccountManager$Stub;->TRANSACTION_updateCredentials:I
-Landroid/accounts/IAccountManager;
Landroid/accounts/IAccountManager;->accountAuthenticated(Landroid/accounts/Account;)Z
Landroid/accounts/IAccountManager;->addAccount(Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;ZLandroid/os/Bundle;)V
Landroid/accounts/IAccountManager;->addAccountAsUser(Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;ZLandroid/os/Bundle;I)V
@@ -760,33 +706,25 @@
Landroid/accounts/IAccountManager;->unregisterAccountListener([Ljava/lang/String;Ljava/lang/String;)V
Landroid/accounts/IAccountManager;->updateAppPermission(Landroid/accounts/Account;Ljava/lang/String;IZ)V
Landroid/accounts/IAccountManager;->updateCredentials(Landroid/accounts/IAccountManagerResponse;Landroid/accounts/Account;Ljava/lang/String;ZLandroid/os/Bundle;)V
-Landroid/accounts/IAccountManagerResponse$Stub$Proxy;
Landroid/accounts/IAccountManagerResponse$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/accounts/IAccountManagerResponse$Stub$Proxy;->onError(ILjava/lang/String;)V
Landroid/accounts/IAccountManagerResponse$Stub$Proxy;->onResult(Landroid/os/Bundle;)V
-Landroid/accounts/IAccountManagerResponse$Stub;
Landroid/accounts/IAccountManagerResponse$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/accounts/IAccountManagerResponse$Stub;->TRANSACTION_onError:I
Landroid/accounts/IAccountManagerResponse$Stub;->TRANSACTION_onResult:I
-Landroid/accounts/IAccountManagerResponse;
-Landroid/animation/AnimationHandler$AnimationFrameCallback;
Landroid/animation/AnimationHandler$AnimationFrameCallback;->commitAnimationFrame(J)V
Landroid/animation/AnimationHandler$AnimationFrameCallback;->doAnimationFrame(J)Z
-Landroid/animation/AnimationHandler$AnimationFrameCallbackProvider;
Landroid/animation/AnimationHandler$AnimationFrameCallbackProvider;->getFrameDelay()J
Landroid/animation/AnimationHandler$AnimationFrameCallbackProvider;->getFrameTime()J
Landroid/animation/AnimationHandler$AnimationFrameCallbackProvider;->postCommitCallback(Ljava/lang/Runnable;)V
Landroid/animation/AnimationHandler$AnimationFrameCallbackProvider;->postFrameCallback(Landroid/view/Choreographer$FrameCallback;)V
Landroid/animation/AnimationHandler$AnimationFrameCallbackProvider;->setFrameDelay(J)V
-Landroid/animation/AnimationHandler$MyFrameCallbackProvider;
-Landroid/animation/AnimationHandler$MyFrameCallbackProvider;-><init>()V
Landroid/animation/AnimationHandler$MyFrameCallbackProvider;->getFrameDelay()J
Landroid/animation/AnimationHandler$MyFrameCallbackProvider;->getFrameTime()J
Landroid/animation/AnimationHandler$MyFrameCallbackProvider;->mChoreographer:Landroid/view/Choreographer;
Landroid/animation/AnimationHandler$MyFrameCallbackProvider;->postCommitCallback(Ljava/lang/Runnable;)V
Landroid/animation/AnimationHandler$MyFrameCallbackProvider;->postFrameCallback(Landroid/view/Choreographer$FrameCallback;)V
Landroid/animation/AnimationHandler$MyFrameCallbackProvider;->setFrameDelay(J)V
-Landroid/animation/AnimationHandler;
Landroid/animation/AnimationHandler;-><init>()V
Landroid/animation/AnimationHandler;->addAnimationFrameCallback(Landroid/animation/AnimationHandler$AnimationFrameCallback;J)V
Landroid/animation/AnimationHandler;->addOneShotCommitCallback(Landroid/animation/AnimationHandler$AnimationFrameCallback;)V
@@ -810,7 +748,6 @@
Landroid/animation/AnimationHandler;->sAnimatorHandler:Ljava/lang/ThreadLocal;
Landroid/animation/AnimationHandler;->setFrameDelay(J)V
Landroid/animation/AnimationHandler;->setProvider(Landroid/animation/AnimationHandler$AnimationFrameCallbackProvider;)V
-Landroid/animation/Animator$AnimatorConstantState;
Landroid/animation/Animator$AnimatorConstantState;-><init>(Landroid/animation/Animator;)V
Landroid/animation/Animator$AnimatorConstantState;->getChangingConfigurations()I
Landroid/animation/Animator$AnimatorConstantState;->mAnimator:Landroid/animation/Animator;
@@ -832,7 +769,6 @@
Landroid/animation/Animator;->setChangingConfigurations(I)V
Landroid/animation/Animator;->skipToEndValue(Z)V
Landroid/animation/Animator;->startWithoutPulsing(Z)V
-Landroid/animation/AnimatorInflater$PathDataEvaluator;
Landroid/animation/AnimatorInflater$PathDataEvaluator;-><init>()V
Landroid/animation/AnimatorInflater$PathDataEvaluator;->evaluate(FLandroid/util/PathParser$PathData;Landroid/util/PathParser$PathData;)Landroid/util/PathParser$PathData;
Landroid/animation/AnimatorInflater$PathDataEvaluator;->mPathData:Landroid/util/PathParser$PathData;
@@ -868,7 +804,6 @@
Landroid/animation/AnimatorInflater;->VALUE_TYPE_INT:I
Landroid/animation/AnimatorInflater;->VALUE_TYPE_PATH:I
Landroid/animation/AnimatorInflater;->VALUE_TYPE_UNDEFINED:I
-Landroid/animation/AnimatorSet$AnimationEvent;
Landroid/animation/AnimatorSet$AnimationEvent;-><init>(Landroid/animation/AnimatorSet$Node;I)V
Landroid/animation/AnimatorSet$AnimationEvent;->ANIMATION_DELAY_ENDED:I
Landroid/animation/AnimatorSet$AnimationEvent;->ANIMATION_END:I
@@ -876,9 +811,7 @@
Landroid/animation/AnimatorSet$AnimationEvent;->getTime()J
Landroid/animation/AnimatorSet$AnimationEvent;->mEvent:I
Landroid/animation/AnimatorSet$AnimationEvent;->mNode:Landroid/animation/AnimatorSet$Node;
-Landroid/animation/AnimatorSet$Builder;-><init>(Landroid/animation/Animator;)V
Landroid/animation/AnimatorSet$Builder;->mCurrentNode:Landroid/animation/AnimatorSet$Node;
-Landroid/animation/AnimatorSet$Node;
Landroid/animation/AnimatorSet$Node;-><init>(Landroid/animation/Animator;)V
Landroid/animation/AnimatorSet$Node;->addChild(Landroid/animation/AnimatorSet$Node;)V
Landroid/animation/AnimatorSet$Node;->addParent(Landroid/animation/AnimatorSet$Node;)V
@@ -894,8 +827,6 @@
Landroid/animation/AnimatorSet$Node;->mSiblings:Ljava/util/ArrayList;
Landroid/animation/AnimatorSet$Node;->mStartTime:J
Landroid/animation/AnimatorSet$Node;->mTotalDuration:J
-Landroid/animation/AnimatorSet$SeekState;
-Landroid/animation/AnimatorSet$SeekState;-><init>()V
Landroid/animation/AnimatorSet$SeekState;->getPlayTime()J
Landroid/animation/AnimatorSet$SeekState;->getPlayTimeNormalized()J
Landroid/animation/AnimatorSet$SeekState;->isActive()Z
@@ -964,7 +895,6 @@
Landroid/animation/AnimatorSet;->updateAnimatorsDuration()V
Landroid/animation/AnimatorSet;->updatePlayTime(Landroid/animation/AnimatorSet$Node;Ljava/util/ArrayList;)V
Landroid/animation/ArgbEvaluator;->sInstance:Landroid/animation/ArgbEvaluator;
-Landroid/animation/BidirectionalTypeConverter$InvertedConverter;
Landroid/animation/BidirectionalTypeConverter$InvertedConverter;-><init>(Landroid/animation/BidirectionalTypeConverter;)V
Landroid/animation/BidirectionalTypeConverter$InvertedConverter;->convert(Ljava/lang/Object;)Ljava/lang/Object;
Landroid/animation/BidirectionalTypeConverter$InvertedConverter;->convertBack(Ljava/lang/Object;)Ljava/lang/Object;
@@ -972,17 +902,14 @@
Landroid/animation/BidirectionalTypeConverter;->mInvertedConverter:Landroid/animation/BidirectionalTypeConverter;
Landroid/animation/FloatArrayEvaluator;->mArray:[F
Landroid/animation/IntArrayEvaluator;->mArray:[I
-Landroid/animation/Keyframe$FloatKeyframe;
Landroid/animation/Keyframe$FloatKeyframe;-><init>(F)V
Landroid/animation/Keyframe$FloatKeyframe;-><init>(FF)V
Landroid/animation/Keyframe$FloatKeyframe;->getFloatValue()F
Landroid/animation/Keyframe$FloatKeyframe;->mValue:F
-Landroid/animation/Keyframe$IntKeyframe;
Landroid/animation/Keyframe$IntKeyframe;-><init>(F)V
Landroid/animation/Keyframe$IntKeyframe;-><init>(FI)V
Landroid/animation/Keyframe$IntKeyframe;->getIntValue()I
Landroid/animation/Keyframe$IntKeyframe;->mValue:I
-Landroid/animation/Keyframe$ObjectKeyframe;
Landroid/animation/Keyframe$ObjectKeyframe;-><init>(FLjava/lang/Object;)V
Landroid/animation/Keyframe$ObjectKeyframe;->mValue:Ljava/lang/Object;
Landroid/animation/Keyframe;->mFraction:F
@@ -992,18 +919,13 @@
Landroid/animation/Keyframe;->mValueWasSetOnStart:Z
Landroid/animation/Keyframe;->setValueWasSetOnStart(Z)V
Landroid/animation/Keyframe;->valueWasSetOnStart()Z
-Landroid/animation/Keyframes$FloatKeyframes;
Landroid/animation/Keyframes$FloatKeyframes;->getFloatValue(F)F
-Landroid/animation/Keyframes$IntKeyframes;
Landroid/animation/Keyframes$IntKeyframes;->getIntValue(F)I
-Landroid/animation/Keyframes;
Landroid/animation/Keyframes;->clone()Landroid/animation/Keyframes;
Landroid/animation/Keyframes;->getKeyframes()Ljava/util/List;
Landroid/animation/Keyframes;->getType()Ljava/lang/Class;
Landroid/animation/Keyframes;->getValue(F)Ljava/lang/Object;
Landroid/animation/Keyframes;->setEvaluator(Landroid/animation/TypeEvaluator;)V
-Landroid/animation/KeyframeSet;
-Landroid/animation/KeyframeSet;-><init>([[Landroid/animation/Keyframe;)V
Landroid/animation/KeyframeSet;->getKeyframes()Ljava/util/List;
Landroid/animation/KeyframeSet;->getType()Ljava/lang/Class;
Landroid/animation/KeyframeSet;->getValue(F)Ljava/lang/Object;
@@ -1013,14 +935,9 @@
Landroid/animation/KeyframeSet;->mKeyframes:Ljava/util/List;
Landroid/animation/KeyframeSet;->mLastKeyframe:Landroid/animation/Keyframe;
Landroid/animation/KeyframeSet;->mNumKeyframes:I
-Landroid/animation/KeyframeSet;->ofFloat([[F)Landroid/animation/KeyframeSet;
-Landroid/animation/KeyframeSet;->ofInt([[I)Landroid/animation/KeyframeSet;
-Landroid/animation/KeyframeSet;->ofKeyframe([[Landroid/animation/Keyframe;)Landroid/animation/KeyframeSet;
-Landroid/animation/KeyframeSet;->ofObject([[Ljava/lang/Object;)Landroid/animation/KeyframeSet;
Landroid/animation/KeyframeSet;->ofPath(Landroid/graphics/Path;)Landroid/animation/PathKeyframes;
Landroid/animation/KeyframeSet;->ofPath(Landroid/graphics/Path;F)Landroid/animation/PathKeyframes;
Landroid/animation/KeyframeSet;->setEvaluator(Landroid/animation/TypeEvaluator;)V
-Landroid/animation/LayoutTransition$CleanupCallback;
Landroid/animation/LayoutTransition$CleanupCallback;-><init>(Ljava/util/Map;Landroid/view/ViewGroup;)V
Landroid/animation/LayoutTransition$CleanupCallback;->cleanup()V
Landroid/animation/LayoutTransition$CleanupCallback;->layoutChangeListenerMap:Ljava/util/Map;
@@ -1099,19 +1016,15 @@
Landroid/animation/ObjectAnimator;->mPropertyName:Ljava/lang/String;
Landroid/animation/ObjectAnimator;->mTarget:Ljava/lang/ref/WeakReference;
Landroid/animation/ObjectAnimator;->shouldAutoCancel(Landroid/animation/AnimationHandler$AnimationFrameCallback;)Z
-Landroid/animation/PathKeyframes$FloatKeyframesBase;
Landroid/animation/PathKeyframes$FloatKeyframesBase;-><init>()V
Landroid/animation/PathKeyframes$FloatKeyframesBase;->getType()Ljava/lang/Class;
Landroid/animation/PathKeyframes$FloatKeyframesBase;->getValue(F)Ljava/lang/Object;
-Landroid/animation/PathKeyframes$IntKeyframesBase;
Landroid/animation/PathKeyframes$IntKeyframesBase;-><init>()V
Landroid/animation/PathKeyframes$IntKeyframesBase;->getType()Ljava/lang/Class;
Landroid/animation/PathKeyframes$IntKeyframesBase;->getValue(F)Ljava/lang/Object;
-Landroid/animation/PathKeyframes$SimpleKeyframes;
Landroid/animation/PathKeyframes$SimpleKeyframes;-><init>()V
Landroid/animation/PathKeyframes$SimpleKeyframes;->getKeyframes()Ljava/util/ArrayList;
Landroid/animation/PathKeyframes$SimpleKeyframes;->setEvaluator(Landroid/animation/TypeEvaluator;)V
-Landroid/animation/PathKeyframes;
Landroid/animation/PathKeyframes;-><init>(Landroid/graphics/Path;)V
Landroid/animation/PathKeyframes;-><init>(Landroid/graphics/Path;F)V
Landroid/animation/PathKeyframes;->createXFloatKeyframes()Landroid/animation/Keyframes$FloatKeyframes;
@@ -1133,11 +1046,8 @@
Landroid/animation/PathKeyframes;->X_OFFSET:I
Landroid/animation/PathKeyframes;->Y_OFFSET:I
Landroid/animation/PointFEvaluator;->mPoint:Landroid/graphics/PointF;
-Landroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;
Landroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;-><init>(Landroid/util/Property;Landroid/animation/Keyframes$FloatKeyframes;)V
-Landroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;-><init>(Landroid/util/Property;[[F)V
Landroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;-><init>(Ljava/lang/String;Landroid/animation/Keyframes$FloatKeyframes;)V
-Landroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;-><init>(Ljava/lang/String;[[F)V
Landroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->calculateValue(F)V
Landroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->getAnimatedValue()Ljava/lang/Object;
Landroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->mFloatAnimatedValue:F
@@ -1147,11 +1057,8 @@
Landroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->setAnimatedValue(Ljava/lang/Object;)V
Landroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->setupSetter(Ljava/lang/Class;)V
Landroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->sJNISetterPropertyMap:Ljava/util/HashMap;
-Landroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;
Landroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;-><init>(Landroid/util/Property;Landroid/animation/Keyframes$IntKeyframes;)V
-Landroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;-><init>(Landroid/util/Property;[[I)V
Landroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;-><init>(Ljava/lang/String;Landroid/animation/Keyframes$IntKeyframes;)V
-Landroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;-><init>(Ljava/lang/String;[[I)V
Landroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;->calculateValue(F)V
Landroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;->getAnimatedValue()Ljava/lang/Object;
Landroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;->mIntAnimatedValue:I
@@ -1161,33 +1068,25 @@
Landroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;->setAnimatedValue(Ljava/lang/Object;)V
Landroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;->setupSetter(Ljava/lang/Class;)V
Landroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;->sJNISetterPropertyMap:Ljava/util/HashMap;
-Landroid/animation/PropertyValuesHolder$MultiFloatValuesHolder;
Landroid/animation/PropertyValuesHolder$MultiFloatValuesHolder;-><init>(Ljava/lang/String;Landroid/animation/TypeConverter;Landroid/animation/TypeEvaluator;Landroid/animation/Keyframes;)V
-Landroid/animation/PropertyValuesHolder$MultiFloatValuesHolder;-><init>(Ljava/lang/String;Landroid/animation/TypeConverter;Landroid/animation/TypeEvaluator;[[Ljava/lang/Object;)V
Landroid/animation/PropertyValuesHolder$MultiFloatValuesHolder;->mJniSetter:J
Landroid/animation/PropertyValuesHolder$MultiFloatValuesHolder;->setAnimatedValue(Ljava/lang/Object;)V
Landroid/animation/PropertyValuesHolder$MultiFloatValuesHolder;->setupSetter(Ljava/lang/Class;)V
Landroid/animation/PropertyValuesHolder$MultiFloatValuesHolder;->setupSetterAndGetter(Ljava/lang/Object;)V
Landroid/animation/PropertyValuesHolder$MultiFloatValuesHolder;->sJNISetterPropertyMap:Ljava/util/HashMap;
-Landroid/animation/PropertyValuesHolder$MultiIntValuesHolder;
Landroid/animation/PropertyValuesHolder$MultiIntValuesHolder;-><init>(Ljava/lang/String;Landroid/animation/TypeConverter;Landroid/animation/TypeEvaluator;Landroid/animation/Keyframes;)V
-Landroid/animation/PropertyValuesHolder$MultiIntValuesHolder;-><init>(Ljava/lang/String;Landroid/animation/TypeConverter;Landroid/animation/TypeEvaluator;[[Ljava/lang/Object;)V
Landroid/animation/PropertyValuesHolder$MultiIntValuesHolder;->mJniSetter:J
Landroid/animation/PropertyValuesHolder$MultiIntValuesHolder;->setAnimatedValue(Ljava/lang/Object;)V
Landroid/animation/PropertyValuesHolder$MultiIntValuesHolder;->setupSetter(Ljava/lang/Class;)V
Landroid/animation/PropertyValuesHolder$MultiIntValuesHolder;->setupSetterAndGetter(Ljava/lang/Object;)V
Landroid/animation/PropertyValuesHolder$MultiIntValuesHolder;->sJNISetterPropertyMap:Ljava/util/HashMap;
-Landroid/animation/PropertyValuesHolder$PointFToFloatArray;
Landroid/animation/PropertyValuesHolder$PointFToFloatArray;-><init>()V
Landroid/animation/PropertyValuesHolder$PointFToFloatArray;->convert(Landroid/graphics/PointF;)[F
Landroid/animation/PropertyValuesHolder$PointFToFloatArray;->mCoordinates:[F
-Landroid/animation/PropertyValuesHolder$PointFToIntArray;
Landroid/animation/PropertyValuesHolder$PointFToIntArray;-><init>()V
Landroid/animation/PropertyValuesHolder$PointFToIntArray;->convert(Landroid/graphics/PointF;)[I
Landroid/animation/PropertyValuesHolder$PointFToIntArray;->mCoordinates:[I
-Landroid/animation/PropertyValuesHolder$PropertyValues$DataSource;
Landroid/animation/PropertyValuesHolder$PropertyValues$DataSource;->getValueAtFraction(F)Ljava/lang/Object;
-Landroid/animation/PropertyValuesHolder$PropertyValues;
Landroid/animation/PropertyValuesHolder$PropertyValues;-><init>()V
Landroid/animation/PropertyValuesHolder$PropertyValues;->dataSource:Landroid/animation/PropertyValuesHolder$PropertyValues$DataSource;
Landroid/animation/PropertyValuesHolder$PropertyValues;->endValue:Ljava/lang/Object;
@@ -1244,17 +1143,14 @@
Landroid/animation/PropertyValuesHolder;->sIntEvaluator:Landroid/animation/TypeEvaluator;
Landroid/animation/PropertyValuesHolder;->sSetterPropertyMap:Ljava/util/HashMap;
Landroid/animation/RectEvaluator;->mRect:Landroid/graphics/Rect;
-Landroid/animation/RevealAnimator;
Landroid/animation/RevealAnimator;-><init>(Landroid/view/View;IIFF)V
Landroid/animation/RevealAnimator;->mClipView:Landroid/view/View;
Landroid/animation/RevealAnimator;->onFinished()V
-Landroid/animation/StateListAnimator$StateListAnimatorConstantState;
Landroid/animation/StateListAnimator$StateListAnimatorConstantState;-><init>(Landroid/animation/StateListAnimator;)V
Landroid/animation/StateListAnimator$StateListAnimatorConstantState;->getChangingConfigurations()I
Landroid/animation/StateListAnimator$StateListAnimatorConstantState;->mAnimator:Landroid/animation/StateListAnimator;
Landroid/animation/StateListAnimator$StateListAnimatorConstantState;->mChangingConf:I
Landroid/animation/StateListAnimator$StateListAnimatorConstantState;->newInstance()Landroid/animation/StateListAnimator;
-Landroid/animation/StateListAnimator$Tuple;
Landroid/animation/StateListAnimator$Tuple;-><init>([ILandroid/animation/Animator;)V
Landroid/animation/StateListAnimator$Tuple;->getAnimator()Landroid/animation/Animator;
Landroid/animation/StateListAnimator$Tuple;->getSpecs()[I
@@ -1289,7 +1185,6 @@
Landroid/animation/TypeConverter;->getTargetType()Ljava/lang/Class;
Landroid/animation/TypeConverter;->mFromClass:Ljava/lang/Class;
Landroid/animation/TypeConverter;->mToClass:Ljava/lang/Class;
-Landroid/animation/ValueAnimator$RepeatMode;
Landroid/animation/ValueAnimator;->addAnimationCallback(J)V
Landroid/animation/ValueAnimator;->addOneShotCommitCallback()V
Landroid/animation/ValueAnimator;->animateBasedOnPlayTime(JJZ)V
@@ -1347,59 +1242,9 @@
Landroid/animation/ValueAnimator;->startAnimation()V
Landroid/animation/ValueAnimator;->startWithoutPulsing(Z)V
Landroid/animation/ValueAnimator;->TAG:Ljava/lang/String;
-Landroid/annotation/AnimatorRes;
-Landroid/annotation/AnimRes;
-Landroid/annotation/AnyRes;
-Landroid/annotation/AnyThread;
-Landroid/annotation/AppIdInt;
-Landroid/annotation/ArrayRes;
-Landroid/annotation/AttrRes;
-Landroid/annotation/BinderThread;
-Landroid/annotation/BoolRes;
-Landroid/annotation/BroadcastBehavior;
-Landroid/annotation/BytesLong;
-Landroid/annotation/CallbackExecutor;
-Landroid/annotation/CallSuper;
-Landroid/annotation/CheckResult;
-Landroid/annotation/ColorInt;
-Landroid/annotation/ColorLong;
-Landroid/annotation/ColorRes;
-Landroid/annotation/Condemned;
-Landroid/annotation/CurrentTimeMillisLong;
-Landroid/annotation/DimenRes;
-Landroid/annotation/Dimension$Unit;
-Landroid/annotation/Dimension;
Landroid/annotation/Dimension;->DP:I
Landroid/annotation/Dimension;->PX:I
Landroid/annotation/Dimension;->SP:I
-Landroid/annotation/DrawableRes;
-Landroid/annotation/DurationMillisLong;
-Landroid/annotation/ElapsedRealtimeLong;
-Landroid/annotation/FloatRange;
-Landroid/annotation/FontRes;
-Landroid/annotation/FractionRes;
-Landroid/annotation/HalfFloat;
-Landroid/annotation/IdRes;
-Landroid/annotation/IntDef;
-Landroid/annotation/IntegerRes;
-Landroid/annotation/InterpolatorRes;
-Landroid/annotation/IntRange;
-Landroid/annotation/LayoutRes;
-Landroid/annotation/LongDef;
-Landroid/annotation/MainThread;
-Landroid/annotation/MenuRes;
-Landroid/annotation/NavigationRes;
-Landroid/annotation/NonNull;
-Landroid/annotation/Nullable;
-Landroid/annotation/PluralsRes;
-Landroid/annotation/Px;
-Landroid/annotation/RawRes;
-Landroid/annotation/RequiresFeature;
-Landroid/annotation/RequiresPermission$Read;
-Landroid/annotation/RequiresPermission$Write;
-Landroid/annotation/RequiresPermission;
-Landroid/annotation/SdkConstant$SdkConstantType;
-Landroid/annotation/SdkConstant$SdkConstantType;-><init>()V
Landroid/annotation/SdkConstant$SdkConstantType;->ACTIVITY_INTENT_ACTION:Landroid/annotation/SdkConstant$SdkConstantType;
Landroid/annotation/SdkConstant$SdkConstantType;->BROADCAST_INTENT_ACTION:Landroid/annotation/SdkConstant$SdkConstantType;
Landroid/annotation/SdkConstant$SdkConstantType;->FEATURE:Landroid/annotation/SdkConstant$SdkConstantType;
@@ -1407,25 +1252,7 @@
Landroid/annotation/SdkConstant$SdkConstantType;->SERVICE_ACTION:Landroid/annotation/SdkConstant$SdkConstantType;
Landroid/annotation/SdkConstant$SdkConstantType;->valueOf(Ljava/lang/String;)Landroid/annotation/SdkConstant$SdkConstantType;
Landroid/annotation/SdkConstant$SdkConstantType;->values()[Landroid/annotation/SdkConstant$SdkConstantType;
-Landroid/annotation/SdkConstant;
-Landroid/annotation/Size;
-Landroid/annotation/StringDef;
-Landroid/annotation/StringRes;
-Landroid/annotation/StyleableRes;
-Landroid/annotation/StyleRes;
-Landroid/annotation/SuppressAutoDoc;
-Landroid/annotation/SystemApi;
-Landroid/annotation/SystemService;
-Landroid/annotation/TestApi;
-Landroid/annotation/TransitionRes;
-Landroid/annotation/UiThread;
-Landroid/annotation/UserIdInt;
-Landroid/annotation/Widget;
-Landroid/annotation/WorkerThread;
-Landroid/annotation/XmlRes;
-Landroid/app/ActionBar$DisplayOptions;
Landroid/app/ActionBar$LayoutParams;->encodeProperties(Landroid/view/ViewHierarchyEncoder;)V
-Landroid/app/ActionBar$NavigationMode;
Landroid/app/ActionBar;->closeOptionsMenu()Z
Landroid/app/ActionBar;->dispatchMenuVisibilityChanged(Z)V
Landroid/app/ActionBar;->invalidateOptionsMenu()Z
@@ -1438,20 +1265,14 @@
Landroid/app/ActionBar;->setDefaultDisplayHomeAsUpEnabled(Z)V
Landroid/app/ActionBar;->setWindowTitle(Ljava/lang/CharSequence;)V
Landroid/app/ActionBar;->startActionMode(Landroid/view/ActionMode$Callback;)Landroid/view/ActionMode;
-Landroid/app/Activity$DefaultKeyMode;
-Landroid/app/Activity$HostCallbacks;
-Landroid/app/Activity$HostCallbacks;-><init>()V
Landroid/app/Activity$HostCallbacks;->onStartActivityAsUserFromFragment(Landroid/app/Fragment;Landroid/content/Intent;ILandroid/os/Bundle;Landroid/os/UserHandle;)V
-Landroid/app/Activity$ManagedCursor;
Landroid/app/Activity$ManagedCursor;-><init>(Landroid/database/Cursor;)V
Landroid/app/Activity$ManagedCursor;->mCursor:Landroid/database/Cursor;
Landroid/app/Activity$ManagedCursor;->mReleased:Z
Landroid/app/Activity$ManagedCursor;->mUpdated:Z
-Landroid/app/Activity$ManagedDialog;
Landroid/app/Activity$ManagedDialog;-><init>()V
Landroid/app/Activity$ManagedDialog;->mArgs:Landroid/os/Bundle;
Landroid/app/Activity$ManagedDialog;->mDialog:Landroid/app/Dialog;
-Landroid/app/Activity$NonConfigurationInstances;
Landroid/app/Activity$NonConfigurationInstances;-><init>()V
Landroid/app/Activity$NonConfigurationInstances;->activity:Ljava/lang/Object;
Landroid/app/Activity$NonConfigurationInstances;->children:Ljava/util/HashMap;
@@ -1599,14 +1420,11 @@
Landroid/app/ActivityGroup;->STATES_KEY:Ljava/lang/String;
Landroid/app/ActivityManager$AppTask;-><init>(Landroid/app/IAppTask;)V
Landroid/app/ActivityManager$AppTask;->mAppTaskImpl:Landroid/app/IAppTask;
-Landroid/app/ActivityManager$BugreportMode;
Landroid/app/ActivityManager$MemoryInfo;-><init>(Landroid/os/Parcel;)V
-Landroid/app/ActivityManager$MoveTaskFlags;
Landroid/app/ActivityManager$ProcessErrorStateInfo;-><init>(Landroid/os/Parcel;)V
Landroid/app/ActivityManager$RecentTaskInfo;-><init>(Landroid/os/Parcel;)V
Landroid/app/ActivityManager$RecentTaskInfo;->bounds:Landroid/graphics/Rect;
Landroid/app/ActivityManager$RecentTaskInfo;->realActivity:Landroid/content/ComponentName;
-Landroid/app/ActivityManager$RunningAppProcessInfo$Importance;
Landroid/app/ActivityManager$RunningAppProcessInfo;-><init>(Landroid/os/Parcel;)V
Landroid/app/ActivityManager$RunningAppProcessInfo;->FLAG_CANT_SAVE_STATE:I
Landroid/app/ActivityManager$RunningAppProcessInfo;->importanceReasonImportance:I
@@ -1622,7 +1440,6 @@
Landroid/app/ActivityManager$RunningTaskInfo;->stackId:I
Landroid/app/ActivityManager$RunningTaskInfo;->supportsSplitScreenMultiWindow:Z
Landroid/app/ActivityManager$StackId;-><init>()V
-Landroid/app/ActivityManager$StackInfo;
Landroid/app/ActivityManager$StackInfo;-><init>()V
Landroid/app/ActivityManager$StackInfo;-><init>(Landroid/os/Parcel;)V
Landroid/app/ActivityManager$StackInfo;->configuration:Landroid/content/res/Configuration;
@@ -1657,7 +1474,6 @@
Landroid/app/ActivityManager$TaskDescription;->setNavigationBarColor(I)V
Landroid/app/ActivityManager$TaskDescription;->setPrimaryColor(I)V
Landroid/app/ActivityManager$TaskDescription;->setStatusBarColor(I)V
-Landroid/app/ActivityManager$TaskSnapshot;
Landroid/app/ActivityManager$TaskSnapshot;-><init>(Landroid/graphics/GraphicBuffer;ILandroid/graphics/Rect;ZFZIIZ)V
Landroid/app/ActivityManager$TaskSnapshot;-><init>(Landroid/os/Parcel;)V
Landroid/app/ActivityManager$TaskSnapshot;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -1673,7 +1489,6 @@
Landroid/app/ActivityManager$TaskSnapshot;->mSnapshot:Landroid/graphics/GraphicBuffer;
Landroid/app/ActivityManager$TaskSnapshot;->mSystemUiVisibility:I
Landroid/app/ActivityManager$TaskSnapshot;->mWindowingMode:I
-Landroid/app/ActivityManager$UidObserver;
Landroid/app/ActivityManager$UidObserver;-><init>(Landroid/app/ActivityManager$OnUidImportanceListener;Landroid/content/Context;)V
Landroid/app/ActivityManager$UidObserver;->mContext:Landroid/content/Context;
Landroid/app/ActivityManager$UidObserver;->mListener:Landroid/app/ActivityManager$OnUidImportanceListener;
@@ -1810,13 +1625,10 @@
Landroid/app/ActivityManager;->USER_OP_IS_CURRENT:I
Landroid/app/ActivityManager;->USER_OP_SUCCESS:I
Landroid/app/ActivityManager;->USER_OP_UNKNOWN_USER:I
-Landroid/app/ActivityManagerInternal$ScreenObserver;
Landroid/app/ActivityManagerInternal$ScreenObserver;->onAwakeStateChanged(Z)V
Landroid/app/ActivityManagerInternal$ScreenObserver;->onKeyguardStateChanged(Z)V
-Landroid/app/ActivityManagerInternal$SleepToken;
Landroid/app/ActivityManagerInternal$SleepToken;-><init>()V
Landroid/app/ActivityManagerInternal$SleepToken;->release()V
-Landroid/app/ActivityManagerInternal;
Landroid/app/ActivityManagerInternal;-><init>()V
Landroid/app/ActivityManagerInternal;->acquireSleepToken(Ljava/lang/String;I)Landroid/app/ActivityManagerInternal$SleepToken;
Landroid/app/ActivityManagerInternal;->APP_TRANSITION_RECENTS_ANIM:I
@@ -1873,19 +1685,16 @@
Landroid/app/ActivityManagerInternal;->startIsolatedProcess(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Runnable;)Z
Landroid/app/ActivityManagerInternal;->updateDeviceIdleTempWhitelist([IIZ)V
Landroid/app/ActivityManagerInternal;->updatePersistentConfigurationForUser(Landroid/content/res/Configuration;I)V
-Landroid/app/ActivityManagerNative;
Landroid/app/ActivityManagerNative;->broadcastStickyIntent(Landroid/content/Intent;Ljava/lang/String;II)V
Landroid/app/ActivityManagerNative;->noteAlarmFinish(Landroid/app/PendingIntent;ILjava/lang/String;)V
Landroid/app/ActivityManagerNative;->noteAlarmStart(Landroid/app/PendingIntent;ILjava/lang/String;)V
Landroid/app/ActivityManagerNative;->noteWakeupAlarm(Landroid/app/PendingIntent;ILjava/lang/String;Ljava/lang/String;)V
-Landroid/app/ActivityManagerProto;
Landroid/app/ActivityManagerProto;-><init>()V
Landroid/app/ActivityManagerProto;->UID_OBSERVER_FLAG_ACTIVE:I
Landroid/app/ActivityManagerProto;->UID_OBSERVER_FLAG_CACHED:I
Landroid/app/ActivityManagerProto;->UID_OBSERVER_FLAG_GONE:I
Landroid/app/ActivityManagerProto;->UID_OBSERVER_FLAG_IDLE:I
Landroid/app/ActivityManagerProto;->UID_OBSERVER_FLAG_PROCSTATE:I
-Landroid/app/ActivityOptions$HideWindowListener;
Landroid/app/ActivityOptions$HideWindowListener;-><init>(Landroid/view/Window;Landroid/app/ExitTransitionCoordinator;)V
Landroid/app/ActivityOptions$HideWindowListener;->hideSharedElements()V
Landroid/app/ActivityOptions$HideWindowListener;->hideWhenDone()V
@@ -1895,9 +1704,7 @@
Landroid/app/ActivityOptions$HideWindowListener;->mTransitionEnded:Z
Landroid/app/ActivityOptions$HideWindowListener;->mWaitingForTransition:Z
Landroid/app/ActivityOptions$HideWindowListener;->mWindow:Landroid/view/Window;
-Landroid/app/ActivityOptions$OnAnimationFinishedListener;
Landroid/app/ActivityOptions$OnAnimationFinishedListener;->onAnimationFinished()V
-Landroid/app/ActivityOptions$OnAnimationStartedListener;
Landroid/app/ActivityOptions$OnAnimationStartedListener;->onAnimationStarted()V
Landroid/app/ActivityOptions;-><init>()V
Landroid/app/ActivityOptions;-><init>(Landroid/os/Bundle;)V
@@ -2038,10 +1845,8 @@
Landroid/app/ActivityOptions;->setOnAnimationStartedListener(Landroid/os/Handler;Landroid/app/ActivityOptions$OnAnimationStartedListener;)V
Landroid/app/ActivityOptions;->setRemoteAnimationAdapter(Landroid/view/RemoteAnimationAdapter;)V
Landroid/app/ActivityOptions;->setRotationAnimationHint(I)V
-Landroid/app/ActivityOptions;->startSharedElementAnimation(Landroid/view/Window;[[Landroid/util/Pair;)Landroid/app/ActivityOptions;
Landroid/app/ActivityOptions;->stopSharedElementAnimation(Landroid/view/Window;)V
Landroid/app/ActivityOptions;->TAG:Ljava/lang/String;
-Landroid/app/ActivityThread$ActivityClientRecord;
Landroid/app/ActivityThread$ActivityClientRecord;-><init>(Landroid/os/IBinder;Landroid/content/Intent;ILandroid/content/pm/ActivityInfo;Landroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;Ljava/lang/String;Lcom/android/internal/app/IVoiceInteractor;Landroid/os/Bundle;Landroid/os/PersistableBundle;Ljava/util/List;Ljava/util/List;ZLandroid/app/ProfilerInfo;Landroid/app/ClientTransactionHandler;)V
Landroid/app/ActivityThread$ActivityClientRecord;->configCallback:Landroid/view/ViewRootImpl$ActivityConfigCallback;
Landroid/app/ActivityThread$ActivityClientRecord;->createdConfig:Landroid/content/res/Configuration;
@@ -2076,7 +1881,6 @@
Landroid/app/ActivityThread$ActivityClientRecord;->tmpConfig:Landroid/content/res/Configuration;
Landroid/app/ActivityThread$ActivityClientRecord;->voiceInteractor:Lcom/android/internal/app/IVoiceInteractor;
Landroid/app/ActivityThread$ActivityClientRecord;->window:Landroid/view/Window;
-Landroid/app/ActivityThread$AppBindData;
Landroid/app/ActivityThread$AppBindData;->autofillCompatibilityEnabled:Z
Landroid/app/ActivityThread$AppBindData;->buildSerial:Ljava/lang/String;
Landroid/app/ActivityThread$AppBindData;->config:Landroid/content/res/Configuration;
@@ -2087,8 +1891,6 @@
Landroid/app/ActivityThread$AppBindData;->instrumentationUiAutomationConnection:Landroid/app/IUiAutomationConnection;
Landroid/app/ActivityThread$AppBindData;->instrumentationWatcher:Landroid/app/IInstrumentationWatcher;
Landroid/app/ActivityThread$AppBindData;->trackAllocation:Z
-Landroid/app/ActivityThread$ApplicationThread;
-Landroid/app/ActivityThread$ApplicationThread;-><init>()V
Landroid/app/ActivityThread$ApplicationThread;->attachAgent(Ljava/lang/String;)V
Landroid/app/ActivityThread$ApplicationThread;->bindApplication(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;Ljava/util/List;Landroid/content/ComponentName;Landroid/app/ProfilerInfo;Landroid/os/Bundle;Landroid/app/IInstrumentationWatcher;Landroid/app/IUiAutomationConnection;IZZZZLandroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;Ljava/util/Map;Landroid/os/Bundle;Ljava/lang/String;Z)V
Landroid/app/ActivityThread$ApplicationThread;->clearDnsCache()V
@@ -2147,43 +1949,30 @@
Landroid/app/ActivityThread$ApplicationThread;->updateProcessState(IZ)V
Landroid/app/ActivityThread$ApplicationThread;->updateTimePrefs(I)V
Landroid/app/ActivityThread$ApplicationThread;->updateTimeZone()V
-Landroid/app/ActivityThread$BindServiceData;
Landroid/app/ActivityThread$BindServiceData;-><init>()V
Landroid/app/ActivityThread$BindServiceData;->rebind:Z
-Landroid/app/ActivityThread$ContextCleanupInfo;
Landroid/app/ActivityThread$ContextCleanupInfo;-><init>()V
Landroid/app/ActivityThread$ContextCleanupInfo;->context:Landroid/app/ContextImpl;
Landroid/app/ActivityThread$ContextCleanupInfo;->what:Ljava/lang/String;
Landroid/app/ActivityThread$ContextCleanupInfo;->who:Ljava/lang/String;
-Landroid/app/ActivityThread$CreateBackupAgentData;
Landroid/app/ActivityThread$CreateBackupAgentData;-><init>()V
Landroid/app/ActivityThread$CreateBackupAgentData;->appInfo:Landroid/content/pm/ApplicationInfo;
Landroid/app/ActivityThread$CreateBackupAgentData;->backupMode:I
Landroid/app/ActivityThread$CreateBackupAgentData;->compatInfo:Landroid/content/res/CompatibilityInfo;
-Landroid/app/ActivityThread$CreateServiceData;
-Landroid/app/ActivityThread$DropBoxReporter;
-Landroid/app/ActivityThread$DropBoxReporter;-><init>()V
Landroid/app/ActivityThread$DropBoxReporter;->dropBox:Landroid/os/DropBoxManager;
Landroid/app/ActivityThread$DropBoxReporter;->ensureInitialized()V
-Landroid/app/ActivityThread$DumpComponentInfo;
Landroid/app/ActivityThread$DumpComponentInfo;-><init>()V
Landroid/app/ActivityThread$DumpComponentInfo;->args:[Ljava/lang/String;
Landroid/app/ActivityThread$DumpComponentInfo;->fd:Landroid/os/ParcelFileDescriptor;
Landroid/app/ActivityThread$DumpComponentInfo;->prefix:Ljava/lang/String;
Landroid/app/ActivityThread$DumpComponentInfo;->token:Landroid/os/IBinder;
-Landroid/app/ActivityThread$DumpHeapData;
Landroid/app/ActivityThread$DumpHeapData;-><init>()V
Landroid/app/ActivityThread$DumpHeapData;->fd:Landroid/os/ParcelFileDescriptor;
Landroid/app/ActivityThread$DumpHeapData;->mallocInfo:Z
Landroid/app/ActivityThread$DumpHeapData;->managed:Z
Landroid/app/ActivityThread$DumpHeapData;->path:Ljava/lang/String;
Landroid/app/ActivityThread$DumpHeapData;->runGc:Z
-Landroid/app/ActivityThread$EventLoggingReporter;
Landroid/app/ActivityThread$EventLoggingReporter;-><init>()V
-Landroid/app/ActivityThread$GcIdler;
-Landroid/app/ActivityThread$GcIdler;-><init>()V
-Landroid/app/ActivityThread$H;
-Landroid/app/ActivityThread$H;-><init>()V
Landroid/app/ActivityThread$H;->APPLICATION_INFO_CHANGED:I
Landroid/app/ActivityThread$H;->ATTACH_AGENT:I
Landroid/app/ActivityThread$H;->BIND_APPLICATION:I
@@ -2213,9 +2002,6 @@
Landroid/app/ActivityThread$H;->TRANSLUCENT_CONVERSION_COMPLETE:I
Landroid/app/ActivityThread$H;->UNSTABLE_PROVIDER_DIED:I
Landroid/app/ActivityThread$H;->UPDATE_PACKAGE_COMPATIBILITY_INFO:I
-Landroid/app/ActivityThread$Idler;
-Landroid/app/ActivityThread$Idler;-><init>()V
-Landroid/app/ActivityThread$Profiler;
Landroid/app/ActivityThread$Profiler;-><init>()V
Landroid/app/ActivityThread$Profiler;->autoStopProfiler:Z
Landroid/app/ActivityThread$Profiler;->handlingProfiling:Z
@@ -2227,39 +2013,30 @@
Landroid/app/ActivityThread$Profiler;->startProfiling()V
Landroid/app/ActivityThread$Profiler;->stopProfiling()V
Landroid/app/ActivityThread$Profiler;->streamingOutput:Z
-Landroid/app/ActivityThread$ProviderClientRecord;
-Landroid/app/ActivityThread$ProviderClientRecord;-><init>([Ljava/lang/String;Landroid/content/IContentProvider;Landroid/content/ContentProvider;Landroid/app/ContentProviderHolder;)V
Landroid/app/ActivityThread$ProviderClientRecord;->mNames:[Ljava/lang/String;
-Landroid/app/ActivityThread$ProviderKey;
Landroid/app/ActivityThread$ProviderKey;-><init>(Ljava/lang/String;I)V
Landroid/app/ActivityThread$ProviderKey;->authority:Ljava/lang/String;
Landroid/app/ActivityThread$ProviderKey;->userId:I
-Landroid/app/ActivityThread$ProviderRefCount;
Landroid/app/ActivityThread$ProviderRefCount;-><init>(Landroid/app/ContentProviderHolder;Landroid/app/ActivityThread$ProviderClientRecord;II)V
Landroid/app/ActivityThread$ProviderRefCount;->client:Landroid/app/ActivityThread$ProviderClientRecord;
Landroid/app/ActivityThread$ProviderRefCount;->holder:Landroid/app/ContentProviderHolder;
Landroid/app/ActivityThread$ProviderRefCount;->removePending:Z
Landroid/app/ActivityThread$ProviderRefCount;->stableCount:I
Landroid/app/ActivityThread$ProviderRefCount;->unstableCount:I
-Landroid/app/ActivityThread$ReceiverData;
Landroid/app/ActivityThread$ReceiverData;-><init>(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZLandroid/os/IBinder;I)V
-Landroid/app/ActivityThread$RequestAssistContextExtras;
Landroid/app/ActivityThread$RequestAssistContextExtras;-><init>()V
Landroid/app/ActivityThread$RequestAssistContextExtras;->activityToken:Landroid/os/IBinder;
Landroid/app/ActivityThread$RequestAssistContextExtras;->flags:I
Landroid/app/ActivityThread$RequestAssistContextExtras;->requestToken:Landroid/os/IBinder;
Landroid/app/ActivityThread$RequestAssistContextExtras;->requestType:I
Landroid/app/ActivityThread$RequestAssistContextExtras;->sessionId:I
-Landroid/app/ActivityThread$ServiceArgsData;
Landroid/app/ActivityThread$ServiceArgsData;-><init>()V
Landroid/app/ActivityThread$ServiceArgsData;->flags:I
Landroid/app/ActivityThread$ServiceArgsData;->startId:I
Landroid/app/ActivityThread$ServiceArgsData;->taskRemoved:Z
-Landroid/app/ActivityThread$UpdateCompatibilityData;
Landroid/app/ActivityThread$UpdateCompatibilityData;-><init>()V
Landroid/app/ActivityThread$UpdateCompatibilityData;->info:Landroid/content/res/CompatibilityInfo;
Landroid/app/ActivityThread$UpdateCompatibilityData;->pkg:Ljava/lang/String;
-Landroid/app/ActivityThread;
Landroid/app/ActivityThread;->ACTIVITY_THREAD_CHECKIN_VERSION:I
Landroid/app/ActivityThread;->applyCompatConfiguration(I)Landroid/content/res/Configuration;
Landroid/app/ActivityThread;->applyConfigCompatMainThread(ILandroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;)Landroid/content/res/Configuration;
@@ -2408,7 +2185,6 @@
Landroid/app/ActivityThread;->performStopActivityInner(Landroid/app/ActivityThread$ActivityClientRecord;Landroid/app/servertransaction/PendingTransactionActions$StopInfo;ZZZLjava/lang/String;)V
Landroid/app/ActivityThread;->performUserLeavingActivity(Landroid/app/ActivityThread$ActivityClientRecord;)V
Landroid/app/ActivityThread;->prepareRelaunchActivity(Landroid/os/IBinder;Ljava/util/List;Ljava/util/List;ILandroid/util/MergedConfiguration;Z)Landroid/app/ActivityThread$ActivityClientRecord;
-Landroid/app/ActivityThread;->printRow(Ljava/io/PrintWriter;Ljava/lang/String;[[Ljava/lang/Object;)V
Landroid/app/ActivityThread;->PROC_START_SEQ_IDENT:Ljava/lang/String;
Landroid/app/ActivityThread;->relaunchAllActivities()V
Landroid/app/ActivityThread;->reportRelaunch(Landroid/os/IBinder;Landroid/app/servertransaction/PendingTransactionActions;)V
@@ -2440,13 +2216,9 @@
Landroid/app/ActivityThread;->updatePendingConfiguration(Landroid/content/res/Configuration;)V
Landroid/app/ActivityThread;->updateProcessState(IZ)V
Landroid/app/ActivityThread;->updateVisibility(Landroid/app/ActivityThread$ActivityClientRecord;Z)V
-Landroid/app/ActivityTransitionCoordinator$ContinueTransitionListener;
-Landroid/app/ActivityTransitionCoordinator$ContinueTransitionListener;-><init>()V
-Landroid/app/ActivityTransitionCoordinator$FixedEpicenterCallback;
Landroid/app/ActivityTransitionCoordinator$FixedEpicenterCallback;-><init>()V
Landroid/app/ActivityTransitionCoordinator$FixedEpicenterCallback;->mEpicenter:Landroid/graphics/Rect;
Landroid/app/ActivityTransitionCoordinator$FixedEpicenterCallback;->setEpicenter(Landroid/graphics/Rect;)V
-Landroid/app/ActivityTransitionCoordinator$GhostViewListeners;
Landroid/app/ActivityTransitionCoordinator$GhostViewListeners;-><init>(Landroid/view/View;Landroid/view/View;Landroid/view/ViewGroup;)V
Landroid/app/ActivityTransitionCoordinator$GhostViewListeners;->getView()Landroid/view/View;
Landroid/app/ActivityTransitionCoordinator$GhostViewListeners;->mDecor:Landroid/view/ViewGroup;
@@ -2455,7 +2227,6 @@
Landroid/app/ActivityTransitionCoordinator$GhostViewListeners;->mView:Landroid/view/View;
Landroid/app/ActivityTransitionCoordinator$GhostViewListeners;->mViewTreeObserver:Landroid/view/ViewTreeObserver;
Landroid/app/ActivityTransitionCoordinator$GhostViewListeners;->removeListener()V
-Landroid/app/ActivityTransitionCoordinator$SharedElementOriginalState;
Landroid/app/ActivityTransitionCoordinator$SharedElementOriginalState;-><init>()V
Landroid/app/ActivityTransitionCoordinator$SharedElementOriginalState;->mBottom:I
Landroid/app/ActivityTransitionCoordinator$SharedElementOriginalState;->mElevation:F
@@ -2467,7 +2238,6 @@
Landroid/app/ActivityTransitionCoordinator$SharedElementOriginalState;->mScaleType:Landroid/widget/ImageView$ScaleType;
Landroid/app/ActivityTransitionCoordinator$SharedElementOriginalState;->mTop:I
Landroid/app/ActivityTransitionCoordinator$SharedElementOriginalState;->mTranslationZ:F
-Landroid/app/ActivityTransitionCoordinator;
Landroid/app/ActivityTransitionCoordinator;-><init>(Landroid/view/Window;Ljava/util/ArrayList;Landroid/app/SharedElementCallback;Z)V
Landroid/app/ActivityTransitionCoordinator;->backgroundAnimatorComplete()V
Landroid/app/ActivityTransitionCoordinator;->cancelPendingTransitions()Z
@@ -2562,7 +2332,6 @@
Landroid/app/ActivityTransitionCoordinator;->transitionStarted()V
Landroid/app/ActivityTransitionCoordinator;->viewsReady(Landroid/util/ArrayMap;)V
Landroid/app/ActivityTransitionCoordinator;->viewsTransitionComplete()V
-Landroid/app/ActivityTransitionState;
Landroid/app/ActivityTransitionState;-><init>()V
Landroid/app/ActivityTransitionState;->addExitTransitionCoordinator(Landroid/app/ExitTransitionCoordinator;)I
Landroid/app/ActivityTransitionState;->clear()V
@@ -2596,19 +2365,13 @@
Landroid/app/ActivityTransitionState;->startExitBackTransition(Landroid/app/Activity;)Z
Landroid/app/ActivityTransitionState;->startExitOutTransition(Landroid/app/Activity;Landroid/os/Bundle;)V
Landroid/app/ActivityTransitionState;->startPostponedEnterTransition()V
-Landroid/app/ActivityView$StateCallback;
Landroid/app/ActivityView$StateCallback;-><init>()V
Landroid/app/ActivityView$StateCallback;->onActivityViewDestroyed(Landroid/app/ActivityView;)V
Landroid/app/ActivityView$StateCallback;->onActivityViewReady(Landroid/app/ActivityView;)V
Landroid/app/ActivityView$StateCallback;->onTaskMovedToFront(Landroid/app/ActivityManager$StackInfo;)V
-Landroid/app/ActivityView$SurfaceCallback;
-Landroid/app/ActivityView$SurfaceCallback;-><init>()V
-Landroid/app/ActivityView$TaskStackListenerImpl;
-Landroid/app/ActivityView$TaskStackListenerImpl;-><init>()V
Landroid/app/ActivityView$TaskStackListenerImpl;->getTopMostStackInfo()Landroid/app/ActivityManager$StackInfo;
Landroid/app/ActivityView$TaskStackListenerImpl;->onTaskDescriptionChanged(ILandroid/app/ActivityManager$TaskDescription;)V
Landroid/app/ActivityView$TaskStackListenerImpl;->onTaskMovedToFront(I)V
-Landroid/app/ActivityView;
Landroid/app/ActivityView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
Landroid/app/ActivityView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
Landroid/app/ActivityView;->cleanTapExcludeRegion()V
@@ -2638,7 +2401,6 @@
Landroid/app/admin/ConnectEvent;-><init>(Ljava/lang/String;ILjava/lang/String;J)V
Landroid/app/admin/ConnectEvent;->mIpAddress:Ljava/lang/String;
Landroid/app/admin/ConnectEvent;->mPort:I
-Landroid/app/admin/DeviceAdminInfo$PolicyInfo;
Landroid/app/admin/DeviceAdminInfo$PolicyInfo;-><init>(ILjava/lang/String;II)V
Landroid/app/admin/DeviceAdminInfo$PolicyInfo;-><init>(ILjava/lang/String;IIII)V
Landroid/app/admin/DeviceAdminInfo$PolicyInfo;->description:I
@@ -2661,7 +2423,6 @@
Landroid/app/admin/DeviceAdminInfo;->USES_POLICY_PROFILE_OWNER:I
Landroid/app/admin/DeviceAdminInfo;->USES_POLICY_SETS_GLOBAL_PROXY:I
Landroid/app/admin/DeviceAdminInfo;->writePoliciesToXml(Lorg/xmlpull/v1/XmlSerializer;)V
-Landroid/app/admin/DeviceAdminReceiver$BugreportFailureCode;
Landroid/app/admin/DeviceAdminReceiver;->ACTION_AFFILIATED_PROFILE_TRANSFER_OWNERSHIP_COMPLETE:Ljava/lang/String;
Landroid/app/admin/DeviceAdminReceiver;->ACTION_BUGREPORT_FAILED:Ljava/lang/String;
Landroid/app/admin/DeviceAdminReceiver;->ACTION_BUGREPORT_SHARE:Ljava/lang/String;
@@ -2689,24 +2450,13 @@
Landroid/app/admin/DeviceAdminReceiver;->mManager:Landroid/app/admin/DevicePolicyManager;
Landroid/app/admin/DeviceAdminReceiver;->mWho:Landroid/content/ComponentName;
Landroid/app/admin/DeviceAdminReceiver;->TAG:Ljava/lang/String;
-Landroid/app/admin/DeviceAdminService$IDeviceAdminServiceImpl;
-Landroid/app/admin/DeviceAdminService$IDeviceAdminServiceImpl;-><init>()V
Landroid/app/admin/DeviceAdminService;->mImpl:Landroid/app/admin/DeviceAdminService$IDeviceAdminServiceImpl;
-Landroid/app/admin/DevicePolicyCache$EmptyDevicePolicyCache;
Landroid/app/admin/DevicePolicyCache$EmptyDevicePolicyCache;-><init>()V
Landroid/app/admin/DevicePolicyCache$EmptyDevicePolicyCache;->getScreenCaptureDisabled(I)Z
Landroid/app/admin/DevicePolicyCache$EmptyDevicePolicyCache;->INSTANCE:Landroid/app/admin/DevicePolicyCache$EmptyDevicePolicyCache;
-Landroid/app/admin/DevicePolicyCache;
Landroid/app/admin/DevicePolicyCache;-><init>()V
Landroid/app/admin/DevicePolicyCache;->getInstance()Landroid/app/admin/DevicePolicyCache;
Landroid/app/admin/DevicePolicyCache;->getScreenCaptureDisabled(I)Z
-Landroid/app/admin/DevicePolicyManager$AttestationIdType;
-Landroid/app/admin/DevicePolicyManager$CreateAndManageUserFlags;
-Landroid/app/admin/DevicePolicyManager$LockNowFlag;
-Landroid/app/admin/DevicePolicyManager$LockTaskFeature;
-Landroid/app/admin/DevicePolicyManager$ProvisioningPreCondition;
-Landroid/app/admin/DevicePolicyManager$SystemSettingsWhitelist;
-Landroid/app/admin/DevicePolicyManager$UserProvisioningState;
Landroid/app/admin/DevicePolicyManager;-><init>(Landroid/content/Context;Landroid/app/admin/IDevicePolicyManager;)V
Landroid/app/admin/DevicePolicyManager;-><init>(Landroid/content/Context;Landroid/app/admin/IDevicePolicyManager;Z)V
Landroid/app/admin/DevicePolicyManager;->ACTION_BUGREPORT_SHARING_ACCEPTED:Ljava/lang/String;
@@ -2812,9 +2562,7 @@
Landroid/app/admin/DevicePolicyManager;->TAG:Ljava/lang/String;
Landroid/app/admin/DevicePolicyManager;->uninstallPackageWithActiveAdmins(Ljava/lang/String;)V
Landroid/app/admin/DevicePolicyManager;->wipeDataInternal(ILjava/lang/String;)V
-Landroid/app/admin/DevicePolicyManagerInternal$OnCrossProfileWidgetProvidersChangeListener;
Landroid/app/admin/DevicePolicyManagerInternal$OnCrossProfileWidgetProvidersChangeListener;->onCrossProfileWidgetProvidersChanged(ILjava/util/List;)V
-Landroid/app/admin/DevicePolicyManagerInternal;
Landroid/app/admin/DevicePolicyManagerInternal;-><init>()V
Landroid/app/admin/DevicePolicyManagerInternal;->addOnCrossProfileWidgetProvidersChangeListener(Landroid/app/admin/DevicePolicyManagerInternal$OnCrossProfileWidgetProvidersChangeListener;)V
Landroid/app/admin/DevicePolicyManagerInternal;->canUserHaveUntrustedCredentialReset(I)Z
@@ -2851,16 +2599,12 @@
Landroid/app/admin/FreezePeriod;->toCurrentOrFutureRealDates(Ljava/time/LocalDate;)Landroid/util/Pair;
Landroid/app/admin/FreezePeriod;->validateAgainstPreviousFreezePeriod(Ljava/util/List;Ljava/time/LocalDate;Ljava/time/LocalDate;Ljava/time/LocalDate;)V
Landroid/app/admin/FreezePeriod;->validatePeriods(Ljava/util/List;)V
-Landroid/app/admin/IDeviceAdminService$Stub$Proxy;
Landroid/app/admin/IDeviceAdminService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/app/admin/IDeviceAdminService$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/app/admin/IDeviceAdminService$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/app/admin/IDeviceAdminService$Stub;
Landroid/app/admin/IDeviceAdminService$Stub;-><init>()V
Landroid/app/admin/IDeviceAdminService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/admin/IDeviceAdminService;
Landroid/app/admin/IDeviceAdminService$Stub;->DESCRIPTOR:Ljava/lang/String;
-Landroid/app/admin/IDeviceAdminService;
-Landroid/app/admin/IDevicePolicyManager$Stub$Proxy;
Landroid/app/admin/IDevicePolicyManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/app/admin/IDevicePolicyManager$Stub$Proxy;->addCrossProfileIntentFilter(Landroid/content/ComponentName;Landroid/content/IntentFilter;I)V
Landroid/app/admin/IDevicePolicyManager$Stub$Proxy;->addCrossProfileWidgetProvider(Landroid/content/ComponentName;Ljava/lang/String;)Z
@@ -3127,7 +2871,6 @@
Landroid/app/admin/IDevicePolicyManager$Stub$Proxy;->uninstallPackageWithActiveAdmins(Ljava/lang/String;)V
Landroid/app/admin/IDevicePolicyManager$Stub$Proxy;->updateOverrideApn(Landroid/content/ComponentName;ILandroid/telephony/data/ApnSetting;)Z
Landroid/app/admin/IDevicePolicyManager$Stub$Proxy;->wipeDataWithReason(ILjava/lang/String;)V
-Landroid/app/admin/IDevicePolicyManager$Stub;
Landroid/app/admin/IDevicePolicyManager$Stub;-><init>()V
Landroid/app/admin/IDevicePolicyManager$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/app/admin/IDevicePolicyManager$Stub;->TRANSACTION_addCrossProfileIntentFilter:I
@@ -3391,7 +3134,6 @@
Landroid/app/admin/IDevicePolicyManager$Stub;->TRANSACTION_uninstallPackageWithActiveAdmins:I
Landroid/app/admin/IDevicePolicyManager$Stub;->TRANSACTION_updateOverrideApn:I
Landroid/app/admin/IDevicePolicyManager$Stub;->TRANSACTION_wipeDataWithReason:I
-Landroid/app/admin/IDevicePolicyManager;
Landroid/app/admin/IDevicePolicyManager;->addCrossProfileIntentFilter(Landroid/content/ComponentName;Landroid/content/IntentFilter;I)V
Landroid/app/admin/IDevicePolicyManager;->addCrossProfileWidgetProvider(Landroid/content/ComponentName;Ljava/lang/String;)Z
Landroid/app/admin/IDevicePolicyManager;->addOverrideApn(Landroid/content/ComponentName;Landroid/telephony/data/ApnSetting;)I
@@ -3662,8 +3404,6 @@
Landroid/app/admin/NetworkEvent;->PARCEL_TOKEN_CONNECT_EVENT:I
Landroid/app/admin/NetworkEvent;->PARCEL_TOKEN_DNS_EVENT:I
Landroid/app/admin/NetworkEvent;->setId(J)V
-Landroid/app/admin/PasswordMetrics$CharacterCatagory;
-Landroid/app/admin/PasswordMetrics;
Landroid/app/admin/PasswordMetrics;-><init>()V
Landroid/app/admin/PasswordMetrics;-><init>(II)V
Landroid/app/admin/PasswordMetrics;-><init>(IIIIIIII)V
@@ -3692,8 +3432,6 @@
Landroid/app/admin/SecurityLog$SecurityEvent;->mEvent:Landroid/util/EventLog$Event;
Landroid/app/admin/SecurityLog$SecurityEvent;->mId:J
Landroid/app/admin/SecurityLog$SecurityEvent;->setId(J)V
-Landroid/app/admin/SecurityLog$SecurityLogLevel;
-Landroid/app/admin/SecurityLog$SecurityLogTag;
Landroid/app/admin/SecurityLog;->getLoggingEnabledProperty()Z
Landroid/app/admin/SecurityLog;->isLoggingEnabled()Z
Landroid/app/admin/SecurityLog;->PROPERTY_LOGGING_ENABLED:Ljava/lang/String;
@@ -3703,8 +3441,6 @@
Landroid/app/admin/SecurityLog;->readPreviousEvents(Ljava/util/Collection;)V
Landroid/app/admin/SecurityLog;->setLoggingEnabledProperty(Z)V
Landroid/app/admin/SecurityLog;->writeEvent(ILjava/lang/String;)I
-Landroid/app/admin/SecurityLog;->writeEvent(I[[Ljava/lang/Object;)I
-Landroid/app/admin/SecurityLogTags;
Landroid/app/admin/SecurityLogTags;-><init>()V
Landroid/app/admin/SecurityLogTags;->SECURITY_ADB_SHELL_COMMAND:I
Landroid/app/admin/SecurityLogTags;->SECURITY_ADB_SHELL_INTERACTIVE:I
@@ -3772,7 +3508,6 @@
Landroid/app/admin/SecurityLogTags;->writeSecurityUserRestrictionAdded(Ljava/lang/String;ILjava/lang/String;)V
Landroid/app/admin/SecurityLogTags;->writeSecurityUserRestrictionRemoved(Ljava/lang/String;ILjava/lang/String;)V
Landroid/app/admin/SecurityLogTags;->writeSecurityWipeFailed(Ljava/lang/String;I)V
-Landroid/app/admin/SystemUpdateInfo$SecurityPatchState;
Landroid/app/admin/SystemUpdateInfo;-><init>(JI)V
Landroid/app/admin/SystemUpdateInfo;-><init>(Landroid/os/Parcel;)V
Landroid/app/admin/SystemUpdateInfo;->ATTR_ORIGINAL_BUILD:Ljava/lang/String;
@@ -3785,13 +3520,10 @@
Landroid/app/admin/SystemUpdateInfo;->readFromXml(Lorg/xmlpull/v1/XmlPullParser;)Landroid/app/admin/SystemUpdateInfo;
Landroid/app/admin/SystemUpdateInfo;->securityPatchStateToString(I)Ljava/lang/String;
Landroid/app/admin/SystemUpdateInfo;->writeToXml(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;)V
-Landroid/app/admin/SystemUpdatePolicy$InstallationOption$InstallationOptionType;
Landroid/app/admin/SystemUpdatePolicy$InstallationOption;-><init>(IJ)V
Landroid/app/admin/SystemUpdatePolicy$InstallationOption;->limitEffectiveTime(J)V
Landroid/app/admin/SystemUpdatePolicy$InstallationOption;->mEffectiveTime:J
Landroid/app/admin/SystemUpdatePolicy$InstallationOption;->mType:I
-Landroid/app/admin/SystemUpdatePolicy$SystemUpdatePolicyType;
-Landroid/app/admin/SystemUpdatePolicy$ValidationFailedException$ValidationFailureType;
Landroid/app/admin/SystemUpdatePolicy$ValidationFailedException;-><init>(ILjava/lang/String;)V
Landroid/app/admin/SystemUpdatePolicy$ValidationFailedException;->combinedPeriodTooClose(Ljava/lang/String;)Landroid/app/admin/SystemUpdatePolicy$ValidationFailedException;
Landroid/app/admin/SystemUpdatePolicy$ValidationFailedException;->combinedPeriodTooLong(Ljava/lang/String;)Landroid/app/admin/SystemUpdatePolicy$ValidationFailedException;
@@ -3828,7 +3560,6 @@
Landroid/app/admin/SystemUpdatePolicy;->validateFreezePeriods()V
Landroid/app/admin/SystemUpdatePolicy;->validateType()V
Landroid/app/admin/SystemUpdatePolicy;->WINDOW_BOUNDARY:I
-Landroid/app/AlarmClockInfoProto;
Landroid/app/AlarmClockInfoProto;-><init>()V
Landroid/app/AlarmClockInfoProto;->SHOW_INTENT:J
Landroid/app/AlarmClockInfoProto;->TRIGGER_TIME_MS:J
@@ -3836,9 +3567,6 @@
Landroid/app/AlarmManager$AlarmClockInfo;->mShowIntent:Landroid/app/PendingIntent;
Landroid/app/AlarmManager$AlarmClockInfo;->mTriggerTime:J
Landroid/app/AlarmManager$AlarmClockInfo;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-Landroid/app/AlarmManager$AlarmType;
-Landroid/app/AlarmManager$ListenerWrapper;
-Landroid/app/AlarmManager$ListenerWrapper;-><init>(Landroid/app/AlarmManager$OnAlarmListener;)V
Landroid/app/AlarmManager$ListenerWrapper;->cancel()V
Landroid/app/AlarmManager$ListenerWrapper;->doAlarm(Landroid/app/IAlarmCompleteListener;)V
Landroid/app/AlarmManager$ListenerWrapper;->mCompletion:Landroid/app/IAlarmCompleteListener;
@@ -3859,7 +3587,6 @@
Landroid/app/AlarmManager;->setImpl(IJJJILandroid/app/PendingIntent;Landroid/app/AlarmManager$OnAlarmListener;Ljava/lang/String;Landroid/os/Handler;Landroid/os/WorkSource;Landroid/app/AlarmManager$AlarmClockInfo;)V
Landroid/app/AlarmManager;->sWrappers:Landroid/util/ArrayMap;
Landroid/app/AlarmManager;->TAG:Ljava/lang/String;
-Landroid/app/AlarmManagerProto;
Landroid/app/AlarmManagerProto;-><init>()V
Landroid/app/AlarmManagerProto;->ELAPSED_REALTIME:I
Landroid/app/AlarmManagerProto;->ELAPSED_REALTIME_WAKEUP:I
@@ -3875,7 +3602,6 @@
Landroid/app/AliasActivity;->ALIAS_META_DATA:Ljava/lang/String;
Landroid/app/AliasActivity;->parseAlias(Lorg/xmlpull/v1/XmlPullParser;)Landroid/content/Intent;
Landroid/app/AppComponentFactory;->DEFAULT:Landroid/app/AppComponentFactory;
-Landroid/app/AppGlobals;
Landroid/app/AppGlobals;-><init>()V
Landroid/app/AppGlobals;->getIntCoreSetting(Ljava/lang/String;I)I
Landroid/app/Application;->collectComponentCallbacks()[Ljava/lang/Object;
@@ -3884,7 +3610,6 @@
Landroid/app/Application;->TAG:Ljava/lang/String;
Landroid/app/ApplicationErrorReport$CrashInfo;->appendStackTrace(Ljava/lang/String;)V
Landroid/app/ApplicationErrorReport$CrashInfo;->sanitizeString(Ljava/lang/String;)Ljava/lang/String;
-Landroid/app/ApplicationErrorReport$ParcelableCrashInfo;
Landroid/app/ApplicationErrorReport$ParcelableCrashInfo;-><init>()V
Landroid/app/ApplicationErrorReport$ParcelableCrashInfo;-><init>(Landroid/os/Parcel;)V
Landroid/app/ApplicationErrorReport$ParcelableCrashInfo;-><init>(Ljava/lang/Throwable;)V
@@ -3893,7 +3618,6 @@
Landroid/app/ApplicationErrorReport;->DEFAULT_ERROR_RECEIVER_PROPERTY:Ljava/lang/String;
Landroid/app/ApplicationErrorReport;->getErrorReportReceiver(Landroid/content/pm/PackageManager;Ljava/lang/String;Ljava/lang/String;)Landroid/content/ComponentName;
Landroid/app/ApplicationErrorReport;->SYSTEM_APPS_ERROR_RECEIVER_PROPERTY:Ljava/lang/String;
-Landroid/app/ApplicationLoaders;
Landroid/app/ApplicationLoaders;-><init>()V
Landroid/app/ApplicationLoaders;->addNative(Ljava/lang/ClassLoader;Ljava/util/Collection;)V
Landroid/app/ApplicationLoaders;->addPath(Ljava/lang/ClassLoader;Ljava/lang/String;)V
@@ -3901,18 +3625,15 @@
Landroid/app/ApplicationLoaders;->gApplicationLoaders:Landroid/app/ApplicationLoaders;
Landroid/app/ApplicationLoaders;->getClassLoader(Ljava/lang/String;IZLjava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/lang/String;)Ljava/lang/ClassLoader;
Landroid/app/ApplicationLoaders;->getClassLoader(Ljava/lang/String;IZLjava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/ClassLoader;
-Landroid/app/ApplicationPackageManager$DexModuleRegisterCallbackDelegate;
Landroid/app/ApplicationPackageManager$DexModuleRegisterCallbackDelegate;-><init>(Landroid/content/pm/PackageManager$DexModuleRegisterCallback;)V
Landroid/app/ApplicationPackageManager$DexModuleRegisterCallbackDelegate;->callback:Landroid/content/pm/PackageManager$DexModuleRegisterCallback;
Landroid/app/ApplicationPackageManager$DexModuleRegisterCallbackDelegate;->mHandler:Landroid/os/Handler;
Landroid/app/ApplicationPackageManager$DexModuleRegisterCallbackDelegate;->MSG_DEX_MODULE_REGISTERED:I
Landroid/app/ApplicationPackageManager$DexModuleRegisterCallbackDelegate;->onDexModuleRegistered(Ljava/lang/String;ZLjava/lang/String;)V
-Landroid/app/ApplicationPackageManager$DexModuleRegisterResult;
Landroid/app/ApplicationPackageManager$DexModuleRegisterResult;-><init>(Ljava/lang/String;ZLjava/lang/String;)V
Landroid/app/ApplicationPackageManager$DexModuleRegisterResult;->dexModulePath:Ljava/lang/String;
Landroid/app/ApplicationPackageManager$DexModuleRegisterResult;->message:Ljava/lang/String;
Landroid/app/ApplicationPackageManager$DexModuleRegisterResult;->success:Z
-Landroid/app/ApplicationPackageManager$MoveCallbackDelegate;
Landroid/app/ApplicationPackageManager$MoveCallbackDelegate;-><init>(Landroid/content/pm/PackageManager$MoveCallback;Landroid/os/Looper;)V
Landroid/app/ApplicationPackageManager$MoveCallbackDelegate;->mCallback:Landroid/content/pm/PackageManager$MoveCallback;
Landroid/app/ApplicationPackageManager$MoveCallbackDelegate;->mHandler:Landroid/os/Handler;
@@ -3920,20 +3641,16 @@
Landroid/app/ApplicationPackageManager$MoveCallbackDelegate;->MSG_STATUS_CHANGED:I
Landroid/app/ApplicationPackageManager$MoveCallbackDelegate;->onCreated(ILandroid/os/Bundle;)V
Landroid/app/ApplicationPackageManager$MoveCallbackDelegate;->onStatusChanged(IIJ)V
-Landroid/app/ApplicationPackageManager$OnPermissionsChangeListenerDelegate;
-Landroid/app/ApplicationPackageManager$OnPermissionsChangeListenerDelegate;-><init>(Landroid/content/pm/PackageManager$OnPermissionsChangedListener;Landroid/os/Looper;)V
Landroid/app/ApplicationPackageManager$OnPermissionsChangeListenerDelegate;->mHandler:Landroid/os/Handler;
Landroid/app/ApplicationPackageManager$OnPermissionsChangeListenerDelegate;->mListener:Landroid/content/pm/PackageManager$OnPermissionsChangedListener;
Landroid/app/ApplicationPackageManager$OnPermissionsChangeListenerDelegate;->MSG_PERMISSIONS_CHANGED:I
Landroid/app/ApplicationPackageManager$OnPermissionsChangeListenerDelegate;->onPermissionsChanged(I)V
-Landroid/app/ApplicationPackageManager$ResourceName;
Landroid/app/ApplicationPackageManager$ResourceName;-><init>(Landroid/content/pm/ApplicationInfo;I)V
Landroid/app/ApplicationPackageManager$ResourceName;-><init>(Landroid/content/pm/ComponentInfo;I)V
Landroid/app/ApplicationPackageManager$ResourceName;-><init>(Landroid/content/pm/ResolveInfo;I)V
Landroid/app/ApplicationPackageManager$ResourceName;-><init>(Ljava/lang/String;I)V
Landroid/app/ApplicationPackageManager$ResourceName;->iconId:I
Landroid/app/ApplicationPackageManager$ResourceName;->packageName:Ljava/lang/String;
-Landroid/app/ApplicationPackageManager;
Landroid/app/ApplicationPackageManager;->addCrossProfileIntentFilter(Landroid/content/IntentFilter;III)V
Landroid/app/ApplicationPackageManager;->addPreferredActivityAsUser(Landroid/content/IntentFilter;I[Landroid/content/ComponentName;Landroid/content/ComponentName;I)V
Landroid/app/ApplicationPackageManager;->clearApplicationUserData(Ljava/lang/String;Landroid/content/pm/IPackageDataObserver;)V
@@ -4028,7 +3745,6 @@
Landroid/app/ApplicationPackageManager;->sSync:Ljava/lang/Object;
Landroid/app/ApplicationPackageManager;->TAG:Ljava/lang/String;
Landroid/app/ApplicationPackageManager;->unregisterMoveCallback(Landroid/content/pm/PackageManager$MoveCallback;)V
-Landroid/app/ApplicationThreadConstants;
Landroid/app/ApplicationThreadConstants;-><init>()V
Landroid/app/ApplicationThreadConstants;->BACKUP_MODE_FULL:I
Landroid/app/ApplicationThreadConstants;->BACKUP_MODE_INCREMENTAL:I
@@ -4041,10 +3757,8 @@
Landroid/app/ApplicationThreadConstants;->PACKAGE_REMOVED:I
Landroid/app/ApplicationThreadConstants;->PACKAGE_REMOVED_DONT_KILL:I
Landroid/app/ApplicationThreadConstants;->PACKAGE_REPLACED:I
-Landroid/app/AppOpsManager$OnOpChangedInternalListener;
Landroid/app/AppOpsManager$OnOpChangedInternalListener;-><init>()V
Landroid/app/AppOpsManager$OnOpChangedInternalListener;->onOpChanged(ILjava/lang/String;)V
-Landroid/app/AppOpsManager$OpEntry;
Landroid/app/AppOpsManager$OpEntry;-><init>(IIJJIILjava/lang/String;)V
Landroid/app/AppOpsManager$OpEntry;-><init>(II[J[JIILjava/lang/String;)V
Landroid/app/AppOpsManager$OpEntry;-><init>(II[J[JIZILjava/lang/String;)V
@@ -4062,7 +3776,6 @@
Landroid/app/AppOpsManager$OpEntry;->mRejectTimes:[J
Landroid/app/AppOpsManager$OpEntry;->mRunning:Z
Landroid/app/AppOpsManager$OpEntry;->mTimes:[J
-Landroid/app/AppOpsManager$PackageOps;
Landroid/app/AppOpsManager$PackageOps;-><init>(Landroid/os/Parcel;)V
Landroid/app/AppOpsManager$PackageOps;->mEntries:Ljava/util/List;
Landroid/app/AppOpsManager$PackageOps;->mPackageName:Ljava/lang/String;
@@ -4116,10 +3829,8 @@
Landroid/app/AppOpsManager;->UID_STATE_PERSISTENT:I
Landroid/app/AppOpsManager;->UID_STATE_TOP:I
Landroid/app/AppOpsManager;->_NUM_UID_STATE:I
-Landroid/app/AppOpsManagerInternal;
Landroid/app/AppOpsManagerInternal;-><init>()V
Landroid/app/AppOpsManagerInternal;->setDeviceAndProfileOwners(Landroid/util/SparseIntArray;)V
-Landroid/app/AppProtoEnums;
Landroid/app/AppProtoEnums;-><init>()V
Landroid/app/AppProtoEnums;->APP_TRANSITION_REASON_UNKNOWN:I
Landroid/app/AppProtoEnums;->APP_TRANSITION_RECENTS_ANIM:I
@@ -4151,24 +3862,19 @@
Landroid/app/AppProtoEnums;->PROCESS_STATE_UNKNOWN_TO_PROTO:I
Landroid/app/assist/AssistContent;->mIsAppProvidedWebUri:Z
Landroid/app/assist/AssistContent;->setDefaultIntent(Landroid/content/Intent;)V
-Landroid/app/assist/AssistStructure$AutofillOverlay;
Landroid/app/assist/AssistStructure$AutofillOverlay;-><init>()V
Landroid/app/assist/AssistStructure$AutofillOverlay;->focused:Z
Landroid/app/assist/AssistStructure$AutofillOverlay;->value:Landroid/view/autofill/AutofillValue;
-Landroid/app/assist/AssistStructure$HtmlInfoNode;
Landroid/app/assist/AssistStructure$HtmlInfoNode;-><init>(Landroid/app/assist/AssistStructure$HtmlInfoNodeBuilder;)V
Landroid/app/assist/AssistStructure$HtmlInfoNode;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/app/assist/AssistStructure$HtmlInfoNode;->mAttributes:Ljava/util/ArrayList;
Landroid/app/assist/AssistStructure$HtmlInfoNode;->mNames:[Ljava/lang/String;
Landroid/app/assist/AssistStructure$HtmlInfoNode;->mTag:Ljava/lang/String;
Landroid/app/assist/AssistStructure$HtmlInfoNode;->mValues:[Ljava/lang/String;
-Landroid/app/assist/AssistStructure$HtmlInfoNodeBuilder;
Landroid/app/assist/AssistStructure$HtmlInfoNodeBuilder;-><init>(Ljava/lang/String;)V
Landroid/app/assist/AssistStructure$HtmlInfoNodeBuilder;->mNames:Ljava/util/ArrayList;
Landroid/app/assist/AssistStructure$HtmlInfoNodeBuilder;->mTag:Ljava/lang/String;
Landroid/app/assist/AssistStructure$HtmlInfoNodeBuilder;->mValues:Ljava/util/ArrayList;
-Landroid/app/assist/AssistStructure$ParcelTransferReader;
-Landroid/app/assist/AssistStructure$ParcelTransferReader;-><init>(Landroid/os/IBinder;)V
Landroid/app/assist/AssistStructure$ParcelTransferReader;->fetchData()V
Landroid/app/assist/AssistStructure$ParcelTransferReader;->go()V
Landroid/app/assist/AssistStructure$ParcelTransferReader;->mChannel:Landroid/os/IBinder;
@@ -4179,7 +3885,6 @@
Landroid/app/assist/AssistStructure$ParcelTransferReader;->mTmpMatrix:[F
Landroid/app/assist/AssistStructure$ParcelTransferReader;->mTransferToken:Landroid/os/IBinder;
Landroid/app/assist/AssistStructure$ParcelTransferReader;->readParcel(II)Landroid/os/Parcel;
-Landroid/app/assist/AssistStructure$ParcelTransferWriter;
Landroid/app/assist/AssistStructure$ParcelTransferWriter;-><init>(Landroid/app/assist/AssistStructure;Landroid/os/Parcel;)V
Landroid/app/assist/AssistStructure$ParcelTransferWriter;->mCurViewStackEntry:Landroid/app/assist/AssistStructure$ViewStackEntry;
Landroid/app/assist/AssistStructure$ParcelTransferWriter;->mCurViewStackPos:I
@@ -4196,7 +3901,6 @@
Landroid/app/assist/AssistStructure$ParcelTransferWriter;->writeToParcel(Landroid/app/assist/AssistStructure;Landroid/os/Parcel;)V
Landroid/app/assist/AssistStructure$ParcelTransferWriter;->writeToParcelInner(Landroid/app/assist/AssistStructure;Landroid/os/Parcel;)Z
Landroid/app/assist/AssistStructure$ParcelTransferWriter;->writeView(Landroid/app/assist/AssistStructure$ViewNode;Landroid/os/Parcel;Landroid/os/PooledStringWriter;I)V
-Landroid/app/assist/AssistStructure$SendChannel;
Landroid/app/assist/AssistStructure$SendChannel;-><init>(Landroid/app/assist/AssistStructure;)V
Landroid/app/assist/AssistStructure$SendChannel;->mAssistStructure:Landroid/app/assist/AssistStructure;
Landroid/app/assist/AssistStructure$ViewNode;-><init>()V
@@ -4272,7 +3976,6 @@
Landroid/app/assist/AssistStructure$ViewNode;->setWebDomain(Ljava/lang/String;)V
Landroid/app/assist/AssistStructure$ViewNode;->updateAutofillValue(Landroid/view/autofill/AutofillValue;)V
Landroid/app/assist/AssistStructure$ViewNode;->writeSelfToParcel(Landroid/os/Parcel;Landroid/os/PooledStringWriter;Z[F)I
-Landroid/app/assist/AssistStructure$ViewNodeBuilder;
Landroid/app/assist/AssistStructure$ViewNodeBuilder;-><init>(Landroid/app/assist/AssistStructure;Landroid/app/assist/AssistStructure$ViewNode;Z)V
Landroid/app/assist/AssistStructure$ViewNodeBuilder;->getNodeText()Landroid/app/assist/AssistStructure$ViewNodeText;
Landroid/app/assist/AssistStructure$ViewNodeBuilder;->getTempRect()Landroid/graphics/Rect;
@@ -4280,7 +3983,6 @@
Landroid/app/assist/AssistStructure$ViewNodeBuilder;->mAsync:Z
Landroid/app/assist/AssistStructure$ViewNodeBuilder;->mNode:Landroid/app/assist/AssistStructure$ViewNode;
Landroid/app/assist/AssistStructure$ViewNodeBuilder;->setAssistBlocked(Z)V
-Landroid/app/assist/AssistStructure$ViewNodeText;
Landroid/app/assist/AssistStructure$ViewNodeText;-><init>()V
Landroid/app/assist/AssistStructure$ViewNodeText;-><init>(Landroid/os/Parcel;Z)V
Landroid/app/assist/AssistStructure$ViewNodeText;->isSimple()Z
@@ -4295,7 +3997,6 @@
Landroid/app/assist/AssistStructure$ViewNodeText;->mTextSize:F
Landroid/app/assist/AssistStructure$ViewNodeText;->mTextStyle:I
Landroid/app/assist/AssistStructure$ViewNodeText;->writeToParcel(Landroid/os/Parcel;ZZ)V
-Landroid/app/assist/AssistStructure$ViewStackEntry;
Landroid/app/assist/AssistStructure$ViewStackEntry;-><init>()V
Landroid/app/assist/AssistStructure$ViewStackEntry;->curChild:I
Landroid/app/assist/AssistStructure$ViewStackEntry;->node:Landroid/app/assist/AssistStructure$ViewNode;
@@ -4355,7 +4056,6 @@
Landroid/app/AutomaticZenRule;->interruptionFilter:I
Landroid/app/AutomaticZenRule;->name:Ljava/lang/String;
Landroid/app/AutomaticZenRule;->owner:Landroid/content/ComponentName;
-Landroid/app/BackStackRecord$Op;
Landroid/app/BackStackRecord$Op;-><init>()V
Landroid/app/BackStackRecord$Op;-><init>(ILandroid/app/Fragment;)V
Landroid/app/BackStackRecord$Op;->cmd:I
@@ -4364,7 +4064,6 @@
Landroid/app/BackStackRecord$Op;->fragment:Landroid/app/Fragment;
Landroid/app/BackStackRecord$Op;->popEnterAnim:I
Landroid/app/BackStackRecord$Op;->popExitAnim:I
-Landroid/app/BackStackRecord;
Landroid/app/BackStackRecord;-><init>(Landroid/app/FragmentManagerImpl;)V
Landroid/app/BackStackRecord;->addOp(Landroid/app/BackStackRecord$Op;)V
Landroid/app/BackStackRecord;->bumpBackStackNesting(I)V
@@ -4417,14 +4116,10 @@
Landroid/app/BackStackRecord;->setOnStartPostponedListener(Landroid/app/Fragment$OnStartEnterTransitionListener;)V
Landroid/app/BackStackRecord;->TAG:Ljava/lang/String;
Landroid/app/BackStackRecord;->trackAddedFragmentsInPop(Ljava/util/ArrayList;)V
-Landroid/app/backup/AbsoluteFileBackupHelper;
-Landroid/app/backup/AbsoluteFileBackupHelper;-><init>(Landroid/content/Context;[[Ljava/lang/String;)V
Landroid/app/backup/AbsoluteFileBackupHelper;->DEBUG:Z
Landroid/app/backup/AbsoluteFileBackupHelper;->mContext:Landroid/content/Context;
Landroid/app/backup/AbsoluteFileBackupHelper;->mFiles:[Ljava/lang/String;
Landroid/app/backup/AbsoluteFileBackupHelper;->TAG:Ljava/lang/String;
-Landroid/app/backup/BackupAgent$BackupServiceBinder;
-Landroid/app/backup/BackupAgent$BackupServiceBinder;-><init>()V
Landroid/app/backup/BackupAgent$BackupServiceBinder;->doBackup(Landroid/os/ParcelFileDescriptor;Landroid/os/ParcelFileDescriptor;Landroid/os/ParcelFileDescriptor;JILandroid/app/backup/IBackupManager;I)V
Landroid/app/backup/BackupAgent$BackupServiceBinder;->doFullBackup(Landroid/os/ParcelFileDescriptor;JILandroid/app/backup/IBackupManager;I)V
Landroid/app/backup/BackupAgent$BackupServiceBinder;->doMeasureFullBackup(JILandroid/app/backup/IBackupManager;I)V
@@ -4434,11 +4129,8 @@
Landroid/app/backup/BackupAgent$BackupServiceBinder;->doRestoreFinished(ILandroid/app/backup/IBackupManager;)V
Landroid/app/backup/BackupAgent$BackupServiceBinder;->fail(Ljava/lang/String;)V
Landroid/app/backup/BackupAgent$BackupServiceBinder;->TAG:Ljava/lang/String;
-Landroid/app/backup/BackupAgent$FailRunnable;
Landroid/app/backup/BackupAgent$FailRunnable;-><init>(Ljava/lang/String;)V
Landroid/app/backup/BackupAgent$FailRunnable;->mMessage:Ljava/lang/String;
-Landroid/app/backup/BackupAgent$SharedPrefsSynchronizer;
-Landroid/app/backup/BackupAgent$SharedPrefsSynchronizer;-><init>()V
Landroid/app/backup/BackupAgent$SharedPrefsSynchronizer;->mLatch:Ljava/util/concurrent/CountDownLatch;
Landroid/app/backup/BackupAgent;->applyXmlFiltersAndDoFullBackupForDomain(Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;Landroid/util/ArraySet;Landroid/util/ArraySet;Landroid/app/backup/FullBackupDataOutput;)V
Landroid/app/backup/BackupAgent;->areIncludeRequiredTransportFlagsSatisfied(II)Z
@@ -4461,7 +4153,6 @@
Landroid/app/backup/BackupAgentHelper;->getDispatcher()Landroid/app/backup/BackupHelperDispatcher;
Landroid/app/backup/BackupAgentHelper;->mDispatcher:Landroid/app/backup/BackupHelperDispatcher;
Landroid/app/backup/BackupAgentHelper;->TAG:Ljava/lang/String;
-Landroid/app/backup/BackupDataInput$EntityHeader;
Landroid/app/backup/BackupDataInput$EntityHeader;-><init>()V
Landroid/app/backup/BackupDataInput;->ctor(Ljava/io/FileDescriptor;)J
Landroid/app/backup/BackupDataInput;->dtor(J)V
@@ -4483,9 +4174,7 @@
Landroid/app/backup/BackupDataOutput;->setKeyPrefix_native(JLjava/lang/String;)V
Landroid/app/backup/BackupDataOutput;->writeEntityData_native(J[BI)I
Landroid/app/backup/BackupDataOutput;->writeEntityHeader_native(JLjava/lang/String;I)I
-Landroid/app/backup/BackupHelperDispatcher$Header;
Landroid/app/backup/BackupHelperDispatcher$Header;-><init>()V
-Landroid/app/backup/BackupHelperDispatcher;
Landroid/app/backup/BackupHelperDispatcher;-><init>()V
Landroid/app/backup/BackupHelperDispatcher;->addHelper(Ljava/lang/String;Landroid/app/backup/BackupHelper;)V
Landroid/app/backup/BackupHelperDispatcher;->allocateHeader_native(Landroid/app/backup/BackupHelperDispatcher$Header;Ljava/io/FileDescriptor;)I
@@ -4497,12 +4186,8 @@
Landroid/app/backup/BackupHelperDispatcher;->skipChunk_native(Ljava/io/FileDescriptor;I)I
Landroid/app/backup/BackupHelperDispatcher;->TAG:Ljava/lang/String;
Landroid/app/backup/BackupHelperDispatcher;->writeHeader_native(Landroid/app/backup/BackupHelperDispatcher$Header;Ljava/io/FileDescriptor;I)I
-Landroid/app/backup/BackupManager$BackupManagerMonitorWrapper;
-Landroid/app/backup/BackupManager$BackupManagerMonitorWrapper;-><init>(Landroid/app/backup/BackupManagerMonitor;)V
Landroid/app/backup/BackupManager$BackupManagerMonitorWrapper;->mMonitor:Landroid/app/backup/BackupManagerMonitor;
Landroid/app/backup/BackupManager$BackupManagerMonitorWrapper;->onEvent(Landroid/os/Bundle;)V
-Landroid/app/backup/BackupManager$BackupObserverWrapper;
-Landroid/app/backup/BackupManager$BackupObserverWrapper;-><init>(Landroid/content/Context;Landroid/app/backup/BackupObserver;)V
Landroid/app/backup/BackupManager$BackupObserverWrapper;->backupFinished(I)V
Landroid/app/backup/BackupManager$BackupObserverWrapper;->mHandler:Landroid/os/Handler;
Landroid/app/backup/BackupManager$BackupObserverWrapper;->mObserver:Landroid/app/backup/BackupObserver;
@@ -4511,8 +4196,6 @@
Landroid/app/backup/BackupManager$BackupObserverWrapper;->MSG_UPDATE:I
Landroid/app/backup/BackupManager$BackupObserverWrapper;->onResult(Ljava/lang/String;I)V
Landroid/app/backup/BackupManager$BackupObserverWrapper;->onUpdate(Ljava/lang/String;Landroid/app/backup/BackupProgress;)V
-Landroid/app/backup/BackupManager$SelectTransportListenerWrapper;
-Landroid/app/backup/BackupManager$SelectTransportListenerWrapper;-><init>(Landroid/content/Context;Landroid/app/backup/SelectBackupTransportCallback;)V
Landroid/app/backup/BackupManager$SelectTransportListenerWrapper;->mHandler:Landroid/os/Handler;
Landroid/app/backup/BackupManager$SelectTransportListenerWrapper;->mListener:Landroid/app/backup/SelectBackupTransportCallback;
Landroid/app/backup/BackupManager$SelectTransportListenerWrapper;->onFailure(I)V
@@ -4521,8 +4204,6 @@
Landroid/app/backup/BackupManager;->mContext:Landroid/content/Context;
Landroid/app/backup/BackupManager;->TAG:Ljava/lang/String;
Landroid/app/backup/BackupProgress;-><init>(Landroid/os/Parcel;)V
-Landroid/app/backup/BackupTransport$TransportImpl;
-Landroid/app/backup/BackupTransport$TransportImpl;-><init>()V
Landroid/app/backup/BackupTransport$TransportImpl;->abortFullRestore()I
Landroid/app/backup/BackupTransport$TransportImpl;->cancelFullBackup()V
Landroid/app/backup/BackupTransport$TransportImpl;->checkFullBackupSize(J)I
@@ -4551,8 +4232,6 @@
Landroid/app/backup/BackupTransport$TransportImpl;->startRestore(J[Landroid/content/pm/PackageInfo;)I
Landroid/app/backup/BackupTransport$TransportImpl;->transportDirName()Ljava/lang/String;
Landroid/app/backup/BackupTransport;->mBinderImpl:Lcom/android/internal/backup/IBackupTransport;
-Landroid/app/backup/BlobBackupHelper;
-Landroid/app/backup/BlobBackupHelper;-><init>(I[[Ljava/lang/String;)V
Landroid/app/backup/BlobBackupHelper;->applyRestoredPayload(Ljava/lang/String;[B)V
Landroid/app/backup/BlobBackupHelper;->checksum([B)J
Landroid/app/backup/BlobBackupHelper;->DEBUG:Z
@@ -4569,7 +4248,6 @@
Landroid/app/backup/FileBackupHelper;->mFiles:[Ljava/lang/String;
Landroid/app/backup/FileBackupHelper;->mFilesDir:Ljava/io/File;
Landroid/app/backup/FileBackupHelper;->TAG:Ljava/lang/String;
-Landroid/app/backup/FileBackupHelperBase;
Landroid/app/backup/FileBackupHelperBase;-><init>(Landroid/content/Context;)V
Landroid/app/backup/FileBackupHelperBase;->ctor()J
Landroid/app/backup/FileBackupHelperBase;->dtor(J)V
@@ -4583,13 +4261,11 @@
Landroid/app/backup/FileBackupHelperBase;->writeFile(Ljava/io/File;Landroid/app/backup/BackupDataInputStream;)Z
Landroid/app/backup/FileBackupHelperBase;->writeFile_native(JLjava/lang/String;J)I
Landroid/app/backup/FileBackupHelperBase;->writeSnapshot_native(JLjava/io/FileDescriptor;)I
-Landroid/app/backup/FullBackup$BackupScheme$PathWithRequiredFlags;
Landroid/app/backup/FullBackup$BackupScheme$PathWithRequiredFlags;-><init>(Ljava/lang/String;I)V
Landroid/app/backup/FullBackup$BackupScheme$PathWithRequiredFlags;->getPath()Ljava/lang/String;
Landroid/app/backup/FullBackup$BackupScheme$PathWithRequiredFlags;->getRequiredFlags()I
Landroid/app/backup/FullBackup$BackupScheme$PathWithRequiredFlags;->mPath:Ljava/lang/String;
Landroid/app/backup/FullBackup$BackupScheme$PathWithRequiredFlags;->mRequiredFlags:I
-Landroid/app/backup/FullBackup$BackupScheme;
Landroid/app/backup/FullBackup$BackupScheme;-><init>(Landroid/content/Context;)V
Landroid/app/backup/FullBackup$BackupScheme;->CACHE_DIR:Ljava/io/File;
Landroid/app/backup/FullBackup$BackupScheme;->DATABASE_DIR:Ljava/io/File;
@@ -4627,7 +4303,6 @@
Landroid/app/backup/FullBackup$BackupScheme;->TAG_INCLUDE:Ljava/lang/String;
Landroid/app/backup/FullBackup$BackupScheme;->tokenToDirectoryPath(Ljava/lang/String;)Ljava/lang/String;
Landroid/app/backup/FullBackup$BackupScheme;->validateInnerTagContents(Lorg/xmlpull/v1/XmlPullParser;)V
-Landroid/app/backup/FullBackup;
Landroid/app/backup/FullBackup;-><init>()V
Landroid/app/backup/FullBackup;->APK_TREE_TOKEN:Ljava/lang/String;
Landroid/app/backup/FullBackup;->APPS_PREFIX:Ljava/lang/String;
@@ -4660,7 +4335,6 @@
Landroid/app/backup/FullBackup;->SHARED_STORAGE_TOKEN:Ljava/lang/String;
Landroid/app/backup/FullBackup;->TAG:Ljava/lang/String;
Landroid/app/backup/FullBackup;->TAG_XML_PARSER:Ljava/lang/String;
-Landroid/app/backup/FullBackupAgent;
Landroid/app/backup/FullBackupAgent;-><init>()V
Landroid/app/backup/FullBackupDataOutput;-><init>(J)V
Landroid/app/backup/FullBackupDataOutput;-><init>(JI)V
@@ -4670,7 +4344,6 @@
Landroid/app/backup/FullBackupDataOutput;->mQuota:J
Landroid/app/backup/FullBackupDataOutput;->mSize:J
Landroid/app/backup/FullBackupDataOutput;->mTransportFlags:I
-Landroid/app/backup/IBackupManager$Stub$Proxy;
Landroid/app/backup/IBackupManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/app/backup/IBackupManager$Stub$Proxy;->acknowledgeFullBackupOrRestore(IZLjava/lang/String;Ljava/lang/String;Landroid/app/backup/IFullBackupRestoreObserver;)V
Landroid/app/backup/IBackupManager$Stub$Proxy;->adbBackup(Landroid/os/ParcelFileDescriptor;ZZZZZZZZ[Ljava/lang/String;)V
@@ -4711,7 +4384,6 @@
Landroid/app/backup/IBackupManager$Stub$Proxy;->setBackupProvisioned(Z)V
Landroid/app/backup/IBackupManager$Stub$Proxy;->setBackupServiceActive(IZ)V
Landroid/app/backup/IBackupManager$Stub$Proxy;->updateTransportAttributes(Landroid/content/ComponentName;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;)V
-Landroid/app/backup/IBackupManager$Stub;
Landroid/app/backup/IBackupManager$Stub;-><init>()V
Landroid/app/backup/IBackupManager$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/app/backup/IBackupManager$Stub;->TRANSACTION_acknowledgeFullBackupOrRestore:I
@@ -4751,7 +4423,6 @@
Landroid/app/backup/IBackupManager$Stub;->TRANSACTION_setBackupProvisioned:I
Landroid/app/backup/IBackupManager$Stub;->TRANSACTION_setBackupServiceActive:I
Landroid/app/backup/IBackupManager$Stub;->TRANSACTION_updateTransportAttributes:I
-Landroid/app/backup/IBackupManager;
Landroid/app/backup/IBackupManager;->adbBackup(Landroid/os/ParcelFileDescriptor;ZZZZZZZZ[Ljava/lang/String;)V
Landroid/app/backup/IBackupManager;->adbRestore(Landroid/os/ParcelFileDescriptor;)V
Landroid/app/backup/IBackupManager;->agentConnected(Ljava/lang/String;Landroid/os/IBinder;)V
@@ -4779,37 +4450,30 @@
Landroid/app/backup/IBackupManager;->setBackupProvisioned(Z)V
Landroid/app/backup/IBackupManager;->setBackupServiceActive(IZ)V
Landroid/app/backup/IBackupManager;->updateTransportAttributes(Landroid/content/ComponentName;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;)V
-Landroid/app/backup/IBackupManagerMonitor$Stub$Proxy;
Landroid/app/backup/IBackupManagerMonitor$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/app/backup/IBackupManagerMonitor$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/app/backup/IBackupManagerMonitor$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/app/backup/IBackupManagerMonitor$Stub$Proxy;->onEvent(Landroid/os/Bundle;)V
-Landroid/app/backup/IBackupManagerMonitor$Stub;
Landroid/app/backup/IBackupManagerMonitor$Stub;-><init>()V
Landroid/app/backup/IBackupManagerMonitor$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/backup/IBackupManagerMonitor;
Landroid/app/backup/IBackupManagerMonitor$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/app/backup/IBackupManagerMonitor$Stub;->TRANSACTION_onEvent:I
-Landroid/app/backup/IBackupManagerMonitor;
Landroid/app/backup/IBackupManagerMonitor;->onEvent(Landroid/os/Bundle;)V
-Landroid/app/backup/IBackupObserver$Stub$Proxy;
Landroid/app/backup/IBackupObserver$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/app/backup/IBackupObserver$Stub$Proxy;->backupFinished(I)V
Landroid/app/backup/IBackupObserver$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/app/backup/IBackupObserver$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/app/backup/IBackupObserver$Stub$Proxy;->onResult(Ljava/lang/String;I)V
Landroid/app/backup/IBackupObserver$Stub$Proxy;->onUpdate(Ljava/lang/String;Landroid/app/backup/BackupProgress;)V
-Landroid/app/backup/IBackupObserver$Stub;
Landroid/app/backup/IBackupObserver$Stub;-><init>()V
Landroid/app/backup/IBackupObserver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/backup/IBackupObserver;
Landroid/app/backup/IBackupObserver$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/app/backup/IBackupObserver$Stub;->TRANSACTION_backupFinished:I
Landroid/app/backup/IBackupObserver$Stub;->TRANSACTION_onResult:I
Landroid/app/backup/IBackupObserver$Stub;->TRANSACTION_onUpdate:I
-Landroid/app/backup/IBackupObserver;
Landroid/app/backup/IBackupObserver;->backupFinished(I)V
Landroid/app/backup/IBackupObserver;->onResult(Ljava/lang/String;I)V
Landroid/app/backup/IBackupObserver;->onUpdate(Ljava/lang/String;Landroid/app/backup/BackupProgress;)V
-Landroid/app/backup/IFullBackupRestoreObserver$Stub$Proxy;
Landroid/app/backup/IFullBackupRestoreObserver$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/app/backup/IFullBackupRestoreObserver$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/app/backup/IFullBackupRestoreObserver$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -4820,7 +4484,6 @@
Landroid/app/backup/IFullBackupRestoreObserver$Stub$Proxy;->onStartBackup()V
Landroid/app/backup/IFullBackupRestoreObserver$Stub$Proxy;->onStartRestore()V
Landroid/app/backup/IFullBackupRestoreObserver$Stub$Proxy;->onTimeout()V
-Landroid/app/backup/IFullBackupRestoreObserver$Stub;
Landroid/app/backup/IFullBackupRestoreObserver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/backup/IFullBackupRestoreObserver;
Landroid/app/backup/IFullBackupRestoreObserver$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/app/backup/IFullBackupRestoreObserver$Stub;->TRANSACTION_onBackupPackage:I
@@ -4830,7 +4493,6 @@
Landroid/app/backup/IFullBackupRestoreObserver$Stub;->TRANSACTION_onStartBackup:I
Landroid/app/backup/IFullBackupRestoreObserver$Stub;->TRANSACTION_onStartRestore:I
Landroid/app/backup/IFullBackupRestoreObserver$Stub;->TRANSACTION_onTimeout:I
-Landroid/app/backup/IFullBackupRestoreObserver;
Landroid/app/backup/IFullBackupRestoreObserver;->onBackupPackage(Ljava/lang/String;)V
Landroid/app/backup/IFullBackupRestoreObserver;->onEndBackup()V
Landroid/app/backup/IFullBackupRestoreObserver;->onEndRestore()V
@@ -4838,7 +4500,6 @@
Landroid/app/backup/IFullBackupRestoreObserver;->onStartBackup()V
Landroid/app/backup/IFullBackupRestoreObserver;->onStartRestore()V
Landroid/app/backup/IFullBackupRestoreObserver;->onTimeout()V
-Landroid/app/backup/IRestoreObserver$Stub$Proxy;
Landroid/app/backup/IRestoreObserver$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/app/backup/IRestoreObserver$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/app/backup/IRestoreObserver$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -4846,19 +4507,16 @@
Landroid/app/backup/IRestoreObserver$Stub$Proxy;->restoreFinished(I)V
Landroid/app/backup/IRestoreObserver$Stub$Proxy;->restoreSetsAvailable([Landroid/app/backup/RestoreSet;)V
Landroid/app/backup/IRestoreObserver$Stub$Proxy;->restoreStarting(I)V
-Landroid/app/backup/IRestoreObserver$Stub;
Landroid/app/backup/IRestoreObserver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/backup/IRestoreObserver;
Landroid/app/backup/IRestoreObserver$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/app/backup/IRestoreObserver$Stub;->TRANSACTION_onUpdate:I
Landroid/app/backup/IRestoreObserver$Stub;->TRANSACTION_restoreFinished:I
Landroid/app/backup/IRestoreObserver$Stub;->TRANSACTION_restoreSetsAvailable:I
Landroid/app/backup/IRestoreObserver$Stub;->TRANSACTION_restoreStarting:I
-Landroid/app/backup/IRestoreObserver;
Landroid/app/backup/IRestoreObserver;->onUpdate(ILjava/lang/String;)V
Landroid/app/backup/IRestoreObserver;->restoreFinished(I)V
Landroid/app/backup/IRestoreObserver;->restoreSetsAvailable([Landroid/app/backup/RestoreSet;)V
Landroid/app/backup/IRestoreObserver;->restoreStarting(I)V
-Landroid/app/backup/IRestoreSession$Stub$Proxy;
Landroid/app/backup/IRestoreSession$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/app/backup/IRestoreSession$Stub$Proxy;->endRestoreSession()V
Landroid/app/backup/IRestoreSession$Stub$Proxy;->getAvailableRestoreSets(Landroid/app/backup/IRestoreObserver;Landroid/app/backup/IBackupManagerMonitor;)I
@@ -4867,7 +4525,6 @@
Landroid/app/backup/IRestoreSession$Stub$Proxy;->restoreAll(JLandroid/app/backup/IRestoreObserver;Landroid/app/backup/IBackupManagerMonitor;)I
Landroid/app/backup/IRestoreSession$Stub$Proxy;->restorePackage(Ljava/lang/String;Landroid/app/backup/IRestoreObserver;Landroid/app/backup/IBackupManagerMonitor;)I
Landroid/app/backup/IRestoreSession$Stub$Proxy;->restoreSome(JLandroid/app/backup/IRestoreObserver;Landroid/app/backup/IBackupManagerMonitor;[Ljava/lang/String;)I
-Landroid/app/backup/IRestoreSession$Stub;
Landroid/app/backup/IRestoreSession$Stub;-><init>()V
Landroid/app/backup/IRestoreSession$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/backup/IRestoreSession;
Landroid/app/backup/IRestoreSession$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -4876,37 +4533,29 @@
Landroid/app/backup/IRestoreSession$Stub;->TRANSACTION_restoreAll:I
Landroid/app/backup/IRestoreSession$Stub;->TRANSACTION_restorePackage:I
Landroid/app/backup/IRestoreSession$Stub;->TRANSACTION_restoreSome:I
-Landroid/app/backup/IRestoreSession;
Landroid/app/backup/IRestoreSession;->endRestoreSession()V
Landroid/app/backup/IRestoreSession;->getAvailableRestoreSets(Landroid/app/backup/IRestoreObserver;Landroid/app/backup/IBackupManagerMonitor;)I
Landroid/app/backup/IRestoreSession;->restoreAll(JLandroid/app/backup/IRestoreObserver;Landroid/app/backup/IBackupManagerMonitor;)I
Landroid/app/backup/IRestoreSession;->restorePackage(Ljava/lang/String;Landroid/app/backup/IRestoreObserver;Landroid/app/backup/IBackupManagerMonitor;)I
Landroid/app/backup/IRestoreSession;->restoreSome(JLandroid/app/backup/IRestoreObserver;Landroid/app/backup/IBackupManagerMonitor;[Ljava/lang/String;)I
-Landroid/app/backup/ISelectBackupTransportCallback$Stub$Proxy;
Landroid/app/backup/ISelectBackupTransportCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/app/backup/ISelectBackupTransportCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/app/backup/ISelectBackupTransportCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/app/backup/ISelectBackupTransportCallback$Stub$Proxy;->onFailure(I)V
Landroid/app/backup/ISelectBackupTransportCallback$Stub$Proxy;->onSuccess(Ljava/lang/String;)V
-Landroid/app/backup/ISelectBackupTransportCallback$Stub;
Landroid/app/backup/ISelectBackupTransportCallback$Stub;-><init>()V
Landroid/app/backup/ISelectBackupTransportCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/backup/ISelectBackupTransportCallback;
Landroid/app/backup/ISelectBackupTransportCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/app/backup/ISelectBackupTransportCallback$Stub;->TRANSACTION_onFailure:I
Landroid/app/backup/ISelectBackupTransportCallback$Stub;->TRANSACTION_onSuccess:I
-Landroid/app/backup/ISelectBackupTransportCallback;
Landroid/app/backup/ISelectBackupTransportCallback;->onFailure(I)V
Landroid/app/backup/ISelectBackupTransportCallback;->onSuccess(Ljava/lang/String;)V
Landroid/app/backup/RestoreDescription;-><init>(Landroid/os/Parcel;)V
Landroid/app/backup/RestoreDescription;->mDataType:I
Landroid/app/backup/RestoreDescription;->mPackageName:Ljava/lang/String;
Landroid/app/backup/RestoreDescription;->NO_MORE_PACKAGES_SENTINEL:Ljava/lang/String;
-Landroid/app/backup/RestoreSession$BackupManagerMonitorWrapper;
-Landroid/app/backup/RestoreSession$BackupManagerMonitorWrapper;-><init>(Landroid/app/backup/BackupManagerMonitor;)V
Landroid/app/backup/RestoreSession$BackupManagerMonitorWrapper;->mMonitor:Landroid/app/backup/BackupManagerMonitor;
Landroid/app/backup/RestoreSession$BackupManagerMonitorWrapper;->onEvent(Landroid/os/Bundle;)V
-Landroid/app/backup/RestoreSession$RestoreObserverWrapper;
-Landroid/app/backup/RestoreSession$RestoreObserverWrapper;-><init>(Landroid/content/Context;Landroid/app/backup/RestoreObserver;)V
Landroid/app/backup/RestoreSession$RestoreObserverWrapper;->mAppObserver:Landroid/app/backup/RestoreObserver;
Landroid/app/backup/RestoreSession$RestoreObserverWrapper;->mHandler:Landroid/os/Handler;
Landroid/app/backup/RestoreSession$RestoreObserverWrapper;->MSG_RESTORE_FINISHED:I
@@ -4929,7 +4578,6 @@
Landroid/app/backup/SharedPreferencesBackupHelper;->mContext:Landroid/content/Context;
Landroid/app/backup/SharedPreferencesBackupHelper;->mPrefGroups:[Ljava/lang/String;
Landroid/app/backup/SharedPreferencesBackupHelper;->TAG:Ljava/lang/String;
-Landroid/app/backup/WallpaperBackupHelper;
Landroid/app/backup/WallpaperBackupHelper;-><init>(Landroid/content/Context;[Ljava/lang/String;)V
Landroid/app/backup/WallpaperBackupHelper;->DEBUG:Z
Landroid/app/backup/WallpaperBackupHelper;->mKeys:[Ljava/lang/String;
@@ -4954,7 +4602,6 @@
Landroid/app/BroadcastOptions;->mTemporaryAppWhitelistDuration:J
Landroid/app/BroadcastOptions;->setMaxManifestReceiverApiLevel(I)V
Landroid/app/BroadcastOptions;->setMinManifestReceiverApiLevel(I)V
-Landroid/app/ClientTransactionHandler;
Landroid/app/ClientTransactionHandler;-><init>()V
Landroid/app/ClientTransactionHandler;->executeTransaction(Landroid/app/servertransaction/ClientTransaction;)V
Landroid/app/ClientTransactionHandler;->getActivityClient(Landroid/os/IBinder;)Landroid/app/ActivityThread$ActivityClientRecord;
@@ -4982,10 +4629,8 @@
Landroid/app/ClientTransactionHandler;->sendMessage(ILjava/lang/Object;)V
Landroid/app/ClientTransactionHandler;->updatePendingConfiguration(Landroid/content/res/Configuration;)V
Landroid/app/ClientTransactionHandler;->updateProcessState(IZ)V
-Landroid/app/ContentProviderHolder;
Landroid/app/ContentProviderHolder;->connection:Landroid/os/IBinder;
Landroid/app/ContentProviderHolder;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/app/ContextImpl$ApplicationContentResolver;
Landroid/app/ContextImpl$ApplicationContentResolver;-><init>(Landroid/content/Context;Landroid/app/ActivityThread;)V
Landroid/app/ContextImpl$ApplicationContentResolver;->acquireExistingProvider(Landroid/content/Context;Ljava/lang/String;)Landroid/content/IContentProvider;
Landroid/app/ContextImpl$ApplicationContentResolver;->acquireUnstableProvider(Landroid/content/Context;Ljava/lang/String;)Landroid/content/IContentProvider;
@@ -4994,8 +4639,6 @@
Landroid/app/ContextImpl$ApplicationContentResolver;->releaseUnstableProvider(Landroid/content/IContentProvider;)Z
Landroid/app/ContextImpl$ApplicationContentResolver;->resolveUserIdFromAuthority(Ljava/lang/String;)I
Landroid/app/ContextImpl$ApplicationContentResolver;->unstableProviderDied(Landroid/content/IContentProvider;)V
-Landroid/app/ContextImpl$ServiceInitializationState;
-Landroid/app/ContextImpl;
Landroid/app/ContextImpl;-><init>(Landroid/app/ContextImpl;Landroid/app/ActivityThread;Landroid/app/LoadedApk;Ljava/lang/String;Landroid/os/IBinder;Landroid/os/UserHandle;ILjava/lang/ClassLoader;)V
Landroid/app/ContextImpl;->bindServiceAsUser(Landroid/content/Intent;Landroid/content/ServiceConnection;ILandroid/os/Handler;Landroid/os/UserHandle;)Z
Landroid/app/ContextImpl;->bindServiceCommon(Landroid/content/Intent;Landroid/content/ServiceConnection;ILandroid/os/Handler;Landroid/os/UserHandle;)Z
@@ -5087,7 +4730,6 @@
Landroid/app/DatePickerDialog;->mValidationCallback:Landroid/widget/DatePicker$ValidationCallback;
Landroid/app/DatePickerDialog;->resolveDialogTheme(Landroid/content/Context;I)I
Landroid/app/DatePickerDialog;->YEAR:Ljava/lang/String;
-Landroid/app/Dialog$ListenersHandler;
Landroid/app/Dialog$ListenersHandler;-><init>(Landroid/app/Dialog;)V
Landroid/app/Dialog$ListenersHandler;->mDialog:Ljava/lang/ref/WeakReference;
Landroid/app/Dialog;-><init>(Landroid/content/Context;IZ)V
@@ -5127,7 +4769,6 @@
Landroid/app/DialogFragment;->SAVED_SHOWS_DIALOG:Ljava/lang/String;
Landroid/app/DialogFragment;->SAVED_STYLE:Ljava/lang/String;
Landroid/app/DialogFragment;->SAVED_THEME:Ljava/lang/String;
-Landroid/app/DownloadManager$CursorTranslator;
Landroid/app/DownloadManager$CursorTranslator;-><init>(Landroid/database/Cursor;Landroid/net/Uri;Z)V
Landroid/app/DownloadManager$CursorTranslator;->getErrorCode(I)J
Landroid/app/DownloadManager$CursorTranslator;->getLocalUri()Ljava/lang/String;
@@ -5173,20 +4814,17 @@
Landroid/app/DownloadManager;->addCompletedDownload(Ljava/lang/String;Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;JZZLandroid/net/Uri;Landroid/net/Uri;)J
Landroid/app/DownloadManager;->COLUMN_ALLOW_WRITE:Ljava/lang/String;
Landroid/app/DownloadManager;->ERROR_BLOCKED:I
-Landroid/app/DownloadManager;->forceDownload([[J)V
Landroid/app/DownloadManager;->getActiveNetworkWarningBytes(Landroid/content/Context;)J
Landroid/app/DownloadManager;->getDownloadUri(J)Landroid/net/Uri;
Landroid/app/DownloadManager;->getWhereArgsForIds([J[Ljava/lang/String;)[Ljava/lang/String;
Landroid/app/DownloadManager;->isActiveNetworkExpensive(Landroid/content/Context;)Z
Landroid/app/DownloadManager;->mAccessFilename:Z
-Landroid/app/DownloadManager;->markRowDeleted([[J)I
Landroid/app/DownloadManager;->mBaseUri:Landroid/net/Uri;
Landroid/app/DownloadManager;->mPackageName:Ljava/lang/String;
Landroid/app/DownloadManager;->mResolver:Landroid/content/ContentResolver;
Landroid/app/DownloadManager;->NON_DOWNLOADMANAGER_DOWNLOAD:Ljava/lang/String;
Landroid/app/DownloadManager;->rename(Landroid/content/Context;JLjava/lang/String;)Z
Landroid/app/DownloadManager;->validateArgumentIsNonEmpty(Ljava/lang/String;Ljava/lang/String;)V
-Landroid/app/EnterTransitionCoordinator;
Landroid/app/EnterTransitionCoordinator;-><init>(Landroid/app/Activity;Landroid/os/ResultReceiver;Ljava/util/ArrayList;ZZ)V
Landroid/app/EnterTransitionCoordinator;->allowOverlappingTransitions()Z
Landroid/app/EnterTransitionCoordinator;->beginTransition(Landroid/view/ViewGroup;ZZ)Landroid/transition/Transition;
@@ -5237,9 +4875,7 @@
Landroid/app/EnterTransitionCoordinator;->triggerViewsReady(Landroid/util/ArrayMap;)V
Landroid/app/EnterTransitionCoordinator;->viewInstancesReady(Ljava/util/ArrayList;Ljava/util/ArrayList;Ljava/util/ArrayList;)V
Landroid/app/EnterTransitionCoordinator;->viewsReady(Landroid/util/ArrayMap;)V
-Landroid/app/ExitTransitionCoordinator$HideSharedElementsCallback;
Landroid/app/ExitTransitionCoordinator$HideSharedElementsCallback;->hideSharedElements()V
-Landroid/app/ExitTransitionCoordinator;
Landroid/app/ExitTransitionCoordinator;-><init>(Landroid/app/Activity;Landroid/view/Window;Landroid/app/SharedElementCallback;Ljava/util/ArrayList;Ljava/util/ArrayList;Ljava/util/ArrayList;Z)V
Landroid/app/ExitTransitionCoordinator;->beginTransitions()V
Landroid/app/ExitTransitionCoordinator;->captureExitSharedElementsState()Landroid/os/Bundle;
@@ -5287,7 +4923,6 @@
Landroid/app/ExpandableListActivity;->mAdapter:Landroid/widget/ExpandableListAdapter;
Landroid/app/ExpandableListActivity;->mFinishedStart:Z
Landroid/app/ExpandableListActivity;->mList:Landroid/widget/ExpandableListView;
-Landroid/app/Fragment$AnimationInfo;
Landroid/app/Fragment$AnimationInfo;-><init>()V
Landroid/app/Fragment$AnimationInfo;->mAllowEnterTransitionOverlap:Ljava/lang/Boolean;
Landroid/app/Fragment$AnimationInfo;->mAllowReturnTransitionOverlap:Ljava/lang/Boolean;
@@ -5307,7 +4942,6 @@
Landroid/app/Fragment$AnimationInfo;->mSharedElementReturnTransition:Landroid/transition/Transition;
Landroid/app/Fragment$AnimationInfo;->mStartEnterTransitionListener:Landroid/app/Fragment$OnStartEnterTransitionListener;
Landroid/app/Fragment$AnimationInfo;->mStateAfterAnimating:I
-Landroid/app/Fragment$OnStartEnterTransitionListener;
Landroid/app/Fragment$OnStartEnterTransitionListener;->onStartEnterTransition()V
Landroid/app/Fragment$OnStartEnterTransitionListener;->startListening()V
Landroid/app/Fragment$SavedState;-><init>(Landroid/os/Bundle;)V
@@ -5456,19 +5090,14 @@
Landroid/app/FragmentHostCallback;->restoreLoaderNonConfig(Landroid/util/ArrayMap;)V
Landroid/app/FragmentHostCallback;->retainLoaderNonConfig()Landroid/util/ArrayMap;
Landroid/app/FragmentManager;->openTransaction()Landroid/app/FragmentTransaction;
-Landroid/app/FragmentManagerImpl$AnimateOnHWLayerIfNeededListener;
Landroid/app/FragmentManagerImpl$AnimateOnHWLayerIfNeededListener;-><init>(Landroid/view/View;)V
Landroid/app/FragmentManagerImpl$AnimateOnHWLayerIfNeededListener;->mShouldRunOnHWLayer:Z
Landroid/app/FragmentManagerImpl$AnimateOnHWLayerIfNeededListener;->mView:Landroid/view/View;
-Landroid/app/FragmentManagerImpl$OpGenerator;
Landroid/app/FragmentManagerImpl$OpGenerator;->generateOps(Ljava/util/ArrayList;Ljava/util/ArrayList;)Z
-Landroid/app/FragmentManagerImpl$PopBackStackState;
-Landroid/app/FragmentManagerImpl$PopBackStackState;-><init>(Ljava/lang/String;II)V
Landroid/app/FragmentManagerImpl$PopBackStackState;->generateOps(Ljava/util/ArrayList;Ljava/util/ArrayList;)Z
Landroid/app/FragmentManagerImpl$PopBackStackState;->mFlags:I
Landroid/app/FragmentManagerImpl$PopBackStackState;->mId:I
Landroid/app/FragmentManagerImpl$PopBackStackState;->mName:Ljava/lang/String;
-Landroid/app/FragmentManagerImpl$StartEnterTransitionListener;
Landroid/app/FragmentManagerImpl$StartEnterTransitionListener;-><init>(Landroid/app/BackStackRecord;Z)V
Landroid/app/FragmentManagerImpl$StartEnterTransitionListener;->cancelTransaction()V
Landroid/app/FragmentManagerImpl$StartEnterTransitionListener;->completeTransaction()V
@@ -5478,7 +5107,6 @@
Landroid/app/FragmentManagerImpl$StartEnterTransitionListener;->mRecord:Landroid/app/BackStackRecord;
Landroid/app/FragmentManagerImpl$StartEnterTransitionListener;->onStartEnterTransition()V
Landroid/app/FragmentManagerImpl$StartEnterTransitionListener;->startListening()V
-Landroid/app/FragmentManagerImpl;
Landroid/app/FragmentManagerImpl;-><init>()V
Landroid/app/FragmentManagerImpl;->addAddedFragments(Landroid/util/ArraySet;)V
Landroid/app/FragmentManagerImpl;->addBackStackState(Landroid/app/BackStackRecord;)V
@@ -5616,14 +5244,11 @@
Landroid/app/FragmentManagerNonConfig;->getFragments()Ljava/util/List;
Landroid/app/FragmentManagerNonConfig;->mChildNonConfigs:Ljava/util/List;
Landroid/app/FragmentManagerNonConfig;->mFragments:Ljava/util/List;
-Landroid/app/FragmentTransaction$Transit;
-Landroid/app/GrantedUriPermission;
Landroid/app/GrantedUriPermission;-><init>(Landroid/net/Uri;Ljava/lang/String;)V
Landroid/app/GrantedUriPermission;-><init>(Landroid/os/Parcel;)V
Landroid/app/GrantedUriPermission;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/app/GrantedUriPermission;->packageName:Ljava/lang/String;
Landroid/app/GrantedUriPermission;->uri:Landroid/net/Uri;
-Landroid/app/IActivityController$Stub$Proxy;
Landroid/app/IActivityController$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/app/IActivityController$Stub$Proxy;->activityResuming(Ljava/lang/String;)Z
Landroid/app/IActivityController$Stub$Proxy;->activityStarting(Landroid/content/Intent;Ljava/lang/String;)Z
@@ -5633,7 +5258,6 @@
Landroid/app/IActivityController$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/app/IActivityController$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/app/IActivityController$Stub$Proxy;->systemNotResponding(Ljava/lang/String;)I
-Landroid/app/IActivityController$Stub;
Landroid/app/IActivityController$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IActivityController;
Landroid/app/IActivityController$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/app/IActivityController$Stub;->TRANSACTION_activityResuming:I
@@ -5642,11 +5266,9 @@
Landroid/app/IActivityController$Stub;->TRANSACTION_appEarlyNotResponding:I
Landroid/app/IActivityController$Stub;->TRANSACTION_appNotResponding:I
Landroid/app/IActivityController$Stub;->TRANSACTION_systemNotResponding:I
-Landroid/app/IActivityController;
Landroid/app/IActivityController;->appCrashed(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;JLjava/lang/String;)Z
Landroid/app/IActivityController;->appEarlyNotResponding(Ljava/lang/String;ILjava/lang/String;)I
Landroid/app/IActivityController;->systemNotResponding(Ljava/lang/String;)I
-Landroid/app/IActivityManager$Stub$Proxy;
Landroid/app/IActivityManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/app/IActivityManager$Stub$Proxy;->activityDestroyed(Landroid/os/IBinder;)V
Landroid/app/IActivityManager$Stub$Proxy;->activityIdle(Landroid/os/IBinder;Landroid/content/res/Configuration;Z)V
@@ -5947,7 +5569,6 @@
Landroid/app/IActivityManager$Stub$Proxy;->updateLockTaskPackages(I[Ljava/lang/String;)V
Landroid/app/IActivityManager$Stub$Proxy;->waitForNetworkStateUpdate(J)V
Landroid/app/IActivityManager$Stub$Proxy;->willActivityBeVisible(Landroid/os/IBinder;)Z
-Landroid/app/IActivityManager$Stub;
Landroid/app/IActivityManager$Stub;-><init>()V
Landroid/app/IActivityManager$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/app/IActivityManager$Stub;->onTransact$bindService$(Landroid/os/Parcel;Landroid/os/Parcel;)Z
@@ -6285,7 +5906,6 @@
Landroid/app/IActivityManager$Stub;->TRANSACTION_updatePersistentConfiguration:I
Landroid/app/IActivityManager$Stub;->TRANSACTION_waitForNetworkStateUpdate:I
Landroid/app/IActivityManager$Stub;->TRANSACTION_willActivityBeVisible:I
-Landroid/app/IActivityManager;
Landroid/app/IActivityManager;->activityDestroyed(Landroid/os/IBinder;)V
Landroid/app/IActivityManager;->activityIdle(Landroid/os/IBinder;Landroid/content/res/Configuration;Z)V
Landroid/app/IActivityManager;->activityPaused(Landroid/os/IBinder;)V
@@ -6494,43 +6114,33 @@
Landroid/app/IActivityManager;->updateLockTaskPackages(I[Ljava/lang/String;)V
Landroid/app/IActivityManager;->waitForNetworkStateUpdate(J)V
Landroid/app/IActivityManager;->willActivityBeVisible(Landroid/os/IBinder;)Z
-Landroid/app/IActivityPendingResult$Stub$Proxy;
Landroid/app/IActivityPendingResult$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/app/IActivityPendingResult$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/app/IActivityPendingResult$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/app/IActivityPendingResult$Stub$Proxy;->sendResult(ILjava/lang/String;Landroid/os/Bundle;)Z
-Landroid/app/IActivityPendingResult$Stub;
Landroid/app/IActivityPendingResult$Stub;-><init>()V
Landroid/app/IActivityPendingResult$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IActivityPendingResult;
Landroid/app/IActivityPendingResult$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/app/IActivityPendingResult$Stub;->TRANSACTION_sendResult:I
-Landroid/app/IActivityPendingResult;
Landroid/app/IActivityPendingResult;->sendResult(ILjava/lang/String;Landroid/os/Bundle;)Z
-Landroid/app/IAlarmCompleteListener$Stub$Proxy;
Landroid/app/IAlarmCompleteListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/app/IAlarmCompleteListener$Stub$Proxy;->alarmComplete(Landroid/os/IBinder;)V
Landroid/app/IAlarmCompleteListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/app/IAlarmCompleteListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/app/IAlarmCompleteListener$Stub;
Landroid/app/IAlarmCompleteListener$Stub;-><init>()V
Landroid/app/IAlarmCompleteListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IAlarmCompleteListener;
Landroid/app/IAlarmCompleteListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/app/IAlarmCompleteListener$Stub;->TRANSACTION_alarmComplete:I
-Landroid/app/IAlarmCompleteListener;
Landroid/app/IAlarmCompleteListener;->alarmComplete(Landroid/os/IBinder;)V
-Landroid/app/IAlarmListener$Stub$Proxy;
Landroid/app/IAlarmListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/app/IAlarmListener$Stub$Proxy;->doAlarm(Landroid/app/IAlarmCompleteListener;)V
Landroid/app/IAlarmListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/app/IAlarmListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/app/IAlarmListener$Stub;
Landroid/app/IAlarmListener$Stub;-><init>()V
Landroid/app/IAlarmListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IAlarmListener;
Landroid/app/IAlarmListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/app/IAlarmListener$Stub;->TRANSACTION_doAlarm:I
-Landroid/app/IAlarmListener;
Landroid/app/IAlarmListener;->doAlarm(Landroid/app/IAlarmCompleteListener;)V
-Landroid/app/IAlarmManager$Stub$Proxy;
Landroid/app/IAlarmManager$Stub$Proxy;->currentNetworkTimeMillis()J
Landroid/app/IAlarmManager$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/app/IAlarmManager$Stub$Proxy;->getNextAlarmClock(I)Landroid/app/AlarmManager$AlarmClockInfo;
@@ -6540,19 +6150,16 @@
Landroid/app/IAlarmManager$Stub$Proxy;->set(Ljava/lang/String;IJJJILandroid/app/PendingIntent;Landroid/app/IAlarmListener;Ljava/lang/String;Landroid/os/WorkSource;Landroid/app/AlarmManager$AlarmClockInfo;)V
Landroid/app/IAlarmManager$Stub$Proxy;->setTime(J)Z
Landroid/app/IAlarmManager$Stub$Proxy;->setTimeZone(Ljava/lang/String;)V
-Landroid/app/IAlarmManager$Stub;
Landroid/app/IAlarmManager$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/app/IAlarmManager$Stub;->TRANSACTION_currentNetworkTimeMillis:I
Landroid/app/IAlarmManager$Stub;->TRANSACTION_getNextAlarmClock:I
Landroid/app/IAlarmManager$Stub;->TRANSACTION_getNextWakeFromIdleTime:I
Landroid/app/IAlarmManager$Stub;->TRANSACTION_setTime:I
Landroid/app/IAlarmManager$Stub;->TRANSACTION_setTimeZone:I
-Landroid/app/IAlarmManager;
Landroid/app/IAlarmManager;->currentNetworkTimeMillis()J
Landroid/app/IAlarmManager;->getNextWakeFromIdleTime()J
Landroid/app/IAlarmManager;->remove(Landroid/app/PendingIntent;Landroid/app/IAlarmListener;)V
Landroid/app/IAlarmManager;->setTimeZone(Ljava/lang/String;)V
-Landroid/app/IApplicationThread$Stub$Proxy;
Landroid/app/IApplicationThread$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/app/IApplicationThread$Stub$Proxy;->attachAgent(Ljava/lang/String;)V
Landroid/app/IApplicationThread$Stub$Proxy;->bindApplication(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;Ljava/util/List;Landroid/content/ComponentName;Landroid/app/ProfilerInfo;Landroid/os/Bundle;Landroid/app/IInstrumentationWatcher;Landroid/app/IUiAutomationConnection;IZZZZLandroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;Ljava/util/Map;Landroid/os/Bundle;Ljava/lang/String;Z)V
@@ -6607,7 +6214,6 @@
Landroid/app/IApplicationThread$Stub$Proxy;->updatePackageCompatibilityInfo(Ljava/lang/String;Landroid/content/res/CompatibilityInfo;)V
Landroid/app/IApplicationThread$Stub$Proxy;->updateTimePrefs(I)V
Landroid/app/IApplicationThread$Stub$Proxy;->updateTimeZone()V
-Landroid/app/IApplicationThread$Stub;
Landroid/app/IApplicationThread$Stub;-><init>()V
Landroid/app/IApplicationThread$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IApplicationThread;
Landroid/app/IApplicationThread$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -6662,7 +6268,6 @@
Landroid/app/IApplicationThread$Stub;->TRANSACTION_updatePackageCompatibilityInfo:I
Landroid/app/IApplicationThread$Stub;->TRANSACTION_updateTimePrefs:I
Landroid/app/IApplicationThread$Stub;->TRANSACTION_updateTimeZone:I
-Landroid/app/IApplicationThread;
Landroid/app/IApplicationThread;->attachAgent(Ljava/lang/String;)V
Landroid/app/IApplicationThread;->bindApplication(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;Ljava/util/List;Landroid/content/ComponentName;Landroid/app/ProfilerInfo;Landroid/os/Bundle;Landroid/app/IInstrumentationWatcher;Landroid/app/IUiAutomationConnection;IZZZZLandroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;Ljava/util/Map;Landroid/os/Bundle;Ljava/lang/String;Z)V
Landroid/app/IApplicationThread;->clearDnsCache()V
@@ -6704,7 +6309,6 @@
Landroid/app/IApplicationThread;->unstableProviderDied(Landroid/os/IBinder;)V
Landroid/app/IApplicationThread;->updatePackageCompatibilityInfo(Ljava/lang/String;Landroid/content/res/CompatibilityInfo;)V
Landroid/app/IApplicationThread;->updateTimePrefs(I)V
-Landroid/app/IAppTask$Stub$Proxy;
Landroid/app/IAppTask$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/app/IAppTask$Stub$Proxy;->finishAndRemoveTask()V
Landroid/app/IAppTask$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
@@ -6713,7 +6317,6 @@
Landroid/app/IAppTask$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/app/IAppTask$Stub$Proxy;->setExcludeFromRecents(Z)V
Landroid/app/IAppTask$Stub$Proxy;->startActivity(Landroid/os/IBinder;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/os/Bundle;)I
-Landroid/app/IAppTask$Stub;
Landroid/app/IAppTask$Stub;-><init>()V
Landroid/app/IAppTask$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IAppTask;
Landroid/app/IAppTask$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -6722,24 +6325,19 @@
Landroid/app/IAppTask$Stub;->TRANSACTION_moveToFront:I
Landroid/app/IAppTask$Stub;->TRANSACTION_setExcludeFromRecents:I
Landroid/app/IAppTask$Stub;->TRANSACTION_startActivity:I
-Landroid/app/IAppTask;
Landroid/app/IAppTask;->finishAndRemoveTask()V
Landroid/app/IAppTask;->moveToFront()V
Landroid/app/IAppTask;->setExcludeFromRecents(Z)V
Landroid/app/IAppTask;->startActivity(Landroid/os/IBinder;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/os/Bundle;)I
-Landroid/app/IAssistDataReceiver$Stub$Proxy;
Landroid/app/IAssistDataReceiver$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/app/IAssistDataReceiver$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/app/IAssistDataReceiver$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/app/IAssistDataReceiver$Stub$Proxy;->onHandleAssistData(Landroid/os/Bundle;)V
Landroid/app/IAssistDataReceiver$Stub$Proxy;->onHandleAssistScreenshot(Landroid/graphics/Bitmap;)V
-Landroid/app/IAssistDataReceiver$Stub;
Landroid/app/IAssistDataReceiver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IAssistDataReceiver;
Landroid/app/IAssistDataReceiver$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/app/IAssistDataReceiver$Stub;->TRANSACTION_onHandleAssistData:I
Landroid/app/IAssistDataReceiver$Stub;->TRANSACTION_onHandleAssistScreenshot:I
-Landroid/app/IAssistDataReceiver;
-Landroid/app/IBackupAgent$Stub$Proxy;
Landroid/app/IBackupAgent$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/app/IBackupAgent$Stub$Proxy;->doBackup(Landroid/os/ParcelFileDescriptor;Landroid/os/ParcelFileDescriptor;Landroid/os/ParcelFileDescriptor;JILandroid/app/backup/IBackupManager;I)V
Landroid/app/IBackupAgent$Stub$Proxy;->doFullBackup(Landroid/os/ParcelFileDescriptor;JILandroid/app/backup/IBackupManager;I)V
@@ -6751,7 +6349,6 @@
Landroid/app/IBackupAgent$Stub$Proxy;->fail(Ljava/lang/String;)V
Landroid/app/IBackupAgent$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/app/IBackupAgent$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/app/IBackupAgent$Stub;
Landroid/app/IBackupAgent$Stub;-><init>()V
Landroid/app/IBackupAgent$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/app/IBackupAgent$Stub;->TRANSACTION_doBackup:I
@@ -6762,7 +6359,6 @@
Landroid/app/IBackupAgent$Stub;->TRANSACTION_doRestoreFile:I
Landroid/app/IBackupAgent$Stub;->TRANSACTION_doRestoreFinished:I
Landroid/app/IBackupAgent$Stub;->TRANSACTION_fail:I
-Landroid/app/IBackupAgent;
Landroid/app/IBackupAgent;->doBackup(Landroid/os/ParcelFileDescriptor;Landroid/os/ParcelFileDescriptor;Landroid/os/ParcelFileDescriptor;JILandroid/app/backup/IBackupManager;I)V
Landroid/app/IBackupAgent;->doFullBackup(Landroid/os/ParcelFileDescriptor;JILandroid/app/backup/IBackupManager;I)V
Landroid/app/IBackupAgent;->doMeasureFullBackup(JILandroid/app/backup/IBackupManager;I)V
@@ -6771,59 +6367,46 @@
Landroid/app/IBackupAgent;->doRestoreFile(Landroid/os/ParcelFileDescriptor;JILjava/lang/String;Ljava/lang/String;JJILandroid/app/backup/IBackupManager;)V
Landroid/app/IBackupAgent;->doRestoreFinished(ILandroid/app/backup/IBackupManager;)V
Landroid/app/IBackupAgent;->fail(Ljava/lang/String;)V
-Landroid/app/IEphemeralResolver$Stub$Proxy;
Landroid/app/IEphemeralResolver$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/app/IEphemeralResolver$Stub$Proxy;->getEphemeralIntentFilterList(Landroid/os/IRemoteCallback;Ljava/lang/String;I)V
Landroid/app/IEphemeralResolver$Stub$Proxy;->getEphemeralResolveInfoList(Landroid/os/IRemoteCallback;[II)V
Landroid/app/IEphemeralResolver$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/app/IEphemeralResolver$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/app/IEphemeralResolver$Stub;
Landroid/app/IEphemeralResolver$Stub;-><init>()V
Landroid/app/IEphemeralResolver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IEphemeralResolver;
Landroid/app/IEphemeralResolver$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/app/IEphemeralResolver$Stub;->TRANSACTION_getEphemeralIntentFilterList:I
Landroid/app/IEphemeralResolver$Stub;->TRANSACTION_getEphemeralResolveInfoList:I
-Landroid/app/IEphemeralResolver;
Landroid/app/IEphemeralResolver;->getEphemeralIntentFilterList(Landroid/os/IRemoteCallback;Ljava/lang/String;I)V
Landroid/app/IEphemeralResolver;->getEphemeralResolveInfoList(Landroid/os/IRemoteCallback;[II)V
-Landroid/app/IInputForwarder$Stub$Proxy;
Landroid/app/IInputForwarder$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/app/IInputForwarder$Stub$Proxy;->forwardEvent(Landroid/view/InputEvent;)Z
Landroid/app/IInputForwarder$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/app/IInputForwarder$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/app/IInputForwarder$Stub;
Landroid/app/IInputForwarder$Stub;-><init>()V
Landroid/app/IInputForwarder$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IInputForwarder;
Landroid/app/IInputForwarder$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/app/IInputForwarder$Stub;->TRANSACTION_forwardEvent:I
-Landroid/app/IInputForwarder;
-Landroid/app/IInstantAppResolver$Stub$Proxy;
Landroid/app/IInstantAppResolver$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/app/IInstantAppResolver$Stub$Proxy;->getInstantAppIntentFilterList(Landroid/content/Intent;[ILjava/lang/String;Landroid/os/IRemoteCallback;)V
Landroid/app/IInstantAppResolver$Stub$Proxy;->getInstantAppResolveInfoList(Landroid/content/Intent;[ILjava/lang/String;ILandroid/os/IRemoteCallback;)V
Landroid/app/IInstantAppResolver$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/app/IInstantAppResolver$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/app/IInstantAppResolver$Stub;
Landroid/app/IInstantAppResolver$Stub;-><init>()V
Landroid/app/IInstantAppResolver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IInstantAppResolver;
Landroid/app/IInstantAppResolver$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/app/IInstantAppResolver$Stub;->TRANSACTION_getInstantAppIntentFilterList:I
Landroid/app/IInstantAppResolver$Stub;->TRANSACTION_getInstantAppResolveInfoList:I
-Landroid/app/IInstantAppResolver;
Landroid/app/IInstantAppResolver;->getInstantAppIntentFilterList(Landroid/content/Intent;[ILjava/lang/String;Landroid/os/IRemoteCallback;)V
Landroid/app/IInstantAppResolver;->getInstantAppResolveInfoList(Landroid/content/Intent;[ILjava/lang/String;ILandroid/os/IRemoteCallback;)V
-Landroid/app/IInstrumentationWatcher$Stub$Proxy;
Landroid/app/IInstrumentationWatcher$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/app/IInstrumentationWatcher$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/app/IInstrumentationWatcher$Stub$Proxy;->instrumentationFinished(Landroid/content/ComponentName;ILandroid/os/Bundle;)V
Landroid/app/IInstrumentationWatcher$Stub$Proxy;->instrumentationStatus(Landroid/content/ComponentName;ILandroid/os/Bundle;)V
Landroid/app/IInstrumentationWatcher$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/app/IInstrumentationWatcher$Stub;
Landroid/app/IInstrumentationWatcher$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/app/IInstrumentationWatcher$Stub;->TRANSACTION_instrumentationFinished:I
Landroid/app/IInstrumentationWatcher$Stub;->TRANSACTION_instrumentationStatus:I
-Landroid/app/IInstrumentationWatcher;
-Landroid/app/INotificationManager$Stub$Proxy;
Landroid/app/INotificationManager$Stub$Proxy;->addAutomaticZenRule(Landroid/app/AutomaticZenRule;)Ljava/lang/String;
Landroid/app/INotificationManager$Stub$Proxy;->applyAdjustmentFromAssistant(Landroid/service/notification/INotificationListener;Landroid/service/notification/Adjustment;)V
Landroid/app/INotificationManager$Stub$Proxy;->applyAdjustmentsFromAssistant(Landroid/service/notification/INotificationListener;Ljava/util/List;)V
@@ -6923,7 +6506,6 @@
Landroid/app/INotificationManager$Stub$Proxy;->updateNotificationChannelFromPrivilegedListener(Landroid/service/notification/INotificationListener;Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannel;)V
Landroid/app/INotificationManager$Stub$Proxy;->updateNotificationChannelGroupForPackage(Ljava/lang/String;ILandroid/app/NotificationChannelGroup;)V
Landroid/app/INotificationManager$Stub$Proxy;->updateNotificationChannelGroupFromPrivilegedListener(Landroid/service/notification/INotificationListener;Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannelGroup;)V
-Landroid/app/INotificationManager$Stub;
Landroid/app/INotificationManager$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/app/INotificationManager$Stub;->TRANSACTION_addAutomaticZenRule:I
Landroid/app/INotificationManager$Stub;->TRANSACTION_applyAdjustmentFromAssistant:I
@@ -7022,7 +6604,6 @@
Landroid/app/INotificationManager$Stub;->TRANSACTION_updateNotificationChannelFromPrivilegedListener:I
Landroid/app/INotificationManager$Stub;->TRANSACTION_updateNotificationChannelGroupForPackage:I
Landroid/app/INotificationManager$Stub;->TRANSACTION_updateNotificationChannelGroupFromPrivilegedListener:I
-Landroid/app/INotificationManager;
Landroid/app/INotificationManager;->addAutomaticZenRule(Landroid/app/AutomaticZenRule;)Ljava/lang/String;
Landroid/app/INotificationManager;->applyAdjustmentFromAssistant(Landroid/service/notification/INotificationListener;Landroid/service/notification/Adjustment;)V
Landroid/app/INotificationManager;->applyAdjustmentsFromAssistant(Landroid/service/notification/INotificationListener;Ljava/util/List;)V
@@ -7115,8 +6696,6 @@
Landroid/app/InstantAppResolverService$InstantAppResolutionCallback;-><init>(ILandroid/os/IRemoteCallback;)V
Landroid/app/InstantAppResolverService$InstantAppResolutionCallback;->mCallback:Landroid/os/IRemoteCallback;
Landroid/app/InstantAppResolverService$InstantAppResolutionCallback;->mSequence:I
-Landroid/app/InstantAppResolverService$ServiceHandler;
-Landroid/app/InstantAppResolverService$ServiceHandler;-><init>(Landroid/os/Looper;)V
Landroid/app/InstantAppResolverService$ServiceHandler;->MSG_GET_INSTANT_APP_INTENT_FILTER:I
Landroid/app/InstantAppResolverService$ServiceHandler;->MSG_GET_INSTANT_APP_RESOLVE_INFO:I
Landroid/app/InstantAppResolverService;->DEBUG_INSTANT:Z
@@ -7125,8 +6704,6 @@
Landroid/app/InstantAppResolverService;->getLooper()Landroid/os/Looper;
Landroid/app/InstantAppResolverService;->mHandler:Landroid/os/Handler;
Landroid/app/InstantAppResolverService;->TAG:Ljava/lang/String;
-Landroid/app/Instrumentation$ActivityGoing;
-Landroid/app/Instrumentation$ActivityGoing;-><init>(Landroid/app/Instrumentation$ActivityWaiter;)V
Landroid/app/Instrumentation$ActivityGoing;->mWaiter:Landroid/app/Instrumentation$ActivityWaiter;
Landroid/app/Instrumentation$ActivityMonitor;->ignoreMatchingSpecificIntents()Z
Landroid/app/Instrumentation$ActivityMonitor;->match(Landroid/content/Context;Landroid/app/Activity;Landroid/content/Intent;)Z
@@ -7139,25 +6716,18 @@
Landroid/app/Instrumentation$ActivityMonitor;->mWhich:Landroid/content/IntentFilter;
Landroid/app/Instrumentation$ActivityResult;->mResultCode:I
Landroid/app/Instrumentation$ActivityResult;->mResultData:Landroid/content/Intent;
-Landroid/app/Instrumentation$ActivityWaiter;
Landroid/app/Instrumentation$ActivityWaiter;-><init>(Landroid/content/Intent;)V
Landroid/app/Instrumentation$ActivityWaiter;->activity:Landroid/app/Activity;
Landroid/app/Instrumentation$ActivityWaiter;->intent:Landroid/content/Intent;
-Landroid/app/Instrumentation$EmptyRunnable;
Landroid/app/Instrumentation$EmptyRunnable;-><init>()V
-Landroid/app/Instrumentation$Idler;
Landroid/app/Instrumentation$Idler;-><init>(Ljava/lang/Runnable;)V
Landroid/app/Instrumentation$Idler;->mCallback:Ljava/lang/Runnable;
Landroid/app/Instrumentation$Idler;->mIdle:Z
Landroid/app/Instrumentation$Idler;->waitForIdle()V
-Landroid/app/Instrumentation$InstrumentationThread;
-Landroid/app/Instrumentation$InstrumentationThread;-><init>(Ljava/lang/String;)V
-Landroid/app/Instrumentation$SyncRunnable;
Landroid/app/Instrumentation$SyncRunnable;-><init>(Ljava/lang/Runnable;)V
Landroid/app/Instrumentation$SyncRunnable;->mComplete:Z
Landroid/app/Instrumentation$SyncRunnable;->mTarget:Ljava/lang/Runnable;
Landroid/app/Instrumentation$SyncRunnable;->waitForComplete()V
-Landroid/app/Instrumentation$UiAutomationFlags;
Landroid/app/Instrumentation;->addValue(Ljava/lang/String;ILandroid/os/Bundle;)V
Landroid/app/Instrumentation;->basicInit(Landroid/app/ActivityThread;)V
Landroid/app/Instrumentation;->checkInstrumenting(Ljava/lang/String;)V
@@ -7182,27 +6752,20 @@
Landroid/app/Instrumentation;->prePerformCreate(Landroid/app/Activity;)V
Landroid/app/Instrumentation;->TAG:Ljava/lang/String;
Landroid/app/Instrumentation;->validateNotAppThread()V
-Landroid/app/IntentReceiverLeaked;
-Landroid/app/IntentService$ServiceHandler;
-Landroid/app/IntentService$ServiceHandler;-><init>(Landroid/os/Looper;)V
Landroid/app/IntentService;->mName:Ljava/lang/String;
Landroid/app/IntentService;->mRedelivery:Z
Landroid/app/IntentService;->mServiceLooper:Landroid/os/Looper;
-Landroid/app/IProcessObserver$Stub$Proxy;
Landroid/app/IProcessObserver$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/app/IProcessObserver$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/app/IProcessObserver$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/app/IProcessObserver$Stub$Proxy;->onForegroundActivitiesChanged(IIZ)V
Landroid/app/IProcessObserver$Stub$Proxy;->onProcessDied(II)V
-Landroid/app/IProcessObserver$Stub;
Landroid/app/IProcessObserver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IProcessObserver;
Landroid/app/IProcessObserver$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/app/IProcessObserver$Stub;->TRANSACTION_onForegroundActivitiesChanged:I
Landroid/app/IProcessObserver$Stub;->TRANSACTION_onProcessDied:I
-Landroid/app/IProcessObserver;
Landroid/app/IProcessObserver;->onForegroundActivitiesChanged(IIZ)V
Landroid/app/IProcessObserver;->onProcessDied(II)V
-Landroid/app/ISearchManager$Stub$Proxy;
Landroid/app/ISearchManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/app/ISearchManager$Stub$Proxy;->getGlobalSearchActivities()Ljava/util/List;
Landroid/app/ISearchManager$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
@@ -7211,7 +6774,6 @@
Landroid/app/ISearchManager$Stub$Proxy;->launchAssist(Landroid/os/Bundle;)V
Landroid/app/ISearchManager$Stub$Proxy;->launchLegacyAssist(Ljava/lang/String;ILandroid/os/Bundle;)Z
Landroid/app/ISearchManager$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/app/ISearchManager$Stub;
Landroid/app/ISearchManager$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/app/ISearchManager$Stub;->TRANSACTION_getGlobalSearchActivities:I
Landroid/app/ISearchManager$Stub;->TRANSACTION_getGlobalSearchActivity:I
@@ -7220,47 +6782,36 @@
Landroid/app/ISearchManager$Stub;->TRANSACTION_getWebSearchActivity:I
Landroid/app/ISearchManager$Stub;->TRANSACTION_launchAssist:I
Landroid/app/ISearchManager$Stub;->TRANSACTION_launchLegacyAssist:I
-Landroid/app/ISearchManager;
Landroid/app/ISearchManager;->getGlobalSearchActivities()Ljava/util/List;
Landroid/app/ISearchManager;->getSearchableInfo(Landroid/content/ComponentName;)Landroid/app/SearchableInfo;
Landroid/app/ISearchManager;->getSearchablesInGlobalSearch()Ljava/util/List;
Landroid/app/ISearchManager;->getWebSearchActivity()Landroid/content/ComponentName;
Landroid/app/ISearchManager;->launchAssist(Landroid/os/Bundle;)V
Landroid/app/ISearchManager;->launchLegacyAssist(Ljava/lang/String;ILandroid/os/Bundle;)Z
-Landroid/app/ISearchManagerCallback$Stub$Proxy;
Landroid/app/ISearchManagerCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/app/ISearchManagerCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/app/ISearchManagerCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/app/ISearchManagerCallback$Stub$Proxy;->onCancel()V
Landroid/app/ISearchManagerCallback$Stub$Proxy;->onDismiss()V
-Landroid/app/ISearchManagerCallback$Stub;
Landroid/app/ISearchManagerCallback$Stub;-><init>()V
Landroid/app/ISearchManagerCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/ISearchManagerCallback;
Landroid/app/ISearchManagerCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/app/ISearchManagerCallback$Stub;->TRANSACTION_onCancel:I
Landroid/app/ISearchManagerCallback$Stub;->TRANSACTION_onDismiss:I
-Landroid/app/ISearchManagerCallback;
Landroid/app/ISearchManagerCallback;->onCancel()V
Landroid/app/ISearchManagerCallback;->onDismiss()V
-Landroid/app/IServiceConnection$Stub$Proxy;
Landroid/app/IServiceConnection$Stub$Proxy;->connected(Landroid/content/ComponentName;Landroid/os/IBinder;Z)V
Landroid/app/IServiceConnection$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
-Landroid/app/IServiceConnection$Stub;
Landroid/app/IServiceConnection$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/app/IServiceConnection$Stub;->TRANSACTION_connected:I
-Landroid/app/IServiceConnection;
-Landroid/app/IStopUserCallback$Stub$Proxy;
Landroid/app/IStopUserCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/app/IStopUserCallback$Stub$Proxy;->userStopAborted(I)V
Landroid/app/IStopUserCallback$Stub$Proxy;->userStopped(I)V
-Landroid/app/IStopUserCallback$Stub;
Landroid/app/IStopUserCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IStopUserCallback;
Landroid/app/IStopUserCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/app/IStopUserCallback$Stub;->TRANSACTION_userStopAborted:I
Landroid/app/IStopUserCallback$Stub;->TRANSACTION_userStopped:I
-Landroid/app/IStopUserCallback;
Landroid/app/IStopUserCallback;->userStopAborted(I)V
-Landroid/app/ITaskStackListener$Stub$Proxy;
Landroid/app/ITaskStackListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/app/ITaskStackListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/app/ITaskStackListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -7281,7 +6832,6 @@
Landroid/app/ITaskStackListener$Stub$Proxy;->onTaskRemoved(I)V
Landroid/app/ITaskStackListener$Stub$Proxy;->onTaskSnapshotChanged(ILandroid/app/ActivityManager$TaskSnapshot;)V
Landroid/app/ITaskStackListener$Stub$Proxy;->onTaskStackChanged()V
-Landroid/app/ITaskStackListener$Stub;
Landroid/app/ITaskStackListener$Stub;-><init>()V
Landroid/app/ITaskStackListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/ITaskStackListener;
Landroid/app/ITaskStackListener$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -7302,7 +6852,6 @@
Landroid/app/ITaskStackListener$Stub;->TRANSACTION_onTaskRemoved:I
Landroid/app/ITaskStackListener$Stub;->TRANSACTION_onTaskSnapshotChanged:I
Landroid/app/ITaskStackListener$Stub;->TRANSACTION_onTaskStackChanged:I
-Landroid/app/ITaskStackListener;
Landroid/app/ITaskStackListener;->FORCED_RESIZEABLE_REASON_SECONDARY_DISPLAY:I
Landroid/app/ITaskStackListener;->FORCED_RESIZEABLE_REASON_SPLIT_SCREEN:I
Landroid/app/ITaskStackListener;->onActivityDismissingDockedStack()V
@@ -7322,19 +6871,15 @@
Landroid/app/ITaskStackListener;->onTaskRemoved(I)V
Landroid/app/ITaskStackListener;->onTaskSnapshotChanged(ILandroid/app/ActivityManager$TaskSnapshot;)V
Landroid/app/ITaskStackListener;->onTaskStackChanged()V
-Landroid/app/ITransientNotification$Stub$Proxy;
Landroid/app/ITransientNotification$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/app/ITransientNotification$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/app/ITransientNotification$Stub$Proxy;->hide()V
Landroid/app/ITransientNotification$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/app/ITransientNotification$Stub$Proxy;->show(Landroid/os/IBinder;)V
-Landroid/app/ITransientNotification$Stub;
Landroid/app/ITransientNotification$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/ITransientNotification;
Landroid/app/ITransientNotification$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/app/ITransientNotification$Stub;->TRANSACTION_hide:I
Landroid/app/ITransientNotification$Stub;->TRANSACTION_show:I
-Landroid/app/ITransientNotification;
-Landroid/app/IUiAutomationConnection$Stub$Proxy;
Landroid/app/IUiAutomationConnection$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/app/IUiAutomationConnection$Stub$Proxy;->clearWindowAnimationFrameStats()V
Landroid/app/IUiAutomationConnection$Stub$Proxy;->clearWindowContentFrameStats(I)Z
@@ -7351,7 +6896,6 @@
Landroid/app/IUiAutomationConnection$Stub$Proxy;->setRotation(I)Z
Landroid/app/IUiAutomationConnection$Stub$Proxy;->shutdown()V
Landroid/app/IUiAutomationConnection$Stub$Proxy;->takeScreenshot(Landroid/graphics/Rect;I)Landroid/graphics/Bitmap;
-Landroid/app/IUiAutomationConnection$Stub;
Landroid/app/IUiAutomationConnection$Stub;-><init>()V
Landroid/app/IUiAutomationConnection$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IUiAutomationConnection;
Landroid/app/IUiAutomationConnection$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -7368,7 +6912,6 @@
Landroid/app/IUiAutomationConnection$Stub;->TRANSACTION_setRotation:I
Landroid/app/IUiAutomationConnection$Stub;->TRANSACTION_shutdown:I
Landroid/app/IUiAutomationConnection$Stub;->TRANSACTION_takeScreenshot:I
-Landroid/app/IUiAutomationConnection;
Landroid/app/IUiAutomationConnection;->clearWindowAnimationFrameStats()V
Landroid/app/IUiAutomationConnection;->clearWindowContentFrameStats(I)Z
Landroid/app/IUiAutomationConnection;->connect(Landroid/accessibilityservice/IAccessibilityServiceClient;I)V
@@ -7382,7 +6925,6 @@
Landroid/app/IUiAutomationConnection;->setRotation(I)Z
Landroid/app/IUiAutomationConnection;->shutdown()V
Landroid/app/IUiAutomationConnection;->takeScreenshot(Landroid/graphics/Rect;I)Landroid/graphics/Bitmap;
-Landroid/app/IUidObserver$Stub$Proxy;
Landroid/app/IUidObserver$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/app/IUidObserver$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/app/IUidObserver$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -7391,7 +6933,6 @@
Landroid/app/IUidObserver$Stub$Proxy;->onUidGone(IZ)V
Landroid/app/IUidObserver$Stub$Proxy;->onUidIdle(IZ)V
Landroid/app/IUidObserver$Stub$Proxy;->onUidStateChanged(IIJ)V
-Landroid/app/IUidObserver$Stub;
Landroid/app/IUidObserver$Stub;-><init>()V
Landroid/app/IUidObserver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IUidObserver;
Landroid/app/IUidObserver$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -7400,13 +6941,11 @@
Landroid/app/IUidObserver$Stub;->TRANSACTION_onUidGone:I
Landroid/app/IUidObserver$Stub;->TRANSACTION_onUidIdle:I
Landroid/app/IUidObserver$Stub;->TRANSACTION_onUidStateChanged:I
-Landroid/app/IUidObserver;
Landroid/app/IUidObserver;->onUidActive(I)V
Landroid/app/IUidObserver;->onUidCachedChanged(IZ)V
Landroid/app/IUidObserver;->onUidGone(IZ)V
Landroid/app/IUidObserver;->onUidIdle(IZ)V
Landroid/app/IUidObserver;->onUidStateChanged(IIJ)V
-Landroid/app/IUiModeManager$Stub$Proxy;
Landroid/app/IUiModeManager$Stub$Proxy;->disableCarMode(I)V
Landroid/app/IUiModeManager$Stub$Proxy;->enableCarMode(I)V
Landroid/app/IUiModeManager$Stub$Proxy;->getCurrentModeType()I
@@ -7416,7 +6955,6 @@
Landroid/app/IUiModeManager$Stub$Proxy;->isUiModeLocked()Z
Landroid/app/IUiModeManager$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/app/IUiModeManager$Stub$Proxy;->setNightMode(I)V
-Landroid/app/IUiModeManager$Stub;
Landroid/app/IUiModeManager$Stub;-><init>()V
Landroid/app/IUiModeManager$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/app/IUiModeManager$Stub;->TRANSACTION_disableCarMode:I
@@ -7426,14 +6964,12 @@
Landroid/app/IUiModeManager$Stub;->TRANSACTION_isNightModeLocked:I
Landroid/app/IUiModeManager$Stub;->TRANSACTION_isUiModeLocked:I
Landroid/app/IUiModeManager$Stub;->TRANSACTION_setNightMode:I
-Landroid/app/IUiModeManager;
Landroid/app/IUiModeManager;->enableCarMode(I)V
Landroid/app/IUiModeManager;->getCurrentModeType()I
Landroid/app/IUiModeManager;->getNightMode()I
Landroid/app/IUiModeManager;->isNightModeLocked()Z
Landroid/app/IUiModeManager;->isUiModeLocked()Z
Landroid/app/IUiModeManager;->setNightMode(I)V
-Landroid/app/IUserSwitchObserver$Stub$Proxy;
Landroid/app/IUserSwitchObserver$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/app/IUserSwitchObserver$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/app/IUserSwitchObserver$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -7441,19 +6977,16 @@
Landroid/app/IUserSwitchObserver$Stub$Proxy;->onLockedBootComplete(I)V
Landroid/app/IUserSwitchObserver$Stub$Proxy;->onUserSwitchComplete(I)V
Landroid/app/IUserSwitchObserver$Stub$Proxy;->onUserSwitching(ILandroid/os/IRemoteCallback;)V
-Landroid/app/IUserSwitchObserver$Stub;
Landroid/app/IUserSwitchObserver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IUserSwitchObserver;
Landroid/app/IUserSwitchObserver$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/app/IUserSwitchObserver$Stub;->TRANSACTION_onForegroundProfileSwitch:I
Landroid/app/IUserSwitchObserver$Stub;->TRANSACTION_onLockedBootComplete:I
Landroid/app/IUserSwitchObserver$Stub;->TRANSACTION_onUserSwitchComplete:I
Landroid/app/IUserSwitchObserver$Stub;->TRANSACTION_onUserSwitching:I
-Landroid/app/IUserSwitchObserver;
Landroid/app/IUserSwitchObserver;->onForegroundProfileSwitch(I)V
Landroid/app/IUserSwitchObserver;->onLockedBootComplete(I)V
Landroid/app/IUserSwitchObserver;->onUserSwitchComplete(I)V
Landroid/app/IUserSwitchObserver;->onUserSwitching(ILandroid/os/IRemoteCallback;)V
-Landroid/app/IWallpaperManager$Stub$Proxy;
Landroid/app/IWallpaperManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/app/IWallpaperManager$Stub$Proxy;->clearWallpaper(Ljava/lang/String;II)V
Landroid/app/IWallpaperManager$Stub$Proxy;->getHeightHint()I
@@ -7479,7 +7012,6 @@
Landroid/app/IWallpaperManager$Stub$Proxy;->setWallpaperComponent(Landroid/content/ComponentName;)V
Landroid/app/IWallpaperManager$Stub$Proxy;->setWallpaperComponentChecked(Landroid/content/ComponentName;Ljava/lang/String;I)V
Landroid/app/IWallpaperManager$Stub$Proxy;->unregisterWallpaperColorsCallback(Landroid/app/IWallpaperManagerCallback;I)V
-Landroid/app/IWallpaperManager$Stub;
Landroid/app/IWallpaperManager$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/app/IWallpaperManager$Stub;->TRANSACTION_clearWallpaper:I
Landroid/app/IWallpaperManager$Stub;->TRANSACTION_getHeightHint:I
@@ -7503,7 +7035,6 @@
Landroid/app/IWallpaperManager$Stub;->TRANSACTION_setWallpaperComponent:I
Landroid/app/IWallpaperManager$Stub;->TRANSACTION_setWallpaperComponentChecked:I
Landroid/app/IWallpaperManager$Stub;->TRANSACTION_unregisterWallpaperColorsCallback:I
-Landroid/app/IWallpaperManager;
Landroid/app/IWallpaperManager;->clearWallpaper(Ljava/lang/String;II)V
Landroid/app/IWallpaperManager;->getName()Ljava/lang/String;
Landroid/app/IWallpaperManager;->getWallpaperColors(II)Landroid/app/WallpaperColors;
@@ -7520,35 +7051,28 @@
Landroid/app/IWallpaperManager;->setWallpaper(Ljava/lang/String;Ljava/lang/String;Landroid/graphics/Rect;ZLandroid/os/Bundle;ILandroid/app/IWallpaperManagerCallback;I)Landroid/os/ParcelFileDescriptor;
Landroid/app/IWallpaperManager;->setWallpaperComponentChecked(Landroid/content/ComponentName;Ljava/lang/String;I)V
Landroid/app/IWallpaperManager;->unregisterWallpaperColorsCallback(Landroid/app/IWallpaperManagerCallback;I)V
-Landroid/app/IWallpaperManagerCallback$Stub$Proxy;
Landroid/app/IWallpaperManagerCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/app/IWallpaperManagerCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/app/IWallpaperManagerCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/app/IWallpaperManagerCallback$Stub$Proxy;->onWallpaperChanged()V
Landroid/app/IWallpaperManagerCallback$Stub$Proxy;->onWallpaperColorsChanged(Landroid/app/WallpaperColors;II)V
-Landroid/app/IWallpaperManagerCallback$Stub;
Landroid/app/IWallpaperManagerCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IWallpaperManagerCallback;
Landroid/app/IWallpaperManagerCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/app/IWallpaperManagerCallback$Stub;->TRANSACTION_onWallpaperChanged:I
Landroid/app/IWallpaperManagerCallback$Stub;->TRANSACTION_onWallpaperColorsChanged:I
-Landroid/app/IWallpaperManagerCallback;
Landroid/app/IWallpaperManagerCallback;->onWallpaperColorsChanged(Landroid/app/WallpaperColors;II)V
-Landroid/app/job/IJobCallback$Stub$Proxy;
Landroid/app/job/IJobCallback$Stub$Proxy;->acknowledgeStartMessage(IZ)V
Landroid/app/job/IJobCallback$Stub$Proxy;->acknowledgeStopMessage(IZ)V
Landroid/app/job/IJobCallback$Stub$Proxy;->completeWork(II)Z
Landroid/app/job/IJobCallback$Stub$Proxy;->dequeueWork(I)Landroid/app/job/JobWorkItem;
Landroid/app/job/IJobCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/app/job/IJobCallback$Stub$Proxy;->jobFinished(IZ)V
-Landroid/app/job/IJobCallback$Stub;
Landroid/app/job/IJobCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/app/job/IJobCallback$Stub;->TRANSACTION_acknowledgeStartMessage:I
Landroid/app/job/IJobCallback$Stub;->TRANSACTION_acknowledgeStopMessage:I
Landroid/app/job/IJobCallback$Stub;->TRANSACTION_completeWork:I
Landroid/app/job/IJobCallback$Stub;->TRANSACTION_dequeueWork:I
Landroid/app/job/IJobCallback$Stub;->TRANSACTION_jobFinished:I
-Landroid/app/job/IJobCallback;
-Landroid/app/job/IJobScheduler$Stub$Proxy;
Landroid/app/job/IJobScheduler$Stub$Proxy;->cancel(I)V
Landroid/app/job/IJobScheduler$Stub$Proxy;->cancelAll()V
Landroid/app/job/IJobScheduler$Stub$Proxy;->enqueue(Landroid/app/job/JobInfo;Landroid/app/job/JobWorkItem;)I
@@ -7558,7 +7082,6 @@
Landroid/app/job/IJobScheduler$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/app/job/IJobScheduler$Stub$Proxy;->schedule(Landroid/app/job/JobInfo;)I
Landroid/app/job/IJobScheduler$Stub$Proxy;->scheduleAsPackage(Landroid/app/job/JobInfo;Ljava/lang/String;ILjava/lang/String;)I
-Landroid/app/job/IJobScheduler$Stub;
Landroid/app/job/IJobScheduler$Stub;-><init>()V
Landroid/app/job/IJobScheduler$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/app/job/IJobScheduler$Stub;->TRANSACTION_cancel:I
@@ -7568,7 +7091,6 @@
Landroid/app/job/IJobScheduler$Stub;->TRANSACTION_getPendingJob:I
Landroid/app/job/IJobScheduler$Stub;->TRANSACTION_schedule:I
Landroid/app/job/IJobScheduler$Stub;->TRANSACTION_scheduleAsPackage:I
-Landroid/app/job/IJobScheduler;
Landroid/app/job/IJobScheduler;->cancel(I)V
Landroid/app/job/IJobScheduler;->cancelAll()V
Landroid/app/job/IJobScheduler;->enqueue(Landroid/app/job/JobInfo;Landroid/app/job/JobWorkItem;)I
@@ -7576,16 +7098,12 @@
Landroid/app/job/IJobScheduler;->getPendingJob(I)Landroid/app/job/JobInfo;
Landroid/app/job/IJobScheduler;->schedule(Landroid/app/job/JobInfo;)I
Landroid/app/job/IJobScheduler;->scheduleAsPackage(Landroid/app/job/JobInfo;Ljava/lang/String;ILjava/lang/String;)I
-Landroid/app/job/IJobService$Stub$Proxy;
Landroid/app/job/IJobService$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/app/job/IJobService$Stub$Proxy;->startJob(Landroid/app/job/JobParameters;)V
Landroid/app/job/IJobService$Stub$Proxy;->stopJob(Landroid/app/job/JobParameters;)V
-Landroid/app/job/IJobService$Stub;
Landroid/app/job/IJobService$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/app/job/IJobService$Stub;->TRANSACTION_startJob:I
Landroid/app/job/IJobService$Stub;->TRANSACTION_stopJob:I
-Landroid/app/job/IJobService;
-Landroid/app/job/JobInfo$BackoffPolicy;
Landroid/app/job/JobInfo$Builder;->mBackoffPolicy:I
Landroid/app/job/JobInfo$Builder;->mBackoffPolicySet:Z
Landroid/app/job/JobInfo$Builder;->mClipData:Landroid/content/ClipData;
@@ -7612,8 +7130,6 @@
Landroid/app/job/JobInfo$Builder;->mTriggerContentMaxDelay:J
Landroid/app/job/JobInfo$Builder;->mTriggerContentUpdateDelay:J
Landroid/app/job/JobInfo$Builder;->mTriggerContentUris:Ljava/util/ArrayList;
-Landroid/app/job/JobInfo$NetworkType;
-Landroid/app/job/JobInfo$TriggerContentUri$Flags;
Landroid/app/job/JobInfo$TriggerContentUri;-><init>(Landroid/os/Parcel;)V
Landroid/app/job/JobInfo$TriggerContentUri;->mFlags:I
Landroid/app/job/JobInfo$TriggerContentUri;->mUri:Landroid/net/Uri;
@@ -7688,7 +7204,6 @@
Landroid/app/job/JobParameters;->setStopReason(ILjava/lang/String;)V
Landroid/app/job/JobParameters;->stopReason:I
Landroid/app/job/JobParameters;->transientExtras:Landroid/os/Bundle;
-Landroid/app/job/JobProtoEnums;
Landroid/app/job/JobProtoEnums;-><init>()V
Landroid/app/job/JobProtoEnums;->STOP_REASON_CANCELLED:I
Landroid/app/job/JobProtoEnums;->STOP_REASON_CONSTRAINTS_NOT_SATISFIED:I
@@ -7696,14 +7211,10 @@
Landroid/app/job/JobProtoEnums;->STOP_REASON_PREEMPT:I
Landroid/app/job/JobProtoEnums;->STOP_REASON_TIMEOUT:I
Landroid/app/job/JobProtoEnums;->STOP_REASON_UNKNOWN:I
-Landroid/app/job/JobScheduler$Result;
Landroid/app/job/JobService;->mEngine:Landroid/app/job/JobServiceEngine;
Landroid/app/job/JobService;->TAG:Ljava/lang/String;
-Landroid/app/job/JobServiceEngine$JobHandler;
-Landroid/app/job/JobServiceEngine$JobHandler;-><init>(Landroid/os/Looper;)V
Landroid/app/job/JobServiceEngine$JobHandler;->ackStartMessage(Landroid/app/job/JobParameters;Z)V
Landroid/app/job/JobServiceEngine$JobHandler;->ackStopMessage(Landroid/app/job/JobParameters;Z)V
-Landroid/app/job/JobServiceEngine$JobInterface;
Landroid/app/job/JobServiceEngine$JobInterface;-><init>(Landroid/app/job/JobServiceEngine;)V
Landroid/app/job/JobServiceEngine$JobInterface;->mService:Ljava/lang/ref/WeakReference;
Landroid/app/job/JobServiceEngine$JobInterface;->startJob(Landroid/app/job/JobParameters;)V
@@ -7721,10 +7232,8 @@
Landroid/app/job/JobWorkItem;->mNetworkUploadBytes:J
Landroid/app/job/JobWorkItem;->setGrants(Ljava/lang/Object;)V
Landroid/app/job/JobWorkItem;->setWorkId(I)V
-Landroid/app/JobSchedulerImpl;
Landroid/app/JobSchedulerImpl;-><init>(Landroid/app/job/IJobScheduler;)V
Landroid/app/JobSchedulerImpl;->mBinder:Landroid/app/job/IJobScheduler;
-Landroid/app/KeyguardManager$KeyguardLock;-><init>(Ljava/lang/String;)V
Landroid/app/KeyguardManager$KeyguardLock;->mTag:Ljava/lang/String;
Landroid/app/KeyguardManager$KeyguardLock;->mToken:Landroid/os/IBinder;
Landroid/app/KeyguardManager;-><init>(Landroid/content/Context;)V
@@ -7742,10 +7251,6 @@
Landroid/app/KeyguardManager;->mWM:Landroid/view/IWindowManager;
Landroid/app/KeyguardManager;->RESULT_ALTERNATE:I
Landroid/app/KeyguardManager;->TAG:Ljava/lang/String;
-Landroid/app/LauncherActivity$ActivityAdapter$ArrayFilter;
-Landroid/app/LauncherActivity$ActivityAdapter$ArrayFilter;-><init>()V
-Landroid/app/LauncherActivity$ActivityAdapter;
-Landroid/app/LauncherActivity$ActivityAdapter;-><init>(Landroid/app/LauncherActivity$IconResizer;)V
Landroid/app/LauncherActivity$ActivityAdapter;->bindView(Landroid/view/View;Landroid/app/LauncherActivity$ListItem;)V
Landroid/app/LauncherActivity$ActivityAdapter;->intentForPosition(I)Landroid/content/Intent;
Landroid/app/LauncherActivity$ActivityAdapter;->itemForPosition(I)Landroid/app/LauncherActivity$ListItem;
@@ -7788,19 +7293,15 @@
Landroid/app/ListFragment;->mRequestFocus:Ljava/lang/Runnable;
Landroid/app/ListFragment;->mStandardEmptyView:Landroid/widget/TextView;
Landroid/app/ListFragment;->setListShown(ZZ)V
-Landroid/app/LoadedApk$ReceiverDispatcher$Args;
-Landroid/app/LoadedApk$ReceiverDispatcher$Args;-><init>(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V
Landroid/app/LoadedApk$ReceiverDispatcher$Args;->getRunnable()Ljava/lang/Runnable;
Landroid/app/LoadedApk$ReceiverDispatcher$Args;->mCurIntent:Landroid/content/Intent;
Landroid/app/LoadedApk$ReceiverDispatcher$Args;->mDispatched:Z
Landroid/app/LoadedApk$ReceiverDispatcher$Args;->mOrdered:Z
Landroid/app/LoadedApk$ReceiverDispatcher$Args;->mPreviousRunStacktrace:Ljava/lang/Throwable;
-Landroid/app/LoadedApk$ReceiverDispatcher$InnerReceiver;
Landroid/app/LoadedApk$ReceiverDispatcher$InnerReceiver;-><init>(Landroid/app/LoadedApk$ReceiverDispatcher;Z)V
Landroid/app/LoadedApk$ReceiverDispatcher$InnerReceiver;->mDispatcher:Ljava/lang/ref/WeakReference;
Landroid/app/LoadedApk$ReceiverDispatcher$InnerReceiver;->mStrongRef:Landroid/app/LoadedApk$ReceiverDispatcher;
Landroid/app/LoadedApk$ReceiverDispatcher$InnerReceiver;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V
-Landroid/app/LoadedApk$ReceiverDispatcher;
Landroid/app/LoadedApk$ReceiverDispatcher;-><init>(Landroid/content/BroadcastReceiver;Landroid/content/Context;Landroid/os/Handler;Landroid/app/Instrumentation;Z)V
Landroid/app/LoadedApk$ReceiverDispatcher;->getLocation()Landroid/app/IntentReceiverLeaked;
Landroid/app/LoadedApk$ReceiverDispatcher;->getUnregisterLocation()Ljava/lang/RuntimeException;
@@ -7814,24 +7315,17 @@
Landroid/app/LoadedApk$ReceiverDispatcher;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V
Landroid/app/LoadedApk$ReceiverDispatcher;->setUnregisterLocation(Ljava/lang/RuntimeException;)V
Landroid/app/LoadedApk$ReceiverDispatcher;->validate(Landroid/content/Context;Landroid/os/Handler;)V
-Landroid/app/LoadedApk$ServiceDispatcher$ConnectionInfo;
Landroid/app/LoadedApk$ServiceDispatcher$ConnectionInfo;-><init>()V
Landroid/app/LoadedApk$ServiceDispatcher$ConnectionInfo;->binder:Landroid/os/IBinder;
Landroid/app/LoadedApk$ServiceDispatcher$ConnectionInfo;->deathMonitor:Landroid/os/IBinder$DeathRecipient;
-Landroid/app/LoadedApk$ServiceDispatcher$DeathMonitor;
-Landroid/app/LoadedApk$ServiceDispatcher$DeathMonitor;-><init>(Landroid/content/ComponentName;Landroid/os/IBinder;)V
Landroid/app/LoadedApk$ServiceDispatcher$DeathMonitor;->mName:Landroid/content/ComponentName;
Landroid/app/LoadedApk$ServiceDispatcher$DeathMonitor;->mService:Landroid/os/IBinder;
-Landroid/app/LoadedApk$ServiceDispatcher$InnerConnection;
Landroid/app/LoadedApk$ServiceDispatcher$InnerConnection;-><init>(Landroid/app/LoadedApk$ServiceDispatcher;)V
Landroid/app/LoadedApk$ServiceDispatcher$InnerConnection;->connected(Landroid/content/ComponentName;Landroid/os/IBinder;Z)V
-Landroid/app/LoadedApk$ServiceDispatcher$RunConnection;
-Landroid/app/LoadedApk$ServiceDispatcher$RunConnection;-><init>(Landroid/content/ComponentName;Landroid/os/IBinder;IZ)V
Landroid/app/LoadedApk$ServiceDispatcher$RunConnection;->mCommand:I
Landroid/app/LoadedApk$ServiceDispatcher$RunConnection;->mDead:Z
Landroid/app/LoadedApk$ServiceDispatcher$RunConnection;->mName:Landroid/content/ComponentName;
Landroid/app/LoadedApk$ServiceDispatcher$RunConnection;->mService:Landroid/os/IBinder;
-Landroid/app/LoadedApk$ServiceDispatcher;
Landroid/app/LoadedApk$ServiceDispatcher;->connected(Landroid/content/ComponentName;Landroid/os/IBinder;Z)V
Landroid/app/LoadedApk$ServiceDispatcher;->death(Landroid/content/ComponentName;Landroid/os/IBinder;)V
Landroid/app/LoadedApk$ServiceDispatcher;->doConnected(Landroid/content/ComponentName;Landroid/os/IBinder;Z)V
@@ -7850,8 +7344,6 @@
Landroid/app/LoadedApk$ServiceDispatcher;->mUnbindLocation:Ljava/lang/RuntimeException;
Landroid/app/LoadedApk$ServiceDispatcher;->setUnbindLocation(Ljava/lang/RuntimeException;)V
Landroid/app/LoadedApk$ServiceDispatcher;->validate(Landroid/content/Context;Landroid/os/Handler;)V
-Landroid/app/LoadedApk$SplitDependencyLoaderImpl;
-Landroid/app/LoadedApk$SplitDependencyLoaderImpl;-><init>(Landroid/util/SparseArray;)V
Landroid/app/LoadedApk$SplitDependencyLoaderImpl;->constructSplit(I[II)V
Landroid/app/LoadedApk$SplitDependencyLoaderImpl;->ensureSplitLoaded(Ljava/lang/String;)I
Landroid/app/LoadedApk$SplitDependencyLoaderImpl;->getClassLoaderForSplit(Ljava/lang/String;)Ljava/lang/ClassLoader;
@@ -7859,11 +7351,9 @@
Landroid/app/LoadedApk$SplitDependencyLoaderImpl;->isSplitCached(I)Z
Landroid/app/LoadedApk$SplitDependencyLoaderImpl;->mCachedClassLoaders:[Ljava/lang/ClassLoader;
Landroid/app/LoadedApk$SplitDependencyLoaderImpl;->mCachedResourcePaths:[[Ljava/lang/String;
-Landroid/app/LoadedApk$WarningContextClassLoader;
Landroid/app/LoadedApk$WarningContextClassLoader;-><init>()V
Landroid/app/LoadedApk$WarningContextClassLoader;->warn(Ljava/lang/String;)V
Landroid/app/LoadedApk$WarningContextClassLoader;->warned:Z
-Landroid/app/LoadedApk;
Landroid/app/LoadedApk;-><init>(Landroid/app/ActivityThread;)V
Landroid/app/LoadedApk;-><init>(Landroid/app/ActivityThread;Landroid/content/pm/ApplicationInfo;Landroid/content/res/CompatibilityInfo;Ljava/lang/ClassLoader;ZZZ)V
Landroid/app/LoadedApk;->adjustNativeLibraryPaths(Landroid/content/pm/ApplicationInfo;)Landroid/content/pm/ApplicationInfo;
@@ -7911,8 +7401,6 @@
Landroid/app/LoadedApk;->TAG:Ljava/lang/String;
Landroid/app/LoadedApk;->updateApplicationInfo(Landroid/content/pm/ApplicationInfo;Ljava/util/List;)V
Landroid/app/LoaderManager;->getFragmentHostCallback()Landroid/app/FragmentHostCallback;
-Landroid/app/LoaderManagerImpl$LoaderInfo;
-Landroid/app/LoaderManagerImpl$LoaderInfo;-><init>(ILandroid/os/Bundle;Landroid/app/LoaderManager$LoaderCallbacks;)V
Landroid/app/LoaderManagerImpl$LoaderInfo;->callOnLoadFinished(Landroid/content/Loader;Ljava/lang/Object;)V
Landroid/app/LoaderManagerImpl$LoaderInfo;->cancel()Z
Landroid/app/LoaderManagerImpl$LoaderInfo;->destroy()V
@@ -7938,7 +7426,6 @@
Landroid/app/LoaderManagerImpl$LoaderInfo;->retain()V
Landroid/app/LoaderManagerImpl$LoaderInfo;->start()V
Landroid/app/LoaderManagerImpl$LoaderInfo;->stop()V
-Landroid/app/LoaderManagerImpl;
Landroid/app/LoaderManagerImpl;-><init>(Ljava/lang/String;Landroid/app/FragmentHostCallback;Z)V
Landroid/app/LoaderManagerImpl;->createAndInstallLoader(ILandroid/os/Bundle;Landroid/app/LoaderManager$LoaderCallbacks;)Landroid/app/LoaderManagerImpl$LoaderInfo;
Landroid/app/LoaderManagerImpl;->createLoader(ILandroid/os/Bundle;Landroid/app/LoaderManager$LoaderCallbacks;)Landroid/app/LoaderManagerImpl$LoaderInfo;
@@ -7963,7 +7450,6 @@
Landroid/app/LoaderManagerImpl;->mWho:Ljava/lang/String;
Landroid/app/LoaderManagerImpl;->TAG:Ljava/lang/String;
Landroid/app/LoaderManagerImpl;->updateHostController(Landroid/app/FragmentHostCallback;)V
-Landroid/app/LocalActivityManager$LocalActivityRecord;
Landroid/app/LocalActivityManager$LocalActivityRecord;-><init>(Ljava/lang/String;Landroid/content/Intent;)V
Landroid/app/LocalActivityManager$LocalActivityRecord;->activity:Landroid/app/Activity;
Landroid/app/LocalActivityManager$LocalActivityRecord;->activityInfo:Landroid/content/pm/ActivityInfo;
@@ -7986,7 +7472,6 @@
Landroid/app/LocalActivityManager;->RESUMED:I
Landroid/app/LocalActivityManager;->STARTED:I
Landroid/app/LocalActivityManager;->TAG:Ljava/lang/String;
-Landroid/app/MediaRouteActionProvider$MediaRouterCallback;
Landroid/app/MediaRouteActionProvider$MediaRouterCallback;-><init>(Landroid/app/MediaRouteActionProvider;)V
Landroid/app/MediaRouteActionProvider$MediaRouterCallback;->mProviderWeak:Ljava/lang/ref/WeakReference;
Landroid/app/MediaRouteActionProvider$MediaRouterCallback;->refreshRoute(Landroid/media/MediaRouter;)V
@@ -7998,8 +7483,6 @@
Landroid/app/MediaRouteActionProvider;->mRouteTypes:I
Landroid/app/MediaRouteActionProvider;->refreshRoute()V
Landroid/app/MediaRouteActionProvider;->TAG:Ljava/lang/String;
-Landroid/app/MediaRouteButton$MediaRouterCallback;
-Landroid/app/MediaRouteButton$MediaRouterCallback;-><init>()V
Landroid/app/MediaRouteButton;->ACTIVATED_STATE_SET:[I
Landroid/app/MediaRouteButton;->CHECKED_STATE_SET:[I
Landroid/app/MediaRouteButton;->getActivity()Landroid/app/Activity;
@@ -8016,7 +7499,6 @@
Landroid/app/MediaRouteButton;->refreshRoute()V
Landroid/app/MediaRouteButton;->setRemoteIndicatorDrawable(Landroid/graphics/drawable/Drawable;)V
Landroid/app/MediaRouteButton;->showDialogInternal()Z
-Landroid/app/NativeActivity$NativeContentView;
Landroid/app/NativeActivity$NativeContentView;-><init>(Landroid/content/Context;)V
Landroid/app/NativeActivity$NativeContentView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
Landroid/app/NativeActivity$NativeContentView;->mActivity:Landroid/app/NativeActivity;
@@ -8058,7 +7540,6 @@
Landroid/app/Notification$Action$Builder;->mRemoteInputs:Ljava/util/ArrayList;
Landroid/app/Notification$Action$Builder;->mSemanticAction:I
Landroid/app/Notification$Action$Builder;->mTitle:Ljava/lang/CharSequence;
-Landroid/app/Notification$Action$SemanticAction;
Landroid/app/Notification$Action$WearableExtender;->DEFAULT_FLAGS:I
Landroid/app/Notification$Action$WearableExtender;->EXTRA_WEARABLE_EXTENSIONS:Ljava/lang/String;
Landroid/app/Notification$Action$WearableExtender;->FLAG_AVAILABLE_OFFLINE:I
@@ -8217,7 +7698,6 @@
Landroid/app/Notification$Builder;->useExistingRemoteView()Z
Landroid/app/Notification$Builder;->usesStandardHeader()Z
Landroid/app/Notification$Builder;->USE_ONLY_TITLE_IN_LOW_PRIORITY_SUMMARY:Z
-Landroid/app/Notification$BuilderRemoteViews;
Landroid/app/Notification$BuilderRemoteViews;-><init>(Landroid/content/pm/ApplicationInfo;I)V
Landroid/app/Notification$BuilderRemoteViews;-><init>(Landroid/os/Parcel;)V
Landroid/app/Notification$CarExtender$Builder;->mLatestTimestamp:J
@@ -8267,7 +7747,6 @@
Landroid/app/Notification$DecoratedMediaCustomViewStyle;->makeBigContentViewWithCustomContent(Landroid/widget/RemoteViews;)Landroid/widget/RemoteViews;
Landroid/app/Notification$DecoratedMediaCustomViewStyle;->makeContentView(Z)Landroid/widget/RemoteViews;
Landroid/app/Notification$DecoratedMediaCustomViewStyle;->makeHeadsUpContentView(Z)Landroid/widget/RemoteViews;
-Landroid/app/Notification$GroupAlertBehavior;
Landroid/app/Notification$InboxStyle;->addExtras(Landroid/os/Bundle;)V
Landroid/app/Notification$InboxStyle;->areNotificationsVisiblyDifferent(Landroid/app/Notification$Style;)Z
Landroid/app/Notification$InboxStyle;->getLines()Ljava/util/ArrayList;
@@ -8335,8 +7814,6 @@
Landroid/app/Notification$MessagingStyle;->mUser:Landroid/app/Person;
Landroid/app/Notification$MessagingStyle;->restoreFromExtras(Landroid/os/Bundle;)V
Landroid/app/Notification$MessagingStyle;->validate(Landroid/content/Context;)V
-Landroid/app/Notification$Priority;
-Landroid/app/Notification$StandardTemplateParams;
Landroid/app/Notification$StandardTemplateParams;-><init>()V
Landroid/app/Notification$StandardTemplateParams;->ambient(Z)Landroid/app/Notification$StandardTemplateParams;
Landroid/app/Notification$StandardTemplateParams;->ambient:Z
@@ -8375,7 +7852,6 @@
Landroid/app/Notification$Style;->reduceImageSizes(Landroid/content/Context;)V
Landroid/app/Notification$Style;->restoreFromExtras(Landroid/os/Bundle;)V
Landroid/app/Notification$Style;->validate(Landroid/content/Context;)V
-Landroid/app/Notification$TemplateBindResult;
Landroid/app/Notification$TemplateBindResult;-><init>()V
Landroid/app/Notification$TemplateBindResult;->getIconMarginEnd()I
Landroid/app/Notification$TemplateBindResult;->mIconMarginEnd:I
@@ -8393,7 +7869,6 @@
Landroid/app/Notification$TvExtender;->mFlags:I
Landroid/app/Notification$TvExtender;->mSuppressShowOverApps:Z
Landroid/app/Notification$TvExtender;->TAG:Ljava/lang/String;
-Landroid/app/Notification$Visibility;
Landroid/app/Notification$WearableExtender;->DEFAULT_CONTENT_ICON_GRAVITY:I
Landroid/app/Notification$WearableExtender;->DEFAULT_FLAGS:I
Landroid/app/Notification$WearableExtender;->DEFAULT_GRAVITY:I
@@ -8582,14 +8057,12 @@
Landroid/app/NotificationChannelGroup;->TAG_GROUP:Ljava/lang/String;
Landroid/app/NotificationChannelGroup;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
Landroid/app/NotificationChannelGroup;->writeXml(Lorg/xmlpull/v1/XmlSerializer;)V
-Landroid/app/NotificationChannelGroupProto;
Landroid/app/NotificationChannelGroupProto;-><init>()V
Landroid/app/NotificationChannelGroupProto;->CHANNELS:J
Landroid/app/NotificationChannelGroupProto;->DESCRIPTION:J
Landroid/app/NotificationChannelGroupProto;->ID:J
Landroid/app/NotificationChannelGroupProto;->IS_BLOCKED:J
Landroid/app/NotificationChannelGroupProto;->NAME:J
-Landroid/app/NotificationChannelProto;
Landroid/app/NotificationChannelProto;-><init>()V
Landroid/app/NotificationChannelProto;->AUDIO_ATTRIBUTES:J
Landroid/app/NotificationChannelProto;->CAN_BYPASS_DND:J
@@ -8609,8 +8082,6 @@
Landroid/app/NotificationChannelProto;->USER_LOCKED_FIELDS:J
Landroid/app/NotificationChannelProto;->USE_LIGHTS:J
Landroid/app/NotificationChannelProto;->VIBRATION:J
-Landroid/app/NotificationManager$Importance;
-Landroid/app/NotificationManager$InterruptionFilter;
Landroid/app/NotificationManager$Policy;-><init>(IIIII)V
Landroid/app/NotificationManager$Policy;-><init>(Landroid/os/Parcel;)V
Landroid/app/NotificationManager$Policy;->ALL_PRIORITY_CATEGORIES:[I
@@ -8654,7 +8125,6 @@
Landroid/app/NotificationManager;->VISIBILITY_NO_OVERRIDE:I
Landroid/app/NotificationManager;->zenModeFromInterruptionFilter(II)I
Landroid/app/NotificationManager;->zenModeToInterruptionFilter(I)I
-Landroid/app/NotificationProto;
Landroid/app/NotificationProto;-><init>()V
Landroid/app/NotificationProto;->ACTION_LENGTH:J
Landroid/app/NotificationProto;->CATEGORY:J
@@ -8669,20 +8139,15 @@
Landroid/app/NotificationProto;->VISIBILITY_PRIVATE:I
Landroid/app/NotificationProto;->VISIBILITY_PUBLIC:I
Landroid/app/NotificationProto;->VISIBILITY_SECRET:I
-Landroid/app/OnActivityPausedListener;
Landroid/app/OnActivityPausedListener;->onPaused(Landroid/app/Activity;)V
-Landroid/app/PackageDeleteObserver;
Landroid/app/PackageDeleteObserver;->getBinder()Landroid/content/pm/IPackageDeleteObserver2;
Landroid/app/PackageDeleteObserver;->mBinder:Landroid/content/pm/IPackageDeleteObserver2$Stub;
Landroid/app/PackageDeleteObserver;->onPackageDeleted(Ljava/lang/String;ILjava/lang/String;)V
Landroid/app/PackageDeleteObserver;->onUserActionRequired(Landroid/content/Intent;)V
-Landroid/app/PackageInstallObserver;
Landroid/app/PackageInstallObserver;->getBinder()Landroid/content/pm/IPackageInstallObserver2;
Landroid/app/PackageInstallObserver;->mBinder:Landroid/content/pm/IPackageInstallObserver2$Stub;
Landroid/app/PackageInstallObserver;->onUserActionRequired(Landroid/content/Intent;)V
-Landroid/app/PendingIntent$CancelListener;
Landroid/app/PendingIntent$CancelListener;->onCancelled(Landroid/app/PendingIntent;)V
-Landroid/app/PendingIntent$FinishedDispatcher;
Landroid/app/PendingIntent$FinishedDispatcher;-><init>(Landroid/app/PendingIntent;Landroid/app/PendingIntent$OnFinished;Landroid/os/Handler;)V
Landroid/app/PendingIntent$FinishedDispatcher;->mHandler:Landroid/os/Handler;
Landroid/app/PendingIntent$FinishedDispatcher;->mIntent:Landroid/content/Intent;
@@ -8693,8 +8158,6 @@
Landroid/app/PendingIntent$FinishedDispatcher;->mWho:Landroid/app/PendingIntent$OnFinished;
Landroid/app/PendingIntent$FinishedDispatcher;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V
Landroid/app/PendingIntent$FinishedDispatcher;->sDefaultSystemHandler:Landroid/os/Handler;
-Landroid/app/PendingIntent$Flags;
-Landroid/app/PendingIntent$OnMarshaledListener;
Landroid/app/PendingIntent$OnMarshaledListener;->onMarshaled(Landroid/app/PendingIntent;Landroid/os/Parcel;I)V
Landroid/app/PendingIntent;-><init>(Landroid/content/IIntentSender;)V
Landroid/app/PendingIntent;-><init>(Landroid/os/IBinder;Ljava/lang/Object;)V
@@ -8714,7 +8177,6 @@
Landroid/app/PendingIntent;->sOnMarshaledListener:Ljava/lang/ThreadLocal;
Landroid/app/PendingIntent;->unregisterCancelListener(Landroid/app/PendingIntent$CancelListener;)V
Landroid/app/PendingIntent;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-Landroid/app/PendingIntentProto;
Landroid/app/PendingIntentProto;-><init>()V
Landroid/app/PendingIntentProto;->TARGET:J
Landroid/app/Person$Builder;-><init>(Landroid/app/Person;)V
@@ -8771,7 +8233,6 @@
Landroid/app/PictureInPictureParams;->mSourceRectHint:Landroid/graphics/Rect;
Landroid/app/PictureInPictureParams;->mUserActions:Ljava/util/List;
Landroid/app/PictureInPictureParams;->truncateActions(I)V
-Landroid/app/PolicyProto;
Landroid/app/PolicyProto;-><init>()V
Landroid/app/PolicyProto;->ALARMS:I
Landroid/app/PolicyProto;->ANY:I
@@ -8801,7 +8262,6 @@
Landroid/app/Presentation;->MSG_CANCEL:I
Landroid/app/Presentation;->mToken:Landroid/os/IBinder;
Landroid/app/Presentation;->TAG:Ljava/lang/String;
-Landroid/app/ProcessMemoryState;
Landroid/app/ProcessMemoryState;-><init>(ILjava/lang/String;IJJJJJ)V
Landroid/app/ProcessMemoryState;-><init>(Landroid/os/Parcel;)V
Landroid/app/ProcessMemoryState;->cacheInBytes:J
@@ -8813,7 +8273,6 @@
Landroid/app/ProcessMemoryState;->rssInBytes:J
Landroid/app/ProcessMemoryState;->swapInBytes:J
Landroid/app/ProcessMemoryState;->uid:I
-Landroid/app/ProfilerInfo;
Landroid/app/ProfilerInfo;-><init>(Landroid/app/ProfilerInfo;)V
Landroid/app/ProfilerInfo;-><init>(Landroid/os/Parcel;)V
Landroid/app/ProfilerInfo;-><init>(Ljava/lang/String;Landroid/os/ParcelFileDescriptor;IZZLjava/lang/String;Z)V
@@ -8829,7 +8288,6 @@
Landroid/app/ProfilerInfo;->streamingOutput:Z
Landroid/app/ProfilerInfo;->TAG:Ljava/lang/String;
Landroid/app/ProfilerInfo;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-Landroid/app/ProfilerInfoProto;
Landroid/app/ProfilerInfoProto;-><init>()V
Landroid/app/ProfilerInfoProto;->AGENT:J
Landroid/app/ProfilerInfoProto;->AUTO_STOP_PROFILER:J
@@ -8854,10 +8312,8 @@
Landroid/app/ProgressDialog;->mSecondaryProgressVal:I
Landroid/app/ProgressDialog;->mViewUpdateHandler:Landroid/os/Handler;
Landroid/app/ProgressDialog;->onProgressChanged()V
-Landroid/app/QueuedWork$QueuedWorkHandler;
Landroid/app/QueuedWork$QueuedWorkHandler;-><init>(Landroid/os/Looper;)V
Landroid/app/QueuedWork$QueuedWorkHandler;->MSG_RUN:I
-Landroid/app/QueuedWork;
Landroid/app/QueuedWork;-><init>()V
Landroid/app/QueuedWork;->DEBUG:Z
Landroid/app/QueuedWork;->DELAY:J
@@ -8873,9 +8329,7 @@
Landroid/app/QueuedWork;->sProcessingWork:Ljava/lang/Object;
Landroid/app/QueuedWork;->sWork:Ljava/util/LinkedList;
Landroid/app/QueuedWork;->waitToFinish()V
-Landroid/app/RecoverableSecurityException$LocalDialog;
Landroid/app/RecoverableSecurityException$LocalDialog;-><init>()V
-Landroid/app/RecoverableSecurityException;
Landroid/app/RecoverableSecurityException;-><init>(Landroid/os/Parcel;)V
Landroid/app/RecoverableSecurityException;-><init>(Ljava/lang/Throwable;Ljava/lang/CharSequence;Landroid/app/RemoteAction;)V
Landroid/app/RecoverableSecurityException;-><init>(Ljava/lang/Throwable;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Landroid/app/PendingIntent;)V
@@ -8896,7 +8350,6 @@
Landroid/app/RemoteAction;->mShouldShowIcon:Z
Landroid/app/RemoteAction;->mTitle:Ljava/lang/CharSequence;
Landroid/app/RemoteAction;->TAG:Ljava/lang/String;
-Landroid/app/RemoteAnimationTargetProto;
Landroid/app/RemoteAnimationTargetProto;-><init>()V
Landroid/app/RemoteAnimationTargetProto;->CLIP_RECT:J
Landroid/app/RemoteAnimationTargetProto;->CONTENT_INSETS:J
@@ -8915,7 +8368,6 @@
Landroid/app/RemoteInput$Builder;->mLabel:Ljava/lang/CharSequence;
Landroid/app/RemoteInput$Builder;->mResultKey:Ljava/lang/String;
Landroid/app/RemoteInput$Builder;->setFlag(IZ)V
-Landroid/app/RemoteInput$Source;
Landroid/app/RemoteInput;-><init>(Landroid/os/Parcel;)V
Landroid/app/RemoteInput;-><init>(Ljava/lang/String;Ljava/lang/CharSequence;[Ljava/lang/CharSequence;ILandroid/os/Bundle;Landroid/util/ArraySet;)V
Landroid/app/RemoteInput;->DEFAULT_FLAGS:I
@@ -8930,15 +8382,12 @@
Landroid/app/RemoteInput;->mFlags:I
Landroid/app/RemoteInput;->mLabel:Ljava/lang/CharSequence;
Landroid/app/RemoteInput;->mResultKey:Ljava/lang/String;
-Landroid/app/ResourcesManager$ActivityResources;
Landroid/app/ResourcesManager$ActivityResources;->activityResources:Ljava/util/ArrayList;
Landroid/app/ResourcesManager$ActivityResources;->overrideConfig:Landroid/content/res/Configuration;
-Landroid/app/ResourcesManager$ApkKey;
Landroid/app/ResourcesManager$ApkKey;-><init>(Ljava/lang/String;ZZ)V
Landroid/app/ResourcesManager$ApkKey;->overlay:Z
Landroid/app/ResourcesManager$ApkKey;->path:Ljava/lang/String;
Landroid/app/ResourcesManager$ApkKey;->sharedLib:Z
-Landroid/app/ResourcesManager;
Landroid/app/ResourcesManager;->applyCompatConfigurationLocked(ILandroid/content/res/Configuration;)Z
Landroid/app/ResourcesManager;->applyConfigurationToResourcesLocked(Landroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;)Z
Landroid/app/ResourcesManager;->applyNewResourceDirsLocked(Ljava/lang/String;[Ljava/lang/String;)V
@@ -8976,10 +8425,8 @@
Landroid/app/ResourcesManager;->sResourcesManager:Landroid/app/ResourcesManager;
Landroid/app/ResourcesManager;->TAG:Ljava/lang/String;
Landroid/app/ResourcesManager;->updateResourcesForActivity(Landroid/os/IBinder;Landroid/content/res/Configuration;IZ)V
-Landroid/app/ResultInfo;
Landroid/app/ResultInfo;-><init>(Landroid/os/Parcel;)V
Landroid/app/ResultInfo;->mResultCode:I
-Landroid/app/SearchableInfo$ActionKeyInfo;
Landroid/app/SearchableInfo$ActionKeyInfo;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
Landroid/app/SearchableInfo$ActionKeyInfo;-><init>(Landroid/os/Parcel;)V
Landroid/app/SearchableInfo$ActionKeyInfo;->getKeyCode()I
@@ -9032,10 +8479,8 @@
Landroid/app/SearchableInfo;->VOICE_SEARCH_LAUNCH_RECOGNIZER:I
Landroid/app/SearchableInfo;->VOICE_SEARCH_LAUNCH_WEB_SEARCH:I
Landroid/app/SearchableInfo;->VOICE_SEARCH_SHOW_BUTTON:I
-Landroid/app/SearchDialog$SearchBar;
Landroid/app/SearchDialog$SearchBar;-><init>(Landroid/content/Context;)V
Landroid/app/SearchDialog$SearchBar;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
-Landroid/app/SearchDialog;
Landroid/app/SearchDialog;-><init>(Landroid/content/Context;Landroid/app/SearchManager;)V
Landroid/app/SearchDialog;->createContentView()V
Landroid/app/SearchDialog;->createIntent(Ljava/lang/String;Landroid/net/Uri;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)Landroid/content/Intent;
@@ -9094,7 +8539,6 @@
Landroid/app/SearchManager;->SEARCH_MODE:Ljava/lang/String;
Landroid/app/SearchManager;->startGlobalSearch(Ljava/lang/String;ZLandroid/os/Bundle;Landroid/graphics/Rect;)V
Landroid/app/SearchManager;->TAG:Ljava/lang/String;
-Landroid/app/servertransaction/ActivityConfigurationChangeItem;
Landroid/app/servertransaction/ActivityConfigurationChangeItem;-><init>()V
Landroid/app/servertransaction/ActivityConfigurationChangeItem;-><init>(Landroid/os/Parcel;)V
Landroid/app/servertransaction/ActivityConfigurationChangeItem;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -9102,8 +8546,6 @@
Landroid/app/servertransaction/ActivityConfigurationChangeItem;->mConfiguration:Landroid/content/res/Configuration;
Landroid/app/servertransaction/ActivityConfigurationChangeItem;->obtain(Landroid/content/res/Configuration;)Landroid/app/servertransaction/ActivityConfigurationChangeItem;
Landroid/app/servertransaction/ActivityConfigurationChangeItem;->recycle()V
-Landroid/app/servertransaction/ActivityLifecycleItem$LifecycleState;
-Landroid/app/servertransaction/ActivityLifecycleItem;
Landroid/app/servertransaction/ActivityLifecycleItem;-><init>()V
Landroid/app/servertransaction/ActivityLifecycleItem;->getTargetState()I
Landroid/app/servertransaction/ActivityLifecycleItem;->ON_CREATE:I
@@ -9116,7 +8558,6 @@
Landroid/app/servertransaction/ActivityLifecycleItem;->PRE_ON_CREATE:I
Landroid/app/servertransaction/ActivityLifecycleItem;->recycle()V
Landroid/app/servertransaction/ActivityLifecycleItem;->UNDEFINED:I
-Landroid/app/servertransaction/ActivityRelaunchItem;
Landroid/app/servertransaction/ActivityRelaunchItem;-><init>()V
Landroid/app/servertransaction/ActivityRelaunchItem;-><init>(Landroid/os/Parcel;)V
Landroid/app/servertransaction/ActivityRelaunchItem;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -9132,18 +8573,15 @@
Landroid/app/servertransaction/ActivityRelaunchItem;->preExecute(Landroid/app/ClientTransactionHandler;Landroid/os/IBinder;)V
Landroid/app/servertransaction/ActivityRelaunchItem;->recycle()V
Landroid/app/servertransaction/ActivityRelaunchItem;->TAG:Ljava/lang/String;
-Landroid/app/servertransaction/ActivityResultItem;
Landroid/app/servertransaction/ActivityResultItem;-><init>()V
Landroid/app/servertransaction/ActivityResultItem;-><init>(Landroid/os/Parcel;)V
Landroid/app/servertransaction/ActivityResultItem;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/app/servertransaction/ActivityResultItem;->execute(Landroid/app/ClientTransactionHandler;Landroid/os/IBinder;Landroid/app/servertransaction/PendingTransactionActions;)V
Landroid/app/servertransaction/ActivityResultItem;->obtain(Ljava/util/List;)Landroid/app/servertransaction/ActivityResultItem;
Landroid/app/servertransaction/ActivityResultItem;->recycle()V
-Landroid/app/servertransaction/BaseClientRequest;
Landroid/app/servertransaction/BaseClientRequest;->execute(Landroid/app/ClientTransactionHandler;Landroid/os/IBinder;Landroid/app/servertransaction/PendingTransactionActions;)V
Landroid/app/servertransaction/BaseClientRequest;->postExecute(Landroid/app/ClientTransactionHandler;Landroid/os/IBinder;Landroid/app/servertransaction/PendingTransactionActions;)V
Landroid/app/servertransaction/BaseClientRequest;->preExecute(Landroid/app/ClientTransactionHandler;Landroid/os/IBinder;)V
-Landroid/app/servertransaction/ClientTransaction;
Landroid/app/servertransaction/ClientTransaction;-><init>()V
Landroid/app/servertransaction/ClientTransaction;-><init>(Landroid/os/Parcel;)V
Landroid/app/servertransaction/ClientTransaction;->addCallback(Landroid/app/servertransaction/ClientTransactionItem;)V
@@ -9157,10 +8595,8 @@
Landroid/app/servertransaction/ClientTransaction;->recycle()V
Landroid/app/servertransaction/ClientTransaction;->schedule()V
Landroid/app/servertransaction/ClientTransaction;->setLifecycleStateRequest(Landroid/app/servertransaction/ActivityLifecycleItem;)V
-Landroid/app/servertransaction/ClientTransactionItem;
Landroid/app/servertransaction/ClientTransactionItem;-><init>()V
Landroid/app/servertransaction/ClientTransactionItem;->getPostExecutionState()I
-Landroid/app/servertransaction/ConfigurationChangeItem;
Landroid/app/servertransaction/ConfigurationChangeItem;-><init>()V
Landroid/app/servertransaction/ConfigurationChangeItem;-><init>(Landroid/os/Parcel;)V
Landroid/app/servertransaction/ConfigurationChangeItem;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -9169,7 +8605,6 @@
Landroid/app/servertransaction/ConfigurationChangeItem;->obtain(Landroid/content/res/Configuration;)Landroid/app/servertransaction/ConfigurationChangeItem;
Landroid/app/servertransaction/ConfigurationChangeItem;->preExecute(Landroid/app/ClientTransactionHandler;Landroid/os/IBinder;)V
Landroid/app/servertransaction/ConfigurationChangeItem;->recycle()V
-Landroid/app/servertransaction/DestroyActivityItem;
Landroid/app/servertransaction/DestroyActivityItem;-><init>()V
Landroid/app/servertransaction/DestroyActivityItem;-><init>(Landroid/os/Parcel;)V
Landroid/app/servertransaction/DestroyActivityItem;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -9179,7 +8614,6 @@
Landroid/app/servertransaction/DestroyActivityItem;->mFinished:Z
Landroid/app/servertransaction/DestroyActivityItem;->obtain(ZI)Landroid/app/servertransaction/DestroyActivityItem;
Landroid/app/servertransaction/DestroyActivityItem;->recycle()V
-Landroid/app/servertransaction/LaunchActivityItem;
Landroid/app/servertransaction/LaunchActivityItem;-><init>()V
Landroid/app/servertransaction/LaunchActivityItem;-><init>(Landroid/os/Parcel;)V
Landroid/app/servertransaction/LaunchActivityItem;->activityInfoEqual(Landroid/content/pm/ActivityInfo;)Z
@@ -9203,7 +8637,6 @@
Landroid/app/servertransaction/LaunchActivityItem;->preExecute(Landroid/app/ClientTransactionHandler;Landroid/os/IBinder;)V
Landroid/app/servertransaction/LaunchActivityItem;->recycle()V
Landroid/app/servertransaction/LaunchActivityItem;->setValues(Landroid/app/servertransaction/LaunchActivityItem;Landroid/content/Intent;ILandroid/content/pm/ActivityInfo;Landroid/content/res/Configuration;Landroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;Ljava/lang/String;Lcom/android/internal/app/IVoiceInteractor;ILandroid/os/Bundle;Landroid/os/PersistableBundle;Ljava/util/List;Ljava/util/List;ZLandroid/app/ProfilerInfo;)V
-Landroid/app/servertransaction/MoveToDisplayItem;
Landroid/app/servertransaction/MoveToDisplayItem;-><init>()V
Landroid/app/servertransaction/MoveToDisplayItem;-><init>(Landroid/os/Parcel;)V
Landroid/app/servertransaction/MoveToDisplayItem;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -9212,7 +8645,6 @@
Landroid/app/servertransaction/MoveToDisplayItem;->mTargetDisplayId:I
Landroid/app/servertransaction/MoveToDisplayItem;->obtain(ILandroid/content/res/Configuration;)Landroid/app/servertransaction/MoveToDisplayItem;
Landroid/app/servertransaction/MoveToDisplayItem;->recycle()V
-Landroid/app/servertransaction/MultiWindowModeChangeItem;
Landroid/app/servertransaction/MultiWindowModeChangeItem;-><init>()V
Landroid/app/servertransaction/MultiWindowModeChangeItem;-><init>(Landroid/os/Parcel;)V
Landroid/app/servertransaction/MultiWindowModeChangeItem;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -9221,7 +8653,6 @@
Landroid/app/servertransaction/MultiWindowModeChangeItem;->mOverrideConfig:Landroid/content/res/Configuration;
Landroid/app/servertransaction/MultiWindowModeChangeItem;->obtain(ZLandroid/content/res/Configuration;)Landroid/app/servertransaction/MultiWindowModeChangeItem;
Landroid/app/servertransaction/MultiWindowModeChangeItem;->recycle()V
-Landroid/app/servertransaction/NewIntentItem;
Landroid/app/servertransaction/NewIntentItem;-><init>()V
Landroid/app/servertransaction/NewIntentItem;-><init>(Landroid/os/Parcel;)V
Landroid/app/servertransaction/NewIntentItem;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -9229,9 +8660,7 @@
Landroid/app/servertransaction/NewIntentItem;->mPause:Z
Landroid/app/servertransaction/NewIntentItem;->obtain(Ljava/util/List;Z)Landroid/app/servertransaction/NewIntentItem;
Landroid/app/servertransaction/NewIntentItem;->recycle()V
-Landroid/app/servertransaction/ObjectPoolItem;
Landroid/app/servertransaction/ObjectPoolItem;->recycle()V
-Landroid/app/servertransaction/PauseActivityItem;
Landroid/app/servertransaction/PauseActivityItem;-><init>()V
Landroid/app/servertransaction/PauseActivityItem;-><init>(Landroid/os/Parcel;)V
Landroid/app/servertransaction/PauseActivityItem;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -9246,7 +8675,6 @@
Landroid/app/servertransaction/PauseActivityItem;->postExecute(Landroid/app/ClientTransactionHandler;Landroid/os/IBinder;Landroid/app/servertransaction/PendingTransactionActions;)V
Landroid/app/servertransaction/PauseActivityItem;->recycle()V
Landroid/app/servertransaction/PauseActivityItem;->TAG:Ljava/lang/String;
-Landroid/app/servertransaction/PendingTransactionActions$StopInfo;
Landroid/app/servertransaction/PendingTransactionActions$StopInfo;-><init>()V
Landroid/app/servertransaction/PendingTransactionActions$StopInfo;->mActivity:Landroid/app/ActivityThread$ActivityClientRecord;
Landroid/app/servertransaction/PendingTransactionActions$StopInfo;->mDescription:Ljava/lang/CharSequence;
@@ -9257,7 +8685,6 @@
Landroid/app/servertransaction/PendingTransactionActions$StopInfo;->setPersistentState(Landroid/os/PersistableBundle;)V
Landroid/app/servertransaction/PendingTransactionActions$StopInfo;->setState(Landroid/os/Bundle;)V
Landroid/app/servertransaction/PendingTransactionActions$StopInfo;->TAG:Ljava/lang/String;
-Landroid/app/servertransaction/PendingTransactionActions;
Landroid/app/servertransaction/PendingTransactionActions;-><init>()V
Landroid/app/servertransaction/PendingTransactionActions;->clear()V
Landroid/app/servertransaction/PendingTransactionActions;->getOldState()Landroid/os/Bundle;
@@ -9275,7 +8702,6 @@
Landroid/app/servertransaction/PendingTransactionActions;->shouldCallOnPostCreate()Z
Landroid/app/servertransaction/PendingTransactionActions;->shouldReportRelaunchToWindowManager()Z
Landroid/app/servertransaction/PendingTransactionActions;->shouldRestoreInstanceState()Z
-Landroid/app/servertransaction/PipModeChangeItem;
Landroid/app/servertransaction/PipModeChangeItem;-><init>()V
Landroid/app/servertransaction/PipModeChangeItem;-><init>(Landroid/os/Parcel;)V
Landroid/app/servertransaction/PipModeChangeItem;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -9284,7 +8710,6 @@
Landroid/app/servertransaction/PipModeChangeItem;->mOverrideConfig:Landroid/content/res/Configuration;
Landroid/app/servertransaction/PipModeChangeItem;->obtain(ZLandroid/content/res/Configuration;)Landroid/app/servertransaction/PipModeChangeItem;
Landroid/app/servertransaction/PipModeChangeItem;->recycle()V
-Landroid/app/servertransaction/ResumeActivityItem;
Landroid/app/servertransaction/ResumeActivityItem;-><init>()V
Landroid/app/servertransaction/ResumeActivityItem;-><init>(Landroid/os/Parcel;)V
Landroid/app/servertransaction/ResumeActivityItem;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -9299,7 +8724,6 @@
Landroid/app/servertransaction/ResumeActivityItem;->preExecute(Landroid/app/ClientTransactionHandler;Landroid/os/IBinder;)V
Landroid/app/servertransaction/ResumeActivityItem;->recycle()V
Landroid/app/servertransaction/ResumeActivityItem;->TAG:Ljava/lang/String;
-Landroid/app/servertransaction/StopActivityItem;
Landroid/app/servertransaction/StopActivityItem;-><init>()V
Landroid/app/servertransaction/StopActivityItem;-><init>(Landroid/os/Parcel;)V
Landroid/app/servertransaction/StopActivityItem;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -9311,7 +8735,6 @@
Landroid/app/servertransaction/StopActivityItem;->postExecute(Landroid/app/ClientTransactionHandler;Landroid/os/IBinder;Landroid/app/servertransaction/PendingTransactionActions;)V
Landroid/app/servertransaction/StopActivityItem;->recycle()V
Landroid/app/servertransaction/StopActivityItem;->TAG:Ljava/lang/String;
-Landroid/app/servertransaction/TransactionExecutor;
Landroid/app/servertransaction/TransactionExecutor;-><init>(Landroid/app/ClientTransactionHandler;)V
Landroid/app/servertransaction/TransactionExecutor;->cycleToPath(Landroid/app/ActivityThread$ActivityClientRecord;I)V
Landroid/app/servertransaction/TransactionExecutor;->cycleToPath(Landroid/app/ActivityThread$ActivityClientRecord;IZ)V
@@ -9325,7 +8748,6 @@
Landroid/app/servertransaction/TransactionExecutor;->mTransactionHandler:Landroid/app/ClientTransactionHandler;
Landroid/app/servertransaction/TransactionExecutor;->performLifecycleSequence(Landroid/app/ActivityThread$ActivityClientRecord;Landroid/util/IntArray;)V
Landroid/app/servertransaction/TransactionExecutor;->TAG:Ljava/lang/String;
-Landroid/app/servertransaction/TransactionExecutorHelper;
Landroid/app/servertransaction/TransactionExecutorHelper;-><init>()V
Landroid/app/servertransaction/TransactionExecutorHelper;->DESTRUCTION_PENALTY:I
Landroid/app/servertransaction/TransactionExecutorHelper;->getClosestOfStates(Landroid/app/ActivityThread$ActivityClientRecord;[I)I
@@ -9336,7 +8758,6 @@
Landroid/app/servertransaction/TransactionExecutorHelper;->mLifecycleSequence:Landroid/util/IntArray;
Landroid/app/servertransaction/TransactionExecutorHelper;->ON_RESUME_PRE_EXCUTION_STATES:[I
Landroid/app/servertransaction/TransactionExecutorHelper;->pathInvolvesDestruction(Landroid/util/IntArray;)Z
-Landroid/app/servertransaction/WindowVisibilityItem;
Landroid/app/servertransaction/WindowVisibilityItem;-><init>()V
Landroid/app/servertransaction/WindowVisibilityItem;-><init>(Landroid/os/Parcel;)V
Landroid/app/servertransaction/WindowVisibilityItem;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -9344,15 +8765,10 @@
Landroid/app/servertransaction/WindowVisibilityItem;->mShowWindow:Z
Landroid/app/servertransaction/WindowVisibilityItem;->obtain(Z)Landroid/app/servertransaction/WindowVisibilityItem;
Landroid/app/servertransaction/WindowVisibilityItem;->recycle()V
-Landroid/app/Service$StartArgFlags;
-Landroid/app/Service$StartResult;
-Landroid/app/Service$StopForegroundFlags;
Landroid/app/Service;->detachAndCleanUp()V
Landroid/app/Service;->getClassName()Ljava/lang/String;
Landroid/app/Service;->START_TASK_REMOVED_COMPLETE:I
Landroid/app/Service;->TAG:Ljava/lang/String;
-Landroid/app/ServiceConnectionLeaked;
-Landroid/app/ServiceStartArgs;
Landroid/app/ServiceStartArgs;-><init>(Landroid/os/Parcel;)V
Landroid/app/ServiceStartArgs;-><init>(ZIILandroid/content/Intent;)V
Landroid/app/ServiceStartArgs;->args:Landroid/content/Intent;
@@ -9366,14 +8782,11 @@
Landroid/app/SharedElementCallback;->BUNDLE_SNAPSHOT_IMAGE_SCALETYPE:Ljava/lang/String;
Landroid/app/SharedElementCallback;->mTempMatrix:Landroid/graphics/Matrix;
Landroid/app/SharedElementCallback;->NULL_CALLBACK:Landroid/app/SharedElementCallback;
-Landroid/app/SharedPreferencesImpl$EditorImpl;
-Landroid/app/SharedPreferencesImpl$EditorImpl;-><init>()V
Landroid/app/SharedPreferencesImpl$EditorImpl;->commitToMemory()Landroid/app/SharedPreferencesImpl$MemoryCommitResult;
Landroid/app/SharedPreferencesImpl$EditorImpl;->mClear:Z
Landroid/app/SharedPreferencesImpl$EditorImpl;->mEditorLock:Ljava/lang/Object;
Landroid/app/SharedPreferencesImpl$EditorImpl;->mModified:Ljava/util/Map;
Landroid/app/SharedPreferencesImpl$EditorImpl;->notifyListeners(Landroid/app/SharedPreferencesImpl$MemoryCommitResult;)V
-Landroid/app/SharedPreferencesImpl$MemoryCommitResult;
Landroid/app/SharedPreferencesImpl$MemoryCommitResult;-><init>(JLjava/util/List;Ljava/util/Set;Ljava/util/Map;)V
Landroid/app/SharedPreferencesImpl$MemoryCommitResult;->keysModified:Ljava/util/List;
Landroid/app/SharedPreferencesImpl$MemoryCommitResult;->listeners:Ljava/util/Set;
@@ -9383,7 +8796,6 @@
Landroid/app/SharedPreferencesImpl$MemoryCommitResult;->wasWritten:Z
Landroid/app/SharedPreferencesImpl$MemoryCommitResult;->writeToDiskResult:Z
Landroid/app/SharedPreferencesImpl$MemoryCommitResult;->writtenToDiskLatch:Ljava/util/concurrent/CountDownLatch;
-Landroid/app/SharedPreferencesImpl;
Landroid/app/SharedPreferencesImpl;->awaitLoadedLocked()V
Landroid/app/SharedPreferencesImpl;->CONTENT:Ljava/lang/Object;
Landroid/app/SharedPreferencesImpl;->createFileOutputStream(Ljava/io/File;)Ljava/io/FileOutputStream;
@@ -9410,19 +8822,15 @@
Landroid/app/SharedPreferencesImpl;->mWritingToDiskLock:Ljava/lang/Object;
Landroid/app/SharedPreferencesImpl;->TAG:Ljava/lang/String;
Landroid/app/SharedPreferencesImpl;->writeToFile(Landroid/app/SharedPreferencesImpl$MemoryCommitResult;Z)V
-Landroid/app/slice/ISliceListener$Stub$Proxy;
Landroid/app/slice/ISliceListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/app/slice/ISliceListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/app/slice/ISliceListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/app/slice/ISliceListener$Stub$Proxy;->onSliceUpdated(Landroid/app/slice/Slice;)V
-Landroid/app/slice/ISliceListener$Stub;
Landroid/app/slice/ISliceListener$Stub;-><init>()V
Landroid/app/slice/ISliceListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/slice/ISliceListener;
Landroid/app/slice/ISliceListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/app/slice/ISliceListener$Stub;->TRANSACTION_onSliceUpdated:I
-Landroid/app/slice/ISliceListener;
Landroid/app/slice/ISliceListener;->onSliceUpdated(Landroid/app/slice/Slice;)V
-Landroid/app/slice/ISliceManager$Stub$Proxy;
Landroid/app/slice/ISliceManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/app/slice/ISliceManager$Stub$Proxy;->applyRestore([BI)V
Landroid/app/slice/ISliceManager$Stub$Proxy;->checkSlicePermission(Landroid/net/Uri;Ljava/lang/String;II[Ljava/lang/String;)I
@@ -9437,7 +8845,6 @@
Landroid/app/slice/ISliceManager$Stub$Proxy;->pinSlice(Ljava/lang/String;Landroid/net/Uri;[Landroid/app/slice/SliceSpec;Landroid/os/IBinder;)V
Landroid/app/slice/ISliceManager$Stub$Proxy;->revokeSlicePermission(Ljava/lang/String;Ljava/lang/String;Landroid/net/Uri;)V
Landroid/app/slice/ISliceManager$Stub$Proxy;->unpinSlice(Ljava/lang/String;Landroid/net/Uri;Landroid/os/IBinder;)V
-Landroid/app/slice/ISliceManager$Stub;
Landroid/app/slice/ISliceManager$Stub;-><init>()V
Landroid/app/slice/ISliceManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/slice/ISliceManager;
Landroid/app/slice/ISliceManager$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -9452,7 +8859,6 @@
Landroid/app/slice/ISliceManager$Stub;->TRANSACTION_pinSlice:I
Landroid/app/slice/ISliceManager$Stub;->TRANSACTION_revokeSlicePermission:I
Landroid/app/slice/ISliceManager$Stub;->TRANSACTION_unpinSlice:I
-Landroid/app/slice/ISliceManager;
Landroid/app/slice/ISliceManager;->applyRestore([BI)V
Landroid/app/slice/ISliceManager;->checkSlicePermission(Landroid/net/Uri;Ljava/lang/String;II[Ljava/lang/String;)I
Landroid/app/slice/ISliceManager;->getBackupPayload(I)[B
@@ -9468,8 +8874,6 @@
Landroid/app/slice/Slice$Builder;->mItems:Ljava/util/ArrayList;
Landroid/app/slice/Slice$Builder;->mSpec:Landroid/app/slice/SliceSpec;
Landroid/app/slice/Slice$Builder;->mUri:Landroid/net/Uri;
-Landroid/app/slice/Slice$SliceHint;
-Landroid/app/slice/Slice$SliceSubtype;
Landroid/app/slice/Slice;-><init>(Ljava/util/ArrayList;[Ljava/lang/String;Landroid/net/Uri;Landroid/app/slice/SliceSpec;)V
Landroid/app/slice/Slice;->hasHint(Ljava/lang/String;)Z
Landroid/app/slice/Slice;->HINT_CALLER_NEEDED:Ljava/lang/String;
@@ -9479,7 +8883,6 @@
Landroid/app/slice/Slice;->mSpec:Landroid/app/slice/SliceSpec;
Landroid/app/slice/Slice;->mUri:Landroid/net/Uri;
Landroid/app/slice/Slice;->toString(Ljava/lang/String;)Ljava/lang/String;
-Landroid/app/slice/SliceItem$SliceType;
Landroid/app/slice/SliceItem;-><init>(Landroid/app/PendingIntent;Landroid/app/slice/Slice;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V
Landroid/app/slice/SliceItem;-><init>(Landroid/os/Parcel;)V
Landroid/app/slice/SliceItem;-><init>(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;)V
@@ -9539,7 +8942,6 @@
Landroid/app/slice/SliceProvider;->onBindSliceStrict(Landroid/net/Uri;Ljava/util/List;)Landroid/app/slice/Slice;
Landroid/app/slice/SliceProvider;->SLICE_BIND_ANR:J
Landroid/app/slice/SliceProvider;->TAG:Ljava/lang/String;
-Landroid/app/slice/SliceQuery;
Landroid/app/slice/SliceQuery;-><init>()V
Landroid/app/slice/SliceQuery;->compareTypes(Landroid/app/slice/SliceItem;Ljava/lang/String;)Z
Landroid/app/slice/SliceQuery;->contains(Landroid/app/slice/SliceItem;Landroid/app/slice/SliceItem;)Z
@@ -9559,16 +8961,12 @@
Landroid/app/slice/SliceSpec;-><init>(Landroid/os/Parcel;)V
Landroid/app/slice/SliceSpec;->mRevision:I
Landroid/app/slice/SliceSpec;->mType:Ljava/lang/String;
-Landroid/app/StatsManager$StatsdDeathRecipient;
-Landroid/app/StatsManager$StatsdDeathRecipient;-><init>()V
Landroid/app/StatsManager;-><init>(Landroid/content/Context;)V
Landroid/app/StatsManager;->DEBUG:Z
Landroid/app/StatsManager;->getIStatsManagerLocked()Landroid/os/IStatsManager;
Landroid/app/StatsManager;->mContext:Landroid/content/Context;
Landroid/app/StatsManager;->mService:Landroid/os/IStatsManager;
Landroid/app/StatsManager;->TAG:Ljava/lang/String;
-Landroid/app/StatusBarManager$Disable2Flags;
-Landroid/app/StatusBarManager;
Landroid/app/StatusBarManager;->CAMERA_LAUNCH_SOURCE_LIFT_TRIGGER:I
Landroid/app/StatusBarManager;->CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP:I
Landroid/app/StatusBarManager;->CAMERA_LAUNCH_SOURCE_WIGGLE:I
@@ -9599,7 +8997,6 @@
Landroid/app/StatusBarManager;->WINDOW_STATE_HIDING:I
Landroid/app/StatusBarManager;->WINDOW_STATE_SHOWING:I
Landroid/app/StatusBarManager;->WINDOW_STATUS_BAR:I
-Landroid/app/StatusBarManagerProto;
Landroid/app/StatusBarManagerProto;-><init>()V
Landroid/app/StatusBarManagerProto;->TRANSIENT_BAR_HIDING:I
Landroid/app/StatusBarManagerProto;->TRANSIENT_BAR_NONE:I
@@ -9608,7 +9005,6 @@
Landroid/app/StatusBarManagerProto;->WINDOW_STATE_HIDDEN:I
Landroid/app/StatusBarManagerProto;->WINDOW_STATE_HIDING:I
Landroid/app/StatusBarManagerProto;->WINDOW_STATE_SHOWING:I
-Landroid/app/SynchronousUserSwitchObserver;
Landroid/app/SynchronousUserSwitchObserver;-><init>()V
Landroid/app/SynchronousUserSwitchObserver;->onUserSwitching(I)V
Landroid/app/SynchronousUserSwitchObserver;->onUserSwitching(ILandroid/os/IRemoteCallback;)V
@@ -9622,7 +9018,6 @@
Landroid/app/TaskStackBuilder;->mSourceContext:Landroid/content/Context;
Landroid/app/TaskStackBuilder;->startActivities(Landroid/os/Bundle;Landroid/os/UserHandle;)I
Landroid/app/TaskStackBuilder;->TAG:Ljava/lang/String;
-Landroid/app/TaskStackListener;
Landroid/app/TaskStackListener;->onTaskCreated(ILandroid/content/ComponentName;)V
Landroid/app/TaskStackListener;->onTaskDescriptionChanged(ILandroid/app/ActivityManager$TaskDescription;)V
Landroid/app/TaskStackListener;->onTaskRemovalStarted(I)V
@@ -9634,37 +9029,30 @@
Landroid/app/TimePickerDialog;->mIs24HourView:Z
Landroid/app/TimePickerDialog;->mTimeSetListener:Landroid/app/TimePickerDialog$OnTimeSetListener;
Landroid/app/TimePickerDialog;->resolveDialogTheme(Landroid/content/Context;I)I
-Landroid/app/trust/IStrongAuthTracker$Stub$Proxy;
Landroid/app/trust/IStrongAuthTracker$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/app/trust/IStrongAuthTracker$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/app/trust/IStrongAuthTracker$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/app/trust/IStrongAuthTracker$Stub$Proxy;->onStrongAuthRequiredChanged(II)V
-Landroid/app/trust/IStrongAuthTracker$Stub;
Landroid/app/trust/IStrongAuthTracker$Stub;-><init>()V
Landroid/app/trust/IStrongAuthTracker$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/trust/IStrongAuthTracker;
Landroid/app/trust/IStrongAuthTracker$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/app/trust/IStrongAuthTracker$Stub;->TRANSACTION_onStrongAuthRequiredChanged:I
-Landroid/app/trust/IStrongAuthTracker;
Landroid/app/trust/IStrongAuthTracker;->onStrongAuthRequiredChanged(II)V
-Landroid/app/trust/ITrustListener$Stub$Proxy;
Landroid/app/trust/ITrustListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/app/trust/ITrustListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/app/trust/ITrustListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/app/trust/ITrustListener$Stub$Proxy;->onTrustChanged(ZII)V
Landroid/app/trust/ITrustListener$Stub$Proxy;->onTrustError(Ljava/lang/CharSequence;)V
Landroid/app/trust/ITrustListener$Stub$Proxy;->onTrustManagedChanged(ZI)V
-Landroid/app/trust/ITrustListener$Stub;
Landroid/app/trust/ITrustListener$Stub;-><init>()V
Landroid/app/trust/ITrustListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/trust/ITrustListener;
Landroid/app/trust/ITrustListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/app/trust/ITrustListener$Stub;->TRANSACTION_onTrustChanged:I
Landroid/app/trust/ITrustListener$Stub;->TRANSACTION_onTrustError:I
Landroid/app/trust/ITrustListener$Stub;->TRANSACTION_onTrustManagedChanged:I
-Landroid/app/trust/ITrustListener;
Landroid/app/trust/ITrustListener;->onTrustChanged(ZII)V
Landroid/app/trust/ITrustListener;->onTrustError(Ljava/lang/CharSequence;)V
Landroid/app/trust/ITrustListener;->onTrustManagedChanged(ZI)V
-Landroid/app/trust/ITrustManager$Stub$Proxy;
Landroid/app/trust/ITrustManager$Stub$Proxy;->clearAllFingerprints()V
Landroid/app/trust/ITrustManager$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/app/trust/ITrustManager$Stub$Proxy;->isDeviceLocked(I)Z
@@ -9679,7 +9067,6 @@
Landroid/app/trust/ITrustManager$Stub$Proxy;->setDeviceLockedForUser(IZ)V
Landroid/app/trust/ITrustManager$Stub$Proxy;->unlockedByFingerprintForUser(I)V
Landroid/app/trust/ITrustManager$Stub$Proxy;->unregisterTrustListener(Landroid/app/trust/ITrustListener;)V
-Landroid/app/trust/ITrustManager$Stub;
Landroid/app/trust/ITrustManager$Stub;-><init>()V
Landroid/app/trust/ITrustManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/trust/ITrustManager;
Landroid/app/trust/ITrustManager$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -9695,7 +9082,6 @@
Landroid/app/trust/ITrustManager$Stub;->TRANSACTION_setDeviceLockedForUser:I
Landroid/app/trust/ITrustManager$Stub;->TRANSACTION_unlockedByFingerprintForUser:I
Landroid/app/trust/ITrustManager$Stub;->TRANSACTION_unregisterTrustListener:I
-Landroid/app/trust/ITrustManager;
Landroid/app/trust/ITrustManager;->clearAllFingerprints()V
Landroid/app/trust/ITrustManager;->isDeviceLocked(I)Z
Landroid/app/trust/ITrustManager;->isDeviceSecure(I)Z
@@ -9708,11 +9094,9 @@
Landroid/app/trust/ITrustManager;->setDeviceLockedForUser(IZ)V
Landroid/app/trust/ITrustManager;->unlockedByFingerprintForUser(I)V
Landroid/app/trust/ITrustManager;->unregisterTrustListener(Landroid/app/trust/ITrustListener;)V
-Landroid/app/trust/TrustManager$TrustListener;
Landroid/app/trust/TrustManager$TrustListener;->onTrustChanged(ZII)V
Landroid/app/trust/TrustManager$TrustListener;->onTrustError(Ljava/lang/CharSequence;)V
Landroid/app/trust/TrustManager$TrustListener;->onTrustManagedChanged(ZI)V
-Landroid/app/trust/TrustManager;
Landroid/app/trust/TrustManager;-><init>(Landroid/os/IBinder;)V
Landroid/app/trust/TrustManager;->clearAllFingerprints()V
Landroid/app/trust/TrustManager;->DATA_FLAGS:Ljava/lang/String;
@@ -9732,8 +9116,6 @@
Landroid/app/trust/TrustManager;->TAG:Ljava/lang/String;
Landroid/app/trust/TrustManager;->unlockedByFingerprintForUser(I)V
Landroid/app/trust/TrustManager;->unregisterTrustListener(Landroid/app/trust/TrustManager$TrustListener;)V
-Landroid/app/UiAutomation$IAccessibilityServiceClientImpl;
-Landroid/app/UiAutomation$IAccessibilityServiceClientImpl;-><init>(Landroid/os/Looper;)V
Landroid/app/UiAutomation;->connect(I)V
Landroid/app/UiAutomation;->CONNECTION_ID_UNDEFINED:I
Landroid/app/UiAutomation;->CONNECT_TIMEOUT_MILLIS:J
@@ -9760,11 +9142,8 @@
Landroid/app/UiAutomation;->throwIfConnectedLocked()V
Landroid/app/UiAutomation;->throwIfNotConnectedLocked()V
Landroid/app/UiAutomation;->warnIfBetterCommand(Ljava/lang/String;)V
-Landroid/app/UiAutomationConnection$Repeater;
-Landroid/app/UiAutomationConnection$Repeater;-><init>(Ljava/io/InputStream;Ljava/io/OutputStream;)V
Landroid/app/UiAutomationConnection$Repeater;->readFrom:Ljava/io/InputStream;
Landroid/app/UiAutomationConnection$Repeater;->writeTo:Ljava/io/OutputStream;
-Landroid/app/UiAutomationConnection;
Landroid/app/UiAutomationConnection;->clearWindowAnimationFrameStats()V
Landroid/app/UiAutomationConnection;->clearWindowContentFrameStats(I)Z
Landroid/app/UiAutomationConnection;->connect(Landroid/accessibilityservice/IAccessibilityServiceClient;I)V
@@ -9797,10 +9176,8 @@
Landroid/app/UiAutomationConnection;->throwIfNotConnectedLocked()V
Landroid/app/UiAutomationConnection;->throwIfShutdownLocked()V
Landroid/app/UiAutomationConnection;->unregisterUiTestAutomationServiceLocked()V
-Landroid/app/UiModeManager$NightMode;
Landroid/app/UiModeManager;->mService:Landroid/app/IUiModeManager;
Landroid/app/UiModeManager;->TAG:Ljava/lang/String;
-Landroid/app/usage/AppStandbyInfo;
Landroid/app/usage/AppStandbyInfo;-><init>(Landroid/os/Parcel;)V
Landroid/app/usage/AppStandbyInfo;-><init>(Ljava/lang/String;I)V
Landroid/app/usage/AppStandbyInfo;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -9814,18 +9191,13 @@
Landroid/app/usage/CacheQuotaHint;->mUid:I
Landroid/app/usage/CacheQuotaHint;->mUsageStats:Landroid/app/usage/UsageStats;
Landroid/app/usage/CacheQuotaHint;->mUuid:Ljava/lang/String;
-Landroid/app/usage/CacheQuotaService$CacheQuotaServiceWrapper;
-Landroid/app/usage/CacheQuotaService$CacheQuotaServiceWrapper;-><init>()V
Landroid/app/usage/CacheQuotaService$CacheQuotaServiceWrapper;->computeCacheQuotaHints(Landroid/os/RemoteCallback;Ljava/util/List;)V
-Landroid/app/usage/CacheQuotaService$ServiceHandler;
-Landroid/app/usage/CacheQuotaService$ServiceHandler;-><init>(Landroid/os/Looper;)V
Landroid/app/usage/CacheQuotaService$ServiceHandler;->MSG_SEND_LIST:I
Landroid/app/usage/CacheQuotaService;->mHandler:Landroid/os/Handler;
Landroid/app/usage/CacheQuotaService;->mWrapper:Landroid/app/usage/CacheQuotaService$CacheQuotaServiceWrapper;
Landroid/app/usage/CacheQuotaService;->REQUEST_LIST_KEY:Ljava/lang/String;
Landroid/app/usage/CacheQuotaService;->TAG:Ljava/lang/String;
Landroid/app/usage/ConfigurationStats;-><init>()V
-Landroid/app/usage/EventList;
Landroid/app/usage/EventList;-><init>()V
Landroid/app/usage/EventList;->clear()V
Landroid/app/usage/EventList;->firstIndexOnOrAfter(J)I
@@ -9849,19 +9221,15 @@
Landroid/app/usage/ExternalStorageStats;->obbBytes:J
Landroid/app/usage/ExternalStorageStats;->totalBytes:J
Landroid/app/usage/ExternalStorageStats;->videoBytes:J
-Landroid/app/usage/ICacheQuotaService$Stub$Proxy;
Landroid/app/usage/ICacheQuotaService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/app/usage/ICacheQuotaService$Stub$Proxy;->computeCacheQuotaHints(Landroid/os/RemoteCallback;Ljava/util/List;)V
Landroid/app/usage/ICacheQuotaService$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/app/usage/ICacheQuotaService$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/app/usage/ICacheQuotaService$Stub;
Landroid/app/usage/ICacheQuotaService$Stub;-><init>()V
Landroid/app/usage/ICacheQuotaService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/usage/ICacheQuotaService;
Landroid/app/usage/ICacheQuotaService$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/app/usage/ICacheQuotaService$Stub;->TRANSACTION_computeCacheQuotaHints:I
-Landroid/app/usage/ICacheQuotaService;
Landroid/app/usage/ICacheQuotaService;->computeCacheQuotaHints(Landroid/os/RemoteCallback;Ljava/util/List;)V
-Landroid/app/usage/IStorageStatsManager$Stub$Proxy;
Landroid/app/usage/IStorageStatsManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/app/usage/IStorageStatsManager$Stub$Proxy;->getCacheBytes(Ljava/lang/String;Ljava/lang/String;)J
Landroid/app/usage/IStorageStatsManager$Stub$Proxy;->getCacheQuotaBytes(Ljava/lang/String;ILjava/lang/String;)J
@@ -9875,7 +9243,6 @@
Landroid/app/usage/IStorageStatsManager$Stub$Proxy;->queryStatsForPackage(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)Landroid/app/usage/StorageStats;
Landroid/app/usage/IStorageStatsManager$Stub$Proxy;->queryStatsForUid(Ljava/lang/String;ILjava/lang/String;)Landroid/app/usage/StorageStats;
Landroid/app/usage/IStorageStatsManager$Stub$Proxy;->queryStatsForUser(Ljava/lang/String;ILjava/lang/String;)Landroid/app/usage/StorageStats;
-Landroid/app/usage/IStorageStatsManager$Stub;
Landroid/app/usage/IStorageStatsManager$Stub;-><init>()V
Landroid/app/usage/IStorageStatsManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/usage/IStorageStatsManager;
Landroid/app/usage/IStorageStatsManager$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -9889,7 +9256,6 @@
Landroid/app/usage/IStorageStatsManager$Stub;->TRANSACTION_queryStatsForPackage:I
Landroid/app/usage/IStorageStatsManager$Stub;->TRANSACTION_queryStatsForUid:I
Landroid/app/usage/IStorageStatsManager$Stub;->TRANSACTION_queryStatsForUser:I
-Landroid/app/usage/IStorageStatsManager;
Landroid/app/usage/IStorageStatsManager;->getCacheBytes(Ljava/lang/String;Ljava/lang/String;)J
Landroid/app/usage/IStorageStatsManager;->getCacheQuotaBytes(Ljava/lang/String;ILjava/lang/String;)J
Landroid/app/usage/IStorageStatsManager;->getFreeBytes(Ljava/lang/String;Ljava/lang/String;)J
@@ -9900,7 +9266,6 @@
Landroid/app/usage/IStorageStatsManager;->queryStatsForPackage(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)Landroid/app/usage/StorageStats;
Landroid/app/usage/IStorageStatsManager;->queryStatsForUid(Ljava/lang/String;ILjava/lang/String;)Landroid/app/usage/StorageStats;
Landroid/app/usage/IStorageStatsManager;->queryStatsForUser(Ljava/lang/String;ILjava/lang/String;)Landroid/app/usage/StorageStats;
-Landroid/app/usage/IUsageStatsManager$Stub$Proxy;
Landroid/app/usage/IUsageStatsManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/app/usage/IUsageStatsManager$Stub$Proxy;->getAppStandbyBucket(Ljava/lang/String;Ljava/lang/String;I)I
Landroid/app/usage/IUsageStatsManager$Stub$Proxy;->getAppStandbyBuckets(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;
@@ -9922,7 +9287,6 @@
Landroid/app/usage/IUsageStatsManager$Stub$Proxy;->setAppStandbyBuckets(Landroid/content/pm/ParceledListSlice;I)V
Landroid/app/usage/IUsageStatsManager$Stub$Proxy;->unregisterAppUsageObserver(ILjava/lang/String;)V
Landroid/app/usage/IUsageStatsManager$Stub$Proxy;->whitelistAppTemporarily(Ljava/lang/String;JI)V
-Landroid/app/usage/IUsageStatsManager$Stub;
Landroid/app/usage/IUsageStatsManager$Stub;-><init>()V
Landroid/app/usage/IUsageStatsManager$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/app/usage/IUsageStatsManager$Stub;->TRANSACTION_getAppStandbyBucket:I
@@ -9943,7 +9307,6 @@
Landroid/app/usage/IUsageStatsManager$Stub;->TRANSACTION_setAppStandbyBuckets:I
Landroid/app/usage/IUsageStatsManager$Stub;->TRANSACTION_unregisterAppUsageObserver:I
Landroid/app/usage/IUsageStatsManager$Stub;->TRANSACTION_whitelistAppTemporarily:I
-Landroid/app/usage/IUsageStatsManager;
Landroid/app/usage/IUsageStatsManager;->getAppStandbyBucket(Ljava/lang/String;Ljava/lang/String;I)I
Landroid/app/usage/IUsageStatsManager;->getAppStandbyBuckets(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;
Landroid/app/usage/IUsageStatsManager;->onCarrierPrivilegedAppsChanged()V
@@ -9958,10 +9321,6 @@
Landroid/app/usage/IUsageStatsManager;->setAppStandbyBuckets(Landroid/content/pm/ParceledListSlice;I)V
Landroid/app/usage/IUsageStatsManager;->unregisterAppUsageObserver(ILjava/lang/String;)V
Landroid/app/usage/IUsageStatsManager;->whitelistAppTemporarily(Ljava/lang/String;JI)V
-Landroid/app/usage/NetworkStats$Bucket$DefaultNetworkStatus;
-Landroid/app/usage/NetworkStats$Bucket$Metered;
-Landroid/app/usage/NetworkStats$Bucket$Roaming;
-Landroid/app/usage/NetworkStats$Bucket$State;
Landroid/app/usage/NetworkStats$Bucket;->convertDefaultNetworkStatus(I)I
Landroid/app/usage/NetworkStats$Bucket;->convertMetered(I)I
Landroid/app/usage/NetworkStats$Bucket;->convertRoaming(I)I
@@ -10011,7 +9370,6 @@
Landroid/app/usage/NetworkStats;->stepHistory()V
Landroid/app/usage/NetworkStats;->stepUid()V
Landroid/app/usage/NetworkStats;->TAG:Ljava/lang/String;
-Landroid/app/usage/NetworkStatsManager$CallbackHandler;
Landroid/app/usage/NetworkStatsManager$CallbackHandler;-><init>(Landroid/os/Looper;ILjava/lang/String;Landroid/app/usage/NetworkStatsManager$UsageCallback;)V
Landroid/app/usage/NetworkStatsManager$CallbackHandler;->getObject(Landroid/os/Message;Ljava/lang/String;)Ljava/lang/Object;
Landroid/app/usage/NetworkStatsManager$CallbackHandler;->mCallback:Landroid/app/usage/NetworkStatsManager$UsageCallback;
@@ -10046,13 +9404,11 @@
Landroid/app/usage/StorageStatsManager;->getCacheQuotaBytes(Ljava/lang/String;I)J
Landroid/app/usage/StorageStatsManager;->mContext:Landroid/content/Context;
Landroid/app/usage/StorageStatsManager;->mService:Landroid/app/usage/IStorageStatsManager;
-Landroid/app/usage/TimeSparseArray;
Landroid/app/usage/TimeSparseArray;-><init>()V
Landroid/app/usage/TimeSparseArray;->closestIndexOnOrAfter(J)I
Landroid/app/usage/TimeSparseArray;->closestIndexOnOrBefore(J)I
Landroid/app/usage/TimeSparseArray;->mWtfReported:Z
Landroid/app/usage/TimeSparseArray;->TAG:Ljava/lang/String;
-Landroid/app/usage/UsageEvents$Event$EventFlags;
Landroid/app/usage/UsageEvents$Event;-><init>(Landroid/app/usage/UsageEvents$Event;)V
Landroid/app/usage/UsageEvents$Event;->CHOOSER_ACTION:I
Landroid/app/usage/UsageEvents$Event;->CONTINUE_PREVIOUS_DAY:I
@@ -10077,7 +9433,6 @@
Landroid/app/usage/UsageStats;->getObfuscatedForInstantApp()Landroid/app/usage/UsageStats;
Landroid/app/usage/UsageStats;->mAppLaunchCount:I
Landroid/app/usage/UsageStats;->mChooserCounts:Landroid/util/ArrayMap;
-Landroid/app/usage/UsageStatsManager$StandbyBuckets;
Landroid/app/usage/UsageStatsManager;-><init>(Landroid/content/Context;Landroid/app/usage/IUsageStatsManager;)V
Landroid/app/usage/UsageStatsManager;->INTERVAL_COUNT:I
Landroid/app/usage/UsageStatsManager;->onCarrierPrivilegedAppsChanged()V
@@ -10105,12 +9460,10 @@
Landroid/app/usage/UsageStatsManager;->REASON_SUB_USAGE_USER_INTERACTION:I
Landroid/app/usage/UsageStatsManager;->reportChooserSelection(Ljava/lang/String;ILjava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V
Landroid/app/usage/UsageStatsManager;->setAppInactive(Ljava/lang/String;Z)V
-Landroid/app/usage/UsageStatsManagerInternal$AppIdleStateChangeListener;
Landroid/app/usage/UsageStatsManagerInternal$AppIdleStateChangeListener;-><init>()V
Landroid/app/usage/UsageStatsManagerInternal$AppIdleStateChangeListener;->onAppIdleStateChanged(Ljava/lang/String;IZII)V
Landroid/app/usage/UsageStatsManagerInternal$AppIdleStateChangeListener;->onParoleStateChanged(Z)V
Landroid/app/usage/UsageStatsManagerInternal$AppIdleStateChangeListener;->onUserInteractionStarted(Ljava/lang/String;I)V
-Landroid/app/usage/UsageStatsManagerInternal;
Landroid/app/usage/UsageStatsManagerInternal;-><init>()V
Landroid/app/usage/UsageStatsManagerInternal;->addAppIdleStateChangeListener(Landroid/app/usage/UsageStatsManagerInternal$AppIdleStateChangeListener;)V
Landroid/app/usage/UsageStatsManagerInternal;->applyRestoredPayload(ILjava/lang/String;[B)V
@@ -10136,7 +9489,6 @@
Landroid/app/usage/UsageStatsManagerInternal;->reportShortcutUsage(Ljava/lang/String;Ljava/lang/String;I)V
Landroid/app/usage/UsageStatsManagerInternal;->setActiveAdminApps(Ljava/util/Set;I)V
Landroid/app/usage/UsageStatsManagerInternal;->setLastJobRunTime(Ljava/lang/String;IJ)V
-Landroid/app/UserSwitchObserver;
Landroid/app/UserSwitchObserver;->onForegroundProfileSwitch(I)V
Landroid/app/UserSwitchObserver;->onLockedBootComplete(I)V
Landroid/app/UserSwitchObserver;->onUserSwitchComplete(I)V
@@ -10213,7 +9565,6 @@
Landroid/app/VoiceInteractor;->pullRequest(Lcom/android/internal/app/IVoiceInteractorRequest;Z)Landroid/app/VoiceInteractor$Request;
Landroid/app/VoiceInteractor;->retainInstance()V
Landroid/app/VoiceInteractor;->TAG:Ljava/lang/String;
-Landroid/app/Vr2dDisplayProperties$Builder;
Landroid/app/Vr2dDisplayProperties$Builder;->addFlags(I)Landroid/app/Vr2dDisplayProperties$Builder;
Landroid/app/Vr2dDisplayProperties$Builder;->mAddedFlags:I
Landroid/app/Vr2dDisplayProperties$Builder;->mDpi:I
@@ -10222,7 +9573,6 @@
Landroid/app/Vr2dDisplayProperties$Builder;->mWidth:I
Landroid/app/Vr2dDisplayProperties$Builder;->removeFlags(I)Landroid/app/Vr2dDisplayProperties$Builder;
Landroid/app/Vr2dDisplayProperties$Builder;->setDimensions(III)Landroid/app/Vr2dDisplayProperties$Builder;
-Landroid/app/Vr2dDisplayProperties;
Landroid/app/Vr2dDisplayProperties;-><init>(IIIII)V
Landroid/app/Vr2dDisplayProperties;-><init>(Landroid/os/Parcel;)V
Landroid/app/Vr2dDisplayProperties;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -10239,7 +9589,6 @@
Landroid/app/Vr2dDisplayProperties;->mRemovedFlags:I
Landroid/app/Vr2dDisplayProperties;->mWidth:I
Landroid/app/Vr2dDisplayProperties;->toReadableFlags(I)Ljava/lang/String;
-Landroid/app/VrManager$CallbackEntry;
Landroid/app/VrManager$CallbackEntry;-><init>(Landroid/app/VrStateCallback;Landroid/os/Handler;)V
Landroid/app/VrManager$CallbackEntry;->mCallback:Landroid/app/VrStateCallback;
Landroid/app/VrManager$CallbackEntry;->mHandler:Landroid/os/Handler;
@@ -10249,9 +9598,7 @@
Landroid/app/VrManager;->getVrModeEnabled()Z
Landroid/app/VrManager;->mCallbackMap:Ljava/util/Map;
Landroid/app/VrManager;->setStandbyEnabled(Z)V
-Landroid/app/VrStateCallback;
Landroid/app/VrStateCallback;->onVrStateChanged(Z)V
-Landroid/app/WaitResult;
Landroid/app/WaitResult;-><init>()V
Landroid/app/WaitResult;-><init>(Landroid/os/Parcel;)V
Landroid/app/WaitResult;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -10289,7 +9636,6 @@
Landroid/app/WallpaperInfo;->mSupportsAmbientMode:Z
Landroid/app/WallpaperInfo;->mThumbnailResource:I
Landroid/app/WallpaperInfo;->TAG:Ljava/lang/String;
-Landroid/app/WallpaperManager$FastBitmapDrawable;
Landroid/app/WallpaperManager$FastBitmapDrawable;-><init>(Landroid/graphics/Bitmap;)V
Landroid/app/WallpaperManager$FastBitmapDrawable;->mBitmap:Landroid/graphics/Bitmap;
Landroid/app/WallpaperManager$FastBitmapDrawable;->mDrawLeft:I
@@ -10297,7 +9643,6 @@
Landroid/app/WallpaperManager$FastBitmapDrawable;->mHeight:I
Landroid/app/WallpaperManager$FastBitmapDrawable;->mPaint:Landroid/graphics/Paint;
Landroid/app/WallpaperManager$FastBitmapDrawable;->mWidth:I
-Landroid/app/WallpaperManager$Globals;
Landroid/app/WallpaperManager$Globals;-><init>(Landroid/app/IWallpaperManager;Landroid/os/Looper;)V
Landroid/app/WallpaperManager$Globals;->addOnColorsChangedListener(Landroid/app/WallpaperManager$OnColorsChangedListener;Landroid/os/Handler;I)V
Landroid/app/WallpaperManager$Globals;->forgetLoadedWallpaper()V
@@ -10317,9 +9662,6 @@
Landroid/app/WallpaperManager$Globals;->peekWallpaperBitmap(Landroid/content/Context;ZIIZ)Landroid/graphics/Bitmap;
Landroid/app/WallpaperManager$Globals;->removeOnColorsChangedListener(Landroid/app/WallpaperManager$OnColorsChangedListener;I)V
Landroid/app/WallpaperManager$OnColorsChangedListener;->onColorsChanged(Landroid/app/WallpaperColors;II)V
-Landroid/app/WallpaperManager$SetWallpaperFlags;
-Landroid/app/WallpaperManager$WallpaperSetCompletion;
-Landroid/app/WallpaperManager$WallpaperSetCompletion;-><init>()V
Landroid/app/WallpaperManager$WallpaperSetCompletion;->mLatch:Ljava/util/concurrent/CountDownLatch;
Landroid/app/WallpaperManager$WallpaperSetCompletion;->onWallpaperChanged()V
Landroid/app/WallpaperManager$WallpaperSetCompletion;->onWallpaperColorsChanged(Landroid/app/WallpaperColors;II)V
@@ -10345,9 +9687,6 @@
Landroid/app/WallpaperManager;->sSync:Ljava/lang/Object;
Landroid/app/WallpaperManager;->TAG:Ljava/lang/String;
Landroid/app/WallpaperManager;->validateRect(Landroid/graphics/Rect;)V
-Landroid/app/WindowConfiguration$ActivityType;
-Landroid/app/WindowConfiguration$WindowConfig;
-Landroid/app/WindowConfiguration$WindowingMode;
Landroid/app/WindowConfiguration;-><init>(Landroid/app/WindowConfiguration;)V
Landroid/app/WindowConfiguration;-><init>(Landroid/os/Parcel;)V
Landroid/app/WindowConfiguration;->activityTypeToString(I)Ljava/lang/String;
@@ -10383,12 +9722,10 @@
Landroid/app/WindowConfiguration;->WINDOW_CONFIG_BOUNDS:I
Landroid/app/WindowConfiguration;->WINDOW_CONFIG_WINDOWING_MODE:I
Landroid/app/WindowConfiguration;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-Landroid/app/WindowConfigurationProto;
Landroid/app/WindowConfigurationProto;-><init>()V
Landroid/app/WindowConfigurationProto;->ACTIVITY_TYPE:J
Landroid/app/WindowConfigurationProto;->APP_BOUNDS:J
Landroid/app/WindowConfigurationProto;->WINDOWING_MODE:J
-Landroid/appwidget/AppWidgetHost$Callbacks;
Landroid/appwidget/AppWidgetHost$Callbacks;-><init>(Landroid/os/Handler;)V
Landroid/appwidget/AppWidgetHost$Callbacks;->isLocalBinder()Z
Landroid/appwidget/AppWidgetHost$Callbacks;->mWeakHandler:Ljava/lang/ref/WeakReference;
@@ -10396,8 +9733,6 @@
Landroid/appwidget/AppWidgetHost$Callbacks;->providersChanged()V
Landroid/appwidget/AppWidgetHost$Callbacks;->updateAppWidget(ILandroid/widget/RemoteViews;)V
Landroid/appwidget/AppWidgetHost$Callbacks;->viewDataChanged(II)V
-Landroid/appwidget/AppWidgetHost$UpdateHandler;
-Landroid/appwidget/AppWidgetHost$UpdateHandler;-><init>(Landroid/os/Looper;)V
Landroid/appwidget/AppWidgetHost;->bindService(Landroid/content/Context;)V
Landroid/appwidget/AppWidgetHost;->HANDLE_PROVIDERS_CHANGED:I
Landroid/appwidget/AppWidgetHost;->HANDLE_PROVIDER_CHANGED:I
@@ -10412,8 +9747,6 @@
Landroid/appwidget/AppWidgetHost;->sServiceLock:Ljava/lang/Object;
Landroid/appwidget/AppWidgetHost;->updateAppWidgetView(ILandroid/widget/RemoteViews;)V
Landroid/appwidget/AppWidgetHost;->viewDataChanged(II)V
-Landroid/appwidget/AppWidgetHostView$ViewApplyListener;
-Landroid/appwidget/AppWidgetHostView$ViewApplyListener;-><init>(Landroid/widget/RemoteViews;IZ)V
Landroid/appwidget/AppWidgetHostView$ViewApplyListener;->mIsReapply:Z
Landroid/appwidget/AppWidgetHostView$ViewApplyListener;->mLayoutId:I
Landroid/appwidget/AppWidgetHostView$ViewApplyListener;->mViews:Landroid/widget/RemoteViews;
@@ -10459,15 +9792,10 @@
Landroid/appwidget/AppWidgetManager;->requestPinAppWidget(Landroid/content/ComponentName;Landroid/app/PendingIntent;)Z
Landroid/appwidget/AppWidgetManager;->setBindAppWidgetPermission(Ljava/lang/String;IZ)V
Landroid/appwidget/AppWidgetManager;->setBindAppWidgetPermission(Ljava/lang/String;Z)V
-Landroid/appwidget/AppWidgetManagerInternal;
Landroid/appwidget/AppWidgetManagerInternal;-><init>()V
Landroid/appwidget/AppWidgetManagerInternal;->getHostedWidgetPackages(I)Landroid/util/ArraySet;
-Landroid/appwidget/AppWidgetProviderInfo$CategoryFlags;
-Landroid/appwidget/AppWidgetProviderInfo$FeatureFlags;
-Landroid/appwidget/AppWidgetProviderInfo$ResizeModeFlags;
Landroid/appwidget/AppWidgetProviderInfo;->loadDrawable(Landroid/content/Context;IIZ)Landroid/graphics/drawable/Drawable;
Landroid/appwidget/AppWidgetProviderInfo;->updateDimensions(Landroid/util/DisplayMetrics;)V
-Landroid/appwidget/PendingHostUpdate;
Landroid/appwidget/PendingHostUpdate;-><init>(II)V
Landroid/appwidget/PendingHostUpdate;-><init>(Landroid/os/Parcel;)V
Landroid/appwidget/PendingHostUpdate;->appWidgetId:I
@@ -10504,7 +9832,6 @@
Landroid/bluetooth/BluetoothA2dp;->shouldSendVolumeKeys(Landroid/bluetooth/BluetoothDevice;)Z
Landroid/bluetooth/BluetoothA2dp;->TAG:Ljava/lang/String;
Landroid/bluetooth/BluetoothA2dp;->VDBG:Z
-Landroid/bluetooth/BluetoothA2dpSink;
Landroid/bluetooth/BluetoothA2dpSink;-><init>(Landroid/content/Context;Landroid/bluetooth/BluetoothProfile$ServiceListener;)V
Landroid/bluetooth/BluetoothA2dpSink;->ACTION_AUDIO_CONFIG_CHANGED:Ljava/lang/String;
Landroid/bluetooth/BluetoothA2dpSink;->ACTION_CONNECTION_STATE_CHANGED:Ljava/lang/String;
@@ -10532,7 +9859,6 @@
Landroid/bluetooth/BluetoothA2dpSink;->STATE_PLAYING:I
Landroid/bluetooth/BluetoothA2dpSink;->TAG:Ljava/lang/String;
Landroid/bluetooth/BluetoothA2dpSink;->VDBG:Z
-Landroid/bluetooth/BluetoothActivityEnergyInfo;
Landroid/bluetooth/BluetoothActivityEnergyInfo;-><init>(JIJJJJ)V
Landroid/bluetooth/BluetoothActivityEnergyInfo;-><init>(Landroid/os/Parcel;)V
Landroid/bluetooth/BluetoothActivityEnergyInfo;->BT_STACK_STATE_INVALID:I
@@ -10556,12 +9882,7 @@
Landroid/bluetooth/BluetoothActivityEnergyInfo;->mTimestamp:J
Landroid/bluetooth/BluetoothActivityEnergyInfo;->mUidTraffic:[Landroid/bluetooth/UidTraffic;
Landroid/bluetooth/BluetoothActivityEnergyInfo;->setUidTraffic([Landroid/bluetooth/UidTraffic;)V
-Landroid/bluetooth/BluetoothAdapter$AdapterState;
-Landroid/bluetooth/BluetoothAdapter$BluetoothStateChangeCallback;
Landroid/bluetooth/BluetoothAdapter$BluetoothStateChangeCallback;->onBluetoothStateChange(Z)V
-Landroid/bluetooth/BluetoothAdapter$ScanMode;
-Landroid/bluetooth/BluetoothAdapter$StateChangeCallbackWrapper;
-Landroid/bluetooth/BluetoothAdapter$StateChangeCallbackWrapper;-><init>(Landroid/bluetooth/BluetoothAdapter$BluetoothStateChangeCallback;)V
Landroid/bluetooth/BluetoothAdapter$StateChangeCallbackWrapper;->mCallback:Landroid/bluetooth/BluetoothAdapter$BluetoothStateChangeCallback;
Landroid/bluetooth/BluetoothAdapter$StateChangeCallbackWrapper;->onBluetoothStateChange(Z)V
Landroid/bluetooth/BluetoothAdapter;-><init>(Landroid/bluetooth/IBluetoothManager;)V
@@ -10618,7 +9939,6 @@
Landroid/bluetooth/BluetoothAdapter;->toDeviceSet([Landroid/bluetooth/BluetoothDevice;)Ljava/util/Set;
Landroid/bluetooth/BluetoothAdapter;->VDBG:Z
Landroid/bluetooth/BluetoothAssignedNumbers;-><init>()V
-Landroid/bluetooth/BluetoothAudioConfig;
Landroid/bluetooth/BluetoothAudioConfig;-><init>(III)V
Landroid/bluetooth/BluetoothAudioConfig;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/bluetooth/BluetoothAudioConfig;->getAudioFormat()I
@@ -10627,7 +9947,6 @@
Landroid/bluetooth/BluetoothAudioConfig;->mAudioFormat:I
Landroid/bluetooth/BluetoothAudioConfig;->mChannelConfig:I
Landroid/bluetooth/BluetoothAudioConfig;->mSampleRate:I
-Landroid/bluetooth/BluetoothAvrcp;
Landroid/bluetooth/BluetoothAvrcp;-><init>()V
Landroid/bluetooth/BluetoothAvrcp;->PASSTHROUGH_ID_0:I
Landroid/bluetooth/BluetoothAvrcp;->PASSTHROUGH_ID_1:I
@@ -10689,7 +10008,6 @@
Landroid/bluetooth/BluetoothAvrcp;->PASSTHROUGH_KEYPRESSED_RELEASE:I
Landroid/bluetooth/BluetoothAvrcp;->PASSTHROUGH_STATE_PRESS:I
Landroid/bluetooth/BluetoothAvrcp;->PASSTHROUGH_STATE_RELEASE:I
-Landroid/bluetooth/BluetoothAvrcpController;
Landroid/bluetooth/BluetoothAvrcpController;-><init>(Landroid/content/Context;Landroid/bluetooth/BluetoothProfile$ServiceListener;)V
Landroid/bluetooth/BluetoothAvrcpController;->ACTION_CONNECTION_STATE_CHANGED:Ljava/lang/String;
Landroid/bluetooth/BluetoothAvrcpController;->ACTION_PLAYER_SETTING:Ljava/lang/String;
@@ -10711,7 +10029,6 @@
Landroid/bluetooth/BluetoothAvrcpController;->setPlayerApplicationSetting(Landroid/bluetooth/BluetoothAvrcpPlayerSettings;)Z
Landroid/bluetooth/BluetoothAvrcpController;->TAG:Ljava/lang/String;
Landroid/bluetooth/BluetoothAvrcpController;->VDBG:Z
-Landroid/bluetooth/BluetoothAvrcpPlayerSettings;
Landroid/bluetooth/BluetoothAvrcpPlayerSettings;-><init>(I)V
Landroid/bluetooth/BluetoothAvrcpPlayerSettings;-><init>(Landroid/os/Parcel;)V
Landroid/bluetooth/BluetoothAvrcpPlayerSettings;->addSettingValue(II)V
@@ -10817,7 +10134,6 @@
Landroid/bluetooth/BluetoothDevice;->TAG:Ljava/lang/String;
Landroid/bluetooth/BluetoothDevice;->UNBOND_REASON_AUTH_CANCELED:I
Landroid/bluetooth/BluetoothDevice;->UNBOND_REASON_REMOVED:I
-Landroid/bluetooth/BluetoothDevicePicker;
Landroid/bluetooth/BluetoothDevicePicker;->ACTION_DEVICE_SELECTED:Ljava/lang/String;
Landroid/bluetooth/BluetoothDevicePicker;->ACTION_LAUNCH:Ljava/lang/String;
Landroid/bluetooth/BluetoothDevicePicker;->EXTRA_FILTER_TYPE:Ljava/lang/String;
@@ -10891,7 +10207,6 @@
Landroid/bluetooth/BluetoothGattDescriptor;->mUuid:Ljava/util/UUID;
Landroid/bluetooth/BluetoothGattDescriptor;->mValue:[B
Landroid/bluetooth/BluetoothGattDescriptor;->setInstanceId(I)V
-Landroid/bluetooth/BluetoothGattIncludedService;
Landroid/bluetooth/BluetoothGattIncludedService;-><init>(Landroid/os/Parcel;)V
Landroid/bluetooth/BluetoothGattIncludedService;-><init>(Ljava/util/UUID;II)V
Landroid/bluetooth/BluetoothGattIncludedService;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -10970,7 +10285,6 @@
Landroid/bluetooth/BluetoothHeadset;->VENDOR_SPECIFIC_HEADSET_EVENT_XAPL:Ljava/lang/String;
Landroid/bluetooth/BluetoothHeadset;->VENDOR_SPECIFIC_HEADSET_EVENT_XEVENT:Ljava/lang/String;
Landroid/bluetooth/BluetoothHeadset;->VENDOR_SPECIFIC_HEADSET_EVENT_XEVENT_BATTERY_LEVEL:Ljava/lang/String;
-Landroid/bluetooth/BluetoothHeadsetClient;
Landroid/bluetooth/BluetoothHeadsetClient;-><init>(Landroid/content/Context;Landroid/bluetooth/BluetoothProfile$ServiceListener;)V
Landroid/bluetooth/BluetoothHeadsetClient;->ACTION_AG_EVENT:Ljava/lang/String;
Landroid/bluetooth/BluetoothHeadsetClient;->ACTION_AUDIO_STATE_CHANGED:Ljava/lang/String;
@@ -11089,7 +10403,6 @@
Landroid/bluetooth/BluetoothHeadsetClient;->TAG:Ljava/lang/String;
Landroid/bluetooth/BluetoothHeadsetClient;->terminateCall(Landroid/bluetooth/BluetoothDevice;Landroid/bluetooth/BluetoothHeadsetClientCall;)Z
Landroid/bluetooth/BluetoothHeadsetClient;->VDBG:Z
-Landroid/bluetooth/BluetoothHeadsetClientCall;
Landroid/bluetooth/BluetoothHeadsetClientCall;-><init>(Landroid/bluetooth/BluetoothDevice;IILjava/lang/String;ZZZ)V
Landroid/bluetooth/BluetoothHeadsetClientCall;-><init>(Landroid/bluetooth/BluetoothDevice;ILjava/util/UUID;ILjava/lang/String;ZZZ)V
Landroid/bluetooth/BluetoothHeadsetClientCall;->CALL_STATE_ACTIVE:I
@@ -11118,7 +10431,6 @@
Landroid/bluetooth/BluetoothHeadsetClientCall;->setNumber(Ljava/lang/String;)V
Landroid/bluetooth/BluetoothHeadsetClientCall;->setState(I)V
Landroid/bluetooth/BluetoothHeadsetClientCall;->toString(Z)Ljava/lang/String;
-Landroid/bluetooth/BluetoothHealth$BluetoothHealthCallbackWrapper;
Landroid/bluetooth/BluetoothHealth$BluetoothHealthCallbackWrapper;-><init>(Landroid/bluetooth/BluetoothHealthCallback;)V
Landroid/bluetooth/BluetoothHealth$BluetoothHealthCallbackWrapper;->mCallback:Landroid/bluetooth/BluetoothHealthCallback;
Landroid/bluetooth/BluetoothHealth$BluetoothHealthCallbackWrapper;->onHealthAppConfigurationStatusChange(Landroid/bluetooth/BluetoothHealthAppConfiguration;I)V
@@ -11156,7 +10468,6 @@
Landroid/bluetooth/BluetoothHealthAppConfiguration;->mName:Ljava/lang/String;
Landroid/bluetooth/BluetoothHealthAppConfiguration;->mRole:I
Landroid/bluetooth/BluetoothHealthCallback;->TAG:Ljava/lang/String;
-Landroid/bluetooth/BluetoothHearingAid;
Landroid/bluetooth/BluetoothHearingAid;-><init>(Landroid/content/Context;Landroid/bluetooth/BluetoothProfile$ServiceListener;)V
Landroid/bluetooth/BluetoothHearingAid;->ACTION_CONNECTION_STATE_CHANGED:Ljava/lang/String;
Landroid/bluetooth/BluetoothHearingAid;->ACTION_PLAYING_STATE_CHANGED:Ljava/lang/String;
@@ -11194,7 +10505,6 @@
Landroid/bluetooth/BluetoothHearingAid;->TAG:Ljava/lang/String;
Landroid/bluetooth/BluetoothHearingAid;->VDBG:Z
Landroid/bluetooth/BluetoothHidDevice$Callback;->TAG:Ljava/lang/String;
-Landroid/bluetooth/BluetoothHidDevice$CallbackWrapper;
Landroid/bluetooth/BluetoothHidDevice$CallbackWrapper;-><init>(Ljava/util/concurrent/Executor;Landroid/bluetooth/BluetoothHidDevice$Callback;)V
Landroid/bluetooth/BluetoothHidDevice$CallbackWrapper;->mCallback:Landroid/bluetooth/BluetoothHidDevice$Callback;
Landroid/bluetooth/BluetoothHidDevice$CallbackWrapper;->mExecutor:Ljava/util/concurrent/Executor;
@@ -11228,7 +10538,6 @@
Landroid/bluetooth/BluetoothHidDeviceAppSdpSettings;->mName:Ljava/lang/String;
Landroid/bluetooth/BluetoothHidDeviceAppSdpSettings;->mProvider:Ljava/lang/String;
Landroid/bluetooth/BluetoothHidDeviceAppSdpSettings;->mSubclass:B
-Landroid/bluetooth/BluetoothHidHost;
Landroid/bluetooth/BluetoothHidHost;-><init>(Landroid/content/Context;Landroid/bluetooth/BluetoothProfile$ServiceListener;)V
Landroid/bluetooth/BluetoothHidHost;->ACTION_CONNECTION_STATE_CHANGED:Ljava/lang/String;
Landroid/bluetooth/BluetoothHidHost;->ACTION_HANDSHAKE:Ljava/lang/String;
@@ -11283,7 +10592,6 @@
Landroid/bluetooth/BluetoothHidHost;->virtualUnplug(Landroid/bluetooth/BluetoothDevice;)Z
Landroid/bluetooth/BluetoothHidHost;->VIRTUAL_UNPLUG_STATUS_FAIL:I
Landroid/bluetooth/BluetoothHidHost;->VIRTUAL_UNPLUG_STATUS_SUCCESS:I
-Landroid/bluetooth/BluetoothInputStream;
Landroid/bluetooth/BluetoothInputStream;-><init>(Landroid/bluetooth/BluetoothSocket;)V
Landroid/bluetooth/BluetoothInputStream;->mSocket:Landroid/bluetooth/BluetoothSocket;
Landroid/bluetooth/BluetoothManager;-><init>(Landroid/content/Context;)V
@@ -11292,7 +10600,6 @@
Landroid/bluetooth/BluetoothManager;->openGattServer(Landroid/content/Context;Landroid/bluetooth/BluetoothGattServerCallback;I)Landroid/bluetooth/BluetoothGattServer;
Landroid/bluetooth/BluetoothManager;->TAG:Ljava/lang/String;
Landroid/bluetooth/BluetoothManager;->VDBG:Z
-Landroid/bluetooth/BluetoothMap;
Landroid/bluetooth/BluetoothMap;-><init>(Landroid/content/Context;Landroid/bluetooth/BluetoothProfile$ServiceListener;)V
Landroid/bluetooth/BluetoothMap;->ACTION_CONNECTION_STATE_CHANGED:Ljava/lang/String;
Landroid/bluetooth/BluetoothMap;->close()V
@@ -11320,7 +10627,6 @@
Landroid/bluetooth/BluetoothMap;->STATE_ERROR:I
Landroid/bluetooth/BluetoothMap;->TAG:Ljava/lang/String;
Landroid/bluetooth/BluetoothMap;->VDBG:Z
-Landroid/bluetooth/BluetoothMapClient;
Landroid/bluetooth/BluetoothMapClient;-><init>(Landroid/content/Context;Landroid/bluetooth/BluetoothProfile$ServiceListener;)V
Landroid/bluetooth/BluetoothMapClient;->ACTION_CONNECTION_STATE_CHANGED:Ljava/lang/String;
Landroid/bluetooth/BluetoothMapClient;->ACTION_MESSAGE_DELIVERED_SUCCESSFULLY:Ljava/lang/String;
@@ -11352,13 +10658,11 @@
Landroid/bluetooth/BluetoothMapClient;->STATE_ERROR:I
Landroid/bluetooth/BluetoothMapClient;->TAG:Ljava/lang/String;
Landroid/bluetooth/BluetoothMapClient;->VDBG:Z
-Landroid/bluetooth/BluetoothMasInstance$MessageType;
Landroid/bluetooth/BluetoothMasInstance$MessageType;-><init>()V
Landroid/bluetooth/BluetoothMasInstance$MessageType;->EMAIL:I
Landroid/bluetooth/BluetoothMasInstance$MessageType;->MMS:I
Landroid/bluetooth/BluetoothMasInstance$MessageType;->SMS_CDMA:I
Landroid/bluetooth/BluetoothMasInstance$MessageType;->SMS_GSM:I
-Landroid/bluetooth/BluetoothMasInstance;
Landroid/bluetooth/BluetoothMasInstance;-><init>(ILjava/lang/String;II)V
Landroid/bluetooth/BluetoothMasInstance;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/bluetooth/BluetoothMasInstance;->getChannel()I
@@ -11370,10 +10674,8 @@
Landroid/bluetooth/BluetoothMasInstance;->mMsgTypes:I
Landroid/bluetooth/BluetoothMasInstance;->mName:Ljava/lang/String;
Landroid/bluetooth/BluetoothMasInstance;->msgSupported(I)Z
-Landroid/bluetooth/BluetoothOutputStream;
Landroid/bluetooth/BluetoothOutputStream;-><init>(Landroid/bluetooth/BluetoothSocket;)V
Landroid/bluetooth/BluetoothOutputStream;->mSocket:Landroid/bluetooth/BluetoothSocket;
-Landroid/bluetooth/BluetoothPan;
Landroid/bluetooth/BluetoothPan;->ACTION_CONNECTION_STATE_CHANGED:Ljava/lang/String;
Landroid/bluetooth/BluetoothPan;->DBG:Z
Landroid/bluetooth/BluetoothPan;->EXTRA_LOCAL_ROLE:Ljava/lang/String;
@@ -11395,10 +10697,8 @@
Landroid/bluetooth/BluetoothPan;->REMOTE_PANU_ROLE:I
Landroid/bluetooth/BluetoothPan;->TAG:Ljava/lang/String;
Landroid/bluetooth/BluetoothPan;->VDBG:Z
-Landroid/bluetooth/BluetoothPbap$ServiceListener;
Landroid/bluetooth/BluetoothPbap$ServiceListener;->onServiceConnected(Landroid/bluetooth/BluetoothPbap;)V
Landroid/bluetooth/BluetoothPbap$ServiceListener;->onServiceDisconnected()V
-Landroid/bluetooth/BluetoothPbap;
Landroid/bluetooth/BluetoothPbap;-><init>(Landroid/content/Context;Landroid/bluetooth/BluetoothPbap$ServiceListener;)V
Landroid/bluetooth/BluetoothPbap;->ACTION_CONNECTION_STATE_CHANGED:Ljava/lang/String;
Landroid/bluetooth/BluetoothPbap;->close()V
@@ -11416,7 +10716,6 @@
Landroid/bluetooth/BluetoothPbap;->RESULT_FAILURE:I
Landroid/bluetooth/BluetoothPbap;->RESULT_SUCCESS:I
Landroid/bluetooth/BluetoothPbap;->TAG:Ljava/lang/String;
-Landroid/bluetooth/BluetoothPbapClient;
Landroid/bluetooth/BluetoothPbapClient;-><init>(Landroid/content/Context;Landroid/bluetooth/BluetoothProfile$ServiceListener;)V
Landroid/bluetooth/BluetoothPbapClient;->ACTION_CONNECTION_STATE_CHANGED:Ljava/lang/String;
Landroid/bluetooth/BluetoothPbapClient;->close()V
@@ -11452,7 +10751,6 @@
Landroid/bluetooth/BluetoothProfile;->OPP:I
Landroid/bluetooth/BluetoothProfile;->PBAP:I
Landroid/bluetooth/BluetoothProfile;->PBAP_CLIENT:I
-Landroid/bluetooth/BluetoothProtoEnums;
Landroid/bluetooth/BluetoothProtoEnums;-><init>()V
Landroid/bluetooth/BluetoothProtoEnums;->CONNECTION_STATE_CONNECTED:I
Landroid/bluetooth/BluetoothProtoEnums;->CONNECTION_STATE_CONNECTING:I
@@ -11468,7 +10766,6 @@
Landroid/bluetooth/BluetoothProtoEnums;->ENABLE_DISABLE_REASON_SYSTEM_BOOT:I
Landroid/bluetooth/BluetoothProtoEnums;->ENABLE_DISABLE_REASON_UNSPECIFIED:I
Landroid/bluetooth/BluetoothProtoEnums;->ENABLE_DISABLE_REASON_USER_SWITCH:I
-Landroid/bluetooth/BluetoothSap;
Landroid/bluetooth/BluetoothSap;-><init>(Landroid/content/Context;Landroid/bluetooth/BluetoothProfile$ServiceListener;)V
Landroid/bluetooth/BluetoothSap;->ACTION_CONNECTION_STATE_CHANGED:Ljava/lang/String;
Landroid/bluetooth/BluetoothSap;->close()V
@@ -11507,8 +10804,6 @@
Landroid/bluetooth/BluetoothServerSocket;->setCloseHandler(Landroid/os/Handler;I)V
Landroid/bluetooth/BluetoothServerSocket;->setServiceName(Ljava/lang/String;)V
Landroid/bluetooth/BluetoothServerSocket;->TAG:Ljava/lang/String;
-Landroid/bluetooth/BluetoothSocket$SocketState;
-Landroid/bluetooth/BluetoothSocket$SocketState;-><init>()V
Landroid/bluetooth/BluetoothSocket$SocketState;->CLOSED:Landroid/bluetooth/BluetoothSocket$SocketState;
Landroid/bluetooth/BluetoothSocket$SocketState;->CONNECTED:Landroid/bluetooth/BluetoothSocket$SocketState;
Landroid/bluetooth/BluetoothSocket$SocketState;->INIT:Landroid/bluetooth/BluetoothSocket$SocketState;
@@ -11571,7 +10866,6 @@
Landroid/bluetooth/BluetoothSocket;->VDBG:Z
Landroid/bluetooth/BluetoothSocket;->waitSocketSignal(Ljava/io/InputStream;)Ljava/lang/String;
Landroid/bluetooth/BluetoothSocket;->write([BII)I
-Landroid/bluetooth/BluetoothUuid;
Landroid/bluetooth/BluetoothUuid;-><init>()V
Landroid/bluetooth/BluetoothUuid;->AudioSource:Landroid/os/ParcelUuid;
Landroid/bluetooth/BluetoothUuid;->AvrcpController:Landroid/os/ParcelUuid;
@@ -11607,7 +10901,6 @@
Landroid/bluetooth/BluetoothUuid;->UUID_BYTES_128_BIT:I
Landroid/bluetooth/BluetoothUuid;->UUID_BYTES_16_BIT:I
Landroid/bluetooth/BluetoothUuid;->UUID_BYTES_32_BIT:I
-Landroid/bluetooth/IBluetooth$Stub$Proxy;
Landroid/bluetooth/IBluetooth$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/bluetooth/IBluetooth$Stub$Proxy;->cancelBondProcess(Landroid/bluetooth/BluetoothDevice;)Z
Landroid/bluetooth/IBluetooth$Stub$Proxy;->cancelDiscovery()Z
@@ -11676,7 +10969,6 @@
Landroid/bluetooth/IBluetooth$Stub$Proxy;->setSimAccessPermission(Landroid/bluetooth/BluetoothDevice;I)Z
Landroid/bluetooth/IBluetooth$Stub$Proxy;->startDiscovery()Z
Landroid/bluetooth/IBluetooth$Stub$Proxy;->unregisterCallback(Landroid/bluetooth/IBluetoothCallback;)V
-Landroid/bluetooth/IBluetooth$Stub;
Landroid/bluetooth/IBluetooth$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/bluetooth/IBluetooth$Stub;->TRANSACTION_cancelBondProcess:I
Landroid/bluetooth/IBluetooth$Stub;->TRANSACTION_cancelDiscovery:I
@@ -11744,7 +11036,6 @@
Landroid/bluetooth/IBluetooth$Stub;->TRANSACTION_setSimAccessPermission:I
Landroid/bluetooth/IBluetooth$Stub;->TRANSACTION_startDiscovery:I
Landroid/bluetooth/IBluetooth$Stub;->TRANSACTION_unregisterCallback:I
-Landroid/bluetooth/IBluetooth;
Landroid/bluetooth/IBluetooth;->cancelBondProcess(Landroid/bluetooth/BluetoothDevice;)Z
Landroid/bluetooth/IBluetooth;->cancelDiscovery()Z
Landroid/bluetooth/IBluetooth;->createBond(Landroid/bluetooth/BluetoothDevice;I)Z
@@ -11807,7 +11098,6 @@
Landroid/bluetooth/IBluetooth;->setSimAccessPermission(Landroid/bluetooth/BluetoothDevice;I)Z
Landroid/bluetooth/IBluetooth;->startDiscovery()Z
Landroid/bluetooth/IBluetooth;->unregisterCallback(Landroid/bluetooth/IBluetoothCallback;)V
-Landroid/bluetooth/IBluetoothA2dp$Stub$Proxy;
Landroid/bluetooth/IBluetoothA2dp$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/bluetooth/IBluetoothA2dp$Stub$Proxy;->connect(Landroid/bluetooth/BluetoothDevice;)Z
Landroid/bluetooth/IBluetoothA2dp$Stub$Proxy;->disableOptionalCodecs(Landroid/bluetooth/BluetoothDevice;)V
@@ -11830,7 +11120,6 @@
Landroid/bluetooth/IBluetoothA2dp$Stub$Proxy;->setOptionalCodecsEnabled(Landroid/bluetooth/BluetoothDevice;I)V
Landroid/bluetooth/IBluetoothA2dp$Stub$Proxy;->setPriority(Landroid/bluetooth/BluetoothDevice;I)Z
Landroid/bluetooth/IBluetoothA2dp$Stub$Proxy;->supportsOptionalCodecs(Landroid/bluetooth/BluetoothDevice;)I
-Landroid/bluetooth/IBluetoothA2dp$Stub;
Landroid/bluetooth/IBluetoothA2dp$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/bluetooth/IBluetoothA2dp$Stub;->TRANSACTION_connect:I
Landroid/bluetooth/IBluetoothA2dp$Stub;->TRANSACTION_disableOptionalCodecs:I
@@ -11851,7 +11140,6 @@
Landroid/bluetooth/IBluetoothA2dp$Stub;->TRANSACTION_setOptionalCodecsEnabled:I
Landroid/bluetooth/IBluetoothA2dp$Stub;->TRANSACTION_setPriority:I
Landroid/bluetooth/IBluetoothA2dp$Stub;->TRANSACTION_supportsOptionalCodecs:I
-Landroid/bluetooth/IBluetoothA2dp;
Landroid/bluetooth/IBluetoothA2dp;->disableOptionalCodecs(Landroid/bluetooth/BluetoothDevice;)V
Landroid/bluetooth/IBluetoothA2dp;->enableOptionalCodecs(Landroid/bluetooth/BluetoothDevice;)V
Landroid/bluetooth/IBluetoothA2dp;->getActiveDevice()Landroid/bluetooth/BluetoothDevice;
@@ -11865,7 +11153,6 @@
Landroid/bluetooth/IBluetoothA2dp;->setOptionalCodecsEnabled(Landroid/bluetooth/BluetoothDevice;I)V
Landroid/bluetooth/IBluetoothA2dp;->setPriority(Landroid/bluetooth/BluetoothDevice;I)Z
Landroid/bluetooth/IBluetoothA2dp;->supportsOptionalCodecs(Landroid/bluetooth/BluetoothDevice;)I
-Landroid/bluetooth/IBluetoothA2dpSink$Stub$Proxy;
Landroid/bluetooth/IBluetoothA2dpSink$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/bluetooth/IBluetoothA2dpSink$Stub$Proxy;->connect(Landroid/bluetooth/BluetoothDevice;)Z
Landroid/bluetooth/IBluetoothA2dpSink$Stub$Proxy;->disconnect(Landroid/bluetooth/BluetoothDevice;)Z
@@ -11878,7 +11165,6 @@
Landroid/bluetooth/IBluetoothA2dpSink$Stub$Proxy;->isA2dpPlaying(Landroid/bluetooth/BluetoothDevice;)Z
Landroid/bluetooth/IBluetoothA2dpSink$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/bluetooth/IBluetoothA2dpSink$Stub$Proxy;->setPriority(Landroid/bluetooth/BluetoothDevice;I)Z
-Landroid/bluetooth/IBluetoothA2dpSink$Stub;
Landroid/bluetooth/IBluetoothA2dpSink$Stub;-><init>()V
Landroid/bluetooth/IBluetoothA2dpSink$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothA2dpSink;
Landroid/bluetooth/IBluetoothA2dpSink$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -11891,7 +11177,6 @@
Landroid/bluetooth/IBluetoothA2dpSink$Stub;->TRANSACTION_getPriority:I
Landroid/bluetooth/IBluetoothA2dpSink$Stub;->TRANSACTION_isA2dpPlaying:I
Landroid/bluetooth/IBluetoothA2dpSink$Stub;->TRANSACTION_setPriority:I
-Landroid/bluetooth/IBluetoothA2dpSink;
Landroid/bluetooth/IBluetoothA2dpSink;->connect(Landroid/bluetooth/BluetoothDevice;)Z
Landroid/bluetooth/IBluetoothA2dpSink;->disconnect(Landroid/bluetooth/BluetoothDevice;)Z
Landroid/bluetooth/IBluetoothA2dpSink;->getAudioConfig(Landroid/bluetooth/BluetoothDevice;)Landroid/bluetooth/BluetoothAudioConfig;
@@ -11901,7 +11186,6 @@
Landroid/bluetooth/IBluetoothA2dpSink;->getPriority(Landroid/bluetooth/BluetoothDevice;)I
Landroid/bluetooth/IBluetoothA2dpSink;->isA2dpPlaying(Landroid/bluetooth/BluetoothDevice;)Z
Landroid/bluetooth/IBluetoothA2dpSink;->setPriority(Landroid/bluetooth/BluetoothDevice;I)Z
-Landroid/bluetooth/IBluetoothAvrcpController$Stub$Proxy;
Landroid/bluetooth/IBluetoothAvrcpController$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/bluetooth/IBluetoothAvrcpController$Stub$Proxy;->getConnectedDevices()Ljava/util/List;
Landroid/bluetooth/IBluetoothAvrcpController$Stub$Proxy;->getConnectionState(Landroid/bluetooth/BluetoothDevice;)I
@@ -11911,7 +11195,6 @@
Landroid/bluetooth/IBluetoothAvrcpController$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/bluetooth/IBluetoothAvrcpController$Stub$Proxy;->sendGroupNavigationCmd(Landroid/bluetooth/BluetoothDevice;II)V
Landroid/bluetooth/IBluetoothAvrcpController$Stub$Proxy;->setPlayerApplicationSetting(Landroid/bluetooth/BluetoothAvrcpPlayerSettings;)Z
-Landroid/bluetooth/IBluetoothAvrcpController$Stub;
Landroid/bluetooth/IBluetoothAvrcpController$Stub;-><init>()V
Landroid/bluetooth/IBluetoothAvrcpController$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothAvrcpController;
Landroid/bluetooth/IBluetoothAvrcpController$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -11921,37 +11204,29 @@
Landroid/bluetooth/IBluetoothAvrcpController$Stub;->TRANSACTION_getPlayerSettings:I
Landroid/bluetooth/IBluetoothAvrcpController$Stub;->TRANSACTION_sendGroupNavigationCmd:I
Landroid/bluetooth/IBluetoothAvrcpController$Stub;->TRANSACTION_setPlayerApplicationSetting:I
-Landroid/bluetooth/IBluetoothAvrcpController;
Landroid/bluetooth/IBluetoothAvrcpController;->getConnectedDevices()Ljava/util/List;
Landroid/bluetooth/IBluetoothAvrcpController;->getConnectionState(Landroid/bluetooth/BluetoothDevice;)I
Landroid/bluetooth/IBluetoothAvrcpController;->getDevicesMatchingConnectionStates([I)Ljava/util/List;
Landroid/bluetooth/IBluetoothAvrcpController;->getPlayerSettings(Landroid/bluetooth/BluetoothDevice;)Landroid/bluetooth/BluetoothAvrcpPlayerSettings;
Landroid/bluetooth/IBluetoothAvrcpController;->sendGroupNavigationCmd(Landroid/bluetooth/BluetoothDevice;II)V
Landroid/bluetooth/IBluetoothAvrcpController;->setPlayerApplicationSetting(Landroid/bluetooth/BluetoothAvrcpPlayerSettings;)Z
-Landroid/bluetooth/IBluetoothAvrcpTarget$Stub$Proxy;
Landroid/bluetooth/IBluetoothAvrcpTarget$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/bluetooth/IBluetoothAvrcpTarget$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/bluetooth/IBluetoothAvrcpTarget$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/bluetooth/IBluetoothAvrcpTarget$Stub$Proxy;->sendVolumeChanged(I)V
-Landroid/bluetooth/IBluetoothAvrcpTarget$Stub;
Landroid/bluetooth/IBluetoothAvrcpTarget$Stub;-><init>()V
Landroid/bluetooth/IBluetoothAvrcpTarget$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothAvrcpTarget;
Landroid/bluetooth/IBluetoothAvrcpTarget$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/bluetooth/IBluetoothAvrcpTarget$Stub;->TRANSACTION_sendVolumeChanged:I
-Landroid/bluetooth/IBluetoothAvrcpTarget;
Landroid/bluetooth/IBluetoothAvrcpTarget;->sendVolumeChanged(I)V
-Landroid/bluetooth/IBluetoothCallback$Stub$Proxy;
Landroid/bluetooth/IBluetoothCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/bluetooth/IBluetoothCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/bluetooth/IBluetoothCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/bluetooth/IBluetoothCallback$Stub$Proxy;->onBluetoothStateChange(II)V
-Landroid/bluetooth/IBluetoothCallback$Stub;
Landroid/bluetooth/IBluetoothCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothCallback;
Landroid/bluetooth/IBluetoothCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/bluetooth/IBluetoothCallback$Stub;->TRANSACTION_onBluetoothStateChange:I
-Landroid/bluetooth/IBluetoothCallback;
Landroid/bluetooth/IBluetoothCallback;->onBluetoothStateChange(II)V
-Landroid/bluetooth/IBluetoothGatt$Stub$Proxy;
Landroid/bluetooth/IBluetoothGatt$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/bluetooth/IBluetoothGatt$Stub$Proxy;->addService(ILandroid/bluetooth/BluetoothGattService;)V
Landroid/bluetooth/IBluetoothGatt$Stub$Proxy;->beginReliableWrite(ILjava/lang/String;)V
@@ -12010,7 +11285,6 @@
Landroid/bluetooth/IBluetoothGatt$Stub$Proxy;->unregisterSync(Landroid/bluetooth/le/IPeriodicAdvertisingCallback;)V
Landroid/bluetooth/IBluetoothGatt$Stub$Proxy;->writeCharacteristic(ILjava/lang/String;III[B)V
Landroid/bluetooth/IBluetoothGatt$Stub$Proxy;->writeDescriptor(ILjava/lang/String;II[B)V
-Landroid/bluetooth/IBluetoothGatt$Stub;
Landroid/bluetooth/IBluetoothGatt$Stub;-><init>()V
Landroid/bluetooth/IBluetoothGatt$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothGatt;
Landroid/bluetooth/IBluetoothGatt$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -12069,7 +11343,6 @@
Landroid/bluetooth/IBluetoothGatt$Stub;->TRANSACTION_unregisterSync:I
Landroid/bluetooth/IBluetoothGatt$Stub;->TRANSACTION_writeCharacteristic:I
Landroid/bluetooth/IBluetoothGatt$Stub;->TRANSACTION_writeDescriptor:I
-Landroid/bluetooth/IBluetoothGatt;
Landroid/bluetooth/IBluetoothGatt;->addService(ILandroid/bluetooth/BluetoothGattService;)V
Landroid/bluetooth/IBluetoothGatt;->beginReliableWrite(ILjava/lang/String;)V
Landroid/bluetooth/IBluetoothGatt;->clearServices(I)V
@@ -12123,7 +11396,6 @@
Landroid/bluetooth/IBluetoothGatt;->unregisterSync(Landroid/bluetooth/le/IPeriodicAdvertisingCallback;)V
Landroid/bluetooth/IBluetoothGatt;->writeCharacteristic(ILjava/lang/String;III[B)V
Landroid/bluetooth/IBluetoothGatt;->writeDescriptor(ILjava/lang/String;II[B)V
-Landroid/bluetooth/IBluetoothGattCallback$Stub$Proxy;
Landroid/bluetooth/IBluetoothGattCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/bluetooth/IBluetoothGattCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/bluetooth/IBluetoothGattCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -12141,7 +11413,6 @@
Landroid/bluetooth/IBluetoothGattCallback$Stub$Proxy;->onPhyUpdate(Ljava/lang/String;III)V
Landroid/bluetooth/IBluetoothGattCallback$Stub$Proxy;->onReadRemoteRssi(Ljava/lang/String;II)V
Landroid/bluetooth/IBluetoothGattCallback$Stub$Proxy;->onSearchComplete(Ljava/lang/String;Ljava/util/List;I)V
-Landroid/bluetooth/IBluetoothGattCallback$Stub;
Landroid/bluetooth/IBluetoothGattCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/bluetooth/IBluetoothGattCallback$Stub;->TRANSACTION_onCharacteristicRead:I
Landroid/bluetooth/IBluetoothGattCallback$Stub;->TRANSACTION_onCharacteristicWrite:I
@@ -12157,7 +11428,6 @@
Landroid/bluetooth/IBluetoothGattCallback$Stub;->TRANSACTION_onPhyUpdate:I
Landroid/bluetooth/IBluetoothGattCallback$Stub;->TRANSACTION_onReadRemoteRssi:I
Landroid/bluetooth/IBluetoothGattCallback$Stub;->TRANSACTION_onSearchComplete:I
-Landroid/bluetooth/IBluetoothGattCallback;
Landroid/bluetooth/IBluetoothGattCallback;->onCharacteristicRead(Ljava/lang/String;II[B)V
Landroid/bluetooth/IBluetoothGattCallback;->onCharacteristicWrite(Ljava/lang/String;II)V
Landroid/bluetooth/IBluetoothGattCallback;->onClientConnectionState(IIZLjava/lang/String;)V
@@ -12172,7 +11442,6 @@
Landroid/bluetooth/IBluetoothGattCallback;->onPhyUpdate(Ljava/lang/String;III)V
Landroid/bluetooth/IBluetoothGattCallback;->onReadRemoteRssi(Ljava/lang/String;II)V
Landroid/bluetooth/IBluetoothGattCallback;->onSearchComplete(Ljava/lang/String;Ljava/util/List;I)V
-Landroid/bluetooth/IBluetoothGattServerCallback$Stub$Proxy;
Landroid/bluetooth/IBluetoothGattServerCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/bluetooth/IBluetoothGattServerCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/bluetooth/IBluetoothGattServerCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -12189,7 +11458,6 @@
Landroid/bluetooth/IBluetoothGattServerCallback$Stub$Proxy;->onServerConnectionState(IIZLjava/lang/String;)V
Landroid/bluetooth/IBluetoothGattServerCallback$Stub$Proxy;->onServerRegistered(II)V
Landroid/bluetooth/IBluetoothGattServerCallback$Stub$Proxy;->onServiceAdded(ILandroid/bluetooth/BluetoothGattService;)V
-Landroid/bluetooth/IBluetoothGattServerCallback$Stub;
Landroid/bluetooth/IBluetoothGattServerCallback$Stub;-><init>()V
Landroid/bluetooth/IBluetoothGattServerCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothGattServerCallback;
Landroid/bluetooth/IBluetoothGattServerCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -12206,7 +11474,6 @@
Landroid/bluetooth/IBluetoothGattServerCallback$Stub;->TRANSACTION_onServerConnectionState:I
Landroid/bluetooth/IBluetoothGattServerCallback$Stub;->TRANSACTION_onServerRegistered:I
Landroid/bluetooth/IBluetoothGattServerCallback$Stub;->TRANSACTION_onServiceAdded:I
-Landroid/bluetooth/IBluetoothGattServerCallback;
Landroid/bluetooth/IBluetoothGattServerCallback;->onCharacteristicReadRequest(Ljava/lang/String;IIZI)V
Landroid/bluetooth/IBluetoothGattServerCallback;->onCharacteristicWriteRequest(Ljava/lang/String;IIIZZI[B)V
Landroid/bluetooth/IBluetoothGattServerCallback;->onConnectionUpdated(Ljava/lang/String;IIII)V
@@ -12220,7 +11487,6 @@
Landroid/bluetooth/IBluetoothGattServerCallback;->onServerConnectionState(IIZLjava/lang/String;)V
Landroid/bluetooth/IBluetoothGattServerCallback;->onServerRegistered(II)V
Landroid/bluetooth/IBluetoothGattServerCallback;->onServiceAdded(ILandroid/bluetooth/BluetoothGattService;)V
-Landroid/bluetooth/IBluetoothHeadset$Stub$Proxy;
Landroid/bluetooth/IBluetoothHeadset$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/bluetooth/IBluetoothHeadset$Stub$Proxy;->clccResponse(IIIIZLjava/lang/String;I)V
Landroid/bluetooth/IBluetoothHeadset$Stub$Proxy;->connect(Landroid/bluetooth/BluetoothDevice;)Z
@@ -12249,7 +11515,6 @@
Landroid/bluetooth/IBluetoothHeadset$Stub$Proxy;->startVoiceRecognition(Landroid/bluetooth/BluetoothDevice;)Z
Landroid/bluetooth/IBluetoothHeadset$Stub$Proxy;->stopScoUsingVirtualVoiceCall()Z
Landroid/bluetooth/IBluetoothHeadset$Stub$Proxy;->stopVoiceRecognition(Landroid/bluetooth/BluetoothDevice;)Z
-Landroid/bluetooth/IBluetoothHeadset$Stub;
Landroid/bluetooth/IBluetoothHeadset$Stub;-><init>()V
Landroid/bluetooth/IBluetoothHeadset$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/bluetooth/IBluetoothHeadset$Stub;->TRANSACTION_clccResponse:I
@@ -12277,7 +11542,6 @@
Landroid/bluetooth/IBluetoothHeadset$Stub;->TRANSACTION_startVoiceRecognition:I
Landroid/bluetooth/IBluetoothHeadset$Stub;->TRANSACTION_stopScoUsingVirtualVoiceCall:I
Landroid/bluetooth/IBluetoothHeadset$Stub;->TRANSACTION_stopVoiceRecognition:I
-Landroid/bluetooth/IBluetoothHeadset;
Landroid/bluetooth/IBluetoothHeadset;->clccResponse(IIIIZLjava/lang/String;I)V
Landroid/bluetooth/IBluetoothHeadset;->connectAudio()Z
Landroid/bluetooth/IBluetoothHeadset;->disconnectAudio()Z
@@ -12297,7 +11561,6 @@
Landroid/bluetooth/IBluetoothHeadset;->startVoiceRecognition(Landroid/bluetooth/BluetoothDevice;)Z
Landroid/bluetooth/IBluetoothHeadset;->stopScoUsingVirtualVoiceCall()Z
Landroid/bluetooth/IBluetoothHeadset;->stopVoiceRecognition(Landroid/bluetooth/BluetoothDevice;)Z
-Landroid/bluetooth/IBluetoothHeadsetClient$Stub$Proxy;
Landroid/bluetooth/IBluetoothHeadsetClient$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/bluetooth/IBluetoothHeadsetClient$Stub$Proxy;->acceptCall(Landroid/bluetooth/BluetoothDevice;I)Z
Landroid/bluetooth/IBluetoothHeadsetClient$Stub$Proxy;->connect(Landroid/bluetooth/BluetoothDevice;)Z
@@ -12327,7 +11590,6 @@
Landroid/bluetooth/IBluetoothHeadsetClient$Stub$Proxy;->startVoiceRecognition(Landroid/bluetooth/BluetoothDevice;)Z
Landroid/bluetooth/IBluetoothHeadsetClient$Stub$Proxy;->stopVoiceRecognition(Landroid/bluetooth/BluetoothDevice;)Z
Landroid/bluetooth/IBluetoothHeadsetClient$Stub$Proxy;->terminateCall(Landroid/bluetooth/BluetoothDevice;Landroid/bluetooth/BluetoothHeadsetClientCall;)Z
-Landroid/bluetooth/IBluetoothHeadsetClient$Stub;
Landroid/bluetooth/IBluetoothHeadsetClient$Stub;-><init>()V
Landroid/bluetooth/IBluetoothHeadsetClient$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothHeadsetClient;
Landroid/bluetooth/IBluetoothHeadsetClient$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -12357,7 +11619,6 @@
Landroid/bluetooth/IBluetoothHeadsetClient$Stub;->TRANSACTION_startVoiceRecognition:I
Landroid/bluetooth/IBluetoothHeadsetClient$Stub;->TRANSACTION_stopVoiceRecognition:I
Landroid/bluetooth/IBluetoothHeadsetClient$Stub;->TRANSACTION_terminateCall:I
-Landroid/bluetooth/IBluetoothHeadsetClient;
Landroid/bluetooth/IBluetoothHeadsetClient;->acceptCall(Landroid/bluetooth/BluetoothDevice;I)Z
Landroid/bluetooth/IBluetoothHeadsetClient;->connect(Landroid/bluetooth/BluetoothDevice;)Z
Landroid/bluetooth/IBluetoothHeadsetClient;->connectAudio(Landroid/bluetooth/BluetoothDevice;)Z
@@ -12384,7 +11645,6 @@
Landroid/bluetooth/IBluetoothHeadsetClient;->startVoiceRecognition(Landroid/bluetooth/BluetoothDevice;)Z
Landroid/bluetooth/IBluetoothHeadsetClient;->stopVoiceRecognition(Landroid/bluetooth/BluetoothDevice;)Z
Landroid/bluetooth/IBluetoothHeadsetClient;->terminateCall(Landroid/bluetooth/BluetoothDevice;Landroid/bluetooth/BluetoothHeadsetClientCall;)Z
-Landroid/bluetooth/IBluetoothHeadsetPhone$Stub$Proxy;
Landroid/bluetooth/IBluetoothHeadsetPhone$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/bluetooth/IBluetoothHeadsetPhone$Stub$Proxy;->answerCall()Z
Landroid/bluetooth/IBluetoothHeadsetPhone$Stub$Proxy;->cdmaSetSecondCallState(Z)V
@@ -12399,7 +11659,6 @@
Landroid/bluetooth/IBluetoothHeadsetPhone$Stub$Proxy;->queryPhoneState()Z
Landroid/bluetooth/IBluetoothHeadsetPhone$Stub$Proxy;->sendDtmf(I)Z
Landroid/bluetooth/IBluetoothHeadsetPhone$Stub$Proxy;->updateBtHandsfreeAfterRadioTechnologyChange()V
-Landroid/bluetooth/IBluetoothHeadsetPhone$Stub;
Landroid/bluetooth/IBluetoothHeadsetPhone$Stub;-><init>()V
Landroid/bluetooth/IBluetoothHeadsetPhone$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothHeadsetPhone;
Landroid/bluetooth/IBluetoothHeadsetPhone$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -12414,7 +11673,6 @@
Landroid/bluetooth/IBluetoothHeadsetPhone$Stub;->TRANSACTION_queryPhoneState:I
Landroid/bluetooth/IBluetoothHeadsetPhone$Stub;->TRANSACTION_sendDtmf:I
Landroid/bluetooth/IBluetoothHeadsetPhone$Stub;->TRANSACTION_updateBtHandsfreeAfterRadioTechnologyChange:I
-Landroid/bluetooth/IBluetoothHeadsetPhone;
Landroid/bluetooth/IBluetoothHeadsetPhone;->answerCall()Z
Landroid/bluetooth/IBluetoothHeadsetPhone;->cdmaSetSecondCallState(Z)V
Landroid/bluetooth/IBluetoothHeadsetPhone;->cdmaSwapSecondCallState()V
@@ -12426,7 +11684,6 @@
Landroid/bluetooth/IBluetoothHeadsetPhone;->queryPhoneState()Z
Landroid/bluetooth/IBluetoothHeadsetPhone;->sendDtmf(I)Z
Landroid/bluetooth/IBluetoothHeadsetPhone;->updateBtHandsfreeAfterRadioTechnologyChange()V
-Landroid/bluetooth/IBluetoothHealth$Stub$Proxy;
Landroid/bluetooth/IBluetoothHealth$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/bluetooth/IBluetoothHealth$Stub$Proxy;->connectChannelToSink(Landroid/bluetooth/BluetoothDevice;Landroid/bluetooth/BluetoothHealthAppConfiguration;I)Z
Landroid/bluetooth/IBluetoothHealth$Stub$Proxy;->connectChannelToSource(Landroid/bluetooth/BluetoothDevice;Landroid/bluetooth/BluetoothHealthAppConfiguration;)Z
@@ -12439,7 +11696,6 @@
Landroid/bluetooth/IBluetoothHealth$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/bluetooth/IBluetoothHealth$Stub$Proxy;->registerAppConfiguration(Landroid/bluetooth/BluetoothHealthAppConfiguration;Landroid/bluetooth/IBluetoothHealthCallback;)Z
Landroid/bluetooth/IBluetoothHealth$Stub$Proxy;->unregisterAppConfiguration(Landroid/bluetooth/BluetoothHealthAppConfiguration;)Z
-Landroid/bluetooth/IBluetoothHealth$Stub;
Landroid/bluetooth/IBluetoothHealth$Stub;-><init>()V
Landroid/bluetooth/IBluetoothHealth$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothHealth;
Landroid/bluetooth/IBluetoothHealth$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -12452,7 +11708,6 @@
Landroid/bluetooth/IBluetoothHealth$Stub;->TRANSACTION_getMainChannelFd:I
Landroid/bluetooth/IBluetoothHealth$Stub;->TRANSACTION_registerAppConfiguration:I
Landroid/bluetooth/IBluetoothHealth$Stub;->TRANSACTION_unregisterAppConfiguration:I
-Landroid/bluetooth/IBluetoothHealth;
Landroid/bluetooth/IBluetoothHealth;->connectChannelToSink(Landroid/bluetooth/BluetoothDevice;Landroid/bluetooth/BluetoothHealthAppConfiguration;I)Z
Landroid/bluetooth/IBluetoothHealth;->connectChannelToSource(Landroid/bluetooth/BluetoothDevice;Landroid/bluetooth/BluetoothHealthAppConfiguration;)Z
Landroid/bluetooth/IBluetoothHealth;->disconnectChannel(Landroid/bluetooth/BluetoothDevice;Landroid/bluetooth/BluetoothHealthAppConfiguration;I)Z
@@ -12462,22 +11717,18 @@
Landroid/bluetooth/IBluetoothHealth;->getMainChannelFd(Landroid/bluetooth/BluetoothDevice;Landroid/bluetooth/BluetoothHealthAppConfiguration;)Landroid/os/ParcelFileDescriptor;
Landroid/bluetooth/IBluetoothHealth;->registerAppConfiguration(Landroid/bluetooth/BluetoothHealthAppConfiguration;Landroid/bluetooth/IBluetoothHealthCallback;)Z
Landroid/bluetooth/IBluetoothHealth;->unregisterAppConfiguration(Landroid/bluetooth/BluetoothHealthAppConfiguration;)Z
-Landroid/bluetooth/IBluetoothHealthCallback$Stub$Proxy;
Landroid/bluetooth/IBluetoothHealthCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/bluetooth/IBluetoothHealthCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/bluetooth/IBluetoothHealthCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/bluetooth/IBluetoothHealthCallback$Stub$Proxy;->onHealthAppConfigurationStatusChange(Landroid/bluetooth/BluetoothHealthAppConfiguration;I)V
Landroid/bluetooth/IBluetoothHealthCallback$Stub$Proxy;->onHealthChannelStateChange(Landroid/bluetooth/BluetoothHealthAppConfiguration;Landroid/bluetooth/BluetoothDevice;IILandroid/os/ParcelFileDescriptor;I)V
-Landroid/bluetooth/IBluetoothHealthCallback$Stub;
Landroid/bluetooth/IBluetoothHealthCallback$Stub;-><init>()V
Landroid/bluetooth/IBluetoothHealthCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothHealthCallback;
Landroid/bluetooth/IBluetoothHealthCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/bluetooth/IBluetoothHealthCallback$Stub;->TRANSACTION_onHealthAppConfigurationStatusChange:I
Landroid/bluetooth/IBluetoothHealthCallback$Stub;->TRANSACTION_onHealthChannelStateChange:I
-Landroid/bluetooth/IBluetoothHealthCallback;
Landroid/bluetooth/IBluetoothHealthCallback;->onHealthAppConfigurationStatusChange(Landroid/bluetooth/BluetoothHealthAppConfiguration;I)V
Landroid/bluetooth/IBluetoothHealthCallback;->onHealthChannelStateChange(Landroid/bluetooth/BluetoothHealthAppConfiguration;Landroid/bluetooth/BluetoothDevice;IILandroid/os/ParcelFileDescriptor;I)V
-Landroid/bluetooth/IBluetoothHearingAid$Stub$Proxy;
Landroid/bluetooth/IBluetoothHearingAid$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/bluetooth/IBluetoothHearingAid$Stub$Proxy;->adjustVolume(I)V
Landroid/bluetooth/IBluetoothHearingAid$Stub$Proxy;->connect(Landroid/bluetooth/BluetoothDevice;)Z
@@ -12496,7 +11747,6 @@
Landroid/bluetooth/IBluetoothHearingAid$Stub$Proxy;->setActiveDevice(Landroid/bluetooth/BluetoothDevice;)Z
Landroid/bluetooth/IBluetoothHearingAid$Stub$Proxy;->setPriority(Landroid/bluetooth/BluetoothDevice;I)Z
Landroid/bluetooth/IBluetoothHearingAid$Stub$Proxy;->setVolume(I)V
-Landroid/bluetooth/IBluetoothHearingAid$Stub;
Landroid/bluetooth/IBluetoothHearingAid$Stub;-><init>()V
Landroid/bluetooth/IBluetoothHearingAid$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothHearingAid;
Landroid/bluetooth/IBluetoothHearingAid$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -12515,7 +11765,6 @@
Landroid/bluetooth/IBluetoothHearingAid$Stub;->TRANSACTION_setActiveDevice:I
Landroid/bluetooth/IBluetoothHearingAid$Stub;->TRANSACTION_setPriority:I
Landroid/bluetooth/IBluetoothHearingAid$Stub;->TRANSACTION_setVolume:I
-Landroid/bluetooth/IBluetoothHearingAid;
Landroid/bluetooth/IBluetoothHearingAid;->adjustVolume(I)V
Landroid/bluetooth/IBluetoothHearingAid;->connect(Landroid/bluetooth/BluetoothDevice;)Z
Landroid/bluetooth/IBluetoothHearingAid;->disconnect(Landroid/bluetooth/BluetoothDevice;)Z
@@ -12536,7 +11785,6 @@
Landroid/bluetooth/IBluetoothHearingAid;->setVolume(I)V
Landroid/bluetooth/IBluetoothHearingAid;->SIDE_LEFT:I
Landroid/bluetooth/IBluetoothHearingAid;->SIDE_RIGHT:I
-Landroid/bluetooth/IBluetoothHidDevice$Stub$Proxy;
Landroid/bluetooth/IBluetoothHidDevice$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/bluetooth/IBluetoothHidDevice$Stub$Proxy;->connect(Landroid/bluetooth/BluetoothDevice;)Z
Landroid/bluetooth/IBluetoothHidDevice$Stub$Proxy;->disconnect(Landroid/bluetooth/BluetoothDevice;)Z
@@ -12552,7 +11800,6 @@
Landroid/bluetooth/IBluetoothHidDevice$Stub$Proxy;->sendReport(Landroid/bluetooth/BluetoothDevice;I[B)Z
Landroid/bluetooth/IBluetoothHidDevice$Stub$Proxy;->unplug(Landroid/bluetooth/BluetoothDevice;)Z
Landroid/bluetooth/IBluetoothHidDevice$Stub$Proxy;->unregisterApp()Z
-Landroid/bluetooth/IBluetoothHidDevice$Stub;
Landroid/bluetooth/IBluetoothHidDevice$Stub;-><init>()V
Landroid/bluetooth/IBluetoothHidDevice$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothHidDevice;
Landroid/bluetooth/IBluetoothHidDevice$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -12568,7 +11815,6 @@
Landroid/bluetooth/IBluetoothHidDevice$Stub;->TRANSACTION_sendReport:I
Landroid/bluetooth/IBluetoothHidDevice$Stub;->TRANSACTION_unplug:I
Landroid/bluetooth/IBluetoothHidDevice$Stub;->TRANSACTION_unregisterApp:I
-Landroid/bluetooth/IBluetoothHidDevice;
Landroid/bluetooth/IBluetoothHidDevice;->connect(Landroid/bluetooth/BluetoothDevice;)Z
Landroid/bluetooth/IBluetoothHidDevice;->disconnect(Landroid/bluetooth/BluetoothDevice;)Z
Landroid/bluetooth/IBluetoothHidDevice;->getConnectedDevices()Ljava/util/List;
@@ -12581,7 +11827,6 @@
Landroid/bluetooth/IBluetoothHidDevice;->sendReport(Landroid/bluetooth/BluetoothDevice;I[B)Z
Landroid/bluetooth/IBluetoothHidDevice;->unplug(Landroid/bluetooth/BluetoothDevice;)Z
Landroid/bluetooth/IBluetoothHidDevice;->unregisterApp()Z
-Landroid/bluetooth/IBluetoothHidDeviceCallback$Stub$Proxy;
Landroid/bluetooth/IBluetoothHidDeviceCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/bluetooth/IBluetoothHidDeviceCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/bluetooth/IBluetoothHidDeviceCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -12592,7 +11837,6 @@
Landroid/bluetooth/IBluetoothHidDeviceCallback$Stub$Proxy;->onSetProtocol(Landroid/bluetooth/BluetoothDevice;B)V
Landroid/bluetooth/IBluetoothHidDeviceCallback$Stub$Proxy;->onSetReport(Landroid/bluetooth/BluetoothDevice;BB[B)V
Landroid/bluetooth/IBluetoothHidDeviceCallback$Stub$Proxy;->onVirtualCableUnplug(Landroid/bluetooth/BluetoothDevice;)V
-Landroid/bluetooth/IBluetoothHidDeviceCallback$Stub;
Landroid/bluetooth/IBluetoothHidDeviceCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothHidDeviceCallback;
Landroid/bluetooth/IBluetoothHidDeviceCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/bluetooth/IBluetoothHidDeviceCallback$Stub;->TRANSACTION_onAppStatusChanged:I
@@ -12602,7 +11846,6 @@
Landroid/bluetooth/IBluetoothHidDeviceCallback$Stub;->TRANSACTION_onSetProtocol:I
Landroid/bluetooth/IBluetoothHidDeviceCallback$Stub;->TRANSACTION_onSetReport:I
Landroid/bluetooth/IBluetoothHidDeviceCallback$Stub;->TRANSACTION_onVirtualCableUnplug:I
-Landroid/bluetooth/IBluetoothHidDeviceCallback;
Landroid/bluetooth/IBluetoothHidDeviceCallback;->onAppStatusChanged(Landroid/bluetooth/BluetoothDevice;Z)V
Landroid/bluetooth/IBluetoothHidDeviceCallback;->onConnectionStateChanged(Landroid/bluetooth/BluetoothDevice;I)V
Landroid/bluetooth/IBluetoothHidDeviceCallback;->onGetReport(Landroid/bluetooth/BluetoothDevice;BBI)V
@@ -12610,7 +11853,6 @@
Landroid/bluetooth/IBluetoothHidDeviceCallback;->onSetProtocol(Landroid/bluetooth/BluetoothDevice;B)V
Landroid/bluetooth/IBluetoothHidDeviceCallback;->onSetReport(Landroid/bluetooth/BluetoothDevice;BB[B)V
Landroid/bluetooth/IBluetoothHidDeviceCallback;->onVirtualCableUnplug(Landroid/bluetooth/BluetoothDevice;)V
-Landroid/bluetooth/IBluetoothHidHost$Stub$Proxy;
Landroid/bluetooth/IBluetoothHidHost$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/bluetooth/IBluetoothHidHost$Stub$Proxy;->connect(Landroid/bluetooth/BluetoothDevice;)Z
Landroid/bluetooth/IBluetoothHidHost$Stub$Proxy;->disconnect(Landroid/bluetooth/BluetoothDevice;)Z
@@ -12629,7 +11871,6 @@
Landroid/bluetooth/IBluetoothHidHost$Stub$Proxy;->setProtocolMode(Landroid/bluetooth/BluetoothDevice;I)Z
Landroid/bluetooth/IBluetoothHidHost$Stub$Proxy;->setReport(Landroid/bluetooth/BluetoothDevice;BLjava/lang/String;)Z
Landroid/bluetooth/IBluetoothHidHost$Stub$Proxy;->virtualUnplug(Landroid/bluetooth/BluetoothDevice;)Z
-Landroid/bluetooth/IBluetoothHidHost$Stub;
Landroid/bluetooth/IBluetoothHidHost$Stub;-><init>()V
Landroid/bluetooth/IBluetoothHidHost$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothHidHost;
Landroid/bluetooth/IBluetoothHidHost$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -12648,7 +11889,6 @@
Landroid/bluetooth/IBluetoothHidHost$Stub;->TRANSACTION_setProtocolMode:I
Landroid/bluetooth/IBluetoothHidHost$Stub;->TRANSACTION_setReport:I
Landroid/bluetooth/IBluetoothHidHost$Stub;->TRANSACTION_virtualUnplug:I
-Landroid/bluetooth/IBluetoothHidHost;
Landroid/bluetooth/IBluetoothHidHost;->connect(Landroid/bluetooth/BluetoothDevice;)Z
Landroid/bluetooth/IBluetoothHidHost;->disconnect(Landroid/bluetooth/BluetoothDevice;)Z
Landroid/bluetooth/IBluetoothHidHost;->getConnectedDevices()Ljava/util/List;
@@ -12664,7 +11904,6 @@
Landroid/bluetooth/IBluetoothHidHost;->setProtocolMode(Landroid/bluetooth/BluetoothDevice;I)Z
Landroid/bluetooth/IBluetoothHidHost;->setReport(Landroid/bluetooth/BluetoothDevice;BLjava/lang/String;)Z
Landroid/bluetooth/IBluetoothHidHost;->virtualUnplug(Landroid/bluetooth/BluetoothDevice;)Z
-Landroid/bluetooth/IBluetoothManager$Stub$Proxy;
Landroid/bluetooth/IBluetoothManager$Stub$Proxy;->bindBluetoothProfileService(ILandroid/bluetooth/IBluetoothProfileServiceConnection;)Z
Landroid/bluetooth/IBluetoothManager$Stub$Proxy;->disable(Ljava/lang/String;Z)Z
Landroid/bluetooth/IBluetoothManager$Stub$Proxy;->enable(Ljava/lang/String;)Z
@@ -12684,7 +11923,6 @@
Landroid/bluetooth/IBluetoothManager$Stub$Proxy;->unregisterAdapter(Landroid/bluetooth/IBluetoothManagerCallback;)V
Landroid/bluetooth/IBluetoothManager$Stub$Proxy;->unregisterStateChangeCallback(Landroid/bluetooth/IBluetoothStateChangeCallback;)V
Landroid/bluetooth/IBluetoothManager$Stub$Proxy;->updateBleAppCount(Landroid/os/IBinder;ZLjava/lang/String;)I
-Landroid/bluetooth/IBluetoothManager$Stub;
Landroid/bluetooth/IBluetoothManager$Stub;-><init>()V
Landroid/bluetooth/IBluetoothManager$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/bluetooth/IBluetoothManager$Stub;->TRANSACTION_bindBluetoothProfileService:I
@@ -12703,7 +11941,6 @@
Landroid/bluetooth/IBluetoothManager$Stub;->TRANSACTION_unregisterAdapter:I
Landroid/bluetooth/IBluetoothManager$Stub;->TRANSACTION_unregisterStateChangeCallback:I
Landroid/bluetooth/IBluetoothManager$Stub;->TRANSACTION_updateBleAppCount:I
-Landroid/bluetooth/IBluetoothManager;
Landroid/bluetooth/IBluetoothManager;->bindBluetoothProfileService(ILandroid/bluetooth/IBluetoothProfileServiceConnection;)Z
Landroid/bluetooth/IBluetoothManager;->disable(Ljava/lang/String;Z)Z
Landroid/bluetooth/IBluetoothManager;->enable(Ljava/lang/String;)Z
@@ -12718,24 +11955,20 @@
Landroid/bluetooth/IBluetoothManager;->unbindBluetoothProfileService(ILandroid/bluetooth/IBluetoothProfileServiceConnection;)V
Landroid/bluetooth/IBluetoothManager;->unregisterAdapter(Landroid/bluetooth/IBluetoothManagerCallback;)V
Landroid/bluetooth/IBluetoothManager;->updateBleAppCount(Landroid/os/IBinder;ZLjava/lang/String;)I
-Landroid/bluetooth/IBluetoothManagerCallback$Stub$Proxy;
Landroid/bluetooth/IBluetoothManagerCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/bluetooth/IBluetoothManagerCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/bluetooth/IBluetoothManagerCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/bluetooth/IBluetoothManagerCallback$Stub$Proxy;->onBluetoothServiceDown()V
Landroid/bluetooth/IBluetoothManagerCallback$Stub$Proxy;->onBluetoothServiceUp(Landroid/bluetooth/IBluetooth;)V
Landroid/bluetooth/IBluetoothManagerCallback$Stub$Proxy;->onBrEdrDown()V
-Landroid/bluetooth/IBluetoothManagerCallback$Stub;
Landroid/bluetooth/IBluetoothManagerCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothManagerCallback;
Landroid/bluetooth/IBluetoothManagerCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/bluetooth/IBluetoothManagerCallback$Stub;->TRANSACTION_onBluetoothServiceDown:I
Landroid/bluetooth/IBluetoothManagerCallback$Stub;->TRANSACTION_onBluetoothServiceUp:I
Landroid/bluetooth/IBluetoothManagerCallback$Stub;->TRANSACTION_onBrEdrDown:I
-Landroid/bluetooth/IBluetoothManagerCallback;
Landroid/bluetooth/IBluetoothManagerCallback;->onBluetoothServiceDown()V
Landroid/bluetooth/IBluetoothManagerCallback;->onBluetoothServiceUp(Landroid/bluetooth/IBluetooth;)V
Landroid/bluetooth/IBluetoothManagerCallback;->onBrEdrDown()V
-Landroid/bluetooth/IBluetoothMap$Stub$Proxy;
Landroid/bluetooth/IBluetoothMap$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/bluetooth/IBluetoothMap$Stub$Proxy;->connect(Landroid/bluetooth/BluetoothDevice;)Z
Landroid/bluetooth/IBluetoothMap$Stub$Proxy;->disconnect(Landroid/bluetooth/BluetoothDevice;)Z
@@ -12749,7 +11982,6 @@
Landroid/bluetooth/IBluetoothMap$Stub$Proxy;->isConnected(Landroid/bluetooth/BluetoothDevice;)Z
Landroid/bluetooth/IBluetoothMap$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/bluetooth/IBluetoothMap$Stub$Proxy;->setPriority(Landroid/bluetooth/BluetoothDevice;I)Z
-Landroid/bluetooth/IBluetoothMap$Stub;
Landroid/bluetooth/IBluetoothMap$Stub;-><init>()V
Landroid/bluetooth/IBluetoothMap$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothMap;
Landroid/bluetooth/IBluetoothMap$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -12763,7 +11995,6 @@
Landroid/bluetooth/IBluetoothMap$Stub;->TRANSACTION_getState:I
Landroid/bluetooth/IBluetoothMap$Stub;->TRANSACTION_isConnected:I
Landroid/bluetooth/IBluetoothMap$Stub;->TRANSACTION_setPriority:I
-Landroid/bluetooth/IBluetoothMap;
Landroid/bluetooth/IBluetoothMap;->connect(Landroid/bluetooth/BluetoothDevice;)Z
Landroid/bluetooth/IBluetoothMap;->disconnect(Landroid/bluetooth/BluetoothDevice;)Z
Landroid/bluetooth/IBluetoothMap;->getClient()Landroid/bluetooth/BluetoothDevice;
@@ -12774,7 +12005,6 @@
Landroid/bluetooth/IBluetoothMap;->getState()I
Landroid/bluetooth/IBluetoothMap;->isConnected(Landroid/bluetooth/BluetoothDevice;)Z
Landroid/bluetooth/IBluetoothMap;->setPriority(Landroid/bluetooth/BluetoothDevice;I)Z
-Landroid/bluetooth/IBluetoothMapClient$Stub$Proxy;
Landroid/bluetooth/IBluetoothMapClient$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/bluetooth/IBluetoothMapClient$Stub$Proxy;->connect(Landroid/bluetooth/BluetoothDevice;)Z
Landroid/bluetooth/IBluetoothMapClient$Stub$Proxy;->disconnect(Landroid/bluetooth/BluetoothDevice;)Z
@@ -12788,7 +12018,6 @@
Landroid/bluetooth/IBluetoothMapClient$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/bluetooth/IBluetoothMapClient$Stub$Proxy;->sendMessage(Landroid/bluetooth/BluetoothDevice;[Landroid/net/Uri;Ljava/lang/String;Landroid/app/PendingIntent;Landroid/app/PendingIntent;)Z
Landroid/bluetooth/IBluetoothMapClient$Stub$Proxy;->setPriority(Landroid/bluetooth/BluetoothDevice;I)Z
-Landroid/bluetooth/IBluetoothMapClient$Stub;
Landroid/bluetooth/IBluetoothMapClient$Stub;-><init>()V
Landroid/bluetooth/IBluetoothMapClient$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothMapClient;
Landroid/bluetooth/IBluetoothMapClient$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -12802,7 +12031,6 @@
Landroid/bluetooth/IBluetoothMapClient$Stub;->TRANSACTION_isConnected:I
Landroid/bluetooth/IBluetoothMapClient$Stub;->TRANSACTION_sendMessage:I
Landroid/bluetooth/IBluetoothMapClient$Stub;->TRANSACTION_setPriority:I
-Landroid/bluetooth/IBluetoothMapClient;
Landroid/bluetooth/IBluetoothMapClient;->connect(Landroid/bluetooth/BluetoothDevice;)Z
Landroid/bluetooth/IBluetoothMapClient;->disconnect(Landroid/bluetooth/BluetoothDevice;)Z
Landroid/bluetooth/IBluetoothMapClient;->getConnectedDevices()Ljava/util/List;
@@ -12813,7 +12041,6 @@
Landroid/bluetooth/IBluetoothMapClient;->isConnected(Landroid/bluetooth/BluetoothDevice;)Z
Landroid/bluetooth/IBluetoothMapClient;->sendMessage(Landroid/bluetooth/BluetoothDevice;[Landroid/net/Uri;Ljava/lang/String;Landroid/app/PendingIntent;Landroid/app/PendingIntent;)Z
Landroid/bluetooth/IBluetoothMapClient;->setPriority(Landroid/bluetooth/BluetoothDevice;I)Z
-Landroid/bluetooth/IBluetoothPan$Stub$Proxy;
Landroid/bluetooth/IBluetoothPan$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/bluetooth/IBluetoothPan$Stub$Proxy;->connect(Landroid/bluetooth/BluetoothDevice;)Z
Landroid/bluetooth/IBluetoothPan$Stub$Proxy;->disconnect(Landroid/bluetooth/BluetoothDevice;)Z
@@ -12824,7 +12051,6 @@
Landroid/bluetooth/IBluetoothPan$Stub$Proxy;->isTetheringOn()Z
Landroid/bluetooth/IBluetoothPan$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/bluetooth/IBluetoothPan$Stub$Proxy;->setBluetoothTethering(Z)V
-Landroid/bluetooth/IBluetoothPan$Stub;
Landroid/bluetooth/IBluetoothPan$Stub;-><init>()V
Landroid/bluetooth/IBluetoothPan$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothPan;
Landroid/bluetooth/IBluetoothPan$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -12835,7 +12061,6 @@
Landroid/bluetooth/IBluetoothPan$Stub;->TRANSACTION_getDevicesMatchingConnectionStates:I
Landroid/bluetooth/IBluetoothPan$Stub;->TRANSACTION_isTetheringOn:I
Landroid/bluetooth/IBluetoothPan$Stub;->TRANSACTION_setBluetoothTethering:I
-Landroid/bluetooth/IBluetoothPan;
Landroid/bluetooth/IBluetoothPan;->connect(Landroid/bluetooth/BluetoothDevice;)Z
Landroid/bluetooth/IBluetoothPan;->disconnect(Landroid/bluetooth/BluetoothDevice;)Z
Landroid/bluetooth/IBluetoothPan;->getConnectedDevices()Ljava/util/List;
@@ -12843,7 +12068,6 @@
Landroid/bluetooth/IBluetoothPan;->getDevicesMatchingConnectionStates([I)Ljava/util/List;
Landroid/bluetooth/IBluetoothPan;->isTetheringOn()Z
Landroid/bluetooth/IBluetoothPan;->setBluetoothTethering(Z)V
-Landroid/bluetooth/IBluetoothPbap$Stub$Proxy;
Landroid/bluetooth/IBluetoothPbap$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/bluetooth/IBluetoothPbap$Stub$Proxy;->disconnect(Landroid/bluetooth/BluetoothDevice;)V
Landroid/bluetooth/IBluetoothPbap$Stub$Proxy;->getConnectedDevices()Ljava/util/List;
@@ -12851,19 +12075,16 @@
Landroid/bluetooth/IBluetoothPbap$Stub$Proxy;->getDevicesMatchingConnectionStates([I)Ljava/util/List;
Landroid/bluetooth/IBluetoothPbap$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/bluetooth/IBluetoothPbap$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/bluetooth/IBluetoothPbap$Stub;
Landroid/bluetooth/IBluetoothPbap$Stub;-><init>()V
Landroid/bluetooth/IBluetoothPbap$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/bluetooth/IBluetoothPbap$Stub;->TRANSACTION_disconnect:I
Landroid/bluetooth/IBluetoothPbap$Stub;->TRANSACTION_getConnectedDevices:I
Landroid/bluetooth/IBluetoothPbap$Stub;->TRANSACTION_getConnectionState:I
Landroid/bluetooth/IBluetoothPbap$Stub;->TRANSACTION_getDevicesMatchingConnectionStates:I
-Landroid/bluetooth/IBluetoothPbap;
Landroid/bluetooth/IBluetoothPbap;->disconnect(Landroid/bluetooth/BluetoothDevice;)V
Landroid/bluetooth/IBluetoothPbap;->getConnectedDevices()Ljava/util/List;
Landroid/bluetooth/IBluetoothPbap;->getConnectionState(Landroid/bluetooth/BluetoothDevice;)I
Landroid/bluetooth/IBluetoothPbap;->getDevicesMatchingConnectionStates([I)Ljava/util/List;
-Landroid/bluetooth/IBluetoothPbapClient$Stub$Proxy;
Landroid/bluetooth/IBluetoothPbapClient$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/bluetooth/IBluetoothPbapClient$Stub$Proxy;->connect(Landroid/bluetooth/BluetoothDevice;)Z
Landroid/bluetooth/IBluetoothPbapClient$Stub$Proxy;->disconnect(Landroid/bluetooth/BluetoothDevice;)Z
@@ -12874,7 +12095,6 @@
Landroid/bluetooth/IBluetoothPbapClient$Stub$Proxy;->getPriority(Landroid/bluetooth/BluetoothDevice;)I
Landroid/bluetooth/IBluetoothPbapClient$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/bluetooth/IBluetoothPbapClient$Stub$Proxy;->setPriority(Landroid/bluetooth/BluetoothDevice;I)Z
-Landroid/bluetooth/IBluetoothPbapClient$Stub;
Landroid/bluetooth/IBluetoothPbapClient$Stub;-><init>()V
Landroid/bluetooth/IBluetoothPbapClient$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothPbapClient;
Landroid/bluetooth/IBluetoothPbapClient$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -12885,7 +12105,6 @@
Landroid/bluetooth/IBluetoothPbapClient$Stub;->TRANSACTION_getDevicesMatchingConnectionStates:I
Landroid/bluetooth/IBluetoothPbapClient$Stub;->TRANSACTION_getPriority:I
Landroid/bluetooth/IBluetoothPbapClient$Stub;->TRANSACTION_setPriority:I
-Landroid/bluetooth/IBluetoothPbapClient;
Landroid/bluetooth/IBluetoothPbapClient;->connect(Landroid/bluetooth/BluetoothDevice;)Z
Landroid/bluetooth/IBluetoothPbapClient;->disconnect(Landroid/bluetooth/BluetoothDevice;)Z
Landroid/bluetooth/IBluetoothPbapClient;->getConnectedDevices()Ljava/util/List;
@@ -12893,22 +12112,18 @@
Landroid/bluetooth/IBluetoothPbapClient;->getDevicesMatchingConnectionStates([I)Ljava/util/List;
Landroid/bluetooth/IBluetoothPbapClient;->getPriority(Landroid/bluetooth/BluetoothDevice;)I
Landroid/bluetooth/IBluetoothPbapClient;->setPriority(Landroid/bluetooth/BluetoothDevice;I)Z
-Landroid/bluetooth/IBluetoothProfileServiceConnection$Stub$Proxy;
Landroid/bluetooth/IBluetoothProfileServiceConnection$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/bluetooth/IBluetoothProfileServiceConnection$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/bluetooth/IBluetoothProfileServiceConnection$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/bluetooth/IBluetoothProfileServiceConnection$Stub$Proxy;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
Landroid/bluetooth/IBluetoothProfileServiceConnection$Stub$Proxy;->onServiceDisconnected(Landroid/content/ComponentName;)V
-Landroid/bluetooth/IBluetoothProfileServiceConnection$Stub;
Landroid/bluetooth/IBluetoothProfileServiceConnection$Stub;-><init>()V
Landroid/bluetooth/IBluetoothProfileServiceConnection$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothProfileServiceConnection;
Landroid/bluetooth/IBluetoothProfileServiceConnection$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/bluetooth/IBluetoothProfileServiceConnection$Stub;->TRANSACTION_onServiceConnected:I
Landroid/bluetooth/IBluetoothProfileServiceConnection$Stub;->TRANSACTION_onServiceDisconnected:I
-Landroid/bluetooth/IBluetoothProfileServiceConnection;
Landroid/bluetooth/IBluetoothProfileServiceConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
Landroid/bluetooth/IBluetoothProfileServiceConnection;->onServiceDisconnected(Landroid/content/ComponentName;)V
-Landroid/bluetooth/IBluetoothSap$Stub$Proxy;
Landroid/bluetooth/IBluetoothSap$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/bluetooth/IBluetoothSap$Stub$Proxy;->connect(Landroid/bluetooth/BluetoothDevice;)Z
Landroid/bluetooth/IBluetoothSap$Stub$Proxy;->disconnect(Landroid/bluetooth/BluetoothDevice;)Z
@@ -12922,7 +12137,6 @@
Landroid/bluetooth/IBluetoothSap$Stub$Proxy;->isConnected(Landroid/bluetooth/BluetoothDevice;)Z
Landroid/bluetooth/IBluetoothSap$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/bluetooth/IBluetoothSap$Stub$Proxy;->setPriority(Landroid/bluetooth/BluetoothDevice;I)Z
-Landroid/bluetooth/IBluetoothSap$Stub;
Landroid/bluetooth/IBluetoothSap$Stub;-><init>()V
Landroid/bluetooth/IBluetoothSap$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothSap;
Landroid/bluetooth/IBluetoothSap$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -12936,7 +12150,6 @@
Landroid/bluetooth/IBluetoothSap$Stub;->TRANSACTION_getState:I
Landroid/bluetooth/IBluetoothSap$Stub;->TRANSACTION_isConnected:I
Landroid/bluetooth/IBluetoothSap$Stub;->TRANSACTION_setPriority:I
-Landroid/bluetooth/IBluetoothSap;
Landroid/bluetooth/IBluetoothSap;->connect(Landroid/bluetooth/BluetoothDevice;)Z
Landroid/bluetooth/IBluetoothSap;->disconnect(Landroid/bluetooth/BluetoothDevice;)Z
Landroid/bluetooth/IBluetoothSap;->getClient()Landroid/bluetooth/BluetoothDevice;
@@ -12947,34 +12160,28 @@
Landroid/bluetooth/IBluetoothSap;->getState()I
Landroid/bluetooth/IBluetoothSap;->isConnected(Landroid/bluetooth/BluetoothDevice;)Z
Landroid/bluetooth/IBluetoothSap;->setPriority(Landroid/bluetooth/BluetoothDevice;I)Z
-Landroid/bluetooth/IBluetoothSocketManager$Stub$Proxy;
Landroid/bluetooth/IBluetoothSocketManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/bluetooth/IBluetoothSocketManager$Stub$Proxy;->connectSocket(Landroid/bluetooth/BluetoothDevice;ILandroid/os/ParcelUuid;II)Landroid/os/ParcelFileDescriptor;
Landroid/bluetooth/IBluetoothSocketManager$Stub$Proxy;->createSocketChannel(ILjava/lang/String;Landroid/os/ParcelUuid;II)Landroid/os/ParcelFileDescriptor;
Landroid/bluetooth/IBluetoothSocketManager$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/bluetooth/IBluetoothSocketManager$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/bluetooth/IBluetoothSocketManager$Stub$Proxy;->requestMaximumTxDataLength(Landroid/bluetooth/BluetoothDevice;)V
-Landroid/bluetooth/IBluetoothSocketManager$Stub;
Landroid/bluetooth/IBluetoothSocketManager$Stub;-><init>()V
Landroid/bluetooth/IBluetoothSocketManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothSocketManager;
Landroid/bluetooth/IBluetoothSocketManager$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/bluetooth/IBluetoothSocketManager$Stub;->TRANSACTION_connectSocket:I
Landroid/bluetooth/IBluetoothSocketManager$Stub;->TRANSACTION_createSocketChannel:I
Landroid/bluetooth/IBluetoothSocketManager$Stub;->TRANSACTION_requestMaximumTxDataLength:I
-Landroid/bluetooth/IBluetoothSocketManager;
Landroid/bluetooth/IBluetoothSocketManager;->connectSocket(Landroid/bluetooth/BluetoothDevice;ILandroid/os/ParcelUuid;II)Landroid/os/ParcelFileDescriptor;
Landroid/bluetooth/IBluetoothSocketManager;->createSocketChannel(ILjava/lang/String;Landroid/os/ParcelUuid;II)Landroid/os/ParcelFileDescriptor;
Landroid/bluetooth/IBluetoothSocketManager;->requestMaximumTxDataLength(Landroid/bluetooth/BluetoothDevice;)V
-Landroid/bluetooth/IBluetoothStateChangeCallback$Stub$Proxy;
Landroid/bluetooth/IBluetoothStateChangeCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/bluetooth/IBluetoothStateChangeCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/bluetooth/IBluetoothStateChangeCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/bluetooth/IBluetoothStateChangeCallback$Stub$Proxy;->onBluetoothStateChange(Z)V
-Landroid/bluetooth/IBluetoothStateChangeCallback$Stub;
Landroid/bluetooth/IBluetoothStateChangeCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothStateChangeCallback;
Landroid/bluetooth/IBluetoothStateChangeCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/bluetooth/IBluetoothStateChangeCallback$Stub;->TRANSACTION_onBluetoothStateChange:I
-Landroid/bluetooth/IBluetoothStateChangeCallback;
Landroid/bluetooth/IBluetoothStateChangeCallback;->onBluetoothStateChange(Z)V
Landroid/bluetooth/le/AdvertiseCallback;->ADVERTISE_SUCCESS:I
Landroid/bluetooth/le/AdvertiseData$Builder;->mIncludeDeviceName:Z
@@ -13049,8 +12256,6 @@
Landroid/bluetooth/le/BluetoothLeAdvertiser;->totalBytes(Landroid/bluetooth/le/AdvertiseData;Z)I
Landroid/bluetooth/le/BluetoothLeAdvertiser;->wrap(Landroid/bluetooth/le/AdvertisingSetCallback;Landroid/os/Handler;)Landroid/bluetooth/le/IAdvertisingSetCallback;
Landroid/bluetooth/le/BluetoothLeAdvertiser;->wrapOldCallback(Landroid/bluetooth/le/AdvertiseCallback;Landroid/bluetooth/le/AdvertiseSettings;)Landroid/bluetooth/le/AdvertisingSetCallback;
-Landroid/bluetooth/le/BluetoothLeScanner$BleScanCallbackWrapper;
-Landroid/bluetooth/le/BluetoothLeScanner$BleScanCallbackWrapper;-><init>(Landroid/bluetooth/IBluetoothGatt;Ljava/util/List;Landroid/bluetooth/le/ScanSettings;Landroid/os/WorkSource;Landroid/bluetooth/le/ScanCallback;Ljava/util/List;)V
Landroid/bluetooth/le/BluetoothLeScanner$BleScanCallbackWrapper;->flushPendingBatchResults()V
Landroid/bluetooth/le/BluetoothLeScanner$BleScanCallbackWrapper;->mBluetoothGatt:Landroid/bluetooth/IBluetoothGatt;
Landroid/bluetooth/le/BluetoothLeScanner$BleScanCallbackWrapper;->mFilters:Ljava/util/List;
@@ -13082,14 +12287,12 @@
Landroid/bluetooth/le/BluetoothLeScanner;->startScan(Ljava/util/List;Landroid/bluetooth/le/ScanSettings;Landroid/os/WorkSource;Landroid/bluetooth/le/ScanCallback;Landroid/app/PendingIntent;Ljava/util/List;)I
Landroid/bluetooth/le/BluetoothLeScanner;->TAG:Ljava/lang/String;
Landroid/bluetooth/le/BluetoothLeScanner;->VDBG:Z
-Landroid/bluetooth/le/BluetoothLeUtils;
Landroid/bluetooth/le/BluetoothLeUtils;-><init>()V
Landroid/bluetooth/le/BluetoothLeUtils;->checkAdapterStateOn(Landroid/bluetooth/BluetoothAdapter;)V
Landroid/bluetooth/le/BluetoothLeUtils;->equals(Landroid/util/SparseArray;Landroid/util/SparseArray;)Z
Landroid/bluetooth/le/BluetoothLeUtils;->equals(Ljava/util/Map;Ljava/util/Map;)Z
Landroid/bluetooth/le/BluetoothLeUtils;->toString(Landroid/util/SparseArray;)Ljava/lang/String;
Landroid/bluetooth/le/BluetoothLeUtils;->toString(Ljava/util/Map;)Ljava/lang/String;
-Landroid/bluetooth/le/IAdvertisingSetCallback$Stub$Proxy;
Landroid/bluetooth/le/IAdvertisingSetCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/bluetooth/le/IAdvertisingSetCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/bluetooth/le/IAdvertisingSetCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -13103,7 +12306,6 @@
Landroid/bluetooth/le/IAdvertisingSetCallback$Stub$Proxy;->onPeriodicAdvertisingEnabled(IZI)V
Landroid/bluetooth/le/IAdvertisingSetCallback$Stub$Proxy;->onPeriodicAdvertisingParametersUpdated(II)V
Landroid/bluetooth/le/IAdvertisingSetCallback$Stub$Proxy;->onScanResponseDataSet(II)V
-Landroid/bluetooth/le/IAdvertisingSetCallback$Stub;
Landroid/bluetooth/le/IAdvertisingSetCallback$Stub;-><init>()V
Landroid/bluetooth/le/IAdvertisingSetCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/le/IAdvertisingSetCallback;
Landroid/bluetooth/le/IAdvertisingSetCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -13117,7 +12319,6 @@
Landroid/bluetooth/le/IAdvertisingSetCallback$Stub;->TRANSACTION_onPeriodicAdvertisingEnabled:I
Landroid/bluetooth/le/IAdvertisingSetCallback$Stub;->TRANSACTION_onPeriodicAdvertisingParametersUpdated:I
Landroid/bluetooth/le/IAdvertisingSetCallback$Stub;->TRANSACTION_onScanResponseDataSet:I
-Landroid/bluetooth/le/IAdvertisingSetCallback;
Landroid/bluetooth/le/IAdvertisingSetCallback;->onAdvertisingDataSet(II)V
Landroid/bluetooth/le/IAdvertisingSetCallback;->onAdvertisingEnabled(IZI)V
Landroid/bluetooth/le/IAdvertisingSetCallback;->onAdvertisingParametersUpdated(III)V
@@ -13128,25 +12329,21 @@
Landroid/bluetooth/le/IAdvertisingSetCallback;->onPeriodicAdvertisingEnabled(IZI)V
Landroid/bluetooth/le/IAdvertisingSetCallback;->onPeriodicAdvertisingParametersUpdated(II)V
Landroid/bluetooth/le/IAdvertisingSetCallback;->onScanResponseDataSet(II)V
-Landroid/bluetooth/le/IPeriodicAdvertisingCallback$Stub$Proxy;
Landroid/bluetooth/le/IPeriodicAdvertisingCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/bluetooth/le/IPeriodicAdvertisingCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/bluetooth/le/IPeriodicAdvertisingCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/bluetooth/le/IPeriodicAdvertisingCallback$Stub$Proxy;->onPeriodicAdvertisingReport(Landroid/bluetooth/le/PeriodicAdvertisingReport;)V
Landroid/bluetooth/le/IPeriodicAdvertisingCallback$Stub$Proxy;->onSyncEstablished(ILandroid/bluetooth/BluetoothDevice;IIII)V
Landroid/bluetooth/le/IPeriodicAdvertisingCallback$Stub$Proxy;->onSyncLost(I)V
-Landroid/bluetooth/le/IPeriodicAdvertisingCallback$Stub;
Landroid/bluetooth/le/IPeriodicAdvertisingCallback$Stub;-><init>()V
Landroid/bluetooth/le/IPeriodicAdvertisingCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/le/IPeriodicAdvertisingCallback;
Landroid/bluetooth/le/IPeriodicAdvertisingCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/bluetooth/le/IPeriodicAdvertisingCallback$Stub;->TRANSACTION_onPeriodicAdvertisingReport:I
Landroid/bluetooth/le/IPeriodicAdvertisingCallback$Stub;->TRANSACTION_onSyncEstablished:I
Landroid/bluetooth/le/IPeriodicAdvertisingCallback$Stub;->TRANSACTION_onSyncLost:I
-Landroid/bluetooth/le/IPeriodicAdvertisingCallback;
Landroid/bluetooth/le/IPeriodicAdvertisingCallback;->onPeriodicAdvertisingReport(Landroid/bluetooth/le/PeriodicAdvertisingReport;)V
Landroid/bluetooth/le/IPeriodicAdvertisingCallback;->onSyncEstablished(ILandroid/bluetooth/BluetoothDevice;IIII)V
Landroid/bluetooth/le/IPeriodicAdvertisingCallback;->onSyncLost(I)V
-Landroid/bluetooth/le/IScannerCallback$Stub$Proxy;
Landroid/bluetooth/le/IScannerCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/bluetooth/le/IScannerCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/bluetooth/le/IScannerCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -13155,7 +12352,6 @@
Landroid/bluetooth/le/IScannerCallback$Stub$Proxy;->onScanManagerErrorCallback(I)V
Landroid/bluetooth/le/IScannerCallback$Stub$Proxy;->onScannerRegistered(II)V
Landroid/bluetooth/le/IScannerCallback$Stub$Proxy;->onScanResult(Landroid/bluetooth/le/ScanResult;)V
-Landroid/bluetooth/le/IScannerCallback$Stub;
Landroid/bluetooth/le/IScannerCallback$Stub;-><init>()V
Landroid/bluetooth/le/IScannerCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/le/IScannerCallback;
Landroid/bluetooth/le/IScannerCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -13164,13 +12360,11 @@
Landroid/bluetooth/le/IScannerCallback$Stub;->TRANSACTION_onScanManagerErrorCallback:I
Landroid/bluetooth/le/IScannerCallback$Stub;->TRANSACTION_onScannerRegistered:I
Landroid/bluetooth/le/IScannerCallback$Stub;->TRANSACTION_onScanResult:I
-Landroid/bluetooth/le/IScannerCallback;
Landroid/bluetooth/le/IScannerCallback;->onBatchScanResults(Ljava/util/List;)V
Landroid/bluetooth/le/IScannerCallback;->onFoundOrLost(ZLandroid/bluetooth/le/ScanResult;)V
Landroid/bluetooth/le/IScannerCallback;->onScanManagerErrorCallback(I)V
Landroid/bluetooth/le/IScannerCallback;->onScannerRegistered(II)V
Landroid/bluetooth/le/IScannerCallback;->onScanResult(Landroid/bluetooth/le/ScanResult;)V
-Landroid/bluetooth/le/PeriodicAdvertisingCallback;
Landroid/bluetooth/le/PeriodicAdvertisingCallback;-><init>()V
Landroid/bluetooth/le/PeriodicAdvertisingCallback;->onPeriodicAdvertisingReport(Landroid/bluetooth/le/PeriodicAdvertisingReport;)V
Landroid/bluetooth/le/PeriodicAdvertisingCallback;->onSyncEstablished(ILandroid/bluetooth/BluetoothDevice;IIII)V
@@ -13178,7 +12372,6 @@
Landroid/bluetooth/le/PeriodicAdvertisingCallback;->SYNC_NO_RESOURCES:I
Landroid/bluetooth/le/PeriodicAdvertisingCallback;->SYNC_NO_RESPONSE:I
Landroid/bluetooth/le/PeriodicAdvertisingCallback;->SYNC_SUCCESS:I
-Landroid/bluetooth/le/PeriodicAdvertisingManager;
Landroid/bluetooth/le/PeriodicAdvertisingManager;-><init>(Landroid/bluetooth/IBluetoothManager;)V
Landroid/bluetooth/le/PeriodicAdvertisingManager;->mBluetoothAdapter:Landroid/bluetooth/BluetoothAdapter;
Landroid/bluetooth/le/PeriodicAdvertisingManager;->mBluetoothManager:Landroid/bluetooth/IBluetoothManager;
@@ -13201,7 +12394,6 @@
Landroid/bluetooth/le/PeriodicAdvertisingParameters;->INTERVAL_MIN:I
Landroid/bluetooth/le/PeriodicAdvertisingParameters;->mIncludeTxPower:Z
Landroid/bluetooth/le/PeriodicAdvertisingParameters;->mInterval:I
-Landroid/bluetooth/le/PeriodicAdvertisingReport;
Landroid/bluetooth/le/PeriodicAdvertisingReport;-><init>(IIIILandroid/bluetooth/le/ScanRecord;)V
Landroid/bluetooth/le/PeriodicAdvertisingReport;-><init>(Landroid/os/Parcel;)V
Landroid/bluetooth/le/PeriodicAdvertisingReport;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -13316,7 +12508,6 @@
Landroid/bluetooth/le/ScanSettings;->mScanResultType:I
Landroid/bluetooth/le/TruncatedFilter;->mFilter:Landroid/bluetooth/le/ScanFilter;
Landroid/bluetooth/le/TruncatedFilter;->mStorageDescriptors:Ljava/util/List;
-Landroid/bluetooth/OobData;
Landroid/bluetooth/OobData;-><init>()V
Landroid/bluetooth/OobData;-><init>(Landroid/os/Parcel;)V
Landroid/bluetooth/OobData;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -13332,13 +12523,11 @@
Landroid/bluetooth/OobData;->setLeSecureConnectionsConfirmation([B)V
Landroid/bluetooth/OobData;->setLeSecureConnectionsRandom([B)V
Landroid/bluetooth/OobData;->setSecurityManagerTk([B)V
-Landroid/bluetooth/SdpMasRecord$MessageType;
Landroid/bluetooth/SdpMasRecord$MessageType;-><init>()V
Landroid/bluetooth/SdpMasRecord$MessageType;->EMAIL:I
Landroid/bluetooth/SdpMasRecord$MessageType;->MMS:I
Landroid/bluetooth/SdpMasRecord$MessageType;->SMS_CDMA:I
Landroid/bluetooth/SdpMasRecord$MessageType;->SMS_GSM:I
-Landroid/bluetooth/SdpMasRecord;
Landroid/bluetooth/SdpMasRecord;-><init>(IIIIIILjava/lang/String;)V
Landroid/bluetooth/SdpMasRecord;-><init>(Landroid/os/Parcel;)V
Landroid/bluetooth/SdpMasRecord;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -13357,7 +12546,6 @@
Landroid/bluetooth/SdpMasRecord;->msgSupported(I)Z
Landroid/bluetooth/SdpMasRecord;->mSupportedFeatures:I
Landroid/bluetooth/SdpMasRecord;->mSupportedMessageTypes:I
-Landroid/bluetooth/SdpMnsRecord;
Landroid/bluetooth/SdpMnsRecord;-><init>(IIIILjava/lang/String;)V
Landroid/bluetooth/SdpMnsRecord;-><init>(Landroid/os/Parcel;)V
Landroid/bluetooth/SdpMnsRecord;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -13371,7 +12559,6 @@
Landroid/bluetooth/SdpMnsRecord;->mRfcommChannelNumber:I
Landroid/bluetooth/SdpMnsRecord;->mServiceName:Ljava/lang/String;
Landroid/bluetooth/SdpMnsRecord;->mSupportedFeatures:I
-Landroid/bluetooth/SdpOppOpsRecord;
Landroid/bluetooth/SdpOppOpsRecord;-><init>(Landroid/os/Parcel;)V
Landroid/bluetooth/SdpOppOpsRecord;-><init>(Ljava/lang/String;III[B)V
Landroid/bluetooth/SdpOppOpsRecord;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -13385,7 +12572,6 @@
Landroid/bluetooth/SdpOppOpsRecord;->mProfileVersion:I
Landroid/bluetooth/SdpOppOpsRecord;->mRfcommChannel:I
Landroid/bluetooth/SdpOppOpsRecord;->mServiceName:Ljava/lang/String;
-Landroid/bluetooth/SdpPseRecord;
Landroid/bluetooth/SdpPseRecord;-><init>(IIIIILjava/lang/String;)V
Landroid/bluetooth/SdpPseRecord;-><init>(Landroid/os/Parcel;)V
Landroid/bluetooth/SdpPseRecord;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -13401,7 +12587,6 @@
Landroid/bluetooth/SdpPseRecord;->mServiceName:Ljava/lang/String;
Landroid/bluetooth/SdpPseRecord;->mSupportedFeatures:I
Landroid/bluetooth/SdpPseRecord;->mSupportedRepositories:I
-Landroid/bluetooth/SdpRecord;
Landroid/bluetooth/SdpRecord;-><init>(I[B)V
Landroid/bluetooth/SdpRecord;-><init>(Landroid/os/Parcel;)V
Landroid/bluetooth/SdpRecord;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -13409,7 +12594,6 @@
Landroid/bluetooth/SdpRecord;->getRawSize()I
Landroid/bluetooth/SdpRecord;->mRawData:[B
Landroid/bluetooth/SdpRecord;->mRawSize:I
-Landroid/bluetooth/SdpSapsRecord;
Landroid/bluetooth/SdpSapsRecord;-><init>(IILjava/lang/String;)V
Landroid/bluetooth/SdpSapsRecord;-><init>(Landroid/os/Parcel;)V
Landroid/bluetooth/SdpSapsRecord;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -13419,7 +12603,6 @@
Landroid/bluetooth/SdpSapsRecord;->mProfileVersion:I
Landroid/bluetooth/SdpSapsRecord;->mRfcommChannelNumber:I
Landroid/bluetooth/SdpSapsRecord;->mServiceName:Ljava/lang/String;
-Landroid/bluetooth/UidTraffic;
Landroid/bluetooth/UidTraffic;-><init>(I)V
Landroid/bluetooth/UidTraffic;-><init>(IJJ)V
Landroid/bluetooth/UidTraffic;-><init>(Landroid/os/Parcel;)V
@@ -13457,7 +12640,6 @@
Landroid/companion/BluetoothDeviceFilter;->mServiceUuidMasks:Ljava/util/List;
Landroid/companion/BluetoothDeviceFilter;->mServiceUuids:Ljava/util/List;
Landroid/companion/BluetoothDeviceFilter;->readUuids(Landroid/os/Parcel;)Ljava/util/List;
-Landroid/companion/BluetoothDeviceFilterUtils;
Landroid/companion/BluetoothDeviceFilterUtils;-><init>()V
Landroid/companion/BluetoothDeviceFilterUtils;->DEBUG:Z
Landroid/companion/BluetoothDeviceFilterUtils;->debugLogMatchResult(ZLandroid/bluetooth/BluetoothDevice;Ljava/lang/Object;)V
@@ -13512,8 +12694,6 @@
Landroid/companion/BluetoothLeDeviceFilter;->mRenameSuffix:Ljava/lang/String;
Landroid/companion/BluetoothLeDeviceFilter;->mScanFilter:Landroid/bluetooth/le/ScanFilter;
Landroid/companion/BluetoothLeDeviceFilter;->RENAME_PREFIX_LENGTH_LIMIT:I
-Landroid/companion/CompanionDeviceManager$CallbackProxy;
-Landroid/companion/CompanionDeviceManager$CallbackProxy;-><init>(Landroid/companion/AssociationRequest;Landroid/companion/CompanionDeviceManager$Callback;Landroid/os/Handler;)V
Landroid/companion/CompanionDeviceManager$CallbackProxy;->lockAndPost(Ljava/util/function/BiConsumer;Ljava/lang/Object;)V
Landroid/companion/CompanionDeviceManager$CallbackProxy;->mCallback:Landroid/companion/CompanionDeviceManager$Callback;
Landroid/companion/CompanionDeviceManager$CallbackProxy;->mHandler:Landroid/os/Handler;
@@ -13530,37 +12710,29 @@
Landroid/companion/CompanionDeviceManager;->LOG_TAG:Ljava/lang/String;
Landroid/companion/CompanionDeviceManager;->mContext:Landroid/content/Context;
Landroid/companion/CompanionDeviceManager;->mService:Landroid/companion/ICompanionDeviceManager;
-Landroid/companion/DeviceFilter$MediumType;
Landroid/companion/DeviceFilter;->getMediumType()I
Landroid/companion/DeviceFilter;->matches(Landroid/companion/DeviceFilter;Landroid/os/Parcelable;)Z
Landroid/companion/DeviceFilter;->MEDIUM_TYPE_BLUETOOTH:I
Landroid/companion/DeviceFilter;->MEDIUM_TYPE_BLUETOOTH_LE:I
Landroid/companion/DeviceFilter;->MEDIUM_TYPE_WIFI:I
-Landroid/companion/ICompanionDeviceDiscoveryService$Stub$Proxy;
Landroid/companion/ICompanionDeviceDiscoveryService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/companion/ICompanionDeviceDiscoveryService$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/companion/ICompanionDeviceDiscoveryService$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/companion/ICompanionDeviceDiscoveryService$Stub$Proxy;->startDiscovery(Landroid/companion/AssociationRequest;Ljava/lang/String;Landroid/companion/IFindDeviceCallback;Landroid/companion/ICompanionDeviceDiscoveryServiceCallback;)V
-Landroid/companion/ICompanionDeviceDiscoveryService$Stub;
Landroid/companion/ICompanionDeviceDiscoveryService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/companion/ICompanionDeviceDiscoveryService;
Landroid/companion/ICompanionDeviceDiscoveryService$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/companion/ICompanionDeviceDiscoveryService$Stub;->TRANSACTION_startDiscovery:I
-Landroid/companion/ICompanionDeviceDiscoveryService;
Landroid/companion/ICompanionDeviceDiscoveryService;->startDiscovery(Landroid/companion/AssociationRequest;Ljava/lang/String;Landroid/companion/IFindDeviceCallback;Landroid/companion/ICompanionDeviceDiscoveryServiceCallback;)V
-Landroid/companion/ICompanionDeviceDiscoveryServiceCallback$Stub$Proxy;
Landroid/companion/ICompanionDeviceDiscoveryServiceCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/companion/ICompanionDeviceDiscoveryServiceCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/companion/ICompanionDeviceDiscoveryServiceCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/companion/ICompanionDeviceDiscoveryServiceCallback$Stub$Proxy;->onDeviceSelected(Ljava/lang/String;ILjava/lang/String;)V
Landroid/companion/ICompanionDeviceDiscoveryServiceCallback$Stub$Proxy;->onDeviceSelectionCancel()V
-Landroid/companion/ICompanionDeviceDiscoveryServiceCallback$Stub;
Landroid/companion/ICompanionDeviceDiscoveryServiceCallback$Stub;-><init>()V
Landroid/companion/ICompanionDeviceDiscoveryServiceCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/companion/ICompanionDeviceDiscoveryServiceCallback;
Landroid/companion/ICompanionDeviceDiscoveryServiceCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/companion/ICompanionDeviceDiscoveryServiceCallback$Stub;->TRANSACTION_onDeviceSelected:I
Landroid/companion/ICompanionDeviceDiscoveryServiceCallback$Stub;->TRANSACTION_onDeviceSelectionCancel:I
-Landroid/companion/ICompanionDeviceDiscoveryServiceCallback;
-Landroid/companion/ICompanionDeviceManager$Stub$Proxy;
Landroid/companion/ICompanionDeviceManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/companion/ICompanionDeviceManager$Stub$Proxy;->associate(Landroid/companion/AssociationRequest;Landroid/companion/IFindDeviceCallback;Ljava/lang/String;)V
Landroid/companion/ICompanionDeviceManager$Stub$Proxy;->disassociate(Ljava/lang/String;Ljava/lang/String;)V
@@ -13570,7 +12742,6 @@
Landroid/companion/ICompanionDeviceManager$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/companion/ICompanionDeviceManager$Stub$Proxy;->requestNotificationAccess(Landroid/content/ComponentName;)Landroid/app/PendingIntent;
Landroid/companion/ICompanionDeviceManager$Stub$Proxy;->stopScan(Landroid/companion/AssociationRequest;Landroid/companion/IFindDeviceCallback;Ljava/lang/String;)V
-Landroid/companion/ICompanionDeviceManager$Stub;
Landroid/companion/ICompanionDeviceManager$Stub;-><init>()V
Landroid/companion/ICompanionDeviceManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/companion/ICompanionDeviceManager;
Landroid/companion/ICompanionDeviceManager$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -13580,26 +12751,22 @@
Landroid/companion/ICompanionDeviceManager$Stub;->TRANSACTION_hasNotificationAccess:I
Landroid/companion/ICompanionDeviceManager$Stub;->TRANSACTION_requestNotificationAccess:I
Landroid/companion/ICompanionDeviceManager$Stub;->TRANSACTION_stopScan:I
-Landroid/companion/ICompanionDeviceManager;
Landroid/companion/ICompanionDeviceManager;->associate(Landroid/companion/AssociationRequest;Landroid/companion/IFindDeviceCallback;Ljava/lang/String;)V
Landroid/companion/ICompanionDeviceManager;->disassociate(Ljava/lang/String;Ljava/lang/String;)V
Landroid/companion/ICompanionDeviceManager;->getAssociations(Ljava/lang/String;I)Ljava/util/List;
Landroid/companion/ICompanionDeviceManager;->hasNotificationAccess(Landroid/content/ComponentName;)Z
Landroid/companion/ICompanionDeviceManager;->requestNotificationAccess(Landroid/content/ComponentName;)Landroid/app/PendingIntent;
Landroid/companion/ICompanionDeviceManager;->stopScan(Landroid/companion/AssociationRequest;Landroid/companion/IFindDeviceCallback;Ljava/lang/String;)V
-Landroid/companion/IFindDeviceCallback$Stub$Proxy;
Landroid/companion/IFindDeviceCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/companion/IFindDeviceCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/companion/IFindDeviceCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/companion/IFindDeviceCallback$Stub$Proxy;->onFailure(Ljava/lang/CharSequence;)V
Landroid/companion/IFindDeviceCallback$Stub$Proxy;->onSuccess(Landroid/app/PendingIntent;)V
-Landroid/companion/IFindDeviceCallback$Stub;
Landroid/companion/IFindDeviceCallback$Stub;-><init>()V
Landroid/companion/IFindDeviceCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/companion/IFindDeviceCallback;
Landroid/companion/IFindDeviceCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/companion/IFindDeviceCallback$Stub;->TRANSACTION_onFailure:I
Landroid/companion/IFindDeviceCallback$Stub;->TRANSACTION_onSuccess:I
-Landroid/companion/IFindDeviceCallback;
Landroid/companion/IFindDeviceCallback;->onFailure(Ljava/lang/CharSequence;)V
Landroid/companion/WifiDeviceFilter$Builder;->mNamePattern:Ljava/util/regex/Pattern;
Landroid/companion/WifiDeviceFilter;-><init>(Landroid/os/Parcel;)V
@@ -13609,13 +12776,9 @@
Landroid/companion/WifiDeviceFilter;->getNamePattern()Ljava/util/regex/Pattern;
Landroid/companion/WifiDeviceFilter;->matches(Landroid/net/wifi/ScanResult;)Z
Landroid/companion/WifiDeviceFilter;->mNamePattern:Ljava/util/regex/Pattern;
-Landroid/content/AbstractThreadedSyncAdapter$ISyncAdapterImpl;
-Landroid/content/AbstractThreadedSyncAdapter$ISyncAdapterImpl;-><init>()V
Landroid/content/AbstractThreadedSyncAdapter$ISyncAdapterImpl;->cancelSync(Landroid/content/ISyncContext;)V
Landroid/content/AbstractThreadedSyncAdapter$ISyncAdapterImpl;->onUnsyncableAccount(Landroid/content/ISyncAdapterUnsyncableAccountCallback;)V
Landroid/content/AbstractThreadedSyncAdapter$ISyncAdapterImpl;->startSync(Landroid/content/ISyncContext;Ljava/lang/String;Landroid/accounts/Account;Landroid/os/Bundle;)V
-Landroid/content/AbstractThreadedSyncAdapter$SyncThread;
-Landroid/content/AbstractThreadedSyncAdapter$SyncThread;-><init>(Ljava/lang/String;Landroid/content/SyncContext;Ljava/lang/String;Landroid/accounts/Account;Landroid/os/Bundle;)V
Landroid/content/AbstractThreadedSyncAdapter$SyncThread;->isCanceled()Z
Landroid/content/AbstractThreadedSyncAdapter$SyncThread;->mAccount:Landroid/accounts/Account;
Landroid/content/AbstractThreadedSyncAdapter$SyncThread;->mAuthority:Ljava/lang/String;
@@ -13633,7 +12796,6 @@
Landroid/content/AbstractThreadedSyncAdapter;->mSyncThreads:Ljava/util/HashMap;
Landroid/content/AbstractThreadedSyncAdapter;->TAG:Ljava/lang/String;
Landroid/content/AbstractThreadedSyncAdapter;->toSyncKey(Landroid/accounts/Account;)Landroid/accounts/Account;
-Landroid/content/ActivityInfoProto;
Landroid/content/ActivityInfoProto;-><init>()V
Landroid/content/ActivityInfoProto;->SCREEN_ORIENTATION_BEHIND:I
Landroid/content/ActivityInfoProto;->SCREEN_ORIENTATION_FULL_SENSOR:I
@@ -13661,9 +12823,6 @@
Landroid/content/AsyncQueryHandler;->mWorkerThreadHandler:Landroid/os/Handler;
Landroid/content/AsyncQueryHandler;->sLooper:Landroid/os/Looper;
Landroid/content/AsyncQueryHandler;->TAG:Ljava/lang/String;
-Landroid/content/AsyncTaskLoader$LoadTask;
-Landroid/content/AsyncTaskLoader$LoadTask;-><init>()V
-Landroid/content/AsyncTaskLoader$LoadTask;->doInBackground([[Ljava/lang/Void;)Ljava/lang/Object;
Landroid/content/AsyncTaskLoader$LoadTask;->mDone:Ljava/util/concurrent/CountDownLatch;
Landroid/content/AsyncTaskLoader$LoadTask;->onCancelled(Ljava/lang/Object;)V
Landroid/content/AsyncTaskLoader$LoadTask;->onPostExecute(Ljava/lang/Object;)V
@@ -13680,7 +12839,6 @@
Landroid/content/AsyncTaskLoader;->mTask:Landroid/content/AsyncTaskLoader$LoadTask;
Landroid/content/AsyncTaskLoader;->mUpdateThrottle:J
Landroid/content/AsyncTaskLoader;->TAG:Ljava/lang/String;
-Landroid/content/AuthorityEntryProto;
Landroid/content/AuthorityEntryProto;-><init>()V
Landroid/content/AuthorityEntryProto;->HOST:J
Landroid/content/AuthorityEntryProto;->PORT:J
@@ -13730,18 +12888,13 @@
Landroid/content/ClipData;->toShortString(Ljava/lang/StringBuilder;)V
Landroid/content/ClipData;->toShortStringShortItems(Ljava/lang/StringBuilder;Z)V
Landroid/content/ClipData;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-Landroid/content/ClipDataProto$Icon;
-Landroid/content/ClipDataProto$Icon;-><init>()V
Landroid/content/ClipDataProto$Icon;->HEIGHT:J
Landroid/content/ClipDataProto$Icon;->WIDTH:J
-Landroid/content/ClipDataProto$Item;
-Landroid/content/ClipDataProto$Item;-><init>()V
Landroid/content/ClipDataProto$Item;->HTML_TEXT:J
Landroid/content/ClipDataProto$Item;->INTENT:J
Landroid/content/ClipDataProto$Item;->NOTHING:J
Landroid/content/ClipDataProto$Item;->TEXT:J
Landroid/content/ClipDataProto$Item;->URI:J
-Landroid/content/ClipDataProto;
Landroid/content/ClipDataProto;-><init>()V
Landroid/content/ClipDataProto;->DESCRIPTION:J
Landroid/content/ClipDataProto;->ICON:J
@@ -13759,14 +12912,11 @@
Landroid/content/ClipDescription;->toShortStringTypesOnly(Ljava/lang/StringBuilder;)Z
Landroid/content/ClipDescription;->validate()V
Landroid/content/ClipDescription;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-Landroid/content/ClipDescriptionProto;
Landroid/content/ClipDescriptionProto;-><init>()V
Landroid/content/ClipDescriptionProto;->EXTRAS:J
Landroid/content/ClipDescriptionProto;->LABEL:J
Landroid/content/ClipDescriptionProto;->MIME_TYPES:J
Landroid/content/ClipDescriptionProto;->TIMESTAMP_MS:J
-Landroid/content/ComponentCallbacks2$TrimMemoryLevel;
-Landroid/content/ComponentName$WithComponentName;
Landroid/content/ComponentName$WithComponentName;->getComponentName()Landroid/content/ComponentName;
Landroid/content/ComponentName;-><init>(Ljava/lang/String;Landroid/os/Parcel;)V
Landroid/content/ComponentName;->appendShortClassName(Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/lang/String;)V
@@ -13775,11 +12925,9 @@
Landroid/content/ComponentName;->mPackage:Ljava/lang/String;
Landroid/content/ComponentName;->printShortClassName(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;)V
Landroid/content/ComponentName;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-Landroid/content/ComponentNameProto;
Landroid/content/ComponentNameProto;-><init>()V
Landroid/content/ComponentNameProto;->CLASS_NAME:J
Landroid/content/ComponentNameProto;->PACKAGE_NAME:J
-Landroid/content/ConfigurationProto;
Landroid/content/ConfigurationProto;-><init>()V
Landroid/content/ConfigurationProto;->COLOR_MODE:J
Landroid/content/ConfigurationProto;->DENSITY_DPI:J
@@ -13800,11 +12948,8 @@
Landroid/content/ConfigurationProto;->TOUCHSCREEN:J
Landroid/content/ConfigurationProto;->UI_MODE:J
Landroid/content/ConfigurationProto;->WINDOW_CONFIGURATION:J
-Landroid/content/ContentInsertHandler;
Landroid/content/ContentInsertHandler;->insert(Landroid/content/ContentResolver;Ljava/io/InputStream;)V
Landroid/content/ContentInsertHandler;->insert(Landroid/content/ContentResolver;Ljava/lang/String;)V
-Landroid/content/ContentProvider$Transport;
-Landroid/content/ContentProvider$Transport;-><init>()V
Landroid/content/ContentProvider$Transport;->applyBatch(Ljava/lang/String;Ljava/util/ArrayList;)[Landroid/content/ContentProviderResult;
Landroid/content/ContentProvider$Transport;->bulkInsert(Ljava/lang/String;Landroid/net/Uri;[Landroid/content/ContentValues;)I
Landroid/content/ContentProvider$Transport;->call(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle;
@@ -13855,11 +13000,7 @@
Landroid/content/ContentProvider;->TAG:Ljava/lang/String;
Landroid/content/ContentProvider;->uriHasUserId(Landroid/net/Uri;)Z
Landroid/content/ContentProvider;->validateIncomingUri(Landroid/net/Uri;)V
-Landroid/content/ContentProviderClient$CursorWrapperInner;
-Landroid/content/ContentProviderClient$CursorWrapperInner;-><init>(Landroid/database/Cursor;)V
Landroid/content/ContentProviderClient$CursorWrapperInner;->mCloseGuard:Ldalvik/system/CloseGuard;
-Landroid/content/ContentProviderClient$NotRespondingRunnable;
-Landroid/content/ContentProviderClient$NotRespondingRunnable;-><init>()V
Landroid/content/ContentProviderClient;-><init>(Landroid/content/ContentResolver;Landroid/content/IContentProvider;Z)V
Landroid/content/ContentProviderClient;->afterRemote()V
Landroid/content/ContentProviderClient;->beforeRemote()V
@@ -13874,7 +13015,6 @@
Landroid/content/ContentProviderClient;->sAnrHandler:Landroid/os/Handler;
Landroid/content/ContentProviderClient;->setDetectNotResponding(J)V
Landroid/content/ContentProviderClient;->TAG:Ljava/lang/String;
-Landroid/content/ContentProviderNative;
Landroid/content/ContentProviderNative;-><init>()V
Landroid/content/ContentProviderNative;->getProviderName()Ljava/lang/String;
Landroid/content/ContentProviderOperation$Builder;-><init>(ILandroid/net/Uri;)V
@@ -13910,22 +13050,12 @@
Landroid/content/ContentQueryMap;->mKeyColumn:I
Landroid/content/ContentQueryMap;->mValues:Ljava/util/Map;
Landroid/content/ContentQueryMap;->readCursorIntoCache(Landroid/database/Cursor;)V
-Landroid/content/ContentResolver$CursorWrapperInner;
-Landroid/content/ContentResolver$CursorWrapperInner;-><init>(Landroid/database/Cursor;Landroid/content/IContentProvider;)V
Landroid/content/ContentResolver$CursorWrapperInner;->mCloseGuard:Ldalvik/system/CloseGuard;
Landroid/content/ContentResolver$CursorWrapperInner;->mContentProvider:Landroid/content/IContentProvider;
Landroid/content/ContentResolver$CursorWrapperInner;->mProviderReleased:Ljava/util/concurrent/atomic/AtomicBoolean;
-Landroid/content/ContentResolver$NotifyFlags;
-Landroid/content/ContentResolver$OpenResourceIdResult;
-Landroid/content/ContentResolver$OpenResourceIdResult;-><init>()V
-Landroid/content/ContentResolver$ParcelFileDescriptorInner;
-Landroid/content/ContentResolver$ParcelFileDescriptorInner;-><init>(Landroid/os/ParcelFileDescriptor;Landroid/content/IContentProvider;)V
Landroid/content/ContentResolver$ParcelFileDescriptorInner;->mContentProvider:Landroid/content/IContentProvider;
Landroid/content/ContentResolver$ParcelFileDescriptorInner;->mProviderReleased:Ljava/util/concurrent/atomic/AtomicBoolean;
Landroid/content/ContentResolver$ParcelFileDescriptorInner;->releaseResources()V
-Landroid/content/ContentResolver$QueryCollator;
-Landroid/content/ContentResolver$SortDirection;
-Landroid/content/ContentResolver$SyncExemption;
Landroid/content/ContentResolver;->acquireUnstableProvider(Landroid/net/Uri;)Landroid/content/IContentProvider;
Landroid/content/ContentResolver;->ACTION_SYNC_CONN_STATUS_CHANGED:Landroid/content/Intent;
Landroid/content/ContentResolver;->appNotRespondingViaProvider(Landroid/content/IContentProvider;)V
@@ -13979,13 +13109,6 @@
Landroid/content/ContentResolver;->SYNC_VIRTUAL_EXTRAS_EXEMPTION_FLAG:Ljava/lang/String;
Landroid/content/ContentResolver;->TAG:Ljava/lang/String;
Landroid/content/ContentValues;->isEmpty()Z
-Landroid/content/Context$BindServiceFlags;
-Landroid/content/Context$CreatePackageOptions;
-Landroid/content/Context$DatabaseMode;
-Landroid/content/Context$FileMode;
-Landroid/content/Context$PreferencesMode;
-Landroid/content/Context$RegisterReceiverFlags;
-Landroid/content/Context$ServiceName;
Landroid/content/Context;->assertRuntimeOverlayThemable()V
Landroid/content/Context;->AUTOFILL_MANAGER_SERVICE:Ljava/lang/String;
Landroid/content/Context;->BIND_ALLOW_INSTANT:I
@@ -14068,7 +13191,6 @@
Landroid/content/ContextWrapper;->startActivityForResult(Ljava/lang/String;Landroid/content/Intent;ILandroid/os/Bundle;)V
Landroid/content/ContextWrapper;->stopServiceAsUser(Landroid/content/Intent;Landroid/os/UserHandle;)Z
Landroid/content/ContextWrapper;->updateDisplay(I)V
-Landroid/content/CursorEntityIterator;
Landroid/content/CursorEntityIterator;->getEntityAndIncrementCursor(Landroid/database/Cursor;)Landroid/content/Entity;
Landroid/content/CursorEntityIterator;->mCursor:Landroid/database/Cursor;
Landroid/content/CursorEntityIterator;->mIsClosed:Z
@@ -14078,7 +13200,6 @@
Landroid/content/CursorLoader;->mSelectionArgs:[Ljava/lang/String;
Landroid/content/CursorLoader;->mSortOrder:Ljava/lang/String;
Landroid/content/CursorLoader;->mUri:Landroid/net/Uri;
-Landroid/content/DefaultDataHandler;
Landroid/content/DefaultDataHandler;-><init>()V
Landroid/content/DefaultDataHandler;->ARG:Ljava/lang/String;
Landroid/content/DefaultDataHandler;->COL:Ljava/lang/String;
@@ -14094,7 +13215,6 @@
Landroid/content/DefaultDataHandler;->ROW:Ljava/lang/String;
Landroid/content/DefaultDataHandler;->SELECT:Ljava/lang/String;
Landroid/content/DefaultDataHandler;->URI_STR:Ljava/lang/String;
-Landroid/content/DeviceConfigurationProto;
Landroid/content/DeviceConfigurationProto;-><init>()V
Landroid/content/DeviceConfigurationProto;->CPU_ARCHITECTURES:J
Landroid/content/DeviceConfigurationProto;->FEATURES:J
@@ -14108,7 +13228,6 @@
Landroid/content/DeviceConfigurationProto;->STABLE_SCREEN_HEIGHT_PX:J
Landroid/content/DeviceConfigurationProto;->STABLE_SCREEN_WIDTH_PX:J
Landroid/content/DeviceConfigurationProto;->TOTAL_RAM:J
-Landroid/content/EventLogTags;
Landroid/content/EventLogTags;-><init>()V
Landroid/content/EventLogTags;->BINDER_SAMPLE:I
Landroid/content/EventLogTags;->CONTENT_QUERY_SAMPLE:I
@@ -14116,11 +13235,9 @@
Landroid/content/EventLogTags;->writeBinderSample(Ljava/lang/String;IILjava/lang/String;I)V
Landroid/content/EventLogTags;->writeContentQuerySample(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;I)V
Landroid/content/EventLogTags;->writeContentUpdateSample(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;I)V
-Landroid/content/GlobalConfigurationProto;
Landroid/content/GlobalConfigurationProto;-><init>()V
Landroid/content/GlobalConfigurationProto;->DEVICE:J
Landroid/content/GlobalConfigurationProto;->RESOURCES:J
-Landroid/content/IClipboard$Stub$Proxy;
Landroid/content/IClipboard$Stub$Proxy;->addPrimaryClipChangedListener(Landroid/content/IOnPrimaryClipChangedListener;Ljava/lang/String;)V
Landroid/content/IClipboard$Stub$Proxy;->clearPrimaryClip(Ljava/lang/String;)V
Landroid/content/IClipboard$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
@@ -14131,7 +13248,6 @@
Landroid/content/IClipboard$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/content/IClipboard$Stub$Proxy;->removePrimaryClipChangedListener(Landroid/content/IOnPrimaryClipChangedListener;)V
Landroid/content/IClipboard$Stub$Proxy;->setPrimaryClip(Landroid/content/ClipData;Ljava/lang/String;)V
-Landroid/content/IClipboard$Stub;
Landroid/content/IClipboard$Stub;-><init>()V
Landroid/content/IClipboard$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/content/IClipboard$Stub;->TRANSACTION_addPrimaryClipChangedListener:I
@@ -14142,7 +13258,6 @@
Landroid/content/IClipboard$Stub;->TRANSACTION_hasPrimaryClip:I
Landroid/content/IClipboard$Stub;->TRANSACTION_removePrimaryClipChangedListener:I
Landroid/content/IClipboard$Stub;->TRANSACTION_setPrimaryClip:I
-Landroid/content/IClipboard;
Landroid/content/IClipboard;->addPrimaryClipChangedListener(Landroid/content/IOnPrimaryClipChangedListener;Ljava/lang/String;)V
Landroid/content/IClipboard;->clearPrimaryClip(Ljava/lang/String;)V
Landroid/content/IClipboard;->getPrimaryClip(Ljava/lang/String;)Landroid/content/ClipData;
@@ -14151,7 +13266,6 @@
Landroid/content/IClipboard;->hasPrimaryClip(Ljava/lang/String;)Z
Landroid/content/IClipboard;->removePrimaryClipChangedListener(Landroid/content/IOnPrimaryClipChangedListener;)V
Landroid/content/IClipboard;->setPrimaryClip(Landroid/content/ClipData;Ljava/lang/String;)V
-Landroid/content/IContentProvider;
Landroid/content/IContentProvider;->applyBatch(Ljava/lang/String;Ljava/util/ArrayList;)[Landroid/content/ContentProviderResult;
Landroid/content/IContentProvider;->APPLY_BATCH_TRANSACTION:I
Landroid/content/IContentProvider;->BULK_INSERT_TRANSACTION:I
@@ -14178,7 +13292,6 @@
Landroid/content/IContentProvider;->uncanonicalize(Ljava/lang/String;Landroid/net/Uri;)Landroid/net/Uri;
Landroid/content/IContentProvider;->UNCANONICALIZE_TRANSACTION:I
Landroid/content/IContentProvider;->UPDATE_TRANSACTION:I
-Landroid/content/IContentService$Stub$Proxy;
Landroid/content/IContentService$Stub$Proxy;->addPeriodicSync(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;J)V
Landroid/content/IContentService$Stub$Proxy;->addStatusChangeListener(ILandroid/content/ISyncStatusObserver;)V
Landroid/content/IContentService$Stub$Proxy;->cancelRequest(Landroid/content/SyncRequest;)V
@@ -14219,7 +13332,6 @@
Landroid/content/IContentService$Stub$Proxy;->sync(Landroid/content/SyncRequest;)V
Landroid/content/IContentService$Stub$Proxy;->syncAsUser(Landroid/content/SyncRequest;I)V
Landroid/content/IContentService$Stub$Proxy;->unregisterContentObserver(Landroid/database/IContentObserver;)V
-Landroid/content/IContentService$Stub;
Landroid/content/IContentService$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/content/IContentService$Stub;->TRANSACTION_addPeriodicSync:I
Landroid/content/IContentService$Stub;->TRANSACTION_addStatusChangeListener:I
@@ -14259,7 +13371,6 @@
Landroid/content/IContentService$Stub;->TRANSACTION_sync:I
Landroid/content/IContentService$Stub;->TRANSACTION_syncAsUser:I
Landroid/content/IContentService$Stub;->TRANSACTION_unregisterContentObserver:I
-Landroid/content/IContentService;
Landroid/content/IContentService;->addPeriodicSync(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;J)V
Landroid/content/IContentService;->addStatusChangeListener(ILandroid/content/ISyncStatusObserver;)V
Landroid/content/IContentService;->cancelRequest(Landroid/content/SyncRequest;)V
@@ -14292,34 +13403,20 @@
Landroid/content/IContentService;->sync(Landroid/content/SyncRequest;)V
Landroid/content/IContentService;->syncAsUser(Landroid/content/SyncRequest;I)V
Landroid/content/IContentService;->unregisterContentObserver(Landroid/database/IContentObserver;)V
-Landroid/content/IIntentReceiver$Stub$Proxy;
Landroid/content/IIntentReceiver$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/content/IIntentReceiver$Stub$Proxy;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V
-Landroid/content/IIntentReceiver$Stub;
Landroid/content/IIntentReceiver$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/content/IIntentReceiver$Stub;->TRANSACTION_performReceive:I
-Landroid/content/IIntentReceiver;
-Landroid/content/IIntentSender$Stub$Proxy;
Landroid/content/IIntentSender$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/content/IIntentSender$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/content/IIntentSender$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/content/IIntentSender$Stub$Proxy;->send(ILandroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Landroid/content/IIntentReceiver;Ljava/lang/String;Landroid/os/Bundle;)V
-Landroid/content/IIntentSender$Stub;
Landroid/content/IIntentSender$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/content/IIntentSender$Stub;->TRANSACTION_send:I
-Landroid/content/IIntentSender;
Landroid/content/IIntentSender;->send(ILandroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Landroid/content/IIntentReceiver;Ljava/lang/String;Landroid/os/Bundle;)V
-Landroid/content/Intent$AccessUriMode;
-Landroid/content/Intent$CommandOptionHandler;
Landroid/content/Intent$CommandOptionHandler;->handleOption(Ljava/lang/String;Landroid/os/ShellCommand;)Z
-Landroid/content/Intent$CopyMode;
-Landroid/content/Intent$FillInFlags;
Landroid/content/Intent$FilterComparison;->mHashCode:I
Landroid/content/Intent$FilterComparison;->mIntent:Landroid/content/Intent;
-Landroid/content/Intent$Flags;
-Landroid/content/Intent$GrantUriMode;
-Landroid/content/Intent$MutableFlags;
-Landroid/content/Intent$UriFlags;
Landroid/content/Intent;-><init>(Landroid/content/Intent;I)V
Landroid/content/Intent;-><init>(Landroid/os/Parcel;)V
Landroid/content/Intent;->ACTION_ADVANCED_SETTINGS_CHANGED:Ljava/lang/String;
@@ -14456,7 +13553,6 @@
Landroid/content/IntentFilter$AuthorityEntry;->mWild:Z
Landroid/content/IntentFilter$AuthorityEntry;->writeToParcel(Landroid/os/Parcel;)V
Landroid/content/IntentFilter$AuthorityEntry;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-Landroid/content/IntentFilter$InstantAppVisibility;
Landroid/content/IntentFilter;-><init>(Landroid/os/Parcel;)V
Landroid/content/IntentFilter;->ACTION_STR:Ljava/lang/String;
Landroid/content/IntentFilter;->addDataAuthority(Landroid/content/IntentFilter$AuthorityEntry;)V
@@ -14513,7 +13609,6 @@
Landroid/content/IntentFilter;->VISIBILITY_IMPLICIT:I
Landroid/content/IntentFilter;->VISIBILITY_NONE:I
Landroid/content/IntentFilter;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-Landroid/content/IntentFilterProto;
Landroid/content/IntentFilterProto;-><init>()V
Landroid/content/IntentFilterProto;->ACTIONS:J
Landroid/content/IntentFilterProto;->CATEGORIES:J
@@ -14525,7 +13620,6 @@
Landroid/content/IntentFilterProto;->GET_AUTO_VERIFY:J
Landroid/content/IntentFilterProto;->HAS_PARTIAL_TYPES:J
Landroid/content/IntentFilterProto;->PRIORITY:J
-Landroid/content/IntentProto;
Landroid/content/IntentProto;-><init>()V
Landroid/content/IntentProto;->ACTION:J
Landroid/content/IntentProto;->CATEGORIES:J
@@ -14544,7 +13638,6 @@
Landroid/content/IntentProto;->SELECTOR:J
Landroid/content/IntentProto;->SOURCE_BOUNDS:J
Landroid/content/IntentProto;->TYPE:J
-Landroid/content/IntentSender$FinishedDispatcher;
Landroid/content/IntentSender$FinishedDispatcher;-><init>(Landroid/content/IntentSender;Landroid/content/IntentSender$OnFinished;Landroid/os/Handler;)V
Landroid/content/IntentSender$FinishedDispatcher;->mHandler:Landroid/os/Handler;
Landroid/content/IntentSender$FinishedDispatcher;->mIntent:Landroid/content/Intent;
@@ -14558,17 +13651,13 @@
Landroid/content/IntentSender;-><init>(Landroid/os/IBinder;)V
Landroid/content/IntentSender;->getWhitelistToken()Landroid/os/IBinder;
Landroid/content/IntentSender;->mWhitelistToken:Landroid/os/IBinder;
-Landroid/content/IOnPrimaryClipChangedListener$Stub$Proxy;
Landroid/content/IOnPrimaryClipChangedListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/content/IOnPrimaryClipChangedListener$Stub$Proxy;->dispatchPrimaryClipChanged()V
Landroid/content/IOnPrimaryClipChangedListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/content/IOnPrimaryClipChangedListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/content/IOnPrimaryClipChangedListener$Stub;
Landroid/content/IOnPrimaryClipChangedListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/content/IOnPrimaryClipChangedListener$Stub;->TRANSACTION_dispatchPrimaryClipChanged:I
-Landroid/content/IOnPrimaryClipChangedListener;
Landroid/content/IOnPrimaryClipChangedListener;->dispatchPrimaryClipChanged()V
-Landroid/content/IRestrictionsManager$Stub$Proxy;
Landroid/content/IRestrictionsManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/content/IRestrictionsManager$Stub$Proxy;->createLocalApprovalIntent()Landroid/content/Intent;
Landroid/content/IRestrictionsManager$Stub$Proxy;->getApplicationRestrictions(Ljava/lang/String;)Landroid/os/Bundle;
@@ -14577,7 +13666,6 @@
Landroid/content/IRestrictionsManager$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/content/IRestrictionsManager$Stub$Proxy;->notifyPermissionResponse(Ljava/lang/String;Landroid/os/PersistableBundle;)V
Landroid/content/IRestrictionsManager$Stub$Proxy;->requestPermission(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/PersistableBundle;)V
-Landroid/content/IRestrictionsManager$Stub;
Landroid/content/IRestrictionsManager$Stub;-><init>()V
Landroid/content/IRestrictionsManager$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/content/IRestrictionsManager$Stub;->TRANSACTION_createLocalApprovalIntent:I
@@ -14585,65 +13673,49 @@
Landroid/content/IRestrictionsManager$Stub;->TRANSACTION_hasRestrictionsProvider:I
Landroid/content/IRestrictionsManager$Stub;->TRANSACTION_notifyPermissionResponse:I
Landroid/content/IRestrictionsManager$Stub;->TRANSACTION_requestPermission:I
-Landroid/content/IRestrictionsManager;
Landroid/content/IRestrictionsManager;->createLocalApprovalIntent()Landroid/content/Intent;
Landroid/content/IRestrictionsManager;->getApplicationRestrictions(Ljava/lang/String;)Landroid/os/Bundle;
Landroid/content/IRestrictionsManager;->hasRestrictionsProvider()Z
Landroid/content/IRestrictionsManager;->notifyPermissionResponse(Ljava/lang/String;Landroid/os/PersistableBundle;)V
Landroid/content/IRestrictionsManager;->requestPermission(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/PersistableBundle;)V
-Landroid/content/ISyncAdapter$Stub$Proxy;
Landroid/content/ISyncAdapter$Stub$Proxy;->cancelSync(Landroid/content/ISyncContext;)V
Landroid/content/ISyncAdapter$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/content/ISyncAdapter$Stub$Proxy;->onUnsyncableAccount(Landroid/content/ISyncAdapterUnsyncableAccountCallback;)V
Landroid/content/ISyncAdapter$Stub$Proxy;->startSync(Landroid/content/ISyncContext;Ljava/lang/String;Landroid/accounts/Account;Landroid/os/Bundle;)V
-Landroid/content/ISyncAdapter$Stub;
Landroid/content/ISyncAdapter$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/content/ISyncAdapter$Stub;->TRANSACTION_cancelSync:I
Landroid/content/ISyncAdapter$Stub;->TRANSACTION_onUnsyncableAccount:I
Landroid/content/ISyncAdapter$Stub;->TRANSACTION_startSync:I
-Landroid/content/ISyncAdapter;
-Landroid/content/ISyncAdapterUnsyncableAccountCallback$Stub$Proxy;
Landroid/content/ISyncAdapterUnsyncableAccountCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/content/ISyncAdapterUnsyncableAccountCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/content/ISyncAdapterUnsyncableAccountCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/content/ISyncAdapterUnsyncableAccountCallback$Stub$Proxy;->onUnsyncableAccountDone(Z)V
-Landroid/content/ISyncAdapterUnsyncableAccountCallback$Stub;
Landroid/content/ISyncAdapterUnsyncableAccountCallback$Stub;-><init>()V
Landroid/content/ISyncAdapterUnsyncableAccountCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/ISyncAdapterUnsyncableAccountCallback;
Landroid/content/ISyncAdapterUnsyncableAccountCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/content/ISyncAdapterUnsyncableAccountCallback$Stub;->TRANSACTION_onUnsyncableAccountDone:I
-Landroid/content/ISyncAdapterUnsyncableAccountCallback;
Landroid/content/ISyncAdapterUnsyncableAccountCallback;->onUnsyncableAccountDone(Z)V
-Landroid/content/ISyncContext$Stub$Proxy;
Landroid/content/ISyncContext$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/content/ISyncContext$Stub$Proxy;->onFinished(Landroid/content/SyncResult;)V
Landroid/content/ISyncContext$Stub$Proxy;->sendHeartbeat()V
-Landroid/content/ISyncContext$Stub;
Landroid/content/ISyncContext$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/content/ISyncContext$Stub;->TRANSACTION_onFinished:I
Landroid/content/ISyncContext$Stub;->TRANSACTION_sendHeartbeat:I
-Landroid/content/ISyncContext;
Landroid/content/ISyncContext;->onFinished(Landroid/content/SyncResult;)V
Landroid/content/ISyncContext;->sendHeartbeat()V
-Landroid/content/ISyncServiceAdapter$Stub$Proxy;
Landroid/content/ISyncServiceAdapter$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/content/ISyncServiceAdapter$Stub$Proxy;->cancelSync(Landroid/content/ISyncContext;)V
Landroid/content/ISyncServiceAdapter$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/content/ISyncServiceAdapter$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/content/ISyncServiceAdapter$Stub$Proxy;->startSync(Landroid/content/ISyncContext;Landroid/os/Bundle;)V
-Landroid/content/ISyncServiceAdapter$Stub;
Landroid/content/ISyncServiceAdapter$Stub;-><init>()V
Landroid/content/ISyncServiceAdapter$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/content/ISyncServiceAdapter$Stub;->TRANSACTION_cancelSync:I
Landroid/content/ISyncServiceAdapter$Stub;->TRANSACTION_startSync:I
-Landroid/content/ISyncServiceAdapter;
-Landroid/content/ISyncStatusObserver$Stub$Proxy;
Landroid/content/ISyncStatusObserver$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/content/ISyncStatusObserver$Stub$Proxy;->onStatusChanged(I)V
-Landroid/content/ISyncStatusObserver$Stub;
Landroid/content/ISyncStatusObserver$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/content/ISyncStatusObserver$Stub;->TRANSACTION_onStatusChanged:I
-Landroid/content/ISyncStatusObserver;
Landroid/content/Loader;->mAbandoned:Z
Landroid/content/Loader;->mContentChanged:Z
Landroid/content/Loader;->mContext:Landroid/content/Context;
@@ -14653,12 +13725,10 @@
Landroid/content/Loader;->mProcessingChange:Z
Landroid/content/Loader;->mReset:Z
Landroid/content/Loader;->mStarted:Z
-Landroid/content/LocaleProto;
Landroid/content/LocaleProto;-><init>()V
Landroid/content/LocaleProto;->COUNTRY:J
Landroid/content/LocaleProto;->LANGUAGE:J
Landroid/content/LocaleProto;->VARIANT:J
-Landroid/content/om/IOverlayManager$Stub$Proxy;
Landroid/content/om/IOverlayManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/content/om/IOverlayManager$Stub$Proxy;->getAllOverlays(I)Ljava/util/Map;
Landroid/content/om/IOverlayManager$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
@@ -14671,7 +13741,6 @@
Landroid/content/om/IOverlayManager$Stub$Proxy;->setHighestPriority(Ljava/lang/String;I)Z
Landroid/content/om/IOverlayManager$Stub$Proxy;->setLowestPriority(Ljava/lang/String;I)Z
Landroid/content/om/IOverlayManager$Stub$Proxy;->setPriority(Ljava/lang/String;Ljava/lang/String;I)Z
-Landroid/content/om/IOverlayManager$Stub;
Landroid/content/om/IOverlayManager$Stub;-><init>()V
Landroid/content/om/IOverlayManager$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/content/om/IOverlayManager$Stub;->TRANSACTION_getAllOverlays:I
@@ -14683,7 +13752,6 @@
Landroid/content/om/IOverlayManager$Stub;->TRANSACTION_setHighestPriority:I
Landroid/content/om/IOverlayManager$Stub;->TRANSACTION_setLowestPriority:I
Landroid/content/om/IOverlayManager$Stub;->TRANSACTION_setPriority:I
-Landroid/content/om/IOverlayManager;
Landroid/content/om/IOverlayManager;->getOverlayInfosForTarget(Ljava/lang/String;I)Ljava/util/List;
Landroid/content/om/IOverlayManager;->setEnabled(Ljava/lang/String;ZI)Z
Landroid/content/om/IOverlayManager;->setEnabledExclusive(Ljava/lang/String;ZI)Z
@@ -14691,8 +13759,6 @@
Landroid/content/om/IOverlayManager;->setHighestPriority(Ljava/lang/String;I)Z
Landroid/content/om/IOverlayManager;->setLowestPriority(Ljava/lang/String;I)Z
Landroid/content/om/IOverlayManager;->setPriority(Ljava/lang/String;Ljava/lang/String;I)Z
-Landroid/content/om/OverlayInfo$State;
-Landroid/content/om/OverlayInfo;
Landroid/content/om/OverlayInfo;-><init>(Landroid/content/om/OverlayInfo;I)V
Landroid/content/om/OverlayInfo;-><init>(Landroid/os/Parcel;)V
Landroid/content/om/OverlayInfo;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IIIZ)V
@@ -14719,8 +13785,6 @@
Landroid/content/PeriodicSync;-><init>(Landroid/os/Parcel;)V
Landroid/content/PeriodicSync;->flexTime:J
Landroid/content/PeriodicSync;->syncExtrasEquals(Landroid/os/Bundle;Landroid/os/Bundle;)Z
-Landroid/content/PermissionChecker$PermissionResult;
-Landroid/content/PermissionChecker;
Landroid/content/PermissionChecker;-><init>()V
Landroid/content/PermissionChecker;->checkCallingOrSelfPermission(Landroid/content/Context;Ljava/lang/String;)I
Landroid/content/PermissionChecker;->checkCallingPermission(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)I
@@ -14729,9 +13793,6 @@
Landroid/content/PermissionChecker;->PERMISSION_DENIED:I
Landroid/content/PermissionChecker;->PERMISSION_DENIED_APP_OP:I
Landroid/content/PermissionChecker;->PERMISSION_GRANTED:I
-Landroid/content/pm/ActivityInfo$ColorMode;
-Landroid/content/pm/ActivityInfo$Config;
-Landroid/content/pm/ActivityInfo$ScreenOrientation;
Landroid/content/pm/ActivityInfo$WindowLayout;-><init>(Landroid/os/Parcel;)V
Landroid/content/pm/ActivityInfo;-><init>(Landroid/os/Parcel;)V
Landroid/content/pm/ActivityInfo;->activityInfoConfigNativeToJava(I)I
@@ -14775,9 +13836,6 @@
Landroid/content/pm/ActivityInfo;->rotationAnimation:I
Landroid/content/pm/ActivityInfo;->screenOrientationToString(I)Ljava/lang/String;
Landroid/content/pm/ActivityInfo;->SCREEN_ORIENTATION_UNSET:I
-Landroid/content/pm/ApplicationInfo$ApplicationInfoPrivateFlags;
-Landroid/content/pm/ApplicationInfo$Category;
-Landroid/content/pm/ApplicationInfo$HiddenApiEnforcementPolicy;
Landroid/content/pm/ApplicationInfo;-><init>(Landroid/os/Parcel;)V
Landroid/content/pm/ApplicationInfo;->classLoaderName:Ljava/lang/String;
Landroid/content/pm/ApplicationInfo;->compileSdkVersion:I
@@ -14857,8 +13915,6 @@
Landroid/content/pm/ApplicationInfo;->splitDependencies:Landroid/util/SparseArray;
Landroid/content/pm/ApplicationInfo;->usesCompatibilityMode()Z
Landroid/content/pm/ApplicationInfo;->writeToProto(Landroid/util/proto/ProtoOutputStream;JI)V
-Landroid/content/pm/ApplicationInfoProto$Detail;
-Landroid/content/pm/ApplicationInfoProto$Detail;-><init>()V
Landroid/content/pm/ApplicationInfoProto$Detail;->CATEGORY:J
Landroid/content/pm/ApplicationInfoProto$Detail;->CLASS_NAME:J
Landroid/content/pm/ApplicationInfoProto$Detail;->COMPATIBLE_WIDTH_LIMIT_DP:J
@@ -14877,14 +13933,11 @@
Landroid/content/pm/ApplicationInfoProto$Detail;->SUPPORTS_RTL:J
Landroid/content/pm/ApplicationInfoProto$Detail;->TASK_AFFINITY:J
Landroid/content/pm/ApplicationInfoProto$Detail;->UI_OPTIONS:J
-Landroid/content/pm/ApplicationInfoProto$Version;
-Landroid/content/pm/ApplicationInfoProto$Version;-><init>()V
Landroid/content/pm/ApplicationInfoProto$Version;->ENABLED:J
Landroid/content/pm/ApplicationInfoProto$Version;->MIN_SDK_VERSION:J
Landroid/content/pm/ApplicationInfoProto$Version;->TARGET_SANDBOX_VERSION:J
Landroid/content/pm/ApplicationInfoProto$Version;->TARGET_SDK_VERSION:J
Landroid/content/pm/ApplicationInfoProto$Version;->VERSION_CODE:J
-Landroid/content/pm/ApplicationInfoProto;
Landroid/content/pm/ApplicationInfoProto;-><init>()V
Landroid/content/pm/ApplicationInfoProto;->CLASS_LOADER_NAME:J
Landroid/content/pm/ApplicationInfoProto;->DATA_DIR:J
@@ -14903,7 +13956,6 @@
Landroid/content/pm/ApplicationInfoProto;->THEME:J
Landroid/content/pm/ApplicationInfoProto;->UID:J
Landroid/content/pm/ApplicationInfoProto;->VERSION:J
-Landroid/content/pm/AppsQueryHelper;
Landroid/content/pm/AppsQueryHelper;-><init>()V
Landroid/content/pm/AppsQueryHelper;-><init>(Landroid/content/pm/IPackageManager;)V
Landroid/content/pm/AppsQueryHelper;->getAllApps(I)Ljava/util/List;
@@ -14917,7 +13969,6 @@
Landroid/content/pm/AppsQueryHelper;->queryApps(IZLandroid/os/UserHandle;)Ljava/util/List;
Landroid/content/pm/AppsQueryHelper;->queryIntentActivitiesAsUser(Landroid/content/Intent;I)Ljava/util/List;
Landroid/content/pm/AppsQueryHelper;->queryIntentServicesAsUser(Landroid/content/Intent;I)Ljava/util/List;
-Landroid/content/pm/AuxiliaryResolveInfo$AuxiliaryFilter;
Landroid/content/pm/AuxiliaryResolveInfo$AuxiliaryFilter;-><init>(Landroid/content/IntentFilter;Landroid/content/pm/InstantAppResolveInfo;Ljava/lang/String;Landroid/os/Bundle;)V
Landroid/content/pm/AuxiliaryResolveInfo$AuxiliaryFilter;-><init>(Landroid/content/pm/InstantAppResolveInfo;Ljava/lang/String;Landroid/os/Bundle;)V
Landroid/content/pm/AuxiliaryResolveInfo$AuxiliaryFilter;-><init>(Ljava/lang/String;JLjava/lang/String;)V
@@ -14926,7 +13977,6 @@
Landroid/content/pm/AuxiliaryResolveInfo$AuxiliaryFilter;->resolveInfo:Landroid/content/pm/InstantAppResolveInfo;
Landroid/content/pm/AuxiliaryResolveInfo$AuxiliaryFilter;->splitName:Ljava/lang/String;
Landroid/content/pm/AuxiliaryResolveInfo$AuxiliaryFilter;->versionCode:J
-Landroid/content/pm/AuxiliaryResolveInfo;
Landroid/content/pm/AuxiliaryResolveInfo;-><init>(Landroid/content/ComponentName;Landroid/content/Intent;Ljava/util/List;)V
Landroid/content/pm/AuxiliaryResolveInfo;-><init>(Landroid/content/ComponentName;Ljava/lang/String;JLjava/lang/String;)V
Landroid/content/pm/AuxiliaryResolveInfo;-><init>(Ljava/lang/String;ZLandroid/content/Intent;Ljava/util/List;)V
@@ -14935,7 +13985,6 @@
Landroid/content/pm/AuxiliaryResolveInfo;->installFailureActivity:Landroid/content/ComponentName;
Landroid/content/pm/AuxiliaryResolveInfo;->needsPhaseTwo:Z
Landroid/content/pm/AuxiliaryResolveInfo;->token:Ljava/lang/String;
-Landroid/content/pm/BaseParceledListSlice;
Landroid/content/pm/BaseParceledListSlice;-><init>(Landroid/os/Parcel;Ljava/lang/ClassLoader;)V
Landroid/content/pm/BaseParceledListSlice;-><init>(Ljava/util/List;)V
Landroid/content/pm/BaseParceledListSlice;->DEBUG:Z
@@ -14964,8 +14013,6 @@
Landroid/content/pm/CrossProfileApps;->mService:Landroid/content/pm/ICrossProfileApps;
Landroid/content/pm/CrossProfileApps;->mUserManager:Landroid/os/UserManager;
Landroid/content/pm/CrossProfileApps;->verifyCanAccessUser(Landroid/os/UserHandle;)V
-Landroid/content/pm/dex/ArtManager$ProfileType;
-Landroid/content/pm/dex/ArtManager$SnapshotRuntimeProfileCallbackDelegate;
Landroid/content/pm/dex/ArtManager$SnapshotRuntimeProfileCallbackDelegate;-><init>(Landroid/content/pm/dex/ArtManager$SnapshotRuntimeProfileCallback;Ljava/util/concurrent/Executor;)V
Landroid/content/pm/dex/ArtManager$SnapshotRuntimeProfileCallbackDelegate;->mCallback:Landroid/content/pm/dex/ArtManager$SnapshotRuntimeProfileCallback;
Landroid/content/pm/dex/ArtManager$SnapshotRuntimeProfileCallbackDelegate;->mExecutor:Ljava/util/concurrent/Executor;
@@ -14978,10 +14025,8 @@
Landroid/content/pm/dex/ArtManager;->mArtManager:Landroid/content/pm/dex/IArtManager;
Landroid/content/pm/dex/ArtManager;->mContext:Landroid/content/Context;
Landroid/content/pm/dex/ArtManager;->TAG:Ljava/lang/String;
-Landroid/content/pm/dex/ArtManagerInternal;
Landroid/content/pm/dex/ArtManagerInternal;-><init>()V
Landroid/content/pm/dex/ArtManagerInternal;->getPackageOptimizationInfo(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;)Landroid/content/pm/dex/PackageOptimizationInfo;
-Landroid/content/pm/dex/DexMetadataHelper;
Landroid/content/pm/dex/DexMetadataHelper;-><init>()V
Landroid/content/pm/dex/DexMetadataHelper;->buildDexMetadataPathForApk(Ljava/lang/String;)Ljava/lang/String;
Landroid/content/pm/dex/DexMetadataHelper;->buildDexMetadataPathForFile(Ljava/io/File;)Ljava/lang/String;
@@ -14996,44 +14041,36 @@
Landroid/content/pm/dex/DexMetadataHelper;->validateDexMetadataFile(Ljava/lang/String;)V
Landroid/content/pm/dex/DexMetadataHelper;->validateDexPaths([Ljava/lang/String;)V
Landroid/content/pm/dex/DexMetadataHelper;->validatePackageDexMetadata(Landroid/content/pm/PackageParser$Package;)V
-Landroid/content/pm/dex/IArtManager$Stub$Proxy;
Landroid/content/pm/dex/IArtManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/content/pm/dex/IArtManager$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/content/pm/dex/IArtManager$Stub$Proxy;->isRuntimeProfilingEnabled(ILjava/lang/String;)Z
Landroid/content/pm/dex/IArtManager$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/content/pm/dex/IArtManager$Stub$Proxy;->snapshotRuntimeProfile(ILjava/lang/String;Ljava/lang/String;Landroid/content/pm/dex/ISnapshotRuntimeProfileCallback;Ljava/lang/String;)V
-Landroid/content/pm/dex/IArtManager$Stub;
Landroid/content/pm/dex/IArtManager$Stub;-><init>()V
Landroid/content/pm/dex/IArtManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/dex/IArtManager;
Landroid/content/pm/dex/IArtManager$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/content/pm/dex/IArtManager$Stub;->TRANSACTION_isRuntimeProfilingEnabled:I
Landroid/content/pm/dex/IArtManager$Stub;->TRANSACTION_snapshotRuntimeProfile:I
-Landroid/content/pm/dex/IArtManager;
Landroid/content/pm/dex/IArtManager;->isRuntimeProfilingEnabled(ILjava/lang/String;)Z
Landroid/content/pm/dex/IArtManager;->snapshotRuntimeProfile(ILjava/lang/String;Ljava/lang/String;Landroid/content/pm/dex/ISnapshotRuntimeProfileCallback;Ljava/lang/String;)V
-Landroid/content/pm/dex/ISnapshotRuntimeProfileCallback$Stub$Proxy;
Landroid/content/pm/dex/ISnapshotRuntimeProfileCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/content/pm/dex/ISnapshotRuntimeProfileCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/content/pm/dex/ISnapshotRuntimeProfileCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/content/pm/dex/ISnapshotRuntimeProfileCallback$Stub$Proxy;->onError(I)V
Landroid/content/pm/dex/ISnapshotRuntimeProfileCallback$Stub$Proxy;->onSuccess(Landroid/os/ParcelFileDescriptor;)V
-Landroid/content/pm/dex/ISnapshotRuntimeProfileCallback$Stub;
Landroid/content/pm/dex/ISnapshotRuntimeProfileCallback$Stub;-><init>()V
Landroid/content/pm/dex/ISnapshotRuntimeProfileCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/dex/ISnapshotRuntimeProfileCallback;
Landroid/content/pm/dex/ISnapshotRuntimeProfileCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/content/pm/dex/ISnapshotRuntimeProfileCallback$Stub;->TRANSACTION_onError:I
Landroid/content/pm/dex/ISnapshotRuntimeProfileCallback$Stub;->TRANSACTION_onSuccess:I
-Landroid/content/pm/dex/ISnapshotRuntimeProfileCallback;
Landroid/content/pm/dex/ISnapshotRuntimeProfileCallback;->onError(I)V
Landroid/content/pm/dex/ISnapshotRuntimeProfileCallback;->onSuccess(Landroid/os/ParcelFileDescriptor;)V
-Landroid/content/pm/dex/PackageOptimizationInfo;
Landroid/content/pm/dex/PackageOptimizationInfo;-><init>(II)V
Landroid/content/pm/dex/PackageOptimizationInfo;->createWithNoInfo()Landroid/content/pm/dex/PackageOptimizationInfo;
Landroid/content/pm/dex/PackageOptimizationInfo;->getCompilationFilter()I
Landroid/content/pm/dex/PackageOptimizationInfo;->getCompilationReason()I
Landroid/content/pm/dex/PackageOptimizationInfo;->mCompilationFilter:I
Landroid/content/pm/dex/PackageOptimizationInfo;->mCompilationReason:I
-Landroid/content/pm/FallbackCategoryProvider;
Landroid/content/pm/FallbackCategoryProvider;-><init>()V
Landroid/content/pm/FallbackCategoryProvider;->getFallbackCategory(Ljava/lang/String;)I
Landroid/content/pm/FallbackCategoryProvider;->loadFallbacks()V
@@ -15041,40 +14078,32 @@
Landroid/content/pm/FallbackCategoryProvider;->TAG:Ljava/lang/String;
Landroid/content/pm/FeatureInfo;-><init>(Landroid/os/Parcel;)V
Landroid/content/pm/FeatureInfo;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-Landroid/content/pm/FeatureInfoProto;
Landroid/content/pm/FeatureInfoProto;-><init>()V
Landroid/content/pm/FeatureInfoProto;->FLAGS:J
Landroid/content/pm/FeatureInfoProto;->GLES_VERSION:J
Landroid/content/pm/FeatureInfoProto;->NAME:J
Landroid/content/pm/FeatureInfoProto;->VERSION:J
-Landroid/content/pm/ICrossProfileApps$Stub$Proxy;
Landroid/content/pm/ICrossProfileApps$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/content/pm/ICrossProfileApps$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/content/pm/ICrossProfileApps$Stub$Proxy;->getTargetUserProfiles(Ljava/lang/String;)Ljava/util/List;
Landroid/content/pm/ICrossProfileApps$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/content/pm/ICrossProfileApps$Stub$Proxy;->startActivityAsUser(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/ComponentName;Landroid/os/UserHandle;)V
-Landroid/content/pm/ICrossProfileApps$Stub;
Landroid/content/pm/ICrossProfileApps$Stub;-><init>()V
Landroid/content/pm/ICrossProfileApps$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/ICrossProfileApps;
Landroid/content/pm/ICrossProfileApps$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/content/pm/ICrossProfileApps$Stub;->TRANSACTION_getTargetUserProfiles:I
Landroid/content/pm/ICrossProfileApps$Stub;->TRANSACTION_startActivityAsUser:I
-Landroid/content/pm/ICrossProfileApps;
Landroid/content/pm/ICrossProfileApps;->getTargetUserProfiles(Ljava/lang/String;)Ljava/util/List;
Landroid/content/pm/ICrossProfileApps;->startActivityAsUser(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/ComponentName;Landroid/os/UserHandle;)V
-Landroid/content/pm/IDexModuleRegisterCallback$Stub$Proxy;
Landroid/content/pm/IDexModuleRegisterCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/content/pm/IDexModuleRegisterCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/content/pm/IDexModuleRegisterCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/content/pm/IDexModuleRegisterCallback$Stub$Proxy;->onDexModuleRegistered(Ljava/lang/String;ZLjava/lang/String;)V
-Landroid/content/pm/IDexModuleRegisterCallback$Stub;
Landroid/content/pm/IDexModuleRegisterCallback$Stub;-><init>()V
Landroid/content/pm/IDexModuleRegisterCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IDexModuleRegisterCallback;
Landroid/content/pm/IDexModuleRegisterCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/content/pm/IDexModuleRegisterCallback$Stub;->TRANSACTION_onDexModuleRegistered:I
-Landroid/content/pm/IDexModuleRegisterCallback;
Landroid/content/pm/IDexModuleRegisterCallback;->onDexModuleRegistered(Ljava/lang/String;ZLjava/lang/String;)V
-Landroid/content/pm/ILauncherApps$Stub$Proxy;
Landroid/content/pm/ILauncherApps$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/content/pm/ILauncherApps$Stub$Proxy;->addOnAppsChangedListener(Ljava/lang/String;Landroid/content/pm/IOnAppsChangedListener;)V
Landroid/content/pm/ILauncherApps$Stub$Proxy;->getApplicationInfo(Ljava/lang/String;Ljava/lang/String;ILandroid/os/UserHandle;)Landroid/content/pm/ApplicationInfo;
@@ -15096,7 +14125,6 @@
Landroid/content/pm/ILauncherApps$Stub$Proxy;->showAppDetailsAsUser(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/ComponentName;Landroid/graphics/Rect;Landroid/os/Bundle;Landroid/os/UserHandle;)V
Landroid/content/pm/ILauncherApps$Stub$Proxy;->startActivityAsUser(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/ComponentName;Landroid/graphics/Rect;Landroid/os/Bundle;Landroid/os/UserHandle;)V
Landroid/content/pm/ILauncherApps$Stub$Proxy;->startShortcut(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/graphics/Rect;Landroid/os/Bundle;I)Z
-Landroid/content/pm/ILauncherApps$Stub;
Landroid/content/pm/ILauncherApps$Stub;-><init>()V
Landroid/content/pm/ILauncherApps$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/ILauncherApps;
Landroid/content/pm/ILauncherApps$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -15118,7 +14146,6 @@
Landroid/content/pm/ILauncherApps$Stub;->TRANSACTION_showAppDetailsAsUser:I
Landroid/content/pm/ILauncherApps$Stub;->TRANSACTION_startActivityAsUser:I
Landroid/content/pm/ILauncherApps$Stub;->TRANSACTION_startShortcut:I
-Landroid/content/pm/ILauncherApps;
Landroid/content/pm/ILauncherApps;->addOnAppsChangedListener(Ljava/lang/String;Landroid/content/pm/IOnAppsChangedListener;)V
Landroid/content/pm/ILauncherApps;->getApplicationInfo(Ljava/lang/String;Ljava/lang/String;ILandroid/os/UserHandle;)Landroid/content/pm/ApplicationInfo;
Landroid/content/pm/ILauncherApps;->getLauncherActivities(Ljava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;)Landroid/content/pm/ParceledListSlice;
@@ -15146,7 +14173,6 @@
Landroid/content/pm/InstantAppIntentFilter;-><init>(Landroid/os/Parcel;)V
Landroid/content/pm/InstantAppIntentFilter;->mFilters:Ljava/util/List;
Landroid/content/pm/InstantAppIntentFilter;->mSplitName:Ljava/lang/String;
-Landroid/content/pm/InstantAppRequest;
Landroid/content/pm/InstantAppRequest;-><init>(Landroid/content/pm/AuxiliaryResolveInfo;Landroid/content/Intent;Ljava/lang/String;Ljava/lang/String;ILandroid/os/Bundle;Z)V
Landroid/content/pm/InstantAppRequest;->callingPackage:Ljava/lang/String;
Landroid/content/pm/InstantAppRequest;->digest:Landroid/content/pm/InstantAppResolveInfo$InstantAppDigest;
@@ -15207,7 +14233,6 @@
Landroid/content/pm/IntentFilterVerificationInfo;->TAG:Ljava/lang/String;
Landroid/content/pm/IntentFilterVerificationInfo;->TAG_DOMAIN:Ljava/lang/String;
Landroid/content/pm/IntentFilterVerificationInfo;->writeToXml(Lorg/xmlpull/v1/XmlSerializer;)V
-Landroid/content/pm/IOnAppsChangedListener$Stub$Proxy;
Landroid/content/pm/IOnAppsChangedListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/content/pm/IOnAppsChangedListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/content/pm/IOnAppsChangedListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -15219,7 +14244,6 @@
Landroid/content/pm/IOnAppsChangedListener$Stub$Proxy;->onPackagesUnavailable(Landroid/os/UserHandle;[Ljava/lang/String;Z)V
Landroid/content/pm/IOnAppsChangedListener$Stub$Proxy;->onPackagesUnsuspended(Landroid/os/UserHandle;[Ljava/lang/String;)V
Landroid/content/pm/IOnAppsChangedListener$Stub$Proxy;->onShortcutChanged(Landroid/os/UserHandle;Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V
-Landroid/content/pm/IOnAppsChangedListener$Stub;
Landroid/content/pm/IOnAppsChangedListener$Stub;-><init>()V
Landroid/content/pm/IOnAppsChangedListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IOnAppsChangedListener;
Landroid/content/pm/IOnAppsChangedListener$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -15231,7 +14255,6 @@
Landroid/content/pm/IOnAppsChangedListener$Stub;->TRANSACTION_onPackagesUnavailable:I
Landroid/content/pm/IOnAppsChangedListener$Stub;->TRANSACTION_onPackagesUnsuspended:I
Landroid/content/pm/IOnAppsChangedListener$Stub;->TRANSACTION_onShortcutChanged:I
-Landroid/content/pm/IOnAppsChangedListener;
Landroid/content/pm/IOnAppsChangedListener;->onPackageAdded(Landroid/os/UserHandle;Ljava/lang/String;)V
Landroid/content/pm/IOnAppsChangedListener;->onPackageChanged(Landroid/os/UserHandle;Ljava/lang/String;)V
Landroid/content/pm/IOnAppsChangedListener;->onPackageRemoved(Landroid/os/UserHandle;Ljava/lang/String;)V
@@ -15240,19 +14263,15 @@
Landroid/content/pm/IOnAppsChangedListener;->onPackagesUnavailable(Landroid/os/UserHandle;[Ljava/lang/String;Z)V
Landroid/content/pm/IOnAppsChangedListener;->onPackagesUnsuspended(Landroid/os/UserHandle;[Ljava/lang/String;)V
Landroid/content/pm/IOnAppsChangedListener;->onShortcutChanged(Landroid/os/UserHandle;Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V
-Landroid/content/pm/IOnPermissionsChangeListener$Stub$Proxy;
Landroid/content/pm/IOnPermissionsChangeListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/content/pm/IOnPermissionsChangeListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/content/pm/IOnPermissionsChangeListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/content/pm/IOnPermissionsChangeListener$Stub$Proxy;->onPermissionsChanged(I)V
-Landroid/content/pm/IOnPermissionsChangeListener$Stub;
Landroid/content/pm/IOnPermissionsChangeListener$Stub;-><init>()V
Landroid/content/pm/IOnPermissionsChangeListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IOnPermissionsChangeListener;
Landroid/content/pm/IOnPermissionsChangeListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/content/pm/IOnPermissionsChangeListener$Stub;->TRANSACTION_onPermissionsChanged:I
-Landroid/content/pm/IOnPermissionsChangeListener;
Landroid/content/pm/IOnPermissionsChangeListener;->onPermissionsChanged(I)V
-Landroid/content/pm/IOtaDexopt$Stub$Proxy;
Landroid/content/pm/IOtaDexopt$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/content/pm/IOtaDexopt$Stub$Proxy;->cleanup()V
Landroid/content/pm/IOtaDexopt$Stub$Proxy;->dexoptNextPackage()V
@@ -15262,7 +14281,6 @@
Landroid/content/pm/IOtaDexopt$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/content/pm/IOtaDexopt$Stub$Proxy;->nextDexoptCommand()Ljava/lang/String;
Landroid/content/pm/IOtaDexopt$Stub$Proxy;->prepare()V
-Landroid/content/pm/IOtaDexopt$Stub;
Landroid/content/pm/IOtaDexopt$Stub;-><init>()V
Landroid/content/pm/IOtaDexopt$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IOtaDexopt;
Landroid/content/pm/IOtaDexopt$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -15272,39 +14290,28 @@
Landroid/content/pm/IOtaDexopt$Stub;->TRANSACTION_isDone:I
Landroid/content/pm/IOtaDexopt$Stub;->TRANSACTION_nextDexoptCommand:I
Landroid/content/pm/IOtaDexopt$Stub;->TRANSACTION_prepare:I
-Landroid/content/pm/IOtaDexopt;
Landroid/content/pm/IOtaDexopt;->cleanup()V
Landroid/content/pm/IOtaDexopt;->dexoptNextPackage()V
Landroid/content/pm/IOtaDexopt;->getProgress()F
Landroid/content/pm/IOtaDexopt;->isDone()Z
Landroid/content/pm/IOtaDexopt;->nextDexoptCommand()Ljava/lang/String;
Landroid/content/pm/IOtaDexopt;->prepare()V
-Landroid/content/pm/IPackageDataObserver$Stub$Proxy;
Landroid/content/pm/IPackageDataObserver$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/content/pm/IPackageDataObserver$Stub$Proxy;->onRemoveCompleted(Ljava/lang/String;Z)V
-Landroid/content/pm/IPackageDataObserver$Stub;
Landroid/content/pm/IPackageDataObserver$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/content/pm/IPackageDataObserver$Stub;->TRANSACTION_onRemoveCompleted:I
-Landroid/content/pm/IPackageDataObserver;
-Landroid/content/pm/IPackageDeleteObserver$Stub$Proxy;
Landroid/content/pm/IPackageDeleteObserver$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/content/pm/IPackageDeleteObserver$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/content/pm/IPackageDeleteObserver$Stub$Proxy;->packageDeleted(Ljava/lang/String;I)V
-Landroid/content/pm/IPackageDeleteObserver$Stub;
Landroid/content/pm/IPackageDeleteObserver$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/content/pm/IPackageDeleteObserver$Stub;->TRANSACTION_packageDeleted:I
-Landroid/content/pm/IPackageDeleteObserver2$Stub$Proxy;
Landroid/content/pm/IPackageDeleteObserver2$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/content/pm/IPackageDeleteObserver2$Stub$Proxy;->onPackageDeleted(Ljava/lang/String;ILjava/lang/String;)V
Landroid/content/pm/IPackageDeleteObserver2$Stub$Proxy;->onUserActionRequired(Landroid/content/Intent;)V
-Landroid/content/pm/IPackageDeleteObserver2$Stub;
Landroid/content/pm/IPackageDeleteObserver2$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/content/pm/IPackageDeleteObserver2$Stub;->TRANSACTION_onPackageDeleted:I
Landroid/content/pm/IPackageDeleteObserver2$Stub;->TRANSACTION_onUserActionRequired:I
-Landroid/content/pm/IPackageDeleteObserver2;
Landroid/content/pm/IPackageDeleteObserver2;->onUserActionRequired(Landroid/content/Intent;)V
-Landroid/content/pm/IPackageDeleteObserver;
-Landroid/content/pm/IPackageInstaller$Stub$Proxy;
Landroid/content/pm/IPackageInstaller$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/content/pm/IPackageInstaller$Stub$Proxy;->abandonSession(I)V
Landroid/content/pm/IPackageInstaller$Stub$Proxy;->createSession(Landroid/content/pm/PackageInstaller$SessionParams;Ljava/lang/String;I)I
@@ -15320,7 +14327,6 @@
Landroid/content/pm/IPackageInstaller$Stub$Proxy;->unregisterCallback(Landroid/content/pm/IPackageInstallerCallback;)V
Landroid/content/pm/IPackageInstaller$Stub$Proxy;->updateSessionAppIcon(ILandroid/graphics/Bitmap;)V
Landroid/content/pm/IPackageInstaller$Stub$Proxy;->updateSessionAppLabel(ILjava/lang/String;)V
-Landroid/content/pm/IPackageInstaller$Stub;
Landroid/content/pm/IPackageInstaller$Stub;-><init>()V
Landroid/content/pm/IPackageInstaller$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IPackageInstaller;
Landroid/content/pm/IPackageInstaller$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -15336,7 +14342,6 @@
Landroid/content/pm/IPackageInstaller$Stub;->TRANSACTION_unregisterCallback:I
Landroid/content/pm/IPackageInstaller$Stub;->TRANSACTION_updateSessionAppIcon:I
Landroid/content/pm/IPackageInstaller$Stub;->TRANSACTION_updateSessionAppLabel:I
-Landroid/content/pm/IPackageInstaller;
Landroid/content/pm/IPackageInstaller;->abandonSession(I)V
Landroid/content/pm/IPackageInstaller;->createSession(Landroid/content/pm/PackageInstaller$SessionParams;Ljava/lang/String;I)I
Landroid/content/pm/IPackageInstaller;->getAllSessions(I)Landroid/content/pm/ParceledListSlice;
@@ -15348,14 +14353,12 @@
Landroid/content/pm/IPackageInstaller;->unregisterCallback(Landroid/content/pm/IPackageInstallerCallback;)V
Landroid/content/pm/IPackageInstaller;->updateSessionAppIcon(ILandroid/graphics/Bitmap;)V
Landroid/content/pm/IPackageInstaller;->updateSessionAppLabel(ILjava/lang/String;)V
-Landroid/content/pm/IPackageInstallerCallback$Stub$Proxy;
Landroid/content/pm/IPackageInstallerCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/content/pm/IPackageInstallerCallback$Stub$Proxy;->onSessionActiveChanged(IZ)V
Landroid/content/pm/IPackageInstallerCallback$Stub$Proxy;->onSessionBadgingChanged(I)V
Landroid/content/pm/IPackageInstallerCallback$Stub$Proxy;->onSessionCreated(I)V
Landroid/content/pm/IPackageInstallerCallback$Stub$Proxy;->onSessionFinished(IZ)V
Landroid/content/pm/IPackageInstallerCallback$Stub$Proxy;->onSessionProgressChanged(IF)V
-Landroid/content/pm/IPackageInstallerCallback$Stub;
Landroid/content/pm/IPackageInstallerCallback$Stub;-><init>()V
Landroid/content/pm/IPackageInstallerCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/content/pm/IPackageInstallerCallback$Stub;->TRANSACTION_onSessionActiveChanged:I
@@ -15363,8 +14366,6 @@
Landroid/content/pm/IPackageInstallerCallback$Stub;->TRANSACTION_onSessionCreated:I
Landroid/content/pm/IPackageInstallerCallback$Stub;->TRANSACTION_onSessionFinished:I
Landroid/content/pm/IPackageInstallerCallback$Stub;->TRANSACTION_onSessionProgressChanged:I
-Landroid/content/pm/IPackageInstallerCallback;
-Landroid/content/pm/IPackageInstallerSession$Stub$Proxy;
Landroid/content/pm/IPackageInstallerSession$Stub$Proxy;->abandon()V
Landroid/content/pm/IPackageInstallerSession$Stub$Proxy;->addClientProgress(F)V
Landroid/content/pm/IPackageInstallerSession$Stub$Proxy;->close()V
@@ -15377,7 +14378,6 @@
Landroid/content/pm/IPackageInstallerSession$Stub$Proxy;->setClientProgress(F)V
Landroid/content/pm/IPackageInstallerSession$Stub$Proxy;->transfer(Ljava/lang/String;)V
Landroid/content/pm/IPackageInstallerSession$Stub$Proxy;->write(Ljava/lang/String;JJLandroid/os/ParcelFileDescriptor;)V
-Landroid/content/pm/IPackageInstallerSession$Stub;
Landroid/content/pm/IPackageInstallerSession$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/content/pm/IPackageInstallerSession$Stub;->TRANSACTION_abandon:I
Landroid/content/pm/IPackageInstallerSession$Stub;->TRANSACTION_addClientProgress:I
@@ -15390,7 +14390,6 @@
Landroid/content/pm/IPackageInstallerSession$Stub;->TRANSACTION_setClientProgress:I
Landroid/content/pm/IPackageInstallerSession$Stub;->TRANSACTION_transfer:I
Landroid/content/pm/IPackageInstallerSession$Stub;->TRANSACTION_write:I
-Landroid/content/pm/IPackageInstallerSession;
Landroid/content/pm/IPackageInstallerSession;->abandon()V
Landroid/content/pm/IPackageInstallerSession;->addClientProgress(F)V
Landroid/content/pm/IPackageInstallerSession;->close()V
@@ -15402,16 +14401,12 @@
Landroid/content/pm/IPackageInstallerSession;->setClientProgress(F)V
Landroid/content/pm/IPackageInstallerSession;->transfer(Ljava/lang/String;)V
Landroid/content/pm/IPackageInstallerSession;->write(Ljava/lang/String;JJLandroid/os/ParcelFileDescriptor;)V
-Landroid/content/pm/IPackageInstallObserver2$Stub$Proxy;
Landroid/content/pm/IPackageInstallObserver2$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/content/pm/IPackageInstallObserver2$Stub$Proxy;->onPackageInstalled(Ljava/lang/String;ILjava/lang/String;Landroid/os/Bundle;)V
Landroid/content/pm/IPackageInstallObserver2$Stub$Proxy;->onUserActionRequired(Landroid/content/Intent;)V
-Landroid/content/pm/IPackageInstallObserver2$Stub;
Landroid/content/pm/IPackageInstallObserver2$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/content/pm/IPackageInstallObserver2$Stub;->TRANSACTION_onPackageInstalled:I
Landroid/content/pm/IPackageInstallObserver2$Stub;->TRANSACTION_onUserActionRequired:I
-Landroid/content/pm/IPackageInstallObserver2;
-Landroid/content/pm/IPackageManager$Stub$Proxy;
Landroid/content/pm/IPackageManager$Stub$Proxy;->activitySupportsIntent(Landroid/content/ComponentName;Landroid/content/Intent;Ljava/lang/String;)Z
Landroid/content/pm/IPackageManager$Stub$Proxy;->addCrossProfileIntentFilter(Landroid/content/IntentFilter;Ljava/lang/String;III)V
Landroid/content/pm/IPackageManager$Stub$Proxy;->addOnPermissionsChangeListener(Landroid/content/pm/IOnPermissionsChangeListener;)V
@@ -15598,7 +14593,6 @@
Landroid/content/pm/IPackageManager$Stub$Proxy;->updatePermissionFlagsForAllApps(III)V
Landroid/content/pm/IPackageManager$Stub$Proxy;->verifyIntentFilter(IILjava/util/List;)V
Landroid/content/pm/IPackageManager$Stub$Proxy;->verifyPendingInstall(II)V
-Landroid/content/pm/IPackageManager$Stub;
Landroid/content/pm/IPackageManager$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/content/pm/IPackageManager$Stub;->TRANSACTION_activitySupportsIntent:I
Landroid/content/pm/IPackageManager$Stub;->TRANSACTION_addCrossProfileIntentFilter:I
@@ -15791,7 +14785,6 @@
Landroid/content/pm/IPackageManager$Stub;->TRANSACTION_updatePermissionFlagsForAllApps:I
Landroid/content/pm/IPackageManager$Stub;->TRANSACTION_verifyIntentFilter:I
Landroid/content/pm/IPackageManager$Stub;->TRANSACTION_verifyPendingInstall:I
-Landroid/content/pm/IPackageManager;
Landroid/content/pm/IPackageManager;->activitySupportsIntent(Landroid/content/ComponentName;Landroid/content/Intent;Ljava/lang/String;)Z
Landroid/content/pm/IPackageManager;->addCrossProfileIntentFilter(Landroid/content/IntentFilter;Ljava/lang/String;III)V
Landroid/content/pm/IPackageManager;->addOnPermissionsChangeListener(Landroid/content/pm/IOnPermissionsChangeListener;)V
@@ -15924,45 +14917,35 @@
Landroid/content/pm/IPackageManager;->updatePermissionFlagsForAllApps(III)V
Landroid/content/pm/IPackageManager;->verifyIntentFilter(IILjava/util/List;)V
Landroid/content/pm/IPackageManager;->verifyPendingInstall(II)V
-Landroid/content/pm/IPackageManagerNative$Stub$Proxy;
Landroid/content/pm/IPackageManagerNative$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/content/pm/IPackageManagerNative$Stub$Proxy;->getInstallerForPackage(Ljava/lang/String;)Ljava/lang/String;
Landroid/content/pm/IPackageManagerNative$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/content/pm/IPackageManagerNative$Stub$Proxy;->getNamesForUids([I)[Ljava/lang/String;
Landroid/content/pm/IPackageManagerNative$Stub$Proxy;->getVersionCodeForPackage(Ljava/lang/String;)J
Landroid/content/pm/IPackageManagerNative$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/content/pm/IPackageManagerNative$Stub;
Landroid/content/pm/IPackageManagerNative$Stub;-><init>()V
Landroid/content/pm/IPackageManagerNative$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IPackageManagerNative;
Landroid/content/pm/IPackageManagerNative$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/content/pm/IPackageManagerNative$Stub;->TRANSACTION_getInstallerForPackage:I
Landroid/content/pm/IPackageManagerNative$Stub;->TRANSACTION_getNamesForUids:I
Landroid/content/pm/IPackageManagerNative$Stub;->TRANSACTION_getVersionCodeForPackage:I
-Landroid/content/pm/IPackageManagerNative;
Landroid/content/pm/IPackageManagerNative;->getInstallerForPackage(Ljava/lang/String;)Ljava/lang/String;
Landroid/content/pm/IPackageManagerNative;->getNamesForUids([I)[Ljava/lang/String;
Landroid/content/pm/IPackageManagerNative;->getVersionCodeForPackage(Ljava/lang/String;)J
-Landroid/content/pm/IPackageMoveObserver$Stub$Proxy;
Landroid/content/pm/IPackageMoveObserver$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/content/pm/IPackageMoveObserver$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/content/pm/IPackageMoveObserver$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/content/pm/IPackageMoveObserver$Stub$Proxy;->onCreated(ILandroid/os/Bundle;)V
Landroid/content/pm/IPackageMoveObserver$Stub$Proxy;->onStatusChanged(IIJ)V
-Landroid/content/pm/IPackageMoveObserver$Stub;
Landroid/content/pm/IPackageMoveObserver$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/content/pm/IPackageMoveObserver$Stub;->TRANSACTION_onCreated:I
Landroid/content/pm/IPackageMoveObserver$Stub;->TRANSACTION_onStatusChanged:I
-Landroid/content/pm/IPackageMoveObserver;
Landroid/content/pm/IPackageMoveObserver;->onCreated(ILandroid/os/Bundle;)V
Landroid/content/pm/IPackageMoveObserver;->onStatusChanged(IIJ)V
-Landroid/content/pm/IPackageStatsObserver$Stub$Proxy;
Landroid/content/pm/IPackageStatsObserver$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/content/pm/IPackageStatsObserver$Stub$Proxy;->onGetStatsCompleted(Landroid/content/pm/PackageStats;Z)V
-Landroid/content/pm/IPackageStatsObserver$Stub;
Landroid/content/pm/IPackageStatsObserver$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/content/pm/IPackageStatsObserver$Stub;->TRANSACTION_onGetStatsCompleted:I
-Landroid/content/pm/IPackageStatsObserver;
-Landroid/content/pm/IPinItemRequest$Stub$Proxy;
Landroid/content/pm/IPinItemRequest$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/content/pm/IPinItemRequest$Stub$Proxy;->accept(Landroid/os/Bundle;)Z
Landroid/content/pm/IPinItemRequest$Stub$Proxy;->getAppWidgetProviderInfo()Landroid/appwidget/AppWidgetProviderInfo;
@@ -15971,7 +14954,6 @@
Landroid/content/pm/IPinItemRequest$Stub$Proxy;->getShortcutInfo()Landroid/content/pm/ShortcutInfo;
Landroid/content/pm/IPinItemRequest$Stub$Proxy;->isValid()Z
Landroid/content/pm/IPinItemRequest$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/content/pm/IPinItemRequest$Stub;
Landroid/content/pm/IPinItemRequest$Stub;-><init>()V
Landroid/content/pm/IPinItemRequest$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IPinItemRequest;
Landroid/content/pm/IPinItemRequest$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -15980,13 +14962,11 @@
Landroid/content/pm/IPinItemRequest$Stub;->TRANSACTION_getExtras:I
Landroid/content/pm/IPinItemRequest$Stub;->TRANSACTION_getShortcutInfo:I
Landroid/content/pm/IPinItemRequest$Stub;->TRANSACTION_isValid:I
-Landroid/content/pm/IPinItemRequest;
Landroid/content/pm/IPinItemRequest;->accept(Landroid/os/Bundle;)Z
Landroid/content/pm/IPinItemRequest;->getAppWidgetProviderInfo()Landroid/appwidget/AppWidgetProviderInfo;
Landroid/content/pm/IPinItemRequest;->getExtras()Landroid/os/Bundle;
Landroid/content/pm/IPinItemRequest;->getShortcutInfo()Landroid/content/pm/ShortcutInfo;
Landroid/content/pm/IPinItemRequest;->isValid()Z
-Landroid/content/pm/IShortcutService$Stub$Proxy;
Landroid/content/pm/IShortcutService$Stub$Proxy;->addDynamicShortcuts(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;I)Z
Landroid/content/pm/IShortcutService$Stub$Proxy;->applyRestore([BI)V
Landroid/content/pm/IShortcutService$Stub$Proxy;->createShortcutResultIntent(Ljava/lang/String;Landroid/content/pm/ShortcutInfo;I)Landroid/content/Intent;
@@ -16011,7 +14991,6 @@
Landroid/content/pm/IShortcutService$Stub$Proxy;->resetThrottling()V
Landroid/content/pm/IShortcutService$Stub$Proxy;->setDynamicShortcuts(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;I)Z
Landroid/content/pm/IShortcutService$Stub$Proxy;->updateShortcuts(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;I)Z
-Landroid/content/pm/IShortcutService$Stub;
Landroid/content/pm/IShortcutService$Stub;-><init>()V
Landroid/content/pm/IShortcutService$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/content/pm/IShortcutService$Stub;->TRANSACTION_addDynamicShortcuts:I
@@ -16036,7 +15015,6 @@
Landroid/content/pm/IShortcutService$Stub;->TRANSACTION_resetThrottling:I
Landroid/content/pm/IShortcutService$Stub;->TRANSACTION_setDynamicShortcuts:I
Landroid/content/pm/IShortcutService$Stub;->TRANSACTION_updateShortcuts:I
-Landroid/content/pm/IShortcutService;
Landroid/content/pm/IShortcutService;->addDynamicShortcuts(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;I)Z
Landroid/content/pm/IShortcutService;->applyRestore([BI)V
Landroid/content/pm/IShortcutService;->createShortcutResultIntent(Ljava/lang/String;Landroid/content/pm/ShortcutInfo;I)Landroid/content/Intent;
@@ -16059,7 +15037,6 @@
Landroid/content/pm/IShortcutService;->resetThrottling()V
Landroid/content/pm/IShortcutService;->setDynamicShortcuts(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;I)Z
Landroid/content/pm/IShortcutService;->updateShortcuts(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;I)Z
-Landroid/content/pm/KeySet;
Landroid/content/pm/KeySet;-><init>(Landroid/os/IBinder;)V
Landroid/content/pm/KeySet;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/content/pm/KeySet;->getToken()Landroid/os/IBinder;
@@ -16077,7 +15054,6 @@
Landroid/content/pm/LauncherActivityInfo;->mPm:Landroid/content/pm/PackageManager;
Landroid/content/pm/LauncherActivityInfo;->mUser:Landroid/os/UserHandle;
Landroid/content/pm/LauncherActivityInfo;->TAG:Ljava/lang/String;
-Landroid/content/pm/LauncherApps$CallbackMessageHandler$CallbackInfo;
Landroid/content/pm/LauncherApps$CallbackMessageHandler$CallbackInfo;-><init>()V
Landroid/content/pm/LauncherApps$CallbackMessageHandler$CallbackInfo;->launcherExtras:Landroid/os/Bundle;
Landroid/content/pm/LauncherApps$CallbackMessageHandler$CallbackInfo;->packageName:Ljava/lang/String;
@@ -16085,7 +15061,6 @@
Landroid/content/pm/LauncherApps$CallbackMessageHandler$CallbackInfo;->replacing:Z
Landroid/content/pm/LauncherApps$CallbackMessageHandler$CallbackInfo;->shortcuts:Ljava/util/List;
Landroid/content/pm/LauncherApps$CallbackMessageHandler$CallbackInfo;->user:Landroid/os/UserHandle;
-Landroid/content/pm/LauncherApps$CallbackMessageHandler;
Landroid/content/pm/LauncherApps$CallbackMessageHandler;-><init>(Landroid/os/Looper;Landroid/content/pm/LauncherApps$Callback;)V
Landroid/content/pm/LauncherApps$CallbackMessageHandler;->mCallback:Landroid/content/pm/LauncherApps$Callback;
Landroid/content/pm/LauncherApps$CallbackMessageHandler;->MSG_ADDED:I
@@ -16104,12 +15079,10 @@
Landroid/content/pm/LauncherApps$CallbackMessageHandler;->postOnPackagesUnavailable([Ljava/lang/String;Landroid/os/UserHandle;Z)V
Landroid/content/pm/LauncherApps$CallbackMessageHandler;->postOnPackagesUnsuspended([Ljava/lang/String;Landroid/os/UserHandle;)V
Landroid/content/pm/LauncherApps$CallbackMessageHandler;->postOnShortcutChanged(Ljava/lang/String;Landroid/os/UserHandle;Ljava/util/List;)V
-Landroid/content/pm/LauncherApps$PinItemRequest$RequestType;
Landroid/content/pm/LauncherApps$PinItemRequest;-><init>(Landroid/content/pm/IPinItemRequest;I)V
Landroid/content/pm/LauncherApps$PinItemRequest;-><init>(Landroid/os/Parcel;)V
Landroid/content/pm/LauncherApps$PinItemRequest;->mInner:Landroid/content/pm/IPinItemRequest;
Landroid/content/pm/LauncherApps$PinItemRequest;->mRequestType:I
-Landroid/content/pm/LauncherApps$ShortcutQuery$QueryFlags;
Landroid/content/pm/LauncherApps$ShortcutQuery;->FLAG_GET_ALL_KINDS:I
Landroid/content/pm/LauncherApps$ShortcutQuery;->FLAG_GET_DYNAMIC:I
Landroid/content/pm/LauncherApps$ShortcutQuery;->FLAG_GET_MANIFEST:I
@@ -16141,24 +15114,18 @@
Landroid/content/pm/LauncherApps;->mUserManager:Landroid/os/UserManager;
Landroid/content/pm/LauncherApps;->removeCallbackLocked(Landroid/content/pm/LauncherApps$Callback;)V
Landroid/content/pm/LauncherApps;->TAG:Ljava/lang/String;
-Landroid/content/pm/LimitedLengthInputStream;
Landroid/content/pm/LimitedLengthInputStream;-><init>(Ljava/io/InputStream;JJ)V
Landroid/content/pm/LimitedLengthInputStream;->mEnd:J
Landroid/content/pm/LimitedLengthInputStream;->mOffset:J
-Landroid/content/pm/MacAuthenticatedInputStream;
Landroid/content/pm/MacAuthenticatedInputStream;-><init>(Ljava/io/InputStream;Ljavax/crypto/Mac;)V
Landroid/content/pm/MacAuthenticatedInputStream;->isTagEqual([B)Z
Landroid/content/pm/MacAuthenticatedInputStream;->mMac:Ljavax/crypto/Mac;
-Landroid/content/pm/PackageBackwardCompatibility$AndroidTestRunnerSplitUpdater;
Landroid/content/pm/PackageBackwardCompatibility$AndroidTestRunnerSplitUpdater;-><init>()V
Landroid/content/pm/PackageBackwardCompatibility$AndroidTestRunnerSplitUpdater;->updatePackage(Landroid/content/pm/PackageParser$Package;)V
-Landroid/content/pm/PackageBackwardCompatibility$RemoveUnnecessaryAndroidTestBaseLibrary;
Landroid/content/pm/PackageBackwardCompatibility$RemoveUnnecessaryAndroidTestBaseLibrary;-><init>()V
Landroid/content/pm/PackageBackwardCompatibility$RemoveUnnecessaryAndroidTestBaseLibrary;->updatePackage(Landroid/content/pm/PackageParser$Package;)V
-Landroid/content/pm/PackageBackwardCompatibility$RemoveUnnecessaryOrgApacheHttpLegacyLibrary;
Landroid/content/pm/PackageBackwardCompatibility$RemoveUnnecessaryOrgApacheHttpLegacyLibrary;-><init>()V
Landroid/content/pm/PackageBackwardCompatibility$RemoveUnnecessaryOrgApacheHttpLegacyLibrary;->updatePackage(Landroid/content/pm/PackageParser$Package;)V
-Landroid/content/pm/PackageBackwardCompatibility;
Landroid/content/pm/PackageBackwardCompatibility;-><init>(ZZ[Landroid/content/pm/PackageSharedLibraryUpdater;)V
Landroid/content/pm/PackageBackwardCompatibility;->addOptionalUpdater(Ljava/util/List;Ljava/lang/String;Ljava/util/function/Supplier;)Z
Landroid/content/pm/PackageBackwardCompatibility;->bootClassPathContainsATB()Z
@@ -16171,7 +15138,6 @@
Landroid/content/pm/PackageBackwardCompatibility;->mPackageUpdaters:[Landroid/content/pm/PackageSharedLibraryUpdater;
Landroid/content/pm/PackageBackwardCompatibility;->TAG:Ljava/lang/String;
Landroid/content/pm/PackageBackwardCompatibility;->updatePackage(Landroid/content/pm/PackageParser$Package;)V
-Landroid/content/pm/PackageCleanItem;
Landroid/content/pm/PackageCleanItem;-><init>(ILjava/lang/String;Z)V
Landroid/content/pm/PackageCleanItem;-><init>(Landroid/os/Parcel;)V
Landroid/content/pm/PackageCleanItem;->andCode:Z
@@ -16192,7 +15158,6 @@
Landroid/content/pm/PackageInfo;->requiredForAllUsers:Z
Landroid/content/pm/PackageInfo;->restrictedAccountType:Ljava/lang/String;
Landroid/content/pm/PackageInfo;->versionCodeMajor:I
-Landroid/content/pm/PackageInfoLite;
Landroid/content/pm/PackageInfoLite;-><init>()V
Landroid/content/pm/PackageInfoLite;-><init>(Landroid/os/Parcel;)V
Landroid/content/pm/PackageInfoLite;->baseRevisionCode:I
@@ -16210,7 +15175,6 @@
Landroid/content/pm/PackageInstaller$Session;->mSession:Landroid/content/pm/IPackageInstallerSession;
Landroid/content/pm/PackageInstaller$Session;->setProgress(F)V
Landroid/content/pm/PackageInstaller$Session;->write(Ljava/lang/String;JJLandroid/os/ParcelFileDescriptor;)V
-Landroid/content/pm/PackageInstaller$SessionCallbackDelegate;
Landroid/content/pm/PackageInstaller$SessionCallbackDelegate;-><init>(Landroid/content/pm/PackageInstaller$SessionCallback;Landroid/os/Looper;)V
Landroid/content/pm/PackageInstaller$SessionCallbackDelegate;->mCallback:Landroid/content/pm/PackageInstaller$SessionCallback;
Landroid/content/pm/PackageInstaller$SessionCallbackDelegate;->mHandler:Landroid/os/Handler;
@@ -16271,8 +15235,6 @@
Landroid/content/pm/PackageInstaller;->uninstall(Ljava/lang/String;ILandroid/content/IntentSender;)V
Landroid/content/pm/PackageItemInfo$DisplayNameComparator;->mPM:Landroid/content/pm/PackageManager;
Landroid/content/pm/PackageItemInfo$DisplayNameComparator;->sCollator:Ljava/text/Collator;
-Landroid/content/pm/PackageItemInfo$SafeLabelFlags;
-Landroid/content/pm/PackageItemInfo$StringWithRemovedChars;
Landroid/content/pm/PackageItemInfo$StringWithRemovedChars;-><init>(Ljava/lang/String;)V
Landroid/content/pm/PackageItemInfo$StringWithRemovedChars;->codePointAt(I)I
Landroid/content/pm/PackageItemInfo$StringWithRemovedChars;->isRemoved(I)Z
@@ -16303,7 +15265,6 @@
Landroid/content/pm/PackageItemInfo;->sForceSafeLabels:Z
Landroid/content/pm/PackageItemInfo;->showUserIcon:I
Landroid/content/pm/PackageItemInfo;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-Landroid/content/pm/PackageItemInfoProto;
Landroid/content/pm/PackageItemInfoProto;-><init>()V
Landroid/content/pm/PackageItemInfoProto;->BANNER:J
Landroid/content/pm/PackageItemInfoProto;->ICON:J
@@ -16311,36 +15272,18 @@
Landroid/content/pm/PackageItemInfoProto;->NAME:J
Landroid/content/pm/PackageItemInfoProto;->NON_LOCALIZED_LABEL:J
Landroid/content/pm/PackageItemInfoProto;->PACKAGE_NAME:J
-Landroid/content/pm/PackageList;
Landroid/content/pm/PackageList;-><init>(Ljava/util/List;Landroid/content/pm/PackageManagerInternal$PackageListObserver;)V
Landroid/content/pm/PackageList;->getPackageNames()Ljava/util/List;
Landroid/content/pm/PackageList;->mPackageNames:Ljava/util/List;
Landroid/content/pm/PackageList;->mWrappedObserver:Landroid/content/pm/PackageManagerInternal$PackageListObserver;
Landroid/content/pm/PackageList;->onPackageAdded(Ljava/lang/String;)V
Landroid/content/pm/PackageList;->onPackageRemoved(Ljava/lang/String;)V
-Landroid/content/pm/PackageManager$ApplicationInfoFlags;
-Landroid/content/pm/PackageManager$CertificateInputType;
-Landroid/content/pm/PackageManager$ComponentInfoFlags;
-Landroid/content/pm/PackageManager$DeleteFlags;
-Landroid/content/pm/PackageManager$EnabledFlags;
-Landroid/content/pm/PackageManager$EnabledState;
-Landroid/content/pm/PackageManager$InstallFlags;
-Landroid/content/pm/PackageManager$InstallReason;
-Landroid/content/pm/PackageManager$InstrumentationInfoFlags;
-Landroid/content/pm/PackageManager$LegacyPackageDeleteObserver;
Landroid/content/pm/PackageManager$LegacyPackageDeleteObserver;-><init>(Landroid/content/pm/IPackageDeleteObserver;)V
Landroid/content/pm/PackageManager$LegacyPackageDeleteObserver;->mLegacy:Landroid/content/pm/IPackageDeleteObserver;
Landroid/content/pm/PackageManager$LegacyPackageDeleteObserver;->onPackageDeleted(Ljava/lang/String;ILjava/lang/String;)V
-Landroid/content/pm/PackageManager$MoveCallback;
Landroid/content/pm/PackageManager$MoveCallback;-><init>()V
Landroid/content/pm/PackageManager$MoveCallback;->onCreated(ILandroid/os/Bundle;)V
Landroid/content/pm/PackageManager$MoveCallback;->onStatusChanged(IIJ)V
-Landroid/content/pm/PackageManager$PackageInfoFlags;
-Landroid/content/pm/PackageManager$PermissionGroupInfoFlags;
-Landroid/content/pm/PackageManager$PermissionInfoFlags;
-Landroid/content/pm/PackageManager$PermissionResult;
-Landroid/content/pm/PackageManager$ResolveInfoFlags;
-Landroid/content/pm/PackageManager$SignatureResult;
Landroid/content/pm/PackageManager;->ACTION_CLEAN_EXTERNAL_STORAGE:Ljava/lang/String;
Landroid/content/pm/PackageManager;->APPLY_DEFAULT_TO_DEVICE_PROTECTED_STORAGE:Z
Landroid/content/pm/PackageManager;->deleteStatusToPublicStatus(I)I
@@ -16450,20 +15393,14 @@
Landroid/content/pm/PackageManager;->SYSTEM_SHARED_LIBRARY_SHARED:Ljava/lang/String;
Landroid/content/pm/PackageManager;->TAG:Ljava/lang/String;
Landroid/content/pm/PackageManager;->VERIFICATION_ALLOW_WITHOUT_SUFFICIENT:I
-Landroid/content/pm/PackageManagerInternal$ExternalSourcesPolicy;
Landroid/content/pm/PackageManagerInternal$ExternalSourcesPolicy;->getPackageTrustedToInstallApps(Ljava/lang/String;I)I
Landroid/content/pm/PackageManagerInternal$ExternalSourcesPolicy;->USER_BLOCKED:I
Landroid/content/pm/PackageManagerInternal$ExternalSourcesPolicy;->USER_DEFAULT:I
Landroid/content/pm/PackageManagerInternal$ExternalSourcesPolicy;->USER_TRUSTED:I
-Landroid/content/pm/PackageManagerInternal$KnownPackage;
-Landroid/content/pm/PackageManagerInternal$PackageListObserver;
Landroid/content/pm/PackageManagerInternal$PackageListObserver;->onPackageAdded(Ljava/lang/String;)V
Landroid/content/pm/PackageManagerInternal$PackageListObserver;->onPackageRemoved(Ljava/lang/String;)V
-Landroid/content/pm/PackageManagerInternal$PackagesProvider;
Landroid/content/pm/PackageManagerInternal$PackagesProvider;->getPackages(I)[Ljava/lang/String;
-Landroid/content/pm/PackageManagerInternal$SyncAdapterPackagesProvider;
Landroid/content/pm/PackageManagerInternal$SyncAdapterPackagesProvider;->getPackages(Ljava/lang/String;I)[Ljava/lang/String;
-Landroid/content/pm/PackageManagerInternal;
Landroid/content/pm/PackageManagerInternal;-><init>()V
Landroid/content/pm/PackageManagerInternal;->addIsolatedUid(II)V
Landroid/content/pm/PackageManagerInternal;->canAccessComponent(ILandroid/content/ComponentName;I)Z
@@ -16541,7 +15478,6 @@
Landroid/content/pm/PackageManagerInternal;->setVoiceInteractionPackagesProvider(Landroid/content/pm/PackageManagerInternal$PackagesProvider;)V
Landroid/content/pm/PackageManagerInternal;->updatePermissionFlagsTEMP(Ljava/lang/String;Ljava/lang/String;III)V
Landroid/content/pm/PackageManagerInternal;->wasPackageEverLaunched(Ljava/lang/String;I)Z
-Landroid/content/pm/PackageParser$Activity;
Landroid/content/pm/PackageParser$Activity;-><init>(Landroid/content/pm/PackageParser$ParseComponentArgs;Landroid/content/pm/ActivityInfo;)V
Landroid/content/pm/PackageParser$Activity;-><init>(Landroid/os/Parcel;)V
Landroid/content/pm/PackageParser$Activity;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -16549,10 +15485,8 @@
Landroid/content/pm/PackageParser$Activity;->mHasMaxAspectRatio:Z
Landroid/content/pm/PackageParser$Activity;->setMaxAspectRatio(F)V
Landroid/content/pm/PackageParser$Activity;->setPackageName(Ljava/lang/String;)V
-Landroid/content/pm/PackageParser$ActivityIntentInfo;
Landroid/content/pm/PackageParser$ActivityIntentInfo;-><init>(Landroid/content/pm/PackageParser$Activity;)V
Landroid/content/pm/PackageParser$ActivityIntentInfo;-><init>(Landroid/os/Parcel;)V
-Landroid/content/pm/PackageParser$ApkLite;
Landroid/content/pm/PackageParser$ApkLite;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;IIIILjava/util/List;Landroid/content/pm/PackageParser$SigningDetails;ZZZZZZ)V
Landroid/content/pm/PackageParser$ApkLite;->codePath:Ljava/lang/String;
Landroid/content/pm/PackageParser$ApkLite;->configForSplit:Ljava/lang/String;
@@ -16573,23 +15507,19 @@
Landroid/content/pm/PackageParser$ApkLite;->verifiers:[Landroid/content/pm/VerifierInfo;
Landroid/content/pm/PackageParser$ApkLite;->versionCode:I
Landroid/content/pm/PackageParser$ApkLite;->versionCodeMajor:I
-Landroid/content/pm/PackageParser$CachedComponentArgs;
Landroid/content/pm/PackageParser$CachedComponentArgs;-><init>()V
Landroid/content/pm/PackageParser$CachedComponentArgs;->mActivityAliasArgs:Landroid/content/pm/PackageParser$ParseComponentArgs;
Landroid/content/pm/PackageParser$CachedComponentArgs;->mActivityArgs:Landroid/content/pm/PackageParser$ParseComponentArgs;
Landroid/content/pm/PackageParser$CachedComponentArgs;->mProviderArgs:Landroid/content/pm/PackageParser$ParseComponentArgs;
Landroid/content/pm/PackageParser$CachedComponentArgs;->mServiceArgs:Landroid/content/pm/PackageParser$ParseComponentArgs;
-Landroid/content/pm/PackageParser$Callback;
Landroid/content/pm/PackageParser$Callback;->getOverlayApks(Ljava/lang/String;)[Ljava/lang/String;
Landroid/content/pm/PackageParser$Callback;->getOverlayPaths(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;
Landroid/content/pm/PackageParser$Callback;->hasFeature(Ljava/lang/String;)Z
-Landroid/content/pm/PackageParser$CallbackImpl;
Landroid/content/pm/PackageParser$CallbackImpl;-><init>(Landroid/content/pm/PackageManager;)V
Landroid/content/pm/PackageParser$CallbackImpl;->getOverlayApks(Ljava/lang/String;)[Ljava/lang/String;
Landroid/content/pm/PackageParser$CallbackImpl;->getOverlayPaths(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;
Landroid/content/pm/PackageParser$CallbackImpl;->hasFeature(Ljava/lang/String;)Z
Landroid/content/pm/PackageParser$CallbackImpl;->mPm:Landroid/content/pm/PackageManager;
-Landroid/content/pm/PackageParser$Component;
Landroid/content/pm/PackageParser$Component;-><init>(Landroid/content/pm/PackageParser$Component;)V
Landroid/content/pm/PackageParser$Component;-><init>(Landroid/content/pm/PackageParser$Package;)V
Landroid/content/pm/PackageParser$Component;-><init>(Landroid/content/pm/PackageParser$ParseComponentArgs;Landroid/content/pm/ComponentInfo;)V
@@ -16604,19 +15534,15 @@
Landroid/content/pm/PackageParser$Component;->setPackageName(Ljava/lang/String;)V
Landroid/content/pm/PackageParser$Component;->writeIntentsList(Ljava/util/ArrayList;Landroid/os/Parcel;I)V
Landroid/content/pm/PackageParser$Component;->writeToParcel(Landroid/os/Parcel;I)V
-Landroid/content/pm/PackageParser$Instrumentation;
Landroid/content/pm/PackageParser$Instrumentation;-><init>(Landroid/content/pm/PackageParser$ParsePackageItemArgs;Landroid/content/pm/InstrumentationInfo;)V
Landroid/content/pm/PackageParser$Instrumentation;-><init>(Landroid/os/Parcel;)V
Landroid/content/pm/PackageParser$Instrumentation;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/content/pm/PackageParser$Instrumentation;->setPackageName(Ljava/lang/String;)V
-Landroid/content/pm/PackageParser$IntentInfo;
Landroid/content/pm/PackageParser$IntentInfo;-><init>(Landroid/os/Parcel;)V
Landroid/content/pm/PackageParser$IntentInfo;->preferred:I
Landroid/content/pm/PackageParser$IntentInfo;->writeIntentInfoToParcel(Landroid/os/Parcel;I)V
-Landroid/content/pm/PackageParser$NewPermissionInfo;
Landroid/content/pm/PackageParser$NewPermissionInfo;-><init>(Ljava/lang/String;II)V
Landroid/content/pm/PackageParser$NewPermissionInfo;->fileVersion:I
-Landroid/content/pm/PackageParser$Package;
Landroid/content/pm/PackageParser$Package;-><init>(Landroid/os/Parcel;)V
Landroid/content/pm/PackageParser$Package;->baseCodePath:Ljava/lang/String;
Landroid/content/pm/PackageParser$Package;->baseHardwareAccelerated:Z
@@ -16697,7 +15623,6 @@
Landroid/content/pm/PackageParser$Package;->visibleToInstantApps:Z
Landroid/content/pm/PackageParser$Package;->volumeUuid:Ljava/lang/String;
Landroid/content/pm/PackageParser$Package;->writeKeySetMapping(Landroid/os/Parcel;Landroid/util/ArrayMap;)V
-Landroid/content/pm/PackageParser$PackageLite;
Landroid/content/pm/PackageParser$PackageLite;-><init>(Ljava/lang/String;Landroid/content/pm/PackageParser$ApkLite;[Ljava/lang/String;[Z[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;[I)V
Landroid/content/pm/PackageParser$PackageLite;->baseCodePath:Ljava/lang/String;
Landroid/content/pm/PackageParser$PackageLite;->baseRevisionCode:I
@@ -16718,19 +15643,15 @@
Landroid/content/pm/PackageParser$PackageLite;->verifiers:[Landroid/content/pm/VerifierInfo;
Landroid/content/pm/PackageParser$PackageLite;->versionCode:I
Landroid/content/pm/PackageParser$PackageLite;->versionCodeMajor:I
-Landroid/content/pm/PackageParser$PackageParserException;
Landroid/content/pm/PackageParser$PackageParserException;-><init>(ILjava/lang/String;)V
Landroid/content/pm/PackageParser$PackageParserException;-><init>(ILjava/lang/String;Ljava/lang/Throwable;)V
Landroid/content/pm/PackageParser$PackageParserException;->error:I
-Landroid/content/pm/PackageParser$ParseComponentArgs;
Landroid/content/pm/PackageParser$ParseComponentArgs;-><init>(Landroid/content/pm/PackageParser$Package;[Ljava/lang/String;IIIIII[Ljava/lang/String;III)V
Landroid/content/pm/PackageParser$ParseComponentArgs;->descriptionRes:I
Landroid/content/pm/PackageParser$ParseComponentArgs;->enabledRes:I
Landroid/content/pm/PackageParser$ParseComponentArgs;->flags:I
Landroid/content/pm/PackageParser$ParseComponentArgs;->processRes:I
Landroid/content/pm/PackageParser$ParseComponentArgs;->sepProcesses:[Ljava/lang/String;
-Landroid/content/pm/PackageParser$ParseFlags;
-Landroid/content/pm/PackageParser$ParsePackageItemArgs;
Landroid/content/pm/PackageParser$ParsePackageItemArgs;-><init>(Landroid/content/pm/PackageParser$Package;[Ljava/lang/String;IIIIII)V
Landroid/content/pm/PackageParser$ParsePackageItemArgs;->bannerRes:I
Landroid/content/pm/PackageParser$ParsePackageItemArgs;->iconRes:I
@@ -16742,52 +15663,42 @@
Landroid/content/pm/PackageParser$ParsePackageItemArgs;->roundIconRes:I
Landroid/content/pm/PackageParser$ParsePackageItemArgs;->sa:Landroid/content/res/TypedArray;
Landroid/content/pm/PackageParser$ParsePackageItemArgs;->tag:Ljava/lang/String;
-Landroid/content/pm/PackageParser$Permission;
Landroid/content/pm/PackageParser$Permission;-><init>(Landroid/content/pm/PackageParser$Package;)V
Landroid/content/pm/PackageParser$Permission;-><init>(Landroid/os/Parcel;)V
Landroid/content/pm/PackageParser$Permission;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/content/pm/PackageParser$Permission;->isAppOp()Z
Landroid/content/pm/PackageParser$Permission;->setPackageName(Ljava/lang/String;)V
-Landroid/content/pm/PackageParser$PermissionGroup;
Landroid/content/pm/PackageParser$PermissionGroup;-><init>(Landroid/content/pm/PackageParser$Package;)V
Landroid/content/pm/PackageParser$PermissionGroup;-><init>(Landroid/content/pm/PackageParser$Package;Landroid/content/pm/PermissionGroupInfo;)V
Landroid/content/pm/PackageParser$PermissionGroup;-><init>(Landroid/os/Parcel;)V
Landroid/content/pm/PackageParser$PermissionGroup;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/content/pm/PackageParser$PermissionGroup;->setPackageName(Ljava/lang/String;)V
-Landroid/content/pm/PackageParser$Provider;
Landroid/content/pm/PackageParser$Provider;-><init>(Landroid/content/pm/PackageParser$ParseComponentArgs;Landroid/content/pm/ProviderInfo;)V
Landroid/content/pm/PackageParser$Provider;-><init>(Landroid/os/Parcel;)V
Landroid/content/pm/PackageParser$Provider;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/content/pm/PackageParser$Provider;->setPackageName(Ljava/lang/String;)V
-Landroid/content/pm/PackageParser$ProviderIntentInfo;
Landroid/content/pm/PackageParser$ProviderIntentInfo;-><init>(Landroid/content/pm/PackageParser$Provider;)V
Landroid/content/pm/PackageParser$ProviderIntentInfo;-><init>(Landroid/os/Parcel;)V
-Landroid/content/pm/PackageParser$Service;
Landroid/content/pm/PackageParser$Service;-><init>(Landroid/content/pm/PackageParser$ParseComponentArgs;Landroid/content/pm/ServiceInfo;)V
Landroid/content/pm/PackageParser$Service;-><init>(Landroid/os/Parcel;)V
Landroid/content/pm/PackageParser$Service;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/content/pm/PackageParser$Service;->setPackageName(Ljava/lang/String;)V
-Landroid/content/pm/PackageParser$ServiceIntentInfo;
Landroid/content/pm/PackageParser$ServiceIntentInfo;-><init>(Landroid/content/pm/PackageParser$Service;)V
Landroid/content/pm/PackageParser$ServiceIntentInfo;-><init>(Landroid/os/Parcel;)V
-Landroid/content/pm/PackageParser$SigningDetails$Builder;
Landroid/content/pm/PackageParser$SigningDetails$Builder;->checkInvariants()V
Landroid/content/pm/PackageParser$SigningDetails$Builder;->mPastSigningCertificates:[Landroid/content/pm/Signature;
Landroid/content/pm/PackageParser$SigningDetails$Builder;->mPastSigningCertificatesFlags:[I
Landroid/content/pm/PackageParser$SigningDetails$Builder;->mSignatures:[Landroid/content/pm/Signature;
Landroid/content/pm/PackageParser$SigningDetails$Builder;->mSignatureSchemeVersion:I
-Landroid/content/pm/PackageParser$SigningDetails$CertCapabilities;
Landroid/content/pm/PackageParser$SigningDetails$CertCapabilities;->AUTH:I
Landroid/content/pm/PackageParser$SigningDetails$CertCapabilities;->INSTALLED_DATA:I
Landroid/content/pm/PackageParser$SigningDetails$CertCapabilities;->PERMISSION:I
Landroid/content/pm/PackageParser$SigningDetails$CertCapabilities;->ROLLBACK:I
Landroid/content/pm/PackageParser$SigningDetails$CertCapabilities;->SHARED_USER_ID:I
-Landroid/content/pm/PackageParser$SigningDetails$SignatureSchemeVersion;
Landroid/content/pm/PackageParser$SigningDetails$SignatureSchemeVersion;->JAR:I
Landroid/content/pm/PackageParser$SigningDetails$SignatureSchemeVersion;->SIGNING_BLOCK_V2:I
Landroid/content/pm/PackageParser$SigningDetails$SignatureSchemeVersion;->SIGNING_BLOCK_V3:I
Landroid/content/pm/PackageParser$SigningDetails$SignatureSchemeVersion;->UNKNOWN:I
-Landroid/content/pm/PackageParser$SigningDetails;
Landroid/content/pm/PackageParser$SigningDetails;-><init>(Landroid/content/pm/PackageParser$SigningDetails;)V
Landroid/content/pm/PackageParser$SigningDetails;-><init>(Landroid/os/Parcel;)V
Landroid/content/pm/PackageParser$SigningDetails;-><init>([Landroid/content/pm/Signature;I)V
@@ -16815,15 +15726,12 @@
Landroid/content/pm/PackageParser$SigningDetails;->signatureSchemeVersion:I
Landroid/content/pm/PackageParser$SigningDetails;->signaturesMatchExactly(Landroid/content/pm/PackageParser$SigningDetails;)Z
Landroid/content/pm/PackageParser$SigningDetails;->UNKNOWN:Landroid/content/pm/PackageParser$SigningDetails;
-Landroid/content/pm/PackageParser$SplitNameComparator;
Landroid/content/pm/PackageParser$SplitNameComparator;-><init>()V
Landroid/content/pm/PackageParser$SplitNameComparator;->compare(Ljava/lang/String;Ljava/lang/String;)I
-Landroid/content/pm/PackageParser$SplitPermissionInfo;
Landroid/content/pm/PackageParser$SplitPermissionInfo;-><init>(Ljava/lang/String;[Ljava/lang/String;I)V
Landroid/content/pm/PackageParser$SplitPermissionInfo;->newPerms:[Ljava/lang/String;
Landroid/content/pm/PackageParser$SplitPermissionInfo;->rootPerm:Ljava/lang/String;
Landroid/content/pm/PackageParser$SplitPermissionInfo;->targetSdk:I
-Landroid/content/pm/PackageParser;
Landroid/content/pm/PackageParser;->adjustPackageToBeUnresizeableAndUnpipable(Landroid/content/pm/PackageParser$Package;)V
Landroid/content/pm/PackageParser;->ANDROID_MANIFEST_FILENAME:Ljava/lang/String;
Landroid/content/pm/PackageParser;->ANDROID_RESOURCES:Ljava/lang/String;
@@ -16966,13 +15874,11 @@
Landroid/content/pm/PackageParser;->toSigningKeys([Landroid/content/pm/Signature;)Landroid/util/ArraySet;
Landroid/content/pm/PackageParser;->updateApplicationInfo(Landroid/content/pm/ApplicationInfo;ILandroid/content/pm/PackageUserState;)V
Landroid/content/pm/PackageParser;->validateName(Ljava/lang/String;ZZ)Ljava/lang/String;
-Landroid/content/pm/PackageParserCacheHelper$ReadHelper;
Landroid/content/pm/PackageParserCacheHelper$ReadHelper;-><init>(Landroid/os/Parcel;)V
Landroid/content/pm/PackageParserCacheHelper$ReadHelper;->mParcel:Landroid/os/Parcel;
Landroid/content/pm/PackageParserCacheHelper$ReadHelper;->mStrings:Ljava/util/ArrayList;
Landroid/content/pm/PackageParserCacheHelper$ReadHelper;->readString(Landroid/os/Parcel;)Ljava/lang/String;
Landroid/content/pm/PackageParserCacheHelper$ReadHelper;->startAndInstall()V
-Landroid/content/pm/PackageParserCacheHelper$WriteHelper;
Landroid/content/pm/PackageParserCacheHelper$WriteHelper;-><init>(Landroid/os/Parcel;)V
Landroid/content/pm/PackageParserCacheHelper$WriteHelper;->finishAndUninstall()V
Landroid/content/pm/PackageParserCacheHelper$WriteHelper;->mIndexes:Ljava/util/HashMap;
@@ -16980,11 +15886,9 @@
Landroid/content/pm/PackageParserCacheHelper$WriteHelper;->mStartPos:I
Landroid/content/pm/PackageParserCacheHelper$WriteHelper;->mStrings:Ljava/util/ArrayList;
Landroid/content/pm/PackageParserCacheHelper$WriteHelper;->writeString(Landroid/os/Parcel;Ljava/lang/String;)V
-Landroid/content/pm/PackageParserCacheHelper;
Landroid/content/pm/PackageParserCacheHelper;-><init>()V
Landroid/content/pm/PackageParserCacheHelper;->DEBUG:Z
Landroid/content/pm/PackageParserCacheHelper;->TAG:Ljava/lang/String;
-Landroid/content/pm/PackageSharedLibraryUpdater;
Landroid/content/pm/PackageSharedLibraryUpdater;-><init>()V
Landroid/content/pm/PackageSharedLibraryUpdater;->apkTargetsApiLevelLessThanOrEqualToOMR1(Landroid/content/pm/PackageParser$Package;)Z
Landroid/content/pm/PackageSharedLibraryUpdater;->isLibraryPresent(Ljava/util/ArrayList;Ljava/util/ArrayList;Ljava/lang/String;)Z
@@ -16994,7 +15898,6 @@
Landroid/content/pm/PackageSharedLibraryUpdater;->removeLibrary(Landroid/content/pm/PackageParser$Package;Ljava/lang/String;)V
Landroid/content/pm/PackageSharedLibraryUpdater;->updatePackage(Landroid/content/pm/PackageParser$Package;)V
Landroid/content/pm/PackageStats;-><init>(Ljava/lang/String;I)V
-Landroid/content/pm/PackageUserState;
Landroid/content/pm/PackageUserState;-><init>(Landroid/content/pm/PackageUserState;)V
Landroid/content/pm/PackageUserState;->appLinkGeneration:I
Landroid/content/pm/PackageUserState;->categoryHint:I
@@ -17021,26 +15924,22 @@
Landroid/content/pm/PackageUserState;->suspendedLauncherExtras:Landroid/os/PersistableBundle;
Landroid/content/pm/PackageUserState;->suspendingPackage:Ljava/lang/String;
Landroid/content/pm/PackageUserState;->virtualPreload:Z
-Landroid/content/pm/ParceledListSlice;
Landroid/content/pm/ParceledListSlice;-><init>(Landroid/os/Parcel;Ljava/lang/ClassLoader;)V
Landroid/content/pm/ParceledListSlice;->emptyList()Landroid/content/pm/ParceledListSlice;
Landroid/content/pm/ParceledListSlice;->readParcelableCreator(Landroid/os/Parcel;Ljava/lang/ClassLoader;)Landroid/os/Parcelable$Creator;
Landroid/content/pm/ParceledListSlice;->writeElement(Landroid/os/Parcelable;Landroid/os/Parcel;I)V
Landroid/content/pm/PathPermission;->mReadPermission:Ljava/lang/String;
Landroid/content/pm/PathPermission;->mWritePermission:Ljava/lang/String;
-Landroid/content/pm/permission/IRuntimePermissionPresenter$Stub$Proxy;
Landroid/content/pm/permission/IRuntimePermissionPresenter$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/content/pm/permission/IRuntimePermissionPresenter$Stub$Proxy;->getAppPermissions(Ljava/lang/String;Landroid/os/RemoteCallback;)V
Landroid/content/pm/permission/IRuntimePermissionPresenter$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/content/pm/permission/IRuntimePermissionPresenter$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/content/pm/permission/IRuntimePermissionPresenter$Stub$Proxy;->revokeRuntimePermission(Ljava/lang/String;Ljava/lang/String;)V
-Landroid/content/pm/permission/IRuntimePermissionPresenter$Stub;
Landroid/content/pm/permission/IRuntimePermissionPresenter$Stub;-><init>()V
Landroid/content/pm/permission/IRuntimePermissionPresenter$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/permission/IRuntimePermissionPresenter;
Landroid/content/pm/permission/IRuntimePermissionPresenter$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/content/pm/permission/IRuntimePermissionPresenter$Stub;->TRANSACTION_getAppPermissions:I
Landroid/content/pm/permission/IRuntimePermissionPresenter$Stub;->TRANSACTION_revokeRuntimePermission:I
-Landroid/content/pm/permission/IRuntimePermissionPresenter;
Landroid/content/pm/permission/IRuntimePermissionPresenter;->getAppPermissions(Ljava/lang/String;Landroid/os/RemoteCallback;)V
Landroid/content/pm/permission/IRuntimePermissionPresenter;->revokeRuntimePermission(Ljava/lang/String;Ljava/lang/String;)V
Landroid/content/pm/permission/RuntimePermissionPresentationInfo;-><init>(Landroid/os/Parcel;)V
@@ -17048,10 +15947,8 @@
Landroid/content/pm/permission/RuntimePermissionPresentationInfo;->FLAG_STANDARD:I
Landroid/content/pm/permission/RuntimePermissionPresentationInfo;->mFlags:I
Landroid/content/pm/permission/RuntimePermissionPresentationInfo;->mLabel:Ljava/lang/CharSequence;
-Landroid/content/pm/permission/RuntimePermissionPresenter$OnResultCallback;
Landroid/content/pm/permission/RuntimePermissionPresenter$OnResultCallback;-><init>()V
Landroid/content/pm/permission/RuntimePermissionPresenter$OnResultCallback;->onGetAppPermissions(Ljava/util/List;)V
-Landroid/content/pm/permission/RuntimePermissionPresenter$RemoteService;
Landroid/content/pm/permission/RuntimePermissionPresenter$RemoteService;-><init>(Landroid/content/Context;)V
Landroid/content/pm/permission/RuntimePermissionPresenter$RemoteService;->mBound:Z
Landroid/content/pm/permission/RuntimePermissionPresenter$RemoteService;->mContext:Landroid/content/Context;
@@ -17066,7 +15963,6 @@
Landroid/content/pm/permission/RuntimePermissionPresenter$RemoteService;->scheduleNextMessageIfNeededLocked()V
Landroid/content/pm/permission/RuntimePermissionPresenter$RemoteService;->scheduleUnbind()V
Landroid/content/pm/permission/RuntimePermissionPresenter$RemoteService;->UNBIND_TIMEOUT_MILLIS:J
-Landroid/content/pm/permission/RuntimePermissionPresenter;
Landroid/content/pm/permission/RuntimePermissionPresenter;-><init>(Landroid/content/Context;)V
Landroid/content/pm/permission/RuntimePermissionPresenter;->getAppPermissions(Ljava/lang/String;Landroid/content/pm/permission/RuntimePermissionPresenter$OnResultCallback;Landroid/os/Handler;)V
Landroid/content/pm/permission/RuntimePermissionPresenter;->getInstance(Landroid/content/Context;)Landroid/content/pm/permission/RuntimePermissionPresenter;
@@ -17077,8 +15973,6 @@
Landroid/content/pm/permission/RuntimePermissionPresenter;->sLock:Ljava/lang/Object;
Landroid/content/pm/permission/RuntimePermissionPresenter;->TAG:Ljava/lang/String;
Landroid/content/pm/PermissionGroupInfo;-><init>(Landroid/os/Parcel;)V
-Landroid/content/pm/PermissionInfo$Protection;
-Landroid/content/pm/PermissionInfo$ProtectionFlags;
Landroid/content/pm/PermissionInfo;-><init>(Landroid/os/Parcel;)V
Landroid/content/pm/PermissionInfo;->calculateFootprint()I
Landroid/content/pm/PermissionInfo;->fixProtectionLevel(I)I
@@ -17086,16 +15980,13 @@
Landroid/content/pm/ProviderInfo;-><init>(Landroid/os/Parcel;)V
Landroid/content/pm/ProviderInfo;->dump(Landroid/util/Printer;Ljava/lang/String;I)V
Landroid/content/pm/ProviderInfo;->FLAG_VISIBLE_TO_INSTANT_APP:I
-Landroid/content/pm/RegisteredServicesCache$ServiceInfo;
Landroid/content/pm/RegisteredServicesCache$ServiceInfo;-><init>(Ljava/lang/Object;Landroid/content/pm/ComponentInfo;Landroid/content/ComponentName;)V
Landroid/content/pm/RegisteredServicesCache$ServiceInfo;->componentInfo:Landroid/content/pm/ComponentInfo;
-Landroid/content/pm/RegisteredServicesCache$UserServices;
Landroid/content/pm/RegisteredServicesCache$UserServices;-><init>()V
Landroid/content/pm/RegisteredServicesCache$UserServices;->mBindInstantServiceAllowed:Z
Landroid/content/pm/RegisteredServicesCache$UserServices;->mPersistentServicesFileDidNotExist:Z
Landroid/content/pm/RegisteredServicesCache$UserServices;->persistentServices:Ljava/util/Map;
Landroid/content/pm/RegisteredServicesCache$UserServices;->services:Ljava/util/Map;
-Landroid/content/pm/RegisteredServicesCache;
Landroid/content/pm/RegisteredServicesCache;->containsType(Ljava/util/ArrayList;Ljava/lang/Object;)Z
Landroid/content/pm/RegisteredServicesCache;->containsTypeAndUid(Ljava/util/ArrayList;Ljava/lang/Object;I)Z
Landroid/content/pm/RegisteredServicesCache;->containsUid([II)Z
@@ -17143,7 +16034,6 @@
Landroid/content/pm/RegisteredServicesCache;->TAG:Ljava/lang/String;
Landroid/content/pm/RegisteredServicesCache;->updateServices(I)V
Landroid/content/pm/RegisteredServicesCache;->writePersistentServicesLocked(Landroid/content/pm/RegisteredServicesCache$UserServices;I)V
-Landroid/content/pm/RegisteredServicesCacheListener;
Landroid/content/pm/RegisteredServicesCacheListener;->onServiceChanged(Ljava/lang/Object;IZ)V
Landroid/content/pm/ResolveInfo$DisplayNameComparator;->mCollator:Ljava/text/Collator;
Landroid/content/pm/ResolveInfo$DisplayNameComparator;->mPM:Landroid/content/pm/PackageManager;
@@ -17156,7 +16046,6 @@
Landroid/content/pm/ResolveInfo;->resolveIconResId()I
Landroid/content/pm/ResolveInfo;->resolveLabelResId()I
Landroid/content/pm/ResolveInfo;->TAG:Ljava/lang/String;
-Landroid/content/pm/SELinuxUtil;
Landroid/content/pm/SELinuxUtil;-><init>()V
Landroid/content/pm/SELinuxUtil;->assignSeinfoUser(Landroid/content/pm/PackageUserState;)Ljava/lang/String;
Landroid/content/pm/SELinuxUtil;->COMPLETE_STR:Ljava/lang/String;
@@ -17164,7 +16053,6 @@
Landroid/content/pm/ServiceInfo;-><init>(Landroid/os/Parcel;)V
Landroid/content/pm/ServiceInfo;->dump(Landroid/util/Printer;Ljava/lang/String;I)V
Landroid/content/pm/ServiceInfo;->FLAG_VISIBLE_TO_INSTANT_APP:I
-Landroid/content/pm/SharedLibraryInfo$Type;
Landroid/content/pm/SharedLibraryInfo;-><init>(Landroid/os/Parcel;)V
Landroid/content/pm/SharedLibraryInfo;-><init>(Ljava/lang/String;JILandroid/content/pm/VersionedPackage;Ljava/util/List;)V
Landroid/content/pm/SharedLibraryInfo;->mDeclaringPackage:Landroid/content/pm/VersionedPackage;
@@ -17173,7 +16061,6 @@
Landroid/content/pm/SharedLibraryInfo;->mType:I
Landroid/content/pm/SharedLibraryInfo;->mVersion:J
Landroid/content/pm/SharedLibraryInfo;->typeToString(I)Ljava/lang/String;
-Landroid/content/pm/SharedLibraryNames;
Landroid/content/pm/SharedLibraryNames;-><init>()V
Landroid/content/pm/SharedLibraryNames;->ANDROID_TEST_BASE:Ljava/lang/String;
Landroid/content/pm/SharedLibraryNames;->ANDROID_TEST_MOCK:Ljava/lang/String;
@@ -17202,9 +16089,6 @@
Landroid/content/pm/ShortcutInfo$Builder;->setTextResId(I)Landroid/content/pm/ShortcutInfo$Builder;
Landroid/content/pm/ShortcutInfo$Builder;->setTitle(Ljava/lang/CharSequence;)Landroid/content/pm/ShortcutInfo$Builder;
Landroid/content/pm/ShortcutInfo$Builder;->setTitleResId(I)Landroid/content/pm/ShortcutInfo$Builder;
-Landroid/content/pm/ShortcutInfo$CloneFlags;
-Landroid/content/pm/ShortcutInfo$DisabledReason;
-Landroid/content/pm/ShortcutInfo$ShortcutFlags;
Landroid/content/pm/ShortcutInfo;-><init>(ILjava/lang/String;Ljava/lang/String;Landroid/content/ComponentName;Landroid/graphics/drawable/Icon;Ljava/lang/CharSequence;ILjava/lang/String;Ljava/lang/CharSequence;ILjava/lang/String;Ljava/lang/CharSequence;ILjava/lang/String;Ljava/util/Set;[Landroid/content/Intent;ILandroid/os/PersistableBundle;JIILjava/lang/String;Ljava/lang/String;I)V
Landroid/content/pm/ShortcutInfo;-><init>(Landroid/content/pm/ShortcutInfo$Builder;)V
Landroid/content/pm/ShortcutInfo;-><init>(Landroid/content/pm/ShortcutInfo;I)V
@@ -17363,9 +16247,7 @@
Landroid/content/pm/ShortcutManager;->mContext:Landroid/content/Context;
Landroid/content/pm/ShortcutManager;->onApplicationActive(Ljava/lang/String;I)V
Landroid/content/pm/ShortcutManager;->TAG:Ljava/lang/String;
-Landroid/content/pm/ShortcutServiceInternal$ShortcutChangeListener;
Landroid/content/pm/ShortcutServiceInternal$ShortcutChangeListener;->onShortcutChanged(Ljava/lang/String;I)V
-Landroid/content/pm/ShortcutServiceInternal;
Landroid/content/pm/ShortcutServiceInternal;-><init>()V
Landroid/content/pm/ShortcutServiceInternal;->addListener(Landroid/content/pm/ShortcutServiceInternal$ShortcutChangeListener;)V
Landroid/content/pm/ShortcutServiceInternal;->createShortcutIntents(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;III)[Landroid/content/Intent;
@@ -17395,7 +16277,6 @@
Landroid/content/pm/SigningInfo;-><init>(Landroid/content/pm/PackageParser$SigningDetails;)V
Landroid/content/pm/SigningInfo;-><init>(Landroid/os/Parcel;)V
Landroid/content/pm/SigningInfo;->mSigningDetails:Landroid/content/pm/PackageParser$SigningDetails;
-Landroid/content/pm/StringParceledListSlice;
Landroid/content/pm/StringParceledListSlice;-><init>(Landroid/os/Parcel;Ljava/lang/ClassLoader;)V
Landroid/content/pm/StringParceledListSlice;-><init>(Ljava/util/List;)V
Landroid/content/pm/StringParceledListSlice;->CREATOR:Landroid/os/Parcelable$ClassLoaderCreator;
@@ -17403,7 +16284,6 @@
Landroid/content/pm/StringParceledListSlice;->readParcelableCreator(Landroid/os/Parcel;Ljava/lang/ClassLoader;)Landroid/os/Parcelable$Creator;
Landroid/content/pm/StringParceledListSlice;->writeElement(Ljava/lang/String;Landroid/os/Parcel;I)V
Landroid/content/pm/StringParceledListSlice;->writeParcelableCreator(Ljava/lang/String;Landroid/os/Parcel;)V
-Landroid/content/pm/UserInfo;
Landroid/content/pm/UserInfo;-><init>()V
Landroid/content/pm/UserInfo;-><init>(Landroid/content/pm/UserInfo;)V
Landroid/content/pm/UserInfo;-><init>(Landroid/os/Parcel;)V
@@ -17430,7 +16310,6 @@
Landroid/content/pm/UserInfo;->restrictedProfileParentId:I
Landroid/content/pm/UserInfo;->supportsSwitchTo()Z
Landroid/content/pm/UserInfo;->supportsSwitchToByUser()Z
-Landroid/content/pm/VerificationParams;
Landroid/content/pm/VerificationParams;-><init>(Landroid/net/Uri;Landroid/net/Uri;Landroid/net/Uri;I)V
Landroid/content/pm/VerificationParams;-><init>(Landroid/os/Parcel;)V
Landroid/content/pm/VerificationParams;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -17447,7 +16326,6 @@
Landroid/content/pm/VerificationParams;->NO_UID:I
Landroid/content/pm/VerificationParams;->setInstallerUid(I)V
Landroid/content/pm/VerificationParams;->TO_STRING_PREFIX:Ljava/lang/String;
-Landroid/content/pm/VerifierDeviceIdentity;
Landroid/content/pm/VerifierDeviceIdentity;-><init>(J)V
Landroid/content/pm/VerifierDeviceIdentity;-><init>(Landroid/os/Parcel;)V
Landroid/content/pm/VerifierDeviceIdentity;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -17462,18 +16340,14 @@
Landroid/content/pm/VerifierDeviceIdentity;->mIdentityString:Ljava/lang/String;
Landroid/content/pm/VerifierDeviceIdentity;->parse(Ljava/lang/String;)Landroid/content/pm/VerifierDeviceIdentity;
Landroid/content/pm/VerifierDeviceIdentity;->SEPARATOR:C
-Landroid/content/pm/VerifierInfo;
Landroid/content/pm/VerifierInfo;-><init>(Landroid/os/Parcel;)V
Landroid/content/pm/VerifierInfo;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/content/pm/VerifierInfo;->packageName:Ljava/lang/String;
Landroid/content/pm/VerifierInfo;->publicKey:Ljava/security/PublicKey;
-Landroid/content/pm/VersionedPackage$VersionCode;
Landroid/content/pm/VersionedPackage;-><init>(Landroid/os/Parcel;)V
Landroid/content/pm/VersionedPackage;->mPackageName:Ljava/lang/String;
Landroid/content/pm/VersionedPackage;->mVersionCode:J
-Landroid/content/pm/XmlSerializerAndParser;
Landroid/content/QuickViewConstants;-><init>()V
-Landroid/content/res/ApkAssets;
Landroid/content/res/ApkAssets;-><init>(Ljava/io/FileDescriptor;Ljava/lang/String;ZZ)V
Landroid/content/res/ApkAssets;-><init>(Ljava/lang/String;ZZZ)V
Landroid/content/res/ApkAssets;->getStringFromPool(I)Ljava/lang/CharSequence;
@@ -17497,12 +16371,10 @@
Landroid/content/res/AssetFileDescriptor$AutoCloseOutputStream;->mRemaining:J
Landroid/content/res/AssetFileDescriptor;-><init>(Landroid/os/Parcel;)V
Landroid/content/res/AssetFileDescriptor;->mExtras:Landroid/os/Bundle;
-Landroid/content/res/AssetManager$AssetInputStream;-><init>(J)V
Landroid/content/res/AssetManager$AssetInputStream;->ensureOpen()V
Landroid/content/res/AssetManager$AssetInputStream;->mAssetNativePtr:J
Landroid/content/res/AssetManager$AssetInputStream;->mLength:J
Landroid/content/res/AssetManager$AssetInputStream;->mMarkPos:J
-Landroid/content/res/AssetManager$Builder;
Landroid/content/res/AssetManager$Builder;-><init>()V
Landroid/content/res/AssetManager$Builder;->addApkAssets(Landroid/content/res/ApkAssets;)Landroid/content/res/AssetManager$Builder;
Landroid/content/res/AssetManager$Builder;->build()Landroid/content/res/AssetManager;
@@ -17592,7 +16464,6 @@
Landroid/content/res/AssetManager;->sSystemApkAssetsSet:Landroid/util/ArraySet;
Landroid/content/res/AssetManager;->TAG:Ljava/lang/String;
Landroid/content/res/AssetManager;->xmlBlockGone(I)V
-Landroid/content/res/ColorStateList$ColorStateListFactory;
Landroid/content/res/ColorStateList$ColorStateListFactory;->getChangingConfigurations()I
Landroid/content/res/ColorStateList$ColorStateListFactory;->mSrc:Landroid/content/res/ColorStateList;
Landroid/content/res/ColorStateList$ColorStateListFactory;->newInstance()Landroid/content/res/ColorStateList;
@@ -17612,9 +16483,6 @@
Landroid/content/res/ColorStateList;->mThemeAttrs:[[I
Landroid/content/res/ColorStateList;->sCache:Landroid/util/SparseArray;
Landroid/content/res/ColorStateList;->TAG:Ljava/lang/String;
-Landroid/content/res/CompatibilityInfo$Translator;
-Landroid/content/res/CompatibilityInfo$Translator;-><init>()V
-Landroid/content/res/CompatibilityInfo$Translator;-><init>(FF)V
Landroid/content/res/CompatibilityInfo$Translator;->getTranslatedTouchableArea(Landroid/graphics/Region;)Landroid/graphics/Region;
Landroid/content/res/CompatibilityInfo$Translator;->getTranslatedVisibleInsets(Landroid/graphics/Rect;)Landroid/graphics/Rect;
Landroid/content/res/CompatibilityInfo$Translator;->mContentInsetsBuffer:Landroid/graphics/Rect;
@@ -17622,7 +16490,6 @@
Landroid/content/res/CompatibilityInfo$Translator;->mVisibleInsetsBuffer:Landroid/graphics/Rect;
Landroid/content/res/CompatibilityInfo$Translator;->translateLayoutParamsInAppWindowToScreen(Landroid/view/WindowManager$LayoutParams;)V
Landroid/content/res/CompatibilityInfo$Translator;->translatePointInScreenToAppWindow(Landroid/graphics/PointF;)V
-Landroid/content/res/CompatibilityInfo;
Landroid/content/res/CompatibilityInfo;-><init>(IIFF)V
Landroid/content/res/CompatibilityInfo;-><init>(Landroid/os/Parcel;)V
Landroid/content/res/CompatibilityInfo;->alwaysSupportsScreen()Z
@@ -17640,12 +16507,10 @@
Landroid/content/res/CompatibilityInfo;->neverSupportsScreen()Z
Landroid/content/res/CompatibilityInfo;->NEVER_NEEDS_COMPAT:I
Landroid/content/res/CompatibilityInfo;->SCALING_REQUIRED:I
-Landroid/content/res/CompatResources;
Landroid/content/res/CompatResources;-><init>(Ljava/lang/ClassLoader;)V
Landroid/content/res/CompatResources;->getTheme()Landroid/content/res/Resources$Theme;
Landroid/content/res/CompatResources;->mContext:Ljava/lang/ref/WeakReference;
Landroid/content/res/CompatResources;->setContext(Landroid/content/Context;)V
-Landroid/content/res/ComplexColor;
Landroid/content/res/ComplexColor;-><init>()V
Landroid/content/res/ComplexColor;->canApplyTheme()Z
Landroid/content/res/ComplexColor;->getChangingConfigurations()I
@@ -17655,7 +16520,6 @@
Landroid/content/res/ComplexColor;->mChangingConfigurations:I
Landroid/content/res/ComplexColor;->obtainForTheme(Landroid/content/res/Resources$Theme;)Landroid/content/res/ComplexColor;
Landroid/content/res/ComplexColor;->setBaseChangingConfigurations(I)V
-Landroid/content/res/Configuration$NativeConfig;
Landroid/content/res/Configuration;-><init>(Landroid/os/Parcel;)V
Landroid/content/res/Configuration;->assetsSeq:I
Landroid/content/res/Configuration;->ASSETS_SEQ_UNDEFINED:I
@@ -17722,23 +16586,17 @@
Landroid/content/res/Configuration;->XML_ATTR_SMALLEST_WIDTH:Ljava/lang/String;
Landroid/content/res/Configuration;->XML_ATTR_TOUCHSCREEN:Ljava/lang/String;
Landroid/content/res/Configuration;->XML_ATTR_UI_MODE:Ljava/lang/String;
-Landroid/content/res/ConfigurationBoundResourceCache;
Landroid/content/res/ConfigurationBoundResourceCache;->getInstance(JLandroid/content/res/Resources;Landroid/content/res/Resources$Theme;)Ljava/lang/Object;
Landroid/content/res/ConfigurationBoundResourceCache;->shouldInvalidateEntry(Landroid/content/res/ConstantState;I)Z
-Landroid/content/res/ConstantState;
Landroid/content/res/ConstantState;-><init>()V
Landroid/content/res/ConstantState;->getChangingConfigurations()I
Landroid/content/res/ConstantState;->newInstance()Ljava/lang/Object;
Landroid/content/res/ConstantState;->newInstance(Landroid/content/res/Resources;)Ljava/lang/Object;
Landroid/content/res/ConstantState;->newInstance(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;)Ljava/lang/Object;
-Landroid/content/res/DrawableCache;
Landroid/content/res/DrawableCache;->shouldInvalidateEntry(Landroid/graphics/drawable/Drawable$ConstantState;I)Z
-Landroid/content/res/FontResourcesParser$FamilyResourceEntry;
-Landroid/content/res/FontResourcesParser$FontFamilyFilesResourceEntry;
Landroid/content/res/FontResourcesParser$FontFamilyFilesResourceEntry;-><init>([Landroid/content/res/FontResourcesParser$FontFileResourceEntry;)V
Landroid/content/res/FontResourcesParser$FontFamilyFilesResourceEntry;->getEntries()[Landroid/content/res/FontResourcesParser$FontFileResourceEntry;
Landroid/content/res/FontResourcesParser$FontFamilyFilesResourceEntry;->mEntries:[Landroid/content/res/FontResourcesParser$FontFileResourceEntry;
-Landroid/content/res/FontResourcesParser$FontFileResourceEntry;
Landroid/content/res/FontResourcesParser$FontFileResourceEntry;-><init>(Ljava/lang/String;IILjava/lang/String;I)V
Landroid/content/res/FontResourcesParser$FontFileResourceEntry;->getFileName()Ljava/lang/String;
Landroid/content/res/FontResourcesParser$FontFileResourceEntry;->getItalic()I
@@ -17751,7 +16609,6 @@
Landroid/content/res/FontResourcesParser$FontFileResourceEntry;->mTtcIndex:I
Landroid/content/res/FontResourcesParser$FontFileResourceEntry;->mVariationSettings:Ljava/lang/String;
Landroid/content/res/FontResourcesParser$FontFileResourceEntry;->mWeight:I
-Landroid/content/res/FontResourcesParser$ProviderResourceEntry;
Landroid/content/res/FontResourcesParser$ProviderResourceEntry;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;)V
Landroid/content/res/FontResourcesParser$ProviderResourceEntry;->getAuthority()Ljava/lang/String;
Landroid/content/res/FontResourcesParser$ProviderResourceEntry;->getCerts()Ljava/util/List;
@@ -17761,7 +16618,6 @@
Landroid/content/res/FontResourcesParser$ProviderResourceEntry;->mProviderAuthority:Ljava/lang/String;
Landroid/content/res/FontResourcesParser$ProviderResourceEntry;->mProviderPackage:Ljava/lang/String;
Landroid/content/res/FontResourcesParser$ProviderResourceEntry;->mQuery:Ljava/lang/String;
-Landroid/content/res/FontResourcesParser;
Landroid/content/res/FontResourcesParser;-><init>()V
Landroid/content/res/FontResourcesParser;->parse(Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/Resources;)Landroid/content/res/FontResourcesParser$FamilyResourceEntry;
Landroid/content/res/FontResourcesParser;->readFamilies(Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/Resources;)Landroid/content/res/FontResourcesParser$FamilyResourceEntry;
@@ -17769,14 +16625,11 @@
Landroid/content/res/FontResourcesParser;->readFont(Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/Resources;)Landroid/content/res/FontResourcesParser$FontFileResourceEntry;
Landroid/content/res/FontResourcesParser;->skip(Lorg/xmlpull/v1/XmlPullParser;)V
Landroid/content/res/FontResourcesParser;->TAG:Ljava/lang/String;
-Landroid/content/res/GradientColor$GradientColorFactory;
Landroid/content/res/GradientColor$GradientColorFactory;-><init>(Landroid/content/res/GradientColor;)V
Landroid/content/res/GradientColor$GradientColorFactory;->getChangingConfigurations()I
Landroid/content/res/GradientColor$GradientColorFactory;->mSrc:Landroid/content/res/GradientColor;
Landroid/content/res/GradientColor$GradientColorFactory;->newInstance()Landroid/content/res/GradientColor;
Landroid/content/res/GradientColor$GradientColorFactory;->newInstance(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;)Landroid/content/res/GradientColor;
-Landroid/content/res/GradientColor$GradientTileMode;
-Landroid/content/res/GradientColor;
Landroid/content/res/GradientColor;-><init>()V
Landroid/content/res/GradientColor;-><init>(Landroid/content/res/GradientColor;)V
Landroid/content/res/GradientColor;->applyItemsAttrsTheme(Landroid/content/res/Resources$Theme;)V
@@ -17826,11 +16679,9 @@
Landroid/content/res/ObbInfo;-><init>(Landroid/os/Parcel;)V
Landroid/content/res/ObbScanner;-><init>()V
Landroid/content/res/ObbScanner;->getObbInfo_native(Ljava/lang/String;Landroid/content/res/ObbInfo;)V
-Landroid/content/res/ResourceId;
Landroid/content/res/ResourceId;-><init>()V
Landroid/content/res/ResourceId;->ID_NULL:I
Landroid/content/res/ResourceId;->isValid(I)Z
-Landroid/content/res/Resources$Theme;-><init>()V
Landroid/content/res/Resources$Theme;->encode(Landroid/view/ViewHierarchyEncoder;)V
Landroid/content/res/Resources$Theme;->getAllAttributes()[I
Landroid/content/res/Resources$Theme;->getAppliedStyleResId()I
@@ -17840,7 +16691,6 @@
Landroid/content/res/Resources$Theme;->getTheme()[Ljava/lang/String;
Landroid/content/res/Resources$Theme;->rebase()V
Landroid/content/res/Resources$Theme;->setImpl(Landroid/content/res/ResourcesImpl$ThemeImpl;)V
-Landroid/content/res/Resources$ThemeKey;
Landroid/content/res/Resources$ThemeKey;-><init>()V
Landroid/content/res/Resources$ThemeKey;->append(IZ)V
Landroid/content/res/Resources$ThemeKey;->mCount:I
@@ -17870,15 +16720,12 @@
Landroid/content/res/Resources;->startPreloading()V
Landroid/content/res/Resources;->TAG:Ljava/lang/String;
Landroid/content/res/Resources;->updateConfiguration(Landroid/content/res/Configuration;Landroid/util/DisplayMetrics;Landroid/content/res/CompatibilityInfo;)V
-Landroid/content/res/ResourcesImpl$LookupStack;
Landroid/content/res/ResourcesImpl$LookupStack;-><init>()V
Landroid/content/res/ResourcesImpl$LookupStack;->contains(I)Z
Landroid/content/res/ResourcesImpl$LookupStack;->mIds:[I
Landroid/content/res/ResourcesImpl$LookupStack;->mSize:I
Landroid/content/res/ResourcesImpl$LookupStack;->pop()V
Landroid/content/res/ResourcesImpl$LookupStack;->push(I)V
-Landroid/content/res/ResourcesImpl$ThemeImpl;
-Landroid/content/res/ResourcesImpl$ThemeImpl;-><init>()V
Landroid/content/res/ResourcesImpl$ThemeImpl;->applyStyle(IZ)V
Landroid/content/res/ResourcesImpl$ThemeImpl;->dump(ILjava/lang/String;Ljava/lang/String;)V
Landroid/content/res/ResourcesImpl$ThemeImpl;->getAllAttributes()[I
@@ -17896,7 +16743,6 @@
Landroid/content/res/ResourcesImpl$ThemeImpl;->resolveAttribute(ILandroid/util/TypedValue;Z)Z
Landroid/content/res/ResourcesImpl$ThemeImpl;->resolveAttributes(Landroid/content/res/Resources$Theme;[I[I)Landroid/content/res/TypedArray;
Landroid/content/res/ResourcesImpl$ThemeImpl;->setTo(Landroid/content/res/ResourcesImpl$ThemeImpl;)V
-Landroid/content/res/ResourcesImpl;
Landroid/content/res/ResourcesImpl;->adjustLanguageTag(Ljava/lang/String;)Ljava/lang/String;
Landroid/content/res/ResourcesImpl;->attrForQuantityCode(Ljava/lang/String;)I
Landroid/content/res/ResourcesImpl;->cacheDrawable(Landroid/util/TypedValue;ZLandroid/content/res/DrawableCache;Landroid/content/res/Resources$Theme;ZJLandroid/graphics/drawable/Drawable;)V
@@ -17959,7 +16805,6 @@
Landroid/content/res/ResourcesImpl;->updateConfiguration(Landroid/content/res/Configuration;Landroid/util/DisplayMetrics;Landroid/content/res/CompatibilityInfo;)V
Landroid/content/res/ResourcesImpl;->verifyPreloadConfig(IIILjava/lang/String;)Z
Landroid/content/res/ResourcesImpl;->XML_BLOCK_CACHE_SIZE:I
-Landroid/content/res/ResourcesKey;
Landroid/content/res/ResourcesKey;->anyStartsWith([Ljava/lang/String;Ljava/lang/String;)Z
Landroid/content/res/ResourcesKey;->hasOverrideConfiguration()Z
Landroid/content/res/ResourcesKey;->isPathReferenced(Ljava/lang/String;)Z
@@ -17969,11 +16814,9 @@
Landroid/content/res/ResourcesKey;->mLibDirs:[Ljava/lang/String;
Landroid/content/res/ResourcesKey;->mOverlayDirs:[Ljava/lang/String;
Landroid/content/res/ResourcesKey;->mOverrideConfiguration:Landroid/content/res/Configuration;
-Landroid/content/res/StringBlock$Height;
Landroid/content/res/StringBlock$Height;-><init>(I)V
Landroid/content/res/StringBlock$Height;->mSize:I
Landroid/content/res/StringBlock$Height;->sProportion:F
-Landroid/content/res/StringBlock$StyleIDs;
Landroid/content/res/StringBlock$StyleIDs;-><init>()V
Landroid/content/res/StringBlock$StyleIDs;->bigId:I
Landroid/content/res/StringBlock$StyleIDs;->boldId:I
@@ -17986,7 +16829,6 @@
Landroid/content/res/StringBlock$StyleIDs;->supId:I
Landroid/content/res/StringBlock$StyleIDs;->ttId:I
Landroid/content/res/StringBlock$StyleIDs;->underlineId:I
-Landroid/content/res/StringBlock;
Landroid/content/res/StringBlock;-><init>([BIIZ)V
Landroid/content/res/StringBlock;-><init>([BZ)V
Landroid/content/res/StringBlock;->addParagraphSpan(Landroid/text/Spannable;Ljava/lang/Object;II)V
@@ -18006,7 +16848,6 @@
Landroid/content/res/StringBlock;->nativeGetStyle(JI)[I
Landroid/content/res/StringBlock;->subtag(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
Landroid/content/res/StringBlock;->TAG:Ljava/lang/String;
-Landroid/content/res/ThemedResourceCache;
Landroid/content/res/ThemedResourceCache;-><init>()V
Landroid/content/res/ThemedResourceCache;->get(JLandroid/content/res/Resources$Theme;)Ljava/lang/Object;
Landroid/content/res/ThemedResourceCache;->getThemedLocked(Landroid/content/res/Resources$Theme;Z)Landroid/util/LongSparseArray;
@@ -18035,14 +16876,11 @@
Landroid/content/res/TypedArray;->STYLE_NUM_ENTRIES:I
Landroid/content/res/TypedArray;->STYLE_RESOURCE_ID:I
Landroid/content/res/TypedArray;->STYLE_TYPE:I
-Landroid/content/res/XmlBlock$Parser;
-Landroid/content/res/XmlBlock$Parser;-><init>(JLandroid/content/res/XmlBlock;)V
Landroid/content/res/XmlBlock$Parser;->getPooledString(I)Ljava/lang/CharSequence;
Landroid/content/res/XmlBlock$Parser;->mDecNextDepth:Z
Landroid/content/res/XmlBlock$Parser;->mDepth:I
Landroid/content/res/XmlBlock$Parser;->mEventType:I
Landroid/content/res/XmlBlock$Parser;->mStarted:Z
-Landroid/content/res/XmlBlock;
Landroid/content/res/XmlBlock;-><init>(Landroid/content/res/AssetManager;J)V
Landroid/content/res/XmlBlock;-><init>([BII)V
Landroid/content/res/XmlBlock;->DEBUG:Z
@@ -18073,7 +16911,6 @@
Landroid/content/res/XmlBlock;->nativeGetStyleAttribute(J)I
Landroid/content/res/XmlBlock;->nativeGetText(J)I
Landroid/content/res/XmlBlock;->nativeNext(J)I
-Landroid/content/ResourcesConfigurationProto;
Landroid/content/ResourcesConfigurationProto;-><init>()V
Landroid/content/ResourcesConfigurationProto;->CONFIGURATION:J
Landroid/content/ResourcesConfigurationProto;->SCREEN_HEIGHT_PX:J
@@ -18098,7 +16935,6 @@
Landroid/content/RestrictionsManager;->mContext:Landroid/content/Context;
Landroid/content/RestrictionsManager;->TAG:Ljava/lang/String;
Landroid/content/RestrictionsManager;->TAG_RESTRICTION:Ljava/lang/String;
-Landroid/content/SearchRecentSuggestionsProvider$DatabaseHelper;
Landroid/content/SearchRecentSuggestionsProvider$DatabaseHelper;-><init>(Landroid/content/Context;I)V
Landroid/content/SearchRecentSuggestionsProvider$DatabaseHelper;->mNewVersion:I
Landroid/content/SearchRecentSuggestionsProvider;->DATABASE_VERSION:I
@@ -18115,7 +16951,6 @@
Landroid/content/SearchRecentSuggestionsProvider;->sSuggestions:Ljava/lang/String;
Landroid/content/SearchRecentSuggestionsProvider;->TAG:Ljava/lang/String;
Landroid/content/SearchRecentSuggestionsProvider;->URI_MATCH_SUGGEST:I
-Landroid/content/SyncActivityTooManyDeletes;
Landroid/content/SyncActivityTooManyDeletes;-><init>()V
Landroid/content/SyncActivityTooManyDeletes;->mAccount:Landroid/accounts/Account;
Landroid/content/SyncActivityTooManyDeletes;->mAuthority:Ljava/lang/String;
@@ -18123,11 +16958,9 @@
Landroid/content/SyncActivityTooManyDeletes;->mProvider:Ljava/lang/String;
Landroid/content/SyncActivityTooManyDeletes;->startSyncReallyDelete()V
Landroid/content/SyncActivityTooManyDeletes;->startSyncUndoDeletes()V
-Landroid/content/SyncAdaptersCache$MySerializer;
Landroid/content/SyncAdaptersCache$MySerializer;-><init>()V
Landroid/content/SyncAdaptersCache$MySerializer;->createFromXml(Lorg/xmlpull/v1/XmlPullParser;)Landroid/content/SyncAdapterType;
Landroid/content/SyncAdaptersCache$MySerializer;->writeAsXml(Landroid/content/SyncAdapterType;Lorg/xmlpull/v1/XmlSerializer;)V
-Landroid/content/SyncAdaptersCache;
Landroid/content/SyncAdaptersCache;->ATTRIBUTES_NAME:Ljava/lang/String;
Landroid/content/SyncAdaptersCache;->getSyncAdapterPackagesForAuthority(Ljava/lang/String;I)[Ljava/lang/String;
Landroid/content/SyncAdaptersCache;->mAuthorityToSyncAdapters:Landroid/util/SparseArray;
@@ -18185,7 +17018,6 @@
Landroid/content/SyncRequest;->TAG:Ljava/lang/String;
Landroid/content/SyncResult;-><init>(Landroid/os/Parcel;)V
Landroid/content/SyncResult;-><init>(Z)V
-Landroid/content/SyncStatusInfo$Stats;
Landroid/content/SyncStatusInfo$Stats;-><init>()V
Landroid/content/SyncStatusInfo$Stats;->clear()V
Landroid/content/SyncStatusInfo$Stats;->copyTo(Landroid/content/SyncStatusInfo$Stats;)V
@@ -18201,7 +17033,6 @@
Landroid/content/SyncStatusInfo$Stats;->readFromParcel(Landroid/os/Parcel;)V
Landroid/content/SyncStatusInfo$Stats;->totalElapsedTime:J
Landroid/content/SyncStatusInfo$Stats;->writeToParcel(Landroid/os/Parcel;)V
-Landroid/content/SyncStatusInfo;
Landroid/content/SyncStatusInfo;-><init>(Landroid/content/SyncStatusInfo;)V
Landroid/content/SyncStatusInfo;->addEvent(Ljava/lang/String;)V
Landroid/content/SyncStatusInfo;->areSameDates(JJ)Z
@@ -18224,7 +17055,6 @@
Landroid/content/SyncStatusInfo;->totalStats:Landroid/content/SyncStatusInfo$Stats;
Landroid/content/SyncStatusInfo;->VERSION:I
Landroid/content/SyncStatusInfo;->yesterdayStats:Landroid/content/SyncStatusInfo$Stats;
-Landroid/content/UndoManager$UndoState;
Landroid/content/UndoManager$UndoState;-><init>(Landroid/content/UndoManager;I)V
Landroid/content/UndoManager$UndoState;-><init>(Landroid/content/UndoManager;Landroid/os/Parcel;Ljava/lang/ClassLoader;)V
Landroid/content/UndoManager$UndoState;->addOperation(Landroid/content/UndoOperation;)V
@@ -18253,7 +17083,6 @@
Landroid/content/UndoManager$UndoState;->undo()V
Landroid/content/UndoManager$UndoState;->updateLabel(Ljava/lang/CharSequence;)V
Landroid/content/UndoManager$UndoState;->writeToParcel(Landroid/os/Parcel;)V
-Landroid/content/UndoManager;
Landroid/content/UndoManager;->createWorkingState()V
Landroid/content/UndoManager;->findNextState(Ljava/util/ArrayList;[Landroid/content/UndoOwner;I)I
Landroid/content/UndoManager;->findPrevState(Ljava/util/ArrayList;[Landroid/content/UndoOwner;I)I
@@ -18290,7 +17119,6 @@
Landroid/content/UndoManager;->setHistorySize(I)V
Landroid/content/UndoManager;->suggestUndoLabel(Ljava/lang/CharSequence;)V
Landroid/content/UndoManager;->uncommitState(ILandroid/content/UndoOwner;)Z
-Landroid/content/UndoOperation;
Landroid/content/UndoOperation;->allowMerge()Z
Landroid/content/UndoOperation;->commit()V
Landroid/content/UndoOperation;->getOwner()Landroid/content/UndoOwner;
@@ -18300,7 +17128,6 @@
Landroid/content/UndoOperation;->mOwner:Landroid/content/UndoOwner;
Landroid/content/UndoOperation;->redo()V
Landroid/content/UndoOperation;->undo()V
-Landroid/content/UndoOwner;
Landroid/content/UndoOwner;-><init>(Ljava/lang/String;Landroid/content/UndoManager;)V
Landroid/content/UndoOwner;->getData()Ljava/lang/Object;
Landroid/content/UndoOwner;->getTag()Ljava/lang/String;
@@ -18330,7 +17157,6 @@
Landroid/database/AbstractCursor;->onDeactivateOrClose()V
Landroid/database/AbstractCursor;->setNotificationUri(Landroid/content/ContentResolver;Landroid/net/Uri;I)V
Landroid/database/AbstractCursor;->TAG:Ljava/lang/String;
-Landroid/database/BulkCursorDescriptor;
Landroid/database/BulkCursorDescriptor;-><init>()V
Landroid/database/BulkCursorDescriptor;->columnNames:[Ljava/lang/String;
Landroid/database/BulkCursorDescriptor;->count:I
@@ -18339,10 +17165,8 @@
Landroid/database/BulkCursorDescriptor;->readFromParcel(Landroid/os/Parcel;)V
Landroid/database/BulkCursorDescriptor;->wantsAllOnMoveCalls:Z
Landroid/database/BulkCursorDescriptor;->window:Landroid/database/CursorWindow;
-Landroid/database/BulkCursorNative;
Landroid/database/BulkCursorNative;-><init>()V
Landroid/database/BulkCursorNative;->asInterface(Landroid/os/IBinder;)Landroid/database/IBulkCursor;
-Landroid/database/BulkCursorToCursorAdaptor;
Landroid/database/BulkCursorToCursorAdaptor;-><init>()V
Landroid/database/BulkCursorToCursorAdaptor;->getObserver()Landroid/database/IContentObserver;
Landroid/database/BulkCursorToCursorAdaptor;->initialize(Landroid/database/BulkCursorDescriptor;)V
@@ -18353,12 +17177,9 @@
Landroid/database/BulkCursorToCursorAdaptor;->mWantsAllOnMoveCalls:Z
Landroid/database/BulkCursorToCursorAdaptor;->TAG:Ljava/lang/String;
Landroid/database/BulkCursorToCursorAdaptor;->throwIfCursorIsClosed()V
-Landroid/database/ContentObserver$NotificationRunnable;
-Landroid/database/ContentObserver$NotificationRunnable;-><init>(ZLandroid/net/Uri;I)V
Landroid/database/ContentObserver$NotificationRunnable;->mSelfChange:Z
Landroid/database/ContentObserver$NotificationRunnable;->mUri:Landroid/net/Uri;
Landroid/database/ContentObserver$NotificationRunnable;->mUserId:I
-Landroid/database/ContentObserver$Transport;
Landroid/database/ContentObserver$Transport;-><init>(Landroid/database/ContentObserver;)V
Landroid/database/ContentObserver$Transport;->mContentObserver:Landroid/database/ContentObserver;
Landroid/database/ContentObserver$Transport;->onChange(ZLandroid/net/Uri;I)V
@@ -18369,9 +17190,7 @@
Landroid/database/ContentObserver;->mLock:Ljava/lang/Object;
Landroid/database/ContentObserver;->mTransport:Landroid/database/ContentObserver$Transport;
Landroid/database/ContentObserver;->onChange(ZLandroid/net/Uri;I)V
-Landroid/database/CursorJoiner$Result;-><init>()V
Landroid/database/CursorJoiner;->buildColumnIndiciesArray(Landroid/database/Cursor;[Ljava/lang/String;)[I
-Landroid/database/CursorJoiner;->compareStrings([[Ljava/lang/String;)I
Landroid/database/CursorJoiner;->incrementCursors()V
Landroid/database/CursorJoiner;->mColumnsLeft:[I
Landroid/database/CursorJoiner;->mColumnsRight:[I
@@ -18381,11 +17200,9 @@
Landroid/database/CursorJoiner;->mCursorRight:Landroid/database/Cursor;
Landroid/database/CursorJoiner;->mValues:[Ljava/lang/String;
Landroid/database/CursorJoiner;->populateValues([Ljava/lang/String;Landroid/database/Cursor;[II)V
-Landroid/database/CursorToBulkCursorAdaptor$ContentObserverProxy;
Landroid/database/CursorToBulkCursorAdaptor$ContentObserverProxy;-><init>(Landroid/database/IContentObserver;Landroid/os/IBinder$DeathRecipient;)V
Landroid/database/CursorToBulkCursorAdaptor$ContentObserverProxy;->mRemote:Landroid/database/IContentObserver;
Landroid/database/CursorToBulkCursorAdaptor$ContentObserverProxy;->unlinkToDeath(Landroid/os/IBinder$DeathRecipient;)Z
-Landroid/database/CursorToBulkCursorAdaptor;
Landroid/database/CursorToBulkCursorAdaptor;-><init>(Landroid/database/Cursor;Landroid/database/IContentObserver;Ljava/lang/String;)V
Landroid/database/CursorToBulkCursorAdaptor;->close()V
Landroid/database/CursorToBulkCursorAdaptor;->closeFilledWindowLocked()V
@@ -18437,7 +17254,6 @@
Landroid/database/CursorWindow;->recordClosingOfWindow(J)V
Landroid/database/CursorWindow;->recordNewWindow(IJ)V
Landroid/database/CursorWindow;->STATS_TAG:Ljava/lang/String;
-Landroid/database/CursorWindowAllocationException;
Landroid/database/CursorWindowAllocationException;-><init>(Ljava/lang/String;)V
Landroid/database/DatabaseUtils$InsertHelper;->buildSQL()V
Landroid/database/DatabaseUtils$InsertHelper;->getStatement(Z)Landroid/database/sqlite/SQLiteStatement;
@@ -18464,7 +17280,6 @@
Landroid/database/DatabaseUtils;->TAG:Ljava/lang/String;
Landroid/database/DefaultDatabaseErrorHandler;->deleteDatabaseFile(Ljava/lang/String;)V
Landroid/database/DefaultDatabaseErrorHandler;->TAG:Ljava/lang/String;
-Landroid/database/IBulkCursor;
Landroid/database/IBulkCursor;->close()V
Landroid/database/IBulkCursor;->CLOSE_TRANSACTION:I
Landroid/database/IBulkCursor;->deactivate()V
@@ -18480,16 +17295,12 @@
Landroid/database/IBulkCursor;->REQUERY_TRANSACTION:I
Landroid/database/IBulkCursor;->respond(Landroid/os/Bundle;)Landroid/os/Bundle;
Landroid/database/IBulkCursor;->RESPOND_TRANSACTION:I
-Landroid/database/IContentObserver$Stub$Proxy;
Landroid/database/IContentObserver$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/database/IContentObserver$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/database/IContentObserver$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/database/IContentObserver$Stub$Proxy;->onChange(ZLandroid/net/Uri;I)V
-Landroid/database/IContentObserver$Stub;
Landroid/database/IContentObserver$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/database/IContentObserver$Stub;->TRANSACTION_onChange:I
-Landroid/database/IContentObserver;
-Landroid/database/MatrixCursor$RowBuilder;-><init>(I)V
Landroid/database/MatrixCursor$RowBuilder;->endIndex:I
Landroid/database/MatrixCursor$RowBuilder;->index:I
Landroid/database/MatrixCursor$RowBuilder;->row:I
@@ -18500,9 +17311,7 @@
Landroid/database/MergeCursor;->mCursor:Landroid/database/Cursor;
Landroid/database/MergeCursor;->mCursors:[Landroid/database/Cursor;
Landroid/database/MergeCursor;->mObserver:Landroid/database/DataSetObserver;
-Landroid/database/sqlite/DatabaseObjectNotClosedException;
Landroid/database/sqlite/DatabaseObjectNotClosedException;->s:Ljava/lang/String;
-Landroid/database/sqlite/SQLiteCompatibilityWalFlags;
Landroid/database/sqlite/SQLiteCompatibilityWalFlags;-><init>()V
Landroid/database/sqlite/SQLiteCompatibilityWalFlags;->areFlagsSet()Z
Landroid/database/sqlite/SQLiteCompatibilityWalFlags;->getWALSyncMode()Ljava/lang/String;
@@ -18516,7 +17325,6 @@
Landroid/database/sqlite/SQLiteCompatibilityWalFlags;->sInitialized:Z
Landroid/database/sqlite/SQLiteCompatibilityWalFlags;->sWALSyncMode:Ljava/lang/String;
Landroid/database/sqlite/SQLiteCompatibilityWalFlags;->TAG:Ljava/lang/String;
-Landroid/database/sqlite/SQLiteConnection$Operation;
Landroid/database/sqlite/SQLiteConnection$Operation;-><init>()V
Landroid/database/sqlite/SQLiteConnection$Operation;->describe(Ljava/lang/StringBuilder;Z)V
Landroid/database/sqlite/SQLiteConnection$Operation;->getStatus()Ljava/lang/String;
@@ -18531,7 +17339,6 @@
Landroid/database/sqlite/SQLiteConnection$Operation;->mSql:Ljava/lang/String;
Landroid/database/sqlite/SQLiteConnection$Operation;->mStartTime:J
Landroid/database/sqlite/SQLiteConnection$Operation;->mStartWallTime:J
-Landroid/database/sqlite/SQLiteConnection$OperationLog;
Landroid/database/sqlite/SQLiteConnection$OperationLog;-><init>(Landroid/database/sqlite/SQLiteConnectionPool;)V
Landroid/database/sqlite/SQLiteConnection$OperationLog;->beginOperation(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)I
Landroid/database/sqlite/SQLiteConnection$OperationLog;->COOKIE_GENERATION_SHIFT:I
@@ -18551,7 +17358,6 @@
Landroid/database/sqlite/SQLiteConnection$OperationLog;->mOperations:[Landroid/database/sqlite/SQLiteConnection$Operation;
Landroid/database/sqlite/SQLiteConnection$OperationLog;->mPool:Landroid/database/sqlite/SQLiteConnectionPool;
Landroid/database/sqlite/SQLiteConnection$OperationLog;->newOperationCookieLocked(I)I
-Landroid/database/sqlite/SQLiteConnection$PreparedStatement;
Landroid/database/sqlite/SQLiteConnection$PreparedStatement;-><init>()V
Landroid/database/sqlite/SQLiteConnection$PreparedStatement;->mInCache:Z
Landroid/database/sqlite/SQLiteConnection$PreparedStatement;->mInUse:Z
@@ -18561,11 +17367,8 @@
Landroid/database/sqlite/SQLiteConnection$PreparedStatement;->mSql:Ljava/lang/String;
Landroid/database/sqlite/SQLiteConnection$PreparedStatement;->mStatementPtr:J
Landroid/database/sqlite/SQLiteConnection$PreparedStatement;->mType:I
-Landroid/database/sqlite/SQLiteConnection$PreparedStatementCache;
-Landroid/database/sqlite/SQLiteConnection$PreparedStatementCache;-><init>(I)V
Landroid/database/sqlite/SQLiteConnection$PreparedStatementCache;->dump(Landroid/util/Printer;)V
Landroid/database/sqlite/SQLiteConnection$PreparedStatementCache;->entryRemoved(ZLjava/lang/String;Landroid/database/sqlite/SQLiteConnection$PreparedStatement;Landroid/database/sqlite/SQLiteConnection$PreparedStatement;)V
-Landroid/database/sqlite/SQLiteConnection;
Landroid/database/sqlite/SQLiteConnection;-><init>(Landroid/database/sqlite/SQLiteConnectionPool;Landroid/database/sqlite/SQLiteDatabaseConfiguration;IZ)V
Landroid/database/sqlite/SQLiteConnection;->acquirePreparedStatement(Ljava/lang/String;)Landroid/database/sqlite/SQLiteConnection$PreparedStatement;
Landroid/database/sqlite/SQLiteConnection;->applyBlockGuardPolicy(Landroid/database/sqlite/SQLiteConnection$PreparedStatement;)V
@@ -18653,14 +17456,11 @@
Landroid/database/sqlite/SQLiteConnection;->TAG:Ljava/lang/String;
Landroid/database/sqlite/SQLiteConnection;->throwIfStatementForbidden(Landroid/database/sqlite/SQLiteConnection$PreparedStatement;)V
Landroid/database/sqlite/SQLiteConnection;->trimSqlForDisplay(Ljava/lang/String;)Ljava/lang/String;
-Landroid/database/sqlite/SQLiteConnectionPool$AcquiredConnectionStatus;
-Landroid/database/sqlite/SQLiteConnectionPool$AcquiredConnectionStatus;-><init>()V
Landroid/database/sqlite/SQLiteConnectionPool$AcquiredConnectionStatus;->DISCARD:Landroid/database/sqlite/SQLiteConnectionPool$AcquiredConnectionStatus;
Landroid/database/sqlite/SQLiteConnectionPool$AcquiredConnectionStatus;->NORMAL:Landroid/database/sqlite/SQLiteConnectionPool$AcquiredConnectionStatus;
Landroid/database/sqlite/SQLiteConnectionPool$AcquiredConnectionStatus;->RECONFIGURE:Landroid/database/sqlite/SQLiteConnectionPool$AcquiredConnectionStatus;
Landroid/database/sqlite/SQLiteConnectionPool$AcquiredConnectionStatus;->valueOf(Ljava/lang/String;)Landroid/database/sqlite/SQLiteConnectionPool$AcquiredConnectionStatus;
Landroid/database/sqlite/SQLiteConnectionPool$AcquiredConnectionStatus;->values()[Landroid/database/sqlite/SQLiteConnectionPool$AcquiredConnectionStatus;
-Landroid/database/sqlite/SQLiteConnectionPool$ConnectionWaiter;
Landroid/database/sqlite/SQLiteConnectionPool$ConnectionWaiter;-><init>()V
Landroid/database/sqlite/SQLiteConnectionPool$ConnectionWaiter;->mAssignedConnection:Landroid/database/sqlite/SQLiteConnection;
Landroid/database/sqlite/SQLiteConnectionPool$ConnectionWaiter;->mConnectionFlags:I
@@ -18672,13 +17472,10 @@
Landroid/database/sqlite/SQLiteConnectionPool$ConnectionWaiter;->mStartTime:J
Landroid/database/sqlite/SQLiteConnectionPool$ConnectionWaiter;->mThread:Ljava/lang/Thread;
Landroid/database/sqlite/SQLiteConnectionPool$ConnectionWaiter;->mWantPrimaryConnection:Z
-Landroid/database/sqlite/SQLiteConnectionPool$IdleConnectionHandler;
-Landroid/database/sqlite/SQLiteConnectionPool$IdleConnectionHandler;-><init>(Landroid/os/Looper;J)V
Landroid/database/sqlite/SQLiteConnectionPool$IdleConnectionHandler;->connectionAcquired(Landroid/database/sqlite/SQLiteConnection;)V
Landroid/database/sqlite/SQLiteConnectionPool$IdleConnectionHandler;->connectionClosed(Landroid/database/sqlite/SQLiteConnection;)V
Landroid/database/sqlite/SQLiteConnectionPool$IdleConnectionHandler;->connectionReleased(Landroid/database/sqlite/SQLiteConnection;)V
Landroid/database/sqlite/SQLiteConnectionPool$IdleConnectionHandler;->mTimeout:J
-Landroid/database/sqlite/SQLiteConnectionPool;
Landroid/database/sqlite/SQLiteConnectionPool;-><init>(Landroid/database/sqlite/SQLiteDatabaseConfiguration;)V
Landroid/database/sqlite/SQLiteConnectionPool;->acquireConnection(Ljava/lang/String;ILandroid/os/CancellationSignal;)Landroid/database/sqlite/SQLiteConnection;
Landroid/database/sqlite/SQLiteConnectionPool;->cancelConnectionWaiterLocked(Landroid/database/sqlite/SQLiteConnectionPool$ConnectionWaiter;)V
@@ -18745,12 +17542,9 @@
Landroid/database/sqlite/SQLiteCursor;->mStackTrace:Ljava/lang/Throwable;
Landroid/database/sqlite/SQLiteCursor;->NO_COUNT:I
Landroid/database/sqlite/SQLiteCursor;->TAG:Ljava/lang/String;
-Landroid/database/sqlite/SQLiteCustomFunction;
Landroid/database/sqlite/SQLiteCustomFunction;-><init>(Ljava/lang/String;ILandroid/database/sqlite/SQLiteDatabase$CustomFunction;)V
Landroid/database/sqlite/SQLiteCustomFunction;->callback:Landroid/database/sqlite/SQLiteDatabase$CustomFunction;
-Landroid/database/sqlite/SQLiteDatabase$CustomFunction;
Landroid/database/sqlite/SQLiteDatabase$CustomFunction;->callback([Ljava/lang/String;)V
-Landroid/database/sqlite/SQLiteDatabase$DatabaseOpenFlags;
Landroid/database/sqlite/SQLiteDatabase$OpenParams$Builder;->isWriteAheadLoggingEnabled()Z
Landroid/database/sqlite/SQLiteDatabase$OpenParams$Builder;->mCursorFactory:Landroid/database/sqlite/SQLiteDatabase$CursorFactory;
Landroid/database/sqlite/SQLiteDatabase$OpenParams$Builder;->mErrorHandler:Landroid/database/DatabaseErrorHandler;
@@ -18800,7 +17594,6 @@
Landroid/database/sqlite/SQLiteDatabase;->TAG:Ljava/lang/String;
Landroid/database/sqlite/SQLiteDatabase;->throwIfNotOpenLocked()V
Landroid/database/sqlite/SQLiteDatabase;->yieldIfContendedHelper(ZJ)Z
-Landroid/database/sqlite/SQLiteDatabaseConfiguration;
Landroid/database/sqlite/SQLiteDatabaseConfiguration;-><init>(Landroid/database/sqlite/SQLiteDatabaseConfiguration;)V
Landroid/database/sqlite/SQLiteDatabaseConfiguration;-><init>(Ljava/lang/String;I)V
Landroid/database/sqlite/SQLiteDatabaseConfiguration;->customFunctions:Ljava/util/ArrayList;
@@ -18821,17 +17614,14 @@
Landroid/database/sqlite/SQLiteDatabaseConfiguration;->syncMode:Ljava/lang/String;
Landroid/database/sqlite/SQLiteDatabaseConfiguration;->updateParametersFrom(Landroid/database/sqlite/SQLiteDatabaseConfiguration;)V
Landroid/database/sqlite/SQLiteDatabaseConfiguration;->useCompatibilityWal()Z
-Landroid/database/sqlite/SQLiteDebug$DbStats;
Landroid/database/sqlite/SQLiteDebug$DbStats;-><init>(Ljava/lang/String;JJIIII)V
Landroid/database/sqlite/SQLiteDebug$DbStats;->cache:Ljava/lang/String;
Landroid/database/sqlite/SQLiteDebug$DbStats;->dbName:Ljava/lang/String;
Landroid/database/sqlite/SQLiteDebug$DbStats;->dbSize:J
Landroid/database/sqlite/SQLiteDebug$DbStats;->lookaside:I
Landroid/database/sqlite/SQLiteDebug$DbStats;->pageSize:J
-Landroid/database/sqlite/SQLiteDebug$PagerStats;
Landroid/database/sqlite/SQLiteDebug$PagerStats;-><init>()V
Landroid/database/sqlite/SQLiteDebug$PagerStats;->dbStats:Ljava/util/ArrayList;
-Landroid/database/sqlite/SQLiteDebug;
Landroid/database/sqlite/SQLiteDebug;-><init>()V
Landroid/database/sqlite/SQLiteDebug;->DEBUG_LOG_SLOW_QUERIES:Z
Landroid/database/sqlite/SQLiteDebug;->DEBUG_SQL_LOG:Z
@@ -18888,14 +17678,12 @@
Landroid/database/sqlite/SQLiteQueryBuilder;->mStrict:Z
Landroid/database/sqlite/SQLiteQueryBuilder;->sLimitPattern:Ljava/util/regex/Pattern;
Landroid/database/sqlite/SQLiteQueryBuilder;->TAG:Ljava/lang/String;
-Landroid/database/sqlite/SQLiteSession$Transaction;
Landroid/database/sqlite/SQLiteSession$Transaction;-><init>()V
Landroid/database/sqlite/SQLiteSession$Transaction;->mChildFailed:Z
Landroid/database/sqlite/SQLiteSession$Transaction;->mListener:Landroid/database/sqlite/SQLiteTransactionListener;
Landroid/database/sqlite/SQLiteSession$Transaction;->mMarkedSuccessful:Z
Landroid/database/sqlite/SQLiteSession$Transaction;->mMode:I
Landroid/database/sqlite/SQLiteSession$Transaction;->mParent:Landroid/database/sqlite/SQLiteSession$Transaction;
-Landroid/database/sqlite/SQLiteSession;
Landroid/database/sqlite/SQLiteSession;-><init>(Landroid/database/sqlite/SQLiteConnectionPool;)V
Landroid/database/sqlite/SQLiteSession;->acquireConnection(Ljava/lang/String;ILandroid/os/CancellationSignal;)V
Landroid/database/sqlite/SQLiteSession;->beginTransactionUnchecked(ILandroid/database/sqlite/SQLiteTransactionListener;ILandroid/os/CancellationSignal;)V
@@ -18931,30 +17719,25 @@
Landroid/database/sqlite/SQLiteSession;->TRANSACTION_MODE_IMMEDIATE:I
Landroid/database/sqlite/SQLiteSession;->yieldTransaction(JZLandroid/os/CancellationSignal;)Z
Landroid/database/sqlite/SQLiteSession;->yieldTransactionUnchecked(JLandroid/os/CancellationSignal;)Z
-Landroid/database/sqlite/SQLiteStatementInfo;
Landroid/database/sqlite/SQLiteStatementInfo;-><init>()V
Landroid/database/sqlite/SQLiteStatementInfo;->columnNames:[Ljava/lang/String;
Landroid/database/sqlite/SQLiteStatementInfo;->numParameters:I
Landroid/database/sqlite/SQLiteStatementInfo;->readOnly:Z
-Landroid/database/sqlite/SqliteWrapper;
Landroid/database/sqlite/SqliteWrapper;-><init>()V
Landroid/database/sqlite/SqliteWrapper;->isLowMemory(Landroid/database/sqlite/SQLiteException;)Z
Landroid/database/sqlite/SqliteWrapper;->requery(Landroid/content/Context;Landroid/database/Cursor;)Z
Landroid/database/sqlite/SqliteWrapper;->SQLITE_EXCEPTION_DETAIL_MESSAGE:Ljava/lang/String;
Landroid/database/sqlite/SqliteWrapper;->TAG:Ljava/lang/String;
-Landroid/ddm/DdmHandleAppName;
Landroid/ddm/DdmHandleAppName;-><init>()V
Landroid/ddm/DdmHandleAppName;->CHUNK_APNM:I
Landroid/ddm/DdmHandleAppName;->mAppName:Ljava/lang/String;
Landroid/ddm/DdmHandleAppName;->mInstance:Landroid/ddm/DdmHandleAppName;
Landroid/ddm/DdmHandleAppName;->register()V
Landroid/ddm/DdmHandleAppName;->sendAPNM(Ljava/lang/String;I)V
-Landroid/ddm/DdmHandleExit;
Landroid/ddm/DdmHandleExit;-><init>()V
Landroid/ddm/DdmHandleExit;->CHUNK_EXIT:I
Landroid/ddm/DdmHandleExit;->mInstance:Landroid/ddm/DdmHandleExit;
Landroid/ddm/DdmHandleExit;->register()V
-Landroid/ddm/DdmHandleHeap;
Landroid/ddm/DdmHandleHeap;-><init>()V
Landroid/ddm/DdmHandleHeap;->CHUNK_HPDS:I
Landroid/ddm/DdmHandleHeap;->CHUNK_HPDU:I
@@ -18975,7 +17758,6 @@
Landroid/ddm/DdmHandleHeap;->handleREAQ(Lorg/apache/harmony/dalvik/ddmc/Chunk;)Lorg/apache/harmony/dalvik/ddmc/Chunk;
Landroid/ddm/DdmHandleHeap;->mInstance:Landroid/ddm/DdmHandleHeap;
Landroid/ddm/DdmHandleHeap;->register()V
-Landroid/ddm/DdmHandleHello;
Landroid/ddm/DdmHandleHello;-><init>()V
Landroid/ddm/DdmHandleHello;->CHUNK_FEAT:I
Landroid/ddm/DdmHandleHello;->CHUNK_HELO:I
@@ -18986,14 +17768,12 @@
Landroid/ddm/DdmHandleHello;->mInstance:Landroid/ddm/DdmHandleHello;
Landroid/ddm/DdmHandleHello;->register()V
Landroid/ddm/DdmHandleHello;->sendWAIT(I)V
-Landroid/ddm/DdmHandleNativeHeap;
Landroid/ddm/DdmHandleNativeHeap;-><init>()V
Landroid/ddm/DdmHandleNativeHeap;->CHUNK_NHGT:I
Landroid/ddm/DdmHandleNativeHeap;->getLeakInfo()[B
Landroid/ddm/DdmHandleNativeHeap;->handleNHGT(Lorg/apache/harmony/dalvik/ddmc/Chunk;)Lorg/apache/harmony/dalvik/ddmc/Chunk;
Landroid/ddm/DdmHandleNativeHeap;->mInstance:Landroid/ddm/DdmHandleNativeHeap;
Landroid/ddm/DdmHandleNativeHeap;->register()V
-Landroid/ddm/DdmHandleProfiling;
Landroid/ddm/DdmHandleProfiling;-><init>()V
Landroid/ddm/DdmHandleProfiling;->CHUNK_MPRE:I
Landroid/ddm/DdmHandleProfiling;->CHUNK_MPRQ:I
@@ -19011,7 +17791,6 @@
Landroid/ddm/DdmHandleProfiling;->handleSPSS(Lorg/apache/harmony/dalvik/ddmc/Chunk;)Lorg/apache/harmony/dalvik/ddmc/Chunk;
Landroid/ddm/DdmHandleProfiling;->mInstance:Landroid/ddm/DdmHandleProfiling;
Landroid/ddm/DdmHandleProfiling;->register()V
-Landroid/ddm/DdmHandleThread;
Landroid/ddm/DdmHandleThread;-><init>()V
Landroid/ddm/DdmHandleThread;->CHUNK_STKL:I
Landroid/ddm/DdmHandleThread;->CHUNK_THCR:I
@@ -19024,7 +17803,6 @@
Landroid/ddm/DdmHandleThread;->handleTHST(Lorg/apache/harmony/dalvik/ddmc/Chunk;)Lorg/apache/harmony/dalvik/ddmc/Chunk;
Landroid/ddm/DdmHandleThread;->mInstance:Landroid/ddm/DdmHandleThread;
Landroid/ddm/DdmHandleThread;->register()V
-Landroid/ddm/DdmHandleViewDebug;
Landroid/ddm/DdmHandleViewDebug;-><init>()V
Landroid/ddm/DdmHandleViewDebug;->captureLayers(Landroid/view/View;)Lorg/apache/harmony/dalvik/ddmc/Chunk;
Landroid/ddm/DdmHandleViewDebug;->captureView(Landroid/view/View;Landroid/view/View;)Lorg/apache/harmony/dalvik/ddmc/Chunk;
@@ -19054,7 +17832,6 @@
Landroid/ddm/DdmHandleViewDebug;->VURT_CAPTURE_LAYERS:I
Landroid/ddm/DdmHandleViewDebug;->VURT_DUMP_HIERARCHY:I
Landroid/ddm/DdmHandleViewDebug;->VURT_DUMP_THEME:I
-Landroid/ddm/DdmRegister;
Landroid/ddm/DdmRegister;-><init>()V
Landroid/ddm/DdmRegister;->registerHandlers()V
Landroid/drm/DrmConvertedStatus;->isValidStatusCode(I)Z
@@ -19075,10 +17852,6 @@
Landroid/drm/DrmInfoRequest;->mMimeType:Ljava/lang/String;
Landroid/drm/DrmInfoRequest;->mRequestInformation:Ljava/util/HashMap;
Landroid/drm/DrmInfoStatus;->isValidStatusCode(I)Z
-Landroid/drm/DrmManagerClient$EventHandler;
-Landroid/drm/DrmManagerClient$EventHandler;-><init>(Landroid/os/Looper;)V
-Landroid/drm/DrmManagerClient$InfoHandler;
-Landroid/drm/DrmManagerClient$InfoHandler;-><init>(Landroid/os/Looper;)V
Landroid/drm/DrmManagerClient$InfoHandler;->INFO_EVENT_TYPE:I
Landroid/drm/DrmManagerClient;->ACTION_PROCESS_DRM_INFO:I
Landroid/drm/DrmManagerClient;->ACTION_REMOVE_ALL_RIGHTS:I
@@ -19122,7 +17895,6 @@
Landroid/drm/DrmManagerClient;->_removeRights(ILjava/lang/String;)I
Landroid/drm/DrmManagerClient;->_saveRights(ILandroid/drm/DrmRights;Ljava/lang/String;Ljava/lang/String;)I
Landroid/drm/DrmManagerClient;->_setListeners(ILjava/lang/Object;)V
-Landroid/drm/DrmOutputStream;
Landroid/drm/DrmOutputStream;-><init>(Landroid/drm/DrmManagerClient;Landroid/os/ParcelFileDescriptor;Ljava/lang/String;)V
Landroid/drm/DrmOutputStream;->finish()V
Landroid/drm/DrmOutputStream;->mClient:Landroid/drm/DrmManagerClient;
@@ -19157,17 +17929,11 @@
Landroid/drm/ProcessedData;->mAccountId:Ljava/lang/String;
Landroid/drm/ProcessedData;->mData:[B
Landroid/drm/ProcessedData;->mSubscriptionId:Ljava/lang/String;
-Landroid/filterfw/core/AsyncRunner$AsyncRunnerTask;
-Landroid/filterfw/core/AsyncRunner$AsyncRunnerTask;-><init>()V
-Landroid/filterfw/core/AsyncRunner$AsyncRunnerTask;->doInBackground([[Landroid/filterfw/core/SyncRunner;)Landroid/filterfw/core/AsyncRunner$RunnerResult;
Landroid/filterfw/core/AsyncRunner$AsyncRunnerTask;->onCancelled(Landroid/filterfw/core/AsyncRunner$RunnerResult;)V
Landroid/filterfw/core/AsyncRunner$AsyncRunnerTask;->onPostExecute(Landroid/filterfw/core/AsyncRunner$RunnerResult;)V
Landroid/filterfw/core/AsyncRunner$AsyncRunnerTask;->TAG:Ljava/lang/String;
-Landroid/filterfw/core/AsyncRunner$RunnerResult;
-Landroid/filterfw/core/AsyncRunner$RunnerResult;-><init>()V
Landroid/filterfw/core/AsyncRunner$RunnerResult;->exception:Ljava/lang/Exception;
Landroid/filterfw/core/AsyncRunner$RunnerResult;->status:I
-Landroid/filterfw/core/AsyncRunner;
Landroid/filterfw/core/AsyncRunner;-><init>(Landroid/filterfw/core/FilterContext;)V
Landroid/filterfw/core/AsyncRunner;-><init>(Landroid/filterfw/core/FilterContext;Ljava/lang/Class;)V
Landroid/filterfw/core/AsyncRunner;->close()V
@@ -19188,7 +17954,6 @@
Landroid/filterfw/core/AsyncRunner;->setRunning(Z)V
Landroid/filterfw/core/AsyncRunner;->stop()V
Landroid/filterfw/core/AsyncRunner;->TAG:Ljava/lang/String;
-Landroid/filterfw/core/CachedFrameManager;
Landroid/filterfw/core/CachedFrameManager;-><init>()V
Landroid/filterfw/core/CachedFrameManager;->clearCache()V
Landroid/filterfw/core/CachedFrameManager;->dropOldestFrame()V
@@ -19203,7 +17968,6 @@
Landroid/filterfw/core/CachedFrameManager;->retainFrame(Landroid/filterfw/core/Frame;)Landroid/filterfw/core/Frame;
Landroid/filterfw/core/CachedFrameManager;->storeFrame(Landroid/filterfw/core/Frame;)Z
Landroid/filterfw/core/CachedFrameManager;->tearDown()V
-Landroid/filterfw/core/FieldPort;
Landroid/filterfw/core/FieldPort;-><init>(Landroid/filterfw/core/Filter;Ljava/lang/String;Ljava/lang/reflect/Field;Z)V
Landroid/filterfw/core/FieldPort;->acceptsFrame()Z
Landroid/filterfw/core/FieldPort;->clear()V
@@ -19218,7 +17982,6 @@
Landroid/filterfw/core/FieldPort;->setFieldFrame(Landroid/filterfw/core/Frame;Z)V
Landroid/filterfw/core/FieldPort;->setFrame(Landroid/filterfw/core/Frame;)V
Landroid/filterfw/core/FieldPort;->transfer(Landroid/filterfw/core/FilterContext;)V
-Landroid/filterfw/core/Filter;
Landroid/filterfw/core/Filter;->addAndSetFinalPorts(Landroid/filterfw/core/KeyValueMap;)V
Landroid/filterfw/core/Filter;->addAnnotatedPorts()V
Landroid/filterfw/core/Filter;->addFieldGenerator(Landroid/filterfw/core/GenerateFieldPort;Ljava/lang/reflect/Field;)V
@@ -19256,7 +18019,6 @@
Landroid/filterfw/core/Filter;->initFinalPorts(Landroid/filterfw/core/KeyValueMap;)V
Landroid/filterfw/core/Filter;->initProgramInputs(Landroid/filterfw/core/Program;Landroid/filterfw/core/FilterContext;)V
Landroid/filterfw/core/Filter;->initRemainingPorts(Landroid/filterfw/core/KeyValueMap;)V
-Landroid/filterfw/core/Filter;->initWithAssignmentList([[Ljava/lang/Object;)V
Landroid/filterfw/core/Filter;->initWithAssignmentString(Ljava/lang/String;)V
Landroid/filterfw/core/Filter;->initWithValueMap(Landroid/filterfw/core/KeyValueMap;)V
Landroid/filterfw/core/Filter;->inputConditionsMet()Z
@@ -19309,9 +18071,7 @@
Landroid/filterfw/core/Filter;->transferInputPortFrame(Ljava/lang/String;Landroid/filterfw/core/FilterContext;)V
Landroid/filterfw/core/Filter;->unsetStatus(I)V
Landroid/filterfw/core/Filter;->wrapInputValue(Ljava/lang/String;Ljava/lang/Object;)Landroid/filterfw/core/Frame;
-Landroid/filterfw/core/FilterContext$OnFrameReceivedListener;
Landroid/filterfw/core/FilterContext$OnFrameReceivedListener;->onFrameReceived(Landroid/filterfw/core/Filter;Landroid/filterfw/core/Frame;Ljava/lang/Object;)V
-Landroid/filterfw/core/FilterContext;
Landroid/filterfw/core/FilterContext;-><init>()V
Landroid/filterfw/core/FilterContext;->addGraph(Landroid/filterfw/core/FilterGraph;)V
Landroid/filterfw/core/FilterContext;->fetchFrame(Ljava/lang/String;)Landroid/filterfw/core/Frame;
@@ -19324,7 +18084,6 @@
Landroid/filterfw/core/FilterContext;->setFrameManager(Landroid/filterfw/core/FrameManager;)V
Landroid/filterfw/core/FilterContext;->storeFrame(Ljava/lang/String;Landroid/filterfw/core/Frame;)V
Landroid/filterfw/core/FilterContext;->tearDown()V
-Landroid/filterfw/core/FilterFactory;
Landroid/filterfw/core/FilterFactory;-><init>()V
Landroid/filterfw/core/FilterFactory;->addFilterLibrary(Ljava/lang/String;)V
Landroid/filterfw/core/FilterFactory;->addPackage(Ljava/lang/String;)V
@@ -19338,14 +18097,10 @@
Landroid/filterfw/core/FilterFactory;->mSharedFactory:Landroid/filterfw/core/FilterFactory;
Landroid/filterfw/core/FilterFactory;->sharedFactory()Landroid/filterfw/core/FilterFactory;
Landroid/filterfw/core/FilterFactory;->TAG:Ljava/lang/String;
-Landroid/filterfw/core/FilterFunction$FrameHolderPort;
-Landroid/filterfw/core/FilterFunction$FrameHolderPort;-><init>()V
-Landroid/filterfw/core/FilterFunction;
Landroid/filterfw/core/FilterFunction;-><init>(Landroid/filterfw/core/FilterContext;Landroid/filterfw/core/Filter;)V
Landroid/filterfw/core/FilterFunction;->close()V
Landroid/filterfw/core/FilterFunction;->connectFilterOutputs()V
Landroid/filterfw/core/FilterFunction;->execute(Landroid/filterfw/core/KeyValueMap;)Landroid/filterfw/core/Frame;
-Landroid/filterfw/core/FilterFunction;->executeWithArgList([[Ljava/lang/Object;)Landroid/filterfw/core/Frame;
Landroid/filterfw/core/FilterFunction;->getContext()Landroid/filterfw/core/FilterContext;
Landroid/filterfw/core/FilterFunction;->getFilter()Landroid/filterfw/core/Filter;
Landroid/filterfw/core/FilterFunction;->mFilter:Landroid/filterfw/core/Filter;
@@ -19355,7 +18110,6 @@
Landroid/filterfw/core/FilterFunction;->setInputFrame(Ljava/lang/String;Landroid/filterfw/core/Frame;)V
Landroid/filterfw/core/FilterFunction;->setInputValue(Ljava/lang/String;Ljava/lang/Object;)V
Landroid/filterfw/core/FilterFunction;->tearDown()V
-Landroid/filterfw/core/FilterGraph;
Landroid/filterfw/core/FilterGraph;-><init>()V
Landroid/filterfw/core/FilterGraph;->addFilter(Landroid/filterfw/core/Filter;)Z
Landroid/filterfw/core/FilterGraph;->AUTOBRANCH_OFF:I
@@ -19395,7 +18149,6 @@
Landroid/filterfw/core/FilterGraph;->TYPECHECK_OFF:I
Landroid/filterfw/core/FilterGraph;->TYPECHECK_STRICT:I
Landroid/filterfw/core/FilterGraph;->updateOutputs(Landroid/filterfw/core/Filter;)V
-Landroid/filterfw/core/FilterPort;
Landroid/filterfw/core/FilterPort;-><init>(Landroid/filterfw/core/Filter;Ljava/lang/String;)V
Landroid/filterfw/core/FilterPort;->assertPortIsOpen()V
Landroid/filterfw/core/FilterPort;->checkFrameManager(Landroid/filterfw/core/Frame;Landroid/filterfw/core/FilterContext;)V
@@ -19426,7 +18179,6 @@
Landroid/filterfw/core/FilterPort;->setFrame(Landroid/filterfw/core/Frame;)V
Landroid/filterfw/core/FilterPort;->setPortFormat(Landroid/filterfw/core/FrameFormat;)V
Landroid/filterfw/core/FilterPort;->TAG:Ljava/lang/String;
-Landroid/filterfw/core/FilterSurfaceView;
Landroid/filterfw/core/FilterSurfaceView;-><init>(Landroid/content/Context;)V
Landroid/filterfw/core/FilterSurfaceView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
Landroid/filterfw/core/FilterSurfaceView;->bindToListener(Landroid/view/SurfaceHolder$Callback;Landroid/filterfw/core/GLEnvironment;)V
@@ -19445,10 +18197,8 @@
Landroid/filterfw/core/FilterSurfaceView;->STATE_INITIALIZED:I
Landroid/filterfw/core/FilterSurfaceView;->unbind()V
Landroid/filterfw/core/FilterSurfaceView;->unregisterSurface()V
-Landroid/filterfw/core/FinalPort;
Landroid/filterfw/core/FinalPort;-><init>(Landroid/filterfw/core/Filter;Ljava/lang/String;Ljava/lang/reflect/Field;Z)V
Landroid/filterfw/core/FinalPort;->setFieldFrame(Landroid/filterfw/core/Frame;Z)V
-Landroid/filterfw/core/Frame;
Landroid/filterfw/core/Frame;-><init>(Landroid/filterfw/core/FrameFormat;Landroid/filterfw/core/FrameManager;)V
Landroid/filterfw/core/Frame;-><init>(Landroid/filterfw/core/FrameFormat;Landroid/filterfw/core/FrameManager;IJ)V
Landroid/filterfw/core/Frame;->assertFrameMutable()V
@@ -19495,7 +18245,6 @@
Landroid/filterfw/core/Frame;->setReusable(Z)V
Landroid/filterfw/core/Frame;->TIMESTAMP_NOT_SET:J
Landroid/filterfw/core/Frame;->TIMESTAMP_UNKNOWN:J
-Landroid/filterfw/core/FrameFormat;
Landroid/filterfw/core/FrameFormat;-><init>()V
Landroid/filterfw/core/FrameFormat;-><init>(II)V
Landroid/filterfw/core/FrameFormat;->baseTypeToString(I)Ljava/lang/String;
@@ -19550,7 +18299,6 @@
Landroid/filterfw/core/FrameFormat;->TYPE_POINTER:I
Landroid/filterfw/core/FrameFormat;->TYPE_UNSPECIFIED:I
Landroid/filterfw/core/FrameFormat;->unspecified()Landroid/filterfw/core/FrameFormat;
-Landroid/filterfw/core/FrameManager;
Landroid/filterfw/core/FrameManager;-><init>()V
Landroid/filterfw/core/FrameManager;->duplicateFrameToTarget(Landroid/filterfw/core/Frame;I)Landroid/filterfw/core/Frame;
Landroid/filterfw/core/FrameManager;->getContext()Landroid/filterfw/core/FilterContext;
@@ -19560,11 +18308,6 @@
Landroid/filterfw/core/FrameManager;->retainFrame(Landroid/filterfw/core/Frame;)Landroid/filterfw/core/Frame;
Landroid/filterfw/core/FrameManager;->setContext(Landroid/filterfw/core/FilterContext;)V
Landroid/filterfw/core/FrameManager;->tearDown()V
-Landroid/filterfw/core/GenerateFieldPort;
-Landroid/filterfw/core/GenerateFinalPort;
-Landroid/filterfw/core/GenerateProgramPort;
-Landroid/filterfw/core/GenerateProgramPorts;
-Landroid/filterfw/core/GLEnvironment;
Landroid/filterfw/core/GLEnvironment;-><init>()V
Landroid/filterfw/core/GLEnvironment;-><init>(Landroid/filterfw/core/NativeAllocatorTag;)V
Landroid/filterfw/core/GLEnvironment;->glEnvId:I
@@ -19593,7 +18336,6 @@
Landroid/filterfw/core/GLEnvironment;->registerSurface(Landroid/view/Surface;)I
Landroid/filterfw/core/GLEnvironment;->registerSurfaceTexture(Landroid/graphics/SurfaceTexture;II)I
Landroid/filterfw/core/GLEnvironment;->tearDown()V
-Landroid/filterfw/core/GLFrame;
Landroid/filterfw/core/GLFrame;-><init>(Landroid/filterfw/core/FrameFormat;Landroid/filterfw/core/FrameManager;)V
Landroid/filterfw/core/GLFrame;-><init>(Landroid/filterfw/core/FrameFormat;Landroid/filterfw/core/FrameManager;IJ)V
Landroid/filterfw/core/GLFrame;->assertGLEnvValid()V
@@ -19653,9 +18395,7 @@
Landroid/filterfw/core/GLFrame;->setNativeViewport(IIII)Z
Landroid/filterfw/core/GLFrame;->setViewport(IIII)V
Landroid/filterfw/core/GLFrame;->setViewport(Landroid/graphics/Rect;)V
-Landroid/filterfw/core/GraphRunner$OnRunnerDoneListener;
Landroid/filterfw/core/GraphRunner$OnRunnerDoneListener;->onRunnerDone(I)V
-Landroid/filterfw/core/GraphRunner;
Landroid/filterfw/core/GraphRunner;-><init>(Landroid/filterfw/core/FilterContext;)V
Landroid/filterfw/core/GraphRunner;->activateGlContext()Z
Landroid/filterfw/core/GraphRunner;->close()V
@@ -19670,7 +18410,6 @@
Landroid/filterfw/core/GraphRunner;->RESULT_SLEEPING:I
Landroid/filterfw/core/GraphRunner;->RESULT_STOPPED:I
Landroid/filterfw/core/GraphRunner;->RESULT_UNKNOWN:I
-Landroid/filterfw/core/InputPort;
Landroid/filterfw/core/InputPort;-><init>(Landroid/filterfw/core/Filter;Ljava/lang/String;)V
Landroid/filterfw/core/InputPort;->acceptsFrame()Z
Landroid/filterfw/core/InputPort;->close()V
@@ -19685,14 +18424,10 @@
Landroid/filterfw/core/InputPort;->open()V
Landroid/filterfw/core/InputPort;->setSourcePort(Landroid/filterfw/core/OutputPort;)V
Landroid/filterfw/core/InputPort;->transfer(Landroid/filterfw/core/FilterContext;)V
-Landroid/filterfw/core/KeyValueMap;
Landroid/filterfw/core/KeyValueMap;-><init>()V
-Landroid/filterfw/core/KeyValueMap;->fromKeyValues([[Ljava/lang/Object;)Landroid/filterfw/core/KeyValueMap;
Landroid/filterfw/core/KeyValueMap;->getFloat(Ljava/lang/String;)F
Landroid/filterfw/core/KeyValueMap;->getInt(Ljava/lang/String;)I
Landroid/filterfw/core/KeyValueMap;->getString(Ljava/lang/String;)Ljava/lang/String;
-Landroid/filterfw/core/KeyValueMap;->setKeyValues([[Ljava/lang/Object;)V
-Landroid/filterfw/core/MutableFrameFormat;
Landroid/filterfw/core/MutableFrameFormat;-><init>()V
Landroid/filterfw/core/MutableFrameFormat;->setBaseType(I)V
Landroid/filterfw/core/MutableFrameFormat;->setDimensionCount(I)V
@@ -19702,9 +18437,7 @@
Landroid/filterfw/core/MutableFrameFormat;->setMetaValue(Ljava/lang/String;Ljava/lang/Object;)V
Landroid/filterfw/core/MutableFrameFormat;->setObjectClass(Ljava/lang/Class;)V
Landroid/filterfw/core/MutableFrameFormat;->setTarget(I)V
-Landroid/filterfw/core/NativeAllocatorTag;
Landroid/filterfw/core/NativeAllocatorTag;-><init>()V
-Landroid/filterfw/core/NativeBuffer;
Landroid/filterfw/core/NativeBuffer;-><init>()V
Landroid/filterfw/core/NativeBuffer;-><init>(I)V
Landroid/filterfw/core/NativeBuffer;->allocate(I)Z
@@ -19725,7 +18458,6 @@
Landroid/filterfw/core/NativeBuffer;->release()Landroid/filterfw/core/NativeBuffer;
Landroid/filterfw/core/NativeBuffer;->retain()Landroid/filterfw/core/NativeBuffer;
Landroid/filterfw/core/NativeBuffer;->size()I
-Landroid/filterfw/core/NativeFrame;
Landroid/filterfw/core/NativeFrame;-><init>(Landroid/filterfw/core/FrameFormat;Landroid/filterfw/core/FrameManager;)V
Landroid/filterfw/core/NativeFrame;->getBitmap()Landroid/graphics/Bitmap;
Landroid/filterfw/core/NativeFrame;->getCapacity()I
@@ -19757,7 +18489,6 @@
Landroid/filterfw/core/NativeFrame;->setNativeData([BII)Z
Landroid/filterfw/core/NativeFrame;->setNativeFloats([F)Z
Landroid/filterfw/core/NativeFrame;->setNativeInts([I)Z
-Landroid/filterfw/core/NativeProgram;
Landroid/filterfw/core/NativeProgram;-><init>(Ljava/lang/String;Ljava/lang/String;)V
Landroid/filterfw/core/NativeProgram;->allocate()Z
Landroid/filterfw/core/NativeProgram;->bindGetValueFunction(Ljava/lang/String;)Z
@@ -19787,14 +18518,12 @@
Landroid/filterfw/core/NativeProgram;->reset()V
Landroid/filterfw/core/NativeProgram;->setHostValue(Ljava/lang/String;Ljava/lang/Object;)V
Landroid/filterfw/core/NativeProgram;->tearDown()V
-Landroid/filterfw/core/OneShotScheduler;
Landroid/filterfw/core/OneShotScheduler;-><init>(Landroid/filterfw/core/FilterGraph;)V
Landroid/filterfw/core/OneShotScheduler;->mLogVerbose:Z
Landroid/filterfw/core/OneShotScheduler;->reset()V
Landroid/filterfw/core/OneShotScheduler;->scheduled:Ljava/util/HashMap;
Landroid/filterfw/core/OneShotScheduler;->scheduleNextNode()Landroid/filterfw/core/Filter;
Landroid/filterfw/core/OneShotScheduler;->TAG:Ljava/lang/String;
-Landroid/filterfw/core/OutputPort;
Landroid/filterfw/core/OutputPort;-><init>(Landroid/filterfw/core/Filter;Ljava/lang/String;)V
Landroid/filterfw/core/OutputPort;->clear()V
Landroid/filterfw/core/OutputPort;->close()V
@@ -19813,15 +18542,12 @@
Landroid/filterfw/core/OutputPort;->pushFrame(Landroid/filterfw/core/Frame;)V
Landroid/filterfw/core/OutputPort;->setBasePort(Landroid/filterfw/core/InputPort;)V
Landroid/filterfw/core/OutputPort;->setFrame(Landroid/filterfw/core/Frame;)V
-Landroid/filterfw/core/Program;
Landroid/filterfw/core/Program;-><init>()V
Landroid/filterfw/core/Program;->getHostValue(Ljava/lang/String;)Ljava/lang/Object;
Landroid/filterfw/core/Program;->reset()V
-Landroid/filterfw/core/ProgramPort;
Landroid/filterfw/core/ProgramPort;-><init>(Landroid/filterfw/core/Filter;Ljava/lang/String;Ljava/lang/String;Ljava/lang/reflect/Field;Z)V
Landroid/filterfw/core/ProgramPort;->mVarName:Ljava/lang/String;
Landroid/filterfw/core/ProgramPort;->transfer(Landroid/filterfw/core/FilterContext;)V
-Landroid/filterfw/core/ProgramVariable;
Landroid/filterfw/core/ProgramVariable;-><init>(Landroid/filterfw/core/Program;Ljava/lang/String;)V
Landroid/filterfw/core/ProgramVariable;->getProgram()Landroid/filterfw/core/Program;
Landroid/filterfw/core/ProgramVariable;->getValue()Ljava/lang/Object;
@@ -19829,33 +18555,25 @@
Landroid/filterfw/core/ProgramVariable;->mProgram:Landroid/filterfw/core/Program;
Landroid/filterfw/core/ProgramVariable;->mVarName:Ljava/lang/String;
Landroid/filterfw/core/ProgramVariable;->setValue(Ljava/lang/Object;)V
-Landroid/filterfw/core/ProtocolException;
Landroid/filterfw/core/ProtocolException;-><init>()V
Landroid/filterfw/core/ProtocolException;-><init>(Ljava/lang/String;)V
-Landroid/filterfw/core/RandomScheduler;
Landroid/filterfw/core/RandomScheduler;-><init>(Landroid/filterfw/core/FilterGraph;)V
Landroid/filterfw/core/RandomScheduler;->mRand:Ljava/util/Random;
Landroid/filterfw/core/RandomScheduler;->reset()V
Landroid/filterfw/core/RandomScheduler;->scheduleNextNode()Landroid/filterfw/core/Filter;
-Landroid/filterfw/core/RoundRobinScheduler;
Landroid/filterfw/core/RoundRobinScheduler;-><init>(Landroid/filterfw/core/FilterGraph;)V
Landroid/filterfw/core/RoundRobinScheduler;->mLastPos:I
Landroid/filterfw/core/RoundRobinScheduler;->reset()V
Landroid/filterfw/core/RoundRobinScheduler;->scheduleNextNode()Landroid/filterfw/core/Filter;
-Landroid/filterfw/core/Scheduler;
Landroid/filterfw/core/Scheduler;-><init>(Landroid/filterfw/core/FilterGraph;)V
Landroid/filterfw/core/Scheduler;->finished()Z
Landroid/filterfw/core/Scheduler;->getGraph()Landroid/filterfw/core/FilterGraph;
Landroid/filterfw/core/Scheduler;->mGraph:Landroid/filterfw/core/FilterGraph;
Landroid/filterfw/core/Scheduler;->reset()V
Landroid/filterfw/core/Scheduler;->scheduleNextNode()Landroid/filterfw/core/Filter;
-Landroid/filterfw/core/SerializedFrame$DirectByteInputStream;
-Landroid/filterfw/core/SerializedFrame$DirectByteInputStream;-><init>([BI)V
Landroid/filterfw/core/SerializedFrame$DirectByteInputStream;->mBuffer:[B
Landroid/filterfw/core/SerializedFrame$DirectByteInputStream;->mPos:I
Landroid/filterfw/core/SerializedFrame$DirectByteInputStream;->mSize:I
-Landroid/filterfw/core/SerializedFrame$DirectByteOutputStream;
-Landroid/filterfw/core/SerializedFrame$DirectByteOutputStream;-><init>(I)V
Landroid/filterfw/core/SerializedFrame$DirectByteOutputStream;->ensureFit(I)V
Landroid/filterfw/core/SerializedFrame$DirectByteOutputStream;->getByteArray()[B
Landroid/filterfw/core/SerializedFrame$DirectByteOutputStream;->getInputStream()Landroid/filterfw/core/SerializedFrame$DirectByteInputStream;
@@ -19865,7 +18583,6 @@
Landroid/filterfw/core/SerializedFrame$DirectByteOutputStream;->mDataOffset:I
Landroid/filterfw/core/SerializedFrame$DirectByteOutputStream;->mOffset:I
Landroid/filterfw/core/SerializedFrame$DirectByteOutputStream;->reset()V
-Landroid/filterfw/core/SerializedFrame;
Landroid/filterfw/core/SerializedFrame;-><init>(Landroid/filterfw/core/FrameFormat;Landroid/filterfw/core/FrameManager;)V
Landroid/filterfw/core/SerializedFrame;->deserializeObjectValue()Ljava/lang/Object;
Landroid/filterfw/core/SerializedFrame;->getBitmap()Landroid/graphics/Bitmap;
@@ -19885,7 +18602,6 @@
Landroid/filterfw/core/SerializedFrame;->setGenericObjectValue(Ljava/lang/Object;)V
Landroid/filterfw/core/SerializedFrame;->setInts([I)V
Landroid/filterfw/core/SerializedFrame;->wrapObject(Ljava/lang/Object;Landroid/filterfw/core/FrameManager;)Landroid/filterfw/core/SerializedFrame;
-Landroid/filterfw/core/ShaderProgram;
Landroid/filterfw/core/ShaderProgram;-><init>()V
Landroid/filterfw/core/ShaderProgram;-><init>(Landroid/filterfw/core/FilterContext;Ljava/lang/String;Ljava/lang/String;)V
Landroid/filterfw/core/ShaderProgram;-><init>(Landroid/filterfw/core/NativeAllocatorTag;)V
@@ -19927,7 +18643,6 @@
Landroid/filterfw/core/ShaderProgram;->setVertexCount(I)V
Landroid/filterfw/core/ShaderProgram;->shaderProcess([Landroid/filterfw/core/GLFrame;Landroid/filterfw/core/GLFrame;)Z
Landroid/filterfw/core/ShaderProgram;->shaderProgramId:I
-Landroid/filterfw/core/SimpleFrame;
Landroid/filterfw/core/SimpleFrame;-><init>(Landroid/filterfw/core/FrameFormat;Landroid/filterfw/core/FrameManager;)V
Landroid/filterfw/core/SimpleFrame;->getBitmap()Landroid/graphics/Bitmap;
Landroid/filterfw/core/SimpleFrame;->getData()Ljava/nio/ByteBuffer;
@@ -19945,18 +18660,15 @@
Landroid/filterfw/core/SimpleFrame;->setGenericObjectValue(Ljava/lang/Object;)V
Landroid/filterfw/core/SimpleFrame;->setInts([I)V
Landroid/filterfw/core/SimpleFrame;->wrapObject(Ljava/lang/Object;Landroid/filterfw/core/FrameManager;)Landroid/filterfw/core/SimpleFrame;
-Landroid/filterfw/core/SimpleFrameManager;
Landroid/filterfw/core/SimpleFrameManager;-><init>()V
Landroid/filterfw/core/SimpleFrameManager;->createNewFrame(Landroid/filterfw/core/FrameFormat;)Landroid/filterfw/core/Frame;
Landroid/filterfw/core/SimpleFrameManager;->newBoundFrame(Landroid/filterfw/core/FrameFormat;IJ)Landroid/filterfw/core/Frame;
Landroid/filterfw/core/SimpleFrameManager;->newFrame(Landroid/filterfw/core/FrameFormat;)Landroid/filterfw/core/Frame;
Landroid/filterfw/core/SimpleFrameManager;->releaseFrame(Landroid/filterfw/core/Frame;)Landroid/filterfw/core/Frame;
Landroid/filterfw/core/SimpleFrameManager;->retainFrame(Landroid/filterfw/core/Frame;)Landroid/filterfw/core/Frame;
-Landroid/filterfw/core/SimpleScheduler;
Landroid/filterfw/core/SimpleScheduler;-><init>(Landroid/filterfw/core/FilterGraph;)V
Landroid/filterfw/core/SimpleScheduler;->reset()V
Landroid/filterfw/core/SimpleScheduler;->scheduleNextNode()Landroid/filterfw/core/Filter;
-Landroid/filterfw/core/StopWatch;
Landroid/filterfw/core/StopWatch;-><init>(Ljava/lang/String;)V
Landroid/filterfw/core/StopWatch;->mName:Ljava/lang/String;
Landroid/filterfw/core/StopWatch;->mNumCalls:I
@@ -19966,13 +18678,11 @@
Landroid/filterfw/core/StopWatch;->stop()V
Landroid/filterfw/core/StopWatch;->STOP_WATCH_LOGGING_PERIOD:I
Landroid/filterfw/core/StopWatch;->TAG:Ljava/lang/String;
-Landroid/filterfw/core/StopWatchMap;
Landroid/filterfw/core/StopWatchMap;-><init>()V
Landroid/filterfw/core/StopWatchMap;->LOG_MFF_RUNNING_TIMES:Z
Landroid/filterfw/core/StopWatchMap;->mStopWatches:Ljava/util/HashMap;
Landroid/filterfw/core/StopWatchMap;->start(Ljava/lang/String;)V
Landroid/filterfw/core/StopWatchMap;->stop(Ljava/lang/String;)V
-Landroid/filterfw/core/StreamPort;
Landroid/filterfw/core/StreamPort;-><init>(Landroid/filterfw/core/Filter;Ljava/lang/String;)V
Landroid/filterfw/core/StreamPort;->assignFrame(Landroid/filterfw/core/Frame;Z)V
Landroid/filterfw/core/StreamPort;->clear()V
@@ -19983,7 +18693,6 @@
Landroid/filterfw/core/StreamPort;->pushFrame(Landroid/filterfw/core/Frame;)V
Landroid/filterfw/core/StreamPort;->setFrame(Landroid/filterfw/core/Frame;)V
Landroid/filterfw/core/StreamPort;->transfer(Landroid/filterfw/core/FilterContext;)V
-Landroid/filterfw/core/SyncRunner;
Landroid/filterfw/core/SyncRunner;-><init>(Landroid/filterfw/core/FilterContext;Landroid/filterfw/core/FilterGraph;Ljava/lang/Class;)V
Landroid/filterfw/core/SyncRunner;->assertReadyToStep()V
Landroid/filterfw/core/SyncRunner;->beginProcessing()V
@@ -20007,7 +18716,6 @@
Landroid/filterfw/core/SyncRunner;->stop()V
Landroid/filterfw/core/SyncRunner;->TAG:Ljava/lang/String;
Landroid/filterfw/core/SyncRunner;->waitUntilWake()V
-Landroid/filterfw/core/VertexFrame;
Landroid/filterfw/core/VertexFrame;-><init>(Landroid/filterfw/core/FrameFormat;Landroid/filterfw/core/FrameManager;)V
Landroid/filterfw/core/VertexFrame;->getBitmap()Landroid/graphics/Bitmap;
Landroid/filterfw/core/VertexFrame;->getData()Ljava/nio/ByteBuffer;
@@ -20029,11 +18737,8 @@
Landroid/filterfw/core/VertexFrame;->setNativeFloats([F)Z
Landroid/filterfw/core/VertexFrame;->setNativeInts([I)Z
Landroid/filterfw/core/VertexFrame;->vertexFrameId:I
-Landroid/filterfw/FilterFunctionEnvironment;
Landroid/filterfw/FilterFunctionEnvironment;-><init>()V
Landroid/filterfw/FilterFunctionEnvironment;-><init>(Landroid/filterfw/core/FrameManager;)V
-Landroid/filterfw/FilterFunctionEnvironment;->createFunction(Ljava/lang/Class;[[Ljava/lang/Object;)Landroid/filterfw/core/FilterFunction;
-Landroid/filterfw/format/ImageFormat;
Landroid/filterfw/format/ImageFormat;-><init>()V
Landroid/filterfw/format/ImageFormat;->bytesPerSampleForColorspace(I)I
Landroid/filterfw/format/ImageFormat;->COLORSPACE_GRAY:I
@@ -20042,7 +18747,6 @@
Landroid/filterfw/format/ImageFormat;->COLORSPACE_RGBA:I
Landroid/filterfw/format/ImageFormat;->COLORSPACE_YUV:I
Landroid/filterfw/format/ImageFormat;->create(IIIII)Landroid/filterfw/core/MutableFrameFormat;
-Landroid/filterfw/format/ObjectFormat;
Landroid/filterfw/format/ObjectFormat;-><init>()V
Landroid/filterfw/format/ObjectFormat;->bytesPerSampleForClass(Ljava/lang/Class;I)I
Landroid/filterfw/format/ObjectFormat;->fromClass(Ljava/lang/Class;I)Landroid/filterfw/core/MutableFrameFormat;
@@ -20050,7 +18754,6 @@
Landroid/filterfw/format/ObjectFormat;->fromObject(Ljava/lang/Object;I)Landroid/filterfw/core/MutableFrameFormat;
Landroid/filterfw/format/ObjectFormat;->fromObject(Ljava/lang/Object;II)Landroid/filterfw/core/MutableFrameFormat;
Landroid/filterfw/format/ObjectFormat;->getBoxedClass(Ljava/lang/Class;)Ljava/lang/Class;
-Landroid/filterfw/format/PrimitiveFormat;
Landroid/filterfw/format/PrimitiveFormat;-><init>()V
Landroid/filterfw/format/PrimitiveFormat;->createByteFormat(I)Landroid/filterfw/core/MutableFrameFormat;
Landroid/filterfw/format/PrimitiveFormat;->createByteFormat(II)Landroid/filterfw/core/MutableFrameFormat;
@@ -20064,7 +18767,6 @@
Landroid/filterfw/format/PrimitiveFormat;->createInt16Format(II)Landroid/filterfw/core/MutableFrameFormat;
Landroid/filterfw/format/PrimitiveFormat;->createInt32Format(I)Landroid/filterfw/core/MutableFrameFormat;
Landroid/filterfw/format/PrimitiveFormat;->createInt32Format(II)Landroid/filterfw/core/MutableFrameFormat;
-Landroid/filterfw/geometry/Point;
Landroid/filterfw/geometry/Point;->distanceTo(Landroid/filterfw/geometry/Point;)F
Landroid/filterfw/geometry/Point;->IsInUnitRange()Z
Landroid/filterfw/geometry/Point;->length()F
@@ -20080,7 +18782,6 @@
Landroid/filterfw/geometry/Point;->scaledTo(F)Landroid/filterfw/geometry/Point;
Landroid/filterfw/geometry/Point;->set(FF)V
Landroid/filterfw/geometry/Point;->times(F)Landroid/filterfw/geometry/Point;
-Landroid/filterfw/geometry/Quad;
Landroid/filterfw/geometry/Quad;->boundingBox()Landroid/filterfw/geometry/Rectangle;
Landroid/filterfw/geometry/Quad;->getBoundingHeight()F
Landroid/filterfw/geometry/Quad;->getBoundingWidth()F
@@ -20089,7 +18790,6 @@
Landroid/filterfw/geometry/Quad;->scaled(FF)Landroid/filterfw/geometry/Quad;
Landroid/filterfw/geometry/Quad;->translated(FF)Landroid/filterfw/geometry/Quad;
Landroid/filterfw/geometry/Quad;->translated(Landroid/filterfw/geometry/Point;)Landroid/filterfw/geometry/Quad;
-Landroid/filterfw/geometry/Rectangle;
Landroid/filterfw/geometry/Rectangle;-><init>()V
Landroid/filterfw/geometry/Rectangle;-><init>(FFFF)V
Landroid/filterfw/geometry/Rectangle;-><init>(Landroid/filterfw/geometry/Point;Landroid/filterfw/geometry/Point;)V
@@ -20101,25 +18801,20 @@
Landroid/filterfw/geometry/Rectangle;->getWidth()F
Landroid/filterfw/geometry/Rectangle;->scaled(F)Landroid/filterfw/geometry/Rectangle;
Landroid/filterfw/geometry/Rectangle;->scaled(FF)Landroid/filterfw/geometry/Rectangle;
-Landroid/filterfw/GraphEnvironment$GraphHandle;
-Landroid/filterfw/GraphEnvironment$GraphHandle;-><init>(Landroid/filterfw/core/FilterGraph;)V
Landroid/filterfw/GraphEnvironment$GraphHandle;->getAsyncRunner(Landroid/filterfw/core/FilterContext;)Landroid/filterfw/core/AsyncRunner;
Landroid/filterfw/GraphEnvironment$GraphHandle;->getGraph()Landroid/filterfw/core/FilterGraph;
Landroid/filterfw/GraphEnvironment$GraphHandle;->getSyncRunner(Landroid/filterfw/core/FilterContext;)Landroid/filterfw/core/GraphRunner;
Landroid/filterfw/GraphEnvironment$GraphHandle;->mAsyncRunner:Landroid/filterfw/core/AsyncRunner;
Landroid/filterfw/GraphEnvironment$GraphHandle;->mGraph:Landroid/filterfw/core/FilterGraph;
Landroid/filterfw/GraphEnvironment$GraphHandle;->mSyncRunner:Landroid/filterfw/core/SyncRunner;
-Landroid/filterfw/GraphEnvironment;
Landroid/filterfw/GraphEnvironment;-><init>(Landroid/filterfw/core/FrameManager;Landroid/filterfw/io/GraphReader;)V
Landroid/filterfw/GraphEnvironment;->addGraph(Landroid/filterfw/core/FilterGraph;)I
-Landroid/filterfw/GraphEnvironment;->addReferences([[Ljava/lang/Object;)V
Landroid/filterfw/GraphEnvironment;->getGraph(I)Landroid/filterfw/core/FilterGraph;
Landroid/filterfw/GraphEnvironment;->getGraphReader()Landroid/filterfw/io/GraphReader;
Landroid/filterfw/GraphEnvironment;->mGraphReader:Landroid/filterfw/io/GraphReader;
Landroid/filterfw/GraphEnvironment;->mGraphs:Ljava/util/ArrayList;
Landroid/filterfw/GraphEnvironment;->MODE_ASYNCHRONOUS:I
Landroid/filterfw/GraphEnvironment;->MODE_SYNCHRONOUS:I
-Landroid/filterfw/MffEnvironment;
Landroid/filterfw/MffEnvironment;-><init>(Landroid/filterfw/core/FrameManager;)V
Landroid/filterfw/MffEnvironment;->activateGLEnvironment()V
Landroid/filterfw/MffEnvironment;->createGLEnvironment()V
@@ -20138,17 +18833,13 @@
Landroid/gesture/Gesture;->serialize(Ljava/io/DataOutputStream;)V
Landroid/gesture/Gesture;->setID(J)V
Landroid/gesture/Gesture;->sGestureCount:Ljava/util/concurrent/atomic/AtomicInteger;
-Landroid/gesture/GestureLibraries$FileGestureLibrary;
Landroid/gesture/GestureLibraries$FileGestureLibrary;-><init>(Ljava/io/File;)V
Landroid/gesture/GestureLibraries$FileGestureLibrary;->mPath:Ljava/io/File;
-Landroid/gesture/GestureLibraries$ResourceGestureLibrary;
Landroid/gesture/GestureLibraries$ResourceGestureLibrary;-><init>(Landroid/content/Context;I)V
Landroid/gesture/GestureLibraries$ResourceGestureLibrary;->mContext:Ljava/lang/ref/WeakReference;
Landroid/gesture/GestureLibraries$ResourceGestureLibrary;->mResourceId:I
Landroid/gesture/GestureLibraries;-><init>()V
Landroid/gesture/GestureLibrary;->getLearner()Landroid/gesture/Learner;
-Landroid/gesture/GestureOverlayView$FadeOutRunnable;
-Landroid/gesture/GestureOverlayView$FadeOutRunnable;-><init>()V
Landroid/gesture/GestureOverlayView$FadeOutRunnable;->fireActionPerformed:Z
Landroid/gesture/GestureOverlayView$FadeOutRunnable;->resetMultipleStrokes:Z
Landroid/gesture/GestureOverlayView;->cancelGesture(Landroid/view/MotionEvent;)V
@@ -20242,7 +18933,6 @@
Landroid/gesture/GestureUtils;->SCALING_THRESHOLD:F
Landroid/gesture/GestureUtils;->squaredEuclideanDistance([F[F)F
Landroid/gesture/GestureUtils;->translate([FFF)[F
-Landroid/gesture/Instance;
Landroid/gesture/Instance;-><init>(J[FLjava/lang/String;)V
Landroid/gesture/Instance;->createInstance(IILandroid/gesture/Gesture;Ljava/lang/String;)Landroid/gesture/Instance;
Landroid/gesture/Instance;->id:J
@@ -20254,7 +18944,6 @@
Landroid/gesture/Instance;->spatialSampler(Landroid/gesture/Gesture;)[F
Landroid/gesture/Instance;->temporalSampler(ILandroid/gesture/Gesture;)[F
Landroid/gesture/Instance;->vector:[F
-Landroid/gesture/Learner;
Landroid/gesture/Learner;-><init>()V
Landroid/gesture/Learner;->addInstance(Landroid/gesture/Instance;)V
Landroid/gesture/Learner;->classify(II[F)Ljava/util/ArrayList;
@@ -20265,9 +18954,7 @@
Landroid/gesture/OrientedBoundingBox;-><init>(FFFFF)V
Landroid/gesture/OrientedBoundingBox;->toPath()Landroid/graphics/Path;
Landroid/gesture/Prediction;-><init>(Ljava/lang/String;D)V
-Landroid/graphics/AvoidXfermode$Mode;-><init>(I)V
Landroid/graphics/AvoidXfermode$Mode;->nativeInt:I
-Landroid/graphics/BaseCanvas;
Landroid/graphics/BaseCanvas;-><init>()V
Landroid/graphics/BaseCanvas;->checkRange(III)V
Landroid/graphics/BaseCanvas;->drawArc(FFFFFFZLandroid/graphics/Paint;)V
@@ -20349,9 +19036,7 @@
Landroid/graphics/BaseCanvas;->throwIfHasHwBitmapInSwMode(Landroid/graphics/Paint;)V
Landroid/graphics/BaseCanvas;->throwIfHasHwBitmapInSwMode(Landroid/graphics/Shader;)V
Landroid/graphics/BaseCanvas;->throwIfHwBitmapInSwMode(Landroid/graphics/Bitmap;)V
-Landroid/graphics/Bitmap$CompressFormat;-><init>(I)V
Landroid/graphics/Bitmap$CompressFormat;->nativeInt:I
-Landroid/graphics/Bitmap$Config;-><init>(I)V
Landroid/graphics/Bitmap$Config;->sConfigs:[Landroid/graphics/Bitmap$Config;
Landroid/graphics/Bitmap;->checkHardware(Ljava/lang/String;)V
Landroid/graphics/Bitmap;->checkPixelAccess(II)V
@@ -20430,7 +19115,6 @@
Landroid/graphics/BitmapShader;->copy()Landroid/graphics/Shader;
Landroid/graphics/BitmapShader;->createNativeInstance(J)J
Landroid/graphics/BitmapShader;->nativeCreate(JLandroid/graphics/Bitmap;II)J
-Landroid/graphics/BlurMaskFilter$Blur;-><init>(I)V
Landroid/graphics/BlurMaskFilter$Blur;->native_int:I
Landroid/graphics/BlurMaskFilter;->nativeConstructor(FI)J
Landroid/graphics/Camera;->mMatrix:Landroid/graphics/Matrix;
@@ -20438,13 +19122,9 @@
Landroid/graphics/Camera;->nativeConstructor()V
Landroid/graphics/Camera;->nativeDestructor()V
Landroid/graphics/Camera;->nativeGetMatrix(J)V
-Landroid/graphics/Canvas$EdgeType;-><init>(I)V
Landroid/graphics/Canvas$EdgeType;->nativeInt:I
-Landroid/graphics/Canvas$NoImagePreloadHolder;
Landroid/graphics/Canvas$NoImagePreloadHolder;-><init>()V
Landroid/graphics/Canvas$NoImagePreloadHolder;->sRegistry:Llibcore/util/NativeAllocationRegistry;
-Landroid/graphics/Canvas$Saveflags;
-Landroid/graphics/Canvas$VertexMode;-><init>(I)V
Landroid/graphics/Canvas$VertexMode;->nativeInt:I
Landroid/graphics/Canvas;->checkValidClipOp(Landroid/graphics/Region$Op;)V
Landroid/graphics/Canvas;->checkValidSaveFlags(I)V
@@ -20491,7 +19171,6 @@
Landroid/graphics/Canvas;->sCompatibilitySetBitmap:Z
Landroid/graphics/Canvas;->sCompatiblityVersion:I
Landroid/graphics/Canvas;->setCompatibilityVersion(I)V
-Landroid/graphics/CanvasProperty;
Landroid/graphics/CanvasProperty;-><init>(J)V
Landroid/graphics/CanvasProperty;->getNativeContainer()J
Landroid/graphics/CanvasProperty;->mProperty:Lcom/android/internal/util/VirtualRefBasePtr;
@@ -20507,7 +19186,6 @@
Landroid/graphics/Color;->nativeRGBToHSV(III[F)V
Landroid/graphics/Color;->saturate(F)F
Landroid/graphics/Color;->sColorNameMap:Ljava/util/HashMap;
-Landroid/graphics/ColorFilter$NoImagePreloadHolder;
Landroid/graphics/ColorFilter$NoImagePreloadHolder;-><init>()V
Landroid/graphics/ColorFilter$NoImagePreloadHolder;->sRegistry:Llibcore/util/NativeAllocationRegistry;
Landroid/graphics/ColorFilter;->createNativeInstance()J
@@ -20519,9 +19197,7 @@
Landroid/graphics/ColorMatrix;->mArray:[F
Landroid/graphics/ColorMatrixColorFilter;->createNativeInstance()J
Landroid/graphics/ColorMatrixColorFilter;->nativeColorMatrixFilter([F)J
-Landroid/graphics/ColorSpace$Adaptation;-><init>([F)V
Landroid/graphics/ColorSpace$Adaptation;->mTransform:[F
-Landroid/graphics/ColorSpace$Connector$Rgb;
Landroid/graphics/ColorSpace$Connector$Rgb;-><init>(Landroid/graphics/ColorSpace$Rgb;Landroid/graphics/ColorSpace$Rgb;Landroid/graphics/ColorSpace$RenderIntent;)V
Landroid/graphics/ColorSpace$Connector$Rgb;->computeTransform(Landroid/graphics/ColorSpace$Rgb;Landroid/graphics/ColorSpace$Rgb;Landroid/graphics/ColorSpace$RenderIntent;)[F
Landroid/graphics/ColorSpace$Connector$Rgb;->mDestination:Landroid/graphics/ColorSpace$Rgb;
@@ -20537,22 +19213,17 @@
Landroid/graphics/ColorSpace$Connector;->mTransform:[F
Landroid/graphics/ColorSpace$Connector;->mTransformDestination:Landroid/graphics/ColorSpace;
Landroid/graphics/ColorSpace$Connector;->mTransformSource:Landroid/graphics/ColorSpace;
-Landroid/graphics/ColorSpace$Lab;
Landroid/graphics/ColorSpace$Lab;-><init>(Ljava/lang/String;I)V
Landroid/graphics/ColorSpace$Lab;->A:F
Landroid/graphics/ColorSpace$Lab;->B:F
Landroid/graphics/ColorSpace$Lab;->C:F
Landroid/graphics/ColorSpace$Lab;->clamp(FFF)F
Landroid/graphics/ColorSpace$Lab;->D:F
-Landroid/graphics/ColorSpace$Model;-><init>(I)V
Landroid/graphics/ColorSpace$Model;->mComponentCount:I
-Landroid/graphics/ColorSpace$Named;-><init>()V
-Landroid/graphics/ColorSpace$Renderer$Point;
Landroid/graphics/ColorSpace$Renderer$Point;-><init>(Landroid/graphics/ColorSpace;[FI)V
Landroid/graphics/ColorSpace$Renderer$Point;->mColor:I
Landroid/graphics/ColorSpace$Renderer$Point;->mColorSpace:Landroid/graphics/ColorSpace;
Landroid/graphics/ColorSpace$Renderer$Point;->mRgb:[F
-Landroid/graphics/ColorSpace$Renderer;
Landroid/graphics/ColorSpace$Renderer;-><init>()V
Landroid/graphics/ColorSpace$Renderer;->add(Landroid/graphics/ColorSpace;FFFI)Landroid/graphics/ColorSpace$Renderer;
Landroid/graphics/ColorSpace$Renderer;->add(Landroid/graphics/ColorSpace;I)Landroid/graphics/ColorSpace$Renderer;
@@ -20583,7 +19254,6 @@
Landroid/graphics/ColorSpace$Renderer;->sqr(D)D
Landroid/graphics/ColorSpace$Renderer;->UCS_SCALE:F
Landroid/graphics/ColorSpace$Renderer;->uniformChromaticityScale(Z)Landroid/graphics/ColorSpace$Renderer;
-Landroid/graphics/ColorSpace$RenderIntent;-><init>()V
Landroid/graphics/ColorSpace$Rgb;-><init>(Landroid/graphics/ColorSpace$Rgb;[F[F)V
Landroid/graphics/ColorSpace$Rgb;-><init>(Ljava/lang/String;[F[FDFFI)V
Landroid/graphics/ColorSpace$Rgb;-><init>(Ljava/lang/String;[F[FLandroid/graphics/ColorSpace$Rgb$TransferParameters;I)V
@@ -20612,7 +19282,6 @@
Landroid/graphics/ColorSpace$Rgb;->mWhitePoint:[F
Landroid/graphics/ColorSpace$Rgb;->xyPrimaries([F)[F
Landroid/graphics/ColorSpace$Rgb;->xyWhitePoint([F)[F
-Landroid/graphics/ColorSpace$Xyz;
Landroid/graphics/ColorSpace$Xyz;-><init>(Ljava/lang/String;I)V
Landroid/graphics/ColorSpace$Xyz;->clamp(F)F
Landroid/graphics/ColorSpace;-><init>(Ljava/lang/String;Landroid/graphics/ColorSpace$Model;I)V
@@ -20654,7 +19323,6 @@
Landroid/graphics/CornerPathEffect;->nativeCreate(F)J
Landroid/graphics/DashPathEffect;->nativeCreate([FF)J
Landroid/graphics/DiscretePathEffect;->nativeCreate(FF)J
-Landroid/graphics/drawable/AdaptiveIconDrawable$ChildDrawable;
Landroid/graphics/drawable/AdaptiveIconDrawable$ChildDrawable;-><init>(I)V
Landroid/graphics/drawable/AdaptiveIconDrawable$ChildDrawable;-><init>(Landroid/graphics/drawable/AdaptiveIconDrawable$ChildDrawable;Landroid/graphics/drawable/AdaptiveIconDrawable;Landroid/content/res/Resources;)V
Landroid/graphics/drawable/AdaptiveIconDrawable$ChildDrawable;->canApplyTheme()Z
@@ -20662,7 +19330,6 @@
Landroid/graphics/drawable/AdaptiveIconDrawable$ChildDrawable;->mDrawable:Landroid/graphics/drawable/Drawable;
Landroid/graphics/drawable/AdaptiveIconDrawable$ChildDrawable;->mThemeAttrs:[I
Landroid/graphics/drawable/AdaptiveIconDrawable$ChildDrawable;->setDensity(I)V
-Landroid/graphics/drawable/AdaptiveIconDrawable$LayerState;
Landroid/graphics/drawable/AdaptiveIconDrawable$LayerState;-><init>(Landroid/graphics/drawable/AdaptiveIconDrawable$LayerState;Landroid/graphics/drawable/AdaptiveIconDrawable;Landroid/content/res/Resources;)V
Landroid/graphics/drawable/AdaptiveIconDrawable$LayerState;->canConstantState()Z
Landroid/graphics/drawable/AdaptiveIconDrawable$LayerState;->getOpacity()I
@@ -20720,8 +19387,6 @@
Landroid/graphics/drawable/AdaptiveIconDrawable;->updateLayerBoundsInternal(Landroid/graphics/Rect;)V
Landroid/graphics/drawable/AdaptiveIconDrawable;->updateLayerFromTypedArray(Landroid/graphics/drawable/AdaptiveIconDrawable$ChildDrawable;Landroid/content/res/TypedArray;)V
Landroid/graphics/drawable/AdaptiveIconDrawable;->updateMaskBoundsInternal(Landroid/graphics/Rect;)V
-Landroid/graphics/drawable/AnimatedImageDrawable$State;
-Landroid/graphics/drawable/AnimatedImageDrawable$State;-><init>(JLjava/io/InputStream;Landroid/content/res/AssetFileDescriptor;)V
Landroid/graphics/drawable/AnimatedImageDrawable$State;->mAssetFd:Landroid/content/res/AssetFileDescriptor;
Landroid/graphics/drawable/AnimatedImageDrawable$State;->mAutoMirrored:Z
Landroid/graphics/drawable/AnimatedImageDrawable$State;->mInputStream:Ljava/io/InputStream;
@@ -20757,7 +19422,6 @@
Landroid/graphics/drawable/AnimatedImageDrawable;->postOnAnimationStart()V
Landroid/graphics/drawable/AnimatedImageDrawable;->REPEAT_UNDEFINED:I
Landroid/graphics/drawable/AnimatedImageDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;I)V
-Landroid/graphics/drawable/AnimatedRotateDrawable$AnimatedRotateState;
Landroid/graphics/drawable/AnimatedRotateDrawable$AnimatedRotateState;-><init>(Landroid/graphics/drawable/AnimatedRotateDrawable$AnimatedRotateState;Landroid/content/res/Resources;)V
Landroid/graphics/drawable/AnimatedRotateDrawable$AnimatedRotateState;->mFrameDuration:I
Landroid/graphics/drawable/AnimatedRotateDrawable$AnimatedRotateState;->mFramesCount:I
@@ -20766,7 +19430,6 @@
Landroid/graphics/drawable/AnimatedRotateDrawable$AnimatedRotateState;->mPivotY:F
Landroid/graphics/drawable/AnimatedRotateDrawable$AnimatedRotateState;->mPivotYRel:Z
Landroid/graphics/drawable/AnimatedRotateDrawable$AnimatedRotateState;->mThemeAttrs:[I
-Landroid/graphics/drawable/AnimatedRotateDrawable;
Landroid/graphics/drawable/AnimatedRotateDrawable;-><init>()V
Landroid/graphics/drawable/AnimatedRotateDrawable;-><init>(Landroid/graphics/drawable/AnimatedRotateDrawable$AnimatedRotateState;Landroid/content/res/Resources;)V
Landroid/graphics/drawable/AnimatedRotateDrawable;->mCurrentDegrees:F
@@ -20779,12 +19442,10 @@
Landroid/graphics/drawable/AnimatedRotateDrawable;->updateLocalState()V
Landroid/graphics/drawable/AnimatedRotateDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V
Landroid/graphics/drawable/AnimatedRotateDrawable;->verifyRequiredAttributes(Landroid/content/res/TypedArray;)V
-Landroid/graphics/drawable/AnimatedStateListDrawable$AnimatableTransition;
Landroid/graphics/drawable/AnimatedStateListDrawable$AnimatableTransition;-><init>(Landroid/graphics/drawable/Animatable;)V
Landroid/graphics/drawable/AnimatedStateListDrawable$AnimatableTransition;->mA:Landroid/graphics/drawable/Animatable;
Landroid/graphics/drawable/AnimatedStateListDrawable$AnimatableTransition;->start()V
Landroid/graphics/drawable/AnimatedStateListDrawable$AnimatableTransition;->stop()V
-Landroid/graphics/drawable/AnimatedStateListDrawable$AnimatedStateListState;
Landroid/graphics/drawable/AnimatedStateListDrawable$AnimatedStateListState;-><init>(Landroid/graphics/drawable/AnimatedStateListDrawable$AnimatedStateListState;Landroid/graphics/drawable/AnimatedStateListDrawable;Landroid/content/res/Resources;)V
Landroid/graphics/drawable/AnimatedStateListDrawable$AnimatedStateListState;->addStateSet([ILandroid/graphics/drawable/Drawable;I)I
Landroid/graphics/drawable/AnimatedStateListDrawable$AnimatedStateListState;->addTransition(IILandroid/graphics/drawable/Drawable;Z)I
@@ -20798,7 +19459,6 @@
Landroid/graphics/drawable/AnimatedStateListDrawable$AnimatedStateListState;->REVERSED_BIT:J
Landroid/graphics/drawable/AnimatedStateListDrawable$AnimatedStateListState;->REVERSIBLE_FLAG_BIT:J
Landroid/graphics/drawable/AnimatedStateListDrawable$AnimatedStateListState;->transitionHasReversibleFlag(II)Z
-Landroid/graphics/drawable/AnimatedStateListDrawable$AnimatedVectorDrawableTransition;
Landroid/graphics/drawable/AnimatedStateListDrawable$AnimatedVectorDrawableTransition;-><init>(Landroid/graphics/drawable/AnimatedVectorDrawable;ZZ)V
Landroid/graphics/drawable/AnimatedStateListDrawable$AnimatedVectorDrawableTransition;->canReverse()Z
Landroid/graphics/drawable/AnimatedStateListDrawable$AnimatedVectorDrawableTransition;->mAvd:Landroid/graphics/drawable/AnimatedVectorDrawable;
@@ -20807,7 +19467,6 @@
Landroid/graphics/drawable/AnimatedStateListDrawable$AnimatedVectorDrawableTransition;->reverse()V
Landroid/graphics/drawable/AnimatedStateListDrawable$AnimatedVectorDrawableTransition;->start()V
Landroid/graphics/drawable/AnimatedStateListDrawable$AnimatedVectorDrawableTransition;->stop()V
-Landroid/graphics/drawable/AnimatedStateListDrawable$AnimationDrawableTransition;
Landroid/graphics/drawable/AnimatedStateListDrawable$AnimationDrawableTransition;-><init>(Landroid/graphics/drawable/AnimationDrawable;ZZ)V
Landroid/graphics/drawable/AnimatedStateListDrawable$AnimationDrawableTransition;->canReverse()Z
Landroid/graphics/drawable/AnimatedStateListDrawable$AnimationDrawableTransition;->mAnim:Landroid/animation/ObjectAnimator;
@@ -20815,14 +19474,12 @@
Landroid/graphics/drawable/AnimatedStateListDrawable$AnimationDrawableTransition;->reverse()V
Landroid/graphics/drawable/AnimatedStateListDrawable$AnimationDrawableTransition;->start()V
Landroid/graphics/drawable/AnimatedStateListDrawable$AnimationDrawableTransition;->stop()V
-Landroid/graphics/drawable/AnimatedStateListDrawable$FrameInterpolator;
Landroid/graphics/drawable/AnimatedStateListDrawable$FrameInterpolator;-><init>(Landroid/graphics/drawable/AnimationDrawable;Z)V
Landroid/graphics/drawable/AnimatedStateListDrawable$FrameInterpolator;->getTotalDuration()I
Landroid/graphics/drawable/AnimatedStateListDrawable$FrameInterpolator;->mFrames:I
Landroid/graphics/drawable/AnimatedStateListDrawable$FrameInterpolator;->mFrameTimes:[I
Landroid/graphics/drawable/AnimatedStateListDrawable$FrameInterpolator;->mTotalDuration:I
Landroid/graphics/drawable/AnimatedStateListDrawable$FrameInterpolator;->updateFrames(Landroid/graphics/drawable/AnimationDrawable;Z)I
-Landroid/graphics/drawable/AnimatedStateListDrawable$Transition;
Landroid/graphics/drawable/AnimatedStateListDrawable$Transition;-><init>()V
Landroid/graphics/drawable/AnimatedStateListDrawable$Transition;->canReverse()Z
Landroid/graphics/drawable/AnimatedStateListDrawable$Transition;->reverse()V
@@ -20844,13 +19501,11 @@
Landroid/graphics/drawable/AnimatedStateListDrawable;->parseTransition(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)I
Landroid/graphics/drawable/AnimatedStateListDrawable;->selectTransition(I)Z
Landroid/graphics/drawable/AnimatedStateListDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V
-Landroid/graphics/drawable/AnimatedVectorDrawable$AnimatedVectorDrawableState$PendingAnimator;
Landroid/graphics/drawable/AnimatedVectorDrawable$AnimatedVectorDrawableState$PendingAnimator;-><init>(IFLjava/lang/String;)V
Landroid/graphics/drawable/AnimatedVectorDrawable$AnimatedVectorDrawableState$PendingAnimator;->animResId:I
Landroid/graphics/drawable/AnimatedVectorDrawable$AnimatedVectorDrawableState$PendingAnimator;->newInstance(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;)Landroid/animation/Animator;
Landroid/graphics/drawable/AnimatedVectorDrawable$AnimatedVectorDrawableState$PendingAnimator;->pathErrorScale:F
Landroid/graphics/drawable/AnimatedVectorDrawable$AnimatedVectorDrawableState$PendingAnimator;->target:Ljava/lang/String;
-Landroid/graphics/drawable/AnimatedVectorDrawable$AnimatedVectorDrawableState;
Landroid/graphics/drawable/AnimatedVectorDrawable$AnimatedVectorDrawableState;-><init>(Landroid/graphics/drawable/AnimatedVectorDrawable$AnimatedVectorDrawableState;Landroid/graphics/drawable/Drawable$Callback;Landroid/content/res/Resources;)V
Landroid/graphics/drawable/AnimatedVectorDrawable$AnimatedVectorDrawableState;->addPendingAnimator(IFLjava/lang/String;)V
Landroid/graphics/drawable/AnimatedVectorDrawable$AnimatedVectorDrawableState;->addTargetAnimator(Ljava/lang/String;Landroid/animation/Animator;)V
@@ -20863,7 +19518,6 @@
Landroid/graphics/drawable/AnimatedVectorDrawable$AnimatedVectorDrawableState;->mVectorDrawable:Landroid/graphics/drawable/VectorDrawable;
Landroid/graphics/drawable/AnimatedVectorDrawable$AnimatedVectorDrawableState;->prepareLocalAnimator(I)Landroid/animation/Animator;
Landroid/graphics/drawable/AnimatedVectorDrawable$AnimatedVectorDrawableState;->prepareLocalAnimators(Landroid/animation/AnimatorSet;Landroid/content/res/Resources;)V
-Landroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimator;
Landroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimator;->canReverse()Z
Landroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimator;->end()V
Landroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimator;->init(Landroid/animation/AnimatorSet;)V
@@ -20878,7 +19532,6 @@
Landroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimator;->reverse()V
Landroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimator;->setListener(Landroid/animation/Animator$AnimatorListener;)V
Landroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimator;->start()V
-Landroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;
Landroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;-><init>(Landroid/graphics/drawable/AnimatedVectorDrawable;)V
Landroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->addPendingAction(I)V
Landroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->canReverse()Z
@@ -20936,7 +19589,6 @@
Landroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->transferPendingActions(Landroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimator;)V
Landroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->useLastSeenTarget()Z
Landroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->useTarget(Landroid/view/RenderNode;)Z
-Landroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorUI;
Landroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorUI;-><init>(Landroid/graphics/drawable/AnimatedVectorDrawable;)V
Landroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorUI;->canReverse()Z
Landroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorUI;->end()V
@@ -20991,7 +19643,6 @@
Landroid/graphics/drawable/AnimatedVectorDrawable;->shouldIgnoreInvalidAnimation()Z
Landroid/graphics/drawable/AnimatedVectorDrawable;->TARGET:Ljava/lang/String;
Landroid/graphics/drawable/AnimatedVectorDrawable;->updateAnimatorProperty(Landroid/animation/Animator;Ljava/lang/String;Landroid/graphics/drawable/VectorDrawable;Z)V
-Landroid/graphics/drawable/AnimationDrawable$AnimationState;
Landroid/graphics/drawable/AnimationDrawable$AnimationState;-><init>(Landroid/graphics/drawable/AnimationDrawable$AnimationState;Landroid/graphics/drawable/AnimationDrawable;Landroid/content/res/Resources;)V
Landroid/graphics/drawable/AnimationDrawable$AnimationState;->addFrame(Landroid/graphics/drawable/Drawable;I)V
Landroid/graphics/drawable/AnimationDrawable$AnimationState;->mDurations:[I
@@ -21008,7 +19659,6 @@
Landroid/graphics/drawable/AnimationDrawable;->nextFrame(Z)V
Landroid/graphics/drawable/AnimationDrawable;->setFrame(IZZ)V
Landroid/graphics/drawable/AnimationDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V
-Landroid/graphics/drawable/BitmapDrawable$BitmapState;
Landroid/graphics/drawable/BitmapDrawable$BitmapState;-><init>(Landroid/graphics/Bitmap;)V
Landroid/graphics/drawable/BitmapDrawable$BitmapState;-><init>(Landroid/graphics/drawable/BitmapDrawable$BitmapState;)V
Landroid/graphics/drawable/BitmapDrawable$BitmapState;->mAutoMirrored:Z
@@ -21052,7 +19702,6 @@
Landroid/graphics/drawable/BitmapDrawable;->updateShaderMatrix(Landroid/graphics/Bitmap;Landroid/graphics/Paint;Landroid/graphics/Shader;Z)V
Landroid/graphics/drawable/BitmapDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;I)V
Landroid/graphics/drawable/BitmapDrawable;->verifyRequiredAttributes(Landroid/content/res/TypedArray;)V
-Landroid/graphics/drawable/ClipDrawable$ClipState;
Landroid/graphics/drawable/ClipDrawable$ClipState;-><init>(Landroid/graphics/drawable/ClipDrawable$ClipState;Landroid/content/res/Resources;)V
Landroid/graphics/drawable/ClipDrawable$ClipState;->mGravity:I
Landroid/graphics/drawable/ClipDrawable$ClipState;->mOrientation:I
@@ -21064,7 +19713,6 @@
Landroid/graphics/drawable/ClipDrawable;->mutateConstantState()Landroid/graphics/drawable/DrawableWrapper$DrawableWrapperState;
Landroid/graphics/drawable/ClipDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V
Landroid/graphics/drawable/ClipDrawable;->verifyRequiredAttributes(Landroid/content/res/TypedArray;)V
-Landroid/graphics/drawable/ColorDrawable$ColorState;
Landroid/graphics/drawable/ColorDrawable$ColorState;-><init>()V
Landroid/graphics/drawable/ColorDrawable$ColorState;-><init>(Landroid/graphics/drawable/ColorDrawable$ColorState;)V
Landroid/graphics/drawable/ColorDrawable$ColorState;->mBaseColor:I
@@ -21100,7 +19748,6 @@
Landroid/graphics/drawable/Drawable;->setSrcDensityOverride(I)V
Landroid/graphics/drawable/Drawable;->setXfermode(Landroid/graphics/Xfermode;)V
Landroid/graphics/drawable/Drawable;->ZERO_BOUNDS_RECT:Landroid/graphics/Rect;
-Landroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;
Landroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;-><init>()V
Landroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;->mCallback:Landroid/graphics/drawable/Drawable$Callback;
Landroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;->unwrap()Landroid/graphics/drawable/Drawable$Callback;
@@ -21168,7 +19815,6 @@
Landroid/graphics/drawable/DrawableContainer;->setCurrentIndex(I)V
Landroid/graphics/drawable/DrawableContainer;->TAG:Ljava/lang/String;
Landroid/graphics/drawable/DrawableContainer;->updateDensity(Landroid/content/res/Resources;)V
-Landroid/graphics/drawable/DrawableInflater;
Landroid/graphics/drawable/DrawableInflater;-><init>(Landroid/content/res/Resources;Ljava/lang/ClassLoader;)V
Landroid/graphics/drawable/DrawableInflater;->CONSTRUCTOR_MAP:Ljava/util/HashMap;
Landroid/graphics/drawable/DrawableInflater;->inflateFromClass(Ljava/lang/String;)Landroid/graphics/drawable/Drawable;
@@ -21178,7 +19824,6 @@
Landroid/graphics/drawable/DrawableInflater;->loadDrawable(Landroid/content/Context;I)Landroid/graphics/drawable/Drawable;
Landroid/graphics/drawable/DrawableInflater;->loadDrawable(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;I)Landroid/graphics/drawable/Drawable;
Landroid/graphics/drawable/DrawableInflater;->mRes:Landroid/content/res/Resources;
-Landroid/graphics/drawable/DrawableWrapper$DrawableWrapperState;
Landroid/graphics/drawable/DrawableWrapper$DrawableWrapperState;-><init>(Landroid/graphics/drawable/DrawableWrapper$DrawableWrapperState;Landroid/content/res/Resources;)V
Landroid/graphics/drawable/DrawableWrapper$DrawableWrapperState;->canConstantState()Z
Landroid/graphics/drawable/DrawableWrapper$DrawableWrapperState;->mChangingConfigurations:I
@@ -21196,7 +19841,6 @@
Landroid/graphics/drawable/DrawableWrapper;->mutateConstantState()Landroid/graphics/drawable/DrawableWrapper$DrawableWrapperState;
Landroid/graphics/drawable/DrawableWrapper;->updateLocalState(Landroid/content/res/Resources;)V
Landroid/graphics/drawable/DrawableWrapper;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V
-Landroid/graphics/drawable/GradientDrawable$GradientState;
Landroid/graphics/drawable/GradientDrawable$GradientState;-><init>(Landroid/graphics/drawable/GradientDrawable$GradientState;Landroid/content/res/Resources;)V
Landroid/graphics/drawable/GradientDrawable$GradientState;-><init>(Landroid/graphics/drawable/GradientDrawable$Orientation;[I)V
Landroid/graphics/drawable/GradientDrawable$GradientState;->applyDensityScaling(II)V
@@ -21236,10 +19880,6 @@
Landroid/graphics/drawable/GradientDrawable$GradientState;->setSize(II)V
Landroid/graphics/drawable/GradientDrawable$GradientState;->setSolidColors(Landroid/content/res/ColorStateList;)V
Landroid/graphics/drawable/GradientDrawable$GradientState;->setStroke(ILandroid/content/res/ColorStateList;FF)V
-Landroid/graphics/drawable/GradientDrawable$GradientType;
-Landroid/graphics/drawable/GradientDrawable$Orientation;-><init>()V
-Landroid/graphics/drawable/GradientDrawable$RadiusType;
-Landroid/graphics/drawable/GradientDrawable$Shape;
Landroid/graphics/drawable/GradientDrawable;-><init>(Landroid/graphics/drawable/GradientDrawable$GradientState;Landroid/content/res/Resources;)V
Landroid/graphics/drawable/GradientDrawable;->applyThemeChildElements(Landroid/content/res/Resources$Theme;)V
Landroid/graphics/drawable/GradientDrawable;->buildPathIfDirty()V
@@ -21278,10 +19918,6 @@
Landroid/graphics/drawable/GradientDrawable;->updateGradientDrawableStroke(Landroid/content/res/TypedArray;)V
Landroid/graphics/drawable/GradientDrawable;->updateLocalState(Landroid/content/res/Resources;)V
Landroid/graphics/drawable/GradientDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V
-Landroid/graphics/drawable/Icon$IconType;
-Landroid/graphics/drawable/Icon$LoadDrawableTask;
-Landroid/graphics/drawable/Icon$LoadDrawableTask;-><init>(Landroid/content/Context;Landroid/os/Handler;Landroid/graphics/drawable/Icon$OnDrawableLoadedListener;)V
-Landroid/graphics/drawable/Icon$LoadDrawableTask;-><init>(Landroid/content/Context;Landroid/os/Message;)V
Landroid/graphics/drawable/Icon$LoadDrawableTask;->mContext:Landroid/content/Context;
Landroid/graphics/drawable/Icon$LoadDrawableTask;->mMessage:Landroid/os/Message;
Landroid/graphics/drawable/Icon$LoadDrawableTask;->runAsync()V
@@ -21307,7 +19943,6 @@
Landroid/graphics/drawable/Icon;->typeToString(I)Ljava/lang/String;
Landroid/graphics/drawable/Icon;->VERSION_STREAM_SERIALIZER:I
Landroid/graphics/drawable/Icon;->writeToStream(Ljava/io/OutputStream;)V
-Landroid/graphics/drawable/InsetDrawable$InsetState;
Landroid/graphics/drawable/InsetDrawable$InsetState;-><init>(Landroid/graphics/drawable/InsetDrawable$InsetState;Landroid/content/res/Resources;)V
Landroid/graphics/drawable/InsetDrawable$InsetState;->applyDensityScaling(II)V
Landroid/graphics/drawable/InsetDrawable$InsetState;->mInsetBottom:Landroid/graphics/drawable/InsetDrawable$InsetValue;
@@ -21316,7 +19951,6 @@
Landroid/graphics/drawable/InsetDrawable$InsetState;->mInsetTop:Landroid/graphics/drawable/InsetDrawable$InsetValue;
Landroid/graphics/drawable/InsetDrawable$InsetState;->mThemeAttrs:[I
Landroid/graphics/drawable/InsetDrawable$InsetState;->onDensityChanged(II)V
-Landroid/graphics/drawable/InsetDrawable$InsetValue;
Landroid/graphics/drawable/InsetDrawable$InsetValue;-><init>()V
Landroid/graphics/drawable/InsetDrawable$InsetValue;-><init>(FI)V
Landroid/graphics/drawable/InsetDrawable$InsetValue;->getDimension(I)I
@@ -21332,7 +19966,6 @@
Landroid/graphics/drawable/InsetDrawable;->mutateConstantState()Landroid/graphics/drawable/DrawableWrapper$DrawableWrapperState;
Landroid/graphics/drawable/InsetDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V
Landroid/graphics/drawable/InsetDrawable;->verifyRequiredAttributes(Landroid/content/res/TypedArray;)V
-Landroid/graphics/drawable/LayerDrawable$ChildDrawable;
Landroid/graphics/drawable/LayerDrawable$ChildDrawable;-><init>(I)V
Landroid/graphics/drawable/LayerDrawable$ChildDrawable;-><init>(Landroid/graphics/drawable/LayerDrawable$ChildDrawable;Landroid/graphics/drawable/LayerDrawable;Landroid/content/res/Resources;)V
Landroid/graphics/drawable/LayerDrawable$ChildDrawable;->applyDensityScaling(II)V
@@ -21350,7 +19983,6 @@
Landroid/graphics/drawable/LayerDrawable$ChildDrawable;->mThemeAttrs:[I
Landroid/graphics/drawable/LayerDrawable$ChildDrawable;->mWidth:I
Landroid/graphics/drawable/LayerDrawable$ChildDrawable;->setDensity(I)V
-Landroid/graphics/drawable/LayerDrawable$LayerState;
Landroid/graphics/drawable/LayerDrawable$LayerState;-><init>(Landroid/graphics/drawable/LayerDrawable$LayerState;Landroid/graphics/drawable/LayerDrawable;Landroid/content/res/Resources;)V
Landroid/graphics/drawable/LayerDrawable$LayerState;->applyDensityScaling(II)V
Landroid/graphics/drawable/LayerDrawable$LayerState;->canConstantState()Z
@@ -21412,7 +20044,6 @@
Landroid/graphics/drawable/LayerDrawable;->updateLayerBoundsInternal(Landroid/graphics/Rect;)V
Landroid/graphics/drawable/LayerDrawable;->updateLayerFromTypedArray(Landroid/graphics/drawable/LayerDrawable$ChildDrawable;Landroid/content/res/TypedArray;)V
Landroid/graphics/drawable/LayerDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V
-Landroid/graphics/drawable/LevelListDrawable$LevelListState;
Landroid/graphics/drawable/LevelListDrawable$LevelListState;-><init>(Landroid/graphics/drawable/LevelListDrawable$LevelListState;Landroid/graphics/drawable/LevelListDrawable;Landroid/content/res/Resources;)V
Landroid/graphics/drawable/LevelListDrawable$LevelListState;->addLevel(IILandroid/graphics/drawable/Drawable;)V
Landroid/graphics/drawable/LevelListDrawable$LevelListState;->indexOfLevel(I)I
@@ -21425,7 +20056,6 @@
Landroid/graphics/drawable/LevelListDrawable;->inflateChildElements(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V
Landroid/graphics/drawable/LevelListDrawable;->mLevelListState:Landroid/graphics/drawable/LevelListDrawable$LevelListState;
Landroid/graphics/drawable/LevelListDrawable;->mMutated:Z
-Landroid/graphics/drawable/NinePatchDrawable$NinePatchState;
Landroid/graphics/drawable/NinePatchDrawable$NinePatchState;-><init>()V
Landroid/graphics/drawable/NinePatchDrawable$NinePatchState;-><init>(Landroid/graphics/drawable/NinePatchDrawable$NinePatchState;)V
Landroid/graphics/drawable/NinePatchDrawable$NinePatchState;-><init>(Landroid/graphics/NinePatch;Landroid/graphics/Rect;)V
@@ -21461,9 +20091,7 @@
Landroid/graphics/drawable/NinePatchDrawable;->updateLocalState(Landroid/content/res/Resources;)V
Landroid/graphics/drawable/NinePatchDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V
Landroid/graphics/drawable/PictureDrawable;->mPicture:Landroid/graphics/Picture;
-Landroid/graphics/drawable/RippleBackground$BackgroundProperty;
Landroid/graphics/drawable/RippleBackground$BackgroundProperty;-><init>(Ljava/lang/String;)V
-Landroid/graphics/drawable/RippleBackground;
Landroid/graphics/drawable/RippleBackground;-><init>(Landroid/graphics/drawable/RippleDrawable;Landroid/graphics/Rect;Z)V
Landroid/graphics/drawable/RippleBackground;->draw(Landroid/graphics/Canvas;Landroid/graphics/Paint;)V
Landroid/graphics/drawable/RippleBackground;->isVisible()Z
@@ -21478,7 +20106,6 @@
Landroid/graphics/drawable/RippleBackground;->OPACITY:Landroid/graphics/drawable/RippleBackground$BackgroundProperty;
Landroid/graphics/drawable/RippleBackground;->OPACITY_DURATION:I
Landroid/graphics/drawable/RippleBackground;->setState(ZZZ)V
-Landroid/graphics/drawable/RippleComponent;
Landroid/graphics/drawable/RippleComponent;-><init>(Landroid/graphics/drawable/RippleDrawable;Landroid/graphics/Rect;)V
Landroid/graphics/drawable/RippleComponent;->getBounds(Landroid/graphics/Rect;)V
Landroid/graphics/drawable/RippleComponent;->getTargetRadius(Landroid/graphics/Rect;)F
@@ -21492,7 +20119,6 @@
Landroid/graphics/drawable/RippleComponent;->onHotspotBoundsChanged()V
Landroid/graphics/drawable/RippleComponent;->onTargetRadiusChanged(F)V
Landroid/graphics/drawable/RippleComponent;->setup(FI)V
-Landroid/graphics/drawable/RippleDrawable$RippleState;
Landroid/graphics/drawable/RippleDrawable$RippleState;-><init>(Landroid/graphics/drawable/LayerDrawable$LayerState;Landroid/graphics/drawable/RippleDrawable;Landroid/content/res/Resources;)V
Landroid/graphics/drawable/RippleDrawable$RippleState;->applyDensityScaling(II)V
Landroid/graphics/drawable/RippleDrawable$RippleState;->mMaxRadius:I
@@ -21547,7 +20173,6 @@
Landroid/graphics/drawable/RippleDrawable;->updateMaskShaderIfNeeded()V
Landroid/graphics/drawable/RippleDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V
Landroid/graphics/drawable/RippleDrawable;->verifyRequiredAttributes(Landroid/content/res/TypedArray;)V
-Landroid/graphics/drawable/RippleForeground;
Landroid/graphics/drawable/RippleForeground;-><init>(Landroid/graphics/drawable/RippleDrawable;Landroid/graphics/Rect;FFZ)V
Landroid/graphics/drawable/RippleForeground;->clampStartingPosition()V
Landroid/graphics/drawable/RippleForeground;->clearHwProps()V
@@ -21607,7 +20232,6 @@
Landroid/graphics/drawable/RippleForeground;->switchToUiThreadAnimation()V
Landroid/graphics/drawable/RippleForeground;->TWEEN_ORIGIN:Landroid/util/FloatProperty;
Landroid/graphics/drawable/RippleForeground;->TWEEN_RADIUS:Landroid/util/FloatProperty;
-Landroid/graphics/drawable/RotateDrawable$RotateState;
Landroid/graphics/drawable/RotateDrawable$RotateState;-><init>(Landroid/graphics/drawable/RotateDrawable$RotateState;Landroid/content/res/Resources;)V
Landroid/graphics/drawable/RotateDrawable$RotateState;->mCurrentDegrees:F
Landroid/graphics/drawable/RotateDrawable$RotateState;->mFromDegrees:F
@@ -21622,7 +20246,6 @@
Landroid/graphics/drawable/RotateDrawable;->mutateConstantState()Landroid/graphics/drawable/DrawableWrapper$DrawableWrapperState;
Landroid/graphics/drawable/RotateDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V
Landroid/graphics/drawable/RotateDrawable;->verifyRequiredAttributes(Landroid/content/res/TypedArray;)V
-Landroid/graphics/drawable/ScaleDrawable$ScaleState;
Landroid/graphics/drawable/ScaleDrawable$ScaleState;-><init>(Landroid/graphics/drawable/ScaleDrawable$ScaleState;Landroid/content/res/Resources;)V
Landroid/graphics/drawable/ScaleDrawable$ScaleState;->DO_NOT_SCALE:F
Landroid/graphics/drawable/ScaleDrawable$ScaleState;->mGravity:I
@@ -21640,7 +20263,6 @@
Landroid/graphics/drawable/ScaleDrawable;->updateLocalState()V
Landroid/graphics/drawable/ScaleDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V
Landroid/graphics/drawable/ScaleDrawable;->verifyRequiredAttributes(Landroid/content/res/TypedArray;)V
-Landroid/graphics/drawable/ShapeDrawable$ShapeState;
Landroid/graphics/drawable/ShapeDrawable$ShapeState;-><init>()V
Landroid/graphics/drawable/ShapeDrawable$ShapeState;-><init>(Landroid/graphics/drawable/ShapeDrawable$ShapeState;)V
Landroid/graphics/drawable/ShapeDrawable$ShapeState;->mAlpha:I
@@ -21678,7 +20300,6 @@
Landroid/graphics/drawable/shapes/RoundRectShape;->mPath:Landroid/graphics/Path;
Landroid/graphics/drawable/shapes/Shape;->mHeight:F
Landroid/graphics/drawable/shapes/Shape;->mWidth:F
-Landroid/graphics/drawable/StateListDrawable$StateListState;
Landroid/graphics/drawable/StateListDrawable$StateListState;-><init>(Landroid/graphics/drawable/StateListDrawable$StateListState;Landroid/graphics/drawable/StateListDrawable;Landroid/content/res/Resources;)V
Landroid/graphics/drawable/StateListDrawable$StateListState;->hasFocusStateSpecified()Z
Landroid/graphics/drawable/StateListDrawable$StateListState;->indexOfStateSet([I)I
@@ -21694,7 +20315,6 @@
Landroid/graphics/drawable/StateListDrawable;->inflateChildElements(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V
Landroid/graphics/drawable/StateListDrawable;->mMutated:Z
Landroid/graphics/drawable/StateListDrawable;->TAG:Ljava/lang/String;
-Landroid/graphics/drawable/TransitionDrawable$TransitionState;
Landroid/graphics/drawable/TransitionDrawable$TransitionState;-><init>(Landroid/graphics/drawable/TransitionDrawable$TransitionState;Landroid/graphics/drawable/TransitionDrawable;Landroid/content/res/Resources;)V
Landroid/graphics/drawable/TransitionDrawable;-><init>()V
Landroid/graphics/drawable/TransitionDrawable;-><init>(Landroid/graphics/drawable/TransitionDrawable$TransitionState;Landroid/content/res/Resources;)V
@@ -21710,7 +20330,6 @@
Landroid/graphics/drawable/TransitionDrawable;->TRANSITION_NONE:I
Landroid/graphics/drawable/TransitionDrawable;->TRANSITION_RUNNING:I
Landroid/graphics/drawable/TransitionDrawable;->TRANSITION_STARTING:I
-Landroid/graphics/drawable/VectorDrawable$VClipPath;
Landroid/graphics/drawable/VectorDrawable$VClipPath;-><init>()V
Landroid/graphics/drawable/VectorDrawable$VClipPath;-><init>(Landroid/graphics/drawable/VectorDrawable$VClipPath;)V
Landroid/graphics/drawable/VectorDrawable$VClipPath;->applyTheme(Landroid/content/res/Resources$Theme;)V
@@ -21724,7 +20343,6 @@
Landroid/graphics/drawable/VectorDrawable$VClipPath;->NATIVE_ALLOCATION_SIZE:I
Landroid/graphics/drawable/VectorDrawable$VClipPath;->onStateChange([I)Z
Landroid/graphics/drawable/VectorDrawable$VClipPath;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V
-Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;
Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;-><init>(Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;)V
Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;->ALPHA:Landroid/util/Property;
Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;->applyDensityScaling(II)V
@@ -21767,7 +20385,6 @@
Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;->setDensity(I)Z
Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;->setViewportSize(FF)V
Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;->updateCacheStates()V
-Landroid/graphics/drawable/VectorDrawable$VFullPath;
Landroid/graphics/drawable/VectorDrawable$VFullPath;-><init>()V
Landroid/graphics/drawable/VectorDrawable$VFullPath;-><init>(Landroid/graphics/drawable/VectorDrawable$VFullPath;)V
Landroid/graphics/drawable/VectorDrawable$VFullPath;->applyTheme(Landroid/content/res/Resources$Theme;)V
@@ -21827,7 +20444,6 @@
Landroid/graphics/drawable/VectorDrawable$VFullPath;->TRIM_PATH_START:Landroid/util/Property;
Landroid/graphics/drawable/VectorDrawable$VFullPath;->TRIM_PATH_START_INDEX:I
Landroid/graphics/drawable/VectorDrawable$VFullPath;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V
-Landroid/graphics/drawable/VectorDrawable$VGroup;
Landroid/graphics/drawable/VectorDrawable$VGroup;-><init>()V
Landroid/graphics/drawable/VectorDrawable$VGroup;-><init>(Landroid/graphics/drawable/VectorDrawable$VGroup;Landroid/util/ArrayMap;)V
Landroid/graphics/drawable/VectorDrawable$VGroup;->addChild(Landroid/graphics/drawable/VectorDrawable$VObject;)V
@@ -21878,7 +20494,6 @@
Landroid/graphics/drawable/VectorDrawable$VGroup;->TRANSLATE_Y:Landroid/util/Property;
Landroid/graphics/drawable/VectorDrawable$VGroup;->TRANSLATE_Y_INDEX:I
Landroid/graphics/drawable/VectorDrawable$VGroup;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V
-Landroid/graphics/drawable/VectorDrawable$VObject;
Landroid/graphics/drawable/VectorDrawable$VObject;-><init>()V
Landroid/graphics/drawable/VectorDrawable$VObject;->applyTheme(Landroid/content/res/Resources$Theme;)V
Landroid/graphics/drawable/VectorDrawable$VObject;->canApplyTheme()Z
@@ -21892,7 +20507,6 @@
Landroid/graphics/drawable/VectorDrawable$VObject;->mTreePtr:Lcom/android/internal/util/VirtualRefBasePtr;
Landroid/graphics/drawable/VectorDrawable$VObject;->onStateChange([I)Z
Landroid/graphics/drawable/VectorDrawable$VObject;->setTree(Lcom/android/internal/util/VirtualRefBasePtr;)V
-Landroid/graphics/drawable/VectorDrawable$VPath;
Landroid/graphics/drawable/VectorDrawable$VPath;-><init>()V
Landroid/graphics/drawable/VectorDrawable$VPath;-><init>(Landroid/graphics/drawable/VectorDrawable$VPath;)V
Landroid/graphics/drawable/VectorDrawable$VPath;->getPathData()Landroid/util/PathParser$PathData;
@@ -21985,7 +20599,6 @@
Landroid/graphics/DrawFilter;->mNativeInt:J
Landroid/graphics/DrawFilter;->nativeDestructor(J)V
Landroid/graphics/EmbossMaskFilter;->nativeConstructor([FFFF)J
-Landroid/graphics/FontFamily;
Landroid/graphics/FontFamily;->addFont(Ljava/lang/String;I[Landroid/graphics/fonts/FontVariationAxis;II)Z
Landroid/graphics/FontFamily;->mBuilderPtr:J
Landroid/graphics/FontFamily;->mNativeBuilderCleaner:Ljava/lang/Runnable;
@@ -22001,7 +20614,6 @@
Landroid/graphics/FontFamily;->sBuilderRegistry:Llibcore/util/NativeAllocationRegistry;
Landroid/graphics/FontFamily;->sFamilyRegistry:Llibcore/util/NativeAllocationRegistry;
Landroid/graphics/FontFamily;->TAG:Ljava/lang/String;
-Landroid/graphics/FontListParser;
Landroid/graphics/FontListParser;-><init>()V
Landroid/graphics/FontListParser;->FILENAME_WHITESPACE_PATTERN:Ljava/util/regex/Pattern;
Landroid/graphics/FontListParser;->readAlias(Lorg/xmlpull/v1/XmlPullParser;)Landroid/text/FontConfig$Alias;
@@ -22017,7 +20629,6 @@
Landroid/graphics/fonts/FontVariationAxis;->mTagString:Ljava/lang/String;
Landroid/graphics/fonts/FontVariationAxis;->STYLE_VALUE_PATTERN:Ljava/util/regex/Pattern;
Landroid/graphics/fonts/FontVariationAxis;->TAG_PATTERN:Ljava/util/regex/Pattern;
-Landroid/graphics/GraphicBuffer;
Landroid/graphics/GraphicBuffer;->create(IIII)Landroid/graphics/GraphicBuffer;
Landroid/graphics/GraphicBuffer;->destroy()V
Landroid/graphics/GraphicBuffer;->getFormat()I
@@ -22058,8 +20669,6 @@
Landroid/graphics/GraphicBuffer;->USAGE_SW_WRITE_NEVER:I
Landroid/graphics/GraphicBuffer;->USAGE_SW_WRITE_OFTEN:I
Landroid/graphics/GraphicBuffer;->USAGE_SW_WRITE_RARELY:I
-Landroid/graphics/ImageDecoder$Allocator;
-Landroid/graphics/ImageDecoder$AssetInputStreamSource;
Landroid/graphics/ImageDecoder$AssetInputStreamSource;-><init>(Landroid/content/res/AssetManager$AssetInputStream;Landroid/content/res/Resources;Landroid/util/TypedValue;)V
Landroid/graphics/ImageDecoder$AssetInputStreamSource;->createImageDecoder()Landroid/graphics/ImageDecoder;
Landroid/graphics/ImageDecoder$AssetInputStreamSource;->getDensity()I
@@ -22067,42 +20676,35 @@
Landroid/graphics/ImageDecoder$AssetInputStreamSource;->mAssetInputStream:Landroid/content/res/AssetManager$AssetInputStream;
Landroid/graphics/ImageDecoder$AssetInputStreamSource;->mDensity:I
Landroid/graphics/ImageDecoder$AssetInputStreamSource;->mResources:Landroid/content/res/Resources;
-Landroid/graphics/ImageDecoder$AssetSource;
Landroid/graphics/ImageDecoder$AssetSource;-><init>(Landroid/content/res/AssetManager;Ljava/lang/String;)V
Landroid/graphics/ImageDecoder$AssetSource;->createImageDecoder()Landroid/graphics/ImageDecoder;
Landroid/graphics/ImageDecoder$AssetSource;->mAssets:Landroid/content/res/AssetManager;
Landroid/graphics/ImageDecoder$AssetSource;->mFileName:Ljava/lang/String;
-Landroid/graphics/ImageDecoder$ByteArraySource;
Landroid/graphics/ImageDecoder$ByteArraySource;-><init>([BII)V
Landroid/graphics/ImageDecoder$ByteArraySource;->createImageDecoder()Landroid/graphics/ImageDecoder;
Landroid/graphics/ImageDecoder$ByteArraySource;->mData:[B
Landroid/graphics/ImageDecoder$ByteArraySource;->mLength:I
Landroid/graphics/ImageDecoder$ByteArraySource;->mOffset:I
-Landroid/graphics/ImageDecoder$ByteBufferSource;
Landroid/graphics/ImageDecoder$ByteBufferSource;-><init>(Ljava/nio/ByteBuffer;)V
Landroid/graphics/ImageDecoder$ByteBufferSource;->createImageDecoder()Landroid/graphics/ImageDecoder;
Landroid/graphics/ImageDecoder$ByteBufferSource;->mBuffer:Ljava/nio/ByteBuffer;
-Landroid/graphics/ImageDecoder$ContentResolverSource;
Landroid/graphics/ImageDecoder$ContentResolverSource;-><init>(Landroid/content/ContentResolver;Landroid/net/Uri;Landroid/content/res/Resources;)V
Landroid/graphics/ImageDecoder$ContentResolverSource;->createImageDecoder()Landroid/graphics/ImageDecoder;
Landroid/graphics/ImageDecoder$ContentResolverSource;->getResources()Landroid/content/res/Resources;
Landroid/graphics/ImageDecoder$ContentResolverSource;->mResolver:Landroid/content/ContentResolver;
Landroid/graphics/ImageDecoder$ContentResolverSource;->mResources:Landroid/content/res/Resources;
Landroid/graphics/ImageDecoder$ContentResolverSource;->mUri:Landroid/net/Uri;
-Landroid/graphics/ImageDecoder$DecodeException$Error;
Landroid/graphics/ImageDecoder$DecodeException;-><init>(ILjava/lang/String;Ljava/lang/Throwable;Landroid/graphics/ImageDecoder$Source;)V
Landroid/graphics/ImageDecoder$DecodeException;-><init>(ILjava/lang/Throwable;Landroid/graphics/ImageDecoder$Source;)V
Landroid/graphics/ImageDecoder$DecodeException;->errorMessage(ILjava/lang/Throwable;)Ljava/lang/String;
Landroid/graphics/ImageDecoder$DecodeException;->mError:I
Landroid/graphics/ImageDecoder$DecodeException;->mSource:Landroid/graphics/ImageDecoder$Source;
-Landroid/graphics/ImageDecoder$FileSource;
Landroid/graphics/ImageDecoder$FileSource;-><init>(Ljava/io/File;)V
Landroid/graphics/ImageDecoder$FileSource;->createImageDecoder()Landroid/graphics/ImageDecoder;
Landroid/graphics/ImageDecoder$FileSource;->mFile:Ljava/io/File;
Landroid/graphics/ImageDecoder$ImageInfo;-><init>(Landroid/graphics/ImageDecoder;)V
Landroid/graphics/ImageDecoder$ImageInfo;->mDecoder:Landroid/graphics/ImageDecoder;
Landroid/graphics/ImageDecoder$ImageInfo;->mSize:Landroid/util/Size;
-Landroid/graphics/ImageDecoder$InputStreamSource;
Landroid/graphics/ImageDecoder$InputStreamSource;-><init>(Landroid/content/res/Resources;Ljava/io/InputStream;I)V
Landroid/graphics/ImageDecoder$InputStreamSource;->createImageDecoder()Landroid/graphics/ImageDecoder;
Landroid/graphics/ImageDecoder$InputStreamSource;->getDensity()I
@@ -22110,8 +20712,6 @@
Landroid/graphics/ImageDecoder$InputStreamSource;->mInputDensity:I
Landroid/graphics/ImageDecoder$InputStreamSource;->mInputStream:Ljava/io/InputStream;
Landroid/graphics/ImageDecoder$InputStreamSource;->mResources:Landroid/content/res/Resources;
-Landroid/graphics/ImageDecoder$MemoryPolicy;
-Landroid/graphics/ImageDecoder$ResourceSource;
Landroid/graphics/ImageDecoder$ResourceSource;-><init>(Landroid/content/res/Resources;I)V
Landroid/graphics/ImageDecoder$ResourceSource;->createImageDecoder()Landroid/graphics/ImageDecoder;
Landroid/graphics/ImageDecoder$ResourceSource;->getDensity()I
@@ -22186,9 +20786,7 @@
Landroid/graphics/ImageFormat;->isPublicFormat(I)Z
Landroid/graphics/ImageFormat;->RAW_DEPTH:I
Landroid/graphics/ImageFormat;->Y16:I
-Landroid/graphics/Insets;
Landroid/graphics/Insets;-><init>(IIII)V
-Landroid/graphics/Interpolator$Result;-><init>()V
Landroid/graphics/Interpolator;->mFrameCount:I
Landroid/graphics/Interpolator;->mValueCount:I
Landroid/graphics/Interpolator;->nativeConstructor(II)J
@@ -22198,7 +20796,6 @@
Landroid/graphics/Interpolator;->nativeSetRepeatMirror(JFZ)V
Landroid/graphics/Interpolator;->nativeTimeToValues(JI[F)I
Landroid/graphics/Interpolator;->native_instance:J
-Landroid/graphics/LargeBitmap;
Landroid/graphics/LargeBitmap;-><init>(J)V
Landroid/graphics/LargeBitmap;->checkRecycled(Ljava/lang/String;)V
Landroid/graphics/LargeBitmap;->decodeRegion(Landroid/graphics/Rect;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;
@@ -22212,7 +20809,6 @@
Landroid/graphics/LargeBitmap;->nativeGetHeight(J)I
Landroid/graphics/LargeBitmap;->nativeGetWidth(J)I
Landroid/graphics/LargeBitmap;->recycle()V
-Landroid/graphics/LeakyTypefaceStorage;
Landroid/graphics/LeakyTypefaceStorage;-><init>()V
Landroid/graphics/LeakyTypefaceStorage;->readTypefaceFromParcel(Landroid/os/Parcel;)Landroid/graphics/Typeface;
Landroid/graphics/LeakyTypefaceStorage;->sLock:Ljava/lang/Object;
@@ -22232,10 +20828,8 @@
Landroid/graphics/LinearGradient;->TYPE_COLOR_START_AND_COLOR_END:I
Landroid/graphics/MaskFilter;->nativeDestructor(J)V
Landroid/graphics/MaskFilter;->native_instance:J
-Landroid/graphics/Matrix$NoImagePreloadHolder;
Landroid/graphics/Matrix$NoImagePreloadHolder;-><init>()V
Landroid/graphics/Matrix$NoImagePreloadHolder;->sRegistry:Llibcore/util/NativeAllocationRegistry;
-Landroid/graphics/Matrix$ScaleToFit;-><init>(I)V
Landroid/graphics/Matrix$ScaleToFit;->nativeInt:I
Landroid/graphics/Matrix;->checkPointArrays([FI[FII)V
Landroid/graphics/Matrix;->NATIVE_ALLOCATION_SIZE:J
@@ -22289,7 +20883,6 @@
Landroid/graphics/Movie;->nativeDecodeStream(Ljava/io/InputStream;)Landroid/graphics/Movie;
Landroid/graphics/Movie;->nativeDestructor(J)V
Landroid/graphics/Movie;->nDraw(JFFJ)V
-Landroid/graphics/NinePatch$InsetStruct;
Landroid/graphics/NinePatch$InsetStruct;->opticalRect:Landroid/graphics/Rect;
Landroid/graphics/NinePatch$InsetStruct;->outlineAlpha:F
Landroid/graphics/NinePatch$InsetStruct;->outlineRadius:F
@@ -22301,7 +20894,6 @@
Landroid/graphics/NinePatch;->nativeFinalize(J)V
Landroid/graphics/NinePatch;->nativeGetTransparentRegion(Landroid/graphics/Bitmap;JLandroid/graphics/Rect;)J
Landroid/graphics/NinePatch;->validateNinePatchChunk([B)J
-Landroid/graphics/Outline$Mode;
Landroid/graphics/Outline;->mAlpha:F
Landroid/graphics/Outline;->mMode:I
Landroid/graphics/Outline;->MODE_CONVEX_PATH:I
@@ -22310,16 +20902,11 @@
Landroid/graphics/Outline;->mPath:Landroid/graphics/Path;
Landroid/graphics/Outline;->mRadius:F
Landroid/graphics/Outline;->RADIUS_UNDEFINED:F
-Landroid/graphics/Paint$Align;-><init>(I)V
Landroid/graphics/Paint$Align;->nativeInt:I
-Landroid/graphics/Paint$Cap;-><init>(I)V
Landroid/graphics/Paint$Cap;->nativeInt:I
-Landroid/graphics/Paint$Join;-><init>(I)V
Landroid/graphics/Paint$Join;->nativeInt:I
-Landroid/graphics/Paint$NoImagePreloadHolder;
Landroid/graphics/Paint$NoImagePreloadHolder;-><init>()V
Landroid/graphics/Paint$NoImagePreloadHolder;->sRegistry:Llibcore/util/NativeAllocationRegistry;
-Landroid/graphics/Paint$Style;-><init>(I)V
Landroid/graphics/Paint$Style;->nativeInt:I
Landroid/graphics/Paint;->AUTO_HINTING_TEXT_FLAG:I
Landroid/graphics/Paint;->BIDI_DEFAULT_LTR:I
@@ -22468,11 +21055,8 @@
Landroid/graphics/Paint;->syncTextLocalesWithMinikin()V
Landroid/graphics/Paint;->VERTICAL_TEXT_FLAG:I
Landroid/graphics/PaintFlagsDrawFilter;->nativeConstructor(II)J
-Landroid/graphics/Path$Direction;-><init>(I)V
Landroid/graphics/Path$Direction;->nativeInt:I
-Landroid/graphics/Path$FillType;-><init>(I)V
Landroid/graphics/Path$FillType;->nativeInt:I
-Landroid/graphics/Path$Op;-><init>()V
Landroid/graphics/Path;->detectSimplePath(FFFFLandroid/graphics/Path$Direction;)V
Landroid/graphics/Path;->mLastDirection:Landroid/graphics/Path$Direction;
Landroid/graphics/Path;->mNativePath:J
@@ -22518,7 +21102,6 @@
Landroid/graphics/Path;->readOnlyNI()J
Landroid/graphics/Path;->sFillTypeArray:[Landroid/graphics/Path$FillType;
Landroid/graphics/Path;->sRegistry:Llibcore/util/NativeAllocationRegistry;
-Landroid/graphics/PathDashPathEffect$Style;-><init>(I)V
Landroid/graphics/PathDashPathEffect$Style;->native_style:I
Landroid/graphics/PathDashPathEffect;->nativeCreate(JFFI)J
Landroid/graphics/PathEffect;->nativeDestructor(J)V
@@ -22545,8 +21128,6 @@
Landroid/graphics/pdf/PdfDocument$PageInfo;->mPageHeight:I
Landroid/graphics/pdf/PdfDocument$PageInfo;->mPageNumber:I
Landroid/graphics/pdf/PdfDocument$PageInfo;->mPageWidth:I
-Landroid/graphics/pdf/PdfDocument$PdfCanvas;
-Landroid/graphics/pdf/PdfDocument$PdfCanvas;-><init>(J)V
Landroid/graphics/pdf/PdfDocument;->dispose()V
Landroid/graphics/pdf/PdfDocument;->mChunk:[B
Landroid/graphics/pdf/PdfDocument;->mCloseGuard:Ldalvik/system/CloseGuard;
@@ -22560,7 +21141,6 @@
Landroid/graphics/pdf/PdfDocument;->nativeWriteTo(JLjava/io/OutputStream;[B)V
Landroid/graphics/pdf/PdfDocument;->throwIfClosed()V
Landroid/graphics/pdf/PdfDocument;->throwIfCurrentPageNotFinished()V
-Landroid/graphics/pdf/PdfEditor;
Landroid/graphics/pdf/PdfEditor;-><init>(Landroid/os/ParcelFileDescriptor;)V
Landroid/graphics/pdf/PdfEditor;->close()V
Landroid/graphics/pdf/PdfEditor;->doClose()V
@@ -22598,7 +21178,6 @@
Landroid/graphics/pdf/PdfEditor;->throwIfOutSizeNull(Landroid/graphics/Point;)V
Landroid/graphics/pdf/PdfEditor;->throwIfPageNotInDocument(I)V
Landroid/graphics/pdf/PdfEditor;->write(Landroid/os/ParcelFileDescriptor;)V
-Landroid/graphics/pdf/PdfRenderer$Page;-><init>(I)V
Landroid/graphics/pdf/PdfRenderer$Page;->doClose()V
Landroid/graphics/pdf/PdfRenderer$Page;->mCloseGuard:Ldalvik/system/CloseGuard;
Landroid/graphics/pdf/PdfRenderer$Page;->mHeight:I
@@ -22606,7 +21185,6 @@
Landroid/graphics/pdf/PdfRenderer$Page;->mNativePage:J
Landroid/graphics/pdf/PdfRenderer$Page;->mWidth:I
Landroid/graphics/pdf/PdfRenderer$Page;->throwIfClosed()V
-Landroid/graphics/pdf/PdfRenderer$RenderMode;
Landroid/graphics/pdf/PdfRenderer;->mCloseGuard:Ldalvik/system/CloseGuard;
Landroid/graphics/pdf/PdfRenderer;->mInput:Landroid/os/ParcelFileDescriptor;
Landroid/graphics/pdf/PdfRenderer;->mNativeDocument:J
@@ -22623,7 +21201,6 @@
Landroid/graphics/pdf/PdfRenderer;->throwIfClosed()V
Landroid/graphics/pdf/PdfRenderer;->throwIfPageNotInDocument(I)V
Landroid/graphics/pdf/PdfRenderer;->throwIfPageOpened()V
-Landroid/graphics/Picture$PictureCanvas;
Landroid/graphics/Picture$PictureCanvas;-><init>(Landroid/graphics/Picture;J)V
Landroid/graphics/Picture$PictureCanvas;->mHoldsHwBitmap:Z
Landroid/graphics/Picture$PictureCanvas;->mPicture:Landroid/graphics/Picture;
@@ -22641,11 +21218,8 @@
Landroid/graphics/Picture;->nativeGetWidth(J)I
Landroid/graphics/Picture;->nativeWriteToStream(JLjava/io/OutputStream;[B)Z
Landroid/graphics/Picture;->WORKING_STREAM_STORAGE:I
-Landroid/graphics/PixelFormat$Format;
-Landroid/graphics/PixelFormat$Opacity;
Landroid/graphics/PixelFormat;->formatToString(I)Ljava/lang/String;
Landroid/graphics/PixelFormat;->isPublicFormat(I)Z
-Landroid/graphics/PixelFormatProto;
Landroid/graphics/PixelFormatProto;-><init>()V
Landroid/graphics/PixelFormatProto;->OPAQUE:I
Landroid/graphics/PixelFormatProto;->RGBA_1010102:I
@@ -22659,11 +21233,9 @@
Landroid/graphics/PixelFormatProto;->UNKNOWN:I
Landroid/graphics/Point;->printShortString(Ljava/io/PrintWriter;)V
Landroid/graphics/Point;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-Landroid/graphics/PointProto;
Landroid/graphics/PointProto;-><init>()V
Landroid/graphics/PointProto;->X:J
Landroid/graphics/PointProto;->Y:J
-Landroid/graphics/PorterDuff$Mode;-><init>(I)V
Landroid/graphics/PorterDuff;->intToMode(I)Landroid/graphics/PorterDuff$Mode;
Landroid/graphics/PorterDuff;->modeToInt(Landroid/graphics/PorterDuff$Mode;)I
Landroid/graphics/PorterDuffColorFilter;->createNativeInstance()J
@@ -22677,7 +21249,6 @@
Landroid/graphics/RadialGradient;->nativeCreate2(JFFFIII)J
Landroid/graphics/RadialGradient;->TYPE_COLORS_AND_POSITIONS:I
Landroid/graphics/RadialGradient;->TYPE_COLOR_CENTER_AND_COLOR_EDGE:I
-Landroid/graphics/Rect$UnflattenHelper;
Landroid/graphics/Rect$UnflattenHelper;-><init>()V
Landroid/graphics/Rect$UnflattenHelper;->FLATTENED_PATTERN:Ljava/util/regex/Pattern;
Landroid/graphics/Rect$UnflattenHelper;->getMatcher(Ljava/lang/String;)Ljava/util/regex/Matcher;
@@ -22690,13 +21261,11 @@
Landroid/graphics/RectF;->printShortString(Ljava/io/PrintWriter;)V
Landroid/graphics/RectF;->scale(F)V
Landroid/graphics/RectF;->toShortString(Ljava/lang/StringBuilder;)Ljava/lang/String;
-Landroid/graphics/RectProto;
Landroid/graphics/RectProto;-><init>()V
Landroid/graphics/RectProto;->BOTTOM:J
Landroid/graphics/RectProto;->LEFT:J
Landroid/graphics/RectProto;->RIGHT:J
Landroid/graphics/RectProto;->TOP:J
-Landroid/graphics/Region$Op;-><init>(I)V
Landroid/graphics/Region;-><init>(J)V
Landroid/graphics/Region;->MAX_POOL_SIZE:I
Landroid/graphics/Region;->nativeConstructor()J
@@ -22722,10 +21291,8 @@
Landroid/graphics/RegionIterator;->nativeConstructor(J)J
Landroid/graphics/RegionIterator;->nativeDestructor(J)V
Landroid/graphics/RegionIterator;->nativeNext(JLandroid/graphics/Rect;)Z
-Landroid/graphics/Shader$NoImagePreloadHolder;
Landroid/graphics/Shader$NoImagePreloadHolder;-><init>()V
Landroid/graphics/Shader$NoImagePreloadHolder;->sRegistry:Llibcore/util/NativeAllocationRegistry;
-Landroid/graphics/Shader$TileMode;-><init>(I)V
Landroid/graphics/Shader;->copy()Landroid/graphics/Shader;
Landroid/graphics/Shader;->copyLocalMatrix(Landroid/graphics/Shader;)V
Landroid/graphics/Shader;->createNativeInstance(J)J
@@ -22757,14 +21324,12 @@
Landroid/graphics/SweepGradient;->nativeCreate2(JFFII)J
Landroid/graphics/SweepGradient;->TYPE_COLORS_AND_POSITIONS:I
Landroid/graphics/SweepGradient;->TYPE_COLOR_START_AND_COLOR_END:I
-Landroid/graphics/TableMaskFilter;
Landroid/graphics/TableMaskFilter;-><init>(J)V
Landroid/graphics/TableMaskFilter;-><init>([B)V
Landroid/graphics/TableMaskFilter;->CreateGammaTable(F)Landroid/graphics/TableMaskFilter;
Landroid/graphics/TableMaskFilter;->nativeNewClip(II)J
Landroid/graphics/TableMaskFilter;->nativeNewGamma(F)J
Landroid/graphics/TableMaskFilter;->nativeNewTable([B)J
-Landroid/graphics/TemporaryBuffer;
Landroid/graphics/TemporaryBuffer;-><init>()V
Landroid/graphics/TemporaryBuffer;->sTemp:[C
Landroid/graphics/Typeface$Builder;-><init>([Landroid/provider/FontsContract$FontInfo;Ljava/util/Map;)V
@@ -22782,7 +21347,6 @@
Landroid/graphics/Typeface$Builder;->mWeight:I
Landroid/graphics/Typeface$Builder;->NORMAL_WEIGHT:I
Landroid/graphics/Typeface$Builder;->resolveFallbackTypeface()Landroid/graphics/Typeface;
-Landroid/graphics/Typeface$Style;
Landroid/graphics/Typeface;->buildSystemFallback(Ljava/lang/String;Ljava/lang/String;Landroid/util/ArrayMap;Landroid/util/ArrayMap;)V
Landroid/graphics/Typeface;->createFontFamily(Ljava/lang/String;Ljava/util/List;[Ljava/lang/String;ILjava/util/Map;Ljava/lang/String;)Landroid/graphics/FontFamily;
Landroid/graphics/Typeface;->createFromResources(Landroid/content/res/AssetManager;Ljava/lang/String;I)Landroid/graphics/Typeface;
@@ -22831,14 +21395,12 @@
Landroid/graphics/YuvImage;->mWidth:I
Landroid/graphics/YuvImage;->nativeCompressToJpeg([BIII[I[IILjava/io/OutputStream;[B)Z
Landroid/graphics/YuvImage;->WORKING_COMPRESS_STORAGE:I
-Landroid/hardware/biometrics/BiometricAuthenticator$AuthenticationCallback;
Landroid/hardware/biometrics/BiometricAuthenticator$AuthenticationCallback;-><init>()V
Landroid/hardware/biometrics/BiometricAuthenticator$AuthenticationCallback;->onAuthenticationAcquired(I)V
Landroid/hardware/biometrics/BiometricAuthenticator$AuthenticationCallback;->onAuthenticationError(ILjava/lang/CharSequence;)V
Landroid/hardware/biometrics/BiometricAuthenticator$AuthenticationCallback;->onAuthenticationFailed()V
Landroid/hardware/biometrics/BiometricAuthenticator$AuthenticationCallback;->onAuthenticationHelp(ILjava/lang/CharSequence;)V
Landroid/hardware/biometrics/BiometricAuthenticator$AuthenticationCallback;->onAuthenticationSucceeded(Landroid/hardware/biometrics/BiometricAuthenticator$AuthenticationResult;)V
-Landroid/hardware/biometrics/BiometricAuthenticator$AuthenticationResult;
Landroid/hardware/biometrics/BiometricAuthenticator$AuthenticationResult;-><init>()V
Landroid/hardware/biometrics/BiometricAuthenticator$AuthenticationResult;-><init>(Landroid/hardware/biometrics/CryptoObject;Landroid/hardware/biometrics/BiometricAuthenticator$BiometricIdentifier;I)V
Landroid/hardware/biometrics/BiometricAuthenticator$AuthenticationResult;->getCryptoObject()Landroid/hardware/biometrics/CryptoObject;
@@ -22847,16 +21409,12 @@
Landroid/hardware/biometrics/BiometricAuthenticator$AuthenticationResult;->mCryptoObject:Landroid/hardware/biometrics/CryptoObject;
Landroid/hardware/biometrics/BiometricAuthenticator$AuthenticationResult;->mIdentifier:Landroid/hardware/biometrics/BiometricAuthenticator$BiometricIdentifier;
Landroid/hardware/biometrics/BiometricAuthenticator$AuthenticationResult;->mUserId:I
-Landroid/hardware/biometrics/BiometricAuthenticator$BiometricIdentifier;
Landroid/hardware/biometrics/BiometricAuthenticator$BiometricIdentifier;-><init>()V
-Landroid/hardware/biometrics/BiometricAuthenticator;
Landroid/hardware/biometrics/BiometricAuthenticator;->authenticate(Landroid/hardware/biometrics/CryptoObject;Landroid/os/CancellationSignal;Ljava/util/concurrent/Executor;Landroid/hardware/biometrics/BiometricAuthenticator$AuthenticationCallback;)V
Landroid/hardware/biometrics/BiometricAuthenticator;->authenticate(Landroid/os/CancellationSignal;Ljava/util/concurrent/Executor;Landroid/hardware/biometrics/BiometricAuthenticator$AuthenticationCallback;)V
-Landroid/hardware/biometrics/BiometricConstants;
Landroid/hardware/biometrics/BiometricConstants;->BIOMETRICT_ACQUIRED_VENDOR_BASE:I
Landroid/hardware/biometrics/BiometricConstants;->BIOMETRIC_ACQUIRED_VENDOR:I
Landroid/hardware/biometrics/BiometricConstants;->BIOMETRIC_ERROR_UNABLE_TO_REMOVE:I
-Landroid/hardware/biometrics/BiometricFingerprintConstants;
Landroid/hardware/biometrics/BiometricFingerprintConstants;->FINGERPRINT_ACQUIRED_VENDOR:I
Landroid/hardware/biometrics/BiometricFingerprintConstants;->FINGERPRINT_ACQUIRED_VENDOR_BASE:I
Landroid/hardware/biometrics/BiometricFingerprintConstants;->FINGERPRINT_ERROR_UNABLE_TO_REMOVE:I
@@ -22868,7 +21426,6 @@
Landroid/hardware/biometrics/BiometricPrompt$Builder;->mNegativeButtonInfo:Landroid/hardware/biometrics/BiometricPrompt$ButtonInfo;
Landroid/hardware/biometrics/BiometricPrompt$Builder;->mPositiveButtonInfo:Landroid/hardware/biometrics/BiometricPrompt$ButtonInfo;
Landroid/hardware/biometrics/BiometricPrompt$Builder;->setPositiveButton(Ljava/lang/CharSequence;Ljava/util/concurrent/Executor;Landroid/content/DialogInterface$OnClickListener;)Landroid/hardware/biometrics/BiometricPrompt$Builder;
-Landroid/hardware/biometrics/BiometricPrompt$ButtonInfo;
Landroid/hardware/biometrics/BiometricPrompt$ButtonInfo;-><init>(Ljava/util/concurrent/Executor;Landroid/content/DialogInterface$OnClickListener;)V
Landroid/hardware/biometrics/BiometricPrompt$ButtonInfo;->executor:Ljava/util/concurrent/Executor;
Landroid/hardware/biometrics/BiometricPrompt$ButtonInfo;->listener:Landroid/content/DialogInterface$OnClickListener;
@@ -22892,7 +21449,6 @@
Landroid/hardware/biometrics/BiometricPrompt;->mPackageManager:Landroid/content/pm/PackageManager;
Landroid/hardware/biometrics/BiometricPrompt;->mPositiveButtonInfo:Landroid/hardware/biometrics/BiometricPrompt$ButtonInfo;
Landroid/hardware/biometrics/BiometricPrompt;->sendError(ILandroid/hardware/biometrics/BiometricPrompt$AuthenticationCallback;Ljava/util/concurrent/Executor;)V
-Landroid/hardware/biometrics/CryptoObject;
Landroid/hardware/biometrics/CryptoObject;-><init>(Ljava/security/Signature;)V
Landroid/hardware/biometrics/CryptoObject;-><init>(Ljavax/crypto/Cipher;)V
Landroid/hardware/biometrics/CryptoObject;-><init>(Ljavax/crypto/Mac;)V
@@ -22901,26 +21457,19 @@
Landroid/hardware/biometrics/CryptoObject;->getOpId()J
Landroid/hardware/biometrics/CryptoObject;->getSignature()Ljava/security/Signature;
Landroid/hardware/biometrics/CryptoObject;->mCrypto:Ljava/lang/Object;
-Landroid/hardware/biometrics/IBiometricPromptReceiver$Stub$Proxy;
Landroid/hardware/biometrics/IBiometricPromptReceiver$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/hardware/biometrics/IBiometricPromptReceiver$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/hardware/biometrics/IBiometricPromptReceiver$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/hardware/biometrics/IBiometricPromptReceiver$Stub$Proxy;->onDialogDismissed(I)V
-Landroid/hardware/biometrics/IBiometricPromptReceiver$Stub;
Landroid/hardware/biometrics/IBiometricPromptReceiver$Stub;-><init>()V
Landroid/hardware/biometrics/IBiometricPromptReceiver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/biometrics/IBiometricPromptReceiver;
Landroid/hardware/biometrics/IBiometricPromptReceiver$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/hardware/biometrics/IBiometricPromptReceiver$Stub;->TRANSACTION_onDialogDismissed:I
-Landroid/hardware/biometrics/IBiometricPromptReceiver;
Landroid/hardware/biometrics/IBiometricPromptReceiver;->onDialogDismissed(I)V
-Landroid/hardware/Camera$EventHandler;
-Landroid/hardware/Camera$EventHandler;-><init>(Landroid/hardware/Camera;Landroid/os/Looper;)V
Landroid/hardware/Camera$EventHandler;->mCamera:Landroid/hardware/Camera;
-Landroid/hardware/Camera$IAppOpsCallbackWrapper;
Landroid/hardware/Camera$IAppOpsCallbackWrapper;-><init>(Landroid/hardware/Camera;)V
Landroid/hardware/Camera$IAppOpsCallbackWrapper;->mWeakCamera:Ljava/lang/ref/WeakReference;
Landroid/hardware/Camera$IAppOpsCallbackWrapper;->opChanged(IILjava/lang/String;)V
-Landroid/hardware/Camera$Parameters;-><init>()V
Landroid/hardware/Camera$Parameters;->cameraFormatForPixelFormat(I)Ljava/lang/String;
Landroid/hardware/Camera$Parameters;->FALSE:Ljava/lang/String;
Landroid/hardware/Camera$Parameters;->getFloat(Ljava/lang/String;F)F
@@ -23000,7 +21549,6 @@
Landroid/hardware/Camera$Parameters;->strToSize(Ljava/lang/String;)Landroid/hardware/Camera$Size;
Landroid/hardware/Camera$Parameters;->SUPPORTED_VALUES_SUFFIX:Ljava/lang/String;
Landroid/hardware/Camera$Parameters;->TRUE:Ljava/lang/String;
-Landroid/hardware/camera2/CameraAccessException$AccessError;
Landroid/hardware/camera2/CameraAccessException;->CAMERA_DEPRECATED_HAL:I
Landroid/hardware/camera2/CameraAccessException;->getCombinedMessage(ILjava/lang/String;)Ljava/lang/String;
Landroid/hardware/camera2/CameraAccessException;->getDefaultMessage(I)Ljava/lang/String;
@@ -23025,11 +21573,7 @@
Landroid/hardware/camera2/CameraCharacteristics;->mAvailableResultKeys:Ljava/util/List;
Landroid/hardware/camera2/CameraCharacteristics;->mAvailableSessionKeys:Ljava/util/List;
Landroid/hardware/camera2/CameraCharacteristics;->mKeys:Ljava/util/List;
-Landroid/hardware/camera2/CameraDevice$RequestTemplate;
-Landroid/hardware/camera2/CameraDevice$SessionOperatingMode;
-Landroid/hardware/camera2/CameraDevice$StateCallback$ErrorCode;
Landroid/hardware/camera2/CameraDevice;-><init>()V
-Landroid/hardware/camera2/CameraManager$CameraManagerGlobal;
Landroid/hardware/camera2/CameraManager$CameraManagerGlobal;-><init>()V
Landroid/hardware/camera2/CameraManager$CameraManagerGlobal;->CAMERA_SERVICE_BINDER_NAME:Ljava/lang/String;
Landroid/hardware/camera2/CameraManager$CameraManagerGlobal;->CAMERA_SERVICE_RECONNECT_DELAY_MS:I
@@ -23098,7 +21642,6 @@
Landroid/hardware/camera2/CameraMetadata;->SYNC_FRAME_NUMBER_CONVERGING:I
Landroid/hardware/camera2/CameraMetadata;->SYNC_FRAME_NUMBER_UNKNOWN:I
Landroid/hardware/camera2/CameraMetadata;->TAG:Ljava/lang/String;
-Landroid/hardware/camera2/CaptureFailure$FailureReason;
Landroid/hardware/camera2/CaptureFailure;-><init>(Landroid/hardware/camera2/CaptureRequest;IZIJ)V
Landroid/hardware/camera2/CaptureFailure;->mDropped:Z
Landroid/hardware/camera2/CaptureFailure;->mFrameNumber:J
@@ -23181,7 +21724,6 @@
Landroid/hardware/camera2/DngCreator;->toExifLatLong(D)[I
Landroid/hardware/camera2/DngCreator;->writeByteBuffer(IILjava/nio/ByteBuffer;Ljava/io/OutputStream;IIJ)V
Landroid/hardware/camera2/DngCreator;->yuvToRgb([BI[B)V
-Landroid/hardware/camera2/ICameraDeviceCallbacks$Stub$Proxy;
Landroid/hardware/camera2/ICameraDeviceCallbacks$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/hardware/camera2/ICameraDeviceCallbacks$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/hardware/camera2/ICameraDeviceCallbacks$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -23192,7 +21734,6 @@
Landroid/hardware/camera2/ICameraDeviceCallbacks$Stub$Proxy;->onRepeatingRequestError(JI)V
Landroid/hardware/camera2/ICameraDeviceCallbacks$Stub$Proxy;->onRequestQueueEmpty()V
Landroid/hardware/camera2/ICameraDeviceCallbacks$Stub$Proxy;->onResultReceived(Landroid/hardware/camera2/impl/CameraMetadataNative;Landroid/hardware/camera2/impl/CaptureResultExtras;[Landroid/hardware/camera2/impl/PhysicalCaptureResultInfo;)V
-Landroid/hardware/camera2/ICameraDeviceCallbacks$Stub;
Landroid/hardware/camera2/ICameraDeviceCallbacks$Stub;-><init>()V
Landroid/hardware/camera2/ICameraDeviceCallbacks$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/camera2/ICameraDeviceCallbacks;
Landroid/hardware/camera2/ICameraDeviceCallbacks$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -23203,7 +21744,6 @@
Landroid/hardware/camera2/ICameraDeviceCallbacks$Stub;->TRANSACTION_onRepeatingRequestError:I
Landroid/hardware/camera2/ICameraDeviceCallbacks$Stub;->TRANSACTION_onRequestQueueEmpty:I
Landroid/hardware/camera2/ICameraDeviceCallbacks$Stub;->TRANSACTION_onResultReceived:I
-Landroid/hardware/camera2/ICameraDeviceCallbacks;
Landroid/hardware/camera2/ICameraDeviceCallbacks;->ERROR_CAMERA_BUFFER:I
Landroid/hardware/camera2/ICameraDeviceCallbacks;->ERROR_CAMERA_DEVICE:I
Landroid/hardware/camera2/ICameraDeviceCallbacks;->ERROR_CAMERA_DISABLED:I
@@ -23219,7 +21759,6 @@
Landroid/hardware/camera2/ICameraDeviceCallbacks;->onRepeatingRequestError(JI)V
Landroid/hardware/camera2/ICameraDeviceCallbacks;->onRequestQueueEmpty()V
Landroid/hardware/camera2/ICameraDeviceCallbacks;->onResultReceived(Landroid/hardware/camera2/impl/CameraMetadataNative;Landroid/hardware/camera2/impl/CaptureResultExtras;[Landroid/hardware/camera2/impl/PhysicalCaptureResultInfo;)V
-Landroid/hardware/camera2/ICameraDeviceUser$Stub$Proxy;
Landroid/hardware/camera2/ICameraDeviceUser$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/hardware/camera2/ICameraDeviceUser$Stub$Proxy;->beginConfigure()V
Landroid/hardware/camera2/ICameraDeviceUser$Stub$Proxy;->cancelRequest(I)J
@@ -23242,7 +21781,6 @@
Landroid/hardware/camera2/ICameraDeviceUser$Stub$Proxy;->tearDown(I)V
Landroid/hardware/camera2/ICameraDeviceUser$Stub$Proxy;->updateOutputConfiguration(ILandroid/hardware/camera2/params/OutputConfiguration;)V
Landroid/hardware/camera2/ICameraDeviceUser$Stub$Proxy;->waitUntilIdle()V
-Landroid/hardware/camera2/ICameraDeviceUser$Stub;
Landroid/hardware/camera2/ICameraDeviceUser$Stub;-><init>()V
Landroid/hardware/camera2/ICameraDeviceUser$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/camera2/ICameraDeviceUser;
Landroid/hardware/camera2/ICameraDeviceUser$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -23265,7 +21803,6 @@
Landroid/hardware/camera2/ICameraDeviceUser$Stub;->TRANSACTION_tearDown:I
Landroid/hardware/camera2/ICameraDeviceUser$Stub;->TRANSACTION_updateOutputConfiguration:I
Landroid/hardware/camera2/ICameraDeviceUser$Stub;->TRANSACTION_waitUntilIdle:I
-Landroid/hardware/camera2/ICameraDeviceUser;
Landroid/hardware/camera2/ICameraDeviceUser;->beginConfigure()V
Landroid/hardware/camera2/ICameraDeviceUser;->cancelRequest(I)J
Landroid/hardware/camera2/ICameraDeviceUser;->CONSTRAINED_HIGH_SPEED_MODE:I
@@ -23295,26 +21832,16 @@
Landroid/hardware/camera2/ICameraDeviceUser;->updateOutputConfiguration(ILandroid/hardware/camera2/params/OutputConfiguration;)V
Landroid/hardware/camera2/ICameraDeviceUser;->VENDOR_MODE_START:I
Landroid/hardware/camera2/ICameraDeviceUser;->waitUntilIdle()V
-Landroid/hardware/camera2/impl/CallbackProxies$SessionStateCallbackProxy;
Landroid/hardware/camera2/impl/CallbackProxies$SessionStateCallbackProxy;-><init>(Ljava/util/concurrent/Executor;Landroid/hardware/camera2/CameraCaptureSession$StateCallback;)V
Landroid/hardware/camera2/impl/CallbackProxies$SessionStateCallbackProxy;->mCallback:Landroid/hardware/camera2/CameraCaptureSession$StateCallback;
Landroid/hardware/camera2/impl/CallbackProxies$SessionStateCallbackProxy;->mExecutor:Ljava/util/concurrent/Executor;
-Landroid/hardware/camera2/impl/CallbackProxies;
Landroid/hardware/camera2/impl/CallbackProxies;-><init>()V
-Landroid/hardware/camera2/impl/CameraCaptureSessionCore;
Landroid/hardware/camera2/impl/CameraCaptureSessionCore;->getDeviceStateCallback()Landroid/hardware/camera2/impl/CameraDeviceImpl$StateCallbackKK;
Landroid/hardware/camera2/impl/CameraCaptureSessionCore;->isAborting()Z
Landroid/hardware/camera2/impl/CameraCaptureSessionCore;->replaceSessionClose()V
-Landroid/hardware/camera2/impl/CameraCaptureSessionImpl$AbortDrainListener;
-Landroid/hardware/camera2/impl/CameraCaptureSessionImpl$AbortDrainListener;-><init>()V
Landroid/hardware/camera2/impl/CameraCaptureSessionImpl$AbortDrainListener;->onDrained()V
-Landroid/hardware/camera2/impl/CameraCaptureSessionImpl$IdleDrainListener;
-Landroid/hardware/camera2/impl/CameraCaptureSessionImpl$IdleDrainListener;-><init>()V
Landroid/hardware/camera2/impl/CameraCaptureSessionImpl$IdleDrainListener;->onDrained()V
-Landroid/hardware/camera2/impl/CameraCaptureSessionImpl$SequenceDrainListener;
-Landroid/hardware/camera2/impl/CameraCaptureSessionImpl$SequenceDrainListener;-><init>()V
Landroid/hardware/camera2/impl/CameraCaptureSessionImpl$SequenceDrainListener;->onDrained()V
-Landroid/hardware/camera2/impl/CameraCaptureSessionImpl;
Landroid/hardware/camera2/impl/CameraCaptureSessionImpl;-><init>(ILandroid/view/Surface;Landroid/hardware/camera2/CameraCaptureSession$StateCallback;Ljava/util/concurrent/Executor;Landroid/hardware/camera2/impl/CameraDeviceImpl;Ljava/util/concurrent/Executor;Z)V
Landroid/hardware/camera2/impl/CameraCaptureSessionImpl;->addPendingSequence(I)I
Landroid/hardware/camera2/impl/CameraCaptureSessionImpl;->checkCaptureRequest(Landroid/hardware/camera2/CaptureRequest;)V
@@ -23347,10 +21874,7 @@
Landroid/hardware/camera2/impl/CameraCaptureSessionImpl;->replaceSessionClose()V
Landroid/hardware/camera2/impl/CameraCaptureSessionImpl;->TAG:Ljava/lang/String;
Landroid/hardware/camera2/impl/CameraCaptureSessionImpl;->tearDown(Landroid/view/Surface;)V
-Landroid/hardware/camera2/impl/CameraConstrainedHighSpeedCaptureSessionImpl$WrapperCallback;
-Landroid/hardware/camera2/impl/CameraConstrainedHighSpeedCaptureSessionImpl$WrapperCallback;-><init>(Landroid/hardware/camera2/CameraCaptureSession$StateCallback;)V
Landroid/hardware/camera2/impl/CameraConstrainedHighSpeedCaptureSessionImpl$WrapperCallback;->mCallback:Landroid/hardware/camera2/CameraCaptureSession$StateCallback;
-Landroid/hardware/camera2/impl/CameraConstrainedHighSpeedCaptureSessionImpl;
Landroid/hardware/camera2/impl/CameraConstrainedHighSpeedCaptureSessionImpl;-><init>(ILandroid/hardware/camera2/CameraCaptureSession$StateCallback;Ljava/util/concurrent/Executor;Landroid/hardware/camera2/impl/CameraDeviceImpl;Ljava/util/concurrent/Executor;ZLandroid/hardware/camera2/CameraCharacteristics;)V
Landroid/hardware/camera2/impl/CameraConstrainedHighSpeedCaptureSessionImpl;->getDeviceStateCallback()Landroid/hardware/camera2/impl/CameraDeviceImpl$StateCallbackKK;
Landroid/hardware/camera2/impl/CameraConstrainedHighSpeedCaptureSessionImpl;->isAborting()Z
@@ -23360,8 +21884,6 @@
Landroid/hardware/camera2/impl/CameraConstrainedHighSpeedCaptureSessionImpl;->prepare(ILandroid/view/Surface;)V
Landroid/hardware/camera2/impl/CameraConstrainedHighSpeedCaptureSessionImpl;->replaceSessionClose()V
Landroid/hardware/camera2/impl/CameraConstrainedHighSpeedCaptureSessionImpl;->tearDown(Landroid/view/Surface;)V
-Landroid/hardware/camera2/impl/CameraDeviceImpl$CameraDeviceCallbacks;
-Landroid/hardware/camera2/impl/CameraDeviceImpl$CameraDeviceCallbacks;-><init>()V
Landroid/hardware/camera2/impl/CameraDeviceImpl$CameraDeviceCallbacks;->notifyError(I)V
Landroid/hardware/camera2/impl/CameraDeviceImpl$CameraDeviceCallbacks;->onCaptureErrorLocked(ILandroid/hardware/camera2/impl/CaptureResultExtras;)V
Landroid/hardware/camera2/impl/CameraDeviceImpl$CameraDeviceCallbacks;->onCaptureStarted(Landroid/hardware/camera2/impl/CaptureResultExtras;J)V
@@ -23372,10 +21894,8 @@
Landroid/hardware/camera2/impl/CameraDeviceImpl$CameraDeviceCallbacks;->onRequestQueueEmpty()V
Landroid/hardware/camera2/impl/CameraDeviceImpl$CameraDeviceCallbacks;->onResultReceived(Landroid/hardware/camera2/impl/CameraMetadataNative;Landroid/hardware/camera2/impl/CaptureResultExtras;[Landroid/hardware/camera2/impl/PhysicalCaptureResultInfo;)V
Landroid/hardware/camera2/impl/CameraDeviceImpl$CameraDeviceCallbacks;->scheduleNotifyError(I)V
-Landroid/hardware/camera2/impl/CameraDeviceImpl$CameraHandlerExecutor;
Landroid/hardware/camera2/impl/CameraDeviceImpl$CameraHandlerExecutor;-><init>(Landroid/os/Handler;)V
Landroid/hardware/camera2/impl/CameraDeviceImpl$CameraHandlerExecutor;->mHandler:Landroid/os/Handler;
-Landroid/hardware/camera2/impl/CameraDeviceImpl$CaptureCallback;
Landroid/hardware/camera2/impl/CameraDeviceImpl$CaptureCallback;->NO_FRAMES_CAPTURED:I
Landroid/hardware/camera2/impl/CameraDeviceImpl$CaptureCallback;->onCaptureBufferLost(Landroid/hardware/camera2/CameraDevice;Landroid/hardware/camera2/CaptureRequest;Landroid/view/Surface;J)V
Landroid/hardware/camera2/impl/CameraDeviceImpl$CaptureCallback;->onCaptureCompleted(Landroid/hardware/camera2/CameraDevice;Landroid/hardware/camera2/CaptureRequest;Landroid/hardware/camera2/TotalCaptureResult;)V
@@ -23385,7 +21905,6 @@
Landroid/hardware/camera2/impl/CameraDeviceImpl$CaptureCallback;->onCaptureSequenceAborted(Landroid/hardware/camera2/CameraDevice;I)V
Landroid/hardware/camera2/impl/CameraDeviceImpl$CaptureCallback;->onCaptureSequenceCompleted(Landroid/hardware/camera2/CameraDevice;IJ)V
Landroid/hardware/camera2/impl/CameraDeviceImpl$CaptureCallback;->onCaptureStarted(Landroid/hardware/camera2/CameraDevice;Landroid/hardware/camera2/CaptureRequest;JJ)V
-Landroid/hardware/camera2/impl/CameraDeviceImpl$CaptureCallbackHolder;
Landroid/hardware/camera2/impl/CameraDeviceImpl$CaptureCallbackHolder;-><init>(Landroid/hardware/camera2/impl/CameraDeviceImpl$CaptureCallback;Ljava/util/List;Ljava/util/concurrent/Executor;ZI)V
Landroid/hardware/camera2/impl/CameraDeviceImpl$CaptureCallbackHolder;->getCallback()Landroid/hardware/camera2/impl/CameraDeviceImpl$CaptureCallback;
Landroid/hardware/camera2/impl/CameraDeviceImpl$CaptureCallbackHolder;->getExecutor()Ljava/util/concurrent/Executor;
@@ -23401,8 +21920,6 @@
Landroid/hardware/camera2/impl/CameraDeviceImpl$CaptureCallbackHolder;->mRepeating:Z
Landroid/hardware/camera2/impl/CameraDeviceImpl$CaptureCallbackHolder;->mRequestList:Ljava/util/List;
Landroid/hardware/camera2/impl/CameraDeviceImpl$CaptureCallbackHolder;->mSessionId:I
-Landroid/hardware/camera2/impl/CameraDeviceImpl$FrameNumberTracker;
-Landroid/hardware/camera2/impl/CameraDeviceImpl$FrameNumberTracker;-><init>()V
Landroid/hardware/camera2/impl/CameraDeviceImpl$FrameNumberTracker;->getCompletedFrameNumber()J
Landroid/hardware/camera2/impl/CameraDeviceImpl$FrameNumberTracker;->getCompletedReprocessFrameNumber()J
Landroid/hardware/camera2/impl/CameraDeviceImpl$FrameNumberTracker;->mCompletedFrameNumber:J
@@ -23417,7 +21934,6 @@
Landroid/hardware/camera2/impl/CameraDeviceImpl$FrameNumberTracker;->updateCompletedReprocessFrameNumber(J)V
Landroid/hardware/camera2/impl/CameraDeviceImpl$FrameNumberTracker;->updateTracker(JLandroid/hardware/camera2/CaptureResult;ZZ)V
Landroid/hardware/camera2/impl/CameraDeviceImpl$FrameNumberTracker;->updateTracker(JZZ)V
-Landroid/hardware/camera2/impl/CameraDeviceImpl$RequestLastFrameNumbersHolder;
Landroid/hardware/camera2/impl/CameraDeviceImpl$RequestLastFrameNumbersHolder;-><init>(IJ)V
Landroid/hardware/camera2/impl/CameraDeviceImpl$RequestLastFrameNumbersHolder;-><init>(Ljava/util/List;Landroid/hardware/camera2/utils/SubmitInfo;)V
Landroid/hardware/camera2/impl/CameraDeviceImpl$RequestLastFrameNumbersHolder;->getLastFrameNumber()J
@@ -23427,7 +21943,6 @@
Landroid/hardware/camera2/impl/CameraDeviceImpl$RequestLastFrameNumbersHolder;->mLastRegularFrameNumber:J
Landroid/hardware/camera2/impl/CameraDeviceImpl$RequestLastFrameNumbersHolder;->mLastReprocessFrameNumber:J
Landroid/hardware/camera2/impl/CameraDeviceImpl$RequestLastFrameNumbersHolder;->mRequestId:I
-Landroid/hardware/camera2/impl/CameraDeviceImpl$StateCallbackKK;
Landroid/hardware/camera2/impl/CameraDeviceImpl$StateCallbackKK;-><init>()V
Landroid/hardware/camera2/impl/CameraDeviceImpl$StateCallbackKK;->onActive(Landroid/hardware/camera2/CameraDevice;)V
Landroid/hardware/camera2/impl/CameraDeviceImpl$StateCallbackKK;->onBusy(Landroid/hardware/camera2/CameraDevice;)V
@@ -23435,7 +21950,6 @@
Landroid/hardware/camera2/impl/CameraDeviceImpl$StateCallbackKK;->onRequestQueueEmpty()V
Landroid/hardware/camera2/impl/CameraDeviceImpl$StateCallbackKK;->onSurfacePrepared(Landroid/view/Surface;)V
Landroid/hardware/camera2/impl/CameraDeviceImpl$StateCallbackKK;->onUnconfigured(Landroid/hardware/camera2/CameraDevice;)V
-Landroid/hardware/camera2/impl/CameraDeviceImpl;
Landroid/hardware/camera2/impl/CameraDeviceImpl;-><init>(Ljava/lang/String;Landroid/hardware/camera2/CameraDevice$StateCallback;Ljava/util/concurrent/Executor;Landroid/hardware/camera2/CameraCharacteristics;I)V
Landroid/hardware/camera2/impl/CameraDeviceImpl;->capture(Landroid/hardware/camera2/CaptureRequest;Landroid/hardware/camera2/impl/CameraDeviceImpl$CaptureCallback;Ljava/util/concurrent/Executor;)I
Landroid/hardware/camera2/impl/CameraDeviceImpl;->captureBurst(Ljava/util/List;Landroid/hardware/camera2/impl/CameraDeviceImpl$CaptureCallback;Ljava/util/concurrent/Executor;)I
@@ -23501,7 +22015,6 @@
Landroid/hardware/camera2/impl/CameraDeviceImpl;->tearDown(Landroid/view/Surface;)V
Landroid/hardware/camera2/impl/CameraDeviceImpl;->updateOutputConfiguration(Landroid/hardware/camera2/params/OutputConfiguration;)V
Landroid/hardware/camera2/impl/CameraDeviceImpl;->waitUntilIdle()V
-Landroid/hardware/camera2/impl/CameraMetadataNative$Key;
Landroid/hardware/camera2/impl/CameraMetadataNative$Key;-><init>(Ljava/lang/String;Landroid/hardware/camera2/utils/TypeReference;)V
Landroid/hardware/camera2/impl/CameraMetadataNative$Key;-><init>(Ljava/lang/String;Ljava/lang/Class;)V
Landroid/hardware/camera2/impl/CameraMetadataNative$Key;-><init>(Ljava/lang/String;Ljava/lang/Class;J)V
@@ -23518,10 +22031,8 @@
Landroid/hardware/camera2/impl/CameraMetadataNative$Key;->mType:Ljava/lang/Class;
Landroid/hardware/camera2/impl/CameraMetadataNative$Key;->mTypeReference:Landroid/hardware/camera2/utils/TypeReference;
Landroid/hardware/camera2/impl/CameraMetadataNative$Key;->mVendorId:J
-Landroid/hardware/camera2/impl/CameraMetadataNative;
Landroid/hardware/camera2/impl/CameraMetadataNative;-><init>()V
Landroid/hardware/camera2/impl/CameraMetadataNative;-><init>(Landroid/hardware/camera2/impl/CameraMetadataNative;)V
-Landroid/hardware/camera2/impl/CameraMetadataNative;->areValuesAllNull([[Ljava/lang/Object;)Z
Landroid/hardware/camera2/impl/CameraMetadataNative;->CELLID_PROCESS:Ljava/lang/String;
Landroid/hardware/camera2/impl/CameraMetadataNative;->close()V
Landroid/hardware/camera2/impl/CameraMetadataNative;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -23601,7 +22112,6 @@
Landroid/hardware/camera2/impl/CameraMetadataNative;->TYPE_INT64:I
Landroid/hardware/camera2/impl/CameraMetadataNative;->TYPE_RATIONAL:I
Landroid/hardware/camera2/impl/CameraMetadataNative;->writeValues(I[B)V
-Landroid/hardware/camera2/impl/CaptureResultExtras;
Landroid/hardware/camera2/impl/CaptureResultExtras;-><init>(IIIIJII)V
Landroid/hardware/camera2/impl/CaptureResultExtras;-><init>(Landroid/os/Parcel;)V
Landroid/hardware/camera2/impl/CaptureResultExtras;->afTriggerId:I
@@ -23620,9 +22130,7 @@
Landroid/hardware/camera2/impl/CaptureResultExtras;->readFromParcel(Landroid/os/Parcel;)V
Landroid/hardware/camera2/impl/CaptureResultExtras;->requestId:I
Landroid/hardware/camera2/impl/CaptureResultExtras;->subsequenceId:I
-Landroid/hardware/camera2/impl/GetCommand;
Landroid/hardware/camera2/impl/GetCommand;->getValue(Landroid/hardware/camera2/impl/CameraMetadataNative;Landroid/hardware/camera2/impl/CameraMetadataNative$Key;)Ljava/lang/Object;
-Landroid/hardware/camera2/impl/ICameraDeviceUserWrapper;
Landroid/hardware/camera2/impl/ICameraDeviceUserWrapper;-><init>(Landroid/hardware/camera2/ICameraDeviceUser;)V
Landroid/hardware/camera2/impl/ICameraDeviceUserWrapper;->beginConfigure()V
Landroid/hardware/camera2/impl/ICameraDeviceUserWrapper;->cancelRequest(I)J
@@ -23645,7 +22153,6 @@
Landroid/hardware/camera2/impl/ICameraDeviceUserWrapper;->unlinkToDeath(Landroid/os/IBinder$DeathRecipient;I)V
Landroid/hardware/camera2/impl/ICameraDeviceUserWrapper;->updateOutputConfiguration(ILandroid/hardware/camera2/params/OutputConfiguration;)V
Landroid/hardware/camera2/impl/ICameraDeviceUserWrapper;->waitUntilIdle()V
-Landroid/hardware/camera2/impl/PhysicalCaptureResultInfo;
Landroid/hardware/camera2/impl/PhysicalCaptureResultInfo;-><init>(Landroid/os/Parcel;)V
Landroid/hardware/camera2/impl/PhysicalCaptureResultInfo;-><init>(Ljava/lang/String;Landroid/hardware/camera2/impl/CameraMetadataNative;)V
Landroid/hardware/camera2/impl/PhysicalCaptureResultInfo;->cameraId:Ljava/lang/String;
@@ -23654,10 +22161,7 @@
Landroid/hardware/camera2/impl/PhysicalCaptureResultInfo;->getCameraId()Ljava/lang/String;
Landroid/hardware/camera2/impl/PhysicalCaptureResultInfo;->getCameraMetadata()Landroid/hardware/camera2/impl/CameraMetadataNative;
Landroid/hardware/camera2/impl/PhysicalCaptureResultInfo;->readFromParcel(Landroid/os/Parcel;)V
-Landroid/hardware/camera2/impl/PublicKey;
-Landroid/hardware/camera2/impl/SetCommand;
Landroid/hardware/camera2/impl/SetCommand;->setValue(Landroid/hardware/camera2/impl/CameraMetadataNative;Ljava/lang/Object;)V
-Landroid/hardware/camera2/impl/SyntheticKey;
Landroid/hardware/camera2/params/BlackLevelPattern;-><init>([I)V
Landroid/hardware/camera2/params/BlackLevelPattern;->mCfaOffsets:[I
Landroid/hardware/camera2/params/ColorSpaceTransform;->COLUMNS:I
@@ -23679,7 +22183,6 @@
Landroid/hardware/camera2/params/Face;->mMouth:Landroid/graphics/Point;
Landroid/hardware/camera2/params/Face;->mRightEye:Landroid/graphics/Point;
Landroid/hardware/camera2/params/Face;->mScore:I
-Landroid/hardware/camera2/params/HighSpeedVideoConfiguration;
Landroid/hardware/camera2/params/HighSpeedVideoConfiguration;-><init>(IIIII)V
Landroid/hardware/camera2/params/HighSpeedVideoConfiguration;->getBatchSizeMax()I
Landroid/hardware/camera2/params/HighSpeedVideoConfiguration;->getFpsMax()I
@@ -23731,7 +22234,6 @@
Landroid/hardware/camera2/params/OutputConfiguration;->SURFACE_TYPE_SURFACE_VIEW:I
Landroid/hardware/camera2/params/OutputConfiguration;->SURFACE_TYPE_UNKNOWN:I
Landroid/hardware/camera2/params/OutputConfiguration;->TAG:Ljava/lang/String;
-Landroid/hardware/camera2/params/ReprocessFormatsMap;
Landroid/hardware/camera2/params/ReprocessFormatsMap;-><init>([I)V
Landroid/hardware/camera2/params/ReprocessFormatsMap;->getInputs()[I
Landroid/hardware/camera2/params/ReprocessFormatsMap;->getOutputs(I)[I
@@ -23742,7 +22244,6 @@
Landroid/hardware/camera2/params/RggbChannelVector;->mGreenOdd:F
Landroid/hardware/camera2/params/RggbChannelVector;->mRed:F
Landroid/hardware/camera2/params/RggbChannelVector;->toShortString()Ljava/lang/String;
-Landroid/hardware/camera2/params/SessionConfiguration$SessionMode;
Landroid/hardware/camera2/params/SessionConfiguration;->mExecutor:Ljava/util/concurrent/Executor;
Landroid/hardware/camera2/params/SessionConfiguration;->mInputConfig:Landroid/hardware/camera2/params/InputConfiguration;
Landroid/hardware/camera2/params/SessionConfiguration;->mOutputConfigurations:Ljava/util/List;
@@ -23750,7 +22251,6 @@
Landroid/hardware/camera2/params/SessionConfiguration;->mSessionType:I
Landroid/hardware/camera2/params/SessionConfiguration;->mStateCallback:Landroid/hardware/camera2/CameraCaptureSession$StateCallback;
Landroid/hardware/camera2/params/SessionConfiguration;->SESSION_VENDOR_START:I
-Landroid/hardware/camera2/params/StreamConfiguration;
Landroid/hardware/camera2/params/StreamConfiguration;-><init>(IIIZ)V
Landroid/hardware/camera2/params/StreamConfiguration;->getFormat()I
Landroid/hardware/camera2/params/StreamConfiguration;->getHeight()I
@@ -23762,7 +22262,6 @@
Landroid/hardware/camera2/params/StreamConfiguration;->mHeight:I
Landroid/hardware/camera2/params/StreamConfiguration;->mInput:Z
Landroid/hardware/camera2/params/StreamConfiguration;->mWidth:I
-Landroid/hardware/camera2/params/StreamConfigurationDuration;
Landroid/hardware/camera2/params/StreamConfigurationDuration;-><init>(IIIJ)V
Landroid/hardware/camera2/params/StreamConfigurationDuration;->getDuration()J
Landroid/hardware/camera2/params/StreamConfigurationDuration;->getFormat()I
@@ -23846,11 +22345,9 @@
Landroid/hardware/camera2/params/TonemapCurve;->OFFSET_POINT_IN:I
Landroid/hardware/camera2/params/TonemapCurve;->OFFSET_POINT_OUT:I
Landroid/hardware/camera2/params/TonemapCurve;->TONEMAP_MIN_CURVE_POINTS:I
-Landroid/hardware/camera2/params/VendorTagDescriptor;
Landroid/hardware/camera2/params/VendorTagDescriptor;-><init>(Landroid/os/Parcel;)V
Landroid/hardware/camera2/params/VendorTagDescriptor;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/hardware/camera2/params/VendorTagDescriptor;->TAG:Ljava/lang/String;
-Landroid/hardware/camera2/params/VendorTagDescriptorCache;
Landroid/hardware/camera2/params/VendorTagDescriptorCache;-><init>(Landroid/os/Parcel;)V
Landroid/hardware/camera2/params/VendorTagDescriptorCache;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/hardware/camera2/params/VendorTagDescriptorCache;->TAG:Ljava/lang/String;
@@ -23860,7 +22357,6 @@
Landroid/hardware/camera2/TotalCaptureResult;->mPartialResults:Ljava/util/List;
Landroid/hardware/camera2/TotalCaptureResult;->mPhysicalCaptureResults:Ljava/util/HashMap;
Landroid/hardware/camera2/TotalCaptureResult;->mSessionId:I
-Landroid/hardware/camera2/utils/ArrayUtils;
Landroid/hardware/camera2/utils/ArrayUtils;-><init>()V
Landroid/hardware/camera2/utils/ArrayUtils;->contains([II)Z
Landroid/hardware/camera2/utils/ArrayUtils;->contains([Ljava/lang/Object;Ljava/lang/Object;)Z
@@ -23871,9 +22367,6 @@
Landroid/hardware/camera2/utils/ArrayUtils;->getArrayIndex([Ljava/lang/Object;Ljava/lang/Object;)I
Landroid/hardware/camera2/utils/ArrayUtils;->TAG:Ljava/lang/String;
Landroid/hardware/camera2/utils/ArrayUtils;->toIntArray(Ljava/util/List;)[I
-Landroid/hardware/camera2/utils/CloseableLock$ScopedLock;
-Landroid/hardware/camera2/utils/CloseableLock$ScopedLock;-><init>()V
-Landroid/hardware/camera2/utils/CloseableLock;
Landroid/hardware/camera2/utils/CloseableLock;-><init>()V
Landroid/hardware/camera2/utils/CloseableLock;-><init>(Ljava/lang/String;)V
Landroid/hardware/camera2/utils/CloseableLock;->acquireExclusiveLock()Landroid/hardware/camera2/utils/CloseableLock$ScopedLock;
@@ -23889,18 +22382,12 @@
Landroid/hardware/camera2/utils/CloseableLock;->releaseLock()V
Landroid/hardware/camera2/utils/CloseableLock;->TAG:Ljava/lang/String;
Landroid/hardware/camera2/utils/CloseableLock;->VERBOSE:Z
-Landroid/hardware/camera2/utils/HashCodeHelpers;
Landroid/hardware/camera2/utils/HashCodeHelpers;-><init>()V
-Landroid/hardware/camera2/utils/HashCodeHelpers;->hashCode([[F)I
-Landroid/hardware/camera2/utils/HashCodeHelpers;->hashCode([[I)I
-Landroid/hardware/camera2/utils/HashCodeHelpers;->hashCodeGeneric([[Ljava/lang/Object;)I
-Landroid/hardware/camera2/utils/ListUtils;
Landroid/hardware/camera2/utils/ListUtils;-><init>()V
Landroid/hardware/camera2/utils/ListUtils;->listContains(Ljava/util/List;Ljava/lang/Object;)Z
Landroid/hardware/camera2/utils/ListUtils;->listElementsEqualTo(Ljava/util/List;Ljava/lang/Object;)Z
Landroid/hardware/camera2/utils/ListUtils;->listSelectFirstFrom(Ljava/util/List;[Ljava/lang/Object;)Ljava/lang/Object;
Landroid/hardware/camera2/utils/ListUtils;->listToString(Ljava/util/List;)Ljava/lang/String;
-Landroid/hardware/camera2/utils/LongParcelable;
Landroid/hardware/camera2/utils/LongParcelable;-><init>()V
Landroid/hardware/camera2/utils/LongParcelable;-><init>(J)V
Landroid/hardware/camera2/utils/LongParcelable;-><init>(Landroid/os/Parcel;)V
@@ -23909,7 +22396,6 @@
Landroid/hardware/camera2/utils/LongParcelable;->number:J
Landroid/hardware/camera2/utils/LongParcelable;->readFromParcel(Landroid/os/Parcel;)V
Landroid/hardware/camera2/utils/LongParcelable;->setNumber(J)V
-Landroid/hardware/camera2/utils/ParamsUtils;
Landroid/hardware/camera2/utils/ParamsUtils;-><init>()V
Landroid/hardware/camera2/utils/ParamsUtils;->convertRectF(Landroid/graphics/Rect;Landroid/graphics/RectF;)V
Landroid/hardware/camera2/utils/ParamsUtils;->createRational(F)Landroid/util/Rational;
@@ -23919,11 +22405,9 @@
Landroid/hardware/camera2/utils/ParamsUtils;->getOrDefault(Landroid/hardware/camera2/CaptureRequest;Landroid/hardware/camera2/CaptureRequest$Key;Ljava/lang/Object;)Ljava/lang/Object;
Landroid/hardware/camera2/utils/ParamsUtils;->mapRect(Landroid/graphics/Matrix;Landroid/graphics/Rect;)Landroid/graphics/Rect;
Landroid/hardware/camera2/utils/ParamsUtils;->RATIONAL_DENOMINATOR:I
-Landroid/hardware/camera2/utils/SizeAreaComparator;
Landroid/hardware/camera2/utils/SizeAreaComparator;-><init>()V
Landroid/hardware/camera2/utils/SizeAreaComparator;->compare(Landroid/util/Size;Landroid/util/Size;)I
Landroid/hardware/camera2/utils/SizeAreaComparator;->findLargestByArea(Ljava/util/List;)Landroid/util/Size;
-Landroid/hardware/camera2/utils/SubmitInfo;
Landroid/hardware/camera2/utils/SubmitInfo;-><init>()V
Landroid/hardware/camera2/utils/SubmitInfo;-><init>(IJ)V
Landroid/hardware/camera2/utils/SubmitInfo;-><init>(Landroid/os/Parcel;)V
@@ -23933,7 +22417,6 @@
Landroid/hardware/camera2/utils/SubmitInfo;->mLastFrameNumber:J
Landroid/hardware/camera2/utils/SubmitInfo;->mRequestId:I
Landroid/hardware/camera2/utils/SubmitInfo;->readFromParcel(Landroid/os/Parcel;)V
-Landroid/hardware/camera2/utils/SurfaceUtils;
Landroid/hardware/camera2/utils/SurfaceUtils;-><init>()V
Landroid/hardware/camera2/utils/SurfaceUtils;->checkConstrainedHighSpeedSurfaces(Ljava/util/Collection;Landroid/util/Range;Landroid/hardware/camera2/params/StreamConfigurationMap;)V
Landroid/hardware/camera2/utils/SurfaceUtils;->checkHighSpeedSurfaceFormat(Landroid/view/Surface;)V
@@ -23943,9 +22426,7 @@
Landroid/hardware/camera2/utils/SurfaceUtils;->isFlexibleConsumer(Landroid/view/Surface;)Z
Landroid/hardware/camera2/utils/SurfaceUtils;->isSurfaceForHwVideoEncoder(Landroid/view/Surface;)Z
Landroid/hardware/camera2/utils/SurfaceUtils;->isSurfaceForPreview(Landroid/view/Surface;)Z
-Landroid/hardware/camera2/utils/TaskDrainer$DrainListener;
Landroid/hardware/camera2/utils/TaskDrainer$DrainListener;->onDrained()V
-Landroid/hardware/camera2/utils/TaskDrainer;
Landroid/hardware/camera2/utils/TaskDrainer;-><init>(Ljava/util/concurrent/Executor;Landroid/hardware/camera2/utils/TaskDrainer$DrainListener;)V
Landroid/hardware/camera2/utils/TaskDrainer;-><init>(Ljava/util/concurrent/Executor;Landroid/hardware/camera2/utils/TaskDrainer$DrainListener;Ljava/lang/String;)V
Landroid/hardware/camera2/utils/TaskDrainer;->beginDrain()V
@@ -23963,7 +22444,6 @@
Landroid/hardware/camera2/utils/TaskDrainer;->TAG:Ljava/lang/String;
Landroid/hardware/camera2/utils/TaskDrainer;->taskFinished(Ljava/lang/Object;)V
Landroid/hardware/camera2/utils/TaskDrainer;->taskStarted(Ljava/lang/Object;)V
-Landroid/hardware/camera2/utils/TaskSingleDrainer;
Landroid/hardware/camera2/utils/TaskSingleDrainer;-><init>(Ljava/util/concurrent/Executor;Landroid/hardware/camera2/utils/TaskDrainer$DrainListener;)V
Landroid/hardware/camera2/utils/TaskSingleDrainer;-><init>(Ljava/util/concurrent/Executor;Landroid/hardware/camera2/utils/TaskDrainer$DrainListener;Ljava/lang/String;)V
Landroid/hardware/camera2/utils/TaskSingleDrainer;->beginDrain()V
@@ -23971,11 +22451,8 @@
Landroid/hardware/camera2/utils/TaskSingleDrainer;->mTaskDrainer:Landroid/hardware/camera2/utils/TaskDrainer;
Landroid/hardware/camera2/utils/TaskSingleDrainer;->taskFinished()V
Landroid/hardware/camera2/utils/TaskSingleDrainer;->taskStarted()V
-Landroid/hardware/camera2/utils/TypeReference$SpecializedBaseTypeReference;
Landroid/hardware/camera2/utils/TypeReference$SpecializedBaseTypeReference;-><init>(Ljava/lang/reflect/Type;)V
-Landroid/hardware/camera2/utils/TypeReference$SpecializedTypeReference;
Landroid/hardware/camera2/utils/TypeReference$SpecializedTypeReference;-><init>(Ljava/lang/Class;)V
-Landroid/hardware/camera2/utils/TypeReference;
Landroid/hardware/camera2/utils/TypeReference;-><init>(Ljava/lang/reflect/Type;)V
Landroid/hardware/camera2/utils/TypeReference;->containsTypeVariable(Ljava/lang/reflect/Type;)Z
Landroid/hardware/camera2/utils/TypeReference;->containsTypeVariable([Ljava/lang/reflect/Type;)Z
@@ -23991,7 +22468,6 @@
Landroid/hardware/camera2/utils/TypeReference;->mType:Ljava/lang/reflect/Type;
Landroid/hardware/camera2/utils/TypeReference;->toString(Ljava/lang/reflect/Type;Ljava/lang/StringBuilder;)V
Landroid/hardware/camera2/utils/TypeReference;->toString([Ljava/lang/reflect/Type;Ljava/lang/StringBuilder;)V
-Landroid/hardware/camera2/utils/UncheckedThrow;
Landroid/hardware/camera2/utils/UncheckedThrow;-><init>()V
Landroid/hardware/camera2/utils/UncheckedThrow;->throwAnyException(Ljava/lang/Exception;)V
Landroid/hardware/camera2/utils/UncheckedThrow;->throwAnyException(Ljava/lang/Throwable;)V
@@ -24066,12 +22542,10 @@
Landroid/hardware/Camera;->_startFaceDetection(I)V
Landroid/hardware/Camera;->_stopFaceDetection()V
Landroid/hardware/Camera;->_stopPreview()V
-Landroid/hardware/CameraInfo;
Landroid/hardware/CameraInfo;-><init>()V
Landroid/hardware/CameraInfo;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/hardware/CameraInfo;->info:Landroid/hardware/Camera$CameraInfo;
Landroid/hardware/CameraInfo;->readFromParcel(Landroid/os/Parcel;)V
-Landroid/hardware/CameraStatus;
Landroid/hardware/CameraStatus;-><init>()V
Landroid/hardware/CameraStatus;->cameraId:Ljava/lang/String;
Landroid/hardware/CameraStatus;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -24092,7 +22566,6 @@
Landroid/hardware/display/AmbientBrightnessDayStats;->mBucketBoundaries:[F
Landroid/hardware/display/AmbientBrightnessDayStats;->mLocalDate:Ljava/time/LocalDate;
Landroid/hardware/display/AmbientBrightnessDayStats;->mStats:[F
-Landroid/hardware/display/BrightnessChangeEvent$Builder;
Landroid/hardware/display/BrightnessChangeEvent$Builder;-><init>()V
Landroid/hardware/display/BrightnessChangeEvent$Builder;->build()Landroid/hardware/display/BrightnessChangeEvent;
Landroid/hardware/display/BrightnessChangeEvent$Builder;->mBatteryLevel:F
@@ -24136,7 +22609,6 @@
Landroid/hardware/display/BrightnessConfiguration;->mDescription:Ljava/lang/String;
Landroid/hardware/display/BrightnessConfiguration;->mLux:[F
Landroid/hardware/display/BrightnessConfiguration;->mNits:[F
-Landroid/hardware/display/Curve;
Landroid/hardware/display/Curve;-><init>([F[F)V
Landroid/hardware/display/Curve;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/hardware/display/Curve;->getX()[F
@@ -24163,27 +22635,21 @@
Landroid/hardware/display/DisplayManager;->VIRTUAL_DISPLAY_FLAG_DESTROY_CONTENT_ON_REMOVAL:I
Landroid/hardware/display/DisplayManager;->VIRTUAL_DISPLAY_FLAG_ROTATES_WITH_CONTENT:I
Landroid/hardware/display/DisplayManager;->VIRTUAL_DISPLAY_FLAG_SUPPORTS_TOUCH:I
-Landroid/hardware/display/DisplayManagerGlobal$DisplayListenerDelegate;
Landroid/hardware/display/DisplayManagerGlobal$DisplayListenerDelegate;-><init>(Landroid/hardware/display/DisplayManager$DisplayListener;Landroid/os/Handler;)V
Landroid/hardware/display/DisplayManagerGlobal$DisplayListenerDelegate;->clearEvents()V
Landroid/hardware/display/DisplayManagerGlobal$DisplayListenerDelegate;->mListener:Landroid/hardware/display/DisplayManager$DisplayListener;
Landroid/hardware/display/DisplayManagerGlobal$DisplayListenerDelegate;->sendDisplayEvent(II)V
-Landroid/hardware/display/DisplayManagerGlobal$DisplayManagerCallback;
-Landroid/hardware/display/DisplayManagerGlobal$DisplayManagerCallback;-><init>()V
Landroid/hardware/display/DisplayManagerGlobal$DisplayManagerCallback;->onDisplayEvent(II)V
-Landroid/hardware/display/DisplayManagerGlobal$VirtualDisplayCallback;
Landroid/hardware/display/DisplayManagerGlobal$VirtualDisplayCallback;-><init>(Landroid/hardware/display/VirtualDisplay$Callback;Landroid/os/Handler;)V
Landroid/hardware/display/DisplayManagerGlobal$VirtualDisplayCallback;->mDelegate:Landroid/hardware/display/DisplayManagerGlobal$VirtualDisplayCallbackDelegate;
Landroid/hardware/display/DisplayManagerGlobal$VirtualDisplayCallback;->onPaused()V
Landroid/hardware/display/DisplayManagerGlobal$VirtualDisplayCallback;->onResumed()V
Landroid/hardware/display/DisplayManagerGlobal$VirtualDisplayCallback;->onStopped()V
-Landroid/hardware/display/DisplayManagerGlobal$VirtualDisplayCallbackDelegate;
Landroid/hardware/display/DisplayManagerGlobal$VirtualDisplayCallbackDelegate;-><init>(Landroid/hardware/display/VirtualDisplay$Callback;Landroid/os/Handler;)V
Landroid/hardware/display/DisplayManagerGlobal$VirtualDisplayCallbackDelegate;->mCallback:Landroid/hardware/display/VirtualDisplay$Callback;
Landroid/hardware/display/DisplayManagerGlobal$VirtualDisplayCallbackDelegate;->MSG_DISPLAY_PAUSED:I
Landroid/hardware/display/DisplayManagerGlobal$VirtualDisplayCallbackDelegate;->MSG_DISPLAY_RESUMED:I
Landroid/hardware/display/DisplayManagerGlobal$VirtualDisplayCallbackDelegate;->MSG_DISPLAY_STOPPED:I
-Landroid/hardware/display/DisplayManagerGlobal;
Landroid/hardware/display/DisplayManagerGlobal;-><init>(Landroid/hardware/display/IDisplayManager;)V
Landroid/hardware/display/DisplayManagerGlobal;->connectWifiDisplay(Ljava/lang/String;)V
Landroid/hardware/display/DisplayManagerGlobal;->createVirtualDisplay(Landroid/content/Context;Landroid/media/projection/MediaProjection;Ljava/lang/String;IIILandroid/view/Surface;ILandroid/hardware/display/VirtualDisplay$Callback;Landroid/os/Handler;Ljava/lang/String;)Landroid/hardware/display/VirtualDisplay;
@@ -24226,14 +22692,12 @@
Landroid/hardware/display/DisplayManagerGlobal;->TAG:Ljava/lang/String;
Landroid/hardware/display/DisplayManagerGlobal;->unregisterDisplayListener(Landroid/hardware/display/DisplayManager$DisplayListener;)V
Landroid/hardware/display/DisplayManagerGlobal;->USE_CACHE:Z
-Landroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks;
Landroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks;->acquireSuspendBlocker()V
Landroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks;->onDisplayStateChange(I)V
Landroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks;->onProximityNegative()V
Landroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks;->onProximityPositive()V
Landroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks;->onStateChanged()V
Landroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks;->releaseSuspendBlocker()V
-Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;
Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;-><init>()V
Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;-><init>(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;)V
Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;->blockScreenOn:Z
@@ -24258,9 +22722,7 @@
Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;->screenLowPowerBrightnessFactor:F
Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;->useAutoBrightness:Z
Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;->useProximitySensor:Z
-Landroid/hardware/display/DisplayManagerInternal$DisplayTransactionListener;
Landroid/hardware/display/DisplayManagerInternal$DisplayTransactionListener;->onDisplayTransaction()V
-Landroid/hardware/display/DisplayManagerInternal;
Landroid/hardware/display/DisplayManagerInternal;-><init>()V
Landroid/hardware/display/DisplayManagerInternal;->getDisplayInfo(I)Landroid/view/DisplayInfo;
Landroid/hardware/display/DisplayManagerInternal;->getNonOverrideDisplayInfo(ILandroid/view/DisplayInfo;)V
@@ -24277,7 +22739,6 @@
Landroid/hardware/display/DisplayManagerInternal;->setDisplayOffsets(III)V
Landroid/hardware/display/DisplayManagerInternal;->setDisplayProperties(IZFIZ)V
Landroid/hardware/display/DisplayManagerInternal;->unregisterDisplayTransactionListener(Landroid/hardware/display/DisplayManagerInternal$DisplayTransactionListener;)V
-Landroid/hardware/display/DisplayViewport;
Landroid/hardware/display/DisplayViewport;-><init>()V
Landroid/hardware/display/DisplayViewport;->copyFrom(Landroid/hardware/display/DisplayViewport;)V
Landroid/hardware/display/DisplayViewport;->deviceHeight:I
@@ -24289,7 +22750,6 @@
Landroid/hardware/display/DisplayViewport;->physicalFrame:Landroid/graphics/Rect;
Landroid/hardware/display/DisplayViewport;->uniqueId:Ljava/lang/String;
Landroid/hardware/display/DisplayViewport;->valid:Z
-Landroid/hardware/display/IDisplayManager$Stub$Proxy;
Landroid/hardware/display/IDisplayManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/hardware/display/IDisplayManager$Stub$Proxy;->connectWifiDisplay(Ljava/lang/String;)V
Landroid/hardware/display/IDisplayManager$Stub$Proxy;->createVirtualDisplay(Landroid/hardware/display/IVirtualDisplayCallback;Landroid/media/projection/IMediaProjection;Ljava/lang/String;Ljava/lang/String;IIILandroid/view/Surface;ILjava/lang/String;)I
@@ -24320,7 +22780,6 @@
Landroid/hardware/display/IDisplayManager$Stub$Proxy;->setVirtualDisplaySurface(Landroid/hardware/display/IVirtualDisplayCallback;Landroid/view/Surface;)V
Landroid/hardware/display/IDisplayManager$Stub$Proxy;->startWifiDisplayScan()V
Landroid/hardware/display/IDisplayManager$Stub$Proxy;->stopWifiDisplayScan()V
-Landroid/hardware/display/IDisplayManager$Stub;
Landroid/hardware/display/IDisplayManager$Stub;-><init>()V
Landroid/hardware/display/IDisplayManager$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/hardware/display/IDisplayManager$Stub;->TRANSACTION_connectWifiDisplay:I
@@ -24350,7 +22809,6 @@
Landroid/hardware/display/IDisplayManager$Stub;->TRANSACTION_setVirtualDisplaySurface:I
Landroid/hardware/display/IDisplayManager$Stub;->TRANSACTION_startWifiDisplayScan:I
Landroid/hardware/display/IDisplayManager$Stub;->TRANSACTION_stopWifiDisplayScan:I
-Landroid/hardware/display/IDisplayManager;
Landroid/hardware/display/IDisplayManager;->connectWifiDisplay(Ljava/lang/String;)V
Landroid/hardware/display/IDisplayManager;->createVirtualDisplay(Landroid/hardware/display/IVirtualDisplayCallback;Landroid/media/projection/IMediaProjection;Ljava/lang/String;Ljava/lang/String;IIILandroid/view/Surface;ILjava/lang/String;)I
Landroid/hardware/display/IDisplayManager;->disconnectWifiDisplay()V
@@ -24377,33 +22835,27 @@
Landroid/hardware/display/IDisplayManager;->setVirtualDisplaySurface(Landroid/hardware/display/IVirtualDisplayCallback;Landroid/view/Surface;)V
Landroid/hardware/display/IDisplayManager;->startWifiDisplayScan()V
Landroid/hardware/display/IDisplayManager;->stopWifiDisplayScan()V
-Landroid/hardware/display/IDisplayManagerCallback$Stub$Proxy;
Landroid/hardware/display/IDisplayManagerCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/hardware/display/IDisplayManagerCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/hardware/display/IDisplayManagerCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/hardware/display/IDisplayManagerCallback$Stub$Proxy;->onDisplayEvent(II)V
-Landroid/hardware/display/IDisplayManagerCallback$Stub;
Landroid/hardware/display/IDisplayManagerCallback$Stub;-><init>()V
Landroid/hardware/display/IDisplayManagerCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/display/IDisplayManagerCallback;
Landroid/hardware/display/IDisplayManagerCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/hardware/display/IDisplayManagerCallback$Stub;->TRANSACTION_onDisplayEvent:I
-Landroid/hardware/display/IDisplayManagerCallback;
Landroid/hardware/display/IDisplayManagerCallback;->onDisplayEvent(II)V
-Landroid/hardware/display/IVirtualDisplayCallback$Stub$Proxy;
Landroid/hardware/display/IVirtualDisplayCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/hardware/display/IVirtualDisplayCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/hardware/display/IVirtualDisplayCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/hardware/display/IVirtualDisplayCallback$Stub$Proxy;->onPaused()V
Landroid/hardware/display/IVirtualDisplayCallback$Stub$Proxy;->onResumed()V
Landroid/hardware/display/IVirtualDisplayCallback$Stub$Proxy;->onStopped()V
-Landroid/hardware/display/IVirtualDisplayCallback$Stub;
Landroid/hardware/display/IVirtualDisplayCallback$Stub;-><init>()V
Landroid/hardware/display/IVirtualDisplayCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/display/IVirtualDisplayCallback;
Landroid/hardware/display/IVirtualDisplayCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/hardware/display/IVirtualDisplayCallback$Stub;->TRANSACTION_onPaused:I
Landroid/hardware/display/IVirtualDisplayCallback$Stub;->TRANSACTION_onResumed:I
Landroid/hardware/display/IVirtualDisplayCallback$Stub;->TRANSACTION_onStopped:I
-Landroid/hardware/display/IVirtualDisplayCallback;
Landroid/hardware/display/IVirtualDisplayCallback;->onPaused()V
Landroid/hardware/display/IVirtualDisplayCallback;->onResumed()V
Landroid/hardware/display/IVirtualDisplayCallback;->onStopped()V
@@ -24412,7 +22864,6 @@
Landroid/hardware/display/VirtualDisplay;->mGlobal:Landroid/hardware/display/DisplayManagerGlobal;
Landroid/hardware/display/VirtualDisplay;->mSurface:Landroid/view/Surface;
Landroid/hardware/display/VirtualDisplay;->mToken:Landroid/hardware/display/IVirtualDisplayCallback;
-Landroid/hardware/display/WifiDisplay;
Landroid/hardware/display/WifiDisplay;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZZ)V
Landroid/hardware/display/WifiDisplay;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/hardware/display/WifiDisplay;->EMPTY_ARRAY:[Landroid/hardware/display/WifiDisplay;
@@ -24424,7 +22875,6 @@
Landroid/hardware/display/WifiDisplay;->mDeviceName:Ljava/lang/String;
Landroid/hardware/display/WifiDisplay;->mIsAvailable:Z
Landroid/hardware/display/WifiDisplay;->mIsRemembered:Z
-Landroid/hardware/display/WifiDisplaySessionInfo;
Landroid/hardware/display/WifiDisplaySessionInfo;-><init>()V
Landroid/hardware/display/WifiDisplaySessionInfo;-><init>(ZILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
Landroid/hardware/display/WifiDisplaySessionInfo;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -24438,7 +22888,6 @@
Landroid/hardware/display/WifiDisplaySessionInfo;->mIP:Ljava/lang/String;
Landroid/hardware/display/WifiDisplaySessionInfo;->mPassphrase:Ljava/lang/String;
Landroid/hardware/display/WifiDisplaySessionInfo;->mSessionId:I
-Landroid/hardware/display/WifiDisplayStatus;
Landroid/hardware/display/WifiDisplayStatus;-><init>()V
Landroid/hardware/display/WifiDisplayStatus;-><init>(IIILandroid/hardware/display/WifiDisplay;[Landroid/hardware/display/WifiDisplay;Landroid/hardware/display/WifiDisplaySessionInfo;)V
Landroid/hardware/display/WifiDisplayStatus;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -24451,7 +22900,6 @@
Landroid/hardware/display/WifiDisplayStatus;->mScanState:I
Landroid/hardware/display/WifiDisplayStatus;->mSessionInfo:Landroid/hardware/display/WifiDisplaySessionInfo;
Landroid/hardware/display/WifiDisplayStatus;->SCAN_STATE_SCANNING:I
-Landroid/hardware/fingerprint/Fingerprint;
Landroid/hardware/fingerprint/Fingerprint;-><init>(Landroid/os/Parcel;)V
Landroid/hardware/fingerprint/Fingerprint;-><init>(Ljava/lang/CharSequence;IIJ)V
Landroid/hardware/fingerprint/Fingerprint;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -24468,30 +22916,19 @@
Landroid/hardware/fingerprint/FingerprintManager$AuthenticationResult;->mCryptoObject:Landroid/hardware/fingerprint/FingerprintManager$CryptoObject;
Landroid/hardware/fingerprint/FingerprintManager$AuthenticationResult;->mFingerprint:Landroid/hardware/fingerprint/Fingerprint;
Landroid/hardware/fingerprint/FingerprintManager$AuthenticationResult;->mUserId:I
-Landroid/hardware/fingerprint/FingerprintManager$EnrollmentCallback;
Landroid/hardware/fingerprint/FingerprintManager$EnrollmentCallback;-><init>()V
Landroid/hardware/fingerprint/FingerprintManager$EnrollmentCallback;->onEnrollmentError(ILjava/lang/CharSequence;)V
Landroid/hardware/fingerprint/FingerprintManager$EnrollmentCallback;->onEnrollmentHelp(ILjava/lang/CharSequence;)V
Landroid/hardware/fingerprint/FingerprintManager$EnrollmentCallback;->onEnrollmentProgress(I)V
-Landroid/hardware/fingerprint/FingerprintManager$EnumerateCallback;
Landroid/hardware/fingerprint/FingerprintManager$EnumerateCallback;-><init>()V
Landroid/hardware/fingerprint/FingerprintManager$EnumerateCallback;->onEnumerate(Landroid/hardware/fingerprint/Fingerprint;)V
Landroid/hardware/fingerprint/FingerprintManager$EnumerateCallback;->onEnumerateError(ILjava/lang/CharSequence;)V
-Landroid/hardware/fingerprint/FingerprintManager$LockoutResetCallback;
Landroid/hardware/fingerprint/FingerprintManager$LockoutResetCallback;-><init>()V
Landroid/hardware/fingerprint/FingerprintManager$LockoutResetCallback;->onLockoutReset()V
-Landroid/hardware/fingerprint/FingerprintManager$MyHandler;
-Landroid/hardware/fingerprint/FingerprintManager$MyHandler;-><init>(Landroid/content/Context;)V
-Landroid/hardware/fingerprint/FingerprintManager$MyHandler;-><init>(Landroid/os/Looper;)V
Landroid/hardware/fingerprint/FingerprintManager$MyHandler;->sendEnrollResult(Landroid/hardware/fingerprint/Fingerprint;I)V
Landroid/hardware/fingerprint/FingerprintManager$MyHandler;->sendEnumeratedResult(JII)V
Landroid/hardware/fingerprint/FingerprintManager$MyHandler;->sendRemovedResult(Landroid/hardware/fingerprint/Fingerprint;I)V
-Landroid/hardware/fingerprint/FingerprintManager$OnAuthenticationCancelListener;
-Landroid/hardware/fingerprint/FingerprintManager$OnAuthenticationCancelListener;-><init>(Landroid/hardware/biometrics/CryptoObject;)V
Landroid/hardware/fingerprint/FingerprintManager$OnAuthenticationCancelListener;->mCrypto:Landroid/hardware/biometrics/CryptoObject;
-Landroid/hardware/fingerprint/FingerprintManager$OnEnrollCancelListener;
-Landroid/hardware/fingerprint/FingerprintManager$OnEnrollCancelListener;-><init>()V
-Landroid/hardware/fingerprint/FingerprintManager$RemovalCallback;
Landroid/hardware/fingerprint/FingerprintManager$RemovalCallback;-><init>()V
Landroid/hardware/fingerprint/FingerprintManager$RemovalCallback;->onRemovalError(Landroid/hardware/fingerprint/Fingerprint;ILjava/lang/CharSequence;)V
Landroid/hardware/fingerprint/FingerprintManager$RemovalCallback;->onRemovalSucceeded(Landroid/hardware/fingerprint/Fingerprint;I)V
@@ -24541,19 +22978,15 @@
Landroid/hardware/fingerprint/FingerprintManager;->setActiveUser(I)V
Landroid/hardware/fingerprint/FingerprintManager;->TAG:Ljava/lang/String;
Landroid/hardware/fingerprint/FingerprintManager;->useHandler(Landroid/os/Handler;)V
-Landroid/hardware/fingerprint/IFingerprintClientActiveCallback$Stub$Proxy;
Landroid/hardware/fingerprint/IFingerprintClientActiveCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/hardware/fingerprint/IFingerprintClientActiveCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/hardware/fingerprint/IFingerprintClientActiveCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/hardware/fingerprint/IFingerprintClientActiveCallback$Stub$Proxy;->onClientActiveChanged(Z)V
-Landroid/hardware/fingerprint/IFingerprintClientActiveCallback$Stub;
Landroid/hardware/fingerprint/IFingerprintClientActiveCallback$Stub;-><init>()V
Landroid/hardware/fingerprint/IFingerprintClientActiveCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/fingerprint/IFingerprintClientActiveCallback;
Landroid/hardware/fingerprint/IFingerprintClientActiveCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/hardware/fingerprint/IFingerprintClientActiveCallback$Stub;->TRANSACTION_onClientActiveChanged:I
-Landroid/hardware/fingerprint/IFingerprintClientActiveCallback;
Landroid/hardware/fingerprint/IFingerprintClientActiveCallback;->onClientActiveChanged(Z)V
-Landroid/hardware/fingerprint/IFingerprintService$Stub$Proxy;
Landroid/hardware/fingerprint/IFingerprintService$Stub$Proxy;->addClientActiveCallback(Landroid/hardware/fingerprint/IFingerprintClientActiveCallback;)V
Landroid/hardware/fingerprint/IFingerprintService$Stub$Proxy;->addLockoutResetCallback(Landroid/hardware/fingerprint/IFingerprintServiceLockoutResetCallback;)V
Landroid/hardware/fingerprint/IFingerprintService$Stub$Proxy;->authenticate(Landroid/os/IBinder;JILandroid/hardware/fingerprint/IFingerprintServiceReceiver;ILjava/lang/String;Landroid/os/Bundle;Landroid/hardware/biometrics/IBiometricPromptReceiver;)V
@@ -24575,7 +23008,6 @@
Landroid/hardware/fingerprint/IFingerprintService$Stub$Proxy;->rename(IILjava/lang/String;)V
Landroid/hardware/fingerprint/IFingerprintService$Stub$Proxy;->resetTimeout([B)V
Landroid/hardware/fingerprint/IFingerprintService$Stub$Proxy;->setActiveUser(I)V
-Landroid/hardware/fingerprint/IFingerprintService$Stub;
Landroid/hardware/fingerprint/IFingerprintService$Stub;-><init>()V
Landroid/hardware/fingerprint/IFingerprintService$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/hardware/fingerprint/IFingerprintService$Stub;->TRANSACTION_addClientActiveCallback:I
@@ -24597,7 +23029,6 @@
Landroid/hardware/fingerprint/IFingerprintService$Stub;->TRANSACTION_rename:I
Landroid/hardware/fingerprint/IFingerprintService$Stub;->TRANSACTION_resetTimeout:I
Landroid/hardware/fingerprint/IFingerprintService$Stub;->TRANSACTION_setActiveUser:I
-Landroid/hardware/fingerprint/IFingerprintService;
Landroid/hardware/fingerprint/IFingerprintService;->addClientActiveCallback(Landroid/hardware/fingerprint/IFingerprintClientActiveCallback;)V
Landroid/hardware/fingerprint/IFingerprintService;->addLockoutResetCallback(Landroid/hardware/fingerprint/IFingerprintServiceLockoutResetCallback;)V
Landroid/hardware/fingerprint/IFingerprintService;->authenticate(Landroid/os/IBinder;JILandroid/hardware/fingerprint/IFingerprintServiceReceiver;ILjava/lang/String;Landroid/os/Bundle;Landroid/hardware/biometrics/IBiometricPromptReceiver;)V
@@ -24617,19 +23048,15 @@
Landroid/hardware/fingerprint/IFingerprintService;->rename(IILjava/lang/String;)V
Landroid/hardware/fingerprint/IFingerprintService;->resetTimeout([B)V
Landroid/hardware/fingerprint/IFingerprintService;->setActiveUser(I)V
-Landroid/hardware/fingerprint/IFingerprintServiceLockoutResetCallback$Stub$Proxy;
Landroid/hardware/fingerprint/IFingerprintServiceLockoutResetCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/hardware/fingerprint/IFingerprintServiceLockoutResetCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/hardware/fingerprint/IFingerprintServiceLockoutResetCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/hardware/fingerprint/IFingerprintServiceLockoutResetCallback$Stub$Proxy;->onLockoutReset(JLandroid/os/IRemoteCallback;)V
-Landroid/hardware/fingerprint/IFingerprintServiceLockoutResetCallback$Stub;
Landroid/hardware/fingerprint/IFingerprintServiceLockoutResetCallback$Stub;-><init>()V
Landroid/hardware/fingerprint/IFingerprintServiceLockoutResetCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/fingerprint/IFingerprintServiceLockoutResetCallback;
Landroid/hardware/fingerprint/IFingerprintServiceLockoutResetCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/hardware/fingerprint/IFingerprintServiceLockoutResetCallback$Stub;->TRANSACTION_onLockoutReset:I
-Landroid/hardware/fingerprint/IFingerprintServiceLockoutResetCallback;
Landroid/hardware/fingerprint/IFingerprintServiceLockoutResetCallback;->onLockoutReset(JLandroid/os/IRemoteCallback;)V
-Landroid/hardware/fingerprint/IFingerprintServiceReceiver$Stub$Proxy;
Landroid/hardware/fingerprint/IFingerprintServiceReceiver$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/hardware/fingerprint/IFingerprintServiceReceiver$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/hardware/fingerprint/IFingerprintServiceReceiver$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -24640,7 +23067,6 @@
Landroid/hardware/fingerprint/IFingerprintServiceReceiver$Stub$Proxy;->onEnumerated(JIII)V
Landroid/hardware/fingerprint/IFingerprintServiceReceiver$Stub$Proxy;->onError(JII)V
Landroid/hardware/fingerprint/IFingerprintServiceReceiver$Stub$Proxy;->onRemoved(JIII)V
-Landroid/hardware/fingerprint/IFingerprintServiceReceiver$Stub;
Landroid/hardware/fingerprint/IFingerprintServiceReceiver$Stub;-><init>()V
Landroid/hardware/fingerprint/IFingerprintServiceReceiver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/fingerprint/IFingerprintServiceReceiver;
Landroid/hardware/fingerprint/IFingerprintServiceReceiver$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -24651,7 +23077,6 @@
Landroid/hardware/fingerprint/IFingerprintServiceReceiver$Stub;->TRANSACTION_onEnumerated:I
Landroid/hardware/fingerprint/IFingerprintServiceReceiver$Stub;->TRANSACTION_onError:I
Landroid/hardware/fingerprint/IFingerprintServiceReceiver$Stub;->TRANSACTION_onRemoved:I
-Landroid/hardware/fingerprint/IFingerprintServiceReceiver;
Landroid/hardware/fingerprint/IFingerprintServiceReceiver;->onAcquired(JII)V
Landroid/hardware/fingerprint/IFingerprintServiceReceiver;->onAuthenticationFailed(J)V
Landroid/hardware/fingerprint/IFingerprintServiceReceiver;->onAuthenticationSucceeded(JLandroid/hardware/fingerprint/Fingerprint;I)V
@@ -24659,7 +23084,6 @@
Landroid/hardware/fingerprint/IFingerprintServiceReceiver;->onEnumerated(JIII)V
Landroid/hardware/fingerprint/IFingerprintServiceReceiver;->onError(JII)V
Landroid/hardware/fingerprint/IFingerprintServiceReceiver;->onRemoved(JIII)V
-Landroid/hardware/GeomagneticField$LegendreTable;
Landroid/hardware/GeomagneticField$LegendreTable;-><init>(IF)V
Landroid/hardware/GeomagneticField$LegendreTable;->mP:[[F
Landroid/hardware/GeomagneticField$LegendreTable;->mPDeriv:[[F
@@ -24680,8 +23104,6 @@
Landroid/hardware/GeomagneticField;->mY:F
Landroid/hardware/GeomagneticField;->mZ:F
Landroid/hardware/GeomagneticField;->SCHMIDT_QUASI_NORM_FACTORS:[[F
-Landroid/hardware/HardwareBuffer$Format;
-Landroid/hardware/HardwareBuffer$Usage;
Landroid/hardware/HardwareBuffer;->isSupportedFormat(I)Z
Landroid/hardware/HardwareBuffer;->mCleaner:Ljava/lang/Runnable;
Landroid/hardware/HardwareBuffer;->mCloseGuard:Ldalvik/system/CloseGuard;
@@ -24764,30 +23186,25 @@
Landroid/hardware/hdmi/HdmiRecordSources$AnalogueServiceSource;->mBroadcastSystem:I
Landroid/hardware/hdmi/HdmiRecordSources$AnalogueServiceSource;->mBroadcastType:I
Landroid/hardware/hdmi/HdmiRecordSources$AnalogueServiceSource;->mFrequency:I
-Landroid/hardware/hdmi/HdmiRecordSources$AribData;
Landroid/hardware/hdmi/HdmiRecordSources$AribData;-><init>(III)V
Landroid/hardware/hdmi/HdmiRecordSources$AribData;->mOriginalNetworkId:I
Landroid/hardware/hdmi/HdmiRecordSources$AribData;->mServiceId:I
Landroid/hardware/hdmi/HdmiRecordSources$AribData;->mTransportStreamId:I
Landroid/hardware/hdmi/HdmiRecordSources$AribData;->toByteArray([BI)I
-Landroid/hardware/hdmi/HdmiRecordSources$AtscData;
Landroid/hardware/hdmi/HdmiRecordSources$AtscData;-><init>(II)V
Landroid/hardware/hdmi/HdmiRecordSources$AtscData;->mProgramNumber:I
Landroid/hardware/hdmi/HdmiRecordSources$AtscData;->mTransportStreamId:I
Landroid/hardware/hdmi/HdmiRecordSources$AtscData;->toByteArray([BI)I
-Landroid/hardware/hdmi/HdmiRecordSources$ChannelIdentifier;
Landroid/hardware/hdmi/HdmiRecordSources$ChannelIdentifier;-><init>(III)V
Landroid/hardware/hdmi/HdmiRecordSources$ChannelIdentifier;->mChannelNumberFormat:I
Landroid/hardware/hdmi/HdmiRecordSources$ChannelIdentifier;->mMajorChannelNumber:I
Landroid/hardware/hdmi/HdmiRecordSources$ChannelIdentifier;->mMinorChannelNumber:I
Landroid/hardware/hdmi/HdmiRecordSources$ChannelIdentifier;->toByteArray([BI)I
-Landroid/hardware/hdmi/HdmiRecordSources$DigitalChannelData;
Landroid/hardware/hdmi/HdmiRecordSources$DigitalChannelData;-><init>(Landroid/hardware/hdmi/HdmiRecordSources$ChannelIdentifier;)V
Landroid/hardware/hdmi/HdmiRecordSources$DigitalChannelData;->mChannelIdentifier:Landroid/hardware/hdmi/HdmiRecordSources$ChannelIdentifier;
Landroid/hardware/hdmi/HdmiRecordSources$DigitalChannelData;->ofOneNumber(I)Landroid/hardware/hdmi/HdmiRecordSources$DigitalChannelData;
Landroid/hardware/hdmi/HdmiRecordSources$DigitalChannelData;->ofTwoNumbers(II)Landroid/hardware/hdmi/HdmiRecordSources$DigitalChannelData;
Landroid/hardware/hdmi/HdmiRecordSources$DigitalChannelData;->toByteArray([BI)I
-Landroid/hardware/hdmi/HdmiRecordSources$DigitalServiceIdentification;
Landroid/hardware/hdmi/HdmiRecordSources$DigitalServiceIdentification;->toByteArray([BI)I
Landroid/hardware/hdmi/HdmiRecordSources$DigitalServiceSource;-><init>(IILandroid/hardware/hdmi/HdmiRecordSources$DigitalServiceIdentification;)V
Landroid/hardware/hdmi/HdmiRecordSources$DigitalServiceSource;->DIGITAL_SERVICE_IDENTIFIED_BY_CHANNEL:I
@@ -24797,7 +23214,6 @@
Landroid/hardware/hdmi/HdmiRecordSources$DigitalServiceSource;->mBroadcastSystem:I
Landroid/hardware/hdmi/HdmiRecordSources$DigitalServiceSource;->mIdentification:Landroid/hardware/hdmi/HdmiRecordSources$DigitalServiceIdentification;
Landroid/hardware/hdmi/HdmiRecordSources$DigitalServiceSource;->mIdentificationMethod:I
-Landroid/hardware/hdmi/HdmiRecordSources$DvbData;
Landroid/hardware/hdmi/HdmiRecordSources$DvbData;-><init>(III)V
Landroid/hardware/hdmi/HdmiRecordSources$DvbData;->mOriginalNetworkId:I
Landroid/hardware/hdmi/HdmiRecordSources$DvbData;->mServiceId:I
@@ -24865,7 +23281,6 @@
Landroid/hardware/hdmi/HdmiRecordSources;->TAG:Ljava/lang/String;
Landroid/hardware/hdmi/HdmiRecordSources;->threeFieldsToSixBytes(III[BI)I
Landroid/hardware/hdmi/HdmiTimerRecordSources$Duration;-><init>(II)V
-Landroid/hardware/hdmi/HdmiTimerRecordSources$ExternalSourceDecorator;
Landroid/hardware/hdmi/HdmiTimerRecordSources$ExternalSourceDecorator;-><init>(Landroid/hardware/hdmi/HdmiRecordSources$RecordSource;I)V
Landroid/hardware/hdmi/HdmiTimerRecordSources$ExternalSourceDecorator;->extraParamToByteArray([BI)I
Landroid/hardware/hdmi/HdmiTimerRecordSources$ExternalSourceDecorator;->mExternalSourceSpecifier:I
@@ -24890,7 +23305,6 @@
Landroid/hardware/hdmi/HdmiTimerRecordSources$TimerRecordSource;->mRecordSource:Landroid/hardware/hdmi/HdmiRecordSources$RecordSource;
Landroid/hardware/hdmi/HdmiTimerRecordSources$TimerRecordSource;->mTimerInfo:Landroid/hardware/hdmi/HdmiTimerRecordSources$TimerInfo;
Landroid/hardware/hdmi/HdmiTimerRecordSources$TimerRecordSource;->toByteArray([BI)I
-Landroid/hardware/hdmi/HdmiTimerRecordSources$TimeUnit;
Landroid/hardware/hdmi/HdmiTimerRecordSources$TimeUnit;-><init>(II)V
Landroid/hardware/hdmi/HdmiTimerRecordSources$TimeUnit;->mHour:I
Landroid/hardware/hdmi/HdmiTimerRecordSources$TimeUnit;->mMinute:I
@@ -24912,19 +23326,15 @@
Landroid/hardware/hdmi/HdmiTvClient;->getListenerWrapper(Landroid/hardware/hdmi/HdmiTvClient$HdmiMhlVendorCommandListener;)Landroid/hardware/hdmi/IHdmiMhlVendorCommandListener;
Landroid/hardware/hdmi/HdmiTvClient;->getListenerWrapper(Landroid/hardware/hdmi/HdmiTvClient$InputChangeListener;)Landroid/hardware/hdmi/IHdmiInputChangeListener;
Landroid/hardware/hdmi/HdmiTvClient;->TAG:Ljava/lang/String;
-Landroid/hardware/hdmi/IHdmiControlCallback$Stub$Proxy;
Landroid/hardware/hdmi/IHdmiControlCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/hardware/hdmi/IHdmiControlCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/hardware/hdmi/IHdmiControlCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/hardware/hdmi/IHdmiControlCallback$Stub$Proxy;->onComplete(I)V
-Landroid/hardware/hdmi/IHdmiControlCallback$Stub;
Landroid/hardware/hdmi/IHdmiControlCallback$Stub;-><init>()V
Landroid/hardware/hdmi/IHdmiControlCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/hdmi/IHdmiControlCallback;
Landroid/hardware/hdmi/IHdmiControlCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/hardware/hdmi/IHdmiControlCallback$Stub;->TRANSACTION_onComplete:I
-Landroid/hardware/hdmi/IHdmiControlCallback;
Landroid/hardware/hdmi/IHdmiControlCallback;->onComplete(I)V
-Landroid/hardware/hdmi/IHdmiControlService$Stub$Proxy;
Landroid/hardware/hdmi/IHdmiControlService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/hardware/hdmi/IHdmiControlService$Stub$Proxy;->addDeviceEventListener(Landroid/hardware/hdmi/IHdmiDeviceEventListener;)V
Landroid/hardware/hdmi/IHdmiControlService$Stub$Proxy;->addHdmiMhlVendorCommandListener(Landroid/hardware/hdmi/IHdmiMhlVendorCommandListener;)V
@@ -24962,7 +23372,6 @@
Landroid/hardware/hdmi/IHdmiControlService$Stub$Proxy;->startOneTouchRecord(I[B)V
Landroid/hardware/hdmi/IHdmiControlService$Stub$Proxy;->startTimerRecording(II[B)V
Landroid/hardware/hdmi/IHdmiControlService$Stub$Proxy;->stopOneTouchRecord(I)V
-Landroid/hardware/hdmi/IHdmiControlService$Stub;
Landroid/hardware/hdmi/IHdmiControlService$Stub;-><init>()V
Landroid/hardware/hdmi/IHdmiControlService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/hdmi/IHdmiControlService;
Landroid/hardware/hdmi/IHdmiControlService$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -25000,7 +23409,6 @@
Landroid/hardware/hdmi/IHdmiControlService$Stub;->TRANSACTION_startOneTouchRecord:I
Landroid/hardware/hdmi/IHdmiControlService$Stub;->TRANSACTION_startTimerRecording:I
Landroid/hardware/hdmi/IHdmiControlService$Stub;->TRANSACTION_stopOneTouchRecord:I
-Landroid/hardware/hdmi/IHdmiControlService;
Landroid/hardware/hdmi/IHdmiControlService;->addDeviceEventListener(Landroid/hardware/hdmi/IHdmiDeviceEventListener;)V
Landroid/hardware/hdmi/IHdmiControlService;->addHdmiMhlVendorCommandListener(Landroid/hardware/hdmi/IHdmiMhlVendorCommandListener;)V
Landroid/hardware/hdmi/IHdmiControlService;->addHotplugEventListener(Landroid/hardware/hdmi/IHdmiHotplugEventListener;)V
@@ -25035,55 +23443,42 @@
Landroid/hardware/hdmi/IHdmiControlService;->startOneTouchRecord(I[B)V
Landroid/hardware/hdmi/IHdmiControlService;->startTimerRecording(II[B)V
Landroid/hardware/hdmi/IHdmiControlService;->stopOneTouchRecord(I)V
-Landroid/hardware/hdmi/IHdmiDeviceEventListener$Stub$Proxy;
Landroid/hardware/hdmi/IHdmiDeviceEventListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/hardware/hdmi/IHdmiDeviceEventListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/hardware/hdmi/IHdmiDeviceEventListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/hardware/hdmi/IHdmiDeviceEventListener$Stub$Proxy;->onStatusChanged(Landroid/hardware/hdmi/HdmiDeviceInfo;I)V
-Landroid/hardware/hdmi/IHdmiDeviceEventListener$Stub;
Landroid/hardware/hdmi/IHdmiDeviceEventListener$Stub;-><init>()V
Landroid/hardware/hdmi/IHdmiDeviceEventListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/hdmi/IHdmiDeviceEventListener;
Landroid/hardware/hdmi/IHdmiDeviceEventListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/hardware/hdmi/IHdmiDeviceEventListener$Stub;->TRANSACTION_onStatusChanged:I
-Landroid/hardware/hdmi/IHdmiDeviceEventListener;
Landroid/hardware/hdmi/IHdmiDeviceEventListener;->onStatusChanged(Landroid/hardware/hdmi/HdmiDeviceInfo;I)V
-Landroid/hardware/hdmi/IHdmiHotplugEventListener$Stub$Proxy;
Landroid/hardware/hdmi/IHdmiHotplugEventListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/hardware/hdmi/IHdmiHotplugEventListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/hardware/hdmi/IHdmiHotplugEventListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/hardware/hdmi/IHdmiHotplugEventListener$Stub$Proxy;->onReceived(Landroid/hardware/hdmi/HdmiHotplugEvent;)V
-Landroid/hardware/hdmi/IHdmiHotplugEventListener$Stub;
Landroid/hardware/hdmi/IHdmiHotplugEventListener$Stub;-><init>()V
Landroid/hardware/hdmi/IHdmiHotplugEventListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/hdmi/IHdmiHotplugEventListener;
Landroid/hardware/hdmi/IHdmiHotplugEventListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/hardware/hdmi/IHdmiHotplugEventListener$Stub;->TRANSACTION_onReceived:I
-Landroid/hardware/hdmi/IHdmiHotplugEventListener;
Landroid/hardware/hdmi/IHdmiHotplugEventListener;->onReceived(Landroid/hardware/hdmi/HdmiHotplugEvent;)V
-Landroid/hardware/hdmi/IHdmiInputChangeListener$Stub$Proxy;
Landroid/hardware/hdmi/IHdmiInputChangeListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/hardware/hdmi/IHdmiInputChangeListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/hardware/hdmi/IHdmiInputChangeListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/hardware/hdmi/IHdmiInputChangeListener$Stub$Proxy;->onChanged(Landroid/hardware/hdmi/HdmiDeviceInfo;)V
-Landroid/hardware/hdmi/IHdmiInputChangeListener$Stub;
Landroid/hardware/hdmi/IHdmiInputChangeListener$Stub;-><init>()V
Landroid/hardware/hdmi/IHdmiInputChangeListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/hdmi/IHdmiInputChangeListener;
Landroid/hardware/hdmi/IHdmiInputChangeListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/hardware/hdmi/IHdmiInputChangeListener$Stub;->TRANSACTION_onChanged:I
-Landroid/hardware/hdmi/IHdmiInputChangeListener;
Landroid/hardware/hdmi/IHdmiInputChangeListener;->onChanged(Landroid/hardware/hdmi/HdmiDeviceInfo;)V
-Landroid/hardware/hdmi/IHdmiMhlVendorCommandListener$Stub$Proxy;
Landroid/hardware/hdmi/IHdmiMhlVendorCommandListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/hardware/hdmi/IHdmiMhlVendorCommandListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/hardware/hdmi/IHdmiMhlVendorCommandListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/hardware/hdmi/IHdmiMhlVendorCommandListener$Stub$Proxy;->onReceived(III[B)V
-Landroid/hardware/hdmi/IHdmiMhlVendorCommandListener$Stub;
Landroid/hardware/hdmi/IHdmiMhlVendorCommandListener$Stub;-><init>()V
Landroid/hardware/hdmi/IHdmiMhlVendorCommandListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/hdmi/IHdmiMhlVendorCommandListener;
Landroid/hardware/hdmi/IHdmiMhlVendorCommandListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/hardware/hdmi/IHdmiMhlVendorCommandListener$Stub;->TRANSACTION_onReceived:I
-Landroid/hardware/hdmi/IHdmiMhlVendorCommandListener;
Landroid/hardware/hdmi/IHdmiMhlVendorCommandListener;->onReceived(III[B)V
-Landroid/hardware/hdmi/IHdmiRecordListener$Stub$Proxy;
Landroid/hardware/hdmi/IHdmiRecordListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/hardware/hdmi/IHdmiRecordListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/hardware/hdmi/IHdmiRecordListener$Stub$Proxy;->getOneTouchRecordSource(I)[B
@@ -25091,7 +23486,6 @@
Landroid/hardware/hdmi/IHdmiRecordListener$Stub$Proxy;->onClearTimerRecordingResult(II)V
Landroid/hardware/hdmi/IHdmiRecordListener$Stub$Proxy;->onOneTouchRecordResult(II)V
Landroid/hardware/hdmi/IHdmiRecordListener$Stub$Proxy;->onTimerRecordingResult(II)V
-Landroid/hardware/hdmi/IHdmiRecordListener$Stub;
Landroid/hardware/hdmi/IHdmiRecordListener$Stub;-><init>()V
Landroid/hardware/hdmi/IHdmiRecordListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/hdmi/IHdmiRecordListener;
Landroid/hardware/hdmi/IHdmiRecordListener$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -25099,60 +23493,46 @@
Landroid/hardware/hdmi/IHdmiRecordListener$Stub;->TRANSACTION_onClearTimerRecordingResult:I
Landroid/hardware/hdmi/IHdmiRecordListener$Stub;->TRANSACTION_onOneTouchRecordResult:I
Landroid/hardware/hdmi/IHdmiRecordListener$Stub;->TRANSACTION_onTimerRecordingResult:I
-Landroid/hardware/hdmi/IHdmiRecordListener;
Landroid/hardware/hdmi/IHdmiRecordListener;->getOneTouchRecordSource(I)[B
Landroid/hardware/hdmi/IHdmiRecordListener;->onClearTimerRecordingResult(II)V
Landroid/hardware/hdmi/IHdmiRecordListener;->onOneTouchRecordResult(II)V
Landroid/hardware/hdmi/IHdmiRecordListener;->onTimerRecordingResult(II)V
-Landroid/hardware/hdmi/IHdmiSystemAudioModeChangeListener$Stub$Proxy;
Landroid/hardware/hdmi/IHdmiSystemAudioModeChangeListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/hardware/hdmi/IHdmiSystemAudioModeChangeListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/hardware/hdmi/IHdmiSystemAudioModeChangeListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/hardware/hdmi/IHdmiSystemAudioModeChangeListener$Stub$Proxy;->onStatusChanged(Z)V
-Landroid/hardware/hdmi/IHdmiSystemAudioModeChangeListener$Stub;
Landroid/hardware/hdmi/IHdmiSystemAudioModeChangeListener$Stub;-><init>()V
Landroid/hardware/hdmi/IHdmiSystemAudioModeChangeListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/hdmi/IHdmiSystemAudioModeChangeListener;
Landroid/hardware/hdmi/IHdmiSystemAudioModeChangeListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/hardware/hdmi/IHdmiSystemAudioModeChangeListener$Stub;->TRANSACTION_onStatusChanged:I
-Landroid/hardware/hdmi/IHdmiSystemAudioModeChangeListener;
Landroid/hardware/hdmi/IHdmiSystemAudioModeChangeListener;->onStatusChanged(Z)V
-Landroid/hardware/hdmi/IHdmiVendorCommandListener$Stub$Proxy;
Landroid/hardware/hdmi/IHdmiVendorCommandListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/hardware/hdmi/IHdmiVendorCommandListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/hardware/hdmi/IHdmiVendorCommandListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/hardware/hdmi/IHdmiVendorCommandListener$Stub$Proxy;->onControlStateChanged(ZI)V
Landroid/hardware/hdmi/IHdmiVendorCommandListener$Stub$Proxy;->onReceived(II[BZ)V
-Landroid/hardware/hdmi/IHdmiVendorCommandListener$Stub;
Landroid/hardware/hdmi/IHdmiVendorCommandListener$Stub;-><init>()V
Landroid/hardware/hdmi/IHdmiVendorCommandListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/hdmi/IHdmiVendorCommandListener;
Landroid/hardware/hdmi/IHdmiVendorCommandListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/hardware/hdmi/IHdmiVendorCommandListener$Stub;->TRANSACTION_onControlStateChanged:I
Landroid/hardware/hdmi/IHdmiVendorCommandListener$Stub;->TRANSACTION_onReceived:I
-Landroid/hardware/hdmi/IHdmiVendorCommandListener;
Landroid/hardware/hdmi/IHdmiVendorCommandListener;->onControlStateChanged(ZI)V
Landroid/hardware/hdmi/IHdmiVendorCommandListener;->onReceived(II[BZ)V
-Landroid/hardware/ICamera$Stub$Proxy;
Landroid/hardware/ICamera$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/hardware/ICamera$Stub$Proxy;->disconnect()V
Landroid/hardware/ICamera$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/hardware/ICamera$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/hardware/ICamera$Stub;
Landroid/hardware/ICamera$Stub;-><init>()V
Landroid/hardware/ICamera$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/ICamera;
Landroid/hardware/ICamera$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/hardware/ICamera$Stub;->TRANSACTION_disconnect:I
-Landroid/hardware/ICamera;
Landroid/hardware/ICamera;->disconnect()V
-Landroid/hardware/ICameraClient$Stub$Proxy;
Landroid/hardware/ICameraClient$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/hardware/ICameraClient$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/hardware/ICameraClient$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/hardware/ICameraClient$Stub;
Landroid/hardware/ICameraClient$Stub;-><init>()V
Landroid/hardware/ICameraClient$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/ICameraClient;
Landroid/hardware/ICameraClient$Stub;->DESCRIPTOR:Ljava/lang/String;
-Landroid/hardware/ICameraClient;
-Landroid/hardware/ICameraService$Stub$Proxy;
Landroid/hardware/ICameraService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/hardware/ICameraService$Stub$Proxy;->addListener(Landroid/hardware/ICameraServiceListener;)[Landroid/hardware/CameraStatus;
Landroid/hardware/ICameraService$Stub$Proxy;->connect(Landroid/hardware/ICameraClient;ILjava/lang/String;II)Landroid/hardware/ICamera;
@@ -25170,7 +23550,6 @@
Landroid/hardware/ICameraService$Stub$Proxy;->removeListener(Landroid/hardware/ICameraServiceListener;)V
Landroid/hardware/ICameraService$Stub$Proxy;->setTorchMode(Ljava/lang/String;ZLandroid/os/IBinder;)V
Landroid/hardware/ICameraService$Stub$Proxy;->supportsCameraApi(Ljava/lang/String;I)Z
-Landroid/hardware/ICameraService$Stub;
Landroid/hardware/ICameraService$Stub;-><init>()V
Landroid/hardware/ICameraService$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/hardware/ICameraService$Stub;->TRANSACTION_addListener:I
@@ -25187,7 +23566,6 @@
Landroid/hardware/ICameraService$Stub;->TRANSACTION_removeListener:I
Landroid/hardware/ICameraService$Stub;->TRANSACTION_setTorchMode:I
Landroid/hardware/ICameraService$Stub;->TRANSACTION_supportsCameraApi:I
-Landroid/hardware/ICameraService;
Landroid/hardware/ICameraService;->addListener(Landroid/hardware/ICameraServiceListener;)[Landroid/hardware/CameraStatus;
Landroid/hardware/ICameraService;->API_VERSION_1:I
Landroid/hardware/ICameraService;->API_VERSION_2:I
@@ -25221,19 +23599,16 @@
Landroid/hardware/ICameraService;->supportsCameraApi(Ljava/lang/String;I)Z
Landroid/hardware/ICameraService;->USE_CALLING_PID:I
Landroid/hardware/ICameraService;->USE_CALLING_UID:I
-Landroid/hardware/ICameraServiceListener$Stub$Proxy;
Landroid/hardware/ICameraServiceListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/hardware/ICameraServiceListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/hardware/ICameraServiceListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/hardware/ICameraServiceListener$Stub$Proxy;->onStatusChanged(ILjava/lang/String;)V
Landroid/hardware/ICameraServiceListener$Stub$Proxy;->onTorchStatusChanged(ILjava/lang/String;)V
-Landroid/hardware/ICameraServiceListener$Stub;
Landroid/hardware/ICameraServiceListener$Stub;-><init>()V
Landroid/hardware/ICameraServiceListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/ICameraServiceListener;
Landroid/hardware/ICameraServiceListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/hardware/ICameraServiceListener$Stub;->TRANSACTION_onStatusChanged:I
Landroid/hardware/ICameraServiceListener$Stub;->TRANSACTION_onTorchStatusChanged:I
-Landroid/hardware/ICameraServiceListener;
Landroid/hardware/ICameraServiceListener;->onStatusChanged(ILjava/lang/String;)V
Landroid/hardware/ICameraServiceListener;->onTorchStatusChanged(ILjava/lang/String;)V
Landroid/hardware/ICameraServiceListener;->STATUS_ENUMERATING:I
@@ -25245,19 +23620,16 @@
Landroid/hardware/ICameraServiceListener;->TORCH_STATUS_AVAILABLE_ON:I
Landroid/hardware/ICameraServiceListener;->TORCH_STATUS_NOT_AVAILABLE:I
Landroid/hardware/ICameraServiceListener;->TORCH_STATUS_UNKNOWN:I
-Landroid/hardware/ICameraServiceProxy$Stub$Proxy;
Landroid/hardware/ICameraServiceProxy$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/hardware/ICameraServiceProxy$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/hardware/ICameraServiceProxy$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/hardware/ICameraServiceProxy$Stub$Proxy;->notifyCameraState(Ljava/lang/String;IILjava/lang/String;I)V
Landroid/hardware/ICameraServiceProxy$Stub$Proxy;->pingForUserUpdate()V
-Landroid/hardware/ICameraServiceProxy$Stub;
Landroid/hardware/ICameraServiceProxy$Stub;-><init>()V
Landroid/hardware/ICameraServiceProxy$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/ICameraServiceProxy;
Landroid/hardware/ICameraServiceProxy$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/hardware/ICameraServiceProxy$Stub;->TRANSACTION_notifyCameraState:I
Landroid/hardware/ICameraServiceProxy$Stub;->TRANSACTION_pingForUserUpdate:I
-Landroid/hardware/ICameraServiceProxy;
Landroid/hardware/ICameraServiceProxy;->CAMERA_API_LEVEL_1:I
Landroid/hardware/ICameraServiceProxy;->CAMERA_API_LEVEL_2:I
Landroid/hardware/ICameraServiceProxy;->CAMERA_FACING_BACK:I
@@ -25269,37 +23641,30 @@
Landroid/hardware/ICameraServiceProxy;->CAMERA_STATE_OPEN:I
Landroid/hardware/ICameraServiceProxy;->notifyCameraState(Ljava/lang/String;IILjava/lang/String;I)V
Landroid/hardware/ICameraServiceProxy;->pingForUserUpdate()V
-Landroid/hardware/IConsumerIrService$Stub$Proxy;
Landroid/hardware/IConsumerIrService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/hardware/IConsumerIrService$Stub$Proxy;->getCarrierFrequencies()[I
Landroid/hardware/IConsumerIrService$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/hardware/IConsumerIrService$Stub$Proxy;->hasIrEmitter()Z
Landroid/hardware/IConsumerIrService$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/hardware/IConsumerIrService$Stub$Proxy;->transmit(Ljava/lang/String;I[I)V
-Landroid/hardware/IConsumerIrService$Stub;
Landroid/hardware/IConsumerIrService$Stub;-><init>()V
Landroid/hardware/IConsumerIrService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/IConsumerIrService;
Landroid/hardware/IConsumerIrService$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/hardware/IConsumerIrService$Stub;->TRANSACTION_getCarrierFrequencies:I
Landroid/hardware/IConsumerIrService$Stub;->TRANSACTION_hasIrEmitter:I
Landroid/hardware/IConsumerIrService$Stub;->TRANSACTION_transmit:I
-Landroid/hardware/IConsumerIrService;
Landroid/hardware/IConsumerIrService;->getCarrierFrequencies()[I
Landroid/hardware/IConsumerIrService;->hasIrEmitter()Z
Landroid/hardware/IConsumerIrService;->transmit(Ljava/lang/String;I[I)V
-Landroid/hardware/input/IInputDevicesChangedListener$Stub$Proxy;
Landroid/hardware/input/IInputDevicesChangedListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/hardware/input/IInputDevicesChangedListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/hardware/input/IInputDevicesChangedListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/hardware/input/IInputDevicesChangedListener$Stub$Proxy;->onInputDevicesChanged([I)V
-Landroid/hardware/input/IInputDevicesChangedListener$Stub;
Landroid/hardware/input/IInputDevicesChangedListener$Stub;-><init>()V
Landroid/hardware/input/IInputDevicesChangedListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/input/IInputDevicesChangedListener;
Landroid/hardware/input/IInputDevicesChangedListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/hardware/input/IInputDevicesChangedListener$Stub;->TRANSACTION_onInputDevicesChanged:I
-Landroid/hardware/input/IInputDevicesChangedListener;
Landroid/hardware/input/IInputDevicesChangedListener;->onInputDevicesChanged([I)V
-Landroid/hardware/input/IInputManager$Stub$Proxy;
Landroid/hardware/input/IInputManager$Stub$Proxy;->addKeyboardLayoutForInputDevice(Landroid/hardware/input/InputDeviceIdentifier;Ljava/lang/String;)V
Landroid/hardware/input/IInputManager$Stub$Proxy;->cancelVibrate(ILandroid/os/IBinder;)V
Landroid/hardware/input/IInputManager$Stub$Proxy;->createInputForwarder(I)Landroid/app/IInputForwarder;
@@ -25329,7 +23694,6 @@
Landroid/hardware/input/IInputManager$Stub$Proxy;->setTouchCalibrationForInputDevice(Ljava/lang/String;ILandroid/hardware/input/TouchCalibration;)V
Landroid/hardware/input/IInputManager$Stub$Proxy;->tryPointerSpeed(I)V
Landroid/hardware/input/IInputManager$Stub$Proxy;->vibrate(I[JILandroid/os/IBinder;)V
-Landroid/hardware/input/IInputManager$Stub;
Landroid/hardware/input/IInputManager$Stub;-><init>()V
Landroid/hardware/input/IInputManager$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/hardware/input/IInputManager$Stub;->TRANSACTION_addKeyboardLayoutForInputDevice:I
@@ -25358,7 +23722,6 @@
Landroid/hardware/input/IInputManager$Stub;->TRANSACTION_setTouchCalibrationForInputDevice:I
Landroid/hardware/input/IInputManager$Stub;->TRANSACTION_tryPointerSpeed:I
Landroid/hardware/input/IInputManager$Stub;->TRANSACTION_vibrate:I
-Landroid/hardware/input/IInputManager;
Landroid/hardware/input/IInputManager;->addKeyboardLayoutForInputDevice(Landroid/hardware/input/InputDeviceIdentifier;Ljava/lang/String;)V
Landroid/hardware/input/IInputManager;->cancelVibrate(ILandroid/os/IBinder;)V
Landroid/hardware/input/IInputManager;->createInputForwarder(I)Landroid/app/IInputForwarder;
@@ -25385,7 +23748,6 @@
Landroid/hardware/input/IInputManager;->setTouchCalibrationForInputDevice(Ljava/lang/String;ILandroid/hardware/input/TouchCalibration;)V
Landroid/hardware/input/IInputManager;->tryPointerSpeed(I)V
Landroid/hardware/input/IInputManager;->vibrate(I[JILandroid/os/IBinder;)V
-Landroid/hardware/input/InputDeviceIdentifier;
Landroid/hardware/input/InputDeviceIdentifier;-><init>(Landroid/os/Parcel;)V
Landroid/hardware/input/InputDeviceIdentifier;-><init>(Ljava/lang/String;II)V
Landroid/hardware/input/InputDeviceIdentifier;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -25395,27 +23757,17 @@
Landroid/hardware/input/InputDeviceIdentifier;->mDescriptor:Ljava/lang/String;
Landroid/hardware/input/InputDeviceIdentifier;->mProductId:I
Landroid/hardware/input/InputDeviceIdentifier;->mVendorId:I
-Landroid/hardware/input/InputManager$InputDeviceListenerDelegate;
Landroid/hardware/input/InputManager$InputDeviceListenerDelegate;-><init>(Landroid/hardware/input/InputManager$InputDeviceListener;Landroid/os/Handler;)V
Landroid/hardware/input/InputManager$InputDeviceListenerDelegate;->mListener:Landroid/hardware/input/InputManager$InputDeviceListener;
-Landroid/hardware/input/InputManager$InputDevicesChangedListener;
-Landroid/hardware/input/InputManager$InputDevicesChangedListener;-><init>()V
Landroid/hardware/input/InputManager$InputDevicesChangedListener;->onInputDevicesChanged([I)V
-Landroid/hardware/input/InputManager$InputDeviceVibrator;
-Landroid/hardware/input/InputManager$InputDeviceVibrator;-><init>(I)V
Landroid/hardware/input/InputManager$InputDeviceVibrator;->mDeviceId:I
Landroid/hardware/input/InputManager$InputDeviceVibrator;->mToken:Landroid/os/Binder;
Landroid/hardware/input/InputManager$InputDeviceVibrator;->vibrate(ILjava/lang/String;Landroid/os/VibrationEffect;Landroid/media/AudioAttributes;)V
-Landroid/hardware/input/InputManager$OnTabletModeChangedListener;
Landroid/hardware/input/InputManager$OnTabletModeChangedListener;->onTabletModeChanged(JZ)V
-Landroid/hardware/input/InputManager$OnTabletModeChangedListenerDelegate;
Landroid/hardware/input/InputManager$OnTabletModeChangedListenerDelegate;-><init>(Landroid/hardware/input/InputManager$OnTabletModeChangedListener;Landroid/os/Handler;)V
Landroid/hardware/input/InputManager$OnTabletModeChangedListenerDelegate;->mListener:Landroid/hardware/input/InputManager$OnTabletModeChangedListener;
Landroid/hardware/input/InputManager$OnTabletModeChangedListenerDelegate;->MSG_TABLET_MODE_CHANGED:I
Landroid/hardware/input/InputManager$OnTabletModeChangedListenerDelegate;->sendTabletModeChanged(JZ)V
-Landroid/hardware/input/InputManager$SwitchState;
-Landroid/hardware/input/InputManager$TabletModeChangedListener;
-Landroid/hardware/input/InputManager$TabletModeChangedListener;-><init>()V
Landroid/hardware/input/InputManager$TabletModeChangedListener;->onTabletModeChanged(JZ)V
Landroid/hardware/input/InputManager;-><init>(Landroid/hardware/input/IInputManager;)V
Landroid/hardware/input/InputManager;->addKeyboardLayoutForInputDevice(Landroid/hardware/input/InputDeviceIdentifier;Ljava/lang/String;)V
@@ -25472,26 +23824,21 @@
Landroid/hardware/input/InputManager;->TAG:Ljava/lang/String;
Landroid/hardware/input/InputManager;->tryPointerSpeed(I)V
Landroid/hardware/input/InputManager;->unregisterOnTabletModeChangedListener(Landroid/hardware/input/InputManager$OnTabletModeChangedListener;)V
-Landroid/hardware/input/InputManagerInternal;
Landroid/hardware/input/InputManagerInternal;-><init>()V
Landroid/hardware/input/InputManagerInternal;->injectInputEvent(Landroid/view/InputEvent;II)Z
Landroid/hardware/input/InputManagerInternal;->setDisplayViewports(Landroid/hardware/display/DisplayViewport;Landroid/hardware/display/DisplayViewport;Ljava/util/List;)V
Landroid/hardware/input/InputManagerInternal;->setInteractive(Z)V
Landroid/hardware/input/InputManagerInternal;->setPulseGestureEnabled(Z)V
Landroid/hardware/input/InputManagerInternal;->toggleCapsLock(I)V
-Landroid/hardware/input/ITabletModeChangedListener$Stub$Proxy;
Landroid/hardware/input/ITabletModeChangedListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/hardware/input/ITabletModeChangedListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/hardware/input/ITabletModeChangedListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/hardware/input/ITabletModeChangedListener$Stub$Proxy;->onTabletModeChanged(JZ)V
-Landroid/hardware/input/ITabletModeChangedListener$Stub;
Landroid/hardware/input/ITabletModeChangedListener$Stub;-><init>()V
Landroid/hardware/input/ITabletModeChangedListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/input/ITabletModeChangedListener;
Landroid/hardware/input/ITabletModeChangedListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/hardware/input/ITabletModeChangedListener$Stub;->TRANSACTION_onTabletModeChanged:I
-Landroid/hardware/input/ITabletModeChangedListener;
Landroid/hardware/input/ITabletModeChangedListener;->onTabletModeChanged(JZ)V
-Landroid/hardware/input/KeyboardLayout;
Landroid/hardware/input/KeyboardLayout;-><init>(Landroid/os/Parcel;)V
Landroid/hardware/input/KeyboardLayout;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILandroid/os/LocaleList;II)V
Landroid/hardware/input/KeyboardLayout;->compareTo(Landroid/hardware/input/KeyboardLayout;)I
@@ -25509,7 +23856,6 @@
Landroid/hardware/input/KeyboardLayout;->mPriority:I
Landroid/hardware/input/KeyboardLayout;->mProductId:I
Landroid/hardware/input/KeyboardLayout;->mVendorId:I
-Landroid/hardware/input/TouchCalibration;
Landroid/hardware/input/TouchCalibration;-><init>()V
Landroid/hardware/input/TouchCalibration;-><init>(FFFFFF)V
Landroid/hardware/input/TouchCalibration;-><init>(Landroid/os/Parcel;)V
@@ -25522,22 +23868,18 @@
Landroid/hardware/input/TouchCalibration;->mYOffset:F
Landroid/hardware/input/TouchCalibration;->mYScale:F
Landroid/hardware/input/TouchCalibration;->mYXMix:F
-Landroid/hardware/ISerialManager$Stub$Proxy;
Landroid/hardware/ISerialManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/hardware/ISerialManager$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/hardware/ISerialManager$Stub$Proxy;->getSerialPorts()[Ljava/lang/String;
Landroid/hardware/ISerialManager$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/hardware/ISerialManager$Stub$Proxy;->openSerialPort(Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;
-Landroid/hardware/ISerialManager$Stub;
Landroid/hardware/ISerialManager$Stub;-><init>()V
Landroid/hardware/ISerialManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/ISerialManager;
Landroid/hardware/ISerialManager$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/hardware/ISerialManager$Stub;->TRANSACTION_getSerialPorts:I
Landroid/hardware/ISerialManager$Stub;->TRANSACTION_openSerialPort:I
-Landroid/hardware/ISerialManager;
Landroid/hardware/ISerialManager;->getSerialPorts()[Ljava/lang/String;
Landroid/hardware/ISerialManager;->openSerialPort(Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;
-Landroid/hardware/LegacySensorManager$LegacyListener;
Landroid/hardware/LegacySensorManager$LegacyListener;-><init>(Landroid/hardware/SensorListener;)V
Landroid/hardware/LegacySensorManager$LegacyListener;->getLegacySensorType(I)I
Landroid/hardware/LegacySensorManager$LegacyListener;->hasOrientationSensor(I)Z
@@ -25549,7 +23891,6 @@
Landroid/hardware/LegacySensorManager$LegacyListener;->mYawfilter:Landroid/hardware/LegacySensorManager$LmsFilter;
Landroid/hardware/LegacySensorManager$LegacyListener;->registerSensor(I)Z
Landroid/hardware/LegacySensorManager$LegacyListener;->unregisterSensor(I)Z
-Landroid/hardware/LegacySensorManager$LmsFilter;
Landroid/hardware/LegacySensorManager$LmsFilter;-><init>()V
Landroid/hardware/LegacySensorManager$LmsFilter;->COUNT:I
Landroid/hardware/LegacySensorManager$LmsFilter;->filter(JF)F
@@ -25559,7 +23900,6 @@
Landroid/hardware/LegacySensorManager$LmsFilter;->PREDICTION_RATIO:F
Landroid/hardware/LegacySensorManager$LmsFilter;->PREDICTION_TIME:F
Landroid/hardware/LegacySensorManager$LmsFilter;->SENSORS_RATE_MS:I
-Landroid/hardware/LegacySensorManager;
Landroid/hardware/LegacySensorManager;-><init>(Landroid/hardware/SensorManager;)V
Landroid/hardware/LegacySensorManager;->getRotation()I
Landroid/hardware/LegacySensorManager;->getSensors()I
@@ -25573,12 +23913,10 @@
Landroid/hardware/LegacySensorManager;->sWindowManager:Landroid/view/IWindowManager;
Landroid/hardware/LegacySensorManager;->unregisterLegacyListener(IILandroid/hardware/SensorListener;I)V
Landroid/hardware/LegacySensorManager;->unregisterListener(Landroid/hardware/SensorListener;I)V
-Landroid/hardware/location/ActivityChangedEvent;
Landroid/hardware/location/ActivityChangedEvent;-><init>([Landroid/hardware/location/ActivityRecognitionEvent;)V
Landroid/hardware/location/ActivityChangedEvent;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/hardware/location/ActivityChangedEvent;->getActivityRecognitionEvents()Ljava/lang/Iterable;
Landroid/hardware/location/ActivityChangedEvent;->mActivityRecognitionEvents:Ljava/util/List;
-Landroid/hardware/location/ActivityRecognitionEvent;
Landroid/hardware/location/ActivityRecognitionEvent;-><init>(Ljava/lang/String;IJ)V
Landroid/hardware/location/ActivityRecognitionEvent;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/hardware/location/ActivityRecognitionEvent;->getActivity()Ljava/lang/String;
@@ -25587,16 +23925,12 @@
Landroid/hardware/location/ActivityRecognitionEvent;->mActivity:Ljava/lang/String;
Landroid/hardware/location/ActivityRecognitionEvent;->mEventType:I
Landroid/hardware/location/ActivityRecognitionEvent;->mTimestampNs:J
-Landroid/hardware/location/ActivityRecognitionHardware$Event;
Landroid/hardware/location/ActivityRecognitionHardware$Event;-><init>()V
Landroid/hardware/location/ActivityRecognitionHardware$Event;->activity:I
Landroid/hardware/location/ActivityRecognitionHardware$Event;->timestamp:J
Landroid/hardware/location/ActivityRecognitionHardware$Event;->type:I
-Landroid/hardware/location/ActivityRecognitionHardware$SinkList;
-Landroid/hardware/location/ActivityRecognitionHardware$SinkList;-><init>()V
Landroid/hardware/location/ActivityRecognitionHardware$SinkList;->disableActivityEventIfEnabled(II)V
Landroid/hardware/location/ActivityRecognitionHardware$SinkList;->onCallbackDied(Landroid/hardware/location/IActivityRecognitionHardwareSink;)V
-Landroid/hardware/location/ActivityRecognitionHardware;
Landroid/hardware/location/ActivityRecognitionHardware;-><init>(Landroid/content/Context;)V
Landroid/hardware/location/ActivityRecognitionHardware;->checkPermissions()V
Landroid/hardware/location/ActivityRecognitionHardware;->DEBUG:Z
@@ -25661,7 +23995,6 @@
Landroid/hardware/location/ContextHubInfo;->mToolchain:Ljava/lang/String;
Landroid/hardware/location/ContextHubInfo;->mToolchainVersion:I
Landroid/hardware/location/ContextHubInfo;->mVendor:Ljava/lang/String;
-Landroid/hardware/location/ContextHubManager$ICallback;
Landroid/hardware/location/ContextHubManager$ICallback;->onMessageReceipt(IILandroid/hardware/location/ContextHubMessage;)V
Landroid/hardware/location/ContextHubManager;-><init>(Landroid/content/Context;Landroid/os/Looper;)V
Landroid/hardware/location/ContextHubManager;->createClientCallback(Landroid/hardware/location/ContextHubClient;Landroid/hardware/location/ContextHubClientCallback;Ljava/util/concurrent/Executor;)Landroid/hardware/location/IContextHubClientCallback;
@@ -25684,8 +24017,6 @@
Landroid/hardware/location/ContextHubTransaction$Response;-><init>(ILjava/lang/Object;)V
Landroid/hardware/location/ContextHubTransaction$Response;->mContents:Ljava/lang/Object;
Landroid/hardware/location/ContextHubTransaction$Response;->mResult:I
-Landroid/hardware/location/ContextHubTransaction$Result;
-Landroid/hardware/location/ContextHubTransaction$Type;
Landroid/hardware/location/ContextHubTransaction;-><init>(I)V
Landroid/hardware/location/ContextHubTransaction;->mDoneSignal:Ljava/util/concurrent/CountDownLatch;
Landroid/hardware/location/ContextHubTransaction;->mExecutor:Ljava/util/concurrent/Executor;
@@ -25695,16 +24026,12 @@
Landroid/hardware/location/ContextHubTransaction;->mTransactionType:I
Landroid/hardware/location/ContextHubTransaction;->setResponse(Landroid/hardware/location/ContextHubTransaction$Response;)V
Landroid/hardware/location/ContextHubTransaction;->TAG:Ljava/lang/String;
-Landroid/hardware/location/GeofenceHardware$GeofenceHardwareCallbackWrapper;
-Landroid/hardware/location/GeofenceHardware$GeofenceHardwareCallbackWrapper;-><init>(Landroid/hardware/location/GeofenceHardwareCallback;)V
Landroid/hardware/location/GeofenceHardware$GeofenceHardwareCallbackWrapper;->mCallback:Ljava/lang/ref/WeakReference;
Landroid/hardware/location/GeofenceHardware$GeofenceHardwareCallbackWrapper;->onGeofenceAdd(II)V
Landroid/hardware/location/GeofenceHardware$GeofenceHardwareCallbackWrapper;->onGeofencePause(II)V
Landroid/hardware/location/GeofenceHardware$GeofenceHardwareCallbackWrapper;->onGeofenceRemove(II)V
Landroid/hardware/location/GeofenceHardware$GeofenceHardwareCallbackWrapper;->onGeofenceResume(II)V
Landroid/hardware/location/GeofenceHardware$GeofenceHardwareCallbackWrapper;->onGeofenceTransition(IILandroid/location/Location;JI)V
-Landroid/hardware/location/GeofenceHardware$GeofenceHardwareMonitorCallbackWrapper;
-Landroid/hardware/location/GeofenceHardware$GeofenceHardwareMonitorCallbackWrapper;-><init>(Landroid/hardware/location/GeofenceHardwareMonitorCallback;)V
Landroid/hardware/location/GeofenceHardware$GeofenceHardwareMonitorCallbackWrapper;->mCallback:Ljava/lang/ref/WeakReference;
Landroid/hardware/location/GeofenceHardware$GeofenceHardwareMonitorCallbackWrapper;->onMonitoringSystemChange(Landroid/hardware/location/GeofenceHardwareMonitorEvent;)V
Landroid/hardware/location/GeofenceHardware;->getCallbackWrapper(Landroid/hardware/location/GeofenceHardwareCallback;)Landroid/hardware/location/GeofenceHardware$GeofenceHardwareCallbackWrapper;
@@ -25715,24 +24042,18 @@
Landroid/hardware/location/GeofenceHardware;->NUM_MONITORS:I
Landroid/hardware/location/GeofenceHardware;->removeCallback(Landroid/hardware/location/GeofenceHardwareCallback;)V
Landroid/hardware/location/GeofenceHardware;->removeMonitorCallback(Landroid/hardware/location/GeofenceHardwareMonitorCallback;)V
-Landroid/hardware/location/GeofenceHardwareImpl$GeofenceTransition;
-Landroid/hardware/location/GeofenceHardwareImpl$GeofenceTransition;-><init>(IIJLandroid/location/Location;II)V
Landroid/hardware/location/GeofenceHardwareImpl$GeofenceTransition;->mGeofenceId:I
Landroid/hardware/location/GeofenceHardwareImpl$GeofenceTransition;->mLocation:Landroid/location/Location;
Landroid/hardware/location/GeofenceHardwareImpl$GeofenceTransition;->mMonitoringType:I
Landroid/hardware/location/GeofenceHardwareImpl$GeofenceTransition;->mSourcesUsed:I
Landroid/hardware/location/GeofenceHardwareImpl$GeofenceTransition;->mTimestamp:J
Landroid/hardware/location/GeofenceHardwareImpl$GeofenceTransition;->mTransition:I
-Landroid/hardware/location/GeofenceHardwareImpl$Reaper;
-Landroid/hardware/location/GeofenceHardwareImpl$Reaper;-><init>(Landroid/hardware/location/IGeofenceHardwareCallback;I)V
-Landroid/hardware/location/GeofenceHardwareImpl$Reaper;-><init>(Landroid/hardware/location/IGeofenceHardwareMonitorCallback;I)V
Landroid/hardware/location/GeofenceHardwareImpl$Reaper;->binderEquals(Landroid/os/IInterface;Landroid/os/IInterface;)Z
Landroid/hardware/location/GeofenceHardwareImpl$Reaper;->callbackEquals(Landroid/hardware/location/IGeofenceHardwareCallback;)Z
Landroid/hardware/location/GeofenceHardwareImpl$Reaper;->mCallback:Landroid/hardware/location/IGeofenceHardwareCallback;
Landroid/hardware/location/GeofenceHardwareImpl$Reaper;->mMonitorCallback:Landroid/hardware/location/IGeofenceHardwareMonitorCallback;
Landroid/hardware/location/GeofenceHardwareImpl$Reaper;->mMonitoringType:I
Landroid/hardware/location/GeofenceHardwareImpl$Reaper;->unlinkToDeath()Z
-Landroid/hardware/location/GeofenceHardwareImpl;
Landroid/hardware/location/GeofenceHardwareImpl;-><init>(Landroid/content/Context;)V
Landroid/hardware/location/GeofenceHardwareImpl;->acquireWakeLock()V
Landroid/hardware/location/GeofenceHardwareImpl;->addCircularFence(ILandroid/hardware/location/GeofenceHardwareRequestParcelable;Landroid/hardware/location/IGeofenceHardwareCallback;)Z
@@ -25818,7 +24139,6 @@
Landroid/hardware/location/GeofenceHardwareRequest;->mType:I
Landroid/hardware/location/GeofenceHardwareRequest;->mUnknownTimer:I
Landroid/hardware/location/GeofenceHardwareRequest;->setCircularGeofence(DDD)V
-Landroid/hardware/location/GeofenceHardwareRequestParcelable;
Landroid/hardware/location/GeofenceHardwareRequestParcelable;-><init>(ILandroid/hardware/location/GeofenceHardwareRequest;)V
Landroid/hardware/location/GeofenceHardwareRequestParcelable;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/hardware/location/GeofenceHardwareRequestParcelable;->getId()I
@@ -25833,13 +24153,11 @@
Landroid/hardware/location/GeofenceHardwareRequestParcelable;->getUnknownTimer()I
Landroid/hardware/location/GeofenceHardwareRequestParcelable;->mId:I
Landroid/hardware/location/GeofenceHardwareRequestParcelable;->mRequest:Landroid/hardware/location/GeofenceHardwareRequest;
-Landroid/hardware/location/GeofenceHardwareService;
Landroid/hardware/location/GeofenceHardwareService;-><init>()V
Landroid/hardware/location/GeofenceHardwareService;->checkPermission(III)V
Landroid/hardware/location/GeofenceHardwareService;->mBinder:Landroid/os/IBinder;
Landroid/hardware/location/GeofenceHardwareService;->mContext:Landroid/content/Context;
Landroid/hardware/location/GeofenceHardwareService;->mGeofenceHardwareImpl:Landroid/hardware/location/GeofenceHardwareImpl;
-Landroid/hardware/location/IActivityRecognitionHardware$Stub$Proxy;
Landroid/hardware/location/IActivityRecognitionHardware$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/hardware/location/IActivityRecognitionHardware$Stub$Proxy;->disableActivityEvent(Ljava/lang/String;I)Z
Landroid/hardware/location/IActivityRecognitionHardware$Stub$Proxy;->enableActivityEvent(Ljava/lang/String;IJ)Z
@@ -25850,7 +24168,6 @@
Landroid/hardware/location/IActivityRecognitionHardware$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/hardware/location/IActivityRecognitionHardware$Stub$Proxy;->registerSink(Landroid/hardware/location/IActivityRecognitionHardwareSink;)Z
Landroid/hardware/location/IActivityRecognitionHardware$Stub$Proxy;->unregisterSink(Landroid/hardware/location/IActivityRecognitionHardwareSink;)Z
-Landroid/hardware/location/IActivityRecognitionHardware$Stub;
Landroid/hardware/location/IActivityRecognitionHardware$Stub;-><init>()V
Landroid/hardware/location/IActivityRecognitionHardware$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/location/IActivityRecognitionHardware;
Landroid/hardware/location/IActivityRecognitionHardware$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -25861,7 +24178,6 @@
Landroid/hardware/location/IActivityRecognitionHardware$Stub;->TRANSACTION_isActivitySupported:I
Landroid/hardware/location/IActivityRecognitionHardware$Stub;->TRANSACTION_registerSink:I
Landroid/hardware/location/IActivityRecognitionHardware$Stub;->TRANSACTION_unregisterSink:I
-Landroid/hardware/location/IActivityRecognitionHardware;
Landroid/hardware/location/IActivityRecognitionHardware;->disableActivityEvent(Ljava/lang/String;I)Z
Landroid/hardware/location/IActivityRecognitionHardware;->enableActivityEvent(Ljava/lang/String;IJ)Z
Landroid/hardware/location/IActivityRecognitionHardware;->flush()Z
@@ -25869,68 +24185,52 @@
Landroid/hardware/location/IActivityRecognitionHardware;->isActivitySupported(Ljava/lang/String;)Z
Landroid/hardware/location/IActivityRecognitionHardware;->registerSink(Landroid/hardware/location/IActivityRecognitionHardwareSink;)Z
Landroid/hardware/location/IActivityRecognitionHardware;->unregisterSink(Landroid/hardware/location/IActivityRecognitionHardwareSink;)Z
-Landroid/hardware/location/IActivityRecognitionHardwareClient$Stub$Proxy;
Landroid/hardware/location/IActivityRecognitionHardwareClient$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/hardware/location/IActivityRecognitionHardwareClient$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/hardware/location/IActivityRecognitionHardwareClient$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/hardware/location/IActivityRecognitionHardwareClient$Stub$Proxy;->onAvailabilityChanged(ZLandroid/hardware/location/IActivityRecognitionHardware;)V
-Landroid/hardware/location/IActivityRecognitionHardwareClient$Stub;
Landroid/hardware/location/IActivityRecognitionHardwareClient$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/location/IActivityRecognitionHardwareClient;
Landroid/hardware/location/IActivityRecognitionHardwareClient$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/hardware/location/IActivityRecognitionHardwareClient$Stub;->TRANSACTION_onAvailabilityChanged:I
-Landroid/hardware/location/IActivityRecognitionHardwareClient;
-Landroid/hardware/location/IActivityRecognitionHardwareSink$Stub$Proxy;
Landroid/hardware/location/IActivityRecognitionHardwareSink$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/hardware/location/IActivityRecognitionHardwareSink$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/hardware/location/IActivityRecognitionHardwareSink$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/hardware/location/IActivityRecognitionHardwareSink$Stub$Proxy;->onActivityChanged(Landroid/hardware/location/ActivityChangedEvent;)V
-Landroid/hardware/location/IActivityRecognitionHardwareSink$Stub;
Landroid/hardware/location/IActivityRecognitionHardwareSink$Stub;-><init>()V
Landroid/hardware/location/IActivityRecognitionHardwareSink$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/location/IActivityRecognitionHardwareSink;
Landroid/hardware/location/IActivityRecognitionHardwareSink$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/hardware/location/IActivityRecognitionHardwareSink$Stub;->TRANSACTION_onActivityChanged:I
-Landroid/hardware/location/IActivityRecognitionHardwareSink;
Landroid/hardware/location/IActivityRecognitionHardwareSink;->onActivityChanged(Landroid/hardware/location/ActivityChangedEvent;)V
-Landroid/hardware/location/IActivityRecognitionHardwareWatcher$Stub$Proxy;
Landroid/hardware/location/IActivityRecognitionHardwareWatcher$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/hardware/location/IActivityRecognitionHardwareWatcher$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/hardware/location/IActivityRecognitionHardwareWatcher$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/hardware/location/IActivityRecognitionHardwareWatcher$Stub$Proxy;->onInstanceChanged(Landroid/hardware/location/IActivityRecognitionHardware;)V
-Landroid/hardware/location/IActivityRecognitionHardwareWatcher$Stub;
Landroid/hardware/location/IActivityRecognitionHardwareWatcher$Stub;-><init>()V
Landroid/hardware/location/IActivityRecognitionHardwareWatcher$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/location/IActivityRecognitionHardwareWatcher;
Landroid/hardware/location/IActivityRecognitionHardwareWatcher$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/hardware/location/IActivityRecognitionHardwareWatcher$Stub;->TRANSACTION_onInstanceChanged:I
-Landroid/hardware/location/IActivityRecognitionHardwareWatcher;
Landroid/hardware/location/IActivityRecognitionHardwareWatcher;->onInstanceChanged(Landroid/hardware/location/IActivityRecognitionHardware;)V
-Landroid/hardware/location/IContextHubCallback$Stub$Proxy;
Landroid/hardware/location/IContextHubCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/hardware/location/IContextHubCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/hardware/location/IContextHubCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/hardware/location/IContextHubCallback$Stub$Proxy;->onMessageReceipt(IILandroid/hardware/location/ContextHubMessage;)V
-Landroid/hardware/location/IContextHubCallback$Stub;
Landroid/hardware/location/IContextHubCallback$Stub;-><init>()V
Landroid/hardware/location/IContextHubCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/location/IContextHubCallback;
Landroid/hardware/location/IContextHubCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/hardware/location/IContextHubCallback$Stub;->TRANSACTION_onMessageReceipt:I
-Landroid/hardware/location/IContextHubCallback;
Landroid/hardware/location/IContextHubCallback;->onMessageReceipt(IILandroid/hardware/location/ContextHubMessage;)V
-Landroid/hardware/location/IContextHubClient$Stub$Proxy;
Landroid/hardware/location/IContextHubClient$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/hardware/location/IContextHubClient$Stub$Proxy;->close()V
Landroid/hardware/location/IContextHubClient$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/hardware/location/IContextHubClient$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/hardware/location/IContextHubClient$Stub$Proxy;->sendMessageToNanoApp(Landroid/hardware/location/NanoAppMessage;)I
-Landroid/hardware/location/IContextHubClient$Stub;
Landroid/hardware/location/IContextHubClient$Stub;-><init>()V
Landroid/hardware/location/IContextHubClient$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/location/IContextHubClient;
Landroid/hardware/location/IContextHubClient$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/hardware/location/IContextHubClient$Stub;->TRANSACTION_close:I
Landroid/hardware/location/IContextHubClient$Stub;->TRANSACTION_sendMessageToNanoApp:I
-Landroid/hardware/location/IContextHubClient;
Landroid/hardware/location/IContextHubClient;->close()V
Landroid/hardware/location/IContextHubClient;->sendMessageToNanoApp(Landroid/hardware/location/NanoAppMessage;)I
-Landroid/hardware/location/IContextHubClientCallback$Stub$Proxy;
Landroid/hardware/location/IContextHubClientCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/hardware/location/IContextHubClientCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/hardware/location/IContextHubClientCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -25941,7 +24241,6 @@
Landroid/hardware/location/IContextHubClientCallback$Stub$Proxy;->onNanoAppEnabled(J)V
Landroid/hardware/location/IContextHubClientCallback$Stub$Proxy;->onNanoAppLoaded(J)V
Landroid/hardware/location/IContextHubClientCallback$Stub$Proxy;->onNanoAppUnloaded(J)V
-Landroid/hardware/location/IContextHubClientCallback$Stub;
Landroid/hardware/location/IContextHubClientCallback$Stub;-><init>()V
Landroid/hardware/location/IContextHubClientCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/location/IContextHubClientCallback;
Landroid/hardware/location/IContextHubClientCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -25952,7 +24251,6 @@
Landroid/hardware/location/IContextHubClientCallback$Stub;->TRANSACTION_onNanoAppEnabled:I
Landroid/hardware/location/IContextHubClientCallback$Stub;->TRANSACTION_onNanoAppLoaded:I
Landroid/hardware/location/IContextHubClientCallback$Stub;->TRANSACTION_onNanoAppUnloaded:I
-Landroid/hardware/location/IContextHubClientCallback;
Landroid/hardware/location/IContextHubClientCallback;->onHubReset()V
Landroid/hardware/location/IContextHubClientCallback;->onMessageFromNanoApp(Landroid/hardware/location/NanoAppMessage;)V
Landroid/hardware/location/IContextHubClientCallback;->onNanoAppAborted(JI)V
@@ -25960,7 +24258,6 @@
Landroid/hardware/location/IContextHubClientCallback;->onNanoAppEnabled(J)V
Landroid/hardware/location/IContextHubClientCallback;->onNanoAppLoaded(J)V
Landroid/hardware/location/IContextHubClientCallback;->onNanoAppUnloaded(J)V
-Landroid/hardware/location/IContextHubService$Stub$Proxy;
Landroid/hardware/location/IContextHubService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/hardware/location/IContextHubService$Stub$Proxy;->createClient(Landroid/hardware/location/IContextHubClientCallback;I)Landroid/hardware/location/IContextHubClient;
Landroid/hardware/location/IContextHubService$Stub$Proxy;->disableNanoApp(ILandroid/hardware/location/IContextHubTransactionCallback;J)V
@@ -25979,7 +24276,6 @@
Landroid/hardware/location/IContextHubService$Stub$Proxy;->sendMessage(IILandroid/hardware/location/ContextHubMessage;)I
Landroid/hardware/location/IContextHubService$Stub$Proxy;->unloadNanoApp(I)I
Landroid/hardware/location/IContextHubService$Stub$Proxy;->unloadNanoAppFromHub(ILandroid/hardware/location/IContextHubTransactionCallback;J)V
-Landroid/hardware/location/IContextHubService$Stub;
Landroid/hardware/location/IContextHubService$Stub;-><init>()V
Landroid/hardware/location/IContextHubService$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/hardware/location/IContextHubService$Stub;->TRANSACTION_createClient:I
@@ -25997,7 +24293,6 @@
Landroid/hardware/location/IContextHubService$Stub;->TRANSACTION_sendMessage:I
Landroid/hardware/location/IContextHubService$Stub;->TRANSACTION_unloadNanoApp:I
Landroid/hardware/location/IContextHubService$Stub;->TRANSACTION_unloadNanoAppFromHub:I
-Landroid/hardware/location/IContextHubService;
Landroid/hardware/location/IContextHubService;->createClient(Landroid/hardware/location/IContextHubClientCallback;I)Landroid/hardware/location/IContextHubClient;
Landroid/hardware/location/IContextHubService;->disableNanoApp(ILandroid/hardware/location/IContextHubTransactionCallback;J)V
Landroid/hardware/location/IContextHubService;->enableNanoApp(ILandroid/hardware/location/IContextHubTransactionCallback;J)V
@@ -26013,22 +24308,18 @@
Landroid/hardware/location/IContextHubService;->sendMessage(IILandroid/hardware/location/ContextHubMessage;)I
Landroid/hardware/location/IContextHubService;->unloadNanoApp(I)I
Landroid/hardware/location/IContextHubService;->unloadNanoAppFromHub(ILandroid/hardware/location/IContextHubTransactionCallback;J)V
-Landroid/hardware/location/IContextHubTransactionCallback$Stub$Proxy;
Landroid/hardware/location/IContextHubTransactionCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/hardware/location/IContextHubTransactionCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/hardware/location/IContextHubTransactionCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/hardware/location/IContextHubTransactionCallback$Stub$Proxy;->onQueryResponse(ILjava/util/List;)V
Landroid/hardware/location/IContextHubTransactionCallback$Stub$Proxy;->onTransactionComplete(I)V
-Landroid/hardware/location/IContextHubTransactionCallback$Stub;
Landroid/hardware/location/IContextHubTransactionCallback$Stub;-><init>()V
Landroid/hardware/location/IContextHubTransactionCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/location/IContextHubTransactionCallback;
Landroid/hardware/location/IContextHubTransactionCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/hardware/location/IContextHubTransactionCallback$Stub;->TRANSACTION_onQueryResponse:I
Landroid/hardware/location/IContextHubTransactionCallback$Stub;->TRANSACTION_onTransactionComplete:I
-Landroid/hardware/location/IContextHubTransactionCallback;
Landroid/hardware/location/IContextHubTransactionCallback;->onQueryResponse(ILjava/util/List;)V
Landroid/hardware/location/IContextHubTransactionCallback;->onTransactionComplete(I)V
-Landroid/hardware/location/IGeofenceHardware$Stub$Proxy;
Landroid/hardware/location/IGeofenceHardware$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/hardware/location/IGeofenceHardware$Stub$Proxy;->addCircularFence(ILandroid/hardware/location/GeofenceHardwareRequestParcelable;Landroid/hardware/location/IGeofenceHardwareCallback;)Z
Landroid/hardware/location/IGeofenceHardware$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
@@ -26042,7 +24333,6 @@
Landroid/hardware/location/IGeofenceHardware$Stub$Proxy;->setFusedGeofenceHardware(Landroid/location/IFusedGeofenceHardware;)V
Landroid/hardware/location/IGeofenceHardware$Stub$Proxy;->setGpsGeofenceHardware(Landroid/location/IGpsGeofenceHardware;)V
Landroid/hardware/location/IGeofenceHardware$Stub$Proxy;->unregisterForMonitorStateChangeCallback(ILandroid/hardware/location/IGeofenceHardwareMonitorCallback;)Z
-Landroid/hardware/location/IGeofenceHardware$Stub;
Landroid/hardware/location/IGeofenceHardware$Stub;-><init>()V
Landroid/hardware/location/IGeofenceHardware$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/location/IGeofenceHardware;
Landroid/hardware/location/IGeofenceHardware$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -26056,7 +24346,6 @@
Landroid/hardware/location/IGeofenceHardware$Stub;->TRANSACTION_setFusedGeofenceHardware:I
Landroid/hardware/location/IGeofenceHardware$Stub;->TRANSACTION_setGpsGeofenceHardware:I
Landroid/hardware/location/IGeofenceHardware$Stub;->TRANSACTION_unregisterForMonitorStateChangeCallback:I
-Landroid/hardware/location/IGeofenceHardware;
Landroid/hardware/location/IGeofenceHardware;->addCircularFence(ILandroid/hardware/location/GeofenceHardwareRequestParcelable;Landroid/hardware/location/IGeofenceHardwareCallback;)Z
Landroid/hardware/location/IGeofenceHardware;->getMonitoringTypes()[I
Landroid/hardware/location/IGeofenceHardware;->getStatusOfMonitoringType(I)I
@@ -26067,7 +24356,6 @@
Landroid/hardware/location/IGeofenceHardware;->setFusedGeofenceHardware(Landroid/location/IFusedGeofenceHardware;)V
Landroid/hardware/location/IGeofenceHardware;->setGpsGeofenceHardware(Landroid/location/IGpsGeofenceHardware;)V
Landroid/hardware/location/IGeofenceHardware;->unregisterForMonitorStateChangeCallback(ILandroid/hardware/location/IGeofenceHardwareMonitorCallback;)Z
-Landroid/hardware/location/IGeofenceHardwareCallback$Stub$Proxy;
Landroid/hardware/location/IGeofenceHardwareCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/hardware/location/IGeofenceHardwareCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/hardware/location/IGeofenceHardwareCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -26076,7 +24364,6 @@
Landroid/hardware/location/IGeofenceHardwareCallback$Stub$Proxy;->onGeofenceRemove(II)V
Landroid/hardware/location/IGeofenceHardwareCallback$Stub$Proxy;->onGeofenceResume(II)V
Landroid/hardware/location/IGeofenceHardwareCallback$Stub$Proxy;->onGeofenceTransition(IILandroid/location/Location;JI)V
-Landroid/hardware/location/IGeofenceHardwareCallback$Stub;
Landroid/hardware/location/IGeofenceHardwareCallback$Stub;-><init>()V
Landroid/hardware/location/IGeofenceHardwareCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/location/IGeofenceHardwareCallback;
Landroid/hardware/location/IGeofenceHardwareCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -26085,23 +24372,19 @@
Landroid/hardware/location/IGeofenceHardwareCallback$Stub;->TRANSACTION_onGeofenceRemove:I
Landroid/hardware/location/IGeofenceHardwareCallback$Stub;->TRANSACTION_onGeofenceResume:I
Landroid/hardware/location/IGeofenceHardwareCallback$Stub;->TRANSACTION_onGeofenceTransition:I
-Landroid/hardware/location/IGeofenceHardwareCallback;
Landroid/hardware/location/IGeofenceHardwareCallback;->onGeofenceAdd(II)V
Landroid/hardware/location/IGeofenceHardwareCallback;->onGeofencePause(II)V
Landroid/hardware/location/IGeofenceHardwareCallback;->onGeofenceRemove(II)V
Landroid/hardware/location/IGeofenceHardwareCallback;->onGeofenceResume(II)V
Landroid/hardware/location/IGeofenceHardwareCallback;->onGeofenceTransition(IILandroid/location/Location;JI)V
-Landroid/hardware/location/IGeofenceHardwareMonitorCallback$Stub$Proxy;
Landroid/hardware/location/IGeofenceHardwareMonitorCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/hardware/location/IGeofenceHardwareMonitorCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/hardware/location/IGeofenceHardwareMonitorCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/hardware/location/IGeofenceHardwareMonitorCallback$Stub$Proxy;->onMonitoringSystemChange(Landroid/hardware/location/GeofenceHardwareMonitorEvent;)V
-Landroid/hardware/location/IGeofenceHardwareMonitorCallback$Stub;
Landroid/hardware/location/IGeofenceHardwareMonitorCallback$Stub;-><init>()V
Landroid/hardware/location/IGeofenceHardwareMonitorCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/location/IGeofenceHardwareMonitorCallback;
Landroid/hardware/location/IGeofenceHardwareMonitorCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/hardware/location/IGeofenceHardwareMonitorCallback$Stub;->TRANSACTION_onMonitoringSystemChange:I
-Landroid/hardware/location/IGeofenceHardwareMonitorCallback;
Landroid/hardware/location/IGeofenceHardwareMonitorCallback;->onMonitoringSystemChange(Landroid/hardware/location/GeofenceHardwareMonitorEvent;)V
Landroid/hardware/location/MemoryRegion;->mIsExecutable:Z
Landroid/hardware/location/MemoryRegion;->mIsReadable:Z
@@ -26173,55 +24456,44 @@
Landroid/hardware/location/NanoAppState;->mIsEnabled:Z
Landroid/hardware/location/NanoAppState;->mNanoAppId:J
Landroid/hardware/location/NanoAppState;->mNanoAppVersion:I
-Landroid/hardware/radio/Announcement$Type;
Landroid/hardware/radio/Announcement;-><init>(Landroid/hardware/radio/ProgramSelector;ILjava/util/Map;)V
Landroid/hardware/radio/Announcement;-><init>(Landroid/os/Parcel;)V
Landroid/hardware/radio/Announcement;->mSelector:Landroid/hardware/radio/ProgramSelector;
Landroid/hardware/radio/Announcement;->mType:I
Landroid/hardware/radio/Announcement;->mVendorInfo:Ljava/util/Map;
-Landroid/hardware/radio/IAnnouncementListener$Stub$Proxy;
Landroid/hardware/radio/IAnnouncementListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/hardware/radio/IAnnouncementListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/hardware/radio/IAnnouncementListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/hardware/radio/IAnnouncementListener$Stub$Proxy;->onListUpdated(Ljava/util/List;)V
-Landroid/hardware/radio/IAnnouncementListener$Stub;
Landroid/hardware/radio/IAnnouncementListener$Stub;-><init>()V
Landroid/hardware/radio/IAnnouncementListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/radio/IAnnouncementListener;
Landroid/hardware/radio/IAnnouncementListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/hardware/radio/IAnnouncementListener$Stub;->TRANSACTION_onListUpdated:I
-Landroid/hardware/radio/IAnnouncementListener;
Landroid/hardware/radio/IAnnouncementListener;->onListUpdated(Ljava/util/List;)V
-Landroid/hardware/radio/ICloseHandle$Stub$Proxy;
Landroid/hardware/radio/ICloseHandle$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/hardware/radio/ICloseHandle$Stub$Proxy;->close()V
Landroid/hardware/radio/ICloseHandle$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/hardware/radio/ICloseHandle$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/hardware/radio/ICloseHandle$Stub;
Landroid/hardware/radio/ICloseHandle$Stub;-><init>()V
Landroid/hardware/radio/ICloseHandle$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/radio/ICloseHandle;
Landroid/hardware/radio/ICloseHandle$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/hardware/radio/ICloseHandle$Stub;->TRANSACTION_close:I
-Landroid/hardware/radio/ICloseHandle;
Landroid/hardware/radio/ICloseHandle;->close()V
-Landroid/hardware/radio/IRadioService$Stub$Proxy;
Landroid/hardware/radio/IRadioService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/hardware/radio/IRadioService$Stub$Proxy;->addAnnouncementListener([ILandroid/hardware/radio/IAnnouncementListener;)Landroid/hardware/radio/ICloseHandle;
Landroid/hardware/radio/IRadioService$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/hardware/radio/IRadioService$Stub$Proxy;->listModules()Ljava/util/List;
Landroid/hardware/radio/IRadioService$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/hardware/radio/IRadioService$Stub$Proxy;->openTuner(ILandroid/hardware/radio/RadioManager$BandConfig;ZLandroid/hardware/radio/ITunerCallback;)Landroid/hardware/radio/ITuner;
-Landroid/hardware/radio/IRadioService$Stub;
Landroid/hardware/radio/IRadioService$Stub;-><init>()V
Landroid/hardware/radio/IRadioService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/radio/IRadioService;
Landroid/hardware/radio/IRadioService$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/hardware/radio/IRadioService$Stub;->TRANSACTION_addAnnouncementListener:I
Landroid/hardware/radio/IRadioService$Stub;->TRANSACTION_listModules:I
Landroid/hardware/radio/IRadioService$Stub;->TRANSACTION_openTuner:I
-Landroid/hardware/radio/IRadioService;
Landroid/hardware/radio/IRadioService;->addAnnouncementListener([ILandroid/hardware/radio/IAnnouncementListener;)Landroid/hardware/radio/ICloseHandle;
Landroid/hardware/radio/IRadioService;->listModules()Ljava/util/List;
Landroid/hardware/radio/IRadioService;->openTuner(ILandroid/hardware/radio/RadioManager$BandConfig;ZLandroid/hardware/radio/ITunerCallback;)Landroid/hardware/radio/ITuner;
-Landroid/hardware/radio/ITuner$Stub$Proxy;
Landroid/hardware/radio/ITuner$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/hardware/radio/ITuner$Stub$Proxy;->cancel()V
Landroid/hardware/radio/ITuner$Stub$Proxy;->cancelAnnouncement()V
@@ -26245,7 +24517,6 @@
Landroid/hardware/radio/ITuner$Stub$Proxy;->step(ZZ)V
Landroid/hardware/radio/ITuner$Stub$Proxy;->stopProgramListUpdates()V
Landroid/hardware/radio/ITuner$Stub$Proxy;->tune(Landroid/hardware/radio/ProgramSelector;)V
-Landroid/hardware/radio/ITuner$Stub;
Landroid/hardware/radio/ITuner$Stub;-><init>()V
Landroid/hardware/radio/ITuner$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/radio/ITuner;
Landroid/hardware/radio/ITuner$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -26269,7 +24540,6 @@
Landroid/hardware/radio/ITuner$Stub;->TRANSACTION_step:I
Landroid/hardware/radio/ITuner$Stub;->TRANSACTION_stopProgramListUpdates:I
Landroid/hardware/radio/ITuner$Stub;->TRANSACTION_tune:I
-Landroid/hardware/radio/ITuner;
Landroid/hardware/radio/ITuner;->cancel()V
Landroid/hardware/radio/ITuner;->cancelAnnouncement()V
Landroid/hardware/radio/ITuner;->close()V
@@ -26290,7 +24560,6 @@
Landroid/hardware/radio/ITuner;->step(ZZ)V
Landroid/hardware/radio/ITuner;->stopProgramListUpdates()V
Landroid/hardware/radio/ITuner;->tune(Landroid/hardware/radio/ProgramSelector;)V
-Landroid/hardware/radio/ITunerCallback$Stub$Proxy;
Landroid/hardware/radio/ITunerCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/hardware/radio/ITunerCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/hardware/radio/ITunerCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -26306,7 +24575,6 @@
Landroid/hardware/radio/ITunerCallback$Stub$Proxy;->onProgramListUpdated(Landroid/hardware/radio/ProgramList$Chunk;)V
Landroid/hardware/radio/ITunerCallback$Stub$Proxy;->onTrafficAnnouncement(Z)V
Landroid/hardware/radio/ITunerCallback$Stub$Proxy;->onTuneFailed(ILandroid/hardware/radio/ProgramSelector;)V
-Landroid/hardware/radio/ITunerCallback$Stub;
Landroid/hardware/radio/ITunerCallback$Stub;-><init>()V
Landroid/hardware/radio/ITunerCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/radio/ITunerCallback;
Landroid/hardware/radio/ITunerCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -26322,7 +24590,6 @@
Landroid/hardware/radio/ITunerCallback$Stub;->TRANSACTION_onProgramListUpdated:I
Landroid/hardware/radio/ITunerCallback$Stub;->TRANSACTION_onTrafficAnnouncement:I
Landroid/hardware/radio/ITunerCallback$Stub;->TRANSACTION_onTuneFailed:I
-Landroid/hardware/radio/ITunerCallback;
Landroid/hardware/radio/ITunerCallback;->onAntennaState(Z)V
Landroid/hardware/radio/ITunerCallback;->onBackgroundScanAvailabilityChange(Z)V
Landroid/hardware/radio/ITunerCallback;->onBackgroundScanComplete()V
@@ -26335,7 +24602,6 @@
Landroid/hardware/radio/ITunerCallback;->onProgramListUpdated(Landroid/hardware/radio/ProgramList$Chunk;)V
Landroid/hardware/radio/ITunerCallback;->onTrafficAnnouncement(Z)V
Landroid/hardware/radio/ITunerCallback;->onTuneFailed(ILandroid/hardware/radio/ProgramSelector;)V
-Landroid/hardware/radio/ProgramList$Chunk;
Landroid/hardware/radio/ProgramList$Chunk;-><init>(Landroid/os/Parcel;)V
Landroid/hardware/radio/ProgramList$Chunk;-><init>(ZZLjava/util/Set;Ljava/util/Set;)V
Landroid/hardware/radio/ProgramList$Chunk;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -26356,7 +24622,6 @@
Landroid/hardware/radio/ProgramList$Filter;->mIdentifierTypes:Ljava/util/Set;
Landroid/hardware/radio/ProgramList$Filter;->mIncludeCategories:Z
Landroid/hardware/radio/ProgramList$Filter;->mVendorFilter:Ljava/util/Map;
-Landroid/hardware/radio/ProgramList$OnCloseListener;
Landroid/hardware/radio/ProgramList$OnCloseListener;->onClose()V
Landroid/hardware/radio/ProgramList;-><init>()V
Landroid/hardware/radio/ProgramList;->apply(Landroid/hardware/radio/ProgramList$Chunk;)V
@@ -26401,7 +24666,6 @@
Landroid/hardware/radio/RadioManager$BandDescriptor;->mSpacing:I
Landroid/hardware/radio/RadioManager$BandDescriptor;->mType:I
Landroid/hardware/radio/RadioManager$BandDescriptor;->mUpperLimit:I
-Landroid/hardware/radio/RadioManager$ConfigFlag;
Landroid/hardware/radio/RadioManager$FmBandConfig$Builder;->mAf:Z
Landroid/hardware/radio/RadioManager$FmBandConfig$Builder;->mDescriptor:Landroid/hardware/radio/RadioManager$BandDescriptor;
Landroid/hardware/radio/RadioManager$FmBandConfig$Builder;->mEa:Z
@@ -26548,7 +24812,6 @@
Landroid/hardware/Sensor;->TYPE_GLANCE_GESTURE:I
Landroid/hardware/Sensor;->TYPE_TILT_DETECTOR:I
Landroid/hardware/Sensor;->TYPE_WAKE_GESTURE:I
-Landroid/hardware/SensorAdditionalInfo$AdditionalInfoType;
Landroid/hardware/SensorAdditionalInfo;-><init>(Landroid/hardware/Sensor;II[I[F)V
Landroid/hardware/SensorAdditionalInfo;->createCustomInfo(Landroid/hardware/Sensor;I[F)Landroid/hardware/SensorAdditionalInfo;
Landroid/hardware/SensorAdditionalInfo;->createLocalGeomagneticField(FFF)Landroid/hardware/SensorAdditionalInfo;
@@ -26559,8 +24822,6 @@
Landroid/hardware/SensorAdditionalInfo;->TYPE_LOCAL_GEOMAGNETIC_FIELD:I
Landroid/hardware/SensorAdditionalInfo;->TYPE_LOCAL_GRAVITY:I
Landroid/hardware/SensorAdditionalInfo;->TYPE_MAGNETIC_FIELD_CALIBRATION:I
-Landroid/hardware/SensorDirectChannel$MemoryType;
-Landroid/hardware/SensorDirectChannel$RateLevel;
Landroid/hardware/SensorDirectChannel;-><init>(Landroid/hardware/SensorManager;IIJ)V
Landroid/hardware/SensorDirectChannel;->encodeData(Landroid/os/MemoryFile;)[J
Landroid/hardware/SensorDirectChannel;->getNativeHandle()I
@@ -26594,12 +24855,10 @@
Landroid/hardware/SensorManager;->TAG:Ljava/lang/String;
Landroid/hardware/SensorManager;->unregisterDynamicSensorCallbackImpl(Landroid/hardware/SensorManager$DynamicSensorCallback;)V
Landroid/hardware/SensorManager;->unregisterListenerImpl(Landroid/hardware/SensorEventListener;Landroid/hardware/Sensor;)V
-Landroid/hardware/SerialManager;
Landroid/hardware/SerialManager;-><init>(Landroid/content/Context;Landroid/hardware/ISerialManager;)V
Landroid/hardware/SerialManager;->mContext:Landroid/content/Context;
Landroid/hardware/SerialManager;->mService:Landroid/hardware/ISerialManager;
Landroid/hardware/SerialManager;->TAG:Ljava/lang/String;
-Landroid/hardware/SerialPort;
Landroid/hardware/SerialPort;-><init>(Ljava/lang/String;)V
Landroid/hardware/SerialPort;->getName()Ljava/lang/String;
Landroid/hardware/SerialPort;->mFileDescriptor:Landroid/os/ParcelFileDescriptor;
@@ -26615,7 +24874,6 @@
Landroid/hardware/SerialPort;->read(Ljava/nio/ByteBuffer;)I
Landroid/hardware/SerialPort;->sendBreak()V
Landroid/hardware/SerialPort;->TAG:Ljava/lang/String;
-Landroid/hardware/soundtrigger/IRecognitionStatusCallback$Stub$Proxy;
Landroid/hardware/soundtrigger/IRecognitionStatusCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/hardware/soundtrigger/IRecognitionStatusCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/hardware/soundtrigger/IRecognitionStatusCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -26624,7 +24882,6 @@
Landroid/hardware/soundtrigger/IRecognitionStatusCallback$Stub$Proxy;->onKeyphraseDetected(Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionEvent;)V
Landroid/hardware/soundtrigger/IRecognitionStatusCallback$Stub$Proxy;->onRecognitionPaused()V
Landroid/hardware/soundtrigger/IRecognitionStatusCallback$Stub$Proxy;->onRecognitionResumed()V
-Landroid/hardware/soundtrigger/IRecognitionStatusCallback$Stub;
Landroid/hardware/soundtrigger/IRecognitionStatusCallback$Stub;-><init>()V
Landroid/hardware/soundtrigger/IRecognitionStatusCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/soundtrigger/IRecognitionStatusCallback;
Landroid/hardware/soundtrigger/IRecognitionStatusCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -26633,13 +24890,11 @@
Landroid/hardware/soundtrigger/IRecognitionStatusCallback$Stub;->TRANSACTION_onKeyphraseDetected:I
Landroid/hardware/soundtrigger/IRecognitionStatusCallback$Stub;->TRANSACTION_onRecognitionPaused:I
Landroid/hardware/soundtrigger/IRecognitionStatusCallback$Stub;->TRANSACTION_onRecognitionResumed:I
-Landroid/hardware/soundtrigger/IRecognitionStatusCallback;
Landroid/hardware/soundtrigger/IRecognitionStatusCallback;->onError(I)V
Landroid/hardware/soundtrigger/IRecognitionStatusCallback;->onGenericSoundTriggerDetected(Landroid/hardware/soundtrigger/SoundTrigger$GenericRecognitionEvent;)V
Landroid/hardware/soundtrigger/IRecognitionStatusCallback;->onKeyphraseDetected(Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionEvent;)V
Landroid/hardware/soundtrigger/IRecognitionStatusCallback;->onRecognitionPaused()V
Landroid/hardware/soundtrigger/IRecognitionStatusCallback;->onRecognitionResumed()V
-Landroid/hardware/soundtrigger/KeyphraseEnrollmentInfo;
Landroid/hardware/soundtrigger/KeyphraseEnrollmentInfo;-><init>(Landroid/content/pm/PackageManager;)V
Landroid/hardware/soundtrigger/KeyphraseEnrollmentInfo;->ACTION_MANAGE_VOICE_KEYPHRASES:Ljava/lang/String;
Landroid/hardware/soundtrigger/KeyphraseEnrollmentInfo;->EXTRA_VOICE_KEYPHRASE_ACTION:Ljava/lang/String;
@@ -26656,7 +24911,6 @@
Landroid/hardware/soundtrigger/KeyphraseEnrollmentInfo;->mParseError:Ljava/lang/String;
Landroid/hardware/soundtrigger/KeyphraseEnrollmentInfo;->TAG:Ljava/lang/String;
Landroid/hardware/soundtrigger/KeyphraseEnrollmentInfo;->VOICE_KEYPHRASE_META_DATA:Ljava/lang/String;
-Landroid/hardware/soundtrigger/KeyphraseMetadata;
Landroid/hardware/soundtrigger/KeyphraseMetadata;-><init>(ILjava/lang/String;Landroid/util/ArraySet;I)V
Landroid/hardware/soundtrigger/KeyphraseMetadata;->id:I
Landroid/hardware/soundtrigger/KeyphraseMetadata;->keyphrase:Ljava/lang/String;
@@ -26664,28 +24918,20 @@
Landroid/hardware/soundtrigger/KeyphraseMetadata;->supportedLocales:Landroid/util/ArraySet;
Landroid/hardware/soundtrigger/KeyphraseMetadata;->supportsLocale(Ljava/util/Locale;)Z
Landroid/hardware/soundtrigger/KeyphraseMetadata;->supportsPhrase(Ljava/lang/String;)Z
-Landroid/hardware/soundtrigger/SoundTrigger$ConfidenceLevel;
Landroid/hardware/soundtrigger/SoundTrigger$ConfidenceLevel;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/hardware/soundtrigger/SoundTrigger$ConfidenceLevel;->fromParcel(Landroid/os/Parcel;)Landroid/hardware/soundtrigger/SoundTrigger$ConfidenceLevel;
-Landroid/hardware/soundtrigger/SoundTrigger$GenericRecognitionEvent;
Landroid/hardware/soundtrigger/SoundTrigger$GenericRecognitionEvent;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/hardware/soundtrigger/SoundTrigger$GenericRecognitionEvent;->fromParcelForGeneric(Landroid/os/Parcel;)Landroid/hardware/soundtrigger/SoundTrigger$GenericRecognitionEvent;
-Landroid/hardware/soundtrigger/SoundTrigger$GenericSoundModel;
Landroid/hardware/soundtrigger/SoundTrigger$GenericSoundModel;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/hardware/soundtrigger/SoundTrigger$GenericSoundModel;->fromParcel(Landroid/os/Parcel;)Landroid/hardware/soundtrigger/SoundTrigger$GenericSoundModel;
-Landroid/hardware/soundtrigger/SoundTrigger$Keyphrase;
Landroid/hardware/soundtrigger/SoundTrigger$Keyphrase;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/hardware/soundtrigger/SoundTrigger$Keyphrase;->fromParcel(Landroid/os/Parcel;)Landroid/hardware/soundtrigger/SoundTrigger$Keyphrase;
-Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionEvent;
Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionEvent;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionEvent;->fromParcelForKeyphrase(Landroid/os/Parcel;)Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionEvent;
-Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionExtra;
Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionExtra;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionExtra;->fromParcel(Landroid/os/Parcel;)Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionExtra;
-Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseSoundModel;
Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseSoundModel;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseSoundModel;->fromParcel(Landroid/os/Parcel;)Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseSoundModel;
-Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;
Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->description:Ljava/lang/String;
Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->fromParcel(Landroid/os/Parcel;)Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;
@@ -26699,7 +24945,6 @@
Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->supportsCaptureTransition:Z
Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->supportsConcurrentCapture:Z
Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->version:I
-Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig;
Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig;->allowMultipleTriggers:Z
Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig;->fromParcel(Landroid/os/Parcel;)Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig;
@@ -26711,19 +24956,16 @@
Landroid/hardware/soundtrigger/SoundTrigger$RecognitionEvent;->fromParcel(Landroid/os/Parcel;)Landroid/hardware/soundtrigger/SoundTrigger$RecognitionEvent;
Landroid/hardware/soundtrigger/SoundTrigger$RecognitionEvent;->triggerInData:Z
Landroid/hardware/soundtrigger/SoundTrigger$RecognitionEvent;->writeToParcel(Landroid/os/Parcel;I)V
-Landroid/hardware/soundtrigger/SoundTrigger$SoundModel;
Landroid/hardware/soundtrigger/SoundTrigger$SoundModel;-><init>(Ljava/util/UUID;Ljava/util/UUID;I[B)V
Landroid/hardware/soundtrigger/SoundTrigger$SoundModel;->type:I
Landroid/hardware/soundtrigger/SoundTrigger$SoundModel;->TYPE_GENERIC_SOUND:I
Landroid/hardware/soundtrigger/SoundTrigger$SoundModel;->TYPE_KEYPHRASE:I
Landroid/hardware/soundtrigger/SoundTrigger$SoundModel;->TYPE_UNKNOWN:I
-Landroid/hardware/soundtrigger/SoundTrigger$SoundModelEvent;
Landroid/hardware/soundtrigger/SoundTrigger$SoundModelEvent;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/hardware/soundtrigger/SoundTrigger$SoundModelEvent;->data:[B
Landroid/hardware/soundtrigger/SoundTrigger$SoundModelEvent;->fromParcel(Landroid/os/Parcel;)Landroid/hardware/soundtrigger/SoundTrigger$SoundModelEvent;
Landroid/hardware/soundtrigger/SoundTrigger$SoundModelEvent;->soundModelHandle:I
Landroid/hardware/soundtrigger/SoundTrigger$SoundModelEvent;->status:I
-Landroid/hardware/soundtrigger/SoundTrigger$StatusListener;
Landroid/hardware/soundtrigger/SoundTrigger$StatusListener;->onRecognition(Landroid/hardware/soundtrigger/SoundTrigger$RecognitionEvent;)V
Landroid/hardware/soundtrigger/SoundTrigger$StatusListener;->onServiceDied()V
Landroid/hardware/soundtrigger/SoundTrigger$StatusListener;->onServiceStateChange(I)V
@@ -26744,11 +24986,8 @@
Landroid/hardware/soundtrigger/SoundTrigger;->STATUS_INVALID_OPERATION:I
Landroid/hardware/soundtrigger/SoundTrigger;->STATUS_NO_INIT:I
Landroid/hardware/soundtrigger/SoundTrigger;->STATUS_PERMISSION_DENIED:I
-Landroid/hardware/soundtrigger/SoundTriggerModule$NativeEventHandlerDelegate;
-Landroid/hardware/soundtrigger/SoundTriggerModule$NativeEventHandlerDelegate;-><init>(Landroid/hardware/soundtrigger/SoundTrigger$StatusListener;Landroid/os/Handler;)V
Landroid/hardware/soundtrigger/SoundTriggerModule$NativeEventHandlerDelegate;->handler()Landroid/os/Handler;
Landroid/hardware/soundtrigger/SoundTriggerModule$NativeEventHandlerDelegate;->mHandler:Landroid/os/Handler;
-Landroid/hardware/soundtrigger/SoundTriggerModule;
Landroid/hardware/soundtrigger/SoundTriggerModule;-><init>(ILandroid/hardware/soundtrigger/SoundTrigger$StatusListener;Landroid/os/Handler;)V
Landroid/hardware/soundtrigger/SoundTriggerModule;->EVENT_RECOGNITION:I
Landroid/hardware/soundtrigger/SoundTriggerModule;->EVENT_SERVICE_DIED:I
@@ -26757,7 +24996,6 @@
Landroid/hardware/soundtrigger/SoundTriggerModule;->mEventHandlerDelegate:Landroid/hardware/soundtrigger/SoundTriggerModule$NativeEventHandlerDelegate;
Landroid/hardware/soundtrigger/SoundTriggerModule;->native_finalize()V
Landroid/hardware/soundtrigger/SoundTriggerModule;->native_setup(Ljava/lang/Object;)V
-Landroid/hardware/SystemSensorManager$BaseEventQueue;
Landroid/hardware/SystemSensorManager$BaseEventQueue;-><init>(Landroid/os/Looper;Landroid/hardware/SystemSensorManager;ILjava/lang/String;)V
Landroid/hardware/SystemSensorManager$BaseEventQueue;->addSensor(Landroid/hardware/Sensor;II)Z
Landroid/hardware/SystemSensorManager$BaseEventQueue;->addSensorEvent(Landroid/hardware/Sensor;)V
@@ -26784,14 +25022,11 @@
Landroid/hardware/SystemSensorManager$BaseEventQueue;->removeAllSensors()Z
Landroid/hardware/SystemSensorManager$BaseEventQueue;->removeSensor(Landroid/hardware/Sensor;Z)Z
Landroid/hardware/SystemSensorManager$BaseEventQueue;->removeSensorEvent(Landroid/hardware/Sensor;)V
-Landroid/hardware/SystemSensorManager$InjectEventQueue;
-Landroid/hardware/SystemSensorManager$InjectEventQueue;-><init>(Landroid/os/Looper;Landroid/hardware/SystemSensorManager;Ljava/lang/String;)V
Landroid/hardware/SystemSensorManager$InjectEventQueue;->addSensorEvent(Landroid/hardware/Sensor;)V
Landroid/hardware/SystemSensorManager$InjectEventQueue;->dispatchFlushCompleteEvent(I)V
Landroid/hardware/SystemSensorManager$InjectEventQueue;->dispatchSensorEvent(I[FIJ)V
Landroid/hardware/SystemSensorManager$InjectEventQueue;->injectSensorData(I[FIJ)I
Landroid/hardware/SystemSensorManager$InjectEventQueue;->removeSensorEvent(Landroid/hardware/Sensor;)V
-Landroid/hardware/SystemSensorManager$SensorEventQueue;
Landroid/hardware/SystemSensorManager$SensorEventQueue;-><init>(Landroid/hardware/SensorEventListener;Landroid/os/Looper;Landroid/hardware/SystemSensorManager;Ljava/lang/String;)V
Landroid/hardware/SystemSensorManager$SensorEventQueue;->addSensorEvent(Landroid/hardware/Sensor;)V
Landroid/hardware/SystemSensorManager$SensorEventQueue;->dispatchAdditionalInfoEvent(III[F[I)V
@@ -26800,7 +25035,6 @@
Landroid/hardware/SystemSensorManager$SensorEventQueue;->mListener:Landroid/hardware/SensorEventListener;
Landroid/hardware/SystemSensorManager$SensorEventQueue;->mSensorsEvents:Landroid/util/SparseArray;
Landroid/hardware/SystemSensorManager$SensorEventQueue;->removeSensorEvent(Landroid/hardware/Sensor;)V
-Landroid/hardware/SystemSensorManager$TriggerEventQueue;
Landroid/hardware/SystemSensorManager$TriggerEventQueue;-><init>(Landroid/hardware/TriggerEventListener;Landroid/os/Looper;Landroid/hardware/SystemSensorManager;Ljava/lang/String;)V
Landroid/hardware/SystemSensorManager$TriggerEventQueue;->addSensorEvent(Landroid/hardware/Sensor;)V
Landroid/hardware/SystemSensorManager$TriggerEventQueue;->dispatchFlushCompleteEvent(I)V
@@ -26808,7 +25042,6 @@
Landroid/hardware/SystemSensorManager$TriggerEventQueue;->mListener:Landroid/hardware/TriggerEventListener;
Landroid/hardware/SystemSensorManager$TriggerEventQueue;->mTriggerEvents:Landroid/util/SparseArray;
Landroid/hardware/SystemSensorManager$TriggerEventQueue;->removeSensorEvent(Landroid/hardware/Sensor;)V
-Landroid/hardware/SystemSensorManager;
Landroid/hardware/SystemSensorManager;-><init>(Landroid/content/Context;Landroid/os/Looper;)V
Landroid/hardware/SystemSensorManager;->cancelTriggerSensorImpl(Landroid/hardware/TriggerEventListener;Landroid/hardware/Sensor;Z)Z
Landroid/hardware/SystemSensorManager;->cleanupSensorConnection(Landroid/hardware/Sensor;)V
@@ -26858,7 +25091,6 @@
Landroid/hardware/SystemSensorManager;->unregisterListenerImpl(Landroid/hardware/SensorEventListener;Landroid/hardware/Sensor;)V
Landroid/hardware/SystemSensorManager;->updateDynamicSensorList()V
Landroid/hardware/TriggerEvent;-><init>(I)V
-Landroid/hardware/usb/AccessoryFilter;
Landroid/hardware/usb/AccessoryFilter;-><init>(Landroid/hardware/usb/UsbAccessory;)V
Landroid/hardware/usb/AccessoryFilter;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
Landroid/hardware/usb/AccessoryFilter;->contains(Landroid/hardware/usb/AccessoryFilter;)Z
@@ -26869,7 +25101,6 @@
Landroid/hardware/usb/AccessoryFilter;->mVersion:Ljava/lang/String;
Landroid/hardware/usb/AccessoryFilter;->read(Lorg/xmlpull/v1/XmlPullParser;)Landroid/hardware/usb/AccessoryFilter;
Landroid/hardware/usb/AccessoryFilter;->write(Lorg/xmlpull/v1/XmlSerializer;)V
-Landroid/hardware/usb/DeviceFilter;
Landroid/hardware/usb/DeviceFilter;-><init>(IIIIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
Landroid/hardware/usb/DeviceFilter;-><init>(Landroid/hardware/usb/UsbDevice;)V
Landroid/hardware/usb/DeviceFilter;->contains(Landroid/hardware/usb/DeviceFilter;)Z
@@ -26887,7 +25118,6 @@
Landroid/hardware/usb/DeviceFilter;->read(Lorg/xmlpull/v1/XmlPullParser;)Landroid/hardware/usb/DeviceFilter;
Landroid/hardware/usb/DeviceFilter;->TAG:Ljava/lang/String;
Landroid/hardware/usb/DeviceFilter;->write(Lorg/xmlpull/v1/XmlSerializer;)V
-Landroid/hardware/usb/IUsbManager$Stub$Proxy;
Landroid/hardware/usb/IUsbManager$Stub$Proxy;->allowUsbDebugging(ZLjava/lang/String;)V
Landroid/hardware/usb/IUsbManager$Stub$Proxy;->clearDefaults(Ljava/lang/String;I)V
Landroid/hardware/usb/IUsbManager$Stub$Proxy;->clearUsbDebuggingKeys()V
@@ -26918,7 +25148,6 @@
Landroid/hardware/usb/IUsbManager$Stub$Proxy;->setPortRoles(Ljava/lang/String;II)V
Landroid/hardware/usb/IUsbManager$Stub$Proxy;->setScreenUnlockedFunctions(J)V
Landroid/hardware/usb/IUsbManager$Stub$Proxy;->setUsbDeviceConnectionHandler(Landroid/content/ComponentName;)V
-Landroid/hardware/usb/IUsbManager$Stub;
Landroid/hardware/usb/IUsbManager$Stub;-><init>()V
Landroid/hardware/usb/IUsbManager$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/hardware/usb/IUsbManager$Stub;->TRANSACTION_allowUsbDebugging:I
@@ -26949,7 +25178,6 @@
Landroid/hardware/usb/IUsbManager$Stub;->TRANSACTION_setPortRoles:I
Landroid/hardware/usb/IUsbManager$Stub;->TRANSACTION_setScreenUnlockedFunctions:I
Landroid/hardware/usb/IUsbManager$Stub;->TRANSACTION_setUsbDeviceConnectionHandler:I
-Landroid/hardware/usb/IUsbManager;
Landroid/hardware/usb/IUsbManager;->allowUsbDebugging(ZLjava/lang/String;)V
Landroid/hardware/usb/IUsbManager;->clearDefaults(Ljava/lang/String;I)V
Landroid/hardware/usb/IUsbManager;->clearUsbDebuggingKeys()V
@@ -27093,7 +25321,6 @@
Landroid/hardware/usb/UsbManager;->USB_FUNCTION_PTP:Ljava/lang/String;
Landroid/hardware/usb/UsbManager;->USB_FUNCTION_RNDIS:Ljava/lang/String;
Landroid/hardware/usb/UsbManager;->USB_HOST_CONNECTED:Ljava/lang/String;
-Landroid/hardware/usb/UsbPort;
Landroid/hardware/usb/UsbPort;-><init>(Ljava/lang/String;I)V
Landroid/hardware/usb/UsbPort;->checkDataRole(I)V
Landroid/hardware/usb/UsbPort;->checkMode(I)V
@@ -27124,7 +25351,6 @@
Landroid/hardware/usb/UsbPort;->POWER_ROLE_SINK:I
Landroid/hardware/usb/UsbPort;->POWER_ROLE_SOURCE:I
Landroid/hardware/usb/UsbPort;->roleCombinationsToString(I)Ljava/lang/String;
-Landroid/hardware/usb/UsbPortStatus;
Landroid/hardware/usb/UsbPortStatus;-><init>(IIII)V
Landroid/hardware/usb/UsbPortStatus;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/hardware/usb/UsbPortStatus;->mCurrentDataRole:I
@@ -27159,25 +25385,17 @@
Landroid/icu/impl/BMPSet;->listLength:I
Landroid/icu/impl/BMPSet;->set32x64Bits([III)V
Landroid/icu/impl/BMPSet;->table7FF:[I
-Landroid/icu/impl/CacheValue$NullValue;
Landroid/icu/impl/CacheValue$NullValue;-><init>()V
-Landroid/icu/impl/CacheValue$SoftValue;
Landroid/icu/impl/CacheValue$SoftValue;-><init>(Ljava/lang/Object;)V
Landroid/icu/impl/CacheValue$SoftValue;->ref:Ljava/lang/ref/Reference;
-Landroid/icu/impl/CacheValue$Strength;-><init>()V
-Landroid/icu/impl/CacheValue$StrongValue;
Landroid/icu/impl/CacheValue$StrongValue;-><init>(Ljava/lang/Object;)V
Landroid/icu/impl/CacheValue$StrongValue;->value:Ljava/lang/Object;
Landroid/icu/impl/CacheValue;->NULL_VALUE:Landroid/icu/impl/CacheValue;
Landroid/icu/impl/CacheValue;->strength:Landroid/icu/impl/CacheValue$Strength;
-Landroid/icu/impl/CalendarAstronomer$AngleFunc;
Landroid/icu/impl/CalendarAstronomer$AngleFunc;->eval()D
-Landroid/icu/impl/CalendarAstronomer$CoordFunc;
Landroid/icu/impl/CalendarAstronomer$CoordFunc;->eval()Landroid/icu/impl/CalendarAstronomer$Equatorial;
-Landroid/icu/impl/CalendarAstronomer$MoonAge;
Landroid/icu/impl/CalendarAstronomer$MoonAge;-><init>(D)V
Landroid/icu/impl/CalendarAstronomer$MoonAge;->value:D
-Landroid/icu/impl/CalendarAstronomer$SolarLongitude;
Landroid/icu/impl/CalendarAstronomer$SolarLongitude;-><init>(D)V
Landroid/icu/impl/CalendarAstronomer$SolarLongitude;->value:D
Landroid/icu/impl/CalendarAstronomer;->clearCache()V
@@ -27240,9 +25458,6 @@
Landroid/icu/impl/CalendarCache;->values:[J
Landroid/icu/impl/CharTrie;->m_data_:[C
Landroid/icu/impl/CharTrie;->m_initialValue_:C
-Landroid/icu/impl/CurrencyData$CurrencySpacingInfo$SpacingPattern;-><init>()V
-Landroid/icu/impl/CurrencyData$CurrencySpacingInfo$SpacingPattern;-><init>(I)V
-Landroid/icu/impl/CurrencyData$CurrencySpacingInfo$SpacingType;-><init>()V
Landroid/icu/impl/CurrencyData$CurrencySpacingInfo;->DEFAULT_CTX_MATCH:Ljava/lang/String;
Landroid/icu/impl/CurrencyData$CurrencySpacingInfo;->DEFAULT_CUR_MATCH:Ljava/lang/String;
Landroid/icu/impl/CurrencyData$CurrencySpacingInfo;->DEFAULT_INSERT:Ljava/lang/String;
@@ -27251,8 +25466,6 @@
Landroid/icu/impl/CurrencyData$DefaultInfo;->fallback:Z
Landroid/icu/impl/CurrencyData$DefaultInfo;->FALLBACK_INSTANCE:Landroid/icu/impl/CurrencyData$CurrencyDisplayInfo;
Landroid/icu/impl/CurrencyData$DefaultInfo;->NO_FALLBACK_INSTANCE:Landroid/icu/impl/CurrencyData$CurrencyDisplayInfo;
-Landroid/icu/impl/DayPeriodRules$CutoffType;
-Landroid/icu/impl/DayPeriodRules$CutoffType;-><init>()V
Landroid/icu/impl/DayPeriodRules$CutoffType;->AFTER:Landroid/icu/impl/DayPeriodRules$CutoffType;
Landroid/icu/impl/DayPeriodRules$CutoffType;->AT:Landroid/icu/impl/DayPeriodRules$CutoffType;
Landroid/icu/impl/DayPeriodRules$CutoffType;->BEFORE:Landroid/icu/impl/DayPeriodRules$CutoffType;
@@ -27260,17 +25473,13 @@
Landroid/icu/impl/DayPeriodRules$CutoffType;->fromStringOrNull(Ljava/lang/CharSequence;)Landroid/icu/impl/DayPeriodRules$CutoffType;
Landroid/icu/impl/DayPeriodRules$CutoffType;->valueOf(Ljava/lang/String;)Landroid/icu/impl/DayPeriodRules$CutoffType;
Landroid/icu/impl/DayPeriodRules$CutoffType;->values()[Landroid/icu/impl/DayPeriodRules$CutoffType;
-Landroid/icu/impl/DayPeriodRules$DayPeriod;-><init>()V
Landroid/icu/impl/DayPeriodRules$DayPeriod;->fromStringOrNull(Ljava/lang/CharSequence;)Landroid/icu/impl/DayPeriodRules$DayPeriod;
-Landroid/icu/impl/DayPeriodRules$DayPeriodRulesCountSink;
Landroid/icu/impl/DayPeriodRules$DayPeriodRulesCountSink;-><init>(Landroid/icu/impl/DayPeriodRules$DayPeriodRulesData;)V
Landroid/icu/impl/DayPeriodRules$DayPeriodRulesCountSink;->data:Landroid/icu/impl/DayPeriodRules$DayPeriodRulesData;
-Landroid/icu/impl/DayPeriodRules$DayPeriodRulesData;
Landroid/icu/impl/DayPeriodRules$DayPeriodRulesData;-><init>()V
Landroid/icu/impl/DayPeriodRules$DayPeriodRulesData;->localesToRuleSetNumMap:Ljava/util/Map;
Landroid/icu/impl/DayPeriodRules$DayPeriodRulesData;->maxRuleSetNum:I
Landroid/icu/impl/DayPeriodRules$DayPeriodRulesData;->rules:[Landroid/icu/impl/DayPeriodRules;
-Landroid/icu/impl/DayPeriodRules$DayPeriodRulesDataSink;
Landroid/icu/impl/DayPeriodRules$DayPeriodRulesDataSink;-><init>(Landroid/icu/impl/DayPeriodRules$DayPeriodRulesData;)V
Landroid/icu/impl/DayPeriodRules$DayPeriodRulesDataSink;->addCutoff(Landroid/icu/impl/DayPeriodRules$CutoffType;Ljava/lang/String;)V
Landroid/icu/impl/DayPeriodRules$DayPeriodRulesDataSink;->cutoffs:[I
@@ -27291,14 +25500,11 @@
Landroid/icu/impl/DayPeriodRules;->hasNoon:Z
Landroid/icu/impl/DayPeriodRules;->loadData()Landroid/icu/impl/DayPeriodRules$DayPeriodRulesData;
Landroid/icu/impl/DayPeriodRules;->parseSetNum(Ljava/lang/String;)I
-Landroid/icu/impl/ICUBinary$DataFile;
Landroid/icu/impl/ICUBinary$DataFile;-><init>(Ljava/lang/String;)V
Landroid/icu/impl/ICUBinary$DataFile;->addBaseNamesInFolder(Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;)V
Landroid/icu/impl/ICUBinary$DataFile;->getData(Ljava/lang/String;)Ljava/nio/ByteBuffer;
Landroid/icu/impl/ICUBinary$DataFile;->itemPath:Ljava/lang/String;
-Landroid/icu/impl/ICUBinary$DatPackageReader$IsAcceptable;
Landroid/icu/impl/ICUBinary$DatPackageReader$IsAcceptable;-><init>()V
-Landroid/icu/impl/ICUBinary$DatPackageReader;
Landroid/icu/impl/ICUBinary$DatPackageReader;-><init>()V
Landroid/icu/impl/ICUBinary$DatPackageReader;->addBaseName(Ljava/nio/ByteBuffer;ILjava/lang/String;Ljava/lang/String;Ljava/lang/StringBuilder;Ljava/util/Set;)Z
Landroid/icu/impl/ICUBinary$DatPackageReader;->addBaseNamesInFolder(Ljava/nio/ByteBuffer;Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;)V
@@ -27310,12 +25516,10 @@
Landroid/icu/impl/ICUBinary$DatPackageReader;->IS_ACCEPTABLE:Landroid/icu/impl/ICUBinary$DatPackageReader$IsAcceptable;
Landroid/icu/impl/ICUBinary$DatPackageReader;->startsWithPackageName(Ljava/nio/ByteBuffer;I)Z
Landroid/icu/impl/ICUBinary$DatPackageReader;->validate(Ljava/nio/ByteBuffer;)Z
-Landroid/icu/impl/ICUBinary$PackageDataFile;
Landroid/icu/impl/ICUBinary$PackageDataFile;-><init>(Ljava/lang/String;Ljava/nio/ByteBuffer;)V
Landroid/icu/impl/ICUBinary$PackageDataFile;->addBaseNamesInFolder(Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;)V
Landroid/icu/impl/ICUBinary$PackageDataFile;->getData(Ljava/lang/String;)Ljava/nio/ByteBuffer;
Landroid/icu/impl/ICUBinary$PackageDataFile;->pkgBytes:Ljava/nio/ByteBuffer;
-Landroid/icu/impl/ICUBinary$SingleDataFile;
Landroid/icu/impl/ICUBinary$SingleDataFile;-><init>(Ljava/lang/String;Ljava/io/File;)V
Landroid/icu/impl/ICUBinary$SingleDataFile;->addBaseNamesInFolder(Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;)V
Landroid/icu/impl/ICUBinary$SingleDataFile;->getData(Ljava/lang/String;)Ljava/nio/ByteBuffer;
@@ -27334,7 +25538,6 @@
Landroid/icu/impl/ICUBinary;->MAGIC2:B
Landroid/icu/impl/ICUBinary;->MAGIC_NUMBER_AUTHENTICATION_FAILED_:Ljava/lang/String;
Landroid/icu/impl/ICUBinary;->mapFile(Ljava/io/File;)Ljava/nio/ByteBuffer;
-Landroid/icu/impl/ICUResourceBundle$AvailEntry;
Landroid/icu/impl/ICUResourceBundle$AvailEntry;-><init>(Ljava/lang/String;Ljava/lang/ClassLoader;)V
Landroid/icu/impl/ICUResourceBundle$AvailEntry;->fullNameSet:Ljava/util/Set;
Landroid/icu/impl/ICUResourceBundle$AvailEntry;->getFullLocaleNameSet()Ljava/util/Set;
@@ -27346,10 +25549,8 @@
Landroid/icu/impl/ICUResourceBundle$AvailEntry;->nameSet:Ljava/util/Set;
Landroid/icu/impl/ICUResourceBundle$AvailEntry;->prefix:Ljava/lang/String;
Landroid/icu/impl/ICUResourceBundle$AvailEntry;->ulocales:[Landroid/icu/util/ULocale;
-Landroid/icu/impl/ICUResourceBundle$Loader;
Landroid/icu/impl/ICUResourceBundle$Loader;-><init>()V
Landroid/icu/impl/ICUResourceBundle$Loader;->load()Landroid/icu/impl/ICUResourceBundle;
-Landroid/icu/impl/ICUResourceBundle$OpenType;-><init>()V
Landroid/icu/impl/ICUResourceBundle$WholeBundle;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Landroid/icu/impl/ICUResourceBundleReader;)V
Landroid/icu/impl/ICUResourceBundle$WholeBundle;->baseName:Ljava/lang/String;
Landroid/icu/impl/ICUResourceBundle$WholeBundle;->loader:Ljava/lang/ClassLoader;
@@ -27390,15 +25591,11 @@
Landroid/icu/impl/ICUResourceBundle;->RES_PATH_SEP_CHAR:C
Landroid/icu/impl/ICUResourceBundle;->RES_PATH_SEP_STR:Ljava/lang/String;
Landroid/icu/impl/ICUResourceBundle;->wholeBundle:Landroid/icu/impl/ICUResourceBundle$WholeBundle;
-Landroid/icu/impl/ICUResourceBundleReader$Array16;
Landroid/icu/impl/ICUResourceBundleReader$Array16;-><init>(Landroid/icu/impl/ICUResourceBundleReader;I)V
Landroid/icu/impl/ICUResourceBundleReader$Array16;->getContainerResource(Landroid/icu/impl/ICUResourceBundleReader;I)I
-Landroid/icu/impl/ICUResourceBundleReader$Array32;
Landroid/icu/impl/ICUResourceBundleReader$Array32;-><init>(Landroid/icu/impl/ICUResourceBundleReader;I)V
Landroid/icu/impl/ICUResourceBundleReader$Array32;->getContainerResource(Landroid/icu/impl/ICUResourceBundleReader;I)I
-Landroid/icu/impl/ICUResourceBundleReader$Array;
Landroid/icu/impl/ICUResourceBundleReader$Array;-><init>()V
-Landroid/icu/impl/ICUResourceBundleReader$Container;
Landroid/icu/impl/ICUResourceBundleReader$Container;-><init>()V
Landroid/icu/impl/ICUResourceBundleReader$Container;->getContainer16Resource(Landroid/icu/impl/ICUResourceBundleReader;I)I
Landroid/icu/impl/ICUResourceBundleReader$Container;->getContainer32Resource(Landroid/icu/impl/ICUResourceBundleReader;I)I
@@ -27407,22 +25604,17 @@
Landroid/icu/impl/ICUResourceBundleReader$Container;->getSize()I
Landroid/icu/impl/ICUResourceBundleReader$Container;->itemsOffset:I
Landroid/icu/impl/ICUResourceBundleReader$Container;->size:I
-Landroid/icu/impl/ICUResourceBundleReader$IsAcceptable;
Landroid/icu/impl/ICUResourceBundleReader$IsAcceptable;-><init>()V
-Landroid/icu/impl/ICUResourceBundleReader$ReaderCache;
Landroid/icu/impl/ICUResourceBundleReader$ReaderCache;-><init>()V
Landroid/icu/impl/ICUResourceBundleReader$ReaderCache;->createInstance(Landroid/icu/impl/ICUResourceBundleReader$ReaderCacheKey;Ljava/lang/ClassLoader;)Landroid/icu/impl/ICUResourceBundleReader;
Landroid/icu/impl/ICUResourceBundleReader$ReaderCache;->createInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-Landroid/icu/impl/ICUResourceBundleReader$ReaderCacheKey;
Landroid/icu/impl/ICUResourceBundleReader$ReaderCacheKey;-><init>(Ljava/lang/String;Ljava/lang/String;)V
Landroid/icu/impl/ICUResourceBundleReader$ReaderCacheKey;->baseName:Ljava/lang/String;
Landroid/icu/impl/ICUResourceBundleReader$ReaderCacheKey;->localeID:Ljava/lang/String;
-Landroid/icu/impl/ICUResourceBundleReader$ReaderValue;
Landroid/icu/impl/ICUResourceBundleReader$ReaderValue;-><init>()V
Landroid/icu/impl/ICUResourceBundleReader$ReaderValue;->getStringArray(Landroid/icu/impl/ICUResourceBundleReader$Array;)[Ljava/lang/String;
Landroid/icu/impl/ICUResourceBundleReader$ReaderValue;->reader:Landroid/icu/impl/ICUResourceBundleReader;
Landroid/icu/impl/ICUResourceBundleReader$ReaderValue;->res:I
-Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;
Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;-><init>(II)V
Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;->get(I)Ljava/lang/Object;
Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;->keys:[I
@@ -27431,7 +25623,6 @@
Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;->putIfAbsent(ILjava/lang/Object;I)Ljava/lang/Object;
Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;->shift:I
Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;->values:[Ljava/lang/Object;
-Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;
Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;-><init>(I)V
Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;->findSimple(I)I
Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;->get(I)Ljava/lang/Object;
@@ -27448,16 +25639,12 @@
Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;->SIMPLE_LENGTH:I
Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;->storeDirectly(I)Z
Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;->values:[Ljava/lang/Object;
-Landroid/icu/impl/ICUResourceBundleReader$Table1632;
Landroid/icu/impl/ICUResourceBundleReader$Table1632;-><init>(Landroid/icu/impl/ICUResourceBundleReader;I)V
Landroid/icu/impl/ICUResourceBundleReader$Table1632;->getContainerResource(Landroid/icu/impl/ICUResourceBundleReader;I)I
-Landroid/icu/impl/ICUResourceBundleReader$Table16;
Landroid/icu/impl/ICUResourceBundleReader$Table16;-><init>(Landroid/icu/impl/ICUResourceBundleReader;I)V
Landroid/icu/impl/ICUResourceBundleReader$Table16;->getContainerResource(Landroid/icu/impl/ICUResourceBundleReader;I)I
-Landroid/icu/impl/ICUResourceBundleReader$Table32;
Landroid/icu/impl/ICUResourceBundleReader$Table32;-><init>(Landroid/icu/impl/ICUResourceBundleReader;I)V
Landroid/icu/impl/ICUResourceBundleReader$Table32;->getContainerResource(Landroid/icu/impl/ICUResourceBundleReader;I)I
-Landroid/icu/impl/ICUResourceBundleReader$Table;
Landroid/icu/impl/ICUResourceBundleReader$Table;-><init>()V
Landroid/icu/impl/ICUResourceBundleReader$Table;->findTableItem(Landroid/icu/impl/ICUResourceBundleReader;Ljava/lang/CharSequence;)I
Landroid/icu/impl/ICUResourceBundleReader$Table;->getKey(Landroid/icu/impl/ICUResourceBundleReader;I)Ljava/lang/String;
@@ -27547,13 +25734,11 @@
Landroid/icu/impl/ICUResourceBundleReader;->usesPoolBundle:Z
Landroid/icu/impl/locale/AsciiUtil$CaseInsensitiveKey;->_hash:I
Landroid/icu/impl/locale/AsciiUtil$CaseInsensitiveKey;->_key:Ljava/lang/String;
-Landroid/icu/impl/locale/BaseLocale$Cache;
Landroid/icu/impl/locale/BaseLocale$Cache;-><init>()V
Landroid/icu/impl/locale/BaseLocale$Cache;->createObject(Landroid/icu/impl/locale/BaseLocale$Key;)Landroid/icu/impl/locale/BaseLocale;
Landroid/icu/impl/locale/BaseLocale$Cache;->createObject(Ljava/lang/Object;)Ljava/lang/Object;
Landroid/icu/impl/locale/BaseLocale$Cache;->normalizeKey(Landroid/icu/impl/locale/BaseLocale$Key;)Landroid/icu/impl/locale/BaseLocale$Key;
Landroid/icu/impl/locale/BaseLocale$Cache;->normalizeKey(Ljava/lang/Object;)Ljava/lang/Object;
-Landroid/icu/impl/locale/BaseLocale$Key;
Landroid/icu/impl/locale/BaseLocale$Key;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
Landroid/icu/impl/locale/BaseLocale$Key;->compareTo(Landroid/icu/impl/locale/BaseLocale$Key;)I
Landroid/icu/impl/locale/BaseLocale$Key;->compareTo(Ljava/lang/Object;)I
@@ -27573,11 +25758,9 @@
Landroid/icu/impl/locale/BaseLocale;->_variant:Ljava/lang/String;
Landroid/icu/impl/locale/Extension;-><init>(CLjava/lang/String;)V
Landroid/icu/impl/locale/Extension;->_key:C
-Landroid/icu/impl/locale/InternalLocaleBuilder$CaseInsensitiveChar;
Landroid/icu/impl/locale/InternalLocaleBuilder$CaseInsensitiveChar;-><init>(C)V
Landroid/icu/impl/locale/InternalLocaleBuilder$CaseInsensitiveChar;->value()C
Landroid/icu/impl/locale/InternalLocaleBuilder$CaseInsensitiveChar;->_c:C
-Landroid/icu/impl/locale/InternalLocaleBuilder$CaseInsensitiveString;
Landroid/icu/impl/locale/InternalLocaleBuilder$CaseInsensitiveString;-><init>(Ljava/lang/String;)V
Landroid/icu/impl/locale/InternalLocaleBuilder$CaseInsensitiveString;->value()Ljava/lang/String;
Landroid/icu/impl/locale/InternalLocaleBuilder$CaseInsensitiveString;->_s:Ljava/lang/String;
@@ -27617,7 +25800,6 @@
Landroid/icu/impl/locale/LocaleExtensions;->toID(Ljava/util/SortedMap;)Ljava/lang/String;
Landroid/icu/impl/locale/LocaleExtensions;->_id:Ljava/lang/String;
Landroid/icu/impl/locale/LocaleExtensions;->_map:Ljava/util/SortedMap;
-Landroid/icu/impl/locale/LocaleObjectCache$CacheEntry;
Landroid/icu/impl/locale/LocaleObjectCache$CacheEntry;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V
Landroid/icu/impl/locale/LocaleObjectCache$CacheEntry;->getKey()Ljava/lang/Object;
Landroid/icu/impl/locale/LocaleObjectCache$CacheEntry;->_key:Ljava/lang/Object;
@@ -27644,12 +25826,10 @@
Landroid/icu/impl/locale/XCldrStub$Multimap;->getInstance()Ljava/util/Set;
Landroid/icu/impl/locale/XCldrStub$Multimap;->map:Ljava/util/Map;
Landroid/icu/impl/locale/XCldrStub$Multimap;->setClass:Ljava/lang/Class;
-Landroid/icu/impl/locale/XCldrStub$MultimapIterator;
Landroid/icu/impl/locale/XCldrStub$MultimapIterator;-><init>(Ljava/util/Map;)V
Landroid/icu/impl/locale/XCldrStub$MultimapIterator;->entry:Landroid/icu/impl/locale/XCldrStub$ReusableEntry;
Landroid/icu/impl/locale/XCldrStub$MultimapIterator;->it1:Ljava/util/Iterator;
Landroid/icu/impl/locale/XCldrStub$MultimapIterator;->it2:Ljava/util/Iterator;
-Landroid/icu/impl/locale/XCldrStub$ReusableEntry;
Landroid/icu/impl/locale/XCldrStub$ReusableEntry;-><init>()V
Landroid/icu/impl/locale/XCldrStub$ReusableEntry;->key:Ljava/lang/Object;
Landroid/icu/impl/locale/XCldrStub$ReusableEntry;->value:Ljava/lang/Object;
@@ -27659,7 +25839,6 @@
Landroid/icu/impl/locale/XLikelySubtags$Aliases;->toAliases:Landroid/icu/impl/locale/XCldrStub$Multimap;
Landroid/icu/impl/locale/XLikelySubtags$Aliases;->toCanonical:Ljava/util/Map;
Landroid/icu/impl/locale/XLikelySubtags$LSR;->from(Ljava/lang/String;)Landroid/icu/impl/locale/XLikelySubtags$LSR;
-Landroid/icu/impl/locale/XLikelySubtags$Maker;
Landroid/icu/impl/locale/XLikelySubtags$Maker;-><init>()V
Landroid/icu/impl/locale/XLikelySubtags$Maker;->getSubtable(Ljava/util/Map;Ljava/lang/Object;)Ljava/lang/Object;
Landroid/icu/impl/locale/XLikelySubtags$Maker;->HASHMAP:Landroid/icu/impl/locale/XLikelySubtags$Maker;
@@ -27673,29 +25852,24 @@
Landroid/icu/impl/locale/XLikelySubtags;->set(Ljava/util/Map;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/icu/impl/locale/XLikelySubtags$LSR;)V
Landroid/icu/impl/locale/XLikelySubtags;->set(Ljava/util/Map;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;)V
Landroid/icu/impl/locale/XLikelySubtags;->show(Ljava/util/Map;Ljava/lang/String;Ljava/lang/StringBuilder;)Ljava/lang/StringBuilder;
-Landroid/icu/impl/locale/XLocaleDistance$AddSub;
Landroid/icu/impl/locale/XLocaleDistance$AddSub;-><init>(Ljava/lang/String;Ljava/lang/String;Landroid/icu/impl/locale/XLocaleDistance$StringDistanceTable;)V
Landroid/icu/impl/locale/XLocaleDistance$AddSub;->desiredSub:Ljava/lang/String;
Landroid/icu/impl/locale/XLocaleDistance$AddSub;->r:Landroid/icu/impl/locale/XLocaleDistance$CopyIfEmpty;
Landroid/icu/impl/locale/XLocaleDistance$AddSub;->supportedSub:Ljava/lang/String;
Landroid/icu/impl/locale/XLocaleDistance$AddSub;->test(Landroid/icu/impl/locale/XLocaleDistance$DistanceNode;)Z
Landroid/icu/impl/locale/XLocaleDistance$AddSub;->test(Ljava/lang/Object;)Z
-Landroid/icu/impl/locale/XLocaleDistance$CompactAndImmutablizer;
Landroid/icu/impl/locale/XLocaleDistance$CompactAndImmutablizer;-><init>()V
Landroid/icu/impl/locale/XLocaleDistance$CompactAndImmutablizer;->compact(Landroid/icu/impl/locale/XLocaleDistance$DistanceNode;)Landroid/icu/impl/locale/XLocaleDistance$DistanceNode;
Landroid/icu/impl/locale/XLocaleDistance$CompactAndImmutablizer;->compact(Landroid/icu/impl/locale/XLocaleDistance$StringDistanceTable;)Landroid/icu/impl/locale/XLocaleDistance$StringDistanceTable;
Landroid/icu/impl/locale/XLocaleDistance$CompactAndImmutablizer;->compact(Ljava/util/Map;I)Ljava/util/Map;
-Landroid/icu/impl/locale/XLocaleDistance$CopyIfEmpty;
Landroid/icu/impl/locale/XLocaleDistance$CopyIfEmpty;-><init>(Landroid/icu/impl/locale/XLocaleDistance$StringDistanceTable;)V
Landroid/icu/impl/locale/XLocaleDistance$CopyIfEmpty;->test(Landroid/icu/impl/locale/XLocaleDistance$DistanceNode;)Z
Landroid/icu/impl/locale/XLocaleDistance$CopyIfEmpty;->test(Ljava/lang/Object;)Z
Landroid/icu/impl/locale/XLocaleDistance$CopyIfEmpty;->toCopy:Landroid/icu/impl/locale/XLocaleDistance$StringDistanceTable;
Landroid/icu/impl/locale/XLocaleDistance$DistanceNode;->distance:I
-Landroid/icu/impl/locale/XLocaleDistance$DistanceOption;-><init>()V
Landroid/icu/impl/locale/XLocaleDistance$DistanceTable;->getCloser(I)Ljava/util/Set;
Landroid/icu/impl/locale/XLocaleDistance$DistanceTable;->getDistance(Ljava/lang/String;Ljava/lang/String;Landroid/icu/util/Output;Z)I
Landroid/icu/impl/locale/XLocaleDistance$DistanceTable;->toString(Z)Ljava/lang/String;
-Landroid/icu/impl/locale/XLocaleDistance$IdMakerFull;
Landroid/icu/impl/locale/XLocaleDistance$IdMakerFull;-><init>()V
Landroid/icu/impl/locale/XLocaleDistance$IdMakerFull;-><init>(Ljava/lang/String;)V
Landroid/icu/impl/locale/XLocaleDistance$IdMakerFull;-><init>(Ljava/lang/String;Ljava/lang/Object;)V
@@ -27709,17 +25883,13 @@
Landroid/icu/impl/locale/XLocaleDistance$IdMakerFull;->size()I
Landroid/icu/impl/locale/XLocaleDistance$IdMakerFull;->toId(Ljava/lang/Object;)Ljava/lang/Integer;
Landroid/icu/impl/locale/XLocaleDistance$IdMakerFull;->toId(Ljava/lang/Object;)Ljava/lang/Object;
-Landroid/icu/impl/locale/XLocaleDistance$IdMapper;
Landroid/icu/impl/locale/XLocaleDistance$IdMapper;->toId(Ljava/lang/Object;)Ljava/lang/Object;
-Landroid/icu/impl/locale/XLocaleDistance$RegionMapper$Builder;
Landroid/icu/impl/locale/XLocaleDistance$RegionMapper$Builder;-><init>()V
Landroid/icu/impl/locale/XLocaleDistance$RegionMapper$Builder;->add(Ljava/lang/String;Ljava/lang/String;)V
-Landroid/icu/impl/locale/XLocaleDistance$RegionMapper$Builder;->addParadigms([[Ljava/lang/String;)Landroid/icu/impl/locale/XLocaleDistance$RegionMapper$Builder;
Landroid/icu/impl/locale/XLocaleDistance$RegionMapper$Builder;->build()Landroid/icu/impl/locale/XLocaleDistance$RegionMapper;
Landroid/icu/impl/locale/XLocaleDistance$RegionMapper$Builder;->paradigms:Ljava/util/Set;
Landroid/icu/impl/locale/XLocaleDistance$RegionMapper$Builder;->regionSet:Landroid/icu/impl/locale/XLocaleDistance$RegionSet;
Landroid/icu/impl/locale/XLocaleDistance$RegionMapper$Builder;->regionToRawPartition:Landroid/icu/impl/locale/XCldrStub$Multimap;
-Landroid/icu/impl/locale/XLocaleDistance$RegionMapper;
Landroid/icu/impl/locale/XLocaleDistance$RegionMapper;-><init>(Landroid/icu/impl/locale/XCldrStub$Multimap;Ljava/util/Map;Landroid/icu/impl/locale/XCldrStub$Multimap;Ljava/util/Set;)V
Landroid/icu/impl/locale/XLocaleDistance$RegionMapper;->getIdsFromVariable(Ljava/lang/String;)Ljava/util/Collection;
Landroid/icu/impl/locale/XLocaleDistance$RegionMapper;->macroToPartitions:Landroid/icu/impl/locale/XCldrStub$Multimap;
@@ -27730,13 +25900,10 @@
Landroid/icu/impl/locale/XLocaleDistance$RegionMapper;->toId(Ljava/lang/String;)Ljava/lang/String;
Landroid/icu/impl/locale/XLocaleDistance$RegionMapper;->variables()Ljava/util/Set;
Landroid/icu/impl/locale/XLocaleDistance$RegionMapper;->variableToPartition:Landroid/icu/impl/locale/XCldrStub$Multimap;
-Landroid/icu/impl/locale/XLocaleDistance$RegionSet$Operation;
-Landroid/icu/impl/locale/XLocaleDistance$RegionSet$Operation;-><init>()V
Landroid/icu/impl/locale/XLocaleDistance$RegionSet$Operation;->add:Landroid/icu/impl/locale/XLocaleDistance$RegionSet$Operation;
Landroid/icu/impl/locale/XLocaleDistance$RegionSet$Operation;->remove:Landroid/icu/impl/locale/XLocaleDistance$RegionSet$Operation;
Landroid/icu/impl/locale/XLocaleDistance$RegionSet$Operation;->valueOf(Ljava/lang/String;)Landroid/icu/impl/locale/XLocaleDistance$RegionSet$Operation;
Landroid/icu/impl/locale/XLocaleDistance$RegionSet$Operation;->values()[Landroid/icu/impl/locale/XLocaleDistance$RegionSet$Operation;
-Landroid/icu/impl/locale/XLocaleDistance$RegionSet;
Landroid/icu/impl/locale/XLocaleDistance$RegionSet;-><init>()V
Landroid/icu/impl/locale/XLocaleDistance$RegionSet;->add(Ljava/lang/String;II)V
Landroid/icu/impl/locale/XLocaleDistance$RegionSet;->changeSet(Landroid/icu/impl/locale/XLocaleDistance$RegionSet$Operation;Ljava/lang/String;)V
@@ -27744,7 +25911,6 @@
Landroid/icu/impl/locale/XLocaleDistance$RegionSet;->operation:Landroid/icu/impl/locale/XLocaleDistance$RegionSet$Operation;
Landroid/icu/impl/locale/XLocaleDistance$RegionSet;->parseSet(Ljava/lang/String;)Ljava/util/Set;
Landroid/icu/impl/locale/XLocaleDistance$RegionSet;->tempRegions:Ljava/util/Set;
-Landroid/icu/impl/locale/XLocaleDistance$StringDistanceNode;
Landroid/icu/impl/locale/XLocaleDistance$StringDistanceNode;-><init>(I)V
Landroid/icu/impl/locale/XLocaleDistance$StringDistanceNode;-><init>(ILandroid/icu/impl/locale/XLocaleDistance$DistanceTable;)V
Landroid/icu/impl/locale/XLocaleDistance$StringDistanceNode;->addSubtables(Ljava/lang/String;Ljava/lang/String;Landroid/icu/impl/locale/XLocaleDistance$CopyIfEmpty;)V
@@ -27795,7 +25961,6 @@
Landroid/icu/impl/locale/XLocaleMatcher;->thresholdDistance:I
Landroid/icu/impl/locale/XLocaleMatcher;->UND:Landroid/icu/impl/locale/XLikelySubtags$LSR;
Landroid/icu/impl/locale/XLocaleMatcher;->UND_LOCALE:Landroid/icu/util/ULocale;
-Landroid/icu/impl/Normalizer2Impl$IsAcceptable;
Landroid/icu/impl/Normalizer2Impl$IsAcceptable;-><init>()V
Landroid/icu/impl/Normalizer2Impl$ReorderingBuffer;->app:Ljava/lang/Appendable;
Landroid/icu/impl/Normalizer2Impl$ReorderingBuffer;->appIsStringBuilder:Z
@@ -27889,10 +26054,8 @@
Landroid/icu/impl/number/AffixUtils;->STATE_SECOND_CURR:I
Landroid/icu/impl/number/AffixUtils;->STATE_THIRD_CURR:I
Landroid/icu/impl/number/AffixUtils;->TYPE_CODEPOINT:I
-Landroid/icu/impl/number/CompactData$CompactDataSink;
Landroid/icu/impl/number/CompactData$CompactDataSink;-><init>(Landroid/icu/impl/number/CompactData;)V
Landroid/icu/impl/number/CompactData$CompactDataSink;->data:Landroid/icu/impl/number/CompactData;
-Landroid/icu/impl/number/CompactData$CompactType;-><init>()V
Landroid/icu/impl/number/CompactData;->COMPACT_MAX_DIGITS:I
Landroid/icu/impl/number/CompactData;->countZeros(Ljava/lang/String;)I
Landroid/icu/impl/number/CompactData;->getIndex(ILandroid/icu/impl/StandardPlural;)I
@@ -28015,7 +26178,6 @@
Landroid/icu/impl/number/NumberStringBuilder;->prepareForInsert(II)I
Landroid/icu/impl/number/NumberStringBuilder;->prepareForInsertHelper(II)I
Landroid/icu/impl/number/NumberStringBuilder;->zero:I
-Landroid/icu/impl/number/Padder$PadPosition;-><init>()V
Landroid/icu/impl/number/Padder;->addPaddingHelper(Ljava/lang/String;ILandroid/icu/impl/number/NumberStringBuilder;I)I
Landroid/icu/impl/number/Padder;->paddingString:Ljava/lang/String;
Landroid/icu/impl/number/Padder;->position:Landroid/icu/impl/number/Padder$PadPosition;
@@ -28025,7 +26187,6 @@
Landroid/icu/impl/number/ParameterizedModifier;->mods:[Landroid/icu/impl/number/Modifier;
Landroid/icu/impl/number/ParameterizedModifier;->negative:Landroid/icu/impl/number/Modifier;
Landroid/icu/impl/number/ParameterizedModifier;->positive:Landroid/icu/impl/number/Modifier;
-Landroid/icu/impl/number/Parse$AffixHolder;
Landroid/icu/impl/number/Parse$AffixHolder;-><init>(Ljava/lang/String;Ljava/lang/String;ZZ)V
Landroid/icu/impl/number/Parse$AffixHolder;->addToState(Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/DecimalFormatProperties;)V
Landroid/icu/impl/number/Parse$AffixHolder;->EMPTY_NEGATIVE:Landroid/icu/impl/number/Parse$AffixHolder;
@@ -28039,23 +26200,17 @@
Landroid/icu/impl/number/Parse$AffixHolder;->p:Ljava/lang/String;
Landroid/icu/impl/number/Parse$AffixHolder;->s:Ljava/lang/String;
Landroid/icu/impl/number/Parse$AffixHolder;->strings:Z
-Landroid/icu/impl/number/Parse$CurrencyAffixPatterns;
Landroid/icu/impl/number/Parse$CurrencyAffixPatterns;-><init>(Landroid/icu/util/ULocale;)V
Landroid/icu/impl/number/Parse$CurrencyAffixPatterns;->addPattern(Ljava/lang/String;)V
Landroid/icu/impl/number/Parse$CurrencyAffixPatterns;->addToState(Landroid/icu/util/ULocale;Landroid/icu/impl/number/Parse$ParserState;)V
Landroid/icu/impl/number/Parse$CurrencyAffixPatterns;->currencyAffixPatterns:Ljava/util/concurrent/ConcurrentHashMap;
Landroid/icu/impl/number/Parse$CurrencyAffixPatterns;->set:Ljava/util/Set;
Landroid/icu/impl/number/Parse$CurrencyAffixPatterns;->threadLocalProperties:Ljava/lang/ThreadLocal;
-Landroid/icu/impl/number/Parse$DigitType;
-Landroid/icu/impl/number/Parse$DigitType;-><init>()V
Landroid/icu/impl/number/Parse$DigitType;->EXPONENT:Landroid/icu/impl/number/Parse$DigitType;
Landroid/icu/impl/number/Parse$DigitType;->FRACTION:Landroid/icu/impl/number/Parse$DigitType;
Landroid/icu/impl/number/Parse$DigitType;->INTEGER:Landroid/icu/impl/number/Parse$DigitType;
Landroid/icu/impl/number/Parse$DigitType;->valueOf(Ljava/lang/String;)Landroid/icu/impl/number/Parse$DigitType;
Landroid/icu/impl/number/Parse$DigitType;->values()[Landroid/icu/impl/number/Parse$DigitType;
-Landroid/icu/impl/number/Parse$GroupingMode;-><init>()V
-Landroid/icu/impl/number/Parse$ParseMode;-><init>()V
-Landroid/icu/impl/number/Parse$ParserState;
Landroid/icu/impl/number/Parse$ParserState;-><init>()V
Landroid/icu/impl/number/Parse$ParserState;->affixHolders:Ljava/util/Set;
Landroid/icu/impl/number/Parse$ParserState;->caseSensitive:Z
@@ -28083,8 +26238,6 @@
Landroid/icu/impl/number/Parse$ParserState;->swap()V
Landroid/icu/impl/number/Parse$ParserState;->swapBack()V
Landroid/icu/impl/number/Parse$ParserState;->symbols:Landroid/icu/text/DecimalFormatSymbols;
-Landroid/icu/impl/number/Parse$SeparatorType;
-Landroid/icu/impl/number/Parse$SeparatorType;-><init>()V
Landroid/icu/impl/number/Parse$SeparatorType;->COMMA_LIKE:Landroid/icu/impl/number/Parse$SeparatorType;
Landroid/icu/impl/number/Parse$SeparatorType;->fromCp(ILandroid/icu/impl/number/Parse$ParseMode;)Landroid/icu/impl/number/Parse$SeparatorType;
Landroid/icu/impl/number/Parse$SeparatorType;->OTHER_GROUPING:Landroid/icu/impl/number/Parse$SeparatorType;
@@ -28092,7 +26245,6 @@
Landroid/icu/impl/number/Parse$SeparatorType;->UNKNOWN:Landroid/icu/impl/number/Parse$SeparatorType;
Landroid/icu/impl/number/Parse$SeparatorType;->valueOf(Ljava/lang/String;)Landroid/icu/impl/number/Parse$SeparatorType;
Landroid/icu/impl/number/Parse$SeparatorType;->values()[Landroid/icu/impl/number/Parse$SeparatorType;
-Landroid/icu/impl/number/Parse$StateItem;
Landroid/icu/impl/number/Parse$StateItem;-><init>(C)V
Landroid/icu/impl/number/Parse$StateItem;->affix:Landroid/icu/impl/number/Parse$AffixHolder;
Landroid/icu/impl/number/Parse$StateItem;->appendDigit(BLandroid/icu/impl/number/Parse$DigitType;)V
@@ -28132,8 +26284,6 @@
Landroid/icu/impl/number/Parse$StateItem;->toNumber(Landroid/icu/impl/number/DecimalFormatProperties;)Ljava/lang/Number;
Landroid/icu/impl/number/Parse$StateItem;->trailingCount:I
Landroid/icu/impl/number/Parse$StateItem;->trailingZeros:I
-Landroid/icu/impl/number/Parse$StateName;
-Landroid/icu/impl/number/Parse$StateName;-><init>()V
Landroid/icu/impl/number/Parse$StateName;->AFTER_EXPONENT_DIGIT:Landroid/icu/impl/number/Parse$StateName;
Landroid/icu/impl/number/Parse$StateName;->AFTER_EXPONENT_SEPARATOR:Landroid/icu/impl/number/Parse$StateName;
Landroid/icu/impl/number/Parse$StateName;->AFTER_FRACTION_DIGIT:Landroid/icu/impl/number/Parse$StateName;
@@ -28199,7 +26349,6 @@
Landroid/icu/impl/number/Parse;->_parse(Ljava/lang/CharSequence;Ljava/text/ParsePosition;ZLandroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/text/DecimalFormatSymbols;)Landroid/icu/impl/number/Parse$StateItem;
Landroid/icu/impl/number/PatternStringParser$ParsedPatternInfo;-><init>(Ljava/lang/String;)V
Landroid/icu/impl/number/PatternStringParser$ParsedPatternInfo;->getEndpoints(I)J
-Landroid/icu/impl/number/PatternStringParser$ParserState;
Landroid/icu/impl/number/PatternStringParser$ParserState;-><init>(Ljava/lang/String;)V
Landroid/icu/impl/number/PatternStringParser$ParserState;->next()I
Landroid/icu/impl/number/PatternStringParser$ParserState;->offset:I
@@ -28246,7 +26395,6 @@
Landroid/icu/impl/PluralRulesLoader;->rulesIdToEquivalentULocale:Ljava/util/Map;
Landroid/icu/impl/PluralRulesLoader;->rulesIdToRules:Ljava/util/Map;
Landroid/icu/impl/PluralRulesLoader;->UNKNOWN_RANGE:Landroid/icu/text/PluralRanges;
-Landroid/icu/impl/Relation$SimpleEntry;
Landroid/icu/impl/Relation$SimpleEntry;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V
Landroid/icu/impl/Relation$SimpleEntry;-><init>(Ljava/util/Map$Entry;)V
Landroid/icu/impl/Relation$SimpleEntry;->key:Ljava/lang/Object;
@@ -28269,7 +26417,6 @@
Landroid/icu/impl/SimpleCache;->DEFAULT_CAPACITY:I
Landroid/icu/impl/SimpleCache;->type:I
Landroid/icu/impl/SoftCache;->map:Ljava/util/concurrent/ConcurrentHashMap;
-Landroid/icu/impl/StandardPlural;-><init>(Ljava/lang/String;)V
Landroid/icu/impl/StandardPlural;->keyword:Ljava/lang/String;
Landroid/icu/impl/TextTrieMap$CharIterator;-><init>(Ljava/lang/CharSequence;IZ)V
Landroid/icu/impl/TextTrieMap$CharIterator;->_ignoreCase:Z
@@ -28277,19 +26424,13 @@
Landroid/icu/impl/TextTrieMap$CharIterator;->_remainingChar:Ljava/lang/Character;
Landroid/icu/impl/TextTrieMap$CharIterator;->_startIdx:I
Landroid/icu/impl/TextTrieMap$CharIterator;->_text:Ljava/lang/CharSequence;
-Landroid/icu/impl/TextTrieMap$LongestMatchHandler;
Landroid/icu/impl/TextTrieMap$LongestMatchHandler;-><init>()V
Landroid/icu/impl/TextTrieMap$LongestMatchHandler;->getMatches()Ljava/util/Iterator;
Landroid/icu/impl/TextTrieMap$LongestMatchHandler;->getMatchLength()I
Landroid/icu/impl/TextTrieMap$LongestMatchHandler;->length:I
Landroid/icu/impl/TextTrieMap$LongestMatchHandler;->matches:Ljava/util/Iterator;
-Landroid/icu/impl/TextTrieMap$Node$StepResult;
-Landroid/icu/impl/TextTrieMap$Node$StepResult;-><init>()V
Landroid/icu/impl/TextTrieMap$Node$StepResult;->node:Landroid/icu/impl/TextTrieMap$Node;
Landroid/icu/impl/TextTrieMap$Node$StepResult;->offset:I
-Landroid/icu/impl/TextTrieMap$Node;
-Landroid/icu/impl/TextTrieMap$Node;-><init>()V
-Landroid/icu/impl/TextTrieMap$Node;-><init>([CLjava/util/List;Ljava/util/List;)V
Landroid/icu/impl/TextTrieMap$Node;->add(Landroid/icu/impl/TextTrieMap$CharIterator;Ljava/lang/Object;)V
Landroid/icu/impl/TextTrieMap$Node;->add([CILjava/lang/Object;)V
Landroid/icu/impl/TextTrieMap$Node;->addValue(Ljava/util/List;Ljava/lang/Object;)Ljava/util/List;
@@ -28304,7 +26445,6 @@
Landroid/icu/impl/TextTrieMap$Node;->_children:Ljava/util/List;
Landroid/icu/impl/TextTrieMap$Node;->_text:[C
Landroid/icu/impl/TextTrieMap$Node;->_values:Ljava/util/List;
-Landroid/icu/impl/TextTrieMap$ParseState;-><init>(Landroid/icu/impl/TextTrieMap$Node;)V
Landroid/icu/impl/TextTrieMap$ParseState;->node:Landroid/icu/impl/TextTrieMap$Node;
Landroid/icu/impl/TextTrieMap$ParseState;->offset:I
Landroid/icu/impl/TextTrieMap$ParseState;->result:Landroid/icu/impl/TextTrieMap$Node$StepResult;
@@ -28314,7 +26454,6 @@
Landroid/icu/impl/TextTrieMap;->toCharArray(Ljava/lang/CharSequence;)[C
Landroid/icu/impl/TextTrieMap;->_ignoreCase:Z
Landroid/icu/impl/TextTrieMap;->_root:Landroid/icu/impl/TextTrieMap$Node;
-Landroid/icu/impl/TimeZoneGenericNames$Cache;
Landroid/icu/impl/TimeZoneGenericNames$Cache;-><init>()V
Landroid/icu/impl/TimeZoneGenericNames$Cache;->createInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
Landroid/icu/impl/TimeZoneGenericNames$Cache;->createInstance(Ljava/lang/String;Landroid/icu/util/ULocale;)Landroid/icu/impl/TimeZoneGenericNames;
@@ -28324,7 +26463,6 @@
Landroid/icu/impl/TimeZoneGenericNames$GenericMatchInfo;->nameType:Landroid/icu/impl/TimeZoneGenericNames$GenericNameType;
Landroid/icu/impl/TimeZoneGenericNames$GenericMatchInfo;->timeType:Landroid/icu/text/TimeZoneFormat$TimeType;
Landroid/icu/impl/TimeZoneGenericNames$GenericMatchInfo;->tzID:Ljava/lang/String;
-Landroid/icu/impl/TimeZoneGenericNames$GenericNameSearchHandler;
Landroid/icu/impl/TimeZoneGenericNames$GenericNameSearchHandler;-><init>(Ljava/util/EnumSet;)V
Landroid/icu/impl/TimeZoneGenericNames$GenericNameSearchHandler;->getMatches()Ljava/util/Collection;
Landroid/icu/impl/TimeZoneGenericNames$GenericNameSearchHandler;->getMaxMatchLen()I
@@ -28333,13 +26471,10 @@
Landroid/icu/impl/TimeZoneGenericNames$GenericNameSearchHandler;->_matches:Ljava/util/Collection;
Landroid/icu/impl/TimeZoneGenericNames$GenericNameSearchHandler;->_maxMatchLen:I
Landroid/icu/impl/TimeZoneGenericNames$GenericNameSearchHandler;->_types:Ljava/util/EnumSet;
-Landroid/icu/impl/TimeZoneGenericNames$GenericNameType;-><init>([[Ljava/lang/String;)V
Landroid/icu/impl/TimeZoneGenericNames$GenericNameType;->_fallbackTypeOf:[Ljava/lang/String;
-Landroid/icu/impl/TimeZoneGenericNames$NameInfo;
Landroid/icu/impl/TimeZoneGenericNames$NameInfo;-><init>(Ljava/lang/String;Landroid/icu/impl/TimeZoneGenericNames$GenericNameType;)V
Landroid/icu/impl/TimeZoneGenericNames$NameInfo;->type:Landroid/icu/impl/TimeZoneGenericNames$GenericNameType;
Landroid/icu/impl/TimeZoneGenericNames$NameInfo;->tzID:Ljava/lang/String;
-Landroid/icu/impl/TimeZoneGenericNames$Pattern;-><init>(Ljava/lang/String;Ljava/lang/String;)V
Landroid/icu/impl/TimeZoneGenericNames$Pattern;->defaultValue()Ljava/lang/String;
Landroid/icu/impl/TimeZoneGenericNames$Pattern;->key()Ljava/lang/String;
Landroid/icu/impl/TimeZoneGenericNames$Pattern;->_defaultVal:Ljava/lang/String;
@@ -28350,7 +26485,6 @@
Landroid/icu/impl/TimeZoneGenericNames;->findLocal(Ljava/lang/String;ILjava/util/EnumSet;)Ljava/util/Collection;
Landroid/icu/impl/TimeZoneGenericNames;->findTimeZoneNames(Ljava/lang/String;ILjava/util/EnumSet;)Ljava/util/Collection;
Landroid/icu/impl/TimeZoneGenericNames;->formatGenericNonLocationName(Landroid/icu/util/TimeZone;Landroid/icu/impl/TimeZoneGenericNames$GenericNameType;J)Ljava/lang/String;
-Landroid/icu/impl/TimeZoneGenericNames;->formatPattern(Landroid/icu/impl/TimeZoneGenericNames$Pattern;[[Ljava/lang/String;)Ljava/lang/String;
Landroid/icu/impl/TimeZoneGenericNames;->GENERIC_NAMES_CACHE:Landroid/icu/impl/TimeZoneGenericNames$Cache;
Landroid/icu/impl/TimeZoneGenericNames;->GENERIC_NON_LOCATION_TYPES:[Landroid/icu/text/TimeZoneNames$NameType;
Landroid/icu/impl/TimeZoneGenericNames;->getLocaleDisplayNames()Landroid/icu/text/LocaleDisplayNames;
@@ -28368,16 +26502,11 @@
Landroid/icu/impl/TimeZoneGenericNames;->_patternFormatters:[Ljava/text/MessageFormat;
Landroid/icu/impl/TimeZoneGenericNames;->_region:Ljava/lang/String;
Landroid/icu/impl/TimeZoneGenericNames;->_tznames:Landroid/icu/text/TimeZoneNames;
-Landroid/icu/impl/Trie$DefaultGetFoldingOffset;
Landroid/icu/impl/Trie$DefaultGetFoldingOffset;-><init>()V
-Landroid/icu/impl/Trie2$CharSequenceIterator;-><init>(Ljava/lang/CharSequence;I)V
Landroid/icu/impl/Trie2$CharSequenceIterator;->fResults:Landroid/icu/impl/Trie2$CharSequenceValues;
Landroid/icu/impl/Trie2$CharSequenceIterator;->index:I
Landroid/icu/impl/Trie2$CharSequenceIterator;->text:Ljava/lang/CharSequence;
Landroid/icu/impl/Trie2$CharSequenceIterator;->textLength:I
-Landroid/icu/impl/Trie2$Trie2Iterator;
-Landroid/icu/impl/Trie2$Trie2Iterator;-><init>(CLandroid/icu/impl/Trie2$ValueMapper;)V
-Landroid/icu/impl/Trie2$Trie2Iterator;-><init>(Landroid/icu/impl/Trie2$ValueMapper;)V
Landroid/icu/impl/Trie2$Trie2Iterator;->doingCodePoints:Z
Landroid/icu/impl/Trie2$Trie2Iterator;->doLeadSurrogates:Z
Landroid/icu/impl/Trie2$Trie2Iterator;->limitCP:I
@@ -28385,7 +26514,6 @@
Landroid/icu/impl/Trie2$Trie2Iterator;->nextStart:I
Landroid/icu/impl/Trie2$Trie2Iterator;->rangeEndLS(C)I
Landroid/icu/impl/Trie2$Trie2Iterator;->returnValue:Landroid/icu/impl/Trie2$Range;
-Landroid/icu/impl/Trie2$UTrie2Header;
Landroid/icu/impl/Trie2$UTrie2Header;-><init>()V
Landroid/icu/impl/Trie2$UTrie2Header;->dataNullOffset:I
Landroid/icu/impl/Trie2$UTrie2Header;->index2NullOffset:I
@@ -28394,8 +26522,6 @@
Landroid/icu/impl/Trie2$UTrie2Header;->shiftedDataLength:I
Landroid/icu/impl/Trie2$UTrie2Header;->shiftedHighStart:I
Landroid/icu/impl/Trie2$UTrie2Header;->signature:I
-Landroid/icu/impl/Trie2$ValueWidth;
-Landroid/icu/impl/Trie2$ValueWidth;-><init>()V
Landroid/icu/impl/Trie2$ValueWidth;->BITS_16:Landroid/icu/impl/Trie2$ValueWidth;
Landroid/icu/impl/Trie2$ValueWidth;->BITS_32:Landroid/icu/impl/Trie2$ValueWidth;
Landroid/icu/impl/Trie2$ValueWidth;->valueOf(Ljava/lang/String;)Landroid/icu/impl/Trie2$ValueWidth;
@@ -28495,7 +26621,6 @@
Landroid/icu/impl/Trie;->HEADER_OPTIONS_SHIFT_MASK_:I
Landroid/icu/impl/Trie;->m_isLatin1Linear_:Z
Landroid/icu/impl/Trie;->m_options_:I
-Landroid/icu/impl/UBiDiProps$IsAcceptable;
Landroid/icu/impl/UBiDiProps$IsAcceptable;-><init>()V
Landroid/icu/impl/UBiDiProps;-><init>()V
Landroid/icu/impl/UBiDiProps;->BIDI_CONTROL_SHIFT:I
@@ -28535,7 +26660,6 @@
Landroid/icu/impl/UBiDiProps;->MIRROR_INDEX_SHIFT:I
Landroid/icu/impl/UBiDiProps;->readData(Ljava/nio/ByteBuffer;)V
Landroid/icu/impl/UBiDiProps;->trie:Landroid/icu/impl/Trie2_16;
-Landroid/icu/impl/UnicodeSetStringSpan$OffsetList;
Landroid/icu/impl/UnicodeSetStringSpan$OffsetList;-><init>()V
Landroid/icu/impl/UnicodeSetStringSpan$OffsetList;->addOffset(I)V
Landroid/icu/impl/UnicodeSetStringSpan$OffsetList;->addOffsetAndCount(II)V
@@ -28577,7 +26701,6 @@
Landroid/icu/impl/UResource$Key;->regionMatches(ILjava/lang/CharSequence;I)Z
Landroid/icu/impl/UResource$Key;->regionMatches([BII)Z
Landroid/icu/impl/UResource$Key;->s:Ljava/lang/String;
-Landroid/icu/lang/CharSequences;
Landroid/icu/lang/CharSequences;-><init>()V
Landroid/icu/lang/CharSequences;->codePointLength(Ljava/lang/CharSequence;)I
Landroid/icu/lang/CharSequences;->codePoints(Ljava/lang/CharSequence;)[I
@@ -28594,7 +26717,6 @@
Landroid/icu/lang/CharSequences;->onCharacterBoundary(Ljava/lang/CharSequence;I)Z
Landroid/icu/lang/UCharacter$BidiPairedBracketType;->COUNT:I
Landroid/icu/lang/UCharacter$DecompositionType;->COUNT:I
-Landroid/icu/lang/UCharacter$DummyValueIterator;
Landroid/icu/lang/UCharacter$DummyValueIterator;-><init>()V
Landroid/icu/lang/UCharacter$EastAsianWidth;->COUNT:I
Landroid/icu/lang/UCharacter$GraphemeClusterBreak;->COUNT:I
@@ -28604,9 +26726,7 @@
Landroid/icu/lang/UCharacter$LineBreak;->COUNT:I
Landroid/icu/lang/UCharacter$NumericType;->COUNT:I
Landroid/icu/lang/UCharacter$SentenceBreak;->COUNT:I
-Landroid/icu/lang/UCharacter$UCharacterTypeIterator$MaskType;
Landroid/icu/lang/UCharacter$UCharacterTypeIterator$MaskType;-><init>()V
-Landroid/icu/lang/UCharacter$UCharacterTypeIterator;
Landroid/icu/lang/UCharacter$UCharacterTypeIterator;-><init>()V
Landroid/icu/lang/UCharacter$UCharacterTypeIterator;->MASK_TYPE:Landroid/icu/lang/UCharacter$UCharacterTypeIterator$MaskType;
Landroid/icu/lang/UCharacter$UCharacterTypeIterator;->range:Landroid/icu/impl/Trie2$Range;
@@ -28683,7 +26803,6 @@
Landroid/icu/lang/UProperty;->STRING_LIMIT:I
Landroid/icu/lang/UProperty;->UNDEFINED:I
Landroid/icu/lang/UProperty;->UNICODE_1_NAME:I
-Landroid/icu/lang/UScript$ScriptMetadata;
Landroid/icu/lang/UScript$ScriptMetadata;-><init>()V
Landroid/icu/lang/UScript$ScriptMetadata;->CASED:I
Landroid/icu/lang/UScript$ScriptMetadata;->EXCLUSION:I
@@ -28694,18 +26813,15 @@
Landroid/icu/lang/UScript$ScriptMetadata;->RTL:I
Landroid/icu/lang/UScript$ScriptMetadata;->SCRIPT_PROPS:[I
Landroid/icu/lang/UScript$ScriptMetadata;->UNKNOWN:I
-Landroid/icu/lang/UScript$ScriptUsage;-><init>()V
Landroid/icu/lang/UScript;-><init>()V
Landroid/icu/lang/UScript;->CODE_LIMIT:I
Landroid/icu/lang/UScript;->DUPLOYAN_SHORTAND:I
Landroid/icu/lang/UScript;->findCodeFromLocale(Landroid/icu/util/ULocale;)[I
Landroid/icu/lang/UScript;->getCodesFromLocale(Landroid/icu/util/ULocale;)[I
Landroid/icu/lang/UScript;->usageValues:[Landroid/icu/lang/UScript$ScriptUsage;
-Landroid/icu/lang/UScriptRun$ParenStackEntry;
Landroid/icu/lang/UScriptRun$ParenStackEntry;-><init>(II)V
Landroid/icu/lang/UScriptRun$ParenStackEntry;->pairIndex:I
Landroid/icu/lang/UScriptRun$ParenStackEntry;->scriptCode:I
-Landroid/icu/lang/UScriptRun;
Landroid/icu/lang/UScriptRun;-><init>()V
Landroid/icu/lang/UScriptRun;-><init>(Ljava/lang/String;)V
Landroid/icu/lang/UScriptRun;-><init>(Ljava/lang/String;II)V
@@ -28795,7 +26911,6 @@
Landroid/icu/math/MathContext;->roundingMode:I
Landroid/icu/math/MathContext;->ROUNDS:[I
Landroid/icu/math/MathContext;->ROUNDWORDS:[Ljava/lang/String;
-Landroid/icu/text/AlphabeticIndex$Bucket$LabelType;-><init>()V
Landroid/icu/text/AlphabeticIndex$Bucket;-><init>(Ljava/lang/String;Ljava/lang/String;Landroid/icu/text/AlphabeticIndex$Bucket$LabelType;)V
Landroid/icu/text/AlphabeticIndex$Bucket;->displayBucket:Landroid/icu/text/AlphabeticIndex$Bucket;
Landroid/icu/text/AlphabeticIndex$Bucket;->displayIndex:I
@@ -28803,7 +26918,6 @@
Landroid/icu/text/AlphabeticIndex$Bucket;->labelType:Landroid/icu/text/AlphabeticIndex$Bucket$LabelType;
Landroid/icu/text/AlphabeticIndex$Bucket;->lowerBoundary:Ljava/lang/String;
Landroid/icu/text/AlphabeticIndex$Bucket;->records:Ljava/util/List;
-Landroid/icu/text/AlphabeticIndex$BucketList;
Landroid/icu/text/AlphabeticIndex$BucketList;-><init>(Ljava/util/ArrayList;Ljava/util/ArrayList;)V
Landroid/icu/text/AlphabeticIndex$BucketList;->bucketList:Ljava/util/ArrayList;
Landroid/icu/text/AlphabeticIndex$BucketList;->fullIterator()Ljava/util/Iterator;
@@ -28849,7 +26963,6 @@
Landroid/icu/text/AlphabeticIndex;->recordComparator:Ljava/util/Comparator;
Landroid/icu/text/AlphabeticIndex;->separated(Ljava/lang/String;)Ljava/lang/String;
Landroid/icu/text/AlphabeticIndex;->underflowLabel:Ljava/lang/String;
-Landroid/icu/text/ArabicShaping;
Landroid/icu/text/ArabicShaping;->ALEFTYPE:I
Landroid/icu/text/ArabicShaping;->araLink:[I
Landroid/icu/text/ArabicShaping;->calculateSize([CII)I
@@ -28959,30 +27072,24 @@
Landroid/icu/text/ArabicShaping;->YEHHAMZA_TWOCELL_NEAR:I
Landroid/icu/text/ArabicShaping;->YEH_HAMZAFE_CHAR:C
Landroid/icu/text/ArabicShaping;->YEH_HAMZA_CHAR:C
-Landroid/icu/text/ArabicShapingException;
Landroid/icu/text/ArabicShapingException;-><init>(Ljava/lang/String;)V
-Landroid/icu/text/Bidi$BracketData;
Landroid/icu/text/Bidi$BracketData;-><init>()V
Landroid/icu/text/Bidi$BracketData;->isNumbersSpecial:Z
Landroid/icu/text/Bidi$BracketData;->isoRunLast:I
Landroid/icu/text/Bidi$BracketData;->isoRuns:[Landroid/icu/text/Bidi$IsoRun;
Landroid/icu/text/Bidi$BracketData;->openings:[Landroid/icu/text/Bidi$Opening;
-Landroid/icu/text/Bidi$ImpTabPair;
Landroid/icu/text/Bidi$ImpTabPair;-><init>([[B[[B[S[S)V
Landroid/icu/text/Bidi$ImpTabPair;->impact:[[S
Landroid/icu/text/Bidi$ImpTabPair;->imptab:[[[B
-Landroid/icu/text/Bidi$InsertPoints;
Landroid/icu/text/Bidi$InsertPoints;-><init>()V
Landroid/icu/text/Bidi$InsertPoints;->confirmed:I
Landroid/icu/text/Bidi$InsertPoints;->points:[Landroid/icu/text/Bidi$Point;
Landroid/icu/text/Bidi$InsertPoints;->size:I
-Landroid/icu/text/Bidi$Isolate;
Landroid/icu/text/Bidi$Isolate;-><init>()V
Landroid/icu/text/Bidi$Isolate;->start1:I
Landroid/icu/text/Bidi$Isolate;->startON:I
Landroid/icu/text/Bidi$Isolate;->state:S
Landroid/icu/text/Bidi$Isolate;->stateImp:S
-Landroid/icu/text/Bidi$IsoRun;
Landroid/icu/text/Bidi$IsoRun;-><init>()V
Landroid/icu/text/Bidi$IsoRun;->contextDir:B
Landroid/icu/text/Bidi$IsoRun;->contextPos:I
@@ -28991,7 +27098,6 @@
Landroid/icu/text/Bidi$IsoRun;->level:B
Landroid/icu/text/Bidi$IsoRun;->limit:S
Landroid/icu/text/Bidi$IsoRun;->start:S
-Landroid/icu/text/Bidi$LevState;
Landroid/icu/text/Bidi$LevState;-><init>()V
Landroid/icu/text/Bidi$LevState;->impAct:[S
Landroid/icu/text/Bidi$LevState;->impTab:[[B
@@ -29001,18 +27107,15 @@
Landroid/icu/text/Bidi$LevState;->startL2EN:I
Landroid/icu/text/Bidi$LevState;->startON:I
Landroid/icu/text/Bidi$LevState;->state:S
-Landroid/icu/text/Bidi$Opening;
Landroid/icu/text/Bidi$Opening;-><init>()V
Landroid/icu/text/Bidi$Opening;->contextDir:B
Landroid/icu/text/Bidi$Opening;->contextPos:I
Landroid/icu/text/Bidi$Opening;->flags:S
Landroid/icu/text/Bidi$Opening;->match:I
Landroid/icu/text/Bidi$Opening;->position:I
-Landroid/icu/text/Bidi$Point;
Landroid/icu/text/Bidi$Point;-><init>()V
Landroid/icu/text/Bidi$Point;->flag:I
Landroid/icu/text/Bidi$Point;->pos:I
-Landroid/icu/text/Bidi;
Landroid/icu/text/Bidi;-><init>()V
Landroid/icu/text/Bidi;-><init>(II)V
Landroid/icu/text/Bidi;-><init>(Ljava/lang/String;I)V
@@ -29290,13 +27393,11 @@
Landroid/icu/text/Bidi;->_ON:S
Landroid/icu/text/Bidi;->_R:S
Landroid/icu/text/Bidi;->_S:S
-Landroid/icu/text/BidiClassifier;
Landroid/icu/text/BidiClassifier;-><init>(Ljava/lang/Object;)V
Landroid/icu/text/BidiClassifier;->classify(I)I
Landroid/icu/text/BidiClassifier;->context:Ljava/lang/Object;
Landroid/icu/text/BidiClassifier;->getContext()Ljava/lang/Object;
Landroid/icu/text/BidiClassifier;->setContext(Ljava/lang/Object;)V
-Landroid/icu/text/BidiRun;
Landroid/icu/text/BidiRun;-><init>()V
Landroid/icu/text/BidiRun;-><init>(IIB)V
Landroid/icu/text/BidiRun;->copyFrom(Landroid/icu/text/BidiRun;)V
@@ -29311,20 +27412,14 @@
Landroid/icu/text/BidiRun;->level:B
Landroid/icu/text/BidiRun;->limit:I
Landroid/icu/text/BidiRun;->start:I
-Landroid/icu/text/BidiTransform$Mirroring;
-Landroid/icu/text/BidiTransform$Mirroring;-><init>()V
Landroid/icu/text/BidiTransform$Mirroring;->OFF:Landroid/icu/text/BidiTransform$Mirroring;
Landroid/icu/text/BidiTransform$Mirroring;->ON:Landroid/icu/text/BidiTransform$Mirroring;
Landroid/icu/text/BidiTransform$Mirroring;->valueOf(Ljava/lang/String;)Landroid/icu/text/BidiTransform$Mirroring;
Landroid/icu/text/BidiTransform$Mirroring;->values()[Landroid/icu/text/BidiTransform$Mirroring;
-Landroid/icu/text/BidiTransform$Order;
-Landroid/icu/text/BidiTransform$Order;-><init>()V
Landroid/icu/text/BidiTransform$Order;->LOGICAL:Landroid/icu/text/BidiTransform$Order;
Landroid/icu/text/BidiTransform$Order;->valueOf(Ljava/lang/String;)Landroid/icu/text/BidiTransform$Order;
Landroid/icu/text/BidiTransform$Order;->values()[Landroid/icu/text/BidiTransform$Order;
Landroid/icu/text/BidiTransform$Order;->VISUAL:Landroid/icu/text/BidiTransform$Order;
-Landroid/icu/text/BidiTransform$ReorderingScheme;
-Landroid/icu/text/BidiTransform$ReorderingScheme;-><init>()V
Landroid/icu/text/BidiTransform$ReorderingScheme;->doTransform(Landroid/icu/text/BidiTransform;)V
Landroid/icu/text/BidiTransform$ReorderingScheme;->LOG_LTR_TO_LOG_LTR:Landroid/icu/text/BidiTransform$ReorderingScheme;
Landroid/icu/text/BidiTransform$ReorderingScheme;->LOG_LTR_TO_LOG_RTL:Landroid/icu/text/BidiTransform$ReorderingScheme;
@@ -29345,7 +27440,6 @@
Landroid/icu/text/BidiTransform$ReorderingScheme;->VIS_RTL_TO_LOG_RTL:Landroid/icu/text/BidiTransform$ReorderingScheme;
Landroid/icu/text/BidiTransform$ReorderingScheme;->VIS_RTL_TO_VIS_LTR:Landroid/icu/text/BidiTransform$ReorderingScheme;
Landroid/icu/text/BidiTransform$ReorderingScheme;->VIS_RTL_TO_VIS_RTL:Landroid/icu/text/BidiTransform$ReorderingScheme;
-Landroid/icu/text/BidiTransform;
Landroid/icu/text/BidiTransform;-><init>()V
Landroid/icu/text/BidiTransform;->bidi:Landroid/icu/text/Bidi;
Landroid/icu/text/BidiTransform;->findMatchingScheme(BLandroid/icu/text/BidiTransform$Order;BLandroid/icu/text/BidiTransform$Order;)Landroid/icu/text/BidiTransform$ReorderingScheme;
@@ -29364,13 +27458,11 @@
Landroid/icu/text/BidiTransform;->shapingOptions:I
Landroid/icu/text/BidiTransform;->text:Ljava/lang/String;
Landroid/icu/text/BidiTransform;->transform(Ljava/lang/CharSequence;BLandroid/icu/text/BidiTransform$Order;BLandroid/icu/text/BidiTransform$Order;Landroid/icu/text/BidiTransform$Mirroring;I)Ljava/lang/String;
-Landroid/icu/text/BreakIterator$BreakIteratorCache;
Landroid/icu/text/BreakIterator$BreakIteratorCache;-><init>(Landroid/icu/util/ULocale;Landroid/icu/text/BreakIterator;)V
Landroid/icu/text/BreakIterator$BreakIteratorCache;->createBreakInstance()Landroid/icu/text/BreakIterator;
Landroid/icu/text/BreakIterator$BreakIteratorCache;->getLocale()Landroid/icu/util/ULocale;
Landroid/icu/text/BreakIterator$BreakIteratorCache;->iter:Landroid/icu/text/BreakIterator;
Landroid/icu/text/BreakIterator$BreakIteratorCache;->where:Landroid/icu/util/ULocale;
-Landroid/icu/text/BreakIterator$BreakIteratorServiceShim;
Landroid/icu/text/BreakIterator$BreakIteratorServiceShim;-><init>()V
Landroid/icu/text/BreakIterator$BreakIteratorServiceShim;->createBreakIterator(Landroid/icu/util/ULocale;I)Landroid/icu/text/BreakIterator;
Landroid/icu/text/BreakIterator$BreakIteratorServiceShim;->getAvailableLocales()[Ljava/util/Locale;
@@ -29392,7 +27484,6 @@
Landroid/icu/text/BreakIterator;->shim:Landroid/icu/text/BreakIterator$BreakIteratorServiceShim;
Landroid/icu/text/BreakIterator;->unregister(Ljava/lang/Object;)Z
Landroid/icu/text/BreakIterator;->validLocale:Landroid/icu/util/ULocale;
-Landroid/icu/text/CanonicalIterator;
Landroid/icu/text/CanonicalIterator;-><init>(Ljava/lang/String;)V
Landroid/icu/text/CanonicalIterator;->buffer:Ljava/lang/StringBuilder;
Landroid/icu/text/CanonicalIterator;->current:[I
@@ -29412,7 +27503,6 @@
Landroid/icu/text/CanonicalIterator;->SET_WITH_NULL_STRING:Ljava/util/Set;
Landroid/icu/text/CanonicalIterator;->SKIP_ZEROS:Z
Landroid/icu/text/CanonicalIterator;->source:Ljava/lang/String;
-Landroid/icu/text/CaseMap$Fold;
Landroid/icu/text/CaseMap$Fold;-><init>(I)V
Landroid/icu/text/CaseMap$Fold;->apply(Ljava/lang/CharSequence;)Ljava/lang/String;
Landroid/icu/text/CaseMap$Fold;->apply(Ljava/lang/CharSequence;Ljava/lang/Appendable;Landroid/icu/text/Edits;)Ljava/lang/Appendable;
@@ -29422,14 +27512,12 @@
Landroid/icu/text/CaseMap$Fold;->turkic()Landroid/icu/text/CaseMap$Fold;
Landroid/icu/text/CaseMap$Fold;->TURKIC:Landroid/icu/text/CaseMap$Fold;
Landroid/icu/text/CaseMap$Fold;->TURKIC_OMIT_UNCHANGED:Landroid/icu/text/CaseMap$Fold;
-Landroid/icu/text/CaseMap$Lower;
Landroid/icu/text/CaseMap$Lower;-><init>(I)V
Landroid/icu/text/CaseMap$Lower;->apply(Ljava/util/Locale;Ljava/lang/CharSequence;)Ljava/lang/String;
Landroid/icu/text/CaseMap$Lower;->apply(Ljava/util/Locale;Ljava/lang/CharSequence;Ljava/lang/Appendable;Landroid/icu/text/Edits;)Ljava/lang/Appendable;
Landroid/icu/text/CaseMap$Lower;->DEFAULT:Landroid/icu/text/CaseMap$Lower;
Landroid/icu/text/CaseMap$Lower;->omitUnchangedText()Landroid/icu/text/CaseMap$Lower;
Landroid/icu/text/CaseMap$Lower;->OMIT_UNCHANGED:Landroid/icu/text/CaseMap$Lower;
-Landroid/icu/text/CaseMap$Title;
Landroid/icu/text/CaseMap$Title;-><init>(I)V
Landroid/icu/text/CaseMap$Title;->adjustToCased()Landroid/icu/text/CaseMap$Title;
Landroid/icu/text/CaseMap$Title;->apply(Ljava/util/Locale;Landroid/icu/text/BreakIterator;Ljava/lang/CharSequence;)Ljava/lang/String;
@@ -29441,14 +27529,12 @@
Landroid/icu/text/CaseMap$Title;->OMIT_UNCHANGED:Landroid/icu/text/CaseMap$Title;
Landroid/icu/text/CaseMap$Title;->sentences()Landroid/icu/text/CaseMap$Title;
Landroid/icu/text/CaseMap$Title;->wholeString()Landroid/icu/text/CaseMap$Title;
-Landroid/icu/text/CaseMap$Upper;
Landroid/icu/text/CaseMap$Upper;-><init>(I)V
Landroid/icu/text/CaseMap$Upper;->apply(Ljava/util/Locale;Ljava/lang/CharSequence;)Ljava/lang/String;
Landroid/icu/text/CaseMap$Upper;->apply(Ljava/util/Locale;Ljava/lang/CharSequence;Ljava/lang/Appendable;Landroid/icu/text/Edits;)Ljava/lang/Appendable;
Landroid/icu/text/CaseMap$Upper;->DEFAULT:Landroid/icu/text/CaseMap$Upper;
Landroid/icu/text/CaseMap$Upper;->omitUnchangedText()Landroid/icu/text/CaseMap$Upper;
Landroid/icu/text/CaseMap$Upper;->OMIT_UNCHANGED:Landroid/icu/text/CaseMap$Upper;
-Landroid/icu/text/CaseMap;
Landroid/icu/text/CaseMap;-><init>(I)V
Landroid/icu/text/CaseMap;->fold()Landroid/icu/text/CaseMap$Fold;
Landroid/icu/text/CaseMap;->getCaseLocale(Ljava/util/Locale;)I
@@ -29457,11 +27543,9 @@
Landroid/icu/text/CaseMap;->toLower()Landroid/icu/text/CaseMap$Lower;
Landroid/icu/text/CaseMap;->toTitle()Landroid/icu/text/CaseMap$Title;
Landroid/icu/text/CaseMap;->toUpper()Landroid/icu/text/CaseMap$Upper;
-Landroid/icu/text/CharsetDetector$CSRecognizerInfo;
Landroid/icu/text/CharsetDetector$CSRecognizerInfo;-><init>(Landroid/icu/text/CharsetRecognizer;Z)V
Landroid/icu/text/CharsetDetector$CSRecognizerInfo;->isDefaultEnabled:Z
Landroid/icu/text/CharsetDetector$CSRecognizerInfo;->recognizer:Landroid/icu/text/CharsetRecognizer;
-Landroid/icu/text/CharsetDetector;
Landroid/icu/text/CharsetDetector;-><init>()V
Landroid/icu/text/CharsetDetector;->ALL_CS_RECOGNIZERS:Ljava/util/List;
Landroid/icu/text/CharsetDetector;->detect()Landroid/icu/text/CharsetMatch;
@@ -29488,7 +27572,6 @@
Landroid/icu/text/CharsetDetector;->setDetectableCharset(Ljava/lang/String;Z)Landroid/icu/text/CharsetDetector;
Landroid/icu/text/CharsetDetector;->setText(Ljava/io/InputStream;)Landroid/icu/text/CharsetDetector;
Landroid/icu/text/CharsetDetector;->setText([B)Landroid/icu/text/CharsetDetector;
-Landroid/icu/text/CharsetMatch;
Landroid/icu/text/CharsetMatch;-><init>(Landroid/icu/text/CharsetDetector;Landroid/icu/text/CharsetRecognizer;I)V
Landroid/icu/text/CharsetMatch;-><init>(Landroid/icu/text/CharsetDetector;Landroid/icu/text/CharsetRecognizer;ILjava/lang/String;Ljava/lang/String;)V
Landroid/icu/text/CharsetMatch;->compareTo(Landroid/icu/text/CharsetMatch;)I
@@ -29504,21 +27587,17 @@
Landroid/icu/text/CharsetMatch;->getReader()Ljava/io/Reader;
Landroid/icu/text/CharsetMatch;->getString()Ljava/lang/String;
Landroid/icu/text/CharsetMatch;->getString(I)Ljava/lang/String;
-Landroid/icu/text/CharsetRecognizer;
Landroid/icu/text/CharsetRecognizer;-><init>()V
Landroid/icu/text/CharsetRecognizer;->getLanguage()Ljava/lang/String;
Landroid/icu/text/CharsetRecognizer;->getName()Ljava/lang/String;
Landroid/icu/text/CharsetRecognizer;->match(Landroid/icu/text/CharsetDetector;)Landroid/icu/text/CharsetMatch;
-Landroid/icu/text/ChineseDateFormat$Field;
Landroid/icu/text/ChineseDateFormat$Field;-><init>(Ljava/lang/String;I)V
Landroid/icu/text/ChineseDateFormat$Field;->IS_LEAP_MONTH:Landroid/icu/text/ChineseDateFormat$Field;
Landroid/icu/text/ChineseDateFormat$Field;->ofCalendarField(I)Landroid/icu/text/DateFormat$Field;
-Landroid/icu/text/ChineseDateFormat;
Landroid/icu/text/ChineseDateFormat;-><init>(Ljava/lang/String;Landroid/icu/util/ULocale;)V
Landroid/icu/text/ChineseDateFormat;-><init>(Ljava/lang/String;Ljava/lang/String;Landroid/icu/util/ULocale;)V
Landroid/icu/text/ChineseDateFormat;-><init>(Ljava/lang/String;Ljava/util/Locale;)V
Landroid/icu/text/ChineseDateFormat;->subFormat(Ljava/lang/StringBuffer;CIIILandroid/icu/text/DisplayContext;Ljava/text/FieldPosition;Landroid/icu/util/Calendar;)V
-Landroid/icu/text/ChineseDateFormatSymbols;
Landroid/icu/text/ChineseDateFormatSymbols;-><init>()V
Landroid/icu/text/ChineseDateFormatSymbols;-><init>(Landroid/icu/util/Calendar;Landroid/icu/util/ULocale;)V
Landroid/icu/text/ChineseDateFormatSymbols;-><init>(Landroid/icu/util/Calendar;Ljava/util/Locale;)V
@@ -29529,7 +27608,6 @@
Landroid/icu/text/ChineseDateFormatSymbols;->initializeData(Landroid/icu/util/ULocale;Landroid/icu/impl/ICUResourceBundle;Ljava/lang/String;)V
Landroid/icu/text/ChineseDateFormatSymbols;->initializeIsLeapMonth()V
Landroid/icu/text/ChineseDateFormatSymbols;->isLeapMonth:[Ljava/lang/String;
-Landroid/icu/text/CollationElementIterator$MaxExpSink;
Landroid/icu/text/CollationElementIterator$MaxExpSink;-><init>(Ljava/util/Map;)V
Landroid/icu/text/CollationElementIterator$MaxExpSink;->maxExpansions:Ljava/util/Map;
Landroid/icu/text/CollationElementIterator;-><init>(Landroid/icu/text/RuleBasedCollator;)V
@@ -29559,10 +27637,8 @@
Landroid/icu/text/CollationKey;->m_key_:[B
Landroid/icu/text/CollationKey;->m_length_:I
Landroid/icu/text/CollationKey;->m_source_:Ljava/lang/String;
-Landroid/icu/text/Collator$ASCII;
Landroid/icu/text/Collator$ASCII;-><init>()V
Landroid/icu/text/Collator$ASCII;->equalIgnoreCase(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Z
-Landroid/icu/text/Collator$CollatorFactory;
Landroid/icu/text/Collator$CollatorFactory;-><init>()V
Landroid/icu/text/Collator$CollatorFactory;->createCollator(Landroid/icu/util/ULocale;)Landroid/icu/text/Collator;
Landroid/icu/text/Collator$CollatorFactory;->createCollator(Ljava/util/Locale;)Landroid/icu/text/Collator;
@@ -29570,12 +27646,10 @@
Landroid/icu/text/Collator$CollatorFactory;->getDisplayName(Ljava/util/Locale;Ljava/util/Locale;)Ljava/lang/String;
Landroid/icu/text/Collator$CollatorFactory;->getSupportedLocaleIDs()Ljava/util/Set;
Landroid/icu/text/Collator$CollatorFactory;->visible()Z
-Landroid/icu/text/Collator$KeywordsSink;
Landroid/icu/text/Collator$KeywordsSink;-><init>()V
Landroid/icu/text/Collator$KeywordsSink;->hasDefault:Z
Landroid/icu/text/Collator$KeywordsSink;->values:Ljava/util/LinkedList;
Landroid/icu/text/Collator$ReorderCodes;->LIMIT:I
-Landroid/icu/text/Collator$ServiceShim;
Landroid/icu/text/Collator$ServiceShim;-><init>()V
Landroid/icu/text/Collator$ServiceShim;->getAvailableLocales()[Ljava/util/Locale;
Landroid/icu/text/Collator$ServiceShim;->getAvailableULocales()[Landroid/icu/util/ULocale;
@@ -29588,7 +27662,6 @@
Landroid/icu/text/Collator;->checkNotFrozen()V
Landroid/icu/text/Collator;->DEBUG:Z
Landroid/icu/text/Collator;->doCompare(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)I
-Landroid/icu/text/Collator;->getIntValue(Ljava/lang/String;Ljava/lang/String;[[Ljava/lang/String;)I
Landroid/icu/text/Collator;->getLocale(Landroid/icu/util/ULocale$Type;)Landroid/icu/util/ULocale;
Landroid/icu/text/Collator;->getRawCollationKey(Ljava/lang/String;Landroid/icu/text/RawCollationKey;)Landroid/icu/text/RawCollationKey;
Landroid/icu/text/Collator;->getReorderCode(Ljava/lang/String;Ljava/lang/String;)I
@@ -29605,9 +27678,7 @@
Landroid/icu/text/Collator;->setVariableTop(Ljava/lang/String;)I
Landroid/icu/text/Collator;->shim:Landroid/icu/text/Collator$ServiceShim;
Landroid/icu/text/Collator;->unregister(Ljava/lang/Object;)Z
-Landroid/icu/text/CompactDecimalFormat$CompactStyle;-><init>()V
Landroid/icu/text/CompactDecimalFormat;-><init>(Landroid/icu/util/ULocale;Landroid/icu/text/CompactDecimalFormat$CompactStyle;)V
-Landroid/icu/text/ComposedCharIter;
Landroid/icu/text/ComposedCharIter;-><init>()V
Landroid/icu/text/ComposedCharIter;-><init>(ZI)V
Landroid/icu/text/ComposedCharIter;->curChar:I
@@ -29619,7 +27690,6 @@
Landroid/icu/text/ComposedCharIter;->n2impl:Landroid/icu/impl/Normalizer2Impl;
Landroid/icu/text/ComposedCharIter;->next()C
Landroid/icu/text/ComposedCharIter;->nextChar:I
-Landroid/icu/text/CurrencyDisplayNames;
Landroid/icu/text/CurrencyDisplayNames;-><init>()V
Landroid/icu/text/CurrencyDisplayNames;->getInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/CurrencyDisplayNames;
Landroid/icu/text/CurrencyDisplayNames;->getInstance(Landroid/icu/util/ULocale;Z)Landroid/icu/text/CurrencyDisplayNames;
@@ -29632,11 +27702,9 @@
Landroid/icu/text/CurrencyDisplayNames;->hasData()Z
Landroid/icu/text/CurrencyDisplayNames;->nameMap()Ljava/util/Map;
Landroid/icu/text/CurrencyDisplayNames;->symbolMap()Ljava/util/Map;
-Landroid/icu/text/CurrencyMetaInfo$CurrencyDigits;
Landroid/icu/text/CurrencyMetaInfo$CurrencyDigits;-><init>(II)V
Landroid/icu/text/CurrencyMetaInfo$CurrencyDigits;->fractionDigits:I
Landroid/icu/text/CurrencyMetaInfo$CurrencyDigits;->roundingIncrement:I
-Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;
Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;-><init>(Ljava/lang/String;Ljava/lang/String;JJZ)V
Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->all()Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;
Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->ALL:Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;
@@ -29662,7 +27730,6 @@
Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->withDateRange(Ljava/util/Date;Ljava/util/Date;)Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;
Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->withRegion(Ljava/lang/String;)Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;
Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->withTender()Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;
-Landroid/icu/text/CurrencyMetaInfo$CurrencyInfo;
Landroid/icu/text/CurrencyMetaInfo$CurrencyInfo;-><init>(Ljava/lang/String;Ljava/lang/String;JJI)V
Landroid/icu/text/CurrencyMetaInfo$CurrencyInfo;-><init>(Ljava/lang/String;Ljava/lang/String;JJIZ)V
Landroid/icu/text/CurrencyMetaInfo$CurrencyInfo;->code:Ljava/lang/String;
@@ -29672,7 +27739,6 @@
Landroid/icu/text/CurrencyMetaInfo$CurrencyInfo;->region:Ljava/lang/String;
Landroid/icu/text/CurrencyMetaInfo$CurrencyInfo;->tender:Z
Landroid/icu/text/CurrencyMetaInfo$CurrencyInfo;->to:J
-Landroid/icu/text/CurrencyMetaInfo;
Landroid/icu/text/CurrencyMetaInfo;-><init>()V
Landroid/icu/text/CurrencyMetaInfo;->currencies(Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;)Ljava/util/List;
Landroid/icu/text/CurrencyMetaInfo;->currencyDigits(Ljava/lang/String;)Landroid/icu/text/CurrencyMetaInfo$CurrencyDigits;
@@ -29699,7 +27765,6 @@
Landroid/icu/text/CurrencyPluralInfo;->tripleCurrencySign:[C
Landroid/icu/text/CurrencyPluralInfo;->tripleCurrencyStr:Ljava/lang/String;
Landroid/icu/text/CurrencyPluralInfo;->ulocale:Landroid/icu/util/ULocale;
-Landroid/icu/text/DateFormat$BooleanAttribute;-><init>()V
Landroid/icu/text/DateFormat$BooleanAttribute;->PARSE_PARTIAL_MATCH:Landroid/icu/text/DateFormat$BooleanAttribute;
Landroid/icu/text/DateFormat$Field;->calendarField:I
Landroid/icu/text/DateFormat$Field;->CAL_FIELDS:[Landroid/icu/text/DateFormat$Field;
@@ -29727,15 +27792,12 @@
Landroid/icu/text/DateFormat;->TIME_SEPARATOR:I
Landroid/icu/text/DateFormat;->TIME_SKELETONS:Ljava/util/List;
Landroid/icu/text/DateFormat;->ZONE_SKELETONS:Ljava/util/List;
-Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType;
-Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType;-><init>()V
Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType;->DIFFERENT_CALENDAR:Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType;
Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType;->GREGORIAN:Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType;
Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType;->NONE:Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType;
Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType;->SAME_CALENDAR:Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType;
Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType;->valueOf(Ljava/lang/String;)Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType;
Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType;->values()[Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType;
-Landroid/icu/text/DateFormatSymbols$CalendarDataSink;
Landroid/icu/text/DateFormatSymbols$CalendarDataSink;-><init>()V
Landroid/icu/text/DateFormatSymbols$CalendarDataSink;->aliasPathPairs:Ljava/util/List;
Landroid/icu/text/DateFormatSymbols$CalendarDataSink;->aliasRelativePath:Ljava/lang/String;
@@ -29749,8 +27811,6 @@
Landroid/icu/text/DateFormatSymbols$CalendarDataSink;->processResource(Ljava/lang/String;Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V
Landroid/icu/text/DateFormatSymbols$CalendarDataSink;->resourcesToVisit:Ljava/util/Set;
Landroid/icu/text/DateFormatSymbols$CalendarDataSink;->visitAllResources()V
-Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;
-Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;-><init>()V
Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->DAY_FORMAT:Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;
Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->DAY_NARROW:Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;
Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->DAY_STANDALONE:Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;
@@ -29845,11 +27905,9 @@
Landroid/icu/text/DateFormatSymbols;->weekdays:[Ljava/lang/String;
Landroid/icu/text/DateFormatSymbols;->wideDayPeriods:[Ljava/lang/String;
Landroid/icu/text/DateFormatSymbols;->zoneStrings:[[Ljava/lang/String;
-Landroid/icu/text/DateIntervalFormat$BestMatchInfo;
Landroid/icu/text/DateIntervalFormat$BestMatchInfo;-><init>(Ljava/lang/String;I)V
Landroid/icu/text/DateIntervalFormat$BestMatchInfo;->bestMatchDistanceInfo:I
Landroid/icu/text/DateIntervalFormat$BestMatchInfo;->bestMatchSkeleton:Ljava/lang/String;
-Landroid/icu/text/DateIntervalFormat$SkeletonAndItsBestMatch;
Landroid/icu/text/DateIntervalFormat$SkeletonAndItsBestMatch;-><init>(Ljava/lang/String;Ljava/lang/String;)V
Landroid/icu/text/DateIntervalFormat$SkeletonAndItsBestMatch;->bestMatchSkeleton:Ljava/lang/String;
Landroid/icu/text/DateIntervalFormat$SkeletonAndItsBestMatch;->skeleton:Ljava/lang/String;
@@ -29881,7 +27939,6 @@
Landroid/icu/text/DateIntervalFormat;->initializePattern(Landroid/icu/impl/ICUCache;)V
Landroid/icu/text/DateIntervalFormat;->isDateIntervalInfoDefault:Z
Landroid/icu/text/DateIntervalFormat;->LOCAL_PATTERN_CACHE:Landroid/icu/impl/ICUCache;
-Landroid/icu/text/DateIntervalInfo$DateIntervalSink;
Landroid/icu/text/DateIntervalInfo$DateIntervalSink;-><init>(Landroid/icu/text/DateIntervalInfo;)V
Landroid/icu/text/DateIntervalInfo$DateIntervalSink;->ACCEPTED_PATTERN_LETTERS:Ljava/lang/String;
Landroid/icu/text/DateIntervalInfo$DateIntervalSink;->dateIntervalInfo:Landroid/icu/text/DateIntervalInfo;
@@ -29926,14 +27983,7 @@
Landroid/icu/text/DateIntervalInfo;->setup(Landroid/icu/util/ULocale;)V
Landroid/icu/text/DateIntervalInfo;->splitPatternInto2Part(Ljava/lang/String;)I
Landroid/icu/text/DateIntervalInfo;->stringNumeric(IIC)Z
-Landroid/icu/text/DateTimePatternGenerator$AppendItemFormatsSink;
-Landroid/icu/text/DateTimePatternGenerator$AppendItemFormatsSink;-><init>()V
-Landroid/icu/text/DateTimePatternGenerator$AppendItemNamesSink;
-Landroid/icu/text/DateTimePatternGenerator$AppendItemNamesSink;-><init>()V
-Landroid/icu/text/DateTimePatternGenerator$AvailableFormatsSink;
-Landroid/icu/text/DateTimePatternGenerator$AvailableFormatsSink;-><init>(Landroid/icu/text/DateTimePatternGenerator$PatternInfo;)V
Landroid/icu/text/DateTimePatternGenerator$AvailableFormatsSink;->returnInfo:Landroid/icu/text/DateTimePatternGenerator$PatternInfo;
-Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;
Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;-><init>()V
Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->addedDefaultDayPeriod:Z
Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->baseOriginal:Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;
@@ -29947,23 +27997,18 @@
Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->set(Ljava/lang/String;Landroid/icu/text/DateTimePatternGenerator$FormatParser;Z)Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;
Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->toCanonicalString()Ljava/lang/String;
Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->type:[I
-Landroid/icu/text/DateTimePatternGenerator$DayPeriodAllowedHoursSink;
Landroid/icu/text/DateTimePatternGenerator$DayPeriodAllowedHoursSink;-><init>(Ljava/util/HashMap;)V
Landroid/icu/text/DateTimePatternGenerator$DayPeriodAllowedHoursSink;->tempMap:Ljava/util/HashMap;
-Landroid/icu/text/DateTimePatternGenerator$DistanceInfo;
Landroid/icu/text/DateTimePatternGenerator$DistanceInfo;->addExtra(I)V
Landroid/icu/text/DateTimePatternGenerator$DistanceInfo;->addMissing(I)V
Landroid/icu/text/DateTimePatternGenerator$DistanceInfo;->clear()V
Landroid/icu/text/DateTimePatternGenerator$DistanceInfo;->extraFieldMask:I
Landroid/icu/text/DateTimePatternGenerator$DistanceInfo;->missingFieldMask:I
Landroid/icu/text/DateTimePatternGenerator$DistanceInfo;->setTo(Landroid/icu/text/DateTimePatternGenerator$DistanceInfo;)V
-Landroid/icu/text/DateTimePatternGenerator$DTPGflags;
-Landroid/icu/text/DateTimePatternGenerator$DTPGflags;-><init>()V
Landroid/icu/text/DateTimePatternGenerator$DTPGflags;->FIX_FRACTIONAL_SECONDS:Landroid/icu/text/DateTimePatternGenerator$DTPGflags;
Landroid/icu/text/DateTimePatternGenerator$DTPGflags;->SKELETON_USES_CAP_J:Landroid/icu/text/DateTimePatternGenerator$DTPGflags;
Landroid/icu/text/DateTimePatternGenerator$DTPGflags;->valueOf(Ljava/lang/String;)Landroid/icu/text/DateTimePatternGenerator$DTPGflags;
Landroid/icu/text/DateTimePatternGenerator$DTPGflags;->values()[Landroid/icu/text/DateTimePatternGenerator$DTPGflags;
-Landroid/icu/text/DateTimePatternGenerator$FormatParser;
Landroid/icu/text/DateTimePatternGenerator$FormatParser;-><init>()V
Landroid/icu/text/DateTimePatternGenerator$FormatParser;->addVariable(Ljava/lang/StringBuffer;Z)V
Landroid/icu/text/DateTimePatternGenerator$FormatParser;->getItems()Ljava/util/List;
@@ -29976,15 +28021,12 @@
Landroid/icu/text/DateTimePatternGenerator$FormatParser;->SYNTAX_CHARS:Landroid/icu/text/UnicodeSet;
Landroid/icu/text/DateTimePatternGenerator$FormatParser;->tokenizer:Landroid/icu/impl/PatternTokenizer;
Landroid/icu/text/DateTimePatternGenerator$FormatParser;->toString(II)Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator$PatternWithMatcher;
Landroid/icu/text/DateTimePatternGenerator$PatternWithMatcher;-><init>(Ljava/lang/String;Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;)V
Landroid/icu/text/DateTimePatternGenerator$PatternWithMatcher;->matcherWithSkeleton:Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;
Landroid/icu/text/DateTimePatternGenerator$PatternWithMatcher;->pattern:Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator$PatternWithSkeletonFlag;
Landroid/icu/text/DateTimePatternGenerator$PatternWithSkeletonFlag;-><init>(Ljava/lang/String;Z)V
Landroid/icu/text/DateTimePatternGenerator$PatternWithSkeletonFlag;->pattern:Ljava/lang/String;
Landroid/icu/text/DateTimePatternGenerator$PatternWithSkeletonFlag;->skeletonWasSpecified:Z
-Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;
Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;-><init>()V
Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->appendFieldTo(ILjava/lang/StringBuilder;)Ljava/lang/StringBuilder;
Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->appendFieldTo(ILjava/lang/StringBuilder;Z)Ljava/lang/StringBuilder;
@@ -30006,7 +28048,6 @@
Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->toCanonicalString()Ljava/lang/String;
Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->toCanonicalString(Z)Ljava/lang/String;
Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->toString(Z)Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator$VariableField;
Landroid/icu/text/DateTimePatternGenerator$VariableField;-><init>(Ljava/lang/String;)V
Landroid/icu/text/DateTimePatternGenerator$VariableField;-><init>(Ljava/lang/String;Z)V
Landroid/icu/text/DateTimePatternGenerator$VariableField;->canonicalIndex:I
@@ -30095,7 +28136,6 @@
Landroid/icu/text/DateTimePatternGenerator;->types:[[I
Landroid/icu/text/DateTimePatternGenerator;->TYPE_LIMIT:I
Landroid/icu/text/DateTimePatternGenerator;->_distanceInfo:Landroid/icu/text/DateTimePatternGenerator$DistanceInfo;
-Landroid/icu/text/DecimalFormat$PropertySetter;
Landroid/icu/text/DecimalFormat$PropertySetter;->set(Landroid/icu/impl/number/DecimalFormatProperties;)V
Landroid/icu/text/DecimalFormat;-><init>(Ljava/lang/String;Landroid/icu/text/DecimalFormatSymbols;I)V
Landroid/icu/text/DecimalFormat;->exportedProperties:Landroid/icu/impl/number/DecimalFormatProperties;
@@ -30121,12 +28161,10 @@
Landroid/icu/text/DecimalFormat;->threadLocalProperties:Ljava/lang/ThreadLocal;
Landroid/icu/text/DecimalFormat;->toNumberFormatter()Landroid/icu/number/LocalizedNumberFormatter;
Landroid/icu/text/DecimalFormat;->useCurrency(Landroid/icu/impl/number/DecimalFormatProperties;)Z
-Landroid/icu/text/DecimalFormatSymbols$CacheData;
Landroid/icu/text/DecimalFormatSymbols$CacheData;-><init>(Landroid/icu/util/ULocale;[Ljava/lang/String;[Ljava/lang/String;)V
Landroid/icu/text/DecimalFormatSymbols$CacheData;->digits:[Ljava/lang/String;
Landroid/icu/text/DecimalFormatSymbols$CacheData;->numberElements:[Ljava/lang/String;
Landroid/icu/text/DecimalFormatSymbols$CacheData;->validLocale:Landroid/icu/util/ULocale;
-Landroid/icu/text/DecimalFormatSymbols$DecFmtDataSink;
Landroid/icu/text/DecimalFormatSymbols$DecFmtDataSink;-><init>([Ljava/lang/String;)V
Landroid/icu/text/DecimalFormatSymbols$DecFmtDataSink;->numberElements:[Ljava/lang/String;
Landroid/icu/text/DecimalFormatSymbols;-><init>(Landroid/icu/util/ULocale;Landroid/icu/text/NumberingSystem;)V
@@ -30196,7 +28234,6 @@
Landroid/icu/text/DecimalFormatSymbols;->ulocale:Landroid/icu/util/ULocale;
Landroid/icu/text/DecimalFormatSymbols;->validLocale:Landroid/icu/util/ULocale;
Landroid/icu/text/DecimalFormatSymbols;->zeroDigit:C
-Landroid/icu/text/DecimalFormat_ICU58_Android$AffixForCurrency;
Landroid/icu/text/DecimalFormat_ICU58_Android$AffixForCurrency;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
Landroid/icu/text/DecimalFormat_ICU58_Android$AffixForCurrency;->getNegPrefix()Ljava/lang/String;
Landroid/icu/text/DecimalFormat_ICU58_Android$AffixForCurrency;->getNegSuffix()Ljava/lang/String;
@@ -30208,13 +28245,11 @@
Landroid/icu/text/DecimalFormat_ICU58_Android$AffixForCurrency;->patternType:I
Landroid/icu/text/DecimalFormat_ICU58_Android$AffixForCurrency;->posPrefixPatternForCurrency:Ljava/lang/String;
Landroid/icu/text/DecimalFormat_ICU58_Android$AffixForCurrency;->posSuffixPatternForCurrency:Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android$Unit;
Landroid/icu/text/DecimalFormat_ICU58_Android$Unit;-><init>(Ljava/lang/String;Ljava/lang/String;)V
Landroid/icu/text/DecimalFormat_ICU58_Android$Unit;->prefix:Ljava/lang/String;
Landroid/icu/text/DecimalFormat_ICU58_Android$Unit;->suffix:Ljava/lang/String;
Landroid/icu/text/DecimalFormat_ICU58_Android$Unit;->writePrefix(Ljava/lang/StringBuffer;)V
Landroid/icu/text/DecimalFormat_ICU58_Android$Unit;->writeSuffix(Ljava/lang/StringBuffer;)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;
Landroid/icu/text/DecimalFormat_ICU58_Android;-><init>()V
Landroid/icu/text/DecimalFormat_ICU58_Android;-><init>(Ljava/lang/String;)V
Landroid/icu/text/DecimalFormat_ICU58_Android;-><init>(Ljava/lang/String;Landroid/icu/text/DecimalFormatSymbols;)V
@@ -30436,7 +28471,6 @@
Landroid/icu/text/DecimalFormat_ICU58_Android;->useExponentialNotation:Z
Landroid/icu/text/DecimalFormat_ICU58_Android;->useSignificantDigits:Z
Landroid/icu/text/DecimalFormat_ICU58_Android;->_setMaximumFractionDigits(I)V
-Landroid/icu/text/DictionaryBreakEngine$DequeI;
Landroid/icu/text/DictionaryBreakEngine$DequeI;-><init>()V
Landroid/icu/text/DictionaryBreakEngine$DequeI;->contains(I)Z
Landroid/icu/text/DictionaryBreakEngine$DequeI;->data:[I
@@ -30453,7 +28487,6 @@
Landroid/icu/text/DictionaryBreakEngine$DequeI;->push(I)V
Landroid/icu/text/DictionaryBreakEngine$DequeI;->removeAllElements()V
Landroid/icu/text/DictionaryBreakEngine$DequeI;->size()I
-Landroid/icu/text/DictionaryBreakEngine$PossibleWord;
Landroid/icu/text/DictionaryBreakEngine$PossibleWord;-><init>()V
Landroid/icu/text/DictionaryBreakEngine$PossibleWord;->acceptMarked(Ljava/text/CharacterIterator;)I
Landroid/icu/text/DictionaryBreakEngine$PossibleWord;->backUp(Ljava/text/CharacterIterator;)Z
@@ -30467,20 +28500,16 @@
Landroid/icu/text/DictionaryBreakEngine$PossibleWord;->offset:I
Landroid/icu/text/DictionaryBreakEngine$PossibleWord;->POSSIBLE_WORD_LIST_MAX:I
Landroid/icu/text/DictionaryBreakEngine$PossibleWord;->prefix:I
-Landroid/icu/text/DictionaryBreakEngine;
-Landroid/icu/text/DictionaryBreakEngine;-><init>([[Ljava/lang/Integer;)V
Landroid/icu/text/DictionaryBreakEngine;->divideUpDictionaryRange(Ljava/text/CharacterIterator;IILandroid/icu/text/DictionaryBreakEngine$DequeI;)I
Landroid/icu/text/DictionaryBreakEngine;->findBreaks(Ljava/text/CharacterIterator;IIILandroid/icu/text/DictionaryBreakEngine$DequeI;)I
Landroid/icu/text/DictionaryBreakEngine;->fSet:Landroid/icu/text/UnicodeSet;
Landroid/icu/text/DictionaryBreakEngine;->fTypes:Ljava/util/BitSet;
Landroid/icu/text/DictionaryBreakEngine;->handles(II)Z
Landroid/icu/text/DictionaryBreakEngine;->setCharacters(Landroid/icu/text/UnicodeSet;)V
-Landroid/icu/text/DictionaryMatcher;
Landroid/icu/text/DictionaryMatcher;-><init>()V
Landroid/icu/text/DictionaryMatcher;->getType()I
Landroid/icu/text/DictionaryMatcher;->matches(Ljava/text/CharacterIterator;I[I[II)I
Landroid/icu/text/DictionaryMatcher;->matches(Ljava/text/CharacterIterator;I[I[II[I)I
-Landroid/icu/text/DigitList_Android;
Landroid/icu/text/DigitList_Android;-><init>()V
Landroid/icu/text/DigitList_Android;->append(I)V
Landroid/icu/text/DigitList_Android;->count:I
@@ -30511,18 +28540,14 @@
Landroid/icu/text/DigitList_Android;->setBigDecimalDigits(Ljava/lang/String;IZ)V
Landroid/icu/text/DigitList_Android;->shouldRoundUp(I)Z
Landroid/icu/text/DigitList_Android;->wasRounded()Z
-Landroid/icu/text/DisplayContext$Type;-><init>()V
-Landroid/icu/text/DisplayContext;-><init>(Landroid/icu/text/DisplayContext$Type;I)V
Landroid/icu/text/DisplayContext;->type:Landroid/icu/text/DisplayContext$Type;
Landroid/icu/text/DisplayContext;->value:I
-Landroid/icu/text/DurationFormat;
Landroid/icu/text/DurationFormat;-><init>()V
Landroid/icu/text/DurationFormat;-><init>(Landroid/icu/util/ULocale;)V
Landroid/icu/text/DurationFormat;->formatDurationFrom(JJ)Ljava/lang/String;
Landroid/icu/text/DurationFormat;->formatDurationFromNow(J)Ljava/lang/String;
Landroid/icu/text/DurationFormat;->formatDurationFromNowTo(Ljava/util/Date;)Ljava/lang/String;
Landroid/icu/text/DurationFormat;->getInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/DurationFormat;
-Landroid/icu/text/Edits$Iterator;
Landroid/icu/text/Edits$Iterator;-><init>([CIZZ)V
Landroid/icu/text/Edits$Iterator;->array:[C
Landroid/icu/text/Edits$Iterator;->changed:Z
@@ -30555,7 +28580,6 @@
Landroid/icu/text/Edits$Iterator;->srcIndex:I
Landroid/icu/text/Edits$Iterator;->updateNextIndexes()V
Landroid/icu/text/Edits$Iterator;->updatePreviousIndexes()V
-Landroid/icu/text/Edits;
Landroid/icu/text/Edits;-><init>()V
Landroid/icu/text/Edits;->addReplace(II)V
Landroid/icu/text/Edits;->addUnchanged(I)V
@@ -30585,7 +28609,6 @@
Landroid/icu/text/Edits;->setLastUnit(I)V
Landroid/icu/text/Edits;->SHORT_CHANGE_NUM_MASK:I
Landroid/icu/text/Edits;->STACK_CAPACITY:I
-Landroid/icu/text/FilteredBreakIteratorBuilder;
Landroid/icu/text/FilteredBreakIteratorBuilder;-><init>()V
Landroid/icu/text/FilteredBreakIteratorBuilder;->getEmptyInstance()Landroid/icu/text/FilteredBreakIteratorBuilder;
Landroid/icu/text/FilteredBreakIteratorBuilder;->getInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/FilteredBreakIteratorBuilder;
@@ -30593,13 +28616,11 @@
Landroid/icu/text/FilteredBreakIteratorBuilder;->suppressBreakAfter(Ljava/lang/CharSequence;)Z
Landroid/icu/text/FilteredBreakIteratorBuilder;->unsuppressBreakAfter(Ljava/lang/CharSequence;)Z
Landroid/icu/text/FilteredBreakIteratorBuilder;->wrapIteratorWithFilter(Landroid/icu/text/BreakIterator;)Landroid/icu/text/BreakIterator;
-Landroid/icu/text/FilteredNormalizer2;
Landroid/icu/text/FilteredNormalizer2;-><init>(Landroid/icu/text/Normalizer2;Landroid/icu/text/UnicodeSet;)V
Landroid/icu/text/FilteredNormalizer2;->norm2:Landroid/icu/text/Normalizer2;
Landroid/icu/text/FilteredNormalizer2;->normalize(Ljava/lang/CharSequence;Ljava/lang/Appendable;Landroid/icu/text/UnicodeSet$SpanCondition;)Ljava/lang/Appendable;
Landroid/icu/text/FilteredNormalizer2;->normalizeSecondAndAppend(Ljava/lang/StringBuilder;Ljava/lang/CharSequence;Z)Ljava/lang/StringBuilder;
Landroid/icu/text/FilteredNormalizer2;->set:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/IDNA$Error;-><init>()V
Landroid/icu/text/IDNA$Info;->errors:Ljava/util/EnumSet;
Landroid/icu/text/IDNA$Info;->isBiDi:Z
Landroid/icu/text/IDNA$Info;->isOkBiDi:Z
@@ -30634,23 +28655,18 @@
Landroid/icu/text/IDNA;->setBiDi(Landroid/icu/text/IDNA$Info;)V
Landroid/icu/text/IDNA;->setNotOkBiDi(Landroid/icu/text/IDNA$Info;)V
Landroid/icu/text/IDNA;->setTransitionalDifferent(Landroid/icu/text/IDNA$Info;)V
-Landroid/icu/text/LanguageBreakEngine;
Landroid/icu/text/LanguageBreakEngine;->findBreaks(Ljava/text/CharacterIterator;IIILandroid/icu/text/DictionaryBreakEngine$DequeI;)I
Landroid/icu/text/LanguageBreakEngine;->handles(II)Z
-Landroid/icu/text/ListFormatter$Cache;
Landroid/icu/text/ListFormatter$Cache;-><init>()V
Landroid/icu/text/ListFormatter$Cache;->cache:Landroid/icu/impl/ICUCache;
Landroid/icu/text/ListFormatter$Cache;->get(Landroid/icu/util/ULocale;Ljava/lang/String;)Landroid/icu/text/ListFormatter;
Landroid/icu/text/ListFormatter$Cache;->load(Landroid/icu/util/ULocale;Ljava/lang/String;)Landroid/icu/text/ListFormatter;
-Landroid/icu/text/ListFormatter$FormattedListBuilder;
Landroid/icu/text/ListFormatter$FormattedListBuilder;-><init>(Ljava/lang/Object;Z)V
Landroid/icu/text/ListFormatter$FormattedListBuilder;->append(Ljava/lang/String;Ljava/lang/Object;Z)Landroid/icu/text/ListFormatter$FormattedListBuilder;
Landroid/icu/text/ListFormatter$FormattedListBuilder;->current:Ljava/lang/StringBuilder;
Landroid/icu/text/ListFormatter$FormattedListBuilder;->getOffset()I
Landroid/icu/text/ListFormatter$FormattedListBuilder;->offset:I
Landroid/icu/text/ListFormatter$FormattedListBuilder;->offsetRecorded()Z
-Landroid/icu/text/ListFormatter$Style;
-Landroid/icu/text/ListFormatter$Style;-><init>(Ljava/lang/String;)V
Landroid/icu/text/ListFormatter$Style;->DURATION:Landroid/icu/text/ListFormatter$Style;
Landroid/icu/text/ListFormatter$Style;->DURATION_NARROW:Landroid/icu/text/ListFormatter$Style;
Landroid/icu/text/ListFormatter$Style;->DURATION_SHORT:Landroid/icu/text/ListFormatter$Style;
@@ -30671,13 +28687,9 @@
Landroid/icu/text/ListFormatter;->middle:Ljava/lang/String;
Landroid/icu/text/ListFormatter;->start:Ljava/lang/String;
Landroid/icu/text/ListFormatter;->two:Ljava/lang/String;
-Landroid/icu/text/LocaleDisplayNames$DialectHandling;-><init>()V
-Landroid/icu/text/LocaleDisplayNames$LastResortLocaleDisplayNames;
Landroid/icu/text/LocaleDisplayNames$LastResortLocaleDisplayNames;-><init>(Landroid/icu/util/ULocale;Landroid/icu/text/LocaleDisplayNames$DialectHandling;)V
-Landroid/icu/text/LocaleDisplayNames$LastResortLocaleDisplayNames;-><init>(Landroid/icu/util/ULocale;[[Landroid/icu/text/DisplayContext;)V
Landroid/icu/text/LocaleDisplayNames$LastResortLocaleDisplayNames;->contexts:[Landroid/icu/text/DisplayContext;
Landroid/icu/text/LocaleDisplayNames$LastResortLocaleDisplayNames;->locale:Landroid/icu/util/ULocale;
-Landroid/icu/text/LocaleDisplayNames$UiListItem$UiListItemComparator;
Landroid/icu/text/LocaleDisplayNames$UiListItem$UiListItemComparator;-><init>(Ljava/util/Comparator;Z)V
Landroid/icu/text/LocaleDisplayNames$UiListItem$UiListItemComparator;->collator:Ljava/util/Comparator;
Landroid/icu/text/LocaleDisplayNames$UiListItem$UiListItemComparator;->compare(Landroid/icu/text/LocaleDisplayNames$UiListItem;Landroid/icu/text/LocaleDisplayNames$UiListItem;)I
@@ -30686,13 +28698,11 @@
Landroid/icu/text/LocaleDisplayNames;->FACTORY_DIALECTHANDLING:Ljava/lang/reflect/Method;
Landroid/icu/text/LocaleDisplayNames;->FACTORY_DISPLAYCONTEXT:Ljava/lang/reflect/Method;
Landroid/icu/text/LocaleDisplayNames;->scriptDisplayNameInContext(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/MeasureFormat$FormatWidth;-><init>(Landroid/icu/text/ListFormatter$Style;I)V
Landroid/icu/text/MeasureFormat$FormatWidth;->currencyStyle:I
Landroid/icu/text/MeasureFormat$FormatWidth;->getCurrencyStyle()I
Landroid/icu/text/MeasureFormat$FormatWidth;->getListFormatterStyle()Landroid/icu/text/ListFormatter$Style;
Landroid/icu/text/MeasureFormat$FormatWidth;->INDEX_COUNT:I
Landroid/icu/text/MeasureFormat$FormatWidth;->listFormatterStyle:Landroid/icu/text/ListFormatter$Style;
-Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;
Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;-><init>(Landroid/icu/text/NumberFormat;)V
Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;->format(Landroid/icu/util/CurrencyAmount;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;
Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;->format(Ljava/lang/Number;)Ljava/lang/String;
@@ -30701,7 +28711,6 @@
Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;->getPrefix(Z)Ljava/lang/String;
Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;->getSuffix(Z)Ljava/lang/String;
Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;->nf:Landroid/icu/text/NumberFormat;
-Landroid/icu/text/MeasureFormat$MeasureFormatData;
Landroid/icu/text/MeasureFormat$MeasureFormatData;-><init>()V
Landroid/icu/text/MeasureFormat$MeasureFormatData;->hasPerFormatter(Landroid/icu/text/MeasureFormat$FormatWidth;)Z
Landroid/icu/text/MeasureFormat$MeasureFormatData;->PATTERN_COUNT:I
@@ -30710,7 +28719,6 @@
Landroid/icu/text/MeasureFormat$MeasureFormatData;->unitToStyleToDnam:Ljava/util/Map;
Landroid/icu/text/MeasureFormat$MeasureFormatData;->unitToStyleToPatterns:Ljava/util/Map;
Landroid/icu/text/MeasureFormat$MeasureFormatData;->widthFallback:[Landroid/icu/text/MeasureFormat$FormatWidth;
-Landroid/icu/text/MeasureFormat$MeasureProxy;
Landroid/icu/text/MeasureFormat$MeasureProxy;-><init>()V
Landroid/icu/text/MeasureFormat$MeasureProxy;-><init>(Landroid/icu/util/ULocale;Landroid/icu/text/MeasureFormat$FormatWidth;Landroid/icu/text/NumberFormat;I)V
Landroid/icu/text/MeasureFormat$MeasureProxy;->createTimeUnitFormat()Landroid/icu/text/TimeUnitFormat;
@@ -30719,7 +28727,6 @@
Landroid/icu/text/MeasureFormat$MeasureProxy;->locale:Landroid/icu/util/ULocale;
Landroid/icu/text/MeasureFormat$MeasureProxy;->numberFormat:Landroid/icu/text/NumberFormat;
Landroid/icu/text/MeasureFormat$MeasureProxy;->subClass:I
-Landroid/icu/text/MeasureFormat$NumericFormatters;
Landroid/icu/text/MeasureFormat$NumericFormatters;-><init>(Landroid/icu/text/DateFormat;Landroid/icu/text/DateFormat;Landroid/icu/text/DateFormat;)V
Landroid/icu/text/MeasureFormat$NumericFormatters;->getHourMinute()Landroid/icu/text/DateFormat;
Landroid/icu/text/MeasureFormat$NumericFormatters;->getHourMinuteSecond()Landroid/icu/text/DateFormat;
@@ -30727,11 +28734,9 @@
Landroid/icu/text/MeasureFormat$NumericFormatters;->hourMinute:Landroid/icu/text/DateFormat;
Landroid/icu/text/MeasureFormat$NumericFormatters;->hourMinuteSecond:Landroid/icu/text/DateFormat;
Landroid/icu/text/MeasureFormat$NumericFormatters;->minuteSecond:Landroid/icu/text/DateFormat;
-Landroid/icu/text/MeasureFormat$PatternData;
Landroid/icu/text/MeasureFormat$PatternData;-><init>(Ljava/lang/String;)V
Landroid/icu/text/MeasureFormat$PatternData;->prefix:Ljava/lang/String;
Landroid/icu/text/MeasureFormat$PatternData;->suffix:Ljava/lang/String;
-Landroid/icu/text/MeasureFormat$UnitDataSink;
Landroid/icu/text/MeasureFormat$UnitDataSink;-><init>(Landroid/icu/text/MeasureFormat$MeasureFormatData;)V
Landroid/icu/text/MeasureFormat$UnitDataSink;->cacheData:Landroid/icu/text/MeasureFormat$MeasureFormatData;
Landroid/icu/text/MeasureFormat$UnitDataSink;->consumeAlias(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V
@@ -30758,7 +28763,6 @@
Landroid/icu/text/MeasureFormat;->formatMeasure(Landroid/icu/util/Measure;Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;)Ljava/lang/String;
Landroid/icu/text/MeasureFormat;->formatMeasure(Landroid/icu/util/Measure;Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;Ljava/lang/StringBuilder;Ljava/text/FieldPosition;)Ljava/lang/StringBuilder;
Landroid/icu/text/MeasureFormat;->formatMeasureRange(Landroid/icu/util/Measure;Landroid/icu/util/Measure;)Ljava/lang/String;
-Landroid/icu/text/MeasureFormat;->formatMeasuresSlowTrack(Landroid/icu/text/ListFormatter;Ljava/lang/StringBuilder;Ljava/text/FieldPosition;[[Landroid/icu/util/Measure;)Ljava/lang/StringBuilder;
Landroid/icu/text/MeasureFormat;->formatNumeric(Ljava/util/Date;Landroid/icu/text/DateFormat;Landroid/icu/text/DateFormat$Field;Ljava/lang/Number;Ljava/lang/StringBuilder;)Ljava/lang/StringBuilder;
Landroid/icu/text/MeasureFormat;->formatNumeric([Ljava/lang/Number;Ljava/lang/StringBuilder;)Ljava/lang/StringBuilder;
Landroid/icu/text/MeasureFormat;->formatWidth:Landroid/icu/text/MeasureFormat$FormatWidth;
@@ -30788,7 +28792,6 @@
Landroid/icu/text/MeasureFormat;->withLocale(Landroid/icu/util/ULocale;)Landroid/icu/text/MeasureFormat;
Landroid/icu/text/MeasureFormat;->withNumberFormat(Landroid/icu/text/NumberFormat;)Landroid/icu/text/MeasureFormat;
Landroid/icu/text/MeasureFormat;->withPerUnitAndAppend(Ljava/lang/CharSequence;Landroid/icu/util/MeasureUnit;Ljava/lang/StringBuilder;)I
-Landroid/icu/text/MessageFormat$AppendableWrapper;
Landroid/icu/text/MessageFormat$AppendableWrapper;-><init>(Ljava/lang/StringBuffer;)V
Landroid/icu/text/MessageFormat$AppendableWrapper;-><init>(Ljava/lang/StringBuilder;)V
Landroid/icu/text/MessageFormat$AppendableWrapper;->app:Ljava/lang/Appendable;
@@ -30801,7 +28804,6 @@
Landroid/icu/text/MessageFormat$AppendableWrapper;->formatAndAppend(Ljava/text/Format;Ljava/lang/Object;Ljava/lang/String;)V
Landroid/icu/text/MessageFormat$AppendableWrapper;->length:I
Landroid/icu/text/MessageFormat$AppendableWrapper;->useAttributes()V
-Landroid/icu/text/MessageFormat$AttributeAndPosition;
Landroid/icu/text/MessageFormat$AttributeAndPosition;-><init>(Ljava/lang/Object;II)V
Landroid/icu/text/MessageFormat$AttributeAndPosition;-><init>(Ljava/text/AttributedCharacterIterator$Attribute;Ljava/lang/Object;II)V
Landroid/icu/text/MessageFormat$AttributeAndPosition;->init(Ljava/text/AttributedCharacterIterator$Attribute;Ljava/lang/Object;II)V
@@ -30809,7 +28811,6 @@
Landroid/icu/text/MessageFormat$AttributeAndPosition;->limit:I
Landroid/icu/text/MessageFormat$AttributeAndPosition;->start:I
Landroid/icu/text/MessageFormat$AttributeAndPosition;->value:Ljava/lang/Object;
-Landroid/icu/text/MessageFormat$PluralSelectorContext;
Landroid/icu/text/MessageFormat$PluralSelectorContext;-><init>(ILjava/lang/String;Ljava/lang/Number;D)V
Landroid/icu/text/MessageFormat$PluralSelectorContext;->argName:Ljava/lang/String;
Landroid/icu/text/MessageFormat$PluralSelectorContext;->formatter:Ljava/text/Format;
@@ -30819,7 +28820,6 @@
Landroid/icu/text/MessageFormat$PluralSelectorContext;->numberString:Ljava/lang/String;
Landroid/icu/text/MessageFormat$PluralSelectorContext;->offset:D
Landroid/icu/text/MessageFormat$PluralSelectorContext;->startIndex:I
-Landroid/icu/text/MessageFormat$PluralSelectorProvider;
Landroid/icu/text/MessageFormat$PluralSelectorProvider;-><init>(Landroid/icu/text/MessageFormat;Landroid/icu/text/PluralRules$PluralType;)V
Landroid/icu/text/MessageFormat$PluralSelectorProvider;->msgFormat:Landroid/icu/text/MessageFormat;
Landroid/icu/text/MessageFormat$PluralSelectorProvider;->rules:Landroid/icu/text/PluralRules;
@@ -30882,9 +28882,6 @@
Landroid/icu/text/MessageFormat;->TYPE_TIME:I
Landroid/icu/text/MessageFormat;->ulocale:Landroid/icu/util/ULocale;
Landroid/icu/text/MessageFormat;->updateMetaData(Landroid/icu/text/MessageFormat$AppendableWrapper;ILjava/text/FieldPosition;Ljava/lang/Object;)Ljava/text/FieldPosition;
-Landroid/icu/text/MessagePattern$ApostropheMode;-><init>()V
-Landroid/icu/text/MessagePattern$ArgType;-><init>()V
-Landroid/icu/text/MessagePattern$Part$Type;-><init>()V
Landroid/icu/text/MessagePattern$Part;-><init>(Landroid/icu/text/MessagePattern$Part$Type;III)V
Landroid/icu/text/MessagePattern$Part;->index:I
Landroid/icu/text/MessagePattern$Part;->length:C
@@ -30933,7 +28930,6 @@
Landroid/icu/text/MessagePattern;->skipDouble(I)I
Landroid/icu/text/MessagePattern;->skipIdentifier(I)I
Landroid/icu/text/MessagePattern;->skipWhiteSpace(I)I
-Landroid/icu/text/MessagePatternUtil$ArgNode;
Landroid/icu/text/MessagePatternUtil$ArgNode;-><init>()V
Landroid/icu/text/MessagePatternUtil$ArgNode;->argType:Landroid/icu/text/MessagePattern$ArgType;
Landroid/icu/text/MessagePatternUtil$ArgNode;->complexStyle:Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;
@@ -30948,7 +28944,6 @@
Landroid/icu/text/MessagePatternUtil$ArgNode;->number:I
Landroid/icu/text/MessagePatternUtil$ArgNode;->style:Ljava/lang/String;
Landroid/icu/text/MessagePatternUtil$ArgNode;->typeName:Ljava/lang/String;
-Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;
Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;-><init>(Landroid/icu/text/MessagePattern$ArgType;)V
Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;->addVariant(Landroid/icu/text/MessagePatternUtil$VariantNode;)V
Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;->argType:Landroid/icu/text/MessagePattern$ArgType;
@@ -30961,31 +28956,24 @@
Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;->hasExplicitOffset()Z
Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;->list:Ljava/util/List;
Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;->offset:D
-Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type;
-Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type;-><init>()V
Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type;->ARG:Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type;
Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type;->REPLACE_NUMBER:Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type;
Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type;->TEXT:Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type;
Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type;->valueOf(Ljava/lang/String;)Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type;
Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type;->values()[Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type;
-Landroid/icu/text/MessagePatternUtil$MessageContentsNode;
Landroid/icu/text/MessagePatternUtil$MessageContentsNode;-><init>(Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type;)V
Landroid/icu/text/MessagePatternUtil$MessageContentsNode;->createReplaceNumberNode()Landroid/icu/text/MessagePatternUtil$MessageContentsNode;
Landroid/icu/text/MessagePatternUtil$MessageContentsNode;->getType()Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type;
Landroid/icu/text/MessagePatternUtil$MessageContentsNode;->type:Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type;
-Landroid/icu/text/MessagePatternUtil$MessageNode;
Landroid/icu/text/MessagePatternUtil$MessageNode;-><init>()V
Landroid/icu/text/MessagePatternUtil$MessageNode;->addContentsNode(Landroid/icu/text/MessagePatternUtil$MessageContentsNode;)V
Landroid/icu/text/MessagePatternUtil$MessageNode;->freeze()Landroid/icu/text/MessagePatternUtil$MessageNode;
Landroid/icu/text/MessagePatternUtil$MessageNode;->getContents()Ljava/util/List;
Landroid/icu/text/MessagePatternUtil$MessageNode;->list:Ljava/util/List;
-Landroid/icu/text/MessagePatternUtil$Node;
Landroid/icu/text/MessagePatternUtil$Node;-><init>()V
-Landroid/icu/text/MessagePatternUtil$TextNode;
Landroid/icu/text/MessagePatternUtil$TextNode;-><init>(Ljava/lang/String;)V
Landroid/icu/text/MessagePatternUtil$TextNode;->getText()Ljava/lang/String;
Landroid/icu/text/MessagePatternUtil$TextNode;->text:Ljava/lang/String;
-Landroid/icu/text/MessagePatternUtil$VariantNode;
Landroid/icu/text/MessagePatternUtil$VariantNode;-><init>()V
Landroid/icu/text/MessagePatternUtil$VariantNode;->getMessage()Landroid/icu/text/MessagePatternUtil$MessageNode;
Landroid/icu/text/MessagePatternUtil$VariantNode;->getSelector()Ljava/lang/String;
@@ -30994,7 +28982,6 @@
Landroid/icu/text/MessagePatternUtil$VariantNode;->msgNode:Landroid/icu/text/MessagePatternUtil$MessageNode;
Landroid/icu/text/MessagePatternUtil$VariantNode;->numericValue:D
Landroid/icu/text/MessagePatternUtil$VariantNode;->selector:Ljava/lang/String;
-Landroid/icu/text/MessagePatternUtil;
Landroid/icu/text/MessagePatternUtil;-><init>()V
Landroid/icu/text/MessagePatternUtil;->buildArgNode(Landroid/icu/text/MessagePattern;II)Landroid/icu/text/MessagePatternUtil$ArgNode;
Landroid/icu/text/MessagePatternUtil;->buildChoiceStyleNode(Landroid/icu/text/MessagePattern;II)Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;
@@ -31003,7 +28990,6 @@
Landroid/icu/text/MessagePatternUtil;->buildMessageNode(Ljava/lang/String;)Landroid/icu/text/MessagePatternUtil$MessageNode;
Landroid/icu/text/MessagePatternUtil;->buildPluralStyleNode(Landroid/icu/text/MessagePattern;IILandroid/icu/text/MessagePattern$ArgType;)Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;
Landroid/icu/text/MessagePatternUtil;->buildSelectStyleNode(Landroid/icu/text/MessagePattern;II)Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;
-Landroid/icu/text/NFRule;
Landroid/icu/text/NFRule;-><init>(Landroid/icu/text/RuleBasedNumberFormat;Ljava/lang/String;)V
Landroid/icu/text/NFRule;->allIgnorable(Ljava/lang/String;)Z
Landroid/icu/text/NFRule;->baseValue:J
@@ -31043,7 +29029,6 @@
Landroid/icu/text/NFRule;->sub1:Landroid/icu/text/NFSubstitution;
Landroid/icu/text/NFRule;->sub2:Landroid/icu/text/NFSubstitution;
Landroid/icu/text/NFRule;->ZERO:Ljava/lang/Long;
-Landroid/icu/text/NFRuleSet;
Landroid/icu/text/NFRuleSet;-><init>(Landroid/icu/text/RuleBasedNumberFormat;[Ljava/lang/String;I)V
Landroid/icu/text/NFRuleSet;->findFractionRuleSetRule(D)Landroid/icu/text/NFRule;
Landroid/icu/text/NFRuleSet;->findNormalRule(J)Landroid/icu/text/NFRule;
@@ -31075,7 +29060,6 @@
Landroid/icu/text/NFRuleSet;->setBestFractionRule(ILandroid/icu/text/NFRule;Z)V
Landroid/icu/text/NFRuleSet;->setDecimalFormatSymbols(Landroid/icu/text/DecimalFormatSymbols;)V
Landroid/icu/text/NFRuleSet;->setNonNumericalRule(Landroid/icu/text/NFRule;)V
-Landroid/icu/text/NFSubstitution;
Landroid/icu/text/NFSubstitution;-><init>(ILandroid/icu/text/NFRuleSet;Ljava/lang/String;)V
Landroid/icu/text/NFSubstitution;->calcUpperBound(D)D
Landroid/icu/text/NFSubstitution;->composeRuleValue(DD)D
@@ -31094,76 +29078,54 @@
Landroid/icu/text/NFSubstitution;->tokenChar()C
Landroid/icu/text/NFSubstitution;->transformNumber(D)D
Landroid/icu/text/NFSubstitution;->transformNumber(J)J
-Landroid/icu/text/Normalizer$CharsAppendable;
Landroid/icu/text/Normalizer$CharsAppendable;-><init>([CII)V
Landroid/icu/text/Normalizer$CharsAppendable;->chars:[C
Landroid/icu/text/Normalizer$CharsAppendable;->length()I
Landroid/icu/text/Normalizer$CharsAppendable;->limit:I
Landroid/icu/text/Normalizer$CharsAppendable;->offset:I
Landroid/icu/text/Normalizer$CharsAppendable;->start:I
-Landroid/icu/text/Normalizer$CmpEquivLevel;
Landroid/icu/text/Normalizer$CmpEquivLevel;-><init>()V
Landroid/icu/text/Normalizer$CmpEquivLevel;->cs:Ljava/lang/CharSequence;
Landroid/icu/text/Normalizer$CmpEquivLevel;->s:I
-Landroid/icu/text/Normalizer$FCD32ModeImpl;
Landroid/icu/text/Normalizer$FCD32ModeImpl;-><init>()V
Landroid/icu/text/Normalizer$FCD32ModeImpl;->INSTANCE:Landroid/icu/text/Normalizer$ModeImpl;
-Landroid/icu/text/Normalizer$FCDMode;
Landroid/icu/text/Normalizer$FCDMode;-><init>()V
Landroid/icu/text/Normalizer$FCDMode;->getNormalizer2(I)Landroid/icu/text/Normalizer2;
-Landroid/icu/text/Normalizer$FCDModeImpl;
Landroid/icu/text/Normalizer$FCDModeImpl;-><init>()V
Landroid/icu/text/Normalizer$FCDModeImpl;->INSTANCE:Landroid/icu/text/Normalizer$ModeImpl;
-Landroid/icu/text/Normalizer$Mode;
Landroid/icu/text/Normalizer$Mode;-><init>()V
Landroid/icu/text/Normalizer$Mode;->getNormalizer2(I)Landroid/icu/text/Normalizer2;
-Landroid/icu/text/Normalizer$ModeImpl;
Landroid/icu/text/Normalizer$ModeImpl;-><init>(Landroid/icu/text/Normalizer2;)V
Landroid/icu/text/Normalizer$ModeImpl;->normalizer2:Landroid/icu/text/Normalizer2;
-Landroid/icu/text/Normalizer$NFC32ModeImpl;
Landroid/icu/text/Normalizer$NFC32ModeImpl;-><init>()V
Landroid/icu/text/Normalizer$NFC32ModeImpl;->INSTANCE:Landroid/icu/text/Normalizer$ModeImpl;
-Landroid/icu/text/Normalizer$NFCMode;
Landroid/icu/text/Normalizer$NFCMode;-><init>()V
Landroid/icu/text/Normalizer$NFCMode;->getNormalizer2(I)Landroid/icu/text/Normalizer2;
-Landroid/icu/text/Normalizer$NFCModeImpl;
Landroid/icu/text/Normalizer$NFCModeImpl;-><init>()V
Landroid/icu/text/Normalizer$NFCModeImpl;->INSTANCE:Landroid/icu/text/Normalizer$ModeImpl;
-Landroid/icu/text/Normalizer$NFD32ModeImpl;
Landroid/icu/text/Normalizer$NFD32ModeImpl;-><init>()V
Landroid/icu/text/Normalizer$NFD32ModeImpl;->INSTANCE:Landroid/icu/text/Normalizer$ModeImpl;
-Landroid/icu/text/Normalizer$NFDMode;
Landroid/icu/text/Normalizer$NFDMode;-><init>()V
Landroid/icu/text/Normalizer$NFDMode;->getNormalizer2(I)Landroid/icu/text/Normalizer2;
-Landroid/icu/text/Normalizer$NFDModeImpl;
Landroid/icu/text/Normalizer$NFDModeImpl;-><init>()V
Landroid/icu/text/Normalizer$NFDModeImpl;->INSTANCE:Landroid/icu/text/Normalizer$ModeImpl;
-Landroid/icu/text/Normalizer$NFKC32ModeImpl;
Landroid/icu/text/Normalizer$NFKC32ModeImpl;-><init>()V
Landroid/icu/text/Normalizer$NFKC32ModeImpl;->INSTANCE:Landroid/icu/text/Normalizer$ModeImpl;
-Landroid/icu/text/Normalizer$NFKCMode;
Landroid/icu/text/Normalizer$NFKCMode;-><init>()V
Landroid/icu/text/Normalizer$NFKCMode;->getNormalizer2(I)Landroid/icu/text/Normalizer2;
-Landroid/icu/text/Normalizer$NFKCModeImpl;
Landroid/icu/text/Normalizer$NFKCModeImpl;-><init>()V
Landroid/icu/text/Normalizer$NFKCModeImpl;->INSTANCE:Landroid/icu/text/Normalizer$ModeImpl;
-Landroid/icu/text/Normalizer$NFKD32ModeImpl;
Landroid/icu/text/Normalizer$NFKD32ModeImpl;-><init>()V
Landroid/icu/text/Normalizer$NFKD32ModeImpl;->INSTANCE:Landroid/icu/text/Normalizer$ModeImpl;
-Landroid/icu/text/Normalizer$NFKDMode;
Landroid/icu/text/Normalizer$NFKDMode;-><init>()V
Landroid/icu/text/Normalizer$NFKDMode;->getNormalizer2(I)Landroid/icu/text/Normalizer2;
-Landroid/icu/text/Normalizer$NFKDModeImpl;
Landroid/icu/text/Normalizer$NFKDModeImpl;-><init>()V
Landroid/icu/text/Normalizer$NFKDModeImpl;->INSTANCE:Landroid/icu/text/Normalizer$ModeImpl;
-Landroid/icu/text/Normalizer$NONEMode;
Landroid/icu/text/Normalizer$NONEMode;-><init>()V
Landroid/icu/text/Normalizer$NONEMode;->getNormalizer2(I)Landroid/icu/text/Normalizer2;
Landroid/icu/text/Normalizer$QuickCheckResult;-><init>(I)V
-Landroid/icu/text/Normalizer$Unicode32;
Landroid/icu/text/Normalizer$Unicode32;-><init>()V
Landroid/icu/text/Normalizer$Unicode32;->INSTANCE:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/Normalizer2$Mode;-><init>()V
Landroid/icu/text/Normalizer2;-><init>()V
Landroid/icu/text/Normalizer;-><init>(Landroid/icu/text/UCharacterIterator;Landroid/icu/text/Normalizer$Mode;I)V
Landroid/icu/text/Normalizer;-><init>(Ljava/lang/String;Landroid/icu/text/Normalizer$Mode;I)V
@@ -31252,7 +29214,6 @@
Landroid/icu/text/Normalizer;->startIndex()I
Landroid/icu/text/Normalizer;->text:Landroid/icu/text/UCharacterIterator;
Landroid/icu/text/Normalizer;->UNICODE_3_2:I
-Landroid/icu/text/NumberFormat$NumberFormatFactory;
Landroid/icu/text/NumberFormat$NumberFormatFactory;-><init>()V
Landroid/icu/text/NumberFormat$NumberFormatFactory;->createFormat(Landroid/icu/util/ULocale;I)Landroid/icu/text/NumberFormat;
Landroid/icu/text/NumberFormat$NumberFormatFactory;->createFormat(Ljava/util/Locale;I)Landroid/icu/text/NumberFormat;
@@ -31263,14 +29224,12 @@
Landroid/icu/text/NumberFormat$NumberFormatFactory;->FORMAT_SCIENTIFIC:I
Landroid/icu/text/NumberFormat$NumberFormatFactory;->getSupportedLocaleNames()Ljava/util/Set;
Landroid/icu/text/NumberFormat$NumberFormatFactory;->visible()Z
-Landroid/icu/text/NumberFormat$NumberFormatShim;
Landroid/icu/text/NumberFormat$NumberFormatShim;-><init>()V
Landroid/icu/text/NumberFormat$NumberFormatShim;->createInstance(Landroid/icu/util/ULocale;I)Landroid/icu/text/NumberFormat;
Landroid/icu/text/NumberFormat$NumberFormatShim;->getAvailableLocales()[Ljava/util/Locale;
Landroid/icu/text/NumberFormat$NumberFormatShim;->getAvailableULocales()[Landroid/icu/util/ULocale;
Landroid/icu/text/NumberFormat$NumberFormatShim;->registerFactory(Landroid/icu/text/NumberFormat$NumberFormatFactory;)Ljava/lang/Object;
Landroid/icu/text/NumberFormat$NumberFormatShim;->unregister(Ljava/lang/Object;)Z
-Landroid/icu/text/NumberFormat$SimpleNumberFormatFactory;
Landroid/icu/text/NumberFormat$SimpleNumberFormatFactory;-><init>(Landroid/icu/util/ULocale;)V
Landroid/icu/text/NumberFormat$SimpleNumberFormatFactory;-><init>(Landroid/icu/util/ULocale;Z)V
Landroid/icu/text/NumberFormat$SimpleNumberFormatFactory;-><init>(Ljava/util/Locale;)V
@@ -31306,7 +29265,6 @@
Landroid/icu/text/NumberFormat;->serialVersionOnStream:I
Landroid/icu/text/NumberFormat;->shim:Landroid/icu/text/NumberFormat$NumberFormatShim;
Landroid/icu/text/NumberFormat;->unregister(Ljava/lang/Object;)Z
-Landroid/icu/text/NumberingSystem$LocaleLookupData;
Landroid/icu/text/NumberingSystem$LocaleLookupData;-><init>(Landroid/icu/util/ULocale;Ljava/lang/String;)V
Landroid/icu/text/NumberingSystem$LocaleLookupData;->locale:Landroid/icu/util/ULocale;
Landroid/icu/text/NumberingSystem$LocaleLookupData;->numbersKeyword:Ljava/lang/String;
@@ -31321,10 +29279,7 @@
Landroid/icu/text/NumberingSystem;->name:Ljava/lang/String;
Landroid/icu/text/NumberingSystem;->OTHER_NS_KEYWORDS:[Ljava/lang/String;
Landroid/icu/text/NumberingSystem;->radix:I
-Landroid/icu/text/PluralFormat$PluralSelector;
Landroid/icu/text/PluralFormat$PluralSelector;->select(Ljava/lang/Object;D)Ljava/lang/String;
-Landroid/icu/text/PluralFormat$PluralSelectorAdapter;
-Landroid/icu/text/PluralFormat$PluralSelectorAdapter;-><init>()V
Landroid/icu/text/PluralFormat$PluralSelectorAdapter;->select(Ljava/lang/Object;D)Ljava/lang/String;
Landroid/icu/text/PluralFormat;-><init>(Landroid/icu/util/ULocale;Landroid/icu/text/PluralRules$PluralType;Ljava/lang/String;Landroid/icu/text/NumberFormat;)V
Landroid/icu/text/PluralFormat;->findSubMessage(Landroid/icu/text/MessagePattern;ILandroid/icu/text/PluralFormat$PluralSelector;Ljava/lang/Object;D)I
@@ -31341,7 +29296,6 @@
Landroid/icu/text/PluralFormat;->resetPattern()V
Landroid/icu/text/PluralFormat;->setLocale(Landroid/icu/util/ULocale;)V
Landroid/icu/text/PluralFormat;->ulocale:Landroid/icu/util/ULocale;
-Landroid/icu/text/PluralRanges$Matrix;
Landroid/icu/text/PluralRanges$Matrix;-><init>()V
Landroid/icu/text/PluralRanges$Matrix;->compareTo(Landroid/icu/text/PluralRanges$Matrix;)I
Landroid/icu/text/PluralRanges$Matrix;->data:[B
@@ -31350,7 +29304,6 @@
Landroid/icu/text/PluralRanges$Matrix;->set(Landroid/icu/impl/StandardPlural;Landroid/icu/impl/StandardPlural;Landroid/icu/impl/StandardPlural;)V
Landroid/icu/text/PluralRanges$Matrix;->setIfNew(Landroid/icu/impl/StandardPlural;Landroid/icu/impl/StandardPlural;Landroid/icu/impl/StandardPlural;)V
Landroid/icu/text/PluralRanges$Matrix;->startSame(Landroid/icu/impl/StandardPlural;Ljava/util/EnumSet;Landroid/icu/util/Output;)Landroid/icu/impl/StandardPlural;
-Landroid/icu/text/PluralRanges;
Landroid/icu/text/PluralRanges;-><init>()V
Landroid/icu/text/PluralRanges;->add(Landroid/icu/impl/StandardPlural;Landroid/icu/impl/StandardPlural;Landroid/icu/impl/StandardPlural;)V
Landroid/icu/text/PluralRanges;->compareTo(Landroid/icu/text/PluralRanges;)I
@@ -31360,18 +29313,14 @@
Landroid/icu/text/PluralRanges;->isExplicitlySet(Landroid/icu/impl/StandardPlural;)Z
Landroid/icu/text/PluralRanges;->isFrozen:Z
Landroid/icu/text/PluralRanges;->matrix:Landroid/icu/text/PluralRanges$Matrix;
-Landroid/icu/text/PluralRules$AndConstraint;
Landroid/icu/text/PluralRules$AndConstraint;-><init>(Landroid/icu/text/PluralRules$Constraint;Landroid/icu/text/PluralRules$Constraint;)V
Landroid/icu/text/PluralRules$AndConstraint;->isFulfilled(Landroid/icu/text/PluralRules$IFixedDecimal;)Z
Landroid/icu/text/PluralRules$AndConstraint;->isLimited(Landroid/icu/text/PluralRules$SampleType;)Z
-Landroid/icu/text/PluralRules$BinaryConstraint;
Landroid/icu/text/PluralRules$BinaryConstraint;-><init>(Landroid/icu/text/PluralRules$Constraint;Landroid/icu/text/PluralRules$Constraint;)V
Landroid/icu/text/PluralRules$BinaryConstraint;->a:Landroid/icu/text/PluralRules$Constraint;
Landroid/icu/text/PluralRules$BinaryConstraint;->b:Landroid/icu/text/PluralRules$Constraint;
-Landroid/icu/text/PluralRules$Constraint;
Landroid/icu/text/PluralRules$Constraint;->isFulfilled(Landroid/icu/text/PluralRules$IFixedDecimal;)Z
Landroid/icu/text/PluralRules$Constraint;->isLimited(Landroid/icu/text/PluralRules$SampleType;)Z
-Landroid/icu/text/PluralRules$Factory;
Landroid/icu/text/PluralRules$Factory;-><init>()V
Landroid/icu/text/PluralRules$Factory;->forLocale(Landroid/icu/util/ULocale;)Landroid/icu/text/PluralRules;
Landroid/icu/text/PluralRules$Factory;->forLocale(Landroid/icu/util/ULocale;Landroid/icu/text/PluralRules$PluralType;)Landroid/icu/text/PluralRules;
@@ -31379,7 +29328,6 @@
Landroid/icu/text/PluralRules$Factory;->getDefaultFactory()Landroid/icu/impl/PluralRulesLoader;
Landroid/icu/text/PluralRules$Factory;->getFunctionalEquivalent(Landroid/icu/util/ULocale;[Z)Landroid/icu/util/ULocale;
Landroid/icu/text/PluralRules$Factory;->hasOverride(Landroid/icu/util/ULocale;)Z
-Landroid/icu/text/PluralRules$FixedDecimal;
Landroid/icu/text/PluralRules$FixedDecimal;-><init>(D)V
Landroid/icu/text/PluralRules$FixedDecimal;-><init>(DI)V
Landroid/icu/text/PluralRules$FixedDecimal;-><init>(DIJ)V
@@ -31415,11 +29363,9 @@
Landroid/icu/text/PluralRules$FixedDecimal;->source:D
Landroid/icu/text/PluralRules$FixedDecimal;->visibleDecimalDigitCount:I
Landroid/icu/text/PluralRules$FixedDecimal;->visibleDecimalDigitCountWithoutTrailingZeros:I
-Landroid/icu/text/PluralRules$FixedDecimalRange;
Landroid/icu/text/PluralRules$FixedDecimalRange;-><init>(Landroid/icu/text/PluralRules$FixedDecimal;Landroid/icu/text/PluralRules$FixedDecimal;)V
Landroid/icu/text/PluralRules$FixedDecimalRange;->end:Landroid/icu/text/PluralRules$FixedDecimal;
Landroid/icu/text/PluralRules$FixedDecimalRange;->start:Landroid/icu/text/PluralRules$FixedDecimal;
-Landroid/icu/text/PluralRules$FixedDecimalSamples;
Landroid/icu/text/PluralRules$FixedDecimalSamples;-><init>(Landroid/icu/text/PluralRules$SampleType;Ljava/util/Set;Z)V
Landroid/icu/text/PluralRules$FixedDecimalSamples;->addSamples(Ljava/util/Set;)Ljava/util/Set;
Landroid/icu/text/PluralRules$FixedDecimalSamples;->bounded:Z
@@ -31429,12 +29375,9 @@
Landroid/icu/text/PluralRules$FixedDecimalSamples;->parse(Ljava/lang/String;)Landroid/icu/text/PluralRules$FixedDecimalSamples;
Landroid/icu/text/PluralRules$FixedDecimalSamples;->samples:Ljava/util/Set;
Landroid/icu/text/PluralRules$FixedDecimalSamples;->sampleType:Landroid/icu/text/PluralRules$SampleType;
-Landroid/icu/text/PluralRules$IFixedDecimal;
Landroid/icu/text/PluralRules$IFixedDecimal;->getPluralOperand(Landroid/icu/text/PluralRules$Operand;)D
Landroid/icu/text/PluralRules$IFixedDecimal;->isInfinite()Z
Landroid/icu/text/PluralRules$IFixedDecimal;->isNaN()Z
-Landroid/icu/text/PluralRules$KeywordStatus;
-Landroid/icu/text/PluralRules$KeywordStatus;-><init>()V
Landroid/icu/text/PluralRules$KeywordStatus;->BOUNDED:Landroid/icu/text/PluralRules$KeywordStatus;
Landroid/icu/text/PluralRules$KeywordStatus;->INVALID:Landroid/icu/text/PluralRules$KeywordStatus;
Landroid/icu/text/PluralRules$KeywordStatus;->SUPPRESSED:Landroid/icu/text/PluralRules$KeywordStatus;
@@ -31442,8 +29385,6 @@
Landroid/icu/text/PluralRules$KeywordStatus;->UNIQUE:Landroid/icu/text/PluralRules$KeywordStatus;
Landroid/icu/text/PluralRules$KeywordStatus;->valueOf(Ljava/lang/String;)Landroid/icu/text/PluralRules$KeywordStatus;
Landroid/icu/text/PluralRules$KeywordStatus;->values()[Landroid/icu/text/PluralRules$KeywordStatus;
-Landroid/icu/text/PluralRules$Operand;
-Landroid/icu/text/PluralRules$Operand;-><init>()V
Landroid/icu/text/PluralRules$Operand;->f:Landroid/icu/text/PluralRules$Operand;
Landroid/icu/text/PluralRules$Operand;->i:Landroid/icu/text/PluralRules$Operand;
Landroid/icu/text/PluralRules$Operand;->j:Landroid/icu/text/PluralRules$Operand;
@@ -31453,12 +29394,9 @@
Landroid/icu/text/PluralRules$Operand;->valueOf(Ljava/lang/String;)Landroid/icu/text/PluralRules$Operand;
Landroid/icu/text/PluralRules$Operand;->values()[Landroid/icu/text/PluralRules$Operand;
Landroid/icu/text/PluralRules$Operand;->w:Landroid/icu/text/PluralRules$Operand;
-Landroid/icu/text/PluralRules$OrConstraint;
Landroid/icu/text/PluralRules$OrConstraint;-><init>(Landroid/icu/text/PluralRules$Constraint;Landroid/icu/text/PluralRules$Constraint;)V
Landroid/icu/text/PluralRules$OrConstraint;->isFulfilled(Landroid/icu/text/PluralRules$IFixedDecimal;)Z
Landroid/icu/text/PluralRules$OrConstraint;->isLimited(Landroid/icu/text/PluralRules$SampleType;)Z
-Landroid/icu/text/PluralRules$PluralType;-><init>()V
-Landroid/icu/text/PluralRules$RangeConstraint;
Landroid/icu/text/PluralRules$RangeConstraint;-><init>(IZLandroid/icu/text/PluralRules$Operand;ZDD[J)V
Landroid/icu/text/PluralRules$RangeConstraint;->inRange:Z
Landroid/icu/text/PluralRules$RangeConstraint;->integersOnly:Z
@@ -31469,7 +29407,6 @@
Landroid/icu/text/PluralRules$RangeConstraint;->operand:Landroid/icu/text/PluralRules$Operand;
Landroid/icu/text/PluralRules$RangeConstraint;->range_list:[J
Landroid/icu/text/PluralRules$RangeConstraint;->upperBound:D
-Landroid/icu/text/PluralRules$Rule;
Landroid/icu/text/PluralRules$Rule;-><init>(Ljava/lang/String;Landroid/icu/text/PluralRules$Constraint;Landroid/icu/text/PluralRules$FixedDecimalSamples;Landroid/icu/text/PluralRules$FixedDecimalSamples;)V
Landroid/icu/text/PluralRules$Rule;->and(Landroid/icu/text/PluralRules$Constraint;)Landroid/icu/text/PluralRules$Rule;
Landroid/icu/text/PluralRules$Rule;->appliesTo(Landroid/icu/text/PluralRules$IFixedDecimal;)Z
@@ -31481,7 +29418,6 @@
Landroid/icu/text/PluralRules$Rule;->isLimited(Landroid/icu/text/PluralRules$SampleType;)Z
Landroid/icu/text/PluralRules$Rule;->keyword:Ljava/lang/String;
Landroid/icu/text/PluralRules$Rule;->or(Landroid/icu/text/PluralRules$Constraint;)Landroid/icu/text/PluralRules$Rule;
-Landroid/icu/text/PluralRules$RuleList;
Landroid/icu/text/PluralRules$RuleList;-><init>()V
Landroid/icu/text/PluralRules$RuleList;->addRule(Landroid/icu/text/PluralRules$Rule;)Landroid/icu/text/PluralRules$RuleList;
Landroid/icu/text/PluralRules$RuleList;->computeLimited(Ljava/lang/String;Landroid/icu/text/PluralRules$SampleType;)Z
@@ -31495,13 +29431,10 @@
Landroid/icu/text/PluralRules$RuleList;->select(Landroid/icu/text/PluralRules$IFixedDecimal;)Ljava/lang/String;
Landroid/icu/text/PluralRules$RuleList;->select(Landroid/icu/text/PluralRules$IFixedDecimal;Ljava/lang/String;)Z
Landroid/icu/text/PluralRules$RuleList;->selectRule(Landroid/icu/text/PluralRules$IFixedDecimal;)Landroid/icu/text/PluralRules$Rule;
-Landroid/icu/text/PluralRules$SampleType;
-Landroid/icu/text/PluralRules$SampleType;-><init>()V
Landroid/icu/text/PluralRules$SampleType;->DECIMAL:Landroid/icu/text/PluralRules$SampleType;
Landroid/icu/text/PluralRules$SampleType;->INTEGER:Landroid/icu/text/PluralRules$SampleType;
Landroid/icu/text/PluralRules$SampleType;->valueOf(Ljava/lang/String;)Landroid/icu/text/PluralRules$SampleType;
Landroid/icu/text/PluralRules$SampleType;->values()[Landroid/icu/text/PluralRules$SampleType;
-Landroid/icu/text/PluralRules$SimpleTokenizer;
Landroid/icu/text/PluralRules$SimpleTokenizer;-><init>()V
Landroid/icu/text/PluralRules$SimpleTokenizer;->BREAK_AND_IGNORE:Landroid/icu/text/UnicodeSet;
Landroid/icu/text/PluralRules$SimpleTokenizer;->BREAK_AND_KEEP:Landroid/icu/text/UnicodeSet;
@@ -31546,7 +29479,6 @@
Landroid/icu/text/PluralRules;->SEMI_SEPARATED:Ljava/util/regex/Pattern;
Landroid/icu/text/PluralRules;->TILDE_SEPARATED:Ljava/util/regex/Pattern;
Landroid/icu/text/PluralRules;->unexpected(Ljava/lang/String;Ljava/lang/String;)Ljava/text/ParseException;
-Landroid/icu/text/PluralSamples;
Landroid/icu/text/PluralSamples;-><init>(Landroid/icu/text/PluralRules;)V
Landroid/icu/text/PluralSamples;->addIfNotPresent(DLjava/util/Set;Ljava/util/Map;)Z
Landroid/icu/text/PluralSamples;->addRelation(Ljava/util/Map;Ljava/lang/String;Landroid/icu/text/PluralRules$FixedDecimal;)V
@@ -31565,15 +29497,12 @@
Landroid/icu/text/PluralSamples;->_keyFractionSamplesMap:Ljava/util/Map;
Landroid/icu/text/PluralSamples;->_keyLimitedMap:Ljava/util/Map;
Landroid/icu/text/PluralSamples;->_keySamplesMap:Ljava/util/Map;
-Landroid/icu/text/RawCollationKey;
Landroid/icu/text/RawCollationKey;-><init>()V
Landroid/icu/text/RawCollationKey;-><init>(I)V
Landroid/icu/text/RawCollationKey;-><init>([B)V
Landroid/icu/text/RawCollationKey;-><init>([BI)V
Landroid/icu/text/RawCollationKey;->compareTo(Landroid/icu/text/RawCollationKey;)I
-Landroid/icu/text/RBBIDataWrapper$IsAcceptable;
Landroid/icu/text/RBBIDataWrapper$IsAcceptable;-><init>()V
-Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;
Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;-><init>()V
Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fCatCount:I
Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fFormatVersion:[B
@@ -31593,7 +29522,6 @@
Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fStatusTableLen:I
Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fTrie:I
Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fTrieLen:I
-Landroid/icu/text/RBBIDataWrapper;
Landroid/icu/text/RBBIDataWrapper;-><init>()V
Landroid/icu/text/RBBIDataWrapper;->ACCEPTING:I
Landroid/icu/text/RBBIDataWrapper;->DATA_FORMAT:I
@@ -31647,37 +29575,25 @@
Landroid/icu/text/RBBIDataWrapper;->ROWLEN:I
Landroid/icu/text/RBBIDataWrapper;->ROW_DATA:I
Landroid/icu/text/RBBIDataWrapper;->TAGIDX:I
-Landroid/icu/text/RbnfLenientScanner;
Landroid/icu/text/RbnfLenientScanner;->allIgnorable(Ljava/lang/String;)Z
Landroid/icu/text/RbnfLenientScanner;->findText(Ljava/lang/String;Ljava/lang/String;I)[I
Landroid/icu/text/RbnfLenientScanner;->prefixLength(Ljava/lang/String;Ljava/lang/String;)I
-Landroid/icu/text/RbnfLenientScannerProvider;
Landroid/icu/text/RbnfLenientScannerProvider;->get(Landroid/icu/util/ULocale;Ljava/lang/String;)Landroid/icu/text/RbnfLenientScanner;
-Landroid/icu/text/RBNFPostProcessor;
Landroid/icu/text/RBNFPostProcessor;->init(Landroid/icu/text/RuleBasedNumberFormat;Ljava/lang/String;)V
Landroid/icu/text/RBNFPostProcessor;->process(Ljava/lang/StringBuilder;Landroid/icu/text/NFRuleSet;)V
-Landroid/icu/text/RelativeDateTimeFormatter$AbsoluteUnit;-><init>()V
Landroid/icu/text/RelativeDateTimeFormatter$AbsoluteUnit;->QUARTER:Landroid/icu/text/RelativeDateTimeFormatter$AbsoluteUnit;
-Landroid/icu/text/RelativeDateTimeFormatter$Cache;
Landroid/icu/text/RelativeDateTimeFormatter$Cache;-><init>()V
Landroid/icu/text/RelativeDateTimeFormatter$Cache;->cache:Landroid/icu/impl/CacheBase;
Landroid/icu/text/RelativeDateTimeFormatter$Cache;->get(Landroid/icu/util/ULocale;)Landroid/icu/text/RelativeDateTimeFormatter$RelativeDateTimeFormatterData;
-Landroid/icu/text/RelativeDateTimeFormatter$Direction;-><init>()V
-Landroid/icu/text/RelativeDateTimeFormatter$Loader;
Landroid/icu/text/RelativeDateTimeFormatter$Loader;-><init>(Landroid/icu/util/ULocale;)V
Landroid/icu/text/RelativeDateTimeFormatter$Loader;->getDateTimePattern(Landroid/icu/impl/ICUResourceBundle;)Ljava/lang/String;
Landroid/icu/text/RelativeDateTimeFormatter$Loader;->load()Landroid/icu/text/RelativeDateTimeFormatter$RelativeDateTimeFormatterData;
Landroid/icu/text/RelativeDateTimeFormatter$Loader;->ulocale:Landroid/icu/util/ULocale;
-Landroid/icu/text/RelativeDateTimeFormatter$RelativeDateTimeFormatterData;
Landroid/icu/text/RelativeDateTimeFormatter$RelativeDateTimeFormatterData;-><init>(Ljava/util/EnumMap;Ljava/util/EnumMap;Ljava/lang/String;)V
Landroid/icu/text/RelativeDateTimeFormatter$RelativeDateTimeFormatterData;->dateTimePattern:Ljava/lang/String;
Landroid/icu/text/RelativeDateTimeFormatter$RelativeDateTimeFormatterData;->qualitativeUnitMap:Ljava/util/EnumMap;
Landroid/icu/text/RelativeDateTimeFormatter$RelativeDateTimeFormatterData;->relUnitPatternMap:Ljava/util/EnumMap;
-Landroid/icu/text/RelativeDateTimeFormatter$RelativeDateTimeUnit;-><init>()V
-Landroid/icu/text/RelativeDateTimeFormatter$RelativeUnit;-><init>()V
Landroid/icu/text/RelativeDateTimeFormatter$RelativeUnit;->QUARTERS:Landroid/icu/text/RelativeDateTimeFormatter$RelativeUnit;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;-><init>(Landroid/icu/text/RelativeDateTimeFormatter$RelativeUnit;Landroid/icu/text/RelativeDateTimeFormatter$AbsoluteUnit;)V
Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->absUnit:Landroid/icu/text/RelativeDateTimeFormatter$AbsoluteUnit;
Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->DAY:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;
Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->FRIDAY:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;
@@ -31698,7 +29614,6 @@
Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->WEDNESDAY:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;
Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->WEEK:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;
Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->YEAR:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;
Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;-><init>()V
Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->consumeTableRelative(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V
Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->consumeTableRelativeTime(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V
@@ -31715,7 +29630,6 @@
Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->styleRelUnitPatterns:Ljava/util/EnumMap;
Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->styleSuffixLength(Landroid/icu/text/RelativeDateTimeFormatter$Style;)I
Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->unit:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;
-Landroid/icu/text/RelativeDateTimeFormatter$Style;-><init>()V
Landroid/icu/text/RelativeDateTimeFormatter$Style;->INDEX_COUNT:I
Landroid/icu/text/RelativeDateTimeFormatter;-><init>(Ljava/util/EnumMap;Ljava/util/EnumMap;Ljava/lang/String;Landroid/icu/text/PluralRules;Landroid/icu/text/NumberFormat;Landroid/icu/text/RelativeDateTimeFormatter$Style;Landroid/icu/text/DisplayContext;Landroid/icu/text/BreakIterator;Landroid/icu/util/ULocale;)V
Landroid/icu/text/RelativeDateTimeFormatter;->adjustForContext(Ljava/lang/String;)Ljava/lang/String;
@@ -31736,15 +29650,11 @@
Landroid/icu/text/RelativeDateTimeFormatter;->qualitativeUnitMap:Ljava/util/EnumMap;
Landroid/icu/text/RelativeDateTimeFormatter;->style:Landroid/icu/text/RelativeDateTimeFormatter$Style;
Landroid/icu/text/RelativeDateTimeFormatter;->styleToDateFormatSymbolsWidth:[I
-Landroid/icu/text/ReplaceableString;
Landroid/icu/text/ReplaceableString;-><init>()V
Landroid/icu/text/ReplaceableString;-><init>(Ljava/lang/String;)V
Landroid/icu/text/ReplaceableString;-><init>(Ljava/lang/StringBuffer;)V
Landroid/icu/text/ReplaceableString;->buf:Ljava/lang/StringBuffer;
Landroid/icu/text/ReplaceableString;->substring(II)Ljava/lang/String;
-Landroid/icu/text/RuleBasedBreakIterator$BreakCache;
-Landroid/icu/text/RuleBasedBreakIterator$BreakCache;-><init>()V
-Landroid/icu/text/RuleBasedBreakIterator$BreakCache;-><init>(Landroid/icu/text/RuleBasedBreakIterator$BreakCache;)V
Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->addFollowing(IIZ)V
Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->addPreceding(IIZ)Z
Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->CACHE_SIZE:I
@@ -31770,9 +29680,6 @@
Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->RetainCachePosition:Z
Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->seek(I)Z
Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->UpdateCachePosition:Z
-Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;
-Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;-><init>()V
-Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;-><init>(Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;)V
Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->fBoundary:I
Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->fBreaks:Landroid/icu/text/DictionaryBreakEngine$DequeI;
Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->fFirstRuleStatusIndex:I
@@ -31785,7 +29692,6 @@
Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->populateDictionary(IIII)V
Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->preceding(I)Z
Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->reset()V
-Landroid/icu/text/RuleBasedBreakIterator$LookAheadResults;
Landroid/icu/text/RuleBasedBreakIterator$LookAheadResults;-><init>()V
Landroid/icu/text/RuleBasedBreakIterator$LookAheadResults;->fKeys:[I
Landroid/icu/text/RuleBasedBreakIterator$LookAheadResults;->fPositions:[I
@@ -31793,7 +29699,6 @@
Landroid/icu/text/RuleBasedBreakIterator$LookAheadResults;->getPosition(I)I
Landroid/icu/text/RuleBasedBreakIterator$LookAheadResults;->reset()V
Landroid/icu/text/RuleBasedBreakIterator$LookAheadResults;->setPosition(II)V
-Landroid/icu/text/RuleBasedBreakIterator;
Landroid/icu/text/RuleBasedBreakIterator;-><init>()V
Landroid/icu/text/RuleBasedBreakIterator;-><init>(Ljava/lang/String;)V
Landroid/icu/text/RuleBasedBreakIterator;->checkOffset(ILjava/text/CharacterIterator;)V
@@ -31829,7 +29734,6 @@
Landroid/icu/text/RuleBasedBreakIterator;->START_STATE:I
Landroid/icu/text/RuleBasedBreakIterator;->STOP_STATE:I
Landroid/icu/text/RuleBasedBreakIterator;->TRACE:Z
-Landroid/icu/text/RuleBasedCollator$CollationBuffer;
Landroid/icu/text/RuleBasedCollator$CollationBuffer;-><init>(Landroid/icu/impl/coll/CollationData;)V
Landroid/icu/text/RuleBasedCollator$CollationBuffer;->leftFCDUTF16Iter:Landroid/icu/impl/coll/FCDUTF16CollationIterator;
Landroid/icu/text/RuleBasedCollator$CollationBuffer;->leftFCDUTF16NFDIter:Landroid/icu/text/RuleBasedCollator$FCDUTF16NFDIterator;
@@ -31840,14 +29744,11 @@
Landroid/icu/text/RuleBasedCollator$CollationBuffer;->rightFCDUTF16NFDIter:Landroid/icu/text/RuleBasedCollator$FCDUTF16NFDIterator;
Landroid/icu/text/RuleBasedCollator$CollationBuffer;->rightUTF16CollIter:Landroid/icu/impl/coll/UTF16CollationIterator;
Landroid/icu/text/RuleBasedCollator$CollationBuffer;->rightUTF16NFDIter:Landroid/icu/text/RuleBasedCollator$UTF16NFDIterator;
-Landroid/icu/text/RuleBasedCollator$CollationKeyByteSink;
Landroid/icu/text/RuleBasedCollator$CollationKeyByteSink;-><init>(Landroid/icu/text/RawCollationKey;)V
Landroid/icu/text/RuleBasedCollator$CollationKeyByteSink;->key_:Landroid/icu/text/RawCollationKey;
-Landroid/icu/text/RuleBasedCollator$FCDUTF16NFDIterator;
Landroid/icu/text/RuleBasedCollator$FCDUTF16NFDIterator;-><init>()V
Landroid/icu/text/RuleBasedCollator$FCDUTF16NFDIterator;->setText(Landroid/icu/impl/Normalizer2Impl;Ljava/lang/CharSequence;I)V
Landroid/icu/text/RuleBasedCollator$FCDUTF16NFDIterator;->str:Ljava/lang/StringBuilder;
-Landroid/icu/text/RuleBasedCollator$NFDIterator;
Landroid/icu/text/RuleBasedCollator$NFDIterator;-><init>()V
Landroid/icu/text/RuleBasedCollator$NFDIterator;->decomp:Ljava/lang/String;
Landroid/icu/text/RuleBasedCollator$NFDIterator;->index:I
@@ -31855,7 +29756,6 @@
Landroid/icu/text/RuleBasedCollator$NFDIterator;->nextDecomposedCodePoint(Landroid/icu/impl/Normalizer2Impl;I)I
Landroid/icu/text/RuleBasedCollator$NFDIterator;->nextRawCodePoint()I
Landroid/icu/text/RuleBasedCollator$NFDIterator;->reset()V
-Landroid/icu/text/RuleBasedCollator$UTF16NFDIterator;
Landroid/icu/text/RuleBasedCollator$UTF16NFDIterator;-><init>()V
Landroid/icu/text/RuleBasedCollator$UTF16NFDIterator;->nextRawCodePoint()I
Landroid/icu/text/RuleBasedCollator$UTF16NFDIterator;->pos:I
@@ -31896,7 +29796,6 @@
Landroid/icu/text/RuleBasedCollator;->validLocale:Landroid/icu/util/ULocale;
Landroid/icu/text/RuleBasedCollator;->writeIdenticalLevel(Ljava/lang/CharSequence;Landroid/icu/text/RuleBasedCollator$CollationKeyByteSink;)V
Landroid/icu/text/RuleBasedCollator;->writeSortKey(Ljava/lang/CharSequence;Landroid/icu/text/RuleBasedCollator$CollationKeyByteSink;Landroid/icu/text/RuleBasedCollator$CollationBuffer;)V
-Landroid/icu/text/RuleBasedNumberFormat;
Landroid/icu/text/RuleBasedNumberFormat;-><init>(I)V
Landroid/icu/text/RuleBasedNumberFormat;-><init>(Landroid/icu/util/ULocale;I)V
Landroid/icu/text/RuleBasedNumberFormat;-><init>(Ljava/lang/String;)V
@@ -31968,7 +29867,6 @@
Landroid/icu/text/RuleBasedNumberFormat;->setLenientScannerProvider(Landroid/icu/text/RbnfLenientScannerProvider;)V
Landroid/icu/text/RuleBasedNumberFormat;->SPELLOUT:I
Landroid/icu/text/RuleBasedNumberFormat;->stripWhitespace(Ljava/lang/String;)Ljava/lang/StringBuilder;
-Landroid/icu/text/RuleBasedTransliterator$Data;
Landroid/icu/text/RuleBasedTransliterator$Data;-><init>()V
Landroid/icu/text/RuleBasedTransliterator$Data;->lookupMatcher(I)Landroid/icu/text/UnicodeMatcher;
Landroid/icu/text/RuleBasedTransliterator$Data;->lookupReplacer(I)Landroid/icu/text/UnicodeReplacer;
@@ -31976,23 +29874,19 @@
Landroid/icu/text/RuleBasedTransliterator$Data;->variableNames:Ljava/util/Map;
Landroid/icu/text/RuleBasedTransliterator$Data;->variables:[Ljava/lang/Object;
Landroid/icu/text/RuleBasedTransliterator$Data;->variablesBase:C
-Landroid/icu/text/RuleBasedTransliterator;
Landroid/icu/text/RuleBasedTransliterator;-><init>(Ljava/lang/String;Landroid/icu/text/RuleBasedTransliterator$Data;Landroid/icu/text/UnicodeFilter;)V
Landroid/icu/text/RuleBasedTransliterator;->addSourceTargetSet(Landroid/icu/text/UnicodeSet;Landroid/icu/text/UnicodeSet;Landroid/icu/text/UnicodeSet;)V
Landroid/icu/text/RuleBasedTransliterator;->data:Landroid/icu/text/RuleBasedTransliterator$Data;
Landroid/icu/text/RuleBasedTransliterator;->handleTransliterate(Landroid/icu/text/Replaceable;Landroid/icu/text/Transliterator$Position;Z)V
Landroid/icu/text/RuleBasedTransliterator;->safeClone()Landroid/icu/text/Transliterator;
Landroid/icu/text/RuleBasedTransliterator;->toRules(Z)Ljava/lang/String;
-Landroid/icu/text/ScientificNumberFormatter$MarkupStyle;
Landroid/icu/text/ScientificNumberFormatter$MarkupStyle;-><init>(Ljava/lang/String;Ljava/lang/String;)V
Landroid/icu/text/ScientificNumberFormatter$MarkupStyle;->beginMarkup:Ljava/lang/String;
Landroid/icu/text/ScientificNumberFormatter$MarkupStyle;->endMarkup:Ljava/lang/String;
Landroid/icu/text/ScientificNumberFormatter$MarkupStyle;->format(Ljava/text/AttributedCharacterIterator;Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/ScientificNumberFormatter$Style;
Landroid/icu/text/ScientificNumberFormatter$Style;-><init>()V
Landroid/icu/text/ScientificNumberFormatter$Style;->append(Ljava/text/AttributedCharacterIterator;IILjava/lang/StringBuilder;)V
Landroid/icu/text/ScientificNumberFormatter$Style;->format(Ljava/text/AttributedCharacterIterator;Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/ScientificNumberFormatter$SuperscriptStyle;
Landroid/icu/text/ScientificNumberFormatter$SuperscriptStyle;-><init>()V
Landroid/icu/text/ScientificNumberFormatter$SuperscriptStyle;->char32AtAndAdvance(Ljava/text/AttributedCharacterIterator;)I
Landroid/icu/text/ScientificNumberFormatter$SuperscriptStyle;->copyAsSuperscript(Ljava/text/AttributedCharacterIterator;IILjava/lang/StringBuilder;)V
@@ -32008,7 +29902,6 @@
Landroid/icu/text/ScientificNumberFormatter;->preExponent:Ljava/lang/String;
Landroid/icu/text/ScientificNumberFormatter;->style:Landroid/icu/text/ScientificNumberFormatter$Style;
Landroid/icu/text/ScientificNumberFormatter;->SUPER_SCRIPT:Landroid/icu/text/ScientificNumberFormatter$Style;
-Landroid/icu/text/SCSU;
Landroid/icu/text/SCSU;->ARMENIANINDEX:I
Landroid/icu/text/SCSU;->COMPRESSIONOFFSET:I
Landroid/icu/text/SCSU;->GREEKINDEX:I
@@ -32074,9 +29967,6 @@
Landroid/icu/text/SCSU;->UNICODEMODE:I
Landroid/icu/text/SCSU;->UQUOTEU:I
Landroid/icu/text/SCSU;->URESERVED:I
-Landroid/icu/text/SearchIterator$ElementComparisonType;-><init>()V
-Landroid/icu/text/SearchIterator$Search;
-Landroid/icu/text/SearchIterator$Search;-><init>()V
Landroid/icu/text/SearchIterator$Search;->beginIndex()I
Landroid/icu/text/SearchIterator$Search;->breakIter()Landroid/icu/text/BreakIterator;
Landroid/icu/text/SearchIterator$Search;->elementComparisonType_:Landroid/icu/text/SearchIterator$ElementComparisonType;
@@ -32098,8 +29988,6 @@
Landroid/icu/text/SelectFormat;->msgPattern:Landroid/icu/text/MessagePattern;
Landroid/icu/text/SelectFormat;->pattern:Ljava/lang/String;
Landroid/icu/text/SelectFormat;->reset()V
-Landroid/icu/text/SimpleDateFormat$ContextValue;
-Landroid/icu/text/SimpleDateFormat$ContextValue;-><init>()V
Landroid/icu/text/SimpleDateFormat$ContextValue;->CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE:Landroid/icu/text/SimpleDateFormat$ContextValue;
Landroid/icu/text/SimpleDateFormat$ContextValue;->CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE:Landroid/icu/text/SimpleDateFormat$ContextValue;
Landroid/icu/text/SimpleDateFormat$ContextValue;->CAPITALIZATION_FOR_STANDALONE:Landroid/icu/text/SimpleDateFormat$ContextValue;
@@ -32107,7 +29995,6 @@
Landroid/icu/text/SimpleDateFormat$ContextValue;->UNKNOWN:Landroid/icu/text/SimpleDateFormat$ContextValue;
Landroid/icu/text/SimpleDateFormat$ContextValue;->valueOf(Ljava/lang/String;)Landroid/icu/text/SimpleDateFormat$ContextValue;
Landroid/icu/text/SimpleDateFormat$ContextValue;->values()[Landroid/icu/text/SimpleDateFormat$ContextValue;
-Landroid/icu/text/SimpleDateFormat$PatternItem;
Landroid/icu/text/SimpleDateFormat$PatternItem;-><init>(CI)V
Landroid/icu/text/SimpleDateFormat$PatternItem;->isNumeric:Z
Landroid/icu/text/SimpleDateFormat$PatternItem;->length:I
@@ -32198,25 +30085,18 @@
Landroid/icu/text/SimpleDateFormat;->useFastFormat:Z
Landroid/icu/text/SimpleDateFormat;->useLocalZeroPaddingNumberFormat:Z
Landroid/icu/text/SimpleDateFormat;->zeroPaddingNumber(Landroid/icu/text/NumberFormat;Ljava/lang/StringBuffer;III)V
-Landroid/icu/text/SimpleFormatter;
Landroid/icu/text/SimpleFormatter;-><init>(Ljava/lang/String;)V
Landroid/icu/text/SimpleFormatter;->compile(Ljava/lang/CharSequence;)Landroid/icu/text/SimpleFormatter;
Landroid/icu/text/SimpleFormatter;->compiledPattern:Ljava/lang/String;
Landroid/icu/text/SimpleFormatter;->compileMinMaxArguments(Ljava/lang/CharSequence;II)Landroid/icu/text/SimpleFormatter;
-Landroid/icu/text/SimpleFormatter;->format([[Ljava/lang/CharSequence;)Ljava/lang/String;
-Landroid/icu/text/SimpleFormatter;->formatAndAppend(Ljava/lang/StringBuilder;[I[[Ljava/lang/CharSequence;)Ljava/lang/StringBuilder;
-Landroid/icu/text/SimpleFormatter;->formatAndReplace(Ljava/lang/StringBuilder;[I[[Ljava/lang/CharSequence;)Ljava/lang/StringBuilder;
Landroid/icu/text/SimpleFormatter;->getArgumentLimit()I
Landroid/icu/text/SimpleFormatter;->getTextWithNoArguments()Ljava/lang/String;
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUString;
Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUString;-><init>(Ljava/lang/String;)V
Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUString;->fCharOrStrTableIndex:I
Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUString;->fStr:Ljava/lang/String;
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUStringComparator;
Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUStringComparator;-><init>()V
Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUStringComparator;->compare(Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUString;Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUString;)I
Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUStringComparator;->INSTANCE:Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUStringComparator;
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUStringPool;
Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUStringPool;-><init>()V
Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUStringPool;->addString(Ljava/lang/String;)Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUString;
Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUStringPool;->fHash:Ljava/util/Hashtable;
@@ -32224,7 +30104,6 @@
Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUStringPool;->getByIndex(I)Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUString;
Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUStringPool;->size()I
Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUStringPool;->sort()V
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder;
Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder;-><init>()V
Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder;->build(Ljava/io/Reader;Landroid/icu/text/SpoofChecker$SpoofData;)V
Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder;->buildConfusableData(Ljava/io/Reader;Landroid/icu/text/SpoofChecker$SpoofData;)V
@@ -32237,7 +30116,6 @@
Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder;->fTable:Ljava/util/Hashtable;
Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder;->fValueVec:Ljava/util/ArrayList;
Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder;->stringPool:Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUStringPool;
-Landroid/icu/text/SpoofChecker$Builder;
Landroid/icu/text/SpoofChecker$Builder;-><init>()V
Landroid/icu/text/SpoofChecker$Builder;-><init>(Landroid/icu/text/SpoofChecker;)V
Landroid/icu/text/SpoofChecker$Builder;->addScriptChars(Landroid/icu/util/ULocale;Landroid/icu/text/UnicodeSet;)V
@@ -32254,20 +30132,16 @@
Landroid/icu/text/SpoofChecker$Builder;->setData(Ljava/io/Reader;)Landroid/icu/text/SpoofChecker$Builder;
Landroid/icu/text/SpoofChecker$Builder;->setData(Ljava/io/Reader;Ljava/io/Reader;)Landroid/icu/text/SpoofChecker$Builder;
Landroid/icu/text/SpoofChecker$Builder;->setRestrictionLevel(Landroid/icu/text/SpoofChecker$RestrictionLevel;)Landroid/icu/text/SpoofChecker$Builder;
-Landroid/icu/text/SpoofChecker$CheckResult;
Landroid/icu/text/SpoofChecker$CheckResult;-><init>()V
Landroid/icu/text/SpoofChecker$CheckResult;->checks:I
Landroid/icu/text/SpoofChecker$CheckResult;->numerics:Landroid/icu/text/UnicodeSet;
Landroid/icu/text/SpoofChecker$CheckResult;->position:I
Landroid/icu/text/SpoofChecker$CheckResult;->restrictionLevel:Landroid/icu/text/SpoofChecker$RestrictionLevel;
-Landroid/icu/text/SpoofChecker$ConfusableDataUtils;
Landroid/icu/text/SpoofChecker$ConfusableDataUtils;-><init>()V
Landroid/icu/text/SpoofChecker$ConfusableDataUtils;->codePointAndLengthToKey(II)I
Landroid/icu/text/SpoofChecker$ConfusableDataUtils;->FORMAT_VERSION:I
Landroid/icu/text/SpoofChecker$ConfusableDataUtils;->keyToCodePoint(I)I
Landroid/icu/text/SpoofChecker$ConfusableDataUtils;->keyToLength(I)I
-Landroid/icu/text/SpoofChecker$RestrictionLevel;
-Landroid/icu/text/SpoofChecker$RestrictionLevel;-><init>()V
Landroid/icu/text/SpoofChecker$RestrictionLevel;->ASCII:Landroid/icu/text/SpoofChecker$RestrictionLevel;
Landroid/icu/text/SpoofChecker$RestrictionLevel;->HIGHLY_RESTRICTIVE:Landroid/icu/text/SpoofChecker$RestrictionLevel;
Landroid/icu/text/SpoofChecker$RestrictionLevel;->MINIMALLY_RESTRICTIVE:Landroid/icu/text/SpoofChecker$RestrictionLevel;
@@ -32276,15 +30150,11 @@
Landroid/icu/text/SpoofChecker$RestrictionLevel;->UNRESTRICTIVE:Landroid/icu/text/SpoofChecker$RestrictionLevel;
Landroid/icu/text/SpoofChecker$RestrictionLevel;->valueOf(Ljava/lang/String;)Landroid/icu/text/SpoofChecker$RestrictionLevel;
Landroid/icu/text/SpoofChecker$RestrictionLevel;->values()[Landroid/icu/text/SpoofChecker$RestrictionLevel;
-Landroid/icu/text/SpoofChecker$ScriptSet;
Landroid/icu/text/SpoofChecker$ScriptSet;->appendStringTo(Ljava/lang/StringBuilder;)V
-Landroid/icu/text/SpoofChecker$SpoofData$DefaultData;
Landroid/icu/text/SpoofChecker$SpoofData$DefaultData;-><init>()V
Landroid/icu/text/SpoofChecker$SpoofData$DefaultData;->EXCEPTION:Ljava/io/IOException;
Landroid/icu/text/SpoofChecker$SpoofData$DefaultData;->INSTANCE:Landroid/icu/text/SpoofChecker$SpoofData;
-Landroid/icu/text/SpoofChecker$SpoofData$IsAcceptable;
Landroid/icu/text/SpoofChecker$SpoofData$IsAcceptable;-><init>()V
-Landroid/icu/text/SpoofChecker$SpoofData;
Landroid/icu/text/SpoofChecker$SpoofData;-><init>()V
Landroid/icu/text/SpoofChecker$SpoofData;-><init>(Ljava/nio/ByteBuffer;)V
Landroid/icu/text/SpoofChecker$SpoofData;->appendValueTo(ILjava/lang/StringBuilder;)V
@@ -32298,7 +30168,6 @@
Landroid/icu/text/SpoofChecker$SpoofData;->IS_ACCEPTABLE:Landroid/icu/text/SpoofChecker$SpoofData$IsAcceptable;
Landroid/icu/text/SpoofChecker$SpoofData;->length()I
Landroid/icu/text/SpoofChecker$SpoofData;->readData(Ljava/nio/ByteBuffer;)V
-Landroid/icu/text/SpoofChecker;
Landroid/icu/text/SpoofChecker;-><init>()V
Landroid/icu/text/SpoofChecker;->ALL_CHECKS:I
Landroid/icu/text/SpoofChecker;->ANY_CASE:I
@@ -32335,7 +30204,6 @@
Landroid/icu/text/SpoofChecker;->SINGLE_SCRIPT:I
Landroid/icu/text/SpoofChecker;->SINGLE_SCRIPT_CONFUSABLE:I
Landroid/icu/text/SpoofChecker;->WHOLE_SCRIPT_CONFUSABLE:I
-Landroid/icu/text/StringCharacterIterator;
Landroid/icu/text/StringCharacterIterator;-><init>(Ljava/lang/String;)V
Landroid/icu/text/StringCharacterIterator;-><init>(Ljava/lang/String;I)V
Landroid/icu/text/StringCharacterIterator;-><init>(Ljava/lang/String;III)V
@@ -32344,7 +30212,6 @@
Landroid/icu/text/StringCharacterIterator;->pos:I
Landroid/icu/text/StringCharacterIterator;->setText(Ljava/lang/String;)V
Landroid/icu/text/StringCharacterIterator;->text:Ljava/lang/String;
-Landroid/icu/text/StringMatcher;
Landroid/icu/text/StringMatcher;-><init>(Ljava/lang/String;IIILandroid/icu/text/RuleBasedTransliterator$Data;)V
Landroid/icu/text/StringMatcher;-><init>(Ljava/lang/String;ILandroid/icu/text/RuleBasedTransliterator$Data;)V
Landroid/icu/text/StringMatcher;->addReplacementSetTo(Landroid/icu/text/UnicodeSet;)V
@@ -32356,13 +30223,11 @@
Landroid/icu/text/StringMatcher;->resetMatch()V
Landroid/icu/text/StringMatcher;->segmentNumber:I
Landroid/icu/text/StringMatcher;->toReplacerPattern(Z)Ljava/lang/String;
-Landroid/icu/text/StringPrep$Values;
Landroid/icu/text/StringPrep$Values;-><init>()V
Landroid/icu/text/StringPrep$Values;->isIndex:Z
Landroid/icu/text/StringPrep$Values;->reset()V
Landroid/icu/text/StringPrep$Values;->type:I
Landroid/icu/text/StringPrep$Values;->value:I
-Landroid/icu/text/StringPrep;
Landroid/icu/text/StringPrep;-><init>(Ljava/io/InputStream;)V
Landroid/icu/text/StringPrep;-><init>(Ljava/nio/ByteBuffer;)V
Landroid/icu/text/StringPrep;->ALLOW_UNASSIGNED:I
@@ -32428,7 +30293,6 @@
Landroid/icu/text/StringPrepParseException;->setPostContext([CI)V
Landroid/icu/text/StringPrepParseException;->setPreContext(Ljava/lang/String;I)V
Landroid/icu/text/StringPrepParseException;->setPreContext([CI)V
-Landroid/icu/text/StringSearch$CEBuffer;
Landroid/icu/text/StringSearch$CEBuffer;-><init>(Landroid/icu/text/StringSearch;)V
Landroid/icu/text/StringSearch$CEBuffer;->bufSize_:I
Landroid/icu/text/StringSearch$CEBuffer;->buf_:[Landroid/icu/text/StringSearch$CEI;
@@ -32441,12 +30305,10 @@
Landroid/icu/text/StringSearch$CEBuffer;->MAX_TARGET_IGNORABLES_PER_PAT_OTHER:I
Landroid/icu/text/StringSearch$CEBuffer;->MIGHT_BE_JAMO_L(C)Z
Landroid/icu/text/StringSearch$CEBuffer;->strSearch_:Landroid/icu/text/StringSearch;
-Landroid/icu/text/StringSearch$CEI;
Landroid/icu/text/StringSearch$CEI;-><init>()V
Landroid/icu/text/StringSearch$CEI;->ce_:J
Landroid/icu/text/StringSearch$CEI;->highIndex_:I
Landroid/icu/text/StringSearch$CEI;->lowIndex_:I
-Landroid/icu/text/StringSearch$CollationPCE$PCEBuffer;
Landroid/icu/text/StringSearch$CollationPCE$PCEBuffer;-><init>()V
Landroid/icu/text/StringSearch$CollationPCE$PCEBuffer;->bufferIndex_:I
Landroid/icu/text/StringSearch$CollationPCE$PCEBuffer;->buffer_:[Landroid/icu/text/StringSearch$CollationPCE$PCEI;
@@ -32454,28 +30316,23 @@
Landroid/icu/text/StringSearch$CollationPCE$PCEBuffer;->get()Landroid/icu/text/StringSearch$CollationPCE$PCEI;
Landroid/icu/text/StringSearch$CollationPCE$PCEBuffer;->put(JII)V
Landroid/icu/text/StringSearch$CollationPCE$PCEBuffer;->reset()V
-Landroid/icu/text/StringSearch$CollationPCE$PCEI;
Landroid/icu/text/StringSearch$CollationPCE$PCEI;-><init>()V
Landroid/icu/text/StringSearch$CollationPCE$PCEI;->ce_:J
Landroid/icu/text/StringSearch$CollationPCE$PCEI;->high_:I
Landroid/icu/text/StringSearch$CollationPCE$PCEI;->low_:I
-Landroid/icu/text/StringSearch$CollationPCE$Range;
Landroid/icu/text/StringSearch$CollationPCE$Range;-><init>()V
Landroid/icu/text/StringSearch$CollationPCE$Range;->ixHigh_:I
Landroid/icu/text/StringSearch$CollationPCE$Range;->ixLow_:I
-Landroid/icu/text/StringSearch$CollationPCE$RCEBuffer;
Landroid/icu/text/StringSearch$CollationPCE$RCEBuffer;-><init>()V
Landroid/icu/text/StringSearch$CollationPCE$RCEBuffer;->bufferIndex_:I
Landroid/icu/text/StringSearch$CollationPCE$RCEBuffer;->buffer_:[Landroid/icu/text/StringSearch$CollationPCE$RCEI;
Landroid/icu/text/StringSearch$CollationPCE$RCEBuffer;->empty()Z
Landroid/icu/text/StringSearch$CollationPCE$RCEBuffer;->get()Landroid/icu/text/StringSearch$CollationPCE$RCEI;
Landroid/icu/text/StringSearch$CollationPCE$RCEBuffer;->put(III)V
-Landroid/icu/text/StringSearch$CollationPCE$RCEI;
Landroid/icu/text/StringSearch$CollationPCE$RCEI;-><init>()V
Landroid/icu/text/StringSearch$CollationPCE$RCEI;->ce_:I
Landroid/icu/text/StringSearch$CollationPCE$RCEI;->high_:I
Landroid/icu/text/StringSearch$CollationPCE$RCEI;->low_:I
-Landroid/icu/text/StringSearch$CollationPCE;
Landroid/icu/text/StringSearch$CollationPCE;-><init>(Landroid/icu/text/CollationElementIterator;)V
Landroid/icu/text/StringSearch$CollationPCE;->BUFFER_GROW:I
Landroid/icu/text/StringSearch$CollationPCE;->cei_:Landroid/icu/text/CollationElementIterator;
@@ -32494,11 +30351,9 @@
Landroid/icu/text/StringSearch$CollationPCE;->strength_:I
Landroid/icu/text/StringSearch$CollationPCE;->toShift_:Z
Landroid/icu/text/StringSearch$CollationPCE;->variableTop_:I
-Landroid/icu/text/StringSearch$Match;
Landroid/icu/text/StringSearch$Match;-><init>()V
Landroid/icu/text/StringSearch$Match;->limit_:I
Landroid/icu/text/StringSearch$Match;->start_:I
-Landroid/icu/text/StringSearch$Pattern;
Landroid/icu/text/StringSearch$Pattern;-><init>(Ljava/lang/String;)V
Landroid/icu/text/StringSearch$Pattern;->CELength_:I
Landroid/icu/text/StringSearch$Pattern;->CE_:[I
@@ -32551,16 +30406,13 @@
Landroid/icu/text/StringSearch;->toShift_:Z
Landroid/icu/text/StringSearch;->utilIter_:Landroid/icu/text/CollationElementIterator;
Landroid/icu/text/StringSearch;->variableTop_:I
-Landroid/icu/text/StringTransform;
Landroid/icu/text/StringTransform;->transform(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/TimeUnitFormat$TimeUnitFormatSetupSink;
Landroid/icu/text/TimeUnitFormat$TimeUnitFormatSetupSink;-><init>(Ljava/util/Map;ILjava/util/Set;Landroid/icu/util/ULocale;)V
Landroid/icu/text/TimeUnitFormat$TimeUnitFormatSetupSink;->beenHere:Z
Landroid/icu/text/TimeUnitFormat$TimeUnitFormatSetupSink;->locale:Landroid/icu/util/ULocale;
Landroid/icu/text/TimeUnitFormat$TimeUnitFormatSetupSink;->pluralKeywords:Ljava/util/Set;
Landroid/icu/text/TimeUnitFormat$TimeUnitFormatSetupSink;->style:I
Landroid/icu/text/TimeUnitFormat$TimeUnitFormatSetupSink;->timeUnitToCountToPatterns:Ljava/util/Map;
-Landroid/icu/text/TimeUnitFormat;
Landroid/icu/text/TimeUnitFormat;-><init>()V
Landroid/icu/text/TimeUnitFormat;-><init>(Landroid/icu/util/ULocale;)V
Landroid/icu/text/TimeUnitFormat;-><init>(Landroid/icu/util/ULocale;I)V
@@ -32590,32 +30442,24 @@
Landroid/icu/text/TimeUnitFormat;->style:I
Landroid/icu/text/TimeUnitFormat;->timeUnitToCountToPatterns:Ljava/util/Map;
Landroid/icu/text/TimeUnitFormat;->TOTAL_STYLES:I
-Landroid/icu/text/TimeZoneFormat$GMTOffsetField;
Landroid/icu/text/TimeZoneFormat$GMTOffsetField;-><init>(CI)V
Landroid/icu/text/TimeZoneFormat$GMTOffsetField;->getType()C
Landroid/icu/text/TimeZoneFormat$GMTOffsetField;->getWidth()I
Landroid/icu/text/TimeZoneFormat$GMTOffsetField;->isValid(CI)Z
Landroid/icu/text/TimeZoneFormat$GMTOffsetField;->_type:C
Landroid/icu/text/TimeZoneFormat$GMTOffsetField;->_width:I
-Landroid/icu/text/TimeZoneFormat$GMTOffsetPatternType;-><init>(Ljava/lang/String;Ljava/lang/String;Z)V
Landroid/icu/text/TimeZoneFormat$GMTOffsetPatternType;->defaultPattern()Ljava/lang/String;
Landroid/icu/text/TimeZoneFormat$GMTOffsetPatternType;->isPositive()Z
Landroid/icu/text/TimeZoneFormat$GMTOffsetPatternType;->required()Ljava/lang/String;
Landroid/icu/text/TimeZoneFormat$GMTOffsetPatternType;->_defaultPattern:Ljava/lang/String;
Landroid/icu/text/TimeZoneFormat$GMTOffsetPatternType;->_isPositive:Z
Landroid/icu/text/TimeZoneFormat$GMTOffsetPatternType;->_required:Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat$OffsetFields;
-Landroid/icu/text/TimeZoneFormat$OffsetFields;-><init>()V
Landroid/icu/text/TimeZoneFormat$OffsetFields;->H:Landroid/icu/text/TimeZoneFormat$OffsetFields;
Landroid/icu/text/TimeZoneFormat$OffsetFields;->HM:Landroid/icu/text/TimeZoneFormat$OffsetFields;
Landroid/icu/text/TimeZoneFormat$OffsetFields;->HMS:Landroid/icu/text/TimeZoneFormat$OffsetFields;
Landroid/icu/text/TimeZoneFormat$OffsetFields;->valueOf(Ljava/lang/String;)Landroid/icu/text/TimeZoneFormat$OffsetFields;
Landroid/icu/text/TimeZoneFormat$OffsetFields;->values()[Landroid/icu/text/TimeZoneFormat$OffsetFields;
-Landroid/icu/text/TimeZoneFormat$ParseOption;-><init>()V
-Landroid/icu/text/TimeZoneFormat$Style;-><init>(I)V
Landroid/icu/text/TimeZoneFormat$Style;->flag:I
-Landroid/icu/text/TimeZoneFormat$TimeType;-><init>()V
-Landroid/icu/text/TimeZoneFormat$TimeZoneFormatCache;
Landroid/icu/text/TimeZoneFormat$TimeZoneFormatCache;-><init>()V
Landroid/icu/text/TimeZoneFormat$TimeZoneFormatCache;->createInstance(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)Landroid/icu/text/TimeZoneFormat;
Landroid/icu/text/TimeZoneFormat;->ALL_GENERIC_NAME_TYPES:Ljava/util/EnumSet;
@@ -32695,19 +30539,14 @@
Landroid/icu/text/TimeZoneFormat;->_tzdbNames:Landroid/icu/text/TimeZoneNames;
Landroid/icu/text/TimeZoneFormat;->_tzfCache:Landroid/icu/text/TimeZoneFormat$TimeZoneFormatCache;
Landroid/icu/text/TimeZoneFormat;->_tznames:Landroid/icu/text/TimeZoneNames;
-Landroid/icu/text/TimeZoneNames$Cache;
Landroid/icu/text/TimeZoneNames$Cache;-><init>()V
Landroid/icu/text/TimeZoneNames$Cache;->createInstance(Ljava/lang/String;Landroid/icu/util/ULocale;)Landroid/icu/text/TimeZoneNames;
-Landroid/icu/text/TimeZoneNames$DefaultTimeZoneNames$FactoryImpl;
Landroid/icu/text/TimeZoneNames$DefaultTimeZoneNames$FactoryImpl;->getTimeZoneNames(Landroid/icu/util/ULocale;)Landroid/icu/text/TimeZoneNames;
-Landroid/icu/text/TimeZoneNames$DefaultTimeZoneNames;
Landroid/icu/text/TimeZoneNames$DefaultTimeZoneNames;-><init>()V
Landroid/icu/text/TimeZoneNames$DefaultTimeZoneNames;->find(Ljava/lang/CharSequence;ILjava/util/EnumSet;)Ljava/util/Collection;
Landroid/icu/text/TimeZoneNames$DefaultTimeZoneNames;->INSTANCE:Landroid/icu/text/TimeZoneNames$DefaultTimeZoneNames;
-Landroid/icu/text/TimeZoneNames$Factory;
Landroid/icu/text/TimeZoneNames$Factory;-><init>()V
Landroid/icu/text/TimeZoneNames$Factory;->getTimeZoneNames(Landroid/icu/util/ULocale;)Landroid/icu/text/TimeZoneNames;
-Landroid/icu/text/TimeZoneNames$MatchInfo;
Landroid/icu/text/TimeZoneNames$MatchInfo;-><init>(Landroid/icu/text/TimeZoneNames$NameType;Ljava/lang/String;Ljava/lang/String;I)V
Landroid/icu/text/TimeZoneNames$MatchInfo;->matchLength()I
Landroid/icu/text/TimeZoneNames$MatchInfo;->mzID()Ljava/lang/String;
@@ -32717,7 +30556,6 @@
Landroid/icu/text/TimeZoneNames$MatchInfo;->_mzID:Ljava/lang/String;
Landroid/icu/text/TimeZoneNames$MatchInfo;->_nameType:Landroid/icu/text/TimeZoneNames$NameType;
Landroid/icu/text/TimeZoneNames$MatchInfo;->_tzID:Ljava/lang/String;
-Landroid/icu/text/TimeZoneNames$NameType;-><init>()V
Landroid/icu/text/TimeZoneNames;-><init>()V
Landroid/icu/text/TimeZoneNames;->DEFAULT_FACTORY_CLASS:Ljava/lang/String;
Landroid/icu/text/TimeZoneNames;->FACTORY_NAME_PROP:Ljava/lang/String;
@@ -32726,9 +30564,7 @@
Landroid/icu/text/TimeZoneNames;->loadAllDisplayNames()V
Landroid/icu/text/TimeZoneNames;->TZNAMES_CACHE:Landroid/icu/text/TimeZoneNames$Cache;
Landroid/icu/text/TimeZoneNames;->TZNAMES_FACTORY:Landroid/icu/text/TimeZoneNames$Factory;
-Landroid/icu/text/Transform;
Landroid/icu/text/Transform;->transform(Ljava/lang/Object;)Ljava/lang/Object;
-Landroid/icu/text/TransliterationRule;
Landroid/icu/text/TransliterationRule;-><init>(Ljava/lang/String;IILjava/lang/String;II[Landroid/icu/text/UnicodeMatcher;ZZLandroid/icu/text/RuleBasedTransliterator$Data;)V
Landroid/icu/text/TransliterationRule;->addSourceTargetSet(Landroid/icu/text/UnicodeSet;Landroid/icu/text/UnicodeSet;Landroid/icu/text/UnicodeSet;Landroid/icu/text/UnicodeSet;)V
Landroid/icu/text/TransliterationRule;->ANCHOR_END:I
@@ -32751,7 +30587,6 @@
Landroid/icu/text/TransliterationRule;->postContext:Landroid/icu/text/StringMatcher;
Landroid/icu/text/TransliterationRule;->segments:[Landroid/icu/text/UnicodeMatcher;
Landroid/icu/text/TransliterationRule;->toRule(Z)Ljava/lang/String;
-Landroid/icu/text/TransliterationRuleSet;
Landroid/icu/text/TransliterationRuleSet;-><init>()V
Landroid/icu/text/TransliterationRuleSet;->addRule(Landroid/icu/text/TransliterationRule;)V
Landroid/icu/text/TransliterationRuleSet;->addSourceTargetSet(Landroid/icu/text/UnicodeSet;Landroid/icu/text/UnicodeSet;Landroid/icu/text/UnicodeSet;)V
@@ -32763,9 +30598,7 @@
Landroid/icu/text/TransliterationRuleSet;->ruleVector:Ljava/util/List;
Landroid/icu/text/TransliterationRuleSet;->toRules(Z)Ljava/lang/String;
Landroid/icu/text/TransliterationRuleSet;->transliterate(Landroid/icu/text/Replaceable;Landroid/icu/text/Transliterator$Position;Z)Z
-Landroid/icu/text/Transliterator$Factory;
Landroid/icu/text/Transliterator$Factory;->getInstance(Ljava/lang/String;)Landroid/icu/text/Transliterator;
-Landroid/icu/text/Transliterator$Position;
Landroid/icu/text/Transliterator$Position;-><init>()V
Landroid/icu/text/Transliterator$Position;-><init>(III)V
Landroid/icu/text/Transliterator$Position;-><init>(IIII)V
@@ -32776,7 +30609,6 @@
Landroid/icu/text/Transliterator$Position;->set(Landroid/icu/text/Transliterator$Position;)V
Landroid/icu/text/Transliterator$Position;->start:I
Landroid/icu/text/Transliterator$Position;->validate(I)V
-Landroid/icu/text/Transliterator;
Landroid/icu/text/Transliterator;-><init>(Ljava/lang/String;Landroid/icu/text/UnicodeFilter;)V
Landroid/icu/text/Transliterator;->addSourceTargetSet(Landroid/icu/text/UnicodeSet;Landroid/icu/text/UnicodeSet;Landroid/icu/text/UnicodeSet;)V
Landroid/icu/text/Transliterator;->baseToRules(Z)Ljava/lang/String;
@@ -32834,28 +30666,22 @@
Landroid/icu/text/Transliterator;->transliterate(Landroid/icu/text/Replaceable;Landroid/icu/text/Transliterator$Position;I)V
Landroid/icu/text/Transliterator;->unregister(Ljava/lang/String;)V
Landroid/icu/text/Transliterator;->VARIANT_SEP:C
-Landroid/icu/text/TransliteratorRegistry$AliasEntry;
Landroid/icu/text/TransliteratorRegistry$AliasEntry;-><init>(Ljava/lang/String;)V
Landroid/icu/text/TransliteratorRegistry$AliasEntry;->alias:Ljava/lang/String;
-Landroid/icu/text/TransliteratorRegistry$CompoundRBTEntry;
Landroid/icu/text/TransliteratorRegistry$CompoundRBTEntry;-><init>(Ljava/lang/String;Ljava/util/List;Ljava/util/List;Landroid/icu/text/UnicodeSet;)V
Landroid/icu/text/TransliteratorRegistry$CompoundRBTEntry;->compoundFilter:Landroid/icu/text/UnicodeSet;
Landroid/icu/text/TransliteratorRegistry$CompoundRBTEntry;->dataVector:Ljava/util/List;
Landroid/icu/text/TransliteratorRegistry$CompoundRBTEntry;->getInstance()Landroid/icu/text/Transliterator;
Landroid/icu/text/TransliteratorRegistry$CompoundRBTEntry;->ID:Ljava/lang/String;
Landroid/icu/text/TransliteratorRegistry$CompoundRBTEntry;->idBlockVector:Ljava/util/List;
-Landroid/icu/text/TransliteratorRegistry$IDEnumeration;
Landroid/icu/text/TransliteratorRegistry$IDEnumeration;-><init>(Ljava/util/Enumeration;)V
Landroid/icu/text/TransliteratorRegistry$IDEnumeration;->en:Ljava/util/Enumeration;
-Landroid/icu/text/TransliteratorRegistry$LocaleEntry;
Landroid/icu/text/TransliteratorRegistry$LocaleEntry;-><init>(Ljava/lang/String;I)V
Landroid/icu/text/TransliteratorRegistry$LocaleEntry;->direction:I
Landroid/icu/text/TransliteratorRegistry$LocaleEntry;->rule:Ljava/lang/String;
-Landroid/icu/text/TransliteratorRegistry$ResourceEntry;
Landroid/icu/text/TransliteratorRegistry$ResourceEntry;-><init>(Ljava/lang/String;I)V
Landroid/icu/text/TransliteratorRegistry$ResourceEntry;->direction:I
Landroid/icu/text/TransliteratorRegistry$ResourceEntry;->resource:Ljava/lang/String;
-Landroid/icu/text/TransliteratorRegistry$Spec;
Landroid/icu/text/TransliteratorRegistry$Spec;-><init>(Ljava/lang/String;)V
Landroid/icu/text/TransliteratorRegistry$Spec;->get()Ljava/lang/String;
Landroid/icu/text/TransliteratorRegistry$Spec;->getBundle()Ljava/util/ResourceBundle;
@@ -32872,7 +30698,6 @@
Landroid/icu/text/TransliteratorRegistry$Spec;->setupNext()V
Landroid/icu/text/TransliteratorRegistry$Spec;->spec:Ljava/lang/String;
Landroid/icu/text/TransliteratorRegistry$Spec;->top:Ljava/lang/String;
-Landroid/icu/text/TransliteratorRegistry;
Landroid/icu/text/TransliteratorRegistry;-><init>()V
Landroid/icu/text/TransliteratorRegistry;->ANY:Ljava/lang/String;
Landroid/icu/text/TransliteratorRegistry;->availableIDs:Ljava/util/List;
@@ -32903,7 +30728,6 @@
Landroid/icu/text/TransliteratorRegistry;->remove(Ljava/lang/String;)V
Landroid/icu/text/TransliteratorRegistry;->removeSTV(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
Landroid/icu/text/TransliteratorRegistry;->specDAG:Ljava/util/Map;
-Landroid/icu/text/UFieldPosition;
Landroid/icu/text/UFieldPosition;-><init>()V
Landroid/icu/text/UFieldPosition;-><init>(I)V
Landroid/icu/text/UFieldPosition;-><init>(Ljava/text/Format$Field;)V
@@ -32916,16 +30740,13 @@
Landroid/icu/text/UFormat;->actualLocale:Landroid/icu/util/ULocale;
Landroid/icu/text/UFormat;->setLocale(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)V
Landroid/icu/text/UFormat;->validLocale:Landroid/icu/util/ULocale;
-Landroid/icu/text/UForwardCharacterIterator;
Landroid/icu/text/UForwardCharacterIterator;->next()I
Landroid/icu/text/UForwardCharacterIterator;->nextCodePoint()I
-Landroid/icu/text/UnhandledBreakEngine;
Landroid/icu/text/UnhandledBreakEngine;-><init>()V
Landroid/icu/text/UnhandledBreakEngine;->fHandled:Ljava/util/concurrent/atomic/AtomicReferenceArray;
Landroid/icu/text/UnhandledBreakEngine;->findBreaks(Ljava/text/CharacterIterator;IIILandroid/icu/text/DictionaryBreakEngine$DequeI;)I
Landroid/icu/text/UnhandledBreakEngine;->handleChar(II)V
Landroid/icu/text/UnhandledBreakEngine;->handles(II)Z
-Landroid/icu/text/UnicodeCompressor;
Landroid/icu/text/UnicodeCompressor;-><init>()V
Landroid/icu/text/UnicodeCompressor;->compress(Ljava/lang/String;)[B
Landroid/icu/text/UnicodeCompressor;->compress([CII)[B
@@ -32946,7 +30767,6 @@
Landroid/icu/text/UnicodeCompressor;->reset()V
Landroid/icu/text/UnicodeCompressor;->sSingleTagTable:[Z
Landroid/icu/text/UnicodeCompressor;->sUnicodeTagTable:[Z
-Landroid/icu/text/UnicodeDecompressor;
Landroid/icu/text/UnicodeDecompressor;-><init>()V
Landroid/icu/text/UnicodeDecompressor;->BUFSIZE:I
Landroid/icu/text/UnicodeDecompressor;->decompress([B)Ljava/lang/String;
@@ -32959,39 +30779,26 @@
Landroid/icu/text/UnicodeDecompressor;->fOffsets:[I
Landroid/icu/text/UnicodeDecompressor;->reset()V
Landroid/icu/text/UnicodeFilter;-><init>()V
-Landroid/icu/text/UnicodeReplacer;
Landroid/icu/text/UnicodeReplacer;->addReplacementSetTo(Landroid/icu/text/UnicodeSet;)V
Landroid/icu/text/UnicodeReplacer;->replace(Landroid/icu/text/Replaceable;II[I)I
Landroid/icu/text/UnicodeReplacer;->toReplacerPattern(Z)Ljava/lang/String;
-Landroid/icu/text/UnicodeSet$ComparisonStyle;-><init>()V
Landroid/icu/text/UnicodeSet$EntryRange;-><init>()V
-Landroid/icu/text/UnicodeSet$EntryRangeIterable;
-Landroid/icu/text/UnicodeSet$EntryRangeIterable;-><init>()V
-Landroid/icu/text/UnicodeSet$EntryRangeIterator;
-Landroid/icu/text/UnicodeSet$EntryRangeIterator;-><init>()V
Landroid/icu/text/UnicodeSet$EntryRangeIterator;->pos:I
Landroid/icu/text/UnicodeSet$EntryRangeIterator;->result:Landroid/icu/text/UnicodeSet$EntryRange;
-Landroid/icu/text/UnicodeSet$Filter;
Landroid/icu/text/UnicodeSet$Filter;->contains(I)Z
-Landroid/icu/text/UnicodeSet$GeneralCategoryMaskFilter;
Landroid/icu/text/UnicodeSet$GeneralCategoryMaskFilter;-><init>(I)V
Landroid/icu/text/UnicodeSet$GeneralCategoryMaskFilter;->contains(I)Z
Landroid/icu/text/UnicodeSet$GeneralCategoryMaskFilter;->mask:I
-Landroid/icu/text/UnicodeSet$IntPropertyFilter;
Landroid/icu/text/UnicodeSet$IntPropertyFilter;-><init>(II)V
Landroid/icu/text/UnicodeSet$IntPropertyFilter;->contains(I)Z
Landroid/icu/text/UnicodeSet$IntPropertyFilter;->prop:I
Landroid/icu/text/UnicodeSet$IntPropertyFilter;->value:I
-Landroid/icu/text/UnicodeSet$NumericValueFilter;
Landroid/icu/text/UnicodeSet$NumericValueFilter;-><init>(D)V
Landroid/icu/text/UnicodeSet$NumericValueFilter;->contains(I)Z
Landroid/icu/text/UnicodeSet$NumericValueFilter;->value:D
-Landroid/icu/text/UnicodeSet$ScriptExtensionsFilter;
Landroid/icu/text/UnicodeSet$ScriptExtensionsFilter;-><init>(I)V
Landroid/icu/text/UnicodeSet$ScriptExtensionsFilter;->contains(I)Z
Landroid/icu/text/UnicodeSet$ScriptExtensionsFilter;->script:I
-Landroid/icu/text/UnicodeSet$SpanCondition;-><init>()V
-Landroid/icu/text/UnicodeSet$UnicodeSetIterator2;
Landroid/icu/text/UnicodeSet$UnicodeSetIterator2;-><init>(Landroid/icu/text/UnicodeSet;)V
Landroid/icu/text/UnicodeSet$UnicodeSetIterator2;->buffer:[C
Landroid/icu/text/UnicodeSet$UnicodeSetIterator2;->current:I
@@ -33001,11 +30808,9 @@
Landroid/icu/text/UnicodeSet$UnicodeSetIterator2;->sourceList:[I
Landroid/icu/text/UnicodeSet$UnicodeSetIterator2;->sourceStrings:Ljava/util/TreeSet;
Landroid/icu/text/UnicodeSet$UnicodeSetIterator2;->stringIterator:Ljava/util/Iterator;
-Landroid/icu/text/UnicodeSet$VersionFilter;
Landroid/icu/text/UnicodeSet$VersionFilter;-><init>(Landroid/icu/util/VersionInfo;)V
Landroid/icu/text/UnicodeSet$VersionFilter;->contains(I)Z
Landroid/icu/text/UnicodeSet$VersionFilter;->version:Landroid/icu/util/VersionInfo;
-Landroid/icu/text/UnicodeSet$XSymbolTable;
Landroid/icu/text/UnicodeSet$XSymbolTable;-><init>()V
Landroid/icu/text/UnicodeSet$XSymbolTable;->applyPropertyAlias(Ljava/lang/String;Ljava/lang/String;Landroid/icu/text/UnicodeSet;)Z
Landroid/icu/text/UnicodeSet;->add([III)Landroid/icu/text/UnicodeSet;
@@ -33097,10 +30902,7 @@
Landroid/icu/text/UnicodeSetIterator;->range:I
Landroid/icu/text/UnicodeSetIterator;->set:Landroid/icu/text/UnicodeSet;
Landroid/icu/text/UnicodeSetIterator;->stringIterator:Ljava/util/Iterator;
-Landroid/icu/text/UnicodeSetSpanner$CountMethod;-><init>()V
-Landroid/icu/text/UnicodeSetSpanner$TrimOption;-><init>()V
Landroid/icu/text/UnicodeSetSpanner;->unicodeSet:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/UTF16$StringComparator;
Landroid/icu/text/UTF16$StringComparator;-><init>()V
Landroid/icu/text/UTF16$StringComparator;-><init>(ZZI)V
Landroid/icu/text/UTF16$StringComparator;->CODE_POINT_COMPARE_SURROGATE_OFFSET_:I
@@ -33117,7 +30919,6 @@
Landroid/icu/text/UTF16$StringComparator;->m_ignoreCase_:Z
Landroid/icu/text/UTF16$StringComparator;->setCodePointCompare(Z)V
Landroid/icu/text/UTF16$StringComparator;->setIgnoreCase(ZI)V
-Landroid/icu/text/UTF16;
Landroid/icu/text/UTF16;-><init>()V
Landroid/icu/text/UTF16;->append(Ljava/lang/StringBuffer;I)Ljava/lang/StringBuffer;
Landroid/icu/text/UTF16;->append([CII)I
@@ -33199,7 +31000,6 @@
Landroid/icu/text/UTF16;->valueOf([CIII)Ljava/lang/String;
Landroid/icu/text/UTF16;->_charAt(Ljava/lang/CharSequence;IC)I
Landroid/icu/text/UTF16;->_charAt(Ljava/lang/String;IC)I
-Landroid/icu/util/AnnualTimeZoneRule;
Landroid/icu/util/AnnualTimeZoneRule;-><init>(Ljava/lang/String;IILandroid/icu/util/DateTimeRule;II)V
Landroid/icu/util/AnnualTimeZoneRule;->dateTimeRule:Landroid/icu/util/DateTimeRule;
Landroid/icu/util/AnnualTimeZoneRule;->endYear:I
@@ -33215,7 +31015,6 @@
Landroid/icu/util/AnnualTimeZoneRule;->isTransitionRule()Z
Landroid/icu/util/AnnualTimeZoneRule;->MAX_YEAR:I
Landroid/icu/util/AnnualTimeZoneRule;->startYear:I
-Landroid/icu/util/BasicTimeZone;
Landroid/icu/util/BasicTimeZone;-><init>()V
Landroid/icu/util/BasicTimeZone;-><init>(Ljava/lang/String;)V
Landroid/icu/util/BasicTimeZone;->FORMER_LATTER_MASK:I
@@ -33235,7 +31034,6 @@
Landroid/icu/util/BasicTimeZone;->STD_DST_MASK:I
Landroid/icu/util/BuddhistCalendar;->BUDDHIST_ERA_START:I
Landroid/icu/util/BuddhistCalendar;->GREGORIAN_EPOCH:I
-Landroid/icu/util/ByteArrayWrapper;
Landroid/icu/util/ByteArrayWrapper;-><init>()V
Landroid/icu/util/ByteArrayWrapper;-><init>(Ljava/nio/ByteBuffer;)V
Landroid/icu/util/ByteArrayWrapper;-><init>([BI)V
@@ -33247,7 +31045,6 @@
Landroid/icu/util/ByteArrayWrapper;->releaseBytes()[B
Landroid/icu/util/ByteArrayWrapper;->set([BII)Landroid/icu/util/ByteArrayWrapper;
Landroid/icu/util/ByteArrayWrapper;->size:I
-Landroid/icu/util/BytesTrie$Entry;
Landroid/icu/util/BytesTrie$Entry;-><init>(I)V
Landroid/icu/util/BytesTrie$Entry;->append(B)V
Landroid/icu/util/BytesTrie$Entry;->append([BII)V
@@ -33260,7 +31057,6 @@
Landroid/icu/util/BytesTrie$Entry;->length:I
Landroid/icu/util/BytesTrie$Entry;->truncateString(I)V
Landroid/icu/util/BytesTrie$Entry;->value:I
-Landroid/icu/util/BytesTrie$Iterator;
Landroid/icu/util/BytesTrie$Iterator;-><init>([BIII)V
Landroid/icu/util/BytesTrie$Iterator;->branchNext(II)I
Landroid/icu/util/BytesTrie$Iterator;->bytes_:[B
@@ -33273,8 +31069,6 @@
Landroid/icu/util/BytesTrie$Iterator;->reset()Landroid/icu/util/BytesTrie$Iterator;
Landroid/icu/util/BytesTrie$Iterator;->stack_:Ljava/util/ArrayList;
Landroid/icu/util/BytesTrie$Iterator;->truncateAndStop()Landroid/icu/util/BytesTrie$Entry;
-Landroid/icu/util/BytesTrie$Result;
-Landroid/icu/util/BytesTrie$Result;-><init>()V
Landroid/icu/util/BytesTrie$Result;->FINAL_VALUE:Landroid/icu/util/BytesTrie$Result;
Landroid/icu/util/BytesTrie$Result;->hasNext()Z
Landroid/icu/util/BytesTrie$Result;->hasValue()Z
@@ -33284,13 +31078,11 @@
Landroid/icu/util/BytesTrie$Result;->NO_VALUE:Landroid/icu/util/BytesTrie$Result;
Landroid/icu/util/BytesTrie$Result;->valueOf(Ljava/lang/String;)Landroid/icu/util/BytesTrie$Result;
Landroid/icu/util/BytesTrie$Result;->values()[Landroid/icu/util/BytesTrie$Result;
-Landroid/icu/util/BytesTrie$State;
Landroid/icu/util/BytesTrie$State;-><init>()V
Landroid/icu/util/BytesTrie$State;->bytes:[B
Landroid/icu/util/BytesTrie$State;->pos:I
Landroid/icu/util/BytesTrie$State;->remainingMatchLength:I
Landroid/icu/util/BytesTrie$State;->root:I
-Landroid/icu/util/BytesTrie;
Landroid/icu/util/BytesTrie;-><init>([BI)V
Landroid/icu/util/BytesTrie;->append(Ljava/lang/Appendable;I)V
Landroid/icu/util/BytesTrie;->branchNext(III)Landroid/icu/util/BytesTrie$Result;
@@ -33341,11 +31133,9 @@
Landroid/icu/util/BytesTrie;->skipValue([BI)I
Landroid/icu/util/BytesTrie;->stop()V
Landroid/icu/util/BytesTrie;->valueResults_:[Landroid/icu/util/BytesTrie$Result;
-Landroid/icu/util/BytesTrieBuilder$BytesAsCharSequence;
Landroid/icu/util/BytesTrieBuilder$BytesAsCharSequence;-><init>([BI)V
Landroid/icu/util/BytesTrieBuilder$BytesAsCharSequence;->len:I
Landroid/icu/util/BytesTrieBuilder$BytesAsCharSequence;->s:[B
-Landroid/icu/util/BytesTrieBuilder;
Landroid/icu/util/BytesTrieBuilder;-><init>()V
Landroid/icu/util/BytesTrieBuilder;->add([BII)Landroid/icu/util/BytesTrieBuilder;
Landroid/icu/util/BytesTrieBuilder;->build(Landroid/icu/util/StringTrieBuilder$Option;)Landroid/icu/util/BytesTrie;
@@ -33366,8 +31156,6 @@
Landroid/icu/util/BytesTrieBuilder;->writeDeltaTo(I)I
Landroid/icu/util/BytesTrieBuilder;->writeValueAndFinal(IZ)I
Landroid/icu/util/BytesTrieBuilder;->writeValueAndType(ZII)I
-Landroid/icu/util/Calendar$CalType;
-Landroid/icu/util/Calendar$CalType;-><init>(Ljava/lang/String;)V
Landroid/icu/util/Calendar$CalType;->BUDDHIST:Landroid/icu/util/Calendar$CalType;
Landroid/icu/util/Calendar$CalType;->CHINESE:Landroid/icu/util/Calendar$CalType;
Landroid/icu/util/Calendar$CalType;->COPTIC:Landroid/icu/util/Calendar$CalType;
@@ -33390,7 +31178,6 @@
Landroid/icu/util/Calendar$CalType;->UNKNOWN:Landroid/icu/util/Calendar$CalType;
Landroid/icu/util/Calendar$CalType;->valueOf(Ljava/lang/String;)Landroid/icu/util/Calendar$CalType;
Landroid/icu/util/Calendar$CalType;->values()[Landroid/icu/util/Calendar$CalType;
-Landroid/icu/util/Calendar$FormatConfiguration;
Landroid/icu/util/Calendar$FormatConfiguration;-><init>()V
Landroid/icu/util/Calendar$FormatConfiguration;->cal:Landroid/icu/util/Calendar;
Landroid/icu/util/Calendar$FormatConfiguration;->formatData:Landroid/icu/text/DateFormatSymbols;
@@ -33402,14 +31189,12 @@
Landroid/icu/util/Calendar$FormatConfiguration;->loc:Landroid/icu/util/ULocale;
Landroid/icu/util/Calendar$FormatConfiguration;->override:Ljava/lang/String;
Landroid/icu/util/Calendar$FormatConfiguration;->pattern:Ljava/lang/String;
-Landroid/icu/util/Calendar$PatternData;
Landroid/icu/util/Calendar$PatternData;-><init>([Ljava/lang/String;[Ljava/lang/String;)V
Landroid/icu/util/Calendar$PatternData;->getDateTimePattern(I)Ljava/lang/String;
Landroid/icu/util/Calendar$PatternData;->make(Landroid/icu/util/Calendar;Landroid/icu/util/ULocale;)Landroid/icu/util/Calendar$PatternData;
Landroid/icu/util/Calendar$PatternData;->make(Landroid/icu/util/ULocale;Ljava/lang/String;)Landroid/icu/util/Calendar$PatternData;
Landroid/icu/util/Calendar$PatternData;->overrides:[Ljava/lang/String;
Landroid/icu/util/Calendar$PatternData;->patterns:[Ljava/lang/String;
-Landroid/icu/util/Calendar$WeekDataCache;
Landroid/icu/util/Calendar$WeekDataCache;-><init>()V
Landroid/icu/util/Calendar$WeekDataCache;->createInstance(Ljava/lang/String;Ljava/lang/String;)Landroid/icu/util/Calendar$WeekData;
Landroid/icu/util/Calendar;->actualLocale:Landroid/icu/util/ULocale;
@@ -33491,7 +31276,6 @@
Landroid/icu/util/Calendar;->WEEKEND_ONSET:I
Landroid/icu/util/Calendar;->WEEK_DATA_CACHE:Landroid/icu/util/Calendar$WeekDataCache;
Landroid/icu/util/Calendar;->zone:Landroid/icu/util/TimeZone;
-Landroid/icu/util/CaseInsensitiveString;
Landroid/icu/util/CaseInsensitiveString;-><init>(Ljava/lang/String;)V
Landroid/icu/util/CaseInsensitiveString;->foldCase(Ljava/lang/String;)Ljava/lang/String;
Landroid/icu/util/CaseInsensitiveString;->folded:Ljava/lang/String;
@@ -33499,7 +31283,6 @@
Landroid/icu/util/CaseInsensitiveString;->getString()Ljava/lang/String;
Landroid/icu/util/CaseInsensitiveString;->hash:I
Landroid/icu/util/CaseInsensitiveString;->string:Ljava/lang/String;
-Landroid/icu/util/CECalendar;
Landroid/icu/util/CECalendar;-><init>()V
Landroid/icu/util/CECalendar;-><init>(III)V
Landroid/icu/util/CECalendar;-><init>(IIIIII)V
@@ -33513,11 +31296,9 @@
Landroid/icu/util/CECalendar;->getJDEpochOffset()I
Landroid/icu/util/CECalendar;->jdToCE(II[I)V
Landroid/icu/util/CECalendar;->LIMITS:[[I
-Landroid/icu/util/CharsTrie$Entry;
Landroid/icu/util/CharsTrie$Entry;-><init>()V
Landroid/icu/util/CharsTrie$Entry;->chars:Ljava/lang/CharSequence;
Landroid/icu/util/CharsTrie$Entry;->value:I
-Landroid/icu/util/CharsTrie$Iterator;
Landroid/icu/util/CharsTrie$Iterator;-><init>(Ljava/lang/CharSequence;III)V
Landroid/icu/util/CharsTrie$Iterator;->branchNext(II)I
Landroid/icu/util/CharsTrie$Iterator;->chars_:Ljava/lang/CharSequence;
@@ -33532,13 +31313,11 @@
Landroid/icu/util/CharsTrie$Iterator;->stack_:Ljava/util/ArrayList;
Landroid/icu/util/CharsTrie$Iterator;->str_:Ljava/lang/StringBuilder;
Landroid/icu/util/CharsTrie$Iterator;->truncateAndStop()Landroid/icu/util/CharsTrie$Entry;
-Landroid/icu/util/CharsTrie$State;
Landroid/icu/util/CharsTrie$State;-><init>()V
Landroid/icu/util/CharsTrie$State;->chars:Ljava/lang/CharSequence;
Landroid/icu/util/CharsTrie$State;->pos:I
Landroid/icu/util/CharsTrie$State;->remainingMatchLength:I
Landroid/icu/util/CharsTrie$State;->root:I
-Landroid/icu/util/CharsTrie;
Landroid/icu/util/CharsTrie;-><init>(Ljava/lang/CharSequence;I)V
Landroid/icu/util/CharsTrie;->append(Ljava/lang/Appendable;I)V
Landroid/icu/util/CharsTrie;->branchNext(III)Landroid/icu/util/BytesTrie$Result;
@@ -33591,7 +31370,6 @@
Landroid/icu/util/CharsTrie;->skipValue(Ljava/lang/CharSequence;I)I
Landroid/icu/util/CharsTrie;->stop()V
Landroid/icu/util/CharsTrie;->valueResults_:[Landroid/icu/util/BytesTrie$Result;
-Landroid/icu/util/CharsTrieBuilder;
Landroid/icu/util/CharsTrieBuilder;-><init>()V
Landroid/icu/util/CharsTrieBuilder;->add(Ljava/lang/CharSequence;I)Landroid/icu/util/CharsTrieBuilder;
Landroid/icu/util/CharsTrieBuilder;->build(Landroid/icu/util/StringTrieBuilder$Option;)Landroid/icu/util/CharsTrie;
@@ -33636,7 +31414,6 @@
Landroid/icu/util/ChineseCalendar;->winterSolstice(I)I
Landroid/icu/util/ChineseCalendar;->winterSolsticeCache:Landroid/icu/impl/CalendarCache;
Landroid/icu/util/ChineseCalendar;->zoneAstro:Landroid/icu/util/TimeZone;
-Landroid/icu/util/CompactByteArray;
Landroid/icu/util/CompactByteArray;-><init>()V
Landroid/icu/util/CompactByteArray;-><init>(B)V
Landroid/icu/util/CompactByteArray;-><init>(Ljava/lang/String;Ljava/lang/String;)V
@@ -33663,7 +31440,6 @@
Landroid/icu/util/CompactByteArray;->touchBlock(II)V
Landroid/icu/util/CompactByteArray;->UNICODECOUNT:I
Landroid/icu/util/CompactByteArray;->values:[B
-Landroid/icu/util/CompactCharArray;
Landroid/icu/util/CompactCharArray;-><init>()V
Landroid/icu/util/CompactCharArray;-><init>(C)V
Landroid/icu/util/CompactCharArray;-><init>(Ljava/lang/String;Ljava/lang/String;)V
@@ -33696,26 +31472,20 @@
Landroid/icu/util/CopticCalendar;->copticToJD(JII)I
Landroid/icu/util/CopticCalendar;->getJDEpochOffset()I
Landroid/icu/util/CopticCalendar;->JD_EPOCH_OFFSET:I
-Landroid/icu/util/Currency$CurrencyNameResultHandler;
Landroid/icu/util/Currency$CurrencyNameResultHandler;-><init>()V
Landroid/icu/util/Currency$CurrencyNameResultHandler;->bestCurrencyISOCode:Ljava/lang/String;
Landroid/icu/util/Currency$CurrencyNameResultHandler;->bestMatchLength:I
Landroid/icu/util/Currency$CurrencyNameResultHandler;->getBestCurrencyISOCode()Ljava/lang/String;
Landroid/icu/util/Currency$CurrencyNameResultHandler;->getBestMatchLength()I
Landroid/icu/util/Currency$CurrencyNameResultHandler;->handlePrefixMatch(ILjava/util/Iterator;)Z
-Landroid/icu/util/Currency$CurrencyStringInfo;
Landroid/icu/util/Currency$CurrencyStringInfo;-><init>(Ljava/lang/String;Ljava/lang/String;)V
Landroid/icu/util/Currency$CurrencyStringInfo;->currencyString:Ljava/lang/String;
Landroid/icu/util/Currency$CurrencyStringInfo;->getCurrencyString()Ljava/lang/String;
Landroid/icu/util/Currency$CurrencyStringInfo;->getISOCode()Ljava/lang/String;
Landroid/icu/util/Currency$CurrencyStringInfo;->isoCode:Ljava/lang/String;
-Landroid/icu/util/Currency$CurrencyUsage;-><init>()V
-Landroid/icu/util/Currency$EquivalenceRelation;
Landroid/icu/util/Currency$EquivalenceRelation;-><init>()V
-Landroid/icu/util/Currency$EquivalenceRelation;->add([[Ljava/lang/Object;)Landroid/icu/util/Currency$EquivalenceRelation;
Landroid/icu/util/Currency$EquivalenceRelation;->data:Ljava/util/Map;
Landroid/icu/util/Currency$EquivalenceRelation;->get(Ljava/lang/Object;)Ljava/util/Set;
-Landroid/icu/util/Currency$ServiceShim;
Landroid/icu/util/Currency$ServiceShim;-><init>()V
Landroid/icu/util/Currency$ServiceShim;->createInstance(Landroid/icu/util/ULocale;)Landroid/icu/util/Currency;
Landroid/icu/util/Currency$ServiceShim;->getAvailableLocales()[Ljava/util/Locale;
@@ -33752,7 +31522,6 @@
Landroid/icu/util/Currency;->unregister(Ljava/lang/Object;)Z
Landroid/icu/util/CurrencyAmount;-><init>(DLjava/util/Currency;)V
Landroid/icu/util/CurrencyAmount;-><init>(Ljava/lang/Number;Ljava/util/Currency;)V
-Landroid/icu/util/DangiCalendar;
Landroid/icu/util/DangiCalendar;-><init>()V
Landroid/icu/util/DangiCalendar;-><init>(Landroid/icu/util/TimeZone;Landroid/icu/util/ULocale;)V
Landroid/icu/util/DangiCalendar;-><init>(Ljava/util/Date;)V
@@ -33760,12 +31529,10 @@
Landroid/icu/util/DangiCalendar;->KOREA_ZONE:Landroid/icu/util/TimeZone;
Landroid/icu/util/DateInterval;->fromDate:J
Landroid/icu/util/DateInterval;->toDate:J
-Landroid/icu/util/DateRule;
Landroid/icu/util/DateRule;->firstAfter(Ljava/util/Date;)Ljava/util/Date;
Landroid/icu/util/DateRule;->firstBetween(Ljava/util/Date;Ljava/util/Date;)Ljava/util/Date;
Landroid/icu/util/DateRule;->isBetween(Ljava/util/Date;Ljava/util/Date;)Z
Landroid/icu/util/DateRule;->isOn(Ljava/util/Date;)Z
-Landroid/icu/util/DateTimeRule;
Landroid/icu/util/DateTimeRule;-><init>(IIII)V
Landroid/icu/util/DateTimeRule;-><init>(IIIII)V
Landroid/icu/util/DateTimeRule;-><init>(IIIZII)V
@@ -33792,7 +31559,6 @@
Landroid/icu/util/DateTimeRule;->UTC_TIME:I
Landroid/icu/util/DateTimeRule;->WALL_TIME:I
Landroid/icu/util/DateTimeRule;->weekInMonth:I
-Landroid/icu/util/EasterHoliday;
Landroid/icu/util/EasterHoliday;-><init>(ILjava/lang/String;)V
Landroid/icu/util/EasterHoliday;-><init>(IZLjava/lang/String;)V
Landroid/icu/util/EasterHoliday;-><init>(Ljava/lang/String;)V
@@ -33818,20 +31584,15 @@
Landroid/icu/util/EthiopicCalendar;->getJDEpochOffset()I
Landroid/icu/util/EthiopicCalendar;->JD_EPOCH_OFFSET_AMETE_MIHRET:I
Landroid/icu/util/EthiopicCalendar;->setCalcTypeForLocale(Landroid/icu/util/ULocale;)V
-Landroid/icu/util/GenderInfo$Cache;
Landroid/icu/util/GenderInfo$Cache;-><init>()V
Landroid/icu/util/GenderInfo$Cache;->cache:Landroid/icu/impl/ICUCache;
Landroid/icu/util/GenderInfo$Cache;->get(Landroid/icu/util/ULocale;)Landroid/icu/util/GenderInfo;
Landroid/icu/util/GenderInfo$Cache;->load(Landroid/icu/util/ULocale;)Landroid/icu/util/GenderInfo;
-Landroid/icu/util/GenderInfo$Gender;
-Landroid/icu/util/GenderInfo$Gender;-><init>()V
Landroid/icu/util/GenderInfo$Gender;->FEMALE:Landroid/icu/util/GenderInfo$Gender;
Landroid/icu/util/GenderInfo$Gender;->MALE:Landroid/icu/util/GenderInfo$Gender;
Landroid/icu/util/GenderInfo$Gender;->OTHER:Landroid/icu/util/GenderInfo$Gender;
Landroid/icu/util/GenderInfo$Gender;->valueOf(Ljava/lang/String;)Landroid/icu/util/GenderInfo$Gender;
Landroid/icu/util/GenderInfo$Gender;->values()[Landroid/icu/util/GenderInfo$Gender;
-Landroid/icu/util/GenderInfo$ListGenderStyle;
-Landroid/icu/util/GenderInfo$ListGenderStyle;-><init>()V
Landroid/icu/util/GenderInfo$ListGenderStyle;->fromName(Ljava/lang/String;)Landroid/icu/util/GenderInfo$ListGenderStyle;
Landroid/icu/util/GenderInfo$ListGenderStyle;->fromNameMap:Ljava/util/Map;
Landroid/icu/util/GenderInfo$ListGenderStyle;->MALE_TAINTS:Landroid/icu/util/GenderInfo$ListGenderStyle;
@@ -33839,16 +31600,13 @@
Landroid/icu/util/GenderInfo$ListGenderStyle;->NEUTRAL:Landroid/icu/util/GenderInfo$ListGenderStyle;
Landroid/icu/util/GenderInfo$ListGenderStyle;->valueOf(Ljava/lang/String;)Landroid/icu/util/GenderInfo$ListGenderStyle;
Landroid/icu/util/GenderInfo$ListGenderStyle;->values()[Landroid/icu/util/GenderInfo$ListGenderStyle;
-Landroid/icu/util/GenderInfo;
Landroid/icu/util/GenderInfo;-><init>(Landroid/icu/util/GenderInfo$ListGenderStyle;)V
Landroid/icu/util/GenderInfo;->genderInfoCache:Landroid/icu/util/GenderInfo$Cache;
Landroid/icu/util/GenderInfo;->getInstance(Landroid/icu/util/ULocale;)Landroid/icu/util/GenderInfo;
Landroid/icu/util/GenderInfo;->getInstance(Ljava/util/Locale;)Landroid/icu/util/GenderInfo;
Landroid/icu/util/GenderInfo;->getListGender(Ljava/util/List;)Landroid/icu/util/GenderInfo$Gender;
-Landroid/icu/util/GenderInfo;->getListGender([[Landroid/icu/util/GenderInfo$Gender;)Landroid/icu/util/GenderInfo$Gender;
Landroid/icu/util/GenderInfo;->neutral:Landroid/icu/util/GenderInfo;
Landroid/icu/util/GenderInfo;->style:Landroid/icu/util/GenderInfo$ListGenderStyle;
-Landroid/icu/util/GlobalizationPreferences;
Landroid/icu/util/GlobalizationPreferences;-><init>()V
Landroid/icu/util/GlobalizationPreferences;->available_locales:Ljava/util/HashMap;
Landroid/icu/util/GlobalizationPreferences;->BI_CHARACTER:I
@@ -33961,7 +31719,6 @@
Landroid/icu/util/HebrewCalendar;->MONTH_START:[[I
Landroid/icu/util/HebrewCalendar;->startOfYear(I)J
Landroid/icu/util/HebrewCalendar;->yearType(I)I
-Landroid/icu/util/HebrewHoliday;
Landroid/icu/util/HebrewHoliday;-><init>(IIILjava/lang/String;)V
Landroid/icu/util/HebrewHoliday;-><init>(IILjava/lang/String;)V
Landroid/icu/util/HebrewHoliday;->ESTHER:Landroid/icu/util/HebrewHoliday;
@@ -33989,7 +31746,6 @@
Landroid/icu/util/HebrewHoliday;->YOM_HAZIKARON:Landroid/icu/util/HebrewHoliday;
Landroid/icu/util/HebrewHoliday;->YOM_KIPPUR:Landroid/icu/util/HebrewHoliday;
Landroid/icu/util/HebrewHoliday;->YOM_YERUSHALAYIM:Landroid/icu/util/HebrewHoliday;
-Landroid/icu/util/Holiday;
Landroid/icu/util/Holiday;-><init>(Ljava/lang/String;Landroid/icu/util/DateRule;)V
Landroid/icu/util/Holiday;->firstAfter(Ljava/util/Date;)Ljava/util/Date;
Landroid/icu/util/Holiday;->firstBetween(Ljava/util/Date;Ljava/util/Date;)Ljava/util/Date;
@@ -34006,12 +31762,10 @@
Landroid/icu/util/Holiday;->noHolidays:[Landroid/icu/util/Holiday;
Landroid/icu/util/Holiday;->rule:Landroid/icu/util/DateRule;
Landroid/icu/util/Holiday;->setRule(Landroid/icu/util/DateRule;)V
-Landroid/icu/util/ICUCloneNotSupportedException;
Landroid/icu/util/ICUCloneNotSupportedException;-><init>()V
Landroid/icu/util/ICUCloneNotSupportedException;-><init>(Ljava/lang/String;)V
Landroid/icu/util/ICUCloneNotSupportedException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
Landroid/icu/util/ICUCloneNotSupportedException;-><init>(Ljava/lang/Throwable;)V
-Landroid/icu/util/ICUException;
Landroid/icu/util/ICUException;-><init>()V
Landroid/icu/util/ICUException;-><init>(Ljava/lang/String;)V
Landroid/icu/util/ICUException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
@@ -34024,7 +31778,6 @@
Landroid/icu/util/IndianCalendar;->isGregorianLeap(I)Z
Landroid/icu/util/IndianCalendar;->jdToGregorian(D)[I
Landroid/icu/util/IndianCalendar;->LIMITS:[[I
-Landroid/icu/util/InitialTimeZoneRule;
Landroid/icu/util/InitialTimeZoneRule;-><init>(Ljava/lang/String;II)V
Landroid/icu/util/InitialTimeZoneRule;->getFinalStart(II)Ljava/util/Date;
Landroid/icu/util/InitialTimeZoneRule;->getFirstStart(II)Ljava/util/Date;
@@ -34032,7 +31785,6 @@
Landroid/icu/util/InitialTimeZoneRule;->getPreviousStart(JIIZ)Ljava/util/Date;
Landroid/icu/util/InitialTimeZoneRule;->isEquivalentTo(Landroid/icu/util/TimeZoneRule;)Z
Landroid/icu/util/InitialTimeZoneRule;->isTransitionRule()Z
-Landroid/icu/util/IslamicCalendar$CalculationType;-><init>(Ljava/lang/String;)V
Landroid/icu/util/IslamicCalendar$CalculationType;->bcpType()Ljava/lang/String;
Landroid/icu/util/IslamicCalendar$CalculationType;->bcpType:Ljava/lang/String;
Landroid/icu/util/IslamicCalendar;->astro:Landroid/icu/impl/CalendarAstronomer;
@@ -34088,7 +31840,6 @@
Landroid/icu/util/LocaleData;->PAPER_SIZE:Ljava/lang/String;
Landroid/icu/util/LocaleData;->PATTERN:Ljava/lang/String;
Landroid/icu/util/LocaleData;->SEPARATOR:Ljava/lang/String;
-Landroid/icu/util/LocaleMatcher$LanguageMatcherData;
Landroid/icu/util/LocaleMatcher$LanguageMatcherData;-><init>()V
Landroid/icu/util/LocaleMatcher$LanguageMatcherData;->addDistance(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)Landroid/icu/util/LocaleMatcher$LanguageMatcherData;
Landroid/icu/util/LocaleMatcher$LanguageMatcherData;->addDistance(Ljava/lang/String;Ljava/lang/String;IZ)Landroid/icu/util/LocaleMatcher$LanguageMatcherData;
@@ -34100,15 +31851,12 @@
Landroid/icu/util/LocaleMatcher$LanguageMatcherData;->matchingLanguages:Landroid/icu/impl/Relation;
Landroid/icu/util/LocaleMatcher$LanguageMatcherData;->regionScores:Landroid/icu/util/LocaleMatcher$ScoreData;
Landroid/icu/util/LocaleMatcher$LanguageMatcherData;->scriptScores:Landroid/icu/util/LocaleMatcher$ScoreData;
-Landroid/icu/util/LocaleMatcher$Level;
-Landroid/icu/util/LocaleMatcher$Level;-><init>(D)V
Landroid/icu/util/LocaleMatcher$Level;->language:Landroid/icu/util/LocaleMatcher$Level;
Landroid/icu/util/LocaleMatcher$Level;->region:Landroid/icu/util/LocaleMatcher$Level;
Landroid/icu/util/LocaleMatcher$Level;->script:Landroid/icu/util/LocaleMatcher$Level;
Landroid/icu/util/LocaleMatcher$Level;->valueOf(Ljava/lang/String;)Landroid/icu/util/LocaleMatcher$Level;
Landroid/icu/util/LocaleMatcher$Level;->values()[Landroid/icu/util/LocaleMatcher$Level;
Landroid/icu/util/LocaleMatcher$Level;->worst:D
-Landroid/icu/util/LocaleMatcher$LocalePatternMatcher;
Landroid/icu/util/LocaleMatcher$LocalePatternMatcher;-><init>(Ljava/lang/String;)V
Landroid/icu/util/LocaleMatcher$LocalePatternMatcher;->getLanguage()Ljava/lang/String;
Landroid/icu/util/LocaleMatcher$LocalePatternMatcher;->getLevel()Landroid/icu/util/LocaleMatcher$Level;
@@ -34120,10 +31868,8 @@
Landroid/icu/util/LocaleMatcher$LocalePatternMatcher;->pattern:Ljava/util/regex/Pattern;
Landroid/icu/util/LocaleMatcher$LocalePatternMatcher;->region:Ljava/lang/String;
Landroid/icu/util/LocaleMatcher$LocalePatternMatcher;->script:Ljava/lang/String;
-Landroid/icu/util/LocaleMatcher$OutputDouble;
Landroid/icu/util/LocaleMatcher$OutputDouble;-><init>()V
Landroid/icu/util/LocaleMatcher$OutputDouble;->value:D
-Landroid/icu/util/LocaleMatcher$ScoreData;
Landroid/icu/util/LocaleMatcher$ScoreData;-><init>(Landroid/icu/util/LocaleMatcher$Level;)V
Landroid/icu/util/LocaleMatcher$ScoreData;->addDataToScores(Ljava/lang/String;Ljava/lang/String;Landroid/icu/impl/Row$R3;)V
Landroid/icu/util/LocaleMatcher$ScoreData;->frozen:Z
@@ -34134,7 +31880,6 @@
Landroid/icu/util/LocaleMatcher$ScoreData;->maxUnequal_changeD_sameS:D
Landroid/icu/util/LocaleMatcher$ScoreData;->maxUnequal_changeEqual:D
Landroid/icu/util/LocaleMatcher$ScoreData;->scores:Ljava/util/LinkedHashSet;
-Landroid/icu/util/LocaleMatcher;
Landroid/icu/util/LocaleMatcher;-><init>(Landroid/icu/util/LocalePriorityList;)V
Landroid/icu/util/LocaleMatcher;-><init>(Landroid/icu/util/LocalePriorityList;Landroid/icu/util/LocaleMatcher$LanguageMatcherData;)V
Landroid/icu/util/LocaleMatcher;-><init>(Landroid/icu/util/LocalePriorityList;Landroid/icu/util/LocaleMatcher$LanguageMatcherData;D)V
@@ -34154,7 +31899,6 @@
Landroid/icu/util/LocaleMatcher;->getBestMatch(Landroid/icu/util/ULocale;)Landroid/icu/util/ULocale;
Landroid/icu/util/LocaleMatcher;->getBestMatch(Ljava/lang/String;)Landroid/icu/util/ULocale;
Landroid/icu/util/LocaleMatcher;->getBestMatch(Ljava/util/LinkedHashSet;Landroid/icu/util/Output;)Landroid/icu/util/ULocale;
-Landroid/icu/util/LocaleMatcher;->getBestMatch([[Landroid/icu/util/ULocale;)Landroid/icu/util/ULocale;
Landroid/icu/util/LocaleMatcher;->getBestMatchInternal(Landroid/icu/util/ULocale;Landroid/icu/util/LocaleMatcher$OutputDouble;)Landroid/icu/util/ULocale;
Landroid/icu/util/LocaleMatcher;->getICUSupplementalData()Landroid/icu/impl/ICUResourceBundle;
Landroid/icu/util/LocaleMatcher;->getLocaleMatcher()Landroid/icu/impl/locale/XLocaleMatcher;
@@ -34171,22 +31915,18 @@
Landroid/icu/util/LocaleMatcher;->xDefaultLanguage:Landroid/icu/util/ULocale;
Landroid/icu/util/LocaleMatcher;->xFavorScript:Z
Landroid/icu/util/LocaleMatcher;->xLocaleMatcher:Landroid/icu/impl/locale/XLocaleMatcher;
-Landroid/icu/util/LocalePriorityList$Builder;
Landroid/icu/util/LocalePriorityList$Builder;-><init>()V
Landroid/icu/util/LocalePriorityList$Builder;->add(Landroid/icu/util/LocalePriorityList;)Landroid/icu/util/LocalePriorityList$Builder;
Landroid/icu/util/LocalePriorityList$Builder;->add(Landroid/icu/util/ULocale;)Landroid/icu/util/LocalePriorityList$Builder;
Landroid/icu/util/LocalePriorityList$Builder;->add(Landroid/icu/util/ULocale;D)Landroid/icu/util/LocalePriorityList$Builder;
Landroid/icu/util/LocalePriorityList$Builder;->add(Ljava/lang/String;)Landroid/icu/util/LocalePriorityList$Builder;
-Landroid/icu/util/LocalePriorityList$Builder;->add([[Landroid/icu/util/ULocale;)Landroid/icu/util/LocalePriorityList$Builder;
Landroid/icu/util/LocalePriorityList$Builder;->build()Landroid/icu/util/LocalePriorityList;
Landroid/icu/util/LocalePriorityList$Builder;->build(Z)Landroid/icu/util/LocalePriorityList;
Landroid/icu/util/LocalePriorityList$Builder;->languageToWeight:Ljava/util/Map;
-Landroid/icu/util/LocalePriorityList;
Landroid/icu/util/LocalePriorityList;-><init>(Ljava/util/Map;)V
Landroid/icu/util/LocalePriorityList;->add(Landroid/icu/util/LocalePriorityList;)Landroid/icu/util/LocalePriorityList$Builder;
Landroid/icu/util/LocalePriorityList;->add(Landroid/icu/util/ULocale;D)Landroid/icu/util/LocalePriorityList$Builder;
Landroid/icu/util/LocalePriorityList;->add(Ljava/lang/String;)Landroid/icu/util/LocalePriorityList$Builder;
-Landroid/icu/util/LocalePriorityList;->add([[Landroid/icu/util/ULocale;)Landroid/icu/util/LocalePriorityList$Builder;
Landroid/icu/util/LocalePriorityList;->D0:D
Landroid/icu/util/LocalePriorityList;->D1:Ljava/lang/Double;
Landroid/icu/util/LocalePriorityList;->getWeight(Landroid/icu/util/ULocale;)Ljava/lang/Double;
@@ -34197,16 +31937,12 @@
Landroid/icu/util/Measure;->number:Ljava/lang/Number;
Landroid/icu/util/Measure;->numbersEqual(Ljava/lang/Number;Ljava/lang/Number;)Z
Landroid/icu/util/Measure;->unit:Landroid/icu/util/MeasureUnit;
-Landroid/icu/util/MeasureUnit$CurrencyNumericCodeSink;
Landroid/icu/util/MeasureUnit$CurrencyNumericCodeSink;-><init>()V
-Landroid/icu/util/MeasureUnit$Factory;
Landroid/icu/util/MeasureUnit$Factory;->create(Ljava/lang/String;Ljava/lang/String;)Landroid/icu/util/MeasureUnit;
-Landroid/icu/util/MeasureUnit$MeasureUnitProxy;
Landroid/icu/util/MeasureUnit$MeasureUnitProxy;-><init>()V
Landroid/icu/util/MeasureUnit$MeasureUnitProxy;-><init>(Ljava/lang/String;Ljava/lang/String;)V
Landroid/icu/util/MeasureUnit$MeasureUnitProxy;->subType:Ljava/lang/String;
Landroid/icu/util/MeasureUnit$MeasureUnitProxy;->type:Ljava/lang/String;
-Landroid/icu/util/MeasureUnit$MeasureUnitSink;
Landroid/icu/util/MeasureUnit$MeasureUnitSink;-><init>()V
Landroid/icu/util/MeasureUnit;-><init>(Ljava/lang/String;Ljava/lang/String;)V
Landroid/icu/util/MeasureUnit;->addUnit(Ljava/lang/String;Ljava/lang/String;Landroid/icu/util/MeasureUnit$Factory;)Landroid/icu/util/MeasureUnit;
@@ -34225,16 +31961,13 @@
Landroid/icu/util/MeasureUnit;->type:Ljava/lang/String;
Landroid/icu/util/MeasureUnit;->unitPerUnitToSingleUnit:Ljava/util/HashMap;
Landroid/icu/util/MeasureUnit;->UNIT_FACTORY:Landroid/icu/util/MeasureUnit$Factory;
-Landroid/icu/util/NoUnit;
Landroid/icu/util/NoUnit;-><init>(Ljava/lang/String;)V
Landroid/icu/util/NoUnit;->BASE:Landroid/icu/util/NoUnit;
Landroid/icu/util/NoUnit;->PERCENT:Landroid/icu/util/NoUnit;
Landroid/icu/util/NoUnit;->PERMILLE:Landroid/icu/util/NoUnit;
-Landroid/icu/util/OutputInt;
Landroid/icu/util/OutputInt;-><init>()V
Landroid/icu/util/OutputInt;-><init>(I)V
Landroid/icu/util/OutputInt;->value:I
-Landroid/icu/util/PersianCalendar;
Landroid/icu/util/PersianCalendar;-><init>()V
Landroid/icu/util/PersianCalendar;-><init>(III)V
Landroid/icu/util/PersianCalendar;-><init>(IIIIII)V
@@ -34247,11 +31980,9 @@
Landroid/icu/util/PersianCalendar;->LIMITS:[[I
Landroid/icu/util/PersianCalendar;->MONTH_COUNT:[[I
Landroid/icu/util/PersianCalendar;->PERSIAN_EPOCH:I
-Landroid/icu/util/Range;
Landroid/icu/util/Range;-><init>(Ljava/util/Date;Landroid/icu/util/DateRule;)V
Landroid/icu/util/Range;->rule:Landroid/icu/util/DateRule;
Landroid/icu/util/Range;->start:Ljava/util/Date;
-Landroid/icu/util/RangeDateRule;
Landroid/icu/util/RangeDateRule;-><init>()V
Landroid/icu/util/RangeDateRule;->add(Landroid/icu/util/DateRule;)V
Landroid/icu/util/RangeDateRule;->add(Ljava/util/Date;Landroid/icu/util/DateRule;)V
@@ -34262,8 +31993,6 @@
Landroid/icu/util/RangeDateRule;->rangeAt(I)Landroid/icu/util/Range;
Landroid/icu/util/RangeDateRule;->ranges:Ljava/util/List;
Landroid/icu/util/RangeDateRule;->startIndex(Ljava/util/Date;)I
-Landroid/icu/util/Region$RegionType;
-Landroid/icu/util/Region$RegionType;-><init>()V
Landroid/icu/util/Region$RegionType;->CONTINENT:Landroid/icu/util/Region$RegionType;
Landroid/icu/util/Region$RegionType;->DEPRECATED:Landroid/icu/util/Region$RegionType;
Landroid/icu/util/Region$RegionType;->GROUPING:Landroid/icu/util/Region$RegionType;
@@ -34273,7 +32002,6 @@
Landroid/icu/util/Region$RegionType;->valueOf(Ljava/lang/String;)Landroid/icu/util/Region$RegionType;
Landroid/icu/util/Region$RegionType;->values()[Landroid/icu/util/Region$RegionType;
Landroid/icu/util/Region$RegionType;->WORLD:Landroid/icu/util/Region$RegionType;
-Landroid/icu/util/Region;
Landroid/icu/util/Region;-><init>()V
Landroid/icu/util/Region;->availableRegions:Ljava/util/ArrayList;
Landroid/icu/util/Region;->code:I
@@ -34303,7 +32031,6 @@
Landroid/icu/util/Region;->type:Landroid/icu/util/Region$RegionType;
Landroid/icu/util/Region;->UNKNOWN_REGION_ID:Ljava/lang/String;
Landroid/icu/util/Region;->WORLD_ID:Ljava/lang/String;
-Landroid/icu/util/RuleBasedTimeZone;
Landroid/icu/util/RuleBasedTimeZone;-><init>(Ljava/lang/String;Landroid/icu/util/InitialTimeZoneRule;)V
Landroid/icu/util/RuleBasedTimeZone;->addTransitionRule(Landroid/icu/util/TimeZoneRule;)V
Landroid/icu/util/RuleBasedTimeZone;->complete()V
@@ -34321,7 +32048,6 @@
Landroid/icu/util/RuleBasedTimeZone;->initialRule:Landroid/icu/util/InitialTimeZoneRule;
Landroid/icu/util/RuleBasedTimeZone;->isFrozen:Z
Landroid/icu/util/RuleBasedTimeZone;->upToDate:Z
-Landroid/icu/util/SimpleDateRule;
Landroid/icu/util/SimpleDateRule;-><init>(II)V
Landroid/icu/util/SimpleDateRule;-><init>(IIIZ)V
Landroid/icu/util/SimpleDateRule;-><init>(IILandroid/icu/util/Calendar;)V
@@ -34335,7 +32061,6 @@
Landroid/icu/util/SimpleDateRule;->isBetween(Ljava/util/Date;Ljava/util/Date;)Z
Landroid/icu/util/SimpleDateRule;->isOn(Ljava/util/Date;)Z
Landroid/icu/util/SimpleDateRule;->month:I
-Landroid/icu/util/SimpleHoliday;
Landroid/icu/util/SimpleHoliday;-><init>(IIILjava/lang/String;)V
Landroid/icu/util/SimpleHoliday;-><init>(IIILjava/lang/String;I)V
Landroid/icu/util/SimpleHoliday;-><init>(IIILjava/lang/String;II)V
@@ -34355,7 +32080,6 @@
Landroid/icu/util/SimpleHoliday;->NEW_YEARS_EVE:Landroid/icu/util/SimpleHoliday;
Landroid/icu/util/SimpleHoliday;->rangeRule(IILandroid/icu/util/DateRule;)Landroid/icu/util/DateRule;
Landroid/icu/util/SimpleHoliday;->ST_STEPHENS_DAY:Landroid/icu/util/SimpleHoliday;
-Landroid/icu/util/SimpleTimeZone;
Landroid/icu/util/SimpleTimeZone;-><init>(ILjava/lang/String;)V
Landroid/icu/util/SimpleTimeZone;-><init>(ILjava/lang/String;IIIIIIII)V
Landroid/icu/util/SimpleTimeZone;-><init>(ILjava/lang/String;IIIIIIIII)V
@@ -34416,7 +32140,6 @@
Landroid/icu/util/SimpleTimeZone;->UTC_TIME:I
Landroid/icu/util/SimpleTimeZone;->WALL_TIME:I
Landroid/icu/util/SimpleTimeZone;->xinfo:Landroid/icu/util/STZInfo;
-Landroid/icu/util/StringTokenizer;
Landroid/icu/util/StringTokenizer;-><init>(Ljava/lang/String;)V
Landroid/icu/util/StringTokenizer;-><init>(Ljava/lang/String;Landroid/icu/text/UnicodeSet;)V
Landroid/icu/util/StringTokenizer;-><init>(Ljava/lang/String;Landroid/icu/text/UnicodeSet;Z)V
@@ -34446,17 +32169,14 @@
Landroid/icu/util/StringTokenizer;->nextToken(Landroid/icu/text/UnicodeSet;)Ljava/lang/String;
Landroid/icu/util/StringTokenizer;->nextToken(Ljava/lang/String;)Ljava/lang/String;
Landroid/icu/util/StringTokenizer;->TOKEN_SIZE_:I
-Landroid/icu/util/StringTrieBuilder$BranchHeadNode;
Landroid/icu/util/StringTrieBuilder$BranchHeadNode;-><init>(ILandroid/icu/util/StringTrieBuilder$Node;)V
Landroid/icu/util/StringTrieBuilder$BranchHeadNode;->length:I
Landroid/icu/util/StringTrieBuilder$BranchHeadNode;->markRightEdgesFirst(I)I
Landroid/icu/util/StringTrieBuilder$BranchHeadNode;->next:Landroid/icu/util/StringTrieBuilder$Node;
Landroid/icu/util/StringTrieBuilder$BranchHeadNode;->write(Landroid/icu/util/StringTrieBuilder;)V
-Landroid/icu/util/StringTrieBuilder$BranchNode;
Landroid/icu/util/StringTrieBuilder$BranchNode;-><init>()V
Landroid/icu/util/StringTrieBuilder$BranchNode;->firstEdgeNumber:I
Landroid/icu/util/StringTrieBuilder$BranchNode;->hash:I
-Landroid/icu/util/StringTrieBuilder$DynamicBranchNode;
Landroid/icu/util/StringTrieBuilder$DynamicBranchNode;-><init>()V
Landroid/icu/util/StringTrieBuilder$DynamicBranchNode;->add(CLandroid/icu/util/StringTrieBuilder$Node;)V
Landroid/icu/util/StringTrieBuilder$DynamicBranchNode;->add(Landroid/icu/util/StringTrieBuilder;Ljava/lang/CharSequence;II)Landroid/icu/util/StringTrieBuilder$Node;
@@ -34465,12 +32185,10 @@
Landroid/icu/util/StringTrieBuilder$DynamicBranchNode;->find(C)I
Landroid/icu/util/StringTrieBuilder$DynamicBranchNode;->register(Landroid/icu/util/StringTrieBuilder;)Landroid/icu/util/StringTrieBuilder$Node;
Landroid/icu/util/StringTrieBuilder$DynamicBranchNode;->register(Landroid/icu/util/StringTrieBuilder;II)Landroid/icu/util/StringTrieBuilder$Node;
-Landroid/icu/util/StringTrieBuilder$IntermediateValueNode;
Landroid/icu/util/StringTrieBuilder$IntermediateValueNode;-><init>(ILandroid/icu/util/StringTrieBuilder$Node;)V
Landroid/icu/util/StringTrieBuilder$IntermediateValueNode;->markRightEdgesFirst(I)I
Landroid/icu/util/StringTrieBuilder$IntermediateValueNode;->next:Landroid/icu/util/StringTrieBuilder$Node;
Landroid/icu/util/StringTrieBuilder$IntermediateValueNode;->write(Landroid/icu/util/StringTrieBuilder;)V
-Landroid/icu/util/StringTrieBuilder$LinearMatchNode;
Landroid/icu/util/StringTrieBuilder$LinearMatchNode;-><init>(Ljava/lang/CharSequence;IILandroid/icu/util/StringTrieBuilder$Node;)V
Landroid/icu/util/StringTrieBuilder$LinearMatchNode;->add(Landroid/icu/util/StringTrieBuilder;Ljava/lang/CharSequence;II)Landroid/icu/util/StringTrieBuilder$Node;
Landroid/icu/util/StringTrieBuilder$LinearMatchNode;->hash:I
@@ -34482,7 +32200,6 @@
Landroid/icu/util/StringTrieBuilder$LinearMatchNode;->stringOffset:I
Landroid/icu/util/StringTrieBuilder$LinearMatchNode;->strings:Ljava/lang/CharSequence;
Landroid/icu/util/StringTrieBuilder$LinearMatchNode;->write(Landroid/icu/util/StringTrieBuilder;)V
-Landroid/icu/util/StringTrieBuilder$ListBranchNode;
Landroid/icu/util/StringTrieBuilder$ListBranchNode;-><init>(I)V
Landroid/icu/util/StringTrieBuilder$ListBranchNode;->add(II)V
Landroid/icu/util/StringTrieBuilder$ListBranchNode;->add(ILandroid/icu/util/StringTrieBuilder$Node;)V
@@ -34492,7 +32209,6 @@
Landroid/icu/util/StringTrieBuilder$ListBranchNode;->units:[C
Landroid/icu/util/StringTrieBuilder$ListBranchNode;->values:[I
Landroid/icu/util/StringTrieBuilder$ListBranchNode;->write(Landroid/icu/util/StringTrieBuilder;)V
-Landroid/icu/util/StringTrieBuilder$Node;
Landroid/icu/util/StringTrieBuilder$Node;-><init>()V
Landroid/icu/util/StringTrieBuilder$Node;->add(Landroid/icu/util/StringTrieBuilder;Ljava/lang/CharSequence;II)Landroid/icu/util/StringTrieBuilder$Node;
Landroid/icu/util/StringTrieBuilder$Node;->getOffset()I
@@ -34501,28 +32217,22 @@
Landroid/icu/util/StringTrieBuilder$Node;->register(Landroid/icu/util/StringTrieBuilder;)Landroid/icu/util/StringTrieBuilder$Node;
Landroid/icu/util/StringTrieBuilder$Node;->write(Landroid/icu/util/StringTrieBuilder;)V
Landroid/icu/util/StringTrieBuilder$Node;->writeUnlessInsideRightEdge(IILandroid/icu/util/StringTrieBuilder;)V
-Landroid/icu/util/StringTrieBuilder$Option;
-Landroid/icu/util/StringTrieBuilder$Option;-><init>()V
Landroid/icu/util/StringTrieBuilder$Option;->FAST:Landroid/icu/util/StringTrieBuilder$Option;
Landroid/icu/util/StringTrieBuilder$Option;->SMALL:Landroid/icu/util/StringTrieBuilder$Option;
Landroid/icu/util/StringTrieBuilder$Option;->valueOf(Ljava/lang/String;)Landroid/icu/util/StringTrieBuilder$Option;
Landroid/icu/util/StringTrieBuilder$Option;->values()[Landroid/icu/util/StringTrieBuilder$Option;
-Landroid/icu/util/StringTrieBuilder$SplitBranchNode;
Landroid/icu/util/StringTrieBuilder$SplitBranchNode;-><init>(CLandroid/icu/util/StringTrieBuilder$Node;Landroid/icu/util/StringTrieBuilder$Node;)V
Landroid/icu/util/StringTrieBuilder$SplitBranchNode;->greaterOrEqual:Landroid/icu/util/StringTrieBuilder$Node;
Landroid/icu/util/StringTrieBuilder$SplitBranchNode;->lessThan:Landroid/icu/util/StringTrieBuilder$Node;
Landroid/icu/util/StringTrieBuilder$SplitBranchNode;->markRightEdgesFirst(I)I
Landroid/icu/util/StringTrieBuilder$SplitBranchNode;->unit:C
Landroid/icu/util/StringTrieBuilder$SplitBranchNode;->write(Landroid/icu/util/StringTrieBuilder;)V
-Landroid/icu/util/StringTrieBuilder$State;
-Landroid/icu/util/StringTrieBuilder$State;-><init>()V
Landroid/icu/util/StringTrieBuilder$State;->ADDING:Landroid/icu/util/StringTrieBuilder$State;
Landroid/icu/util/StringTrieBuilder$State;->BUILDING_FAST:Landroid/icu/util/StringTrieBuilder$State;
Landroid/icu/util/StringTrieBuilder$State;->BUILDING_SMALL:Landroid/icu/util/StringTrieBuilder$State;
Landroid/icu/util/StringTrieBuilder$State;->BUILT:Landroid/icu/util/StringTrieBuilder$State;
Landroid/icu/util/StringTrieBuilder$State;->valueOf(Ljava/lang/String;)Landroid/icu/util/StringTrieBuilder$State;
Landroid/icu/util/StringTrieBuilder$State;->values()[Landroid/icu/util/StringTrieBuilder$State;
-Landroid/icu/util/StringTrieBuilder$ValueNode;
Landroid/icu/util/StringTrieBuilder$ValueNode;-><init>()V
Landroid/icu/util/StringTrieBuilder$ValueNode;-><init>(I)V
Landroid/icu/util/StringTrieBuilder$ValueNode;->add(Landroid/icu/util/StringTrieBuilder;Ljava/lang/CharSequence;II)Landroid/icu/util/StringTrieBuilder$Node;
@@ -34531,7 +32241,6 @@
Landroid/icu/util/StringTrieBuilder$ValueNode;->setValue(I)V
Landroid/icu/util/StringTrieBuilder$ValueNode;->value:I
Landroid/icu/util/StringTrieBuilder$ValueNode;->write(Landroid/icu/util/StringTrieBuilder;)V
-Landroid/icu/util/StringTrieBuilder;
Landroid/icu/util/StringTrieBuilder;-><init>()V
Landroid/icu/util/StringTrieBuilder;->addImpl(Ljava/lang/CharSequence;I)V
Landroid/icu/util/StringTrieBuilder;->buildImpl(Landroid/icu/util/StringTrieBuilder$Option;)V
@@ -34553,7 +32262,6 @@
Landroid/icu/util/StringTrieBuilder;->writeDeltaTo(I)I
Landroid/icu/util/StringTrieBuilder;->writeValueAndFinal(IZ)I
Landroid/icu/util/StringTrieBuilder;->writeValueAndType(ZII)I
-Landroid/icu/util/STZInfo;
Landroid/icu/util/STZInfo;-><init>()V
Landroid/icu/util/STZInfo;->applyTo(Landroid/icu/util/SimpleTimeZone;)V
Landroid/icu/util/STZInfo;->ea:Z
@@ -34573,7 +32281,6 @@
Landroid/icu/util/STZInfo;->sy:I
Landroid/icu/util/TaiwanCalendar;->GREGORIAN_EPOCH:I
Landroid/icu/util/TaiwanCalendar;->Taiwan_ERA_START:I
-Landroid/icu/util/TimeArrayTimeZoneRule;
Landroid/icu/util/TimeArrayTimeZoneRule;-><init>(Ljava/lang/String;II[JI)V
Landroid/icu/util/TimeArrayTimeZoneRule;->getFinalStart(II)Ljava/util/Date;
Landroid/icu/util/TimeArrayTimeZoneRule;->getFirstStart(II)Ljava/util/Date;
@@ -34588,15 +32295,12 @@
Landroid/icu/util/TimeArrayTimeZoneRule;->timeType:I
Landroid/icu/util/TimeUnit;-><init>(Ljava/lang/String;Ljava/lang/String;)V
Landroid/icu/util/TimeUnit;->index:I
-Landroid/icu/util/TimeUnitAmount;
Landroid/icu/util/TimeUnitAmount;-><init>(DLandroid/icu/util/TimeUnit;)V
Landroid/icu/util/TimeUnitAmount;-><init>(Ljava/lang/Number;Landroid/icu/util/TimeUnit;)V
Landroid/icu/util/TimeUnitAmount;->getTimeUnit()Landroid/icu/util/TimeUnit;
-Landroid/icu/util/TimeZone$ConstantZone;
Landroid/icu/util/TimeZone$ConstantZone;-><init>(ILjava/lang/String;)V
Landroid/icu/util/TimeZone$ConstantZone;->isFrozen:Z
Landroid/icu/util/TimeZone$ConstantZone;->rawOffset:I
-Landroid/icu/util/TimeZone$SystemTimeZoneType;-><init>()V
Landroid/icu/util/TimeZone;-><init>(Ljava/lang/String;)V
Landroid/icu/util/TimeZone;->defaultZone:Landroid/icu/util/TimeZone;
Landroid/icu/util/TimeZone;->getDefaultTimeZoneType()I
@@ -34613,7 +32317,6 @@
Landroid/icu/util/TimeZone;->TZIMPL_CONFIG_KEY:Ljava/lang/String;
Landroid/icu/util/TimeZone;->TZ_IMPL:I
Landroid/icu/util/TimeZone;->_getDisplayName(IZLandroid/icu/util/ULocale;)Ljava/lang/String;
-Landroid/icu/util/TimeZoneRule;
Landroid/icu/util/TimeZoneRule;-><init>(Ljava/lang/String;II)V
Landroid/icu/util/TimeZoneRule;->dstSavings:I
Landroid/icu/util/TimeZoneRule;->getDSTSavings()I
@@ -34627,7 +32330,6 @@
Landroid/icu/util/TimeZoneRule;->isTransitionRule()Z
Landroid/icu/util/TimeZoneRule;->name:Ljava/lang/String;
Landroid/icu/util/TimeZoneRule;->rawOffset:I
-Landroid/icu/util/TimeZoneTransition;
Landroid/icu/util/TimeZoneTransition;-><init>(JLandroid/icu/util/TimeZoneRule;Landroid/icu/util/TimeZoneRule;)V
Landroid/icu/util/TimeZoneTransition;->from:Landroid/icu/util/TimeZoneRule;
Landroid/icu/util/TimeZoneTransition;->getFrom()Landroid/icu/util/TimeZoneRule;
@@ -34636,8 +32338,6 @@
Landroid/icu/util/TimeZoneTransition;->time:J
Landroid/icu/util/TimeZoneTransition;->to:Landroid/icu/util/TimeZoneRule;
Landroid/icu/util/ULocale$Builder;->_locbld:Landroid/icu/impl/locale/InternalLocaleBuilder;
-Landroid/icu/util/ULocale$Category;-><init>()V
-Landroid/icu/util/ULocale$JDKLocaleHelper;
Landroid/icu/util/ULocale$JDKLocaleHelper;-><init>()V
Landroid/icu/util/ULocale$JDKLocaleHelper;->eDISPLAY:Ljava/lang/Object;
Landroid/icu/util/ULocale$JDKLocaleHelper;->eFORMAT:Ljava/lang/Object;
@@ -34664,13 +32364,10 @@
Landroid/icu/util/ULocale$JDKLocaleHelper;->toULocale(Ljava/util/Locale;)Landroid/icu/util/ULocale;
Landroid/icu/util/ULocale$JDKLocaleHelper;->toULocale6(Ljava/util/Locale;)Landroid/icu/util/ULocale;
Landroid/icu/util/ULocale$JDKLocaleHelper;->toULocale7(Ljava/util/Locale;)Landroid/icu/util/ULocale;
-Landroid/icu/util/ULocale$Minimize;
-Landroid/icu/util/ULocale$Minimize;-><init>()V
Landroid/icu/util/ULocale$Minimize;->FAVOR_REGION:Landroid/icu/util/ULocale$Minimize;
Landroid/icu/util/ULocale$Minimize;->FAVOR_SCRIPT:Landroid/icu/util/ULocale$Minimize;
Landroid/icu/util/ULocale$Minimize;->valueOf(Ljava/lang/String;)Landroid/icu/util/ULocale$Minimize;
Landroid/icu/util/ULocale$Minimize;->values()[Landroid/icu/util/ULocale$Minimize;
-Landroid/icu/util/ULocale$Type;
Landroid/icu/util/ULocale$Type;-><init>()V
Landroid/icu/util/ULocale;-><init>(Ljava/lang/String;Ljava/util/Locale;)V
Landroid/icu/util/ULocale;-><init>(Ljava/util/Locale;)V
@@ -34727,7 +32424,6 @@
Landroid/icu/util/ULocale;->UNDERSCORE:C
Landroid/icu/util/ULocale;->VALID_LOCALE:Landroid/icu/util/ULocale$Type;
Landroid/icu/util/ULocale;->variantsToKeywords:[[Ljava/lang/String;
-Landroid/icu/util/UniversalTimeScale$TimeScaleData;
Landroid/icu/util/UniversalTimeScale$TimeScaleData;-><init>(JJJJJJ)V
Landroid/icu/util/UniversalTimeScale$TimeScaleData;->epochOffset:J
Landroid/icu/util/UniversalTimeScale$TimeScaleData;->epochOffsetM1:J
@@ -34758,14 +32454,11 @@
Landroid/icu/util/UniversalTimeScale;->toBigDecimalTrunc(Landroid/icu/math/BigDecimal;I)Landroid/icu/math/BigDecimal;
Landroid/icu/util/UniversalTimeScale;->toRangeCheck(JI)Landroid/icu/util/UniversalTimeScale$TimeScaleData;
Landroid/icu/util/UniversalTimeScale;->UNITS_ROUND_VALUE:I
-Landroid/icu/util/UResourceBundle$RootType;
-Landroid/icu/util/UResourceBundle$RootType;-><init>()V
Landroid/icu/util/UResourceBundle$RootType;->ICU:Landroid/icu/util/UResourceBundle$RootType;
Landroid/icu/util/UResourceBundle$RootType;->JAVA:Landroid/icu/util/UResourceBundle$RootType;
Landroid/icu/util/UResourceBundle$RootType;->MISSING:Landroid/icu/util/UResourceBundle$RootType;
Landroid/icu/util/UResourceBundle$RootType;->valueOf(Ljava/lang/String;)Landroid/icu/util/UResourceBundle$RootType;
Landroid/icu/util/UResourceBundle$RootType;->values()[Landroid/icu/util/UResourceBundle$RootType;
-Landroid/icu/util/UResourceBundle;
Landroid/icu/util/UResourceBundle;-><init>()V
Landroid/icu/util/UResourceBundle;->ARRAY:I
Landroid/icu/util/UResourceBundle;->BINARY:I
@@ -34811,14 +32504,12 @@
Landroid/icu/util/UResourceBundle;->setRootType(Ljava/lang/String;Landroid/icu/util/UResourceBundle$RootType;)V
Landroid/icu/util/UResourceBundle;->STRING:I
Landroid/icu/util/UResourceBundle;->TABLE:I
-Landroid/icu/util/UResourceBundleIterator;
Landroid/icu/util/UResourceBundleIterator;-><init>(Landroid/icu/util/UResourceBundle;)V
Landroid/icu/util/UResourceBundleIterator;->bundle:Landroid/icu/util/UResourceBundle;
Landroid/icu/util/UResourceBundleIterator;->index:I
Landroid/icu/util/UResourceBundleIterator;->nextString()Ljava/lang/String;
Landroid/icu/util/UResourceBundleIterator;->reset()V
Landroid/icu/util/UResourceBundleIterator;->size:I
-Landroid/icu/util/UResourceTypeMismatchException;
Landroid/icu/util/UResourceTypeMismatchException;-><init>(Ljava/lang/String;)V
Landroid/icu/util/VersionInfo;-><init>(I)V
Landroid/icu/util/VersionInfo;->getInt(IIII)I
@@ -34836,7 +32527,6 @@
Landroid/icu/util/VersionInfo;->TZDATA_VERSION:Ljava/lang/String;
Landroid/icu/util/VersionInfo;->UCOL_TAILORINGS_VERSION:Landroid/icu/util/VersionInfo;
Landroid/icu/util/VersionInfo;->UNICODE_VERSION:Landroid/icu/util/VersionInfo;
-Landroid/icu/util/VTimeZone;
Landroid/icu/util/VTimeZone;-><init>()V
Landroid/icu/util/VTimeZone;-><init>(Ljava/lang/String;)V
Landroid/icu/util/VTimeZone;->appendUNTIL(Ljava/io/Writer;Ljava/lang/String;)V
@@ -34932,7 +32622,6 @@
Landroid/inputmethodservice/AbstractInputMethodService;->exposeContent(Landroid/view/inputmethod/InputContentInfo;Landroid/view/inputmethod/InputConnection;)V
Landroid/inputmethodservice/AbstractInputMethodService;->mDispatcherState:Landroid/view/KeyEvent$DispatcherState;
Landroid/inputmethodservice/AbstractInputMethodService;->mInputMethod:Landroid/view/inputmethod/InputMethod;
-Landroid/inputmethodservice/CompactExtractEditLayout;
Landroid/inputmethodservice/CompactExtractEditLayout;-><init>(Landroid/content/Context;)V
Landroid/inputmethodservice/CompactExtractEditLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
Landroid/inputmethodservice/CompactExtractEditLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
@@ -34944,7 +32633,6 @@
Landroid/inputmethodservice/CompactExtractEditLayout;->mPerformLayoutChanges:Z
Landroid/inputmethodservice/CompactExtractEditLayout;->setLayoutHeight(Landroid/view/View;I)V
Landroid/inputmethodservice/CompactExtractEditLayout;->setLayoutMarginBottom(Landroid/view/View;I)V
-Landroid/inputmethodservice/ExtractEditLayout;
Landroid/inputmethodservice/ExtractEditLayout;-><init>(Landroid/content/Context;)V
Landroid/inputmethodservice/ExtractEditLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
Landroid/inputmethodservice/ExtractEditLayout;->mExtractActionButton:Landroid/widget/Button;
@@ -34957,13 +32645,10 @@
Landroid/inputmethodservice/ExtractEditText;->setIME(Landroid/inputmethodservice/InputMethodService;)V
Landroid/inputmethodservice/ExtractEditText;->setSpan_internal(Ljava/lang/Object;III)V
Landroid/inputmethodservice/ExtractEditText;->viewClicked(Landroid/view/inputmethod/InputMethodManager;)V
-Landroid/inputmethodservice/InputMethodService$BackDispositionMode;
Landroid/inputmethodservice/InputMethodService$InputMethodImpl;->dispatchStartInputWithToken(Landroid/view/inputmethod/InputConnection;Landroid/view/inputmethod/EditorInfo;ZLandroid/os/IBinder;)V
-Landroid/inputmethodservice/InputMethodService$SettingsObserver$ShowImeWithHardKeyboardType;
Landroid/inputmethodservice/InputMethodService$SettingsObserver$ShowImeWithHardKeyboardType;->FALSE:I
Landroid/inputmethodservice/InputMethodService$SettingsObserver$ShowImeWithHardKeyboardType;->TRUE:I
Landroid/inputmethodservice/InputMethodService$SettingsObserver$ShowImeWithHardKeyboardType;->UNKNOWN:I
-Landroid/inputmethodservice/InputMethodService$SettingsObserver;
Landroid/inputmethodservice/InputMethodService$SettingsObserver;-><init>(Landroid/inputmethodservice/InputMethodService;)V
Landroid/inputmethodservice/InputMethodService$SettingsObserver;->createAndRegister(Landroid/inputmethodservice/InputMethodService;)Landroid/inputmethodservice/InputMethodService$SettingsObserver;
Landroid/inputmethodservice/InputMethodService$SettingsObserver;->mService:Landroid/inputmethodservice/InputMethodService;
@@ -35084,7 +32769,6 @@
Landroid/inputmethodservice/Keyboard;->TAG_KEY:Ljava/lang/String;
Landroid/inputmethodservice/Keyboard;->TAG_KEYBOARD:Ljava/lang/String;
Landroid/inputmethodservice/Keyboard;->TAG_ROW:Ljava/lang/String;
-Landroid/inputmethodservice/KeyboardView$SwipeTracker;
Landroid/inputmethodservice/KeyboardView$SwipeTracker;-><init>()V
Landroid/inputmethodservice/KeyboardView$SwipeTracker;->addMovement(Landroid/view/MotionEvent;)V
Landroid/inputmethodservice/KeyboardView$SwipeTracker;->addPoint(FFJ)V
@@ -35206,9 +32890,7 @@
Landroid/inputmethodservice/KeyboardView;->resetMultiTap()V
Landroid/inputmethodservice/KeyboardView;->sendAccessibilityEventForUnicodeCharacter(II)V
Landroid/inputmethodservice/KeyboardView;->showPreview(I)V
-Landroid/inputmethodservice/SoftInputWindow$Callback;
Landroid/inputmethodservice/SoftInputWindow$Callback;->onBackPressed()V
-Landroid/inputmethodservice/SoftInputWindow;
Landroid/inputmethodservice/SoftInputWindow;-><init>(Landroid/content/Context;Ljava/lang/String;ILandroid/inputmethodservice/SoftInputWindow$Callback;Landroid/view/KeyEvent$Callback;Landroid/view/KeyEvent$DispatcherState;IIZ)V
Landroid/inputmethodservice/SoftInputWindow;->getGravity()I
Landroid/inputmethodservice/SoftInputWindow;->initDockWindow()V
@@ -35244,16 +32926,12 @@
Landroid/location/Address;->mSubThoroughfare:Ljava/lang/String;
Landroid/location/Address;->mThoroughfare:Ljava/lang/String;
Landroid/location/Address;->mUrl:Ljava/lang/String;
-Landroid/location/BatchedLocationCallbackTransport$CallbackTransport;
-Landroid/location/BatchedLocationCallbackTransport$CallbackTransport;-><init>()V
Landroid/location/BatchedLocationCallbackTransport$CallbackTransport;->onLocationBatch(Ljava/util/List;)V
-Landroid/location/BatchedLocationCallbackTransport;
Landroid/location/BatchedLocationCallbackTransport;-><init>(Landroid/content/Context;Landroid/location/ILocationManager;)V
Landroid/location/BatchedLocationCallbackTransport;->mCallbackTransport:Landroid/location/IBatchedLocationCallback;
Landroid/location/BatchedLocationCallbackTransport;->mLocationManager:Landroid/location/ILocationManager;
Landroid/location/BatchedLocationCallbackTransport;->registerWithServer()Z
Landroid/location/BatchedLocationCallbackTransport;->unregisterFromServer()V
-Landroid/location/Country;
Landroid/location/Country;-><init>(Landroid/location/Country;)V
Landroid/location/Country;-><init>(Ljava/lang/String;IJ)V
Landroid/location/Country;->COUNTRY_SOURCE_LOCALE:I
@@ -35267,16 +32945,13 @@
Landroid/location/Country;->mHashCode:I
Landroid/location/Country;->mSource:I
Landroid/location/Country;->mTimestamp:J
-Landroid/location/CountryDetector$ListenerTransport;
Landroid/location/CountryDetector$ListenerTransport;-><init>(Landroid/location/CountryListener;Landroid/os/Looper;)V
Landroid/location/CountryDetector$ListenerTransport;->mHandler:Landroid/os/Handler;
Landroid/location/CountryDetector$ListenerTransport;->mListener:Landroid/location/CountryListener;
Landroid/location/CountryDetector$ListenerTransport;->onCountryDetected(Landroid/location/Country;)V
-Landroid/location/CountryDetector;
Landroid/location/CountryDetector;->mListeners:Ljava/util/HashMap;
Landroid/location/CountryDetector;->mService:Landroid/location/ICountryDetector;
Landroid/location/CountryDetector;->TAG:Ljava/lang/String;
-Landroid/location/CountryListener;
Landroid/location/Criteria;->accuracyToString(I)Ljava/lang/String;
Landroid/location/Criteria;->mAltitudeRequired:Z
Landroid/location/Criteria;->mBearingAccuracy:I
@@ -35288,18 +32963,15 @@
Landroid/location/Criteria;->mSpeedRequired:Z
Landroid/location/Criteria;->mVerticalAccuracy:I
Landroid/location/Criteria;->powerToString(I)Ljava/lang/String;
-Landroid/location/FusedBatchOptions$BatchFlags;
Landroid/location/FusedBatchOptions$BatchFlags;-><init>()V
Landroid/location/FusedBatchOptions$BatchFlags;->CALLBACK_ON_LOCATION_FIX:I
Landroid/location/FusedBatchOptions$BatchFlags;->WAKEUP_ON_FIFO_FULL:I
-Landroid/location/FusedBatchOptions$SourceTechnologies;
Landroid/location/FusedBatchOptions$SourceTechnologies;-><init>()V
Landroid/location/FusedBatchOptions$SourceTechnologies;->BLUETOOTH:I
Landroid/location/FusedBatchOptions$SourceTechnologies;->CELL:I
Landroid/location/FusedBatchOptions$SourceTechnologies;->GNSS:I
Landroid/location/FusedBatchOptions$SourceTechnologies;->SENSORS:I
Landroid/location/FusedBatchOptions$SourceTechnologies;->WIFI:I
-Landroid/location/FusedBatchOptions;
Landroid/location/FusedBatchOptions;-><init>()V
Landroid/location/FusedBatchOptions;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/location/FusedBatchOptions;->getFlags()I
@@ -35324,13 +32996,11 @@
Landroid/location/Geocoder;->mParams:Landroid/location/GeocoderParams;
Landroid/location/Geocoder;->mService:Landroid/location/ILocationManager;
Landroid/location/Geocoder;->TAG:Ljava/lang/String;
-Landroid/location/GeocoderParams;
Landroid/location/GeocoderParams;-><init>()V
Landroid/location/GeocoderParams;-><init>(Landroid/content/Context;Ljava/util/Locale;)V
Landroid/location/GeocoderParams;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/location/GeocoderParams;->mLocale:Ljava/util/Locale;
Landroid/location/GeocoderParams;->mPackageName:Ljava/lang/String;
-Landroid/location/Geofence;
Landroid/location/Geofence;-><init>(DDF)V
Landroid/location/Geofence;->checkLatLong(DD)V
Landroid/location/Geofence;->checkRadius(F)V
@@ -35368,9 +33038,6 @@
Landroid/location/GnssClock;->mTimeUncertaintyNanos:D
Landroid/location/GnssClock;->resetFlag(I)V
Landroid/location/GnssClock;->setFlag(I)V
-Landroid/location/GnssMeasurement$AdrState;
-Landroid/location/GnssMeasurement$MultipathIndicator;
-Landroid/location/GnssMeasurement$State;
Landroid/location/GnssMeasurement;->getAccumulatedDeltaRangeStateString()Ljava/lang/String;
Landroid/location/GnssMeasurement;->getMultipathIndicatorString()Ljava/lang/String;
Landroid/location/GnssMeasurement;->getStateString()Ljava/lang/String;
@@ -35406,21 +33073,15 @@
Landroid/location/GnssMeasurement;->resetFlag(I)V
Landroid/location/GnssMeasurement;->setFlag(I)V
Landroid/location/GnssMeasurement;->STATE_ALL:I
-Landroid/location/GnssMeasurementCallbackTransport$ListenerTransport;
-Landroid/location/GnssMeasurementCallbackTransport$ListenerTransport;-><init>()V
Landroid/location/GnssMeasurementCallbackTransport$ListenerTransport;->onGnssMeasurementsReceived(Landroid/location/GnssMeasurementsEvent;)V
Landroid/location/GnssMeasurementCallbackTransport$ListenerTransport;->onStatusChanged(I)V
-Landroid/location/GnssMeasurementCallbackTransport;
Landroid/location/GnssMeasurementCallbackTransport;-><init>(Landroid/content/Context;Landroid/location/ILocationManager;)V
Landroid/location/GnssMeasurementCallbackTransport;->mListenerTransport:Landroid/location/IGnssMeasurementsListener;
Landroid/location/GnssMeasurementCallbackTransport;->mLocationManager:Landroid/location/ILocationManager;
Landroid/location/GnssMeasurementCallbackTransport;->registerWithServer()Z
Landroid/location/GnssMeasurementCallbackTransport;->unregisterFromServer()V
-Landroid/location/GnssMeasurementsEvent$Callback$GnssMeasurementsStatus;
Landroid/location/GnssMeasurementsEvent;->mClock:Landroid/location/GnssClock;
Landroid/location/GnssMeasurementsEvent;->mReadOnlyMeasurements:Ljava/util/Collection;
-Landroid/location/GnssNavigationMessage$Callback$GnssNavigationMessageStatus;
-Landroid/location/GnssNavigationMessage$GnssNavigationMessageType;
Landroid/location/GnssNavigationMessage;->EMPTY_ARRAY:[B
Landroid/location/GnssNavigationMessage;->getStatusString()Ljava/lang/String;
Landroid/location/GnssNavigationMessage;->getTypeString()Ljava/lang/String;
@@ -35431,17 +33092,13 @@
Landroid/location/GnssNavigationMessage;->mSubmessageId:I
Landroid/location/GnssNavigationMessage;->mSvid:I
Landroid/location/GnssNavigationMessage;->mType:I
-Landroid/location/GnssNavigationMessageCallbackTransport$ListenerTransport;
-Landroid/location/GnssNavigationMessageCallbackTransport$ListenerTransport;-><init>()V
Landroid/location/GnssNavigationMessageCallbackTransport$ListenerTransport;->onGnssNavigationMessageReceived(Landroid/location/GnssNavigationMessage;)V
Landroid/location/GnssNavigationMessageCallbackTransport$ListenerTransport;->onStatusChanged(I)V
-Landroid/location/GnssNavigationMessageCallbackTransport;
Landroid/location/GnssNavigationMessageCallbackTransport;-><init>(Landroid/content/Context;Landroid/location/ILocationManager;)V
Landroid/location/GnssNavigationMessageCallbackTransport;->mListenerTransport:Landroid/location/IGnssNavigationMessageListener;
Landroid/location/GnssNavigationMessageCallbackTransport;->mLocationManager:Landroid/location/ILocationManager;
Landroid/location/GnssNavigationMessageCallbackTransport;->registerWithServer()Z
Landroid/location/GnssNavigationMessageCallbackTransport;->unregisterFromServer()V
-Landroid/location/GnssStatus$ConstellationType;
Landroid/location/GnssStatus;-><init>(I[I[F[F[F[F)V
Landroid/location/GnssStatus;->CONSTELLATION_TYPE_MASK:I
Landroid/location/GnssStatus;->CONSTELLATION_TYPE_SHIFT_WIDTH:I
@@ -35568,8 +33225,6 @@
Landroid/location/GpsSatellite;->mUsedInFix:Z
Landroid/location/GpsSatellite;->mValid:Z
Landroid/location/GpsSatellite;->setStatus(Landroid/location/GpsSatellite;)V
-Landroid/location/GpsStatus$SatelliteIterator;
-Landroid/location/GpsStatus$SatelliteIterator;-><init>()V
Landroid/location/GpsStatus$SatelliteIterator;->mIndex:I
Landroid/location/GpsStatus$SatelliteIterator;->mSatellitesCount:I
Landroid/location/GpsStatus;-><init>()V
@@ -35583,47 +33238,37 @@
Landroid/location/GpsStatus;->SBAS_SVID_OFFSET:I
Landroid/location/GpsStatus;->setStatus(I[I[F[F[F)V
Landroid/location/GpsStatus;->setStatus(Landroid/location/GnssStatus;I)V
-Landroid/location/IBatchedLocationCallback$Stub$Proxy;
Landroid/location/IBatchedLocationCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/location/IBatchedLocationCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/location/IBatchedLocationCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/location/IBatchedLocationCallback$Stub$Proxy;->onLocationBatch(Ljava/util/List;)V
-Landroid/location/IBatchedLocationCallback$Stub;
Landroid/location/IBatchedLocationCallback$Stub;-><init>()V
Landroid/location/IBatchedLocationCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/location/IBatchedLocationCallback;
Landroid/location/IBatchedLocationCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/location/IBatchedLocationCallback$Stub;->TRANSACTION_onLocationBatch:I
-Landroid/location/IBatchedLocationCallback;
Landroid/location/IBatchedLocationCallback;->onLocationBatch(Ljava/util/List;)V
-Landroid/location/ICountryDetector$Stub$Proxy;
Landroid/location/ICountryDetector$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/location/ICountryDetector$Stub$Proxy;->addCountryListener(Landroid/location/ICountryListener;)V
Landroid/location/ICountryDetector$Stub$Proxy;->detectCountry()Landroid/location/Country;
Landroid/location/ICountryDetector$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/location/ICountryDetector$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/location/ICountryDetector$Stub$Proxy;->removeCountryListener(Landroid/location/ICountryListener;)V
-Landroid/location/ICountryDetector$Stub;
Landroid/location/ICountryDetector$Stub;-><init>()V
Landroid/location/ICountryDetector$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/location/ICountryDetector$Stub;->TRANSACTION_addCountryListener:I
Landroid/location/ICountryDetector$Stub;->TRANSACTION_detectCountry:I
Landroid/location/ICountryDetector$Stub;->TRANSACTION_removeCountryListener:I
-Landroid/location/ICountryDetector;
Landroid/location/ICountryDetector;->addCountryListener(Landroid/location/ICountryListener;)V
Landroid/location/ICountryDetector;->detectCountry()Landroid/location/Country;
Landroid/location/ICountryDetector;->removeCountryListener(Landroid/location/ICountryListener;)V
-Landroid/location/ICountryListener$Stub$Proxy;
Landroid/location/ICountryListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/location/ICountryListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/location/ICountryListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/location/ICountryListener$Stub$Proxy;->onCountryDetected(Landroid/location/Country;)V
-Landroid/location/ICountryListener$Stub;
Landroid/location/ICountryListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/location/ICountryListener;
Landroid/location/ICountryListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/location/ICountryListener$Stub;->TRANSACTION_onCountryDetected:I
-Landroid/location/ICountryListener;
Landroid/location/ICountryListener;->onCountryDetected(Landroid/location/Country;)V
-Landroid/location/IFusedGeofenceHardware$Stub$Proxy;
Landroid/location/IFusedGeofenceHardware$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/location/IFusedGeofenceHardware$Stub$Proxy;->addGeofences([Landroid/hardware/location/GeofenceHardwareRequestParcelable;)V
Landroid/location/IFusedGeofenceHardware$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
@@ -35633,7 +33278,6 @@
Landroid/location/IFusedGeofenceHardware$Stub$Proxy;->pauseMonitoringGeofence(I)V
Landroid/location/IFusedGeofenceHardware$Stub$Proxy;->removeGeofences([I)V
Landroid/location/IFusedGeofenceHardware$Stub$Proxy;->resumeMonitoringGeofence(II)V
-Landroid/location/IFusedGeofenceHardware$Stub;
Landroid/location/IFusedGeofenceHardware$Stub;-><init>()V
Landroid/location/IFusedGeofenceHardware$Stub;->asInterface(Landroid/os/IBinder;)Landroid/location/IFusedGeofenceHardware;
Landroid/location/IFusedGeofenceHardware$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -35643,65 +33287,51 @@
Landroid/location/IFusedGeofenceHardware$Stub;->TRANSACTION_pauseMonitoringGeofence:I
Landroid/location/IFusedGeofenceHardware$Stub;->TRANSACTION_removeGeofences:I
Landroid/location/IFusedGeofenceHardware$Stub;->TRANSACTION_resumeMonitoringGeofence:I
-Landroid/location/IFusedGeofenceHardware;
Landroid/location/IFusedGeofenceHardware;->addGeofences([Landroid/hardware/location/GeofenceHardwareRequestParcelable;)V
Landroid/location/IFusedGeofenceHardware;->isSupported()Z
Landroid/location/IFusedGeofenceHardware;->modifyGeofenceOptions(IIIIII)V
Landroid/location/IFusedGeofenceHardware;->pauseMonitoringGeofence(I)V
Landroid/location/IFusedGeofenceHardware;->removeGeofences([I)V
Landroid/location/IFusedGeofenceHardware;->resumeMonitoringGeofence(II)V
-Landroid/location/IGeocodeProvider$Stub$Proxy;
Landroid/location/IGeocodeProvider$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/location/IGeocodeProvider$Stub$Proxy;->getFromLocation(DDILandroid/location/GeocoderParams;Ljava/util/List;)Ljava/lang/String;
Landroid/location/IGeocodeProvider$Stub$Proxy;->getFromLocationName(Ljava/lang/String;DDDDILandroid/location/GeocoderParams;Ljava/util/List;)Ljava/lang/String;
Landroid/location/IGeocodeProvider$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/location/IGeocodeProvider$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/location/IGeocodeProvider$Stub;
Landroid/location/IGeocodeProvider$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/location/IGeocodeProvider$Stub;->TRANSACTION_getFromLocation:I
Landroid/location/IGeocodeProvider$Stub;->TRANSACTION_getFromLocationName:I
-Landroid/location/IGeocodeProvider;
-Landroid/location/IGeofenceProvider$Stub$Proxy;
Landroid/location/IGeofenceProvider$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/location/IGeofenceProvider$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/location/IGeofenceProvider$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/location/IGeofenceProvider$Stub$Proxy;->setGeofenceHardware(Landroid/hardware/location/IGeofenceHardware;)V
-Landroid/location/IGeofenceProvider$Stub;
Landroid/location/IGeofenceProvider$Stub;->asInterface(Landroid/os/IBinder;)Landroid/location/IGeofenceProvider;
Landroid/location/IGeofenceProvider$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/location/IGeofenceProvider$Stub;->TRANSACTION_setGeofenceHardware:I
-Landroid/location/IGeofenceProvider;
-Landroid/location/IGnssMeasurementsListener$Stub$Proxy;
Landroid/location/IGnssMeasurementsListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/location/IGnssMeasurementsListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/location/IGnssMeasurementsListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/location/IGnssMeasurementsListener$Stub$Proxy;->onGnssMeasurementsReceived(Landroid/location/GnssMeasurementsEvent;)V
Landroid/location/IGnssMeasurementsListener$Stub$Proxy;->onStatusChanged(I)V
-Landroid/location/IGnssMeasurementsListener$Stub;
Landroid/location/IGnssMeasurementsListener$Stub;-><init>()V
Landroid/location/IGnssMeasurementsListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/location/IGnssMeasurementsListener;
Landroid/location/IGnssMeasurementsListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/location/IGnssMeasurementsListener$Stub;->TRANSACTION_onGnssMeasurementsReceived:I
Landroid/location/IGnssMeasurementsListener$Stub;->TRANSACTION_onStatusChanged:I
-Landroid/location/IGnssMeasurementsListener;
Landroid/location/IGnssMeasurementsListener;->onGnssMeasurementsReceived(Landroid/location/GnssMeasurementsEvent;)V
Landroid/location/IGnssMeasurementsListener;->onStatusChanged(I)V
-Landroid/location/IGnssNavigationMessageListener$Stub$Proxy;
Landroid/location/IGnssNavigationMessageListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/location/IGnssNavigationMessageListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/location/IGnssNavigationMessageListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/location/IGnssNavigationMessageListener$Stub$Proxy;->onGnssNavigationMessageReceived(Landroid/location/GnssNavigationMessage;)V
Landroid/location/IGnssNavigationMessageListener$Stub$Proxy;->onStatusChanged(I)V
-Landroid/location/IGnssNavigationMessageListener$Stub;
Landroid/location/IGnssNavigationMessageListener$Stub;-><init>()V
Landroid/location/IGnssNavigationMessageListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/location/IGnssNavigationMessageListener;
Landroid/location/IGnssNavigationMessageListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/location/IGnssNavigationMessageListener$Stub;->TRANSACTION_onGnssNavigationMessageReceived:I
Landroid/location/IGnssNavigationMessageListener$Stub;->TRANSACTION_onStatusChanged:I
-Landroid/location/IGnssNavigationMessageListener;
Landroid/location/IGnssNavigationMessageListener;->onGnssNavigationMessageReceived(Landroid/location/GnssNavigationMessage;)V
Landroid/location/IGnssNavigationMessageListener;->onStatusChanged(I)V
-Landroid/location/IGnssStatusListener$Stub$Proxy;
Landroid/location/IGnssStatusListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/location/IGnssStatusListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/location/IGnssStatusListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -35710,7 +33340,6 @@
Landroid/location/IGnssStatusListener$Stub$Proxy;->onGnssStopped()V
Landroid/location/IGnssStatusListener$Stub$Proxy;->onNmeaReceived(JLjava/lang/String;)V
Landroid/location/IGnssStatusListener$Stub$Proxy;->onSvStatusChanged(I[I[F[F[F[F)V
-Landroid/location/IGnssStatusListener$Stub;
Landroid/location/IGnssStatusListener$Stub;-><init>()V
Landroid/location/IGnssStatusListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/location/IGnssStatusListener;
Landroid/location/IGnssStatusListener$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -35719,28 +33348,23 @@
Landroid/location/IGnssStatusListener$Stub;->TRANSACTION_onGnssStopped:I
Landroid/location/IGnssStatusListener$Stub;->TRANSACTION_onNmeaReceived:I
Landroid/location/IGnssStatusListener$Stub;->TRANSACTION_onSvStatusChanged:I
-Landroid/location/IGnssStatusListener;
Landroid/location/IGnssStatusListener;->onFirstFix(I)V
Landroid/location/IGnssStatusListener;->onGnssStarted()V
Landroid/location/IGnssStatusListener;->onGnssStopped()V
Landroid/location/IGnssStatusListener;->onNmeaReceived(JLjava/lang/String;)V
Landroid/location/IGnssStatusListener;->onSvStatusChanged(I[I[F[F[F[F)V
-Landroid/location/IGnssStatusProvider$Stub$Proxy;
Landroid/location/IGnssStatusProvider$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/location/IGnssStatusProvider$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/location/IGnssStatusProvider$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/location/IGnssStatusProvider$Stub$Proxy;->registerGnssStatusCallback(Landroid/location/IGnssStatusListener;)V
Landroid/location/IGnssStatusProvider$Stub$Proxy;->unregisterGnssStatusCallback(Landroid/location/IGnssStatusListener;)V
-Landroid/location/IGnssStatusProvider$Stub;
Landroid/location/IGnssStatusProvider$Stub;-><init>()V
Landroid/location/IGnssStatusProvider$Stub;->asInterface(Landroid/os/IBinder;)Landroid/location/IGnssStatusProvider;
Landroid/location/IGnssStatusProvider$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/location/IGnssStatusProvider$Stub;->TRANSACTION_registerGnssStatusCallback:I
Landroid/location/IGnssStatusProvider$Stub;->TRANSACTION_unregisterGnssStatusCallback:I
-Landroid/location/IGnssStatusProvider;
Landroid/location/IGnssStatusProvider;->registerGnssStatusCallback(Landroid/location/IGnssStatusListener;)V
Landroid/location/IGnssStatusProvider;->unregisterGnssStatusCallback(Landroid/location/IGnssStatusListener;)V
-Landroid/location/IGpsGeofenceHardware$Stub$Proxy;
Landroid/location/IGpsGeofenceHardware$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/location/IGpsGeofenceHardware$Stub$Proxy;->addCircularHardwareGeofence(IDDDIIII)Z
Landroid/location/IGpsGeofenceHardware$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
@@ -35749,7 +33373,6 @@
Landroid/location/IGpsGeofenceHardware$Stub$Proxy;->pauseHardwareGeofence(I)Z
Landroid/location/IGpsGeofenceHardware$Stub$Proxy;->removeHardwareGeofence(I)Z
Landroid/location/IGpsGeofenceHardware$Stub$Proxy;->resumeHardwareGeofence(II)Z
-Landroid/location/IGpsGeofenceHardware$Stub;
Landroid/location/IGpsGeofenceHardware$Stub;-><init>()V
Landroid/location/IGpsGeofenceHardware$Stub;->asInterface(Landroid/os/IBinder;)Landroid/location/IGpsGeofenceHardware;
Landroid/location/IGpsGeofenceHardware$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -35758,26 +33381,21 @@
Landroid/location/IGpsGeofenceHardware$Stub;->TRANSACTION_pauseHardwareGeofence:I
Landroid/location/IGpsGeofenceHardware$Stub;->TRANSACTION_removeHardwareGeofence:I
Landroid/location/IGpsGeofenceHardware$Stub;->TRANSACTION_resumeHardwareGeofence:I
-Landroid/location/IGpsGeofenceHardware;
Landroid/location/IGpsGeofenceHardware;->addCircularHardwareGeofence(IDDDIIII)Z
Landroid/location/IGpsGeofenceHardware;->isHardwareGeofenceSupported()Z
Landroid/location/IGpsGeofenceHardware;->pauseHardwareGeofence(I)Z
Landroid/location/IGpsGeofenceHardware;->removeHardwareGeofence(I)Z
Landroid/location/IGpsGeofenceHardware;->resumeHardwareGeofence(II)Z
-Landroid/location/ILocationListener$Stub$Proxy;
Landroid/location/ILocationListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/location/ILocationListener$Stub$Proxy;->onLocationChanged(Landroid/location/Location;)V
Landroid/location/ILocationListener$Stub$Proxy;->onProviderDisabled(Ljava/lang/String;)V
Landroid/location/ILocationListener$Stub$Proxy;->onProviderEnabled(Ljava/lang/String;)V
Landroid/location/ILocationListener$Stub$Proxy;->onStatusChanged(Ljava/lang/String;ILandroid/os/Bundle;)V
-Landroid/location/ILocationListener$Stub;
Landroid/location/ILocationListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/location/ILocationListener$Stub;->TRANSACTION_onLocationChanged:I
Landroid/location/ILocationListener$Stub;->TRANSACTION_onProviderDisabled:I
Landroid/location/ILocationListener$Stub;->TRANSACTION_onProviderEnabled:I
Landroid/location/ILocationListener$Stub;->TRANSACTION_onStatusChanged:I
-Landroid/location/ILocationListener;
-Landroid/location/ILocationManager$Stub$Proxy;
Landroid/location/ILocationManager$Stub$Proxy;->addGnssBatchingCallback(Landroid/location/IBatchedLocationCallback;Ljava/lang/String;)Z
Landroid/location/ILocationManager$Stub$Proxy;->addGnssMeasurementsListener(Landroid/location/IGnssMeasurementsListener;Ljava/lang/String;)Z
Landroid/location/ILocationManager$Stub$Proxy;->addGnssNavigationMessageListener(Landroid/location/IGnssNavigationMessageListener;Ljava/lang/String;)Z
@@ -35827,7 +33445,6 @@
Landroid/location/ILocationManager$Stub$Proxy;->startGnssBatch(JZLjava/lang/String;)Z
Landroid/location/ILocationManager$Stub$Proxy;->stopGnssBatch()Z
Landroid/location/ILocationManager$Stub$Proxy;->unregisterGnssStatusCallback(Landroid/location/IGnssStatusListener;)V
-Landroid/location/ILocationManager$Stub;
Landroid/location/ILocationManager$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/location/ILocationManager$Stub;->TRANSACTION_addGnssBatchingCallback:I
Landroid/location/ILocationManager$Stub;->TRANSACTION_addGnssMeasurementsListener:I
@@ -35875,7 +33492,6 @@
Landroid/location/ILocationManager$Stub;->TRANSACTION_startGnssBatch:I
Landroid/location/ILocationManager$Stub;->TRANSACTION_stopGnssBatch:I
Landroid/location/ILocationManager$Stub;->TRANSACTION_unregisterGnssStatusCallback:I
-Landroid/location/ILocationManager;
Landroid/location/ILocationManager;->addGnssBatchingCallback(Landroid/location/IBatchedLocationCallback;Ljava/lang/String;)Z
Landroid/location/ILocationManager;->addGnssMeasurementsListener(Landroid/location/IGnssMeasurementsListener;Ljava/lang/String;)Z
Landroid/location/ILocationManager;->addGnssNavigationMessageListener(Landroid/location/IGnssNavigationMessageListener;Ljava/lang/String;)Z
@@ -35920,19 +33536,14 @@
Landroid/location/ILocationManager;->startGnssBatch(JZLjava/lang/String;)Z
Landroid/location/ILocationManager;->stopGnssBatch()Z
Landroid/location/ILocationManager;->unregisterGnssStatusCallback(Landroid/location/IGnssStatusListener;)V
-Landroid/location/INetInitiatedListener$Stub$Proxy;
Landroid/location/INetInitiatedListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/location/INetInitiatedListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/location/INetInitiatedListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/location/INetInitiatedListener$Stub$Proxy;->sendNiResponse(II)Z
-Landroid/location/INetInitiatedListener$Stub;
Landroid/location/INetInitiatedListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/location/INetInitiatedListener;
Landroid/location/INetInitiatedListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/location/INetInitiatedListener$Stub;->TRANSACTION_sendNiResponse:I
-Landroid/location/INetInitiatedListener;
-Landroid/location/LocalListenerHelper$ListenerOperation;
Landroid/location/LocalListenerHelper$ListenerOperation;->execute(Ljava/lang/Object;)V
-Landroid/location/LocalListenerHelper;
Landroid/location/LocalListenerHelper;-><init>(Landroid/content/Context;Ljava/lang/String;)V
Landroid/location/LocalListenerHelper;->add(Ljava/lang/Object;Landroid/os/Handler;)Z
Landroid/location/LocalListenerHelper;->executeOperation(Landroid/location/LocalListenerHelper$ListenerOperation;Ljava/lang/Object;)V
@@ -35944,7 +33555,6 @@
Landroid/location/LocalListenerHelper;->registerWithServer()Z
Landroid/location/LocalListenerHelper;->remove(Ljava/lang/Object;)V
Landroid/location/LocalListenerHelper;->unregisterFromServer()V
-Landroid/location/Location$BearingDistanceCache;
Landroid/location/Location$BearingDistanceCache;-><init>()V
Landroid/location/Location$BearingDistanceCache;->mDistance:F
Landroid/location/Location$BearingDistanceCache;->mFinalBearing:F
@@ -35978,21 +33588,8 @@
Landroid/location/Location;->mTime:J
Landroid/location/Location;->mVerticalAccuracyMeters:F
Landroid/location/Location;->sBearingDistanceCache:Ljava/lang/ThreadLocal;
-Landroid/location/LocationManager$GnssStatusListenerTransport$GnssHandler;
-Landroid/location/LocationManager$GnssStatusListenerTransport$GnssHandler;-><init>(Landroid/os/Handler;)V
-Landroid/location/LocationManager$GnssStatusListenerTransport$Nmea;
-Landroid/location/LocationManager$GnssStatusListenerTransport$Nmea;-><init>(JLjava/lang/String;)V
Landroid/location/LocationManager$GnssStatusListenerTransport$Nmea;->mNmea:Ljava/lang/String;
Landroid/location/LocationManager$GnssStatusListenerTransport$Nmea;->mTimestamp:J
-Landroid/location/LocationManager$GnssStatusListenerTransport;
-Landroid/location/LocationManager$GnssStatusListenerTransport;-><init>(Landroid/location/GnssStatus$Callback;)V
-Landroid/location/LocationManager$GnssStatusListenerTransport;-><init>(Landroid/location/GnssStatus$Callback;Landroid/os/Handler;)V
-Landroid/location/LocationManager$GnssStatusListenerTransport;-><init>(Landroid/location/GpsStatus$Listener;)V
-Landroid/location/LocationManager$GnssStatusListenerTransport;-><init>(Landroid/location/GpsStatus$Listener;Landroid/os/Handler;)V
-Landroid/location/LocationManager$GnssStatusListenerTransport;-><init>(Landroid/location/GpsStatus$NmeaListener;)V
-Landroid/location/LocationManager$GnssStatusListenerTransport;-><init>(Landroid/location/GpsStatus$NmeaListener;Landroid/os/Handler;)V
-Landroid/location/LocationManager$GnssStatusListenerTransport;-><init>(Landroid/location/OnNmeaMessageListener;)V
-Landroid/location/LocationManager$GnssStatusListenerTransport;-><init>(Landroid/location/OnNmeaMessageListener;Landroid/os/Handler;)V
Landroid/location/LocationManager$GnssStatusListenerTransport;->mGnssCallback:Landroid/location/GnssStatus$Callback;
Landroid/location/LocationManager$GnssStatusListenerTransport;->mGnssHandler:Landroid/os/Handler;
Landroid/location/LocationManager$GnssStatusListenerTransport;->mGnssNmeaListener:Landroid/location/OnNmeaMessageListener;
@@ -36005,8 +33602,6 @@
Landroid/location/LocationManager$GnssStatusListenerTransport;->onGnssStopped()V
Landroid/location/LocationManager$GnssStatusListenerTransport;->onNmeaReceived(JLjava/lang/String;)V
Landroid/location/LocationManager$GnssStatusListenerTransport;->onSvStatusChanged(I[I[F[F[F[F)V
-Landroid/location/LocationManager$ListenerTransport;
-Landroid/location/LocationManager$ListenerTransport;-><init>(Landroid/location/LocationListener;Landroid/os/Looper;)V
Landroid/location/LocationManager$ListenerTransport;->mListener:Landroid/location/LocationListener;
Landroid/location/LocationManager$ListenerTransport;->mListenerHandler:Landroid/os/Handler;
Landroid/location/LocationManager$ListenerTransport;->onLocationChanged(Landroid/location/Location;)V
@@ -36216,7 +33811,6 @@
Landroid/Manifest$permission;->WRITE_SMS:Ljava/lang/String;
Landroid/Manifest$permission;->WRITE_SOCIAL_STREAM:Ljava/lang/String;
Landroid/Manifest$permission;->WRITE_USER_DICTIONARY:Ljava/lang/String;
-Landroid/media/AmrInputStream;
Landroid/media/AmrInputStream;->mBuf:[B
Landroid/media/AmrInputStream;->mBufIn:I
Landroid/media/AmrInputStream;->mBufOut:I
@@ -36228,7 +33822,6 @@
Landroid/media/AmrInputStream;->mSawOutputEOS:Z
Landroid/media/AmrInputStream;->SAMPLES_PER_FRAME:I
Landroid/media/AmrInputStream;->TAG:Ljava/lang/String;
-Landroid/media/AsyncPlayer$Command;
Landroid/media/AsyncPlayer$Command;-><init>()V
Landroid/media/AsyncPlayer$Command;->attributes:Landroid/media/AudioAttributes;
Landroid/media/AsyncPlayer$Command;->code:I
@@ -36236,8 +33829,6 @@
Landroid/media/AsyncPlayer$Command;->looping:Z
Landroid/media/AsyncPlayer$Command;->requestTime:J
Landroid/media/AsyncPlayer$Command;->uri:Landroid/net/Uri;
-Landroid/media/AsyncPlayer$Thread;
-Landroid/media/AsyncPlayer$Thread;-><init>()V
Landroid/media/AsyncPlayer;->acquireWakeLock()V
Landroid/media/AsyncPlayer;->enqueueLocked(Landroid/media/AsyncPlayer$Command;)V
Landroid/media/AsyncPlayer;->mCmdQueue:Ljava/util/LinkedList;
@@ -36251,8 +33842,6 @@
Landroid/media/AsyncPlayer;->releaseWakeLock()V
Landroid/media/AsyncPlayer;->startSound(Landroid/media/AsyncPlayer$Command;)V
Landroid/media/AsyncPlayer;->STOP:I
-Landroid/media/AudioAttributes$AttributeContentType;
-Landroid/media/AudioAttributes$AttributeUsage;
Landroid/media/AudioAttributes$Builder;->mBundle:Landroid/os/Bundle;
Landroid/media/AudioAttributes$Builder;->mContentType:I
Landroid/media/AudioAttributes$Builder;->mFlags:I
@@ -36260,7 +33849,6 @@
Landroid/media/AudioAttributes$Builder;->mTags:Ljava/util/HashSet;
Landroid/media/AudioAttributes$Builder;->mUsage:I
Landroid/media/AudioAttributes$Builder;->replaceFlags(I)Landroid/media/AudioAttributes$Builder;
-Landroid/media/Audioattributes;
Landroid/media/AudioAttributes;-><init>()V
Landroid/media/Audioattributes;-><init>()V
Landroid/media/AudioAttributes;-><init>(Landroid/os/Parcel;)V
@@ -36314,13 +33902,11 @@
Landroid/media/Audioattributes;->VOICE_COMMUNICATION:I
Landroid/media/Audioattributes;->VOICE_COMMUNICATION_SIGNALLING:I
Landroid/media/AudioAttributes;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-Landroid/media/AudioAttributesProto;
Landroid/media/AudioAttributesProto;-><init>()V
Landroid/media/AudioAttributesProto;->CONTENT_TYPE:J
Landroid/media/AudioAttributesProto;->FLAGS:J
Landroid/media/AudioAttributesProto;->TAGS:J
Landroid/media/AudioAttributesProto;->USAGE:J
-Landroid/media/AudioDeviceInfo$AudioDeviceTypeOut;
Landroid/media/AudioDeviceInfo;-><init>(Landroid/media/AudioDevicePort;)V
Landroid/media/AudioDeviceInfo;->convertDeviceTypeToInternalDevice(I)I
Landroid/media/AudioDeviceInfo;->convertInternalDeviceToDeviceType(I)I
@@ -36329,12 +33915,10 @@
Landroid/media/AudioDeviceInfo;->INT_TO_EXT_DEVICE_MAPPING:Landroid/util/SparseIntArray;
Landroid/media/AudioDeviceInfo;->isValidAudioDeviceTypeOut(I)Z
Landroid/media/AudioDeviceInfo;->mPort:Landroid/media/AudioDevicePort;
-Landroid/media/AudioDevicePort;
Landroid/media/AudioDevicePort;->address()Ljava/lang/String;
Landroid/media/AudioDevicePort;->buildConfig(IIILandroid/media/AudioGainConfig;)Landroid/media/AudioDevicePortConfig;
Landroid/media/AudioDevicePort;->mAddress:Ljava/lang/String;
Landroid/media/AudioDevicePort;->mType:I
-Landroid/media/AudioDevicePortConfig;
Landroid/media/AudioDevicePortConfig;-><init>(Landroid/media/AudioDevicePortConfig;)V
Landroid/media/AudioDevicePortConfig;->port()Landroid/media/AudioDevicePort;
Landroid/media/AudioFocusInfo;-><init>(Landroid/media/AudioAttributes;ILjava/lang/String;Ljava/lang/String;IIII)V
@@ -36376,8 +33960,6 @@
Landroid/media/AudioFormat$Builder;->mEncoding:I
Landroid/media/AudioFormat$Builder;->mPropertySetMask:I
Landroid/media/AudioFormat$Builder;->mSampleRate:I
-Landroid/media/AudioFormat$Encoding;
-Landroid/media/AudioFormat$SurroundSoundEncoding;
Landroid/media/AudioFormat;-><init>(I)V
Landroid/media/AudioFormat;-><init>(Landroid/os/Parcel;)V
Landroid/media/AudioFormat;->AUDIO_FORMAT_HAS_PROPERTY_CHANNEL_INDEX_MASK:I
@@ -36413,15 +33995,12 @@
Landroid/media/AudioFormat;->toLogFriendlyString()Ljava/lang/String;
Landroid/media/audiofx/AcousticEchoCanceler;-><init>(I)V
Landroid/media/audiofx/AcousticEchoCanceler;->TAG:Ljava/lang/String;
-Landroid/media/audiofx/AudioEffect$NativeEventHandler;
-Landroid/media/audiofx/AudioEffect$NativeEventHandler;-><init>(Landroid/media/audiofx/AudioEffect;Landroid/os/Looper;)V
Landroid/media/audiofx/AudioEffect$NativeEventHandler;->mAudioEffect:Landroid/media/audiofx/AudioEffect;
Landroid/media/audiofx/AudioEffect;->byteArrayToFloat([B)F
Landroid/media/audiofx/AudioEffect;->byteArrayToFloat([BI)F
Landroid/media/audiofx/AudioEffect;->byteArrayToInt([BI)I
Landroid/media/audiofx/AudioEffect;->byteArrayToShort([BI)S
Landroid/media/audiofx/AudioEffect;->checkStatus(I)V
-Landroid/media/audiofx/AudioEffect;->concatArrays([[[B)[B
Landroid/media/audiofx/AudioEffect;->createNativeEventHandler()V
Landroid/media/audiofx/AudioEffect;->EFFECT_PRE_PROCESSING:Ljava/lang/String;
Landroid/media/audiofx/AudioEffect;->floatToByteArray(F)[B
@@ -36458,8 +34037,6 @@
Landroid/media/audiofx/AudioEffect;->TAG:Ljava/lang/String;
Landroid/media/audiofx/AutomaticGainControl;-><init>(I)V
Landroid/media/audiofx/AutomaticGainControl;->TAG:Ljava/lang/String;
-Landroid/media/audiofx/BassBoost$BaseParameterListener;
-Landroid/media/audiofx/BassBoost$BaseParameterListener;-><init>()V
Landroid/media/audiofx/BassBoost;->mBaseParamListener:Landroid/media/audiofx/BassBoost$BaseParameterListener;
Landroid/media/audiofx/BassBoost;->mParamListener:Landroid/media/audiofx/BassBoost$OnParameterChangeListener;
Landroid/media/audiofx/BassBoost;->mParamListenerLock:Ljava/lang/Object;
@@ -36468,8 +34045,6 @@
Landroid/media/audiofx/DynamicsProcessing$BandBase;->mCutoffFrequency:F
Landroid/media/audiofx/DynamicsProcessing$BandBase;->mEnabled:Z
Landroid/media/audiofx/DynamicsProcessing$BandStage;->mBandCount:I
-Landroid/media/audiofx/DynamicsProcessing$BaseParameterListener;
-Landroid/media/audiofx/DynamicsProcessing$BaseParameterListener;-><init>()V
Landroid/media/audiofx/DynamicsProcessing$Channel;->mInputGain:F
Landroid/media/audiofx/DynamicsProcessing$Channel;->mLimiter:Landroid/media/audiofx/DynamicsProcessing$Limiter;
Landroid/media/audiofx/DynamicsProcessing$Channel;->mMbc:Landroid/media/audiofx/DynamicsProcessing$Mbc;
@@ -36522,9 +34097,7 @@
Landroid/media/audiofx/DynamicsProcessing$MbcBand;->mRatio:F
Landroid/media/audiofx/DynamicsProcessing$MbcBand;->mReleaseTime:F
Landroid/media/audiofx/DynamicsProcessing$MbcBand;->mThreshold:F
-Landroid/media/audiofx/DynamicsProcessing$OnParameterChangeListener;
Landroid/media/audiofx/DynamicsProcessing$OnParameterChangeListener;->onParameterChange(Landroid/media/audiofx/DynamicsProcessing;II)V
-Landroid/media/audiofx/DynamicsProcessing$Settings;
Landroid/media/audiofx/DynamicsProcessing$Settings;-><init>()V
Landroid/media/audiofx/DynamicsProcessing$Settings;-><init>(Ljava/lang/String;)V
Landroid/media/audiofx/DynamicsProcessing$Settings;->channelCount:I
@@ -36605,16 +34178,12 @@
Landroid/media/audiofx/DynamicsProcessing;->updateEngineLimiterByChannelIndex(ILandroid/media/audiofx/DynamicsProcessing$Limiter;)V
Landroid/media/audiofx/DynamicsProcessing;->updateEngineMbcBandByChannelIndex(IILandroid/media/audiofx/DynamicsProcessing$MbcBand;)V
Landroid/media/audiofx/DynamicsProcessing;->updateEngineMbcByChannelIndex(ILandroid/media/audiofx/DynamicsProcessing$Mbc;)V
-Landroid/media/audiofx/EnvironmentalReverb$BaseParameterListener;
-Landroid/media/audiofx/EnvironmentalReverb$BaseParameterListener;-><init>()V
Landroid/media/audiofx/EnvironmentalReverb;->mBaseParamListener:Landroid/media/audiofx/EnvironmentalReverb$BaseParameterListener;
Landroid/media/audiofx/EnvironmentalReverb;->mParamListener:Landroid/media/audiofx/EnvironmentalReverb$OnParameterChangeListener;
Landroid/media/audiofx/EnvironmentalReverb;->mParamListenerLock:Ljava/lang/Object;
Landroid/media/audiofx/EnvironmentalReverb;->PARAM_PROPERTIES:I
Landroid/media/audiofx/EnvironmentalReverb;->PROPERTY_SIZE:I
Landroid/media/audiofx/EnvironmentalReverb;->TAG:Ljava/lang/String;
-Landroid/media/audiofx/Equalizer$BaseParameterListener;
-Landroid/media/audiofx/Equalizer$BaseParameterListener;-><init>()V
Landroid/media/audiofx/Equalizer;->mBaseParamListener:Landroid/media/audiofx/Equalizer$BaseParameterListener;
Landroid/media/audiofx/Equalizer;->mNumBands:S
Landroid/media/audiofx/Equalizer;->mNumPresets:I
@@ -36623,11 +34192,7 @@
Landroid/media/audiofx/Equalizer;->mPresetNames:[Ljava/lang/String;
Landroid/media/audiofx/Equalizer;->PARAM_PROPERTIES:I
Landroid/media/audiofx/Equalizer;->TAG:Ljava/lang/String;
-Landroid/media/audiofx/LoudnessEnhancer$BaseParameterListener;
-Landroid/media/audiofx/LoudnessEnhancer$BaseParameterListener;-><init>()V
-Landroid/media/audiofx/LoudnessEnhancer$OnParameterChangeListener;
Landroid/media/audiofx/LoudnessEnhancer$OnParameterChangeListener;->onParameterChange(Landroid/media/audiofx/LoudnessEnhancer;II)V
-Landroid/media/audiofx/LoudnessEnhancer$Settings;
Landroid/media/audiofx/LoudnessEnhancer$Settings;-><init>()V
Landroid/media/audiofx/LoudnessEnhancer$Settings;-><init>(Ljava/lang/String;)V
Landroid/media/audiofx/LoudnessEnhancer$Settings;->targetGainmB:I
@@ -36641,16 +34206,10 @@
Landroid/media/audiofx/LoudnessEnhancer;->TAG:Ljava/lang/String;
Landroid/media/audiofx/NoiseSuppressor;-><init>(I)V
Landroid/media/audiofx/NoiseSuppressor;->TAG:Ljava/lang/String;
-Landroid/media/audiofx/PresetReverb$BaseParameterListener;
-Landroid/media/audiofx/PresetReverb$BaseParameterListener;-><init>()V
Landroid/media/audiofx/PresetReverb;->mBaseParamListener:Landroid/media/audiofx/PresetReverb$BaseParameterListener;
Landroid/media/audiofx/PresetReverb;->mParamListener:Landroid/media/audiofx/PresetReverb$OnParameterChangeListener;
Landroid/media/audiofx/PresetReverb;->mParamListenerLock:Ljava/lang/Object;
Landroid/media/audiofx/PresetReverb;->TAG:Ljava/lang/String;
-Landroid/media/audiofx/Virtualizer$BaseParameterListener;
-Landroid/media/audiofx/Virtualizer$BaseParameterListener;-><init>()V
-Landroid/media/audiofx/Virtualizer$ForceVirtualizationMode;
-Landroid/media/audiofx/Virtualizer$VirtualizationMode;
Landroid/media/audiofx/Virtualizer;->DEBUG:Z
Landroid/media/audiofx/Virtualizer;->deviceToMode(I)I
Landroid/media/audiofx/Virtualizer;->getAnglesInt(II[I)Z
@@ -36664,12 +34223,9 @@
Landroid/media/audiofx/Virtualizer;->PARAM_VIRTUALIZATION_MODE:I
Landroid/media/audiofx/Virtualizer;->PARAM_VIRTUAL_SPEAKER_ANGLES:I
Landroid/media/audiofx/Virtualizer;->TAG:Ljava/lang/String;
-Landroid/media/audiofx/Visualizer$NativeEventHandler;
-Landroid/media/audiofx/Visualizer$NativeEventHandler;-><init>(Landroid/media/audiofx/Visualizer;Landroid/os/Looper;)V
Landroid/media/audiofx/Visualizer$NativeEventHandler;->handleCaptureMessage(Landroid/os/Message;)V
Landroid/media/audiofx/Visualizer$NativeEventHandler;->handleServerDiedMessage(Landroid/os/Message;)V
Landroid/media/audiofx/Visualizer$NativeEventHandler;->mVisualizer:Landroid/media/audiofx/Visualizer;
-Landroid/media/audiofx/Visualizer$OnServerDiedListener;
Landroid/media/audiofx/Visualizer$OnServerDiedListener;->onServerDied()V
Landroid/media/audiofx/Visualizer;->mCaptureListener:Landroid/media/audiofx/Visualizer$OnDataCaptureListener;
Landroid/media/audiofx/Visualizer;->mJniData:J
@@ -36702,7 +34258,6 @@
Landroid/media/audiofx/Visualizer;->postEventFromNative(Ljava/lang/Object;IIILjava/lang/Object;)V
Landroid/media/audiofx/Visualizer;->setServerDiedListener(Landroid/media/audiofx/Visualizer$OnServerDiedListener;)I
Landroid/media/audiofx/Visualizer;->TAG:Ljava/lang/String;
-Landroid/media/AudioGain;
Landroid/media/AudioGain;->buildConfig(II[II)Landroid/media/AudioGainConfig;
Landroid/media/AudioGain;->channelMask()I
Landroid/media/AudioGain;->defaultValue()I
@@ -36724,24 +34279,19 @@
Landroid/media/AudioGain;->rampDurationMaxMs()I
Landroid/media/AudioGain;->rampDurationMinMs()I
Landroid/media/AudioGain;->stepValue()I
-Landroid/media/AudioGainConfig;
Landroid/media/AudioGainConfig;->channelMask()I
Landroid/media/AudioGainConfig;->index()I
Landroid/media/AudioGainConfig;->mGain:Landroid/media/AudioGain;
Landroid/media/AudioGainConfig;->mode()I
Landroid/media/AudioGainConfig;->rampDurationMs()I
Landroid/media/AudioGainConfig;->values()[I
-Landroid/media/AudioHandle;
Landroid/media/AudioHandle;->id()I
-Landroid/media/AudioManager$AudioPlaybackCallbackInfo;
Landroid/media/AudioManager$AudioPlaybackCallbackInfo;-><init>(Landroid/media/AudioManager$AudioPlaybackCallback;Landroid/os/Handler;)V
Landroid/media/AudioManager$AudioPlaybackCallbackInfo;->mCb:Landroid/media/AudioManager$AudioPlaybackCallback;
Landroid/media/AudioManager$AudioPlaybackCallbackInfo;->mHandler:Landroid/os/Handler;
-Landroid/media/AudioManager$AudioRecordingCallbackInfo;
Landroid/media/AudioManager$AudioRecordingCallbackInfo;-><init>(Landroid/media/AudioManager$AudioRecordingCallback;Landroid/os/Handler;)V
Landroid/media/AudioManager$AudioRecordingCallbackInfo;->mCb:Landroid/media/AudioManager$AudioRecordingCallback;
Landroid/media/AudioManager$AudioRecordingCallbackInfo;->mHandler:Landroid/os/Handler;
-Landroid/media/AudioManager$BlockingFocusResultReceiver;
Landroid/media/AudioManager$BlockingFocusResultReceiver;-><init>(Ljava/lang/String;)V
Landroid/media/AudioManager$BlockingFocusResultReceiver;->mFocusClientId:Ljava/lang/String;
Landroid/media/AudioManager$BlockingFocusResultReceiver;->mFocusRequestResult:I
@@ -36751,44 +34301,30 @@
Landroid/media/AudioManager$BlockingFocusResultReceiver;->receivedResult()Z
Landroid/media/AudioManager$BlockingFocusResultReceiver;->requestResult()I
Landroid/media/AudioManager$BlockingFocusResultReceiver;->waitForResult(J)V
-Landroid/media/AudioManager$FocusRequestInfo;
Landroid/media/AudioManager$FocusRequestInfo;-><init>(Landroid/media/AudioFocusRequest;Landroid/os/Handler;)V
Landroid/media/AudioManager$FocusRequestInfo;->mHandler:Landroid/os/Handler;
Landroid/media/AudioManager$FocusRequestInfo;->mRequest:Landroid/media/AudioFocusRequest;
-Landroid/media/AudioManager$FocusRequestResult;
-Landroid/media/AudioManager$NativeEventHandlerDelegate;
-Landroid/media/AudioManager$NativeEventHandlerDelegate;-><init>(Landroid/media/AudioDeviceCallback;Landroid/os/Handler;)V
Landroid/media/AudioManager$NativeEventHandlerDelegate;->getHandler()Landroid/os/Handler;
Landroid/media/AudioManager$NativeEventHandlerDelegate;->mHandler:Landroid/os/Handler;
-Landroid/media/AudioManager$OnAmPortUpdateListener;
-Landroid/media/AudioManager$OnAmPortUpdateListener;-><init>()V
Landroid/media/AudioManager$OnAmPortUpdateListener;->onAudioPatchListUpdate([Landroid/media/AudioPatch;)V
Landroid/media/AudioManager$OnAmPortUpdateListener;->onAudioPortListUpdate([Landroid/media/AudioPort;)V
Landroid/media/AudioManager$OnAmPortUpdateListener;->onServiceDied()V
Landroid/media/AudioManager$OnAmPortUpdateListener;->TAG:Ljava/lang/String;
-Landroid/media/AudioManager$OnAudioPortUpdateListener;
Landroid/media/AudioManager$OnAudioPortUpdateListener;->onAudioPatchListUpdate([Landroid/media/AudioPatch;)V
Landroid/media/AudioManager$OnAudioPortUpdateListener;->onAudioPortListUpdate([Landroid/media/AudioPort;)V
Landroid/media/AudioManager$OnAudioPortUpdateListener;->onServiceDied()V
-Landroid/media/AudioManager$PlaybackConfigChangeCallbackData;
Landroid/media/AudioManager$PlaybackConfigChangeCallbackData;-><init>(Landroid/media/AudioManager$AudioPlaybackCallback;Ljava/util/List;)V
Landroid/media/AudioManager$PlaybackConfigChangeCallbackData;->mCb:Landroid/media/AudioManager$AudioPlaybackCallback;
Landroid/media/AudioManager$PlaybackConfigChangeCallbackData;->mConfigs:Ljava/util/List;
-Landroid/media/AudioManager$PublicStreamTypes;
-Landroid/media/AudioManager$RecordConfigChangeCallbackData;
Landroid/media/AudioManager$RecordConfigChangeCallbackData;-><init>(Landroid/media/AudioManager$AudioRecordingCallback;Ljava/util/List;)V
Landroid/media/AudioManager$RecordConfigChangeCallbackData;->mCb:Landroid/media/AudioManager$AudioRecordingCallback;
Landroid/media/AudioManager$RecordConfigChangeCallbackData;->mConfigs:Ljava/util/List;
-Landroid/media/AudioManager$SafeWaitObject;
Landroid/media/AudioManager$SafeWaitObject;-><init>()V
Landroid/media/AudioManager$SafeWaitObject;->mQuit:Z
Landroid/media/AudioManager$SafeWaitObject;->safeNotify()V
Landroid/media/AudioManager$SafeWaitObject;->safeWait(J)V
-Landroid/media/AudioManager$ServiceEventHandlerDelegate;
-Landroid/media/AudioManager$ServiceEventHandlerDelegate;-><init>(Landroid/os/Handler;)V
Landroid/media/AudioManager$ServiceEventHandlerDelegate;->getHandler()Landroid/os/Handler;
Landroid/media/AudioManager$ServiceEventHandlerDelegate;->mHandler:Landroid/os/Handler;
-Landroid/media/AudioManager$VolumeAdjustment;
Landroid/media/AudioManager;->addMicrophonesFromAudioDeviceInfo(Ljava/util/ArrayList;Ljava/util/HashSet;)V
Landroid/media/AudioManager;->adjustToString(I)Ljava/lang/String;
Landroid/media/AudioManager;->AUDIOFOCUS_FLAGS_APPS:I
@@ -36948,12 +34484,10 @@
Landroid/media/AudioManager;->updateAudioPortCache(Ljava/util/ArrayList;Ljava/util/ArrayList;Ljava/util/ArrayList;)I
Landroid/media/AudioManager;->updatePortConfig(Landroid/media/AudioPortConfig;Ljava/util/ArrayList;)Landroid/media/AudioPortConfig;
Landroid/media/AudioManager;->VOLUME_MIN_DB:F
-Landroid/media/AudioManagerInternal$RingerModeDelegate;
Landroid/media/AudioManagerInternal$RingerModeDelegate;->canVolumeDownEnterSilent()Z
Landroid/media/AudioManagerInternal$RingerModeDelegate;->getRingerModeAffectedStreams(I)I
Landroid/media/AudioManagerInternal$RingerModeDelegate;->onSetRingerModeExternal(IILjava/lang/String;ILandroid/media/VolumePolicy;)I
Landroid/media/AudioManagerInternal$RingerModeDelegate;->onSetRingerModeInternal(IILjava/lang/String;ILandroid/media/VolumePolicy;)I
-Landroid/media/AudioManagerInternal;
Landroid/media/AudioManagerInternal;-><init>()V
Landroid/media/AudioManagerInternal;->adjustStreamVolumeForUid(IIILjava/lang/String;I)V
Landroid/media/AudioManagerInternal;->adjustSuggestedStreamVolumeForUid(IIILjava/lang/String;I)V
@@ -36964,26 +34498,19 @@
Landroid/media/AudioManagerInternal;->setStreamVolumeForUid(IIILjava/lang/String;I)V
Landroid/media/AudioManagerInternal;->silenceRingerModeInternal(Ljava/lang/String;)V
Landroid/media/AudioManagerInternal;->updateRingerModeAffectedStreamsInternal()V
-Landroid/media/AudioMixPort;
Landroid/media/AudioMixPort;->buildConfig(IIILandroid/media/AudioGainConfig;)Landroid/media/AudioMixPortConfig;
Landroid/media/AudioMixPort;->mIoHandle:I
-Landroid/media/AudioMixPortConfig;
Landroid/media/AudioMixPortConfig;->port()Landroid/media/AudioMixPort;
-Landroid/media/AudioPatch;
Landroid/media/AudioPatch;->id()I
Landroid/media/AudioPatch;->mSinks:[Landroid/media/AudioPortConfig;
Landroid/media/AudioPatch;->mSources:[Landroid/media/AudioPortConfig;
-Landroid/media/AudioPlaybackConfiguration$IPlayerShell;
Landroid/media/AudioPlaybackConfiguration$IPlayerShell;-><init>(Landroid/media/AudioPlaybackConfiguration;Landroid/media/IPlayer;)V
Landroid/media/AudioPlaybackConfiguration$IPlayerShell;->getIPlayer()Landroid/media/IPlayer;
Landroid/media/AudioPlaybackConfiguration$IPlayerShell;->mIPlayer:Landroid/media/IPlayer;
Landroid/media/AudioPlaybackConfiguration$IPlayerShell;->mMonitor:Landroid/media/AudioPlaybackConfiguration;
Landroid/media/AudioPlaybackConfiguration$IPlayerShell;->monitorDeath()V
Landroid/media/AudioPlaybackConfiguration$IPlayerShell;->release()V
-Landroid/media/AudioPlaybackConfiguration$PlayerDeathMonitor;
Landroid/media/AudioPlaybackConfiguration$PlayerDeathMonitor;->playerDeath(I)V
-Landroid/media/AudioPlaybackConfiguration$PlayerState;
-Landroid/media/AudioPlaybackConfiguration$PlayerType;
Landroid/media/AudioPlaybackConfiguration;-><init>(I)V
Landroid/media/AudioPlaybackConfiguration;-><init>(Landroid/media/PlayerBase$PlayerIdCard;III)V
Landroid/media/AudioPlaybackConfiguration;-><init>(Landroid/os/Parcel;)V
@@ -37024,7 +34551,6 @@
Landroid/media/audiopolicy/AudioMix$Builder;->setCallbackFlags(I)Landroid/media/audiopolicy/AudioMix$Builder;
Landroid/media/audiopolicy/AudioMix$Builder;->setDevice(ILjava/lang/String;)Landroid/media/audiopolicy/AudioMix$Builder;
Landroid/media/audiopolicy/AudioMix$Builder;->setMixingRule(Landroid/media/audiopolicy/AudioMixingRule;)Landroid/media/audiopolicy/AudioMix$Builder;
-Landroid/media/audiopolicy/AudioMix$RouteFlags;
Landroid/media/audiopolicy/AudioMix;-><init>(Landroid/media/audiopolicy/AudioMixingRule;Landroid/media/AudioFormat;IIILjava/lang/String;)V
Landroid/media/audiopolicy/AudioMix;->CALLBACK_FLAGS_ALL:I
Landroid/media/audiopolicy/AudioMix;->CALLBACK_FLAG_NOTIFY_ACTIVITY:I
@@ -37040,7 +34566,6 @@
Landroid/media/audiopolicy/AudioMix;->mMixState:I
Landroid/media/audiopolicy/AudioMix;->ROUTE_FLAG_SUPPORTED:I
Landroid/media/audiopolicy/AudioMix;->setRegistration(Ljava/lang/String;)V
-Landroid/media/audiopolicy/AudioMixingRule$AudioMixMatchCriterion;
Landroid/media/audiopolicy/AudioMixingRule$AudioMixMatchCriterion;-><init>(Landroid/media/AudioAttributes;I)V
Landroid/media/audiopolicy/AudioMixingRule$AudioMixMatchCriterion;-><init>(Ljava/lang/Integer;I)V
Landroid/media/audiopolicy/AudioMixingRule$AudioMixMatchCriterion;->writeToParcel(Landroid/os/Parcel;)V
@@ -37072,9 +34597,6 @@
Landroid/media/audiopolicy/AudioPolicy$Builder;->mMixes:Ljava/util/ArrayList;
Landroid/media/audiopolicy/AudioPolicy$Builder;->mStatusListener:Landroid/media/audiopolicy/AudioPolicy$AudioPolicyStatusListener;
Landroid/media/audiopolicy/AudioPolicy$Builder;->mVolCb:Landroid/media/audiopolicy/AudioPolicy$AudioPolicyVolumeCallback;
-Landroid/media/audiopolicy/AudioPolicy$EventHandler;
-Landroid/media/audiopolicy/AudioPolicy$EventHandler;-><init>(Landroid/media/audiopolicy/AudioPolicy;Landroid/os/Looper;)V
-Landroid/media/audiopolicy/AudioPolicy$PolicyStatus;
Landroid/media/audiopolicy/AudioPolicy;-><init>(Landroid/media/audiopolicy/AudioPolicyConfig;Landroid/content/Context;Landroid/os/Looper;Landroid/media/audiopolicy/AudioPolicy$AudioPolicyFocusListener;Landroid/media/audiopolicy/AudioPolicy$AudioPolicyStatusListener;ZLandroid/media/audiopolicy/AudioPolicy$AudioPolicyVolumeCallback;)V
Landroid/media/audiopolicy/AudioPolicy;->addressForTag(Landroid/media/audiopolicy/AudioMix;)Ljava/lang/String;
Landroid/media/audiopolicy/AudioPolicy;->cb()Landroid/media/audiopolicy/IAudioPolicyCallback;
@@ -37109,7 +34631,6 @@
Landroid/media/audiopolicy/AudioPolicy;->sendMsg(ILjava/lang/Object;I)V
Landroid/media/audiopolicy/AudioPolicy;->sService:Landroid/media/IAudioService;
Landroid/media/audiopolicy/AudioPolicy;->TAG:Ljava/lang/String;
-Landroid/media/audiopolicy/AudioPolicyConfig;
Landroid/media/audiopolicy/AudioPolicyConfig;-><init>(Landroid/media/audiopolicy/AudioPolicyConfig;)V
Landroid/media/audiopolicy/AudioPolicyConfig;-><init>(Landroid/os/Parcel;)V
Landroid/media/audiopolicy/AudioPolicyConfig;-><init>(Ljava/util/ArrayList;)V
@@ -37128,7 +34649,6 @@
Landroid/media/audiopolicy/AudioPolicyConfig;->setRegistration(Ljava/lang/String;)V
Landroid/media/audiopolicy/AudioPolicyConfig;->TAG:Ljava/lang/String;
Landroid/media/audiopolicy/AudioPolicyConfig;->toLogFriendlyString()Ljava/lang/String;
-Landroid/media/audiopolicy/IAudioPolicyCallback$Stub$Proxy;
Landroid/media/audiopolicy/IAudioPolicyCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/media/audiopolicy/IAudioPolicyCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/media/audiopolicy/IAudioPolicyCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -37138,7 +34658,6 @@
Landroid/media/audiopolicy/IAudioPolicyCallback$Stub$Proxy;->notifyAudioFocusRequest(Landroid/media/AudioFocusInfo;I)V
Landroid/media/audiopolicy/IAudioPolicyCallback$Stub$Proxy;->notifyMixStateUpdate(Ljava/lang/String;I)V
Landroid/media/audiopolicy/IAudioPolicyCallback$Stub$Proxy;->notifyVolumeAdjust(I)V
-Landroid/media/audiopolicy/IAudioPolicyCallback$Stub;
Landroid/media/audiopolicy/IAudioPolicyCallback$Stub;-><init>()V
Landroid/media/audiopolicy/IAudioPolicyCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/audiopolicy/IAudioPolicyCallback;
Landroid/media/audiopolicy/IAudioPolicyCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -37148,14 +34667,12 @@
Landroid/media/audiopolicy/IAudioPolicyCallback$Stub;->TRANSACTION_notifyAudioFocusRequest:I
Landroid/media/audiopolicy/IAudioPolicyCallback$Stub;->TRANSACTION_notifyMixStateUpdate:I
Landroid/media/audiopolicy/IAudioPolicyCallback$Stub;->TRANSACTION_notifyVolumeAdjust:I
-Landroid/media/audiopolicy/IAudioPolicyCallback;
Landroid/media/audiopolicy/IAudioPolicyCallback;->notifyAudioFocusAbandon(Landroid/media/AudioFocusInfo;)V
Landroid/media/audiopolicy/IAudioPolicyCallback;->notifyAudioFocusGrant(Landroid/media/AudioFocusInfo;I)V
Landroid/media/audiopolicy/IAudioPolicyCallback;->notifyAudioFocusLoss(Landroid/media/AudioFocusInfo;Z)V
Landroid/media/audiopolicy/IAudioPolicyCallback;->notifyAudioFocusRequest(Landroid/media/AudioFocusInfo;I)V
Landroid/media/audiopolicy/IAudioPolicyCallback;->notifyMixStateUpdate(Ljava/lang/String;I)V
Landroid/media/audiopolicy/IAudioPolicyCallback;->notifyVolumeAdjust(I)V
-Landroid/media/AudioPort;
Landroid/media/AudioPort;->activeConfig()Landroid/media/AudioPortConfig;
Landroid/media/AudioPort;->buildConfig(IIILandroid/media/AudioGainConfig;)Landroid/media/AudioPortConfig;
Landroid/media/AudioPort;->channelIndexMasks()[I
@@ -37179,7 +34696,6 @@
Landroid/media/AudioPort;->TYPE_NONE:I
Landroid/media/AudioPort;->TYPE_SESSION:I
Landroid/media/AudioPort;->TYPE_SUBMIX:I
-Landroid/media/AudioPortConfig;
Landroid/media/AudioPortConfig;->channelMask()I
Landroid/media/AudioPortConfig;->CHANNEL_MASK:I
Landroid/media/AudioPortConfig;->format()I
@@ -37188,7 +34704,6 @@
Landroid/media/AudioPortConfig;->GAIN:I
Landroid/media/AudioPortConfig;->SAMPLE_RATE:I
Landroid/media/AudioPortConfig;->samplingRate()I
-Landroid/media/AudioPortEventHandler;
Landroid/media/AudioPortEventHandler;-><init>()V
Landroid/media/AudioPortEventHandler;->AUDIOPORT_EVENT_NEW_LISTENER:I
Landroid/media/AudioPortEventHandler;->AUDIOPORT_EVENT_PATCH_LIST_UPDATED:I
@@ -37205,7 +34720,6 @@
Landroid/media/AudioPortEventHandler;->RESCHEDULE_MESSAGE_DELAY_MS:J
Landroid/media/AudioPortEventHandler;->TAG:Ljava/lang/String;
Landroid/media/AudioPortEventHandler;->unregisterListener(Landroid/media/AudioManager$OnAudioPortUpdateListener;)V
-Landroid/media/AudioPresentation$MasteringIndicationType;
Landroid/media/AudioPresentation;->mAudioDescriptionAvailable:Z
Landroid/media/AudioPresentation;->mDialogueEnhancementAvailable:Z
Landroid/media/AudioPresentation;->mLabels:Ljava/util/Map;
@@ -37219,10 +34733,7 @@
Landroid/media/AudioRecord$Builder;->mFormat:Landroid/media/AudioFormat;
Landroid/media/AudioRecord$Builder;->mSessionId:I
Landroid/media/AudioRecord$MetricsConstants;-><init>()V
-Landroid/media/AudioRecord$NativeEventHandler;
-Landroid/media/AudioRecord$NativeEventHandler;-><init>(Landroid/media/AudioRecord;Landroid/os/Looper;)V
Landroid/media/AudioRecord$NativeEventHandler;->mAudioRecord:Landroid/media/AudioRecord;
-Landroid/media/AudioRecord$ReadMode;
Landroid/media/AudioRecord;-><init>(J)V
Landroid/media/AudioRecord;->audioBuffSizeCheck(I)V
Landroid/media/AudioRecord;->audioParamCheck(III)V
@@ -37281,7 +34792,6 @@
Landroid/media/AudioRecord;->TAG:Ljava/lang/String;
Landroid/media/AudioRecord;->testDisableNativeRoutingCallbacksLocked()V
Landroid/media/AudioRecord;->testEnableNativeRoutingCallbacksLocked()V
-Landroid/media/AudioRecordingConfiguration$AudioSource;
Landroid/media/AudioRecordingConfiguration;-><init>(IIILandroid/media/AudioFormat;Landroid/media/AudioFormat;ILjava/lang/String;)V
Landroid/media/AudioRecordingConfiguration;-><init>(Landroid/os/Parcel;)V
Landroid/media/AudioRecordingConfiguration;->anonymizedCopy(Landroid/media/AudioRecordingConfiguration;)Landroid/media/AudioRecordingConfiguration;
@@ -37295,7 +34805,6 @@
Landroid/media/AudioRecordingConfiguration;->mSessionId:I
Landroid/media/AudioRecordingConfiguration;->TAG:Ljava/lang/String;
Landroid/media/AudioRecordingConfiguration;->toLogFriendlyString(Landroid/media/AudioRecordingConfiguration;)Ljava/lang/String;
-Landroid/media/AudioRoutesInfo;
Landroid/media/AudioRoutesInfo;-><init>()V
Landroid/media/AudioRoutesInfo;-><init>(Landroid/media/AudioRoutesInfo;)V
Landroid/media/AudioRoutesInfo;-><init>(Landroid/os/Parcel;)V
@@ -37309,13 +34818,9 @@
Landroid/media/AudioRoutesInfo;->MAIN_SPEAKER:I
Landroid/media/AudioRoutesInfo;->MAIN_USB:I
Landroid/media/AudioRoutesInfo;->typeToString(I)Ljava/lang/String;
-Landroid/media/AudioSystem$AudioRecordingCallback;
Landroid/media/AudioSystem$AudioRecordingCallback;->onRecordingConfigurationChanged(IIII[ILjava/lang/String;)V
-Landroid/media/AudioSystem$DynamicPolicyCallback;
Landroid/media/AudioSystem$DynamicPolicyCallback;->onDynamicPolicyMixStateUpdate(Ljava/lang/String;I)V
-Landroid/media/AudioSystem$ErrorCallback;
Landroid/media/AudioSystem$ErrorCallback;->onError(I)V
-Landroid/media/AudioSystem;
Landroid/media/AudioSystem;-><init>()V
Landroid/media/AudioSystem;->AUDIO_HW_SYNC_INVALID:I
Landroid/media/AudioSystem;->AUDIO_SESSION_ALLOCATE:I
@@ -37523,7 +35028,6 @@
Landroid/media/AudioSystem;->systemReady()I
Landroid/media/AudioSystem;->TAG:Ljava/lang/String;
Landroid/media/AudioSystem;->WOULD_BLOCK:I
-Landroid/media/AudioTimestamp$Timebase;
Landroid/media/AudioTrack$Builder;->mAttributes:Landroid/media/AudioAttributes;
Landroid/media/AudioTrack$Builder;->mBufferSizeInBytes:I
Landroid/media/AudioTrack$Builder;->mFormat:Landroid/media/AudioFormat;
@@ -37533,18 +35037,12 @@
Landroid/media/AudioTrack$Builder;->mSessionId:I
Landroid/media/AudioTrack$Builder;->setOffloadedPlayback(Z)Landroid/media/AudioTrack$Builder;
Landroid/media/AudioTrack$MetricsConstants;-><init>()V
-Landroid/media/AudioTrack$NativePositionEventHandlerDelegate;
-Landroid/media/AudioTrack$NativePositionEventHandlerDelegate;-><init>(Landroid/media/AudioTrack;Landroid/media/AudioTrack$OnPlaybackPositionUpdateListener;Landroid/os/Handler;)V
Landroid/media/AudioTrack$NativePositionEventHandlerDelegate;->getHandler()Landroid/os/Handler;
Landroid/media/AudioTrack$NativePositionEventHandlerDelegate;->mHandler:Landroid/os/Handler;
-Landroid/media/AudioTrack$PerformanceMode;
-Landroid/media/AudioTrack$StreamEventCallback;
Landroid/media/AudioTrack$StreamEventCallback;-><init>()V
Landroid/media/AudioTrack$StreamEventCallback;->onStreamDataRequest(Landroid/media/AudioTrack;)V
Landroid/media/AudioTrack$StreamEventCallback;->onStreamPresentationEnd(Landroid/media/AudioTrack;)V
Landroid/media/AudioTrack$StreamEventCallback;->onTearDown(Landroid/media/AudioTrack;)V
-Landroid/media/AudioTrack$TransferMode;
-Landroid/media/AudioTrack$WriteMode;
Landroid/media/AudioTrack;-><init>(J)V
Landroid/media/AudioTrack;-><init>(Landroid/media/AudioAttributes;Landroid/media/AudioFormat;IIIZ)V
Landroid/media/AudioTrack;->audioBuffSizeCheck(I)V
@@ -37653,22 +35151,17 @@
Landroid/media/AudioTrack;->TAG:Ljava/lang/String;
Landroid/media/AudioTrack;->testDisableNativeRoutingCallbacksLocked()V
Landroid/media/AudioTrack;->testEnableNativeRoutingCallbacksLocked()V
-Landroid/media/browse/MediaBrowser$MediaItem$Flags;
Landroid/media/browse/MediaBrowser$MediaItem;-><init>(Landroid/os/Parcel;)V
Landroid/media/browse/MediaBrowser$MediaItem;->mDescription:Landroid/media/MediaDescription;
Landroid/media/browse/MediaBrowser$MediaItem;->mFlags:I
-Landroid/media/browse/MediaBrowser$MediaServiceConnection;
-Landroid/media/browse/MediaBrowser$MediaServiceConnection;-><init>()V
Landroid/media/browse/MediaBrowser$MediaServiceConnection;->isCurrent(Ljava/lang/String;)Z
Landroid/media/browse/MediaBrowser$MediaServiceConnection;->postOrRun(Ljava/lang/Runnable;)V
-Landroid/media/browse/MediaBrowser$ServiceCallbacks;
Landroid/media/browse/MediaBrowser$ServiceCallbacks;-><init>(Landroid/media/browse/MediaBrowser;)V
Landroid/media/browse/MediaBrowser$ServiceCallbacks;->mMediaBrowser:Ljava/lang/ref/WeakReference;
Landroid/media/browse/MediaBrowser$ServiceCallbacks;->onConnect(Ljava/lang/String;Landroid/media/session/MediaSession$Token;Landroid/os/Bundle;)V
Landroid/media/browse/MediaBrowser$ServiceCallbacks;->onConnectFailed()V
Landroid/media/browse/MediaBrowser$ServiceCallbacks;->onLoadChildren(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V
Landroid/media/browse/MediaBrowser$ServiceCallbacks;->onLoadChildrenWithOptions(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;Landroid/os/Bundle;)V
-Landroid/media/browse/MediaBrowser$Subscription;
Landroid/media/browse/MediaBrowser$Subscription;-><init>()V
Landroid/media/browse/MediaBrowser$Subscription;->getCallback(Landroid/content/Context;Landroid/os/Bundle;)Landroid/media/browse/MediaBrowser$SubscriptionCallback;
Landroid/media/browse/MediaBrowser$Subscription;->getCallbacks()Ljava/util/List;
@@ -37708,7 +35201,6 @@
Landroid/media/browse/MediaBrowser;->subscribeInternal(Ljava/lang/String;Landroid/os/Bundle;Landroid/media/browse/MediaBrowser$SubscriptionCallback;)V
Landroid/media/browse/MediaBrowser;->TAG:Ljava/lang/String;
Landroid/media/browse/MediaBrowser;->unsubscribeInternal(Ljava/lang/String;Landroid/media/browse/MediaBrowser$SubscriptionCallback;)V
-Landroid/media/browse/MediaBrowserUtils;
Landroid/media/browse/MediaBrowserUtils;-><init>()V
Landroid/media/browse/MediaBrowserUtils;->areSameOptions(Landroid/os/Bundle;Landroid/os/Bundle;)Z
Landroid/media/browse/MediaBrowserUtils;->hasDuplicatedItems(Landroid/os/Bundle;Landroid/os/Bundle;)Z
@@ -37732,7 +35224,6 @@
Landroid/media/CameraProfile;->native_get_num_image_encoding_quality_levels(I)I
Landroid/media/CameraProfile;->native_init()V
Landroid/media/CameraProfile;->sCache:Ljava/util/HashMap;
-Landroid/media/Cea608CCParser$CCData;
Landroid/media/Cea608CCParser$CCData;-><init>(BBB)V
Landroid/media/Cea608CCParser$CCData;->ctrlCodeToString(I)Ljava/lang/String;
Landroid/media/Cea608CCParser$CCData;->fromByteArray([B)[Landroid/media/Cea608CCParser$CCData;
@@ -37756,7 +35247,6 @@
Landroid/media/Cea608CCParser$CCData;->mSpanishCharMap:[Ljava/lang/String;
Landroid/media/Cea608CCParser$CCData;->mSpecialCharMap:[Ljava/lang/String;
Landroid/media/Cea608CCParser$CCData;->mType:B
-Landroid/media/Cea608CCParser$CCLineBuilder;
Landroid/media/Cea608CCParser$CCLineBuilder;-><init>(Ljava/lang/String;)V
Landroid/media/Cea608CCParser$CCLineBuilder;->applyStyleSpan(Landroid/text/SpannableStringBuilder;Landroid/media/Cea608CCParser$StyleCode;II)V
Landroid/media/Cea608CCParser$CCLineBuilder;->charAt(I)C
@@ -37768,7 +35258,6 @@
Landroid/media/Cea608CCParser$CCLineBuilder;->setCharAt(IC)V
Landroid/media/Cea608CCParser$CCLineBuilder;->setMidRowAt(ILandroid/media/Cea608CCParser$StyleCode;)V
Landroid/media/Cea608CCParser$CCLineBuilder;->setPACAt(ILandroid/media/Cea608CCParser$PAC;)V
-Landroid/media/Cea608CCParser$CCMemory;
Landroid/media/Cea608CCParser$CCMemory;-><init>()V
Landroid/media/Cea608CCParser$CCMemory;->bs()V
Landroid/media/Cea608CCParser$CCMemory;->clamp(III)I
@@ -37790,15 +35279,12 @@
Landroid/media/Cea608CCParser$CCMemory;->writeMidRowCode(Landroid/media/Cea608CCParser$StyleCode;)V
Landroid/media/Cea608CCParser$CCMemory;->writePAC(Landroid/media/Cea608CCParser$PAC;)V
Landroid/media/Cea608CCParser$CCMemory;->writeText(Ljava/lang/String;)V
-Landroid/media/Cea608CCParser$DisplayListener;
Landroid/media/Cea608CCParser$DisplayListener;->getCaptionStyle()Landroid/view/accessibility/CaptioningManager$CaptionStyle;
Landroid/media/Cea608CCParser$DisplayListener;->onDisplayChanged([Landroid/text/SpannableStringBuilder;)V
-Landroid/media/Cea608CCParser$MutableBackgroundColorSpan;
Landroid/media/Cea608CCParser$MutableBackgroundColorSpan;-><init>(I)V
Landroid/media/Cea608CCParser$MutableBackgroundColorSpan;->getBackgroundColor()I
Landroid/media/Cea608CCParser$MutableBackgroundColorSpan;->mColor:I
Landroid/media/Cea608CCParser$MutableBackgroundColorSpan;->setBackgroundColor(I)V
-Landroid/media/Cea608CCParser$PAC;
Landroid/media/Cea608CCParser$PAC;-><init>(IIII)V
Landroid/media/Cea608CCParser$PAC;->fromBytes(BB)Landroid/media/Cea608CCParser$PAC;
Landroid/media/Cea608CCParser$PAC;->getCol()I
@@ -37806,7 +35292,6 @@
Landroid/media/Cea608CCParser$PAC;->isIndentPAC()Z
Landroid/media/Cea608CCParser$PAC;->mCol:I
Landroid/media/Cea608CCParser$PAC;->mRow:I
-Landroid/media/Cea608CCParser$StyleCode;
Landroid/media/Cea608CCParser$StyleCode;-><init>(II)V
Landroid/media/Cea608CCParser$StyleCode;->COLOR_BLUE:I
Landroid/media/Cea608CCParser$StyleCode;->COLOR_CYAN:I
@@ -37825,7 +35310,6 @@
Landroid/media/Cea608CCParser$StyleCode;->mStyle:I
Landroid/media/Cea608CCParser$StyleCode;->STYLE_ITALICS:I
Landroid/media/Cea608CCParser$StyleCode;->STYLE_UNDERLINE:I
-Landroid/media/Cea608CCParser;
Landroid/media/Cea608CCParser;-><init>(Landroid/media/Cea608CCParser$DisplayListener;)V
Landroid/media/Cea608CCParser;->AOF:I
Landroid/media/Cea608CCParser;->AON:I
@@ -37870,7 +35354,6 @@
Landroid/media/Cea608CCParser;->TR:I
Landroid/media/Cea608CCParser;->TS:C
Landroid/media/Cea608CCParser;->updateDisplay()V
-Landroid/media/Cea608CCWidget$CCLayout;
Landroid/media/Cea608CCWidget$CCLayout;-><init>(Landroid/content/Context;)V
Landroid/media/Cea608CCWidget$CCLayout;->MAX_ROWS:I
Landroid/media/Cea608CCWidget$CCLayout;->mLineBoxes:[Landroid/media/Cea608CCWidget$CCLineBox;
@@ -37878,7 +35361,6 @@
Landroid/media/Cea608CCWidget$CCLayout;->setCaptionStyle(Landroid/view/accessibility/CaptioningManager$CaptionStyle;)V
Landroid/media/Cea608CCWidget$CCLayout;->setFontScale(F)V
Landroid/media/Cea608CCWidget$CCLayout;->update([Landroid/text/SpannableStringBuilder;)V
-Landroid/media/Cea608CCWidget$CCLineBox;
Landroid/media/Cea608CCWidget$CCLineBox;-><init>(Landroid/content/Context;)V
Landroid/media/Cea608CCWidget$CCLineBox;->drawEdgeOutline(Landroid/graphics/Canvas;)V
Landroid/media/Cea608CCWidget$CCLineBox;->drawEdgeRaisedOrDepressed(Landroid/graphics/Canvas;)V
@@ -37894,7 +35376,6 @@
Landroid/media/Cea608CCWidget$CCLineBox;->mTextColor:I
Landroid/media/Cea608CCWidget$CCLineBox;->setBackgroundSpans(I)V
Landroid/media/Cea608CCWidget$CCLineBox;->setCaptionStyle(Landroid/view/accessibility/CaptioningManager$CaptionStyle;)V
-Landroid/media/Cea608CCWidget;
Landroid/media/Cea608CCWidget;-><init>(Landroid/content/Context;)V
Landroid/media/Cea608CCWidget;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
Landroid/media/Cea608CCWidget;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
@@ -37904,13 +35385,11 @@
Landroid/media/Cea608CCWidget;->mDummyText:Ljava/lang/String;
Landroid/media/Cea608CCWidget;->mTextBounds:Landroid/graphics/Rect;
Landroid/media/Cea608CCWidget;->onDisplayChanged([Landroid/text/SpannableStringBuilder;)V
-Landroid/media/Cea708CaptionRenderer;
Landroid/media/Cea708CaptionRenderer;-><init>(Landroid/content/Context;)V
Landroid/media/Cea708CaptionRenderer;->createTrack(Landroid/media/MediaFormat;)Landroid/media/SubtitleTrack;
Landroid/media/Cea708CaptionRenderer;->mCCWidget:Landroid/media/Cea708CCWidget;
Landroid/media/Cea708CaptionRenderer;->mContext:Landroid/content/Context;
Landroid/media/Cea708CaptionRenderer;->supports(Landroid/media/MediaFormat;)Z
-Landroid/media/Cea708CCParser$CaptionColor;
Landroid/media/Cea708CCParser$CaptionColor;-><init>(IIII)V
Landroid/media/Cea708CCParser$CaptionColor;->blue:I
Landroid/media/Cea708CCParser$CaptionColor;->COLOR_MAP:[I
@@ -37923,11 +35402,9 @@
Landroid/media/Cea708CCParser$CaptionColor;->OPACITY_TRANSLUCENT:I
Landroid/media/Cea708CCParser$CaptionColor;->OPACITY_TRANSPARENT:I
Landroid/media/Cea708CCParser$CaptionColor;->red:I
-Landroid/media/Cea708CCParser$CaptionEvent;
Landroid/media/Cea708CCParser$CaptionEvent;-><init>(ILjava/lang/Object;)V
Landroid/media/Cea708CCParser$CaptionEvent;->obj:Ljava/lang/Object;
Landroid/media/Cea708CCParser$CaptionEvent;->type:I
-Landroid/media/Cea708CCParser$CaptionPenAttr;
Landroid/media/Cea708CCParser$CaptionPenAttr;-><init>(IIIIIZZ)V
Landroid/media/Cea708CCParser$CaptionPenAttr;->edgeType:I
Landroid/media/Cea708CCParser$CaptionPenAttr;->fontTag:I
@@ -37942,16 +35419,13 @@
Landroid/media/Cea708CCParser$CaptionPenAttr;->PEN_SIZE_STANDARD:I
Landroid/media/Cea708CCParser$CaptionPenAttr;->textTag:I
Landroid/media/Cea708CCParser$CaptionPenAttr;->underline:Z
-Landroid/media/Cea708CCParser$CaptionPenColor;
Landroid/media/Cea708CCParser$CaptionPenColor;-><init>(Landroid/media/Cea708CCParser$CaptionColor;Landroid/media/Cea708CCParser$CaptionColor;Landroid/media/Cea708CCParser$CaptionColor;)V
Landroid/media/Cea708CCParser$CaptionPenColor;->backgroundColor:Landroid/media/Cea708CCParser$CaptionColor;
Landroid/media/Cea708CCParser$CaptionPenColor;->edgeColor:Landroid/media/Cea708CCParser$CaptionColor;
Landroid/media/Cea708CCParser$CaptionPenColor;->foregroundColor:Landroid/media/Cea708CCParser$CaptionColor;
-Landroid/media/Cea708CCParser$CaptionPenLocation;
Landroid/media/Cea708CCParser$CaptionPenLocation;-><init>(II)V
Landroid/media/Cea708CCParser$CaptionPenLocation;->column:I
Landroid/media/Cea708CCParser$CaptionPenLocation;->row:I
-Landroid/media/Cea708CCParser$CaptionWindow;
Landroid/media/Cea708CCParser$CaptionWindow;-><init>(IZZZIZIIIIIII)V
Landroid/media/Cea708CCParser$CaptionWindow;->anchorHorizontal:I
Landroid/media/Cea708CCParser$CaptionWindow;->anchorId:I
@@ -37966,7 +35440,6 @@
Landroid/media/Cea708CCParser$CaptionWindow;->rowLock:Z
Landroid/media/Cea708CCParser$CaptionWindow;->visible:Z
Landroid/media/Cea708CCParser$CaptionWindow;->windowStyle:I
-Landroid/media/Cea708CCParser$CaptionWindowAttr;
Landroid/media/Cea708CCParser$CaptionWindowAttr;-><init>(Landroid/media/Cea708CCParser$CaptionColor;Landroid/media/Cea708CCParser$CaptionColor;IZIIIIII)V
Landroid/media/Cea708CCParser$CaptionWindowAttr;->borderColor:Landroid/media/Cea708CCParser$CaptionColor;
Landroid/media/Cea708CCParser$CaptionWindowAttr;->borderType:I
@@ -37978,7 +35451,6 @@
Landroid/media/Cea708CCParser$CaptionWindowAttr;->printDirection:I
Landroid/media/Cea708CCParser$CaptionWindowAttr;->scrollDirection:I
Landroid/media/Cea708CCParser$CaptionWindowAttr;->wordWrap:Z
-Landroid/media/Cea708CCParser$Const;
Landroid/media/Cea708CCParser$Const;-><init>()V
Landroid/media/Cea708CCParser$Const;->CODE_C0_BS:I
Landroid/media/Cea708CCParser$Const;->CODE_C0_CR:I
@@ -38053,9 +35525,7 @@
Landroid/media/Cea708CCParser$Const;->CODE_G3_CC:I
Landroid/media/Cea708CCParser$Const;->CODE_G3_RANGE_END:I
Landroid/media/Cea708CCParser$Const;->CODE_G3_RANGE_START:I
-Landroid/media/Cea708CCParser$DisplayListener;
Landroid/media/Cea708CCParser$DisplayListener;->emitEvent(Landroid/media/Cea708CCParser$CaptionEvent;)V
-Landroid/media/Cea708CCParser;
Landroid/media/Cea708CCParser;-><init>(Landroid/media/Cea708CCParser$DisplayListener;)V
Landroid/media/Cea708CCParser;->CAPTION_EMIT_TYPE_BUFFER:I
Landroid/media/Cea708CCParser;->CAPTION_EMIT_TYPE_COMMAND_CLW:I
@@ -38092,7 +35562,6 @@
Landroid/media/Cea708CCParser;->parseG3([BI)I
Landroid/media/Cea708CCParser;->parseServiceBlockData([BI)I
Landroid/media/Cea708CCParser;->TAG:Ljava/lang/String;
-Landroid/media/Cea708CCWidget$CCHandler;
Landroid/media/Cea708CCWidget$CCHandler;-><init>(Landroid/media/Cea708CCWidget$CCLayout;)V
Landroid/media/Cea708CCWidget$CCHandler;->CAPTION_ALL_WINDOWS_BITMAP:I
Landroid/media/Cea708CCWidget$CCHandler;->CAPTION_CLEAR_INTERVAL_MS:J
@@ -38127,7 +35596,6 @@
Landroid/media/Cea708CCWidget$CCHandler;->TAG:Ljava/lang/String;
Landroid/media/Cea708CCWidget$CCHandler;->TENTHS_OF_SECOND_IN_MILLIS:I
Landroid/media/Cea708CCWidget$CCHandler;->toggleWindows(I)V
-Landroid/media/Cea708CCWidget$CCLayout;
Landroid/media/Cea708CCWidget$CCLayout;-><init>(Landroid/content/Context;)V
Landroid/media/Cea708CCWidget$CCLayout;->addOrUpdateViewToSafeTitleArea(Landroid/media/Cea708CCWidget$CCWindowLayout;Landroid/media/Cea708CCWidget$ScaledLayout$ScaledLayoutParams;)V
Landroid/media/Cea708CCWidget$CCLayout;->mSafeTitleAreaLayout:Landroid/media/Cea708CCWidget$ScaledLayout;
@@ -38138,14 +35606,12 @@
Landroid/media/Cea708CCWidget$CCLayout;->SAFE_TITLE_AREA_SCALE_START_Y:F
Landroid/media/Cea708CCWidget$CCLayout;->setCaptionStyle(Landroid/view/accessibility/CaptioningManager$CaptionStyle;)V
Landroid/media/Cea708CCWidget$CCLayout;->setFontScale(F)V
-Landroid/media/Cea708CCWidget$CCView;
Landroid/media/Cea708CCWidget$CCView;-><init>(Landroid/content/Context;)V
Landroid/media/Cea708CCWidget$CCView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
Landroid/media/Cea708CCWidget$CCView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
Landroid/media/Cea708CCWidget$CCView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V
Landroid/media/Cea708CCWidget$CCView;->DEFAULT_CAPTION_STYLE:Landroid/view/accessibility/CaptioningManager$CaptionStyle;
Landroid/media/Cea708CCWidget$CCView;->setCaptionStyle(Landroid/view/accessibility/CaptioningManager$CaptionStyle;)V
-Landroid/media/Cea708CCWidget$CCWindowLayout;
Landroid/media/Cea708CCWidget$CCWindowLayout;-><init>(Landroid/content/Context;)V
Landroid/media/Cea708CCWidget$CCWindowLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
Landroid/media/Cea708CCWidget$CCWindowLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
@@ -38200,7 +35666,6 @@
Landroid/media/Cea708CCWidget$CCWindowLayout;->updateText(Ljava/lang/String;Z)V
Landroid/media/Cea708CCWidget$CCWindowLayout;->updateTextSize()V
Landroid/media/Cea708CCWidget$CCWindowLayout;->updateWidestChar()V
-Landroid/media/Cea708CCWidget$ScaledLayout$ScaledLayoutParams;
Landroid/media/Cea708CCWidget$ScaledLayout$ScaledLayoutParams;-><init>(FFFF)V
Landroid/media/Cea708CCWidget$ScaledLayout$ScaledLayoutParams;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
Landroid/media/Cea708CCWidget$ScaledLayout$ScaledLayoutParams;->scaleEndCol:F
@@ -38208,13 +35673,11 @@
Landroid/media/Cea708CCWidget$ScaledLayout$ScaledLayoutParams;->scaleStartCol:F
Landroid/media/Cea708CCWidget$ScaledLayout$ScaledLayoutParams;->scaleStartRow:F
Landroid/media/Cea708CCWidget$ScaledLayout$ScaledLayoutParams;->SCALE_UNSPECIFIED:F
-Landroid/media/Cea708CCWidget$ScaledLayout;
Landroid/media/Cea708CCWidget$ScaledLayout;-><init>(Landroid/content/Context;)V
Landroid/media/Cea708CCWidget$ScaledLayout;->DEBUG:Z
Landroid/media/Cea708CCWidget$ScaledLayout;->mRectArray:[Landroid/graphics/Rect;
Landroid/media/Cea708CCWidget$ScaledLayout;->mRectTopLeftSorter:Ljava/util/Comparator;
Landroid/media/Cea708CCWidget$ScaledLayout;->TAG:Ljava/lang/String;
-Landroid/media/Cea708CCWidget;
Landroid/media/Cea708CCWidget;-><init>(Landroid/content/Context;)V
Landroid/media/Cea708CCWidget;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
Landroid/media/Cea708CCWidget;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
@@ -38222,16 +35685,13 @@
Landroid/media/Cea708CCWidget;->createCaptionLayout(Landroid/content/Context;)Landroid/media/ClosedCaptionWidget$ClosedCaptionLayout;
Landroid/media/Cea708CCWidget;->emitEvent(Landroid/media/Cea708CCParser$CaptionEvent;)V
Landroid/media/Cea708CCWidget;->mCCHandler:Landroid/media/Cea708CCWidget$CCHandler;
-Landroid/media/ClosedCaptionRenderer;
Landroid/media/ClosedCaptionRenderer;-><init>(Landroid/content/Context;)V
Landroid/media/ClosedCaptionRenderer;->createTrack(Landroid/media/MediaFormat;)Landroid/media/SubtitleTrack;
Landroid/media/ClosedCaptionRenderer;->mCCWidget:Landroid/media/Cea608CCWidget;
Landroid/media/ClosedCaptionRenderer;->mContext:Landroid/content/Context;
Landroid/media/ClosedCaptionRenderer;->supports(Landroid/media/MediaFormat;)Z
-Landroid/media/ClosedCaptionWidget$ClosedCaptionLayout;
Landroid/media/ClosedCaptionWidget$ClosedCaptionLayout;->setCaptionStyle(Landroid/view/accessibility/CaptioningManager$CaptionStyle;)V
Landroid/media/ClosedCaptionWidget$ClosedCaptionLayout;->setFontScale(F)V
-Landroid/media/ClosedCaptionWidget;
Landroid/media/ClosedCaptionWidget;-><init>(Landroid/content/Context;)V
Landroid/media/ClosedCaptionWidget;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
Landroid/media/ClosedCaptionWidget;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
@@ -38248,7 +35708,6 @@
Landroid/media/ClosedCaptionWidget;->setOnChangedListener(Landroid/media/SubtitleTrack$RenderingWidget$OnChangedListener;)V
Landroid/media/ClosedCaptionWidget;->setSize(II)V
Landroid/media/ClosedCaptionWidget;->setVisible(Z)V
-Landroid/media/DataSourceDesc$Builder;
Landroid/media/DataSourceDesc$Builder;-><init>()V
Landroid/media/DataSourceDesc$Builder;-><init>(Landroid/media/DataSourceDesc;)V
Landroid/media/DataSourceDesc$Builder;->build()Landroid/media/DataSourceDesc;
@@ -38273,7 +35732,6 @@
Landroid/media/DataSourceDesc$Builder;->setEndPosition(J)Landroid/media/DataSourceDesc$Builder;
Landroid/media/DataSourceDesc$Builder;->setMediaId(Ljava/lang/String;)Landroid/media/DataSourceDesc$Builder;
Landroid/media/DataSourceDesc$Builder;->setStartPosition(J)Landroid/media/DataSourceDesc$Builder;
-Landroid/media/DataSourceDesc;
Landroid/media/DataSourceDesc;-><init>()V
Landroid/media/DataSourceDesc;->getEndPosition()J
Landroid/media/DataSourceDesc;->getFileDescriptor()Ljava/io/FileDescriptor;
@@ -38304,15 +35762,10 @@
Landroid/media/DataSourceDesc;->TYPE_FD:I
Landroid/media/DataSourceDesc;->TYPE_NONE:I
Landroid/media/DataSourceDesc;->TYPE_URI:I
-Landroid/media/DecoderCapabilities$AudioDecoder;
-Landroid/media/DecoderCapabilities$AudioDecoder;-><init>()V
Landroid/media/DecoderCapabilities$AudioDecoder;->valueOf(Ljava/lang/String;)Landroid/media/DecoderCapabilities$AudioDecoder;
Landroid/media/DecoderCapabilities$AudioDecoder;->values()[Landroid/media/DecoderCapabilities$AudioDecoder;
-Landroid/media/DecoderCapabilities$VideoDecoder;
-Landroid/media/DecoderCapabilities$VideoDecoder;-><init>()V
Landroid/media/DecoderCapabilities$VideoDecoder;->valueOf(Ljava/lang/String;)Landroid/media/DecoderCapabilities$VideoDecoder;
Landroid/media/DecoderCapabilities$VideoDecoder;->values()[Landroid/media/DecoderCapabilities$VideoDecoder;
-Landroid/media/DecoderCapabilities;
Landroid/media/DecoderCapabilities;-><init>()V
Landroid/media/DecoderCapabilities;->native_get_audio_decoder_type(I)I
Landroid/media/DecoderCapabilities;->native_get_num_audio_decoders()I
@@ -38339,7 +35792,6 @@
Landroid/media/effect/EffectFactory;->getEffectClassByName(Ljava/lang/String;)Ljava/lang/Class;
Landroid/media/effect/EffectFactory;->instantiateEffect(Ljava/lang/Class;Ljava/lang/String;)Landroid/media/effect/Effect;
Landroid/media/effect/EffectFactory;->mEffectContext:Landroid/media/effect/EffectContext;
-Landroid/media/effect/FilterEffect;
Landroid/media/effect/FilterEffect;-><init>(Landroid/media/effect/EffectContext;Ljava/lang/String;)V
Landroid/media/effect/FilterEffect;->beginGLEffect()V
Landroid/media/effect/FilterEffect;->endGLEffect()V
@@ -38347,7 +35799,6 @@
Landroid/media/effect/FilterEffect;->getFilterContext()Landroid/filterfw/core/FilterContext;
Landroid/media/effect/FilterEffect;->mEffectContext:Landroid/media/effect/EffectContext;
Landroid/media/effect/FilterEffect;->mName:Ljava/lang/String;
-Landroid/media/effect/FilterGraphEffect;
Landroid/media/effect/FilterGraphEffect;-><init>(Landroid/media/effect/EffectContext;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)V
Landroid/media/effect/FilterGraphEffect;->createGraph(Ljava/lang/String;)V
Landroid/media/effect/FilterGraphEffect;->mGraph:Landroid/filterfw/core/FilterGraph;
@@ -38356,14 +35807,9 @@
Landroid/media/effect/FilterGraphEffect;->mRunner:Landroid/filterfw/core/GraphRunner;
Landroid/media/effect/FilterGraphEffect;->mSchedulerClass:Ljava/lang/Class;
Landroid/media/effect/FilterGraphEffect;->TAG:Ljava/lang/String;
-Landroid/media/effect/SingleFilterEffect;
-Landroid/media/effect/SingleFilterEffect;-><init>(Landroid/media/effect/EffectContext;Ljava/lang/String;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;[[Ljava/lang/Object;)V
Landroid/media/effect/SingleFilterEffect;->mFunction:Landroid/filterfw/core/FilterFunction;
Landroid/media/effect/SingleFilterEffect;->mInputName:Ljava/lang/String;
Landroid/media/effect/SingleFilterEffect;->mOutputName:Ljava/lang/String;
-Landroid/media/effect/SizeChangeEffect;
-Landroid/media/effect/SizeChangeEffect;-><init>(Landroid/media/effect/EffectContext;Ljava/lang/String;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;[[Ljava/lang/Object;)V
-Landroid/media/EncoderCapabilities$AudioEncoderCap;
Landroid/media/EncoderCapabilities$AudioEncoderCap;-><init>(IIIIIII)V
Landroid/media/EncoderCapabilities$AudioEncoderCap;->mCodec:I
Landroid/media/EncoderCapabilities$AudioEncoderCap;->mMaxBitRate:I
@@ -38372,13 +35818,11 @@
Landroid/media/EncoderCapabilities$AudioEncoderCap;->mMinBitRate:I
Landroid/media/EncoderCapabilities$AudioEncoderCap;->mMinChannels:I
Landroid/media/EncoderCapabilities$AudioEncoderCap;->mMinSampleRate:I
-Landroid/media/EncoderCapabilities$VideoEncoderCap;
Landroid/media/EncoderCapabilities$VideoEncoderCap;-><init>(IIIIIIIII)V
Landroid/media/EncoderCapabilities$VideoEncoderCap;->mMaxBitRate:I
Landroid/media/EncoderCapabilities$VideoEncoderCap;->mMaxFrameRate:I
Landroid/media/EncoderCapabilities$VideoEncoderCap;->mMinBitRate:I
Landroid/media/EncoderCapabilities$VideoEncoderCap;->mMinFrameRate:I
-Landroid/media/EncoderCapabilities;
Landroid/media/EncoderCapabilities;-><init>()V
Landroid/media/EncoderCapabilities;->getAudioEncoders()Ljava/util/List;
Landroid/media/EncoderCapabilities;->getOutputFileFormats()[I
@@ -38390,7 +35834,6 @@
Landroid/media/EncoderCapabilities;->native_get_video_encoder_cap(I)Landroid/media/EncoderCapabilities$VideoEncoderCap;
Landroid/media/EncoderCapabilities;->native_init()V
Landroid/media/EncoderCapabilities;->TAG:Ljava/lang/String;
-Landroid/media/ExifInterface$ByteOrderedDataInputStream;
Landroid/media/ExifInterface$ByteOrderedDataInputStream;-><init>(Ljava/io/InputStream;)V
Landroid/media/ExifInterface$ByteOrderedDataInputStream;-><init>([B)V
Landroid/media/ExifInterface$ByteOrderedDataInputStream;->BIG_ENDIAN:Ljava/nio/ByteOrder;
@@ -38404,7 +35847,6 @@
Landroid/media/ExifInterface$ByteOrderedDataInputStream;->readUnsignedInt()J
Landroid/media/ExifInterface$ByteOrderedDataInputStream;->seek(J)V
Landroid/media/ExifInterface$ByteOrderedDataInputStream;->setByteOrder(Ljava/nio/ByteOrder;)V
-Landroid/media/ExifInterface$ByteOrderedDataOutputStream;
Landroid/media/ExifInterface$ByteOrderedDataOutputStream;-><init>(Ljava/io/OutputStream;Ljava/nio/ByteOrder;)V
Landroid/media/ExifInterface$ByteOrderedDataOutputStream;->mByteOrder:Ljava/nio/ByteOrder;
Landroid/media/ExifInterface$ByteOrderedDataOutputStream;->mOutputStream:Ljava/io/OutputStream;
@@ -38414,7 +35856,6 @@
Landroid/media/ExifInterface$ByteOrderedDataOutputStream;->writeShort(S)V
Landroid/media/ExifInterface$ByteOrderedDataOutputStream;->writeUnsignedInt(J)V
Landroid/media/ExifInterface$ByteOrderedDataOutputStream;->writeUnsignedShort(I)V
-Landroid/media/ExifInterface$ExifAttribute;
Landroid/media/ExifInterface$ExifAttribute;-><init>(II[B)V
Landroid/media/ExifInterface$ExifAttribute;->bytes:[B
Landroid/media/ExifInterface$ExifAttribute;->createByte(Ljava/lang/String;)Landroid/media/ExifInterface$ExifAttribute;
@@ -38438,15 +35879,12 @@
Landroid/media/ExifInterface$ExifAttribute;->getValue(Ljava/nio/ByteOrder;)Ljava/lang/Object;
Landroid/media/ExifInterface$ExifAttribute;->numberOfComponents:I
Landroid/media/ExifInterface$ExifAttribute;->size()I
-Landroid/media/ExifInterface$ExifTag;
Landroid/media/ExifInterface$ExifTag;-><init>(Ljava/lang/String;II)V
Landroid/media/ExifInterface$ExifTag;-><init>(Ljava/lang/String;III)V
Landroid/media/ExifInterface$ExifTag;->name:Ljava/lang/String;
Landroid/media/ExifInterface$ExifTag;->number:I
Landroid/media/ExifInterface$ExifTag;->primaryFormat:I
Landroid/media/ExifInterface$ExifTag;->secondaryFormat:I
-Landroid/media/ExifInterface$IfdType;
-Landroid/media/ExifInterface$Rational;
Landroid/media/ExifInterface$Rational;-><init>(JJ)V
Landroid/media/ExifInterface$Rational;->calculate()D
Landroid/media/ExifInterface$Rational;->denominator:J
@@ -38635,10 +36073,8 @@
Landroid/media/ExifInterface;->updateImageSizeValues(Landroid/media/ExifInterface$ByteOrderedDataInputStream;I)V
Landroid/media/ExifInterface;->validateImages(Ljava/io/InputStream;)V
Landroid/media/ExifInterface;->writeExifSegment(Landroid/media/ExifInterface$ByteOrderedDataOutputStream;I)I
-Landroid/media/ExternalRingtonesCursorWrapper;
Landroid/media/ExternalRingtonesCursorWrapper;-><init>(Landroid/database/Cursor;I)V
Landroid/media/ExternalRingtonesCursorWrapper;->mUserId:I
-Landroid/media/FaceDetector$Face;-><init>()V
Landroid/media/FaceDetector$Face;->mConfidence:F
Landroid/media/FaceDetector$Face;->mEyesDist:F
Landroid/media/FaceDetector$Face;->mMidPointX:F
@@ -38659,44 +36095,34 @@
Landroid/media/FaceDetector;->mWidth:I
Landroid/media/FaceDetector;->nativeClassInit()V
Landroid/media/FaceDetector;->sInitialized:Z
-Landroid/media/IAudioFocusDispatcher$Stub$Proxy;
Landroid/media/IAudioFocusDispatcher$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/media/IAudioFocusDispatcher$Stub$Proxy;->dispatchAudioFocusChange(ILjava/lang/String;)V
Landroid/media/IAudioFocusDispatcher$Stub$Proxy;->dispatchFocusResultFromExtPolicy(ILjava/lang/String;)V
Landroid/media/IAudioFocusDispatcher$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/media/IAudioFocusDispatcher$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/media/IAudioFocusDispatcher$Stub;
Landroid/media/IAudioFocusDispatcher$Stub;-><init>()V
Landroid/media/IAudioFocusDispatcher$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/IAudioFocusDispatcher;
Landroid/media/IAudioFocusDispatcher$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/media/IAudioFocusDispatcher$Stub;->TRANSACTION_dispatchAudioFocusChange:I
Landroid/media/IAudioFocusDispatcher$Stub;->TRANSACTION_dispatchFocusResultFromExtPolicy:I
-Landroid/media/IAudioFocusDispatcher;
Landroid/media/IAudioFocusDispatcher;->dispatchFocusResultFromExtPolicy(ILjava/lang/String;)V
-Landroid/media/IAudioRoutesObserver$Stub$Proxy;
Landroid/media/IAudioRoutesObserver$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/media/IAudioRoutesObserver$Stub$Proxy;->dispatchAudioRoutesChanged(Landroid/media/AudioRoutesInfo;)V
Landroid/media/IAudioRoutesObserver$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/media/IAudioRoutesObserver$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/media/IAudioRoutesObserver$Stub;
Landroid/media/IAudioRoutesObserver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/IAudioRoutesObserver;
Landroid/media/IAudioRoutesObserver$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/media/IAudioRoutesObserver$Stub;->TRANSACTION_dispatchAudioRoutesChanged:I
-Landroid/media/IAudioRoutesObserver;
Landroid/media/IAudioRoutesObserver;->dispatchAudioRoutesChanged(Landroid/media/AudioRoutesInfo;)V
-Landroid/media/IAudioServerStateDispatcher$Stub$Proxy;
Landroid/media/IAudioServerStateDispatcher$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/media/IAudioServerStateDispatcher$Stub$Proxy;->dispatchAudioServerStateChange(Z)V
Landroid/media/IAudioServerStateDispatcher$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/media/IAudioServerStateDispatcher$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/media/IAudioServerStateDispatcher$Stub;
Landroid/media/IAudioServerStateDispatcher$Stub;-><init>()V
Landroid/media/IAudioServerStateDispatcher$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/IAudioServerStateDispatcher;
Landroid/media/IAudioServerStateDispatcher$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/media/IAudioServerStateDispatcher$Stub;->TRANSACTION_dispatchAudioServerStateChange:I
-Landroid/media/IAudioServerStateDispatcher;
Landroid/media/IAudioServerStateDispatcher;->dispatchAudioServerStateChange(Z)V
-Landroid/media/IAudioService$Stub$Proxy;
Landroid/media/IAudioService$Stub$Proxy;->abandonAudioFocus(Landroid/media/IAudioFocusDispatcher;Ljava/lang/String;Landroid/media/AudioAttributes;Ljava/lang/String;)I
Landroid/media/IAudioService$Stub$Proxy;->addMixForPolicy(Landroid/media/audiopolicy/AudioPolicyConfig;Landroid/media/audiopolicy/IAudioPolicyCallback;)I
Landroid/media/IAudioService$Stub$Proxy;->adjustStreamVolume(IIILjava/lang/String;)V
@@ -38782,7 +36208,6 @@
Landroid/media/IAudioService$Stub$Proxy;->unregisterAudioServerStateDispatcher(Landroid/media/IAudioServerStateDispatcher;)V
Landroid/media/IAudioService$Stub$Proxy;->unregisterPlaybackCallback(Landroid/media/IPlaybackConfigDispatcher;)V
Landroid/media/IAudioService$Stub$Proxy;->unregisterRecordingCallback(Landroid/media/IRecordingConfigDispatcher;)V
-Landroid/media/IAudioService$Stub;
Landroid/media/IAudioService$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/media/IAudioService$Stub;->TRANSACTION_abandonAudioFocus:I
Landroid/media/IAudioService$Stub;->TRANSACTION_addMixForPolicy:I
@@ -38867,7 +36292,6 @@
Landroid/media/IAudioService$Stub;->TRANSACTION_unregisterAudioServerStateDispatcher:I
Landroid/media/IAudioService$Stub;->TRANSACTION_unregisterPlaybackCallback:I
Landroid/media/IAudioService$Stub;->TRANSACTION_unregisterRecordingCallback:I
-Landroid/media/IAudioService;
Landroid/media/IAudioService;->abandonAudioFocus(Landroid/media/IAudioFocusDispatcher;Ljava/lang/String;Landroid/media/AudioAttributes;Ljava/lang/String;)I
Landroid/media/IAudioService;->addMixForPolicy(Landroid/media/audiopolicy/AudioPolicyConfig;Landroid/media/audiopolicy/IAudioPolicyCallback;)I
Landroid/media/IAudioService;->adjustStreamVolume(IIILjava/lang/String;)V
@@ -38955,16 +36379,10 @@
Landroid/media/Image;->mCropRect:Landroid/graphics/Rect;
Landroid/media/Image;->mIsImageValid:Z
Landroid/media/Image;->throwISEIfImageIsInvalid()V
-Landroid/media/ImageReader$ListenerHandler;
-Landroid/media/ImageReader$ListenerHandler;-><init>(Landroid/os/Looper;)V
-Landroid/media/ImageReader$SurfaceImage$SurfacePlane;
-Landroid/media/ImageReader$SurfaceImage$SurfacePlane;-><init>(IILjava/nio/ByteBuffer;)V
Landroid/media/ImageReader$SurfaceImage$SurfacePlane;->clearBuffer()V
Landroid/media/ImageReader$SurfaceImage$SurfacePlane;->mBuffer:Ljava/nio/ByteBuffer;
Landroid/media/ImageReader$SurfaceImage$SurfacePlane;->mPixelStride:I
Landroid/media/ImageReader$SurfaceImage$SurfacePlane;->mRowStride:I
-Landroid/media/ImageReader$SurfaceImage;
-Landroid/media/ImageReader$SurfaceImage;-><init>(I)V
Landroid/media/ImageReader$SurfaceImage;->clearSurfacePlanes()V
Landroid/media/ImageReader$SurfaceImage;->getNativeContext()J
Landroid/media/ImageReader$SurfaceImage;->getOwner()Landroid/media/ImageReader;
@@ -39020,15 +36438,10 @@
Landroid/media/ImageReader;->newInstance(IIIIJ)Landroid/media/ImageReader;
Landroid/media/ImageReader;->postEventFromNative(Ljava/lang/Object;)V
Landroid/media/ImageReader;->releaseImage(Landroid/media/Image;)V
-Landroid/media/ImageWriter$ListenerHandler;
-Landroid/media/ImageWriter$ListenerHandler;-><init>(Landroid/os/Looper;)V
-Landroid/media/ImageWriter$WriterSurfaceImage$SurfacePlane;
-Landroid/media/ImageWriter$WriterSurfaceImage$SurfacePlane;-><init>(IILjava/nio/ByteBuffer;)V
Landroid/media/ImageWriter$WriterSurfaceImage$SurfacePlane;->clearBuffer()V
Landroid/media/ImageWriter$WriterSurfaceImage$SurfacePlane;->mBuffer:Ljava/nio/ByteBuffer;
Landroid/media/ImageWriter$WriterSurfaceImage$SurfacePlane;->mPixelStride:I
Landroid/media/ImageWriter$WriterSurfaceImage$SurfacePlane;->mRowStride:I
-Landroid/media/ImageWriter$WriterSurfaceImage;
Landroid/media/ImageWriter$WriterSurfaceImage;-><init>(Landroid/media/ImageWriter;)V
Landroid/media/ImageWriter$WriterSurfaceImage;->clearSurfacePlanes()V
Landroid/media/ImageWriter$WriterSurfaceImage;->DEFAULT_TIMESTAMP:J
@@ -39073,7 +36486,6 @@
Landroid/media/ImageWriter;->nativeQueueInputImage(JLandroid/media/Image;JIIIIII)V
Landroid/media/ImageWriter;->newInstance(Landroid/view/Surface;II)Landroid/media/ImageWriter;
Landroid/media/ImageWriter;->postEventFromNative(Ljava/lang/Object;)V
-Landroid/media/IMediaHTTPConnection$Stub$Proxy;
Landroid/media/IMediaHTTPConnection$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/media/IMediaHTTPConnection$Stub$Proxy;->connect(Ljava/lang/String;Ljava/lang/String;)Landroid/os/IBinder;
Landroid/media/IMediaHTTPConnection$Stub$Proxy;->disconnect()V
@@ -39083,7 +36495,6 @@
Landroid/media/IMediaHTTPConnection$Stub$Proxy;->getUri()Ljava/lang/String;
Landroid/media/IMediaHTTPConnection$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/media/IMediaHTTPConnection$Stub$Proxy;->readAt(JI)I
-Landroid/media/IMediaHTTPConnection$Stub;
Landroid/media/IMediaHTTPConnection$Stub;-><init>()V
Landroid/media/IMediaHTTPConnection$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/IMediaHTTPConnection;
Landroid/media/IMediaHTTPConnection$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -39093,53 +36504,42 @@
Landroid/media/IMediaHTTPConnection$Stub;->TRANSACTION_getSize:I
Landroid/media/IMediaHTTPConnection$Stub;->TRANSACTION_getUri:I
Landroid/media/IMediaHTTPConnection$Stub;->TRANSACTION_readAt:I
-Landroid/media/IMediaHTTPConnection;
Landroid/media/IMediaHTTPConnection;->connect(Ljava/lang/String;Ljava/lang/String;)Landroid/os/IBinder;
Landroid/media/IMediaHTTPConnection;->disconnect()V
Landroid/media/IMediaHTTPConnection;->getMIMEType()Ljava/lang/String;
Landroid/media/IMediaHTTPConnection;->getSize()J
Landroid/media/IMediaHTTPConnection;->getUri()Ljava/lang/String;
Landroid/media/IMediaHTTPConnection;->readAt(JI)I
-Landroid/media/IMediaHTTPService$Stub$Proxy;
Landroid/media/IMediaHTTPService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/media/IMediaHTTPService$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/media/IMediaHTTPService$Stub$Proxy;->makeHTTPConnection()Landroid/media/IMediaHTTPConnection;
Landroid/media/IMediaHTTPService$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/media/IMediaHTTPService$Stub;
Landroid/media/IMediaHTTPService$Stub;-><init>()V
Landroid/media/IMediaHTTPService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/IMediaHTTPService;
Landroid/media/IMediaHTTPService$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/media/IMediaHTTPService$Stub;->TRANSACTION_makeHTTPConnection:I
-Landroid/media/IMediaHTTPService;
Landroid/media/IMediaHTTPService;->makeHTTPConnection()Landroid/media/IMediaHTTPConnection;
-Landroid/media/IMediaResourceMonitor$Stub$Proxy;
Landroid/media/IMediaResourceMonitor$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/media/IMediaResourceMonitor$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/media/IMediaResourceMonitor$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/media/IMediaResourceMonitor$Stub$Proxy;->notifyResourceGranted(II)V
-Landroid/media/IMediaResourceMonitor$Stub;
Landroid/media/IMediaResourceMonitor$Stub;-><init>()V
Landroid/media/IMediaResourceMonitor$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/IMediaResourceMonitor;
Landroid/media/IMediaResourceMonitor$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/media/IMediaResourceMonitor$Stub;->TRANSACTION_notifyResourceGranted:I
-Landroid/media/IMediaResourceMonitor;
Landroid/media/IMediaResourceMonitor;->notifyResourceGranted(II)V
-Landroid/media/IMediaRouterClient$Stub$Proxy;
Landroid/media/IMediaRouterClient$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/media/IMediaRouterClient$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/media/IMediaRouterClient$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/media/IMediaRouterClient$Stub$Proxy;->onRestoreRoute()V
Landroid/media/IMediaRouterClient$Stub$Proxy;->onStateChanged()V
-Landroid/media/IMediaRouterClient$Stub;
Landroid/media/IMediaRouterClient$Stub;-><init>()V
Landroid/media/IMediaRouterClient$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/IMediaRouterClient;
Landroid/media/IMediaRouterClient$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/media/IMediaRouterClient$Stub;->TRANSACTION_onRestoreRoute:I
Landroid/media/IMediaRouterClient$Stub;->TRANSACTION_onStateChanged:I
-Landroid/media/IMediaRouterClient;
Landroid/media/IMediaRouterClient;->onRestoreRoute()V
Landroid/media/IMediaRouterClient;->onStateChanged()V
-Landroid/media/IMediaRouterService$Stub$Proxy;
Landroid/media/IMediaRouterService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/media/IMediaRouterService$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/media/IMediaRouterService$Stub$Proxy;->getState(Landroid/media/IMediaRouterClient;)Landroid/media/MediaRouterClientState;
@@ -39151,7 +36551,6 @@
Landroid/media/IMediaRouterService$Stub$Proxy;->setDiscoveryRequest(Landroid/media/IMediaRouterClient;IZ)V
Landroid/media/IMediaRouterService$Stub$Proxy;->setSelectedRoute(Landroid/media/IMediaRouterClient;Ljava/lang/String;Z)V
Landroid/media/IMediaRouterService$Stub$Proxy;->unregisterClient(Landroid/media/IMediaRouterClient;)V
-Landroid/media/IMediaRouterService$Stub;
Landroid/media/IMediaRouterService$Stub;-><init>()V
Landroid/media/IMediaRouterService$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/media/IMediaRouterService$Stub;->TRANSACTION_getState:I
@@ -39162,7 +36561,6 @@
Landroid/media/IMediaRouterService$Stub;->TRANSACTION_setDiscoveryRequest:I
Landroid/media/IMediaRouterService$Stub;->TRANSACTION_setSelectedRoute:I
Landroid/media/IMediaRouterService$Stub;->TRANSACTION_unregisterClient:I
-Landroid/media/IMediaRouterService;
Landroid/media/IMediaRouterService;->getState(Landroid/media/IMediaRouterClient;)Landroid/media/MediaRouterClientState;
Landroid/media/IMediaRouterService;->isPlaybackActive(Landroid/media/IMediaRouterClient;)Z
Landroid/media/IMediaRouterService;->registerClientAsUser(Landroid/media/IMediaRouterClient;Ljava/lang/String;I)V
@@ -39171,42 +36569,32 @@
Landroid/media/IMediaRouterService;->setDiscoveryRequest(Landroid/media/IMediaRouterClient;IZ)V
Landroid/media/IMediaRouterService;->setSelectedRoute(Landroid/media/IMediaRouterClient;Ljava/lang/String;Z)V
Landroid/media/IMediaRouterService;->unregisterClient(Landroid/media/IMediaRouterClient;)V
-Landroid/media/IMediaScannerListener$Stub$Proxy;
Landroid/media/IMediaScannerListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/media/IMediaScannerListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/media/IMediaScannerListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/media/IMediaScannerListener$Stub$Proxy;->scanCompleted(Ljava/lang/String;Landroid/net/Uri;)V
-Landroid/media/IMediaScannerListener$Stub;
Landroid/media/IMediaScannerListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/IMediaScannerListener;
Landroid/media/IMediaScannerListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/media/IMediaScannerListener$Stub;->TRANSACTION_scanCompleted:I
-Landroid/media/IMediaScannerListener;
Landroid/media/IMediaScannerListener;->scanCompleted(Ljava/lang/String;Landroid/net/Uri;)V
-Landroid/media/IMediaScannerService$Stub$Proxy;
Landroid/media/IMediaScannerService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/media/IMediaScannerService$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/media/IMediaScannerService$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/media/IMediaScannerService$Stub$Proxy;->requestScanFile(Ljava/lang/String;Ljava/lang/String;Landroid/media/IMediaScannerListener;)V
Landroid/media/IMediaScannerService$Stub$Proxy;->scanFile(Ljava/lang/String;Ljava/lang/String;)V
-Landroid/media/IMediaScannerService$Stub;
Landroid/media/IMediaScannerService$Stub;-><init>()V
Landroid/media/IMediaScannerService$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/media/IMediaScannerService$Stub;->TRANSACTION_requestScanFile:I
Landroid/media/IMediaScannerService$Stub;->TRANSACTION_scanFile:I
-Landroid/media/IMediaScannerService;
-Landroid/media/IPlaybackConfigDispatcher$Stub$Proxy;
Landroid/media/IPlaybackConfigDispatcher$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/media/IPlaybackConfigDispatcher$Stub$Proxy;->dispatchPlaybackConfigChange(Ljava/util/List;Z)V
Landroid/media/IPlaybackConfigDispatcher$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/media/IPlaybackConfigDispatcher$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/media/IPlaybackConfigDispatcher$Stub;
Landroid/media/IPlaybackConfigDispatcher$Stub;-><init>()V
Landroid/media/IPlaybackConfigDispatcher$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/IPlaybackConfigDispatcher;
Landroid/media/IPlaybackConfigDispatcher$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/media/IPlaybackConfigDispatcher$Stub;->TRANSACTION_dispatchPlaybackConfigChange:I
-Landroid/media/IPlaybackConfigDispatcher;
Landroid/media/IPlaybackConfigDispatcher;->dispatchPlaybackConfigChange(Ljava/util/List;Z)V
-Landroid/media/IPlayer$Stub$Proxy;
Landroid/media/IPlayer$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/media/IPlayer$Stub$Proxy;->applyVolumeShaper(Landroid/media/VolumeShaper$Configuration;Landroid/media/VolumeShaper$Operation;)V
Landroid/media/IPlayer$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
@@ -39217,7 +36605,6 @@
Landroid/media/IPlayer$Stub$Proxy;->setVolume(F)V
Landroid/media/IPlayer$Stub$Proxy;->start()V
Landroid/media/IPlayer$Stub$Proxy;->stop()V
-Landroid/media/IPlayer$Stub;
Landroid/media/IPlayer$Stub;-><init>()V
Landroid/media/IPlayer$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/IPlayer;
Landroid/media/IPlayer$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -39228,7 +36615,6 @@
Landroid/media/IPlayer$Stub;->TRANSACTION_setVolume:I
Landroid/media/IPlayer$Stub;->TRANSACTION_start:I
Landroid/media/IPlayer$Stub;->TRANSACTION_stop:I
-Landroid/media/IPlayer;
Landroid/media/IPlayer;->applyVolumeShaper(Landroid/media/VolumeShaper$Configuration;Landroid/media/VolumeShaper$Operation;)V
Landroid/media/IPlayer;->pause()V
Landroid/media/IPlayer;->setPan(F)V
@@ -39236,30 +36622,23 @@
Landroid/media/IPlayer;->setVolume(F)V
Landroid/media/IPlayer;->start()V
Landroid/media/IPlayer;->stop()V
-Landroid/media/IRecordingConfigDispatcher$Stub$Proxy;
Landroid/media/IRecordingConfigDispatcher$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/media/IRecordingConfigDispatcher$Stub$Proxy;->dispatchRecordingConfigChange(Ljava/util/List;)V
Landroid/media/IRecordingConfigDispatcher$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/media/IRecordingConfigDispatcher$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/media/IRecordingConfigDispatcher$Stub;
Landroid/media/IRecordingConfigDispatcher$Stub;-><init>()V
Landroid/media/IRecordingConfigDispatcher$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/IRecordingConfigDispatcher;
Landroid/media/IRecordingConfigDispatcher$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/media/IRecordingConfigDispatcher$Stub;->TRANSACTION_dispatchRecordingConfigChange:I
-Landroid/media/IRecordingConfigDispatcher;
Landroid/media/IRecordingConfigDispatcher;->dispatchRecordingConfigChange(Ljava/util/List;)V
-Landroid/media/IRemoteDisplayCallback$Stub$Proxy;
Landroid/media/IRemoteDisplayCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/media/IRemoteDisplayCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/media/IRemoteDisplayCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/media/IRemoteDisplayCallback$Stub$Proxy;->onStateChanged(Landroid/media/RemoteDisplayState;)V
-Landroid/media/IRemoteDisplayCallback$Stub;
Landroid/media/IRemoteDisplayCallback$Stub;-><init>()V
Landroid/media/IRemoteDisplayCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/IRemoteDisplayCallback;
Landroid/media/IRemoteDisplayCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/media/IRemoteDisplayCallback$Stub;->TRANSACTION_onStateChanged:I
-Landroid/media/IRemoteDisplayCallback;
-Landroid/media/IRemoteDisplayProvider$Stub$Proxy;
Landroid/media/IRemoteDisplayProvider$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/media/IRemoteDisplayProvider$Stub$Proxy;->adjustVolume(Ljava/lang/String;I)V
Landroid/media/IRemoteDisplayProvider$Stub$Proxy;->connect(Ljava/lang/String;)V
@@ -39269,7 +36648,6 @@
Landroid/media/IRemoteDisplayProvider$Stub$Proxy;->setCallback(Landroid/media/IRemoteDisplayCallback;)V
Landroid/media/IRemoteDisplayProvider$Stub$Proxy;->setDiscoveryMode(I)V
Landroid/media/IRemoteDisplayProvider$Stub$Proxy;->setVolume(Ljava/lang/String;I)V
-Landroid/media/IRemoteDisplayProvider$Stub;
Landroid/media/IRemoteDisplayProvider$Stub;-><init>()V
Landroid/media/IRemoteDisplayProvider$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/IRemoteDisplayProvider;
Landroid/media/IRemoteDisplayProvider$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -39279,41 +36657,33 @@
Landroid/media/IRemoteDisplayProvider$Stub;->TRANSACTION_setCallback:I
Landroid/media/IRemoteDisplayProvider$Stub;->TRANSACTION_setDiscoveryMode:I
Landroid/media/IRemoteDisplayProvider$Stub;->TRANSACTION_setVolume:I
-Landroid/media/IRemoteDisplayProvider;
Landroid/media/IRemoteDisplayProvider;->adjustVolume(Ljava/lang/String;I)V
Landroid/media/IRemoteDisplayProvider;->connect(Ljava/lang/String;)V
Landroid/media/IRemoteDisplayProvider;->disconnect(Ljava/lang/String;)V
Landroid/media/IRemoteDisplayProvider;->setCallback(Landroid/media/IRemoteDisplayCallback;)V
Landroid/media/IRemoteDisplayProvider;->setDiscoveryMode(I)V
Landroid/media/IRemoteDisplayProvider;->setVolume(Ljava/lang/String;I)V
-Landroid/media/IRemoteVolumeController$Stub$Proxy;
Landroid/media/IRemoteVolumeController$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/media/IRemoteVolumeController$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/media/IRemoteVolumeController$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/media/IRemoteVolumeController$Stub$Proxy;->remoteVolumeChanged(Landroid/media/session/ISessionController;I)V
Landroid/media/IRemoteVolumeController$Stub$Proxy;->updateRemoteController(Landroid/media/session/ISessionController;)V
-Landroid/media/IRemoteVolumeController$Stub;
Landroid/media/IRemoteVolumeController$Stub;-><init>()V
Landroid/media/IRemoteVolumeController$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/IRemoteVolumeController;
Landroid/media/IRemoteVolumeController$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/media/IRemoteVolumeController$Stub;->TRANSACTION_remoteVolumeChanged:I
Landroid/media/IRemoteVolumeController$Stub;->TRANSACTION_updateRemoteController:I
-Landroid/media/IRemoteVolumeController;
Landroid/media/IRemoteVolumeController;->remoteVolumeChanged(Landroid/media/session/ISessionController;I)V
Landroid/media/IRemoteVolumeController;->updateRemoteController(Landroid/media/session/ISessionController;)V
-Landroid/media/IRemoteVolumeObserver$Stub$Proxy;
Landroid/media/IRemoteVolumeObserver$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/media/IRemoteVolumeObserver$Stub$Proxy;->dispatchRemoteVolumeUpdate(II)V
Landroid/media/IRemoteVolumeObserver$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/media/IRemoteVolumeObserver$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/media/IRemoteVolumeObserver$Stub;
Landroid/media/IRemoteVolumeObserver$Stub;-><init>()V
Landroid/media/IRemoteVolumeObserver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/IRemoteVolumeObserver;
Landroid/media/IRemoteVolumeObserver$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/media/IRemoteVolumeObserver$Stub;->TRANSACTION_dispatchRemoteVolumeUpdate:I
-Landroid/media/IRemoteVolumeObserver;
Landroid/media/IRemoteVolumeObserver;->dispatchRemoteVolumeUpdate(II)V
-Landroid/media/IRingtonePlayer$Stub$Proxy;
Landroid/media/IRingtonePlayer$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/media/IRingtonePlayer$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/media/IRingtonePlayer$Stub$Proxy;->getTitle(Landroid/net/Uri;)Ljava/lang/String;
@@ -39325,7 +36695,6 @@
Landroid/media/IRingtonePlayer$Stub$Proxy;->setPlaybackProperties(Landroid/os/IBinder;FZ)V
Landroid/media/IRingtonePlayer$Stub$Proxy;->stop(Landroid/os/IBinder;)V
Landroid/media/IRingtonePlayer$Stub$Proxy;->stopAsync()V
-Landroid/media/IRingtonePlayer$Stub;
Landroid/media/IRingtonePlayer$Stub;-><init>()V
Landroid/media/IRingtonePlayer$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/IRingtonePlayer;
Landroid/media/IRingtonePlayer$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -39337,7 +36706,6 @@
Landroid/media/IRingtonePlayer$Stub;->TRANSACTION_setPlaybackProperties:I
Landroid/media/IRingtonePlayer$Stub;->TRANSACTION_stop:I
Landroid/media/IRingtonePlayer$Stub;->TRANSACTION_stopAsync:I
-Landroid/media/IRingtonePlayer;
Landroid/media/IRingtonePlayer;->getTitle(Landroid/net/Uri;)Ljava/lang/String;
Landroid/media/IRingtonePlayer;->isPlaying(Landroid/os/IBinder;)Z
Landroid/media/IRingtonePlayer;->openRingtone(Landroid/net/Uri;)Landroid/os/ParcelFileDescriptor;
@@ -39345,19 +36713,15 @@
Landroid/media/IRingtonePlayer;->setPlaybackProperties(Landroid/os/IBinder;FZ)V
Landroid/media/IRingtonePlayer;->stop(Landroid/os/IBinder;)V
Landroid/media/IRingtonePlayer;->stopAsync()V
-Landroid/media/ISessionTokensListener$Stub$Proxy;
Landroid/media/ISessionTokensListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/media/ISessionTokensListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/media/ISessionTokensListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/media/ISessionTokensListener$Stub$Proxy;->onSessionTokensChanged(Ljava/util/List;)V
-Landroid/media/ISessionTokensListener$Stub;
Landroid/media/ISessionTokensListener$Stub;-><init>()V
Landroid/media/ISessionTokensListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/ISessionTokensListener;
Landroid/media/ISessionTokensListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/media/ISessionTokensListener$Stub;->TRANSACTION_onSessionTokensChanged:I
-Landroid/media/ISessionTokensListener;
Landroid/media/ISessionTokensListener;->onSessionTokensChanged(Ljava/util/List;)V
-Landroid/media/IVolumeController$Stub$Proxy;
Landroid/media/IVolumeController$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/media/IVolumeController$Stub$Proxy;->dismiss()V
Landroid/media/IVolumeController$Stub$Proxy;->displaySafeVolumeWarning(I)V
@@ -39367,7 +36731,6 @@
Landroid/media/IVolumeController$Stub$Proxy;->setA11yMode(I)V
Landroid/media/IVolumeController$Stub$Proxy;->setLayoutDirection(I)V
Landroid/media/IVolumeController$Stub$Proxy;->volumeChanged(II)V
-Landroid/media/IVolumeController$Stub;
Landroid/media/IVolumeController$Stub;-><init>()V
Landroid/media/IVolumeController$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/media/IVolumeController$Stub;->TRANSACTION_dismiss:I
@@ -39376,15 +36739,12 @@
Landroid/media/IVolumeController$Stub;->TRANSACTION_setA11yMode:I
Landroid/media/IVolumeController$Stub;->TRANSACTION_setLayoutDirection:I
Landroid/media/IVolumeController$Stub;->TRANSACTION_volumeChanged:I
-Landroid/media/IVolumeController;
Landroid/media/IVolumeController;->dismiss()V
Landroid/media/IVolumeController;->displaySafeVolumeWarning(I)V
Landroid/media/IVolumeController;->masterMuteChanged(I)V
Landroid/media/IVolumeController;->setA11yMode(I)V
Landroid/media/IVolumeController;->setLayoutDirection(I)V
Landroid/media/IVolumeController;->volumeChanged(II)V
-Landroid/media/JetPlayer$NativeEventHandler;
-Landroid/media/JetPlayer$NativeEventHandler;-><init>(Landroid/media/JetPlayer;Landroid/os/Looper;)V
Landroid/media/JetPlayer$NativeEventHandler;->mJet:Landroid/media/JetPlayer;
Landroid/media/JetPlayer;-><init>()V
Landroid/media/JetPlayer;->JET_EVENT:I
@@ -39426,11 +36786,9 @@
Landroid/media/JetPlayer;->native_triggerClip(I)Z
Landroid/media/JetPlayer;->singletonRef:Landroid/media/JetPlayer;
Landroid/media/JetPlayer;->TAG:Ljava/lang/String;
-Landroid/media/Media2DataSource;
Landroid/media/Media2DataSource;-><init>()V
Landroid/media/Media2DataSource;->getSize()J
Landroid/media/Media2DataSource;->readAt(J[BII)I
-Landroid/media/Media2HTTPConnection;
Landroid/media/Media2HTTPConnection;-><init>()V
Landroid/media/Media2HTTPConnection;->connect(Ljava/lang/String;Ljava/lang/String;)Z
Landroid/media/Media2HTTPConnection;->CONNECT_TIMEOUT_MS:I
@@ -39457,7 +36815,6 @@
Landroid/media/Media2HTTPConnection;->TAG:Ljava/lang/String;
Landroid/media/Media2HTTPConnection;->teardownConnection()V
Landroid/media/Media2HTTPConnection;->VERBOSE:Z
-Landroid/media/Media2HTTPService;
Landroid/media/Media2HTTPService;-><init>(Ljava/util/List;)V
Landroid/media/Media2HTTPService;->createHTTPService(Ljava/lang/String;)Landroid/media/Media2HTTPService;
Landroid/media/Media2HTTPService;->createHTTPService(Ljava/lang/String;Ljava/util/List;)Landroid/media/Media2HTTPService;
@@ -39465,8 +36822,6 @@
Landroid/media/Media2HTTPService;->mCookies:Ljava/util/List;
Landroid/media/Media2HTTPService;->mCookieStoreInitialized:Ljava/lang/Boolean;
Landroid/media/Media2HTTPService;->TAG:Ljava/lang/String;
-Landroid/media/MediaActionSound$SoundState;
-Landroid/media/MediaActionSound$SoundState;-><init>(I)V
Landroid/media/MediaActionSound$SoundState;->id:I
Landroid/media/MediaActionSound$SoundState;->name:I
Landroid/media/MediaActionSound$SoundState;->state:I
@@ -39482,7 +36837,6 @@
Landroid/media/MediaActionSound;->STATE_LOADING_PLAY_REQUESTED:I
Landroid/media/MediaActionSound;->STATE_NOT_LOADED:I
Landroid/media/MediaActionSound;->TAG:Ljava/lang/String;
-Landroid/media/MediaBrowser2$BrowserCallback;
Landroid/media/MediaBrowser2$BrowserCallback;-><init>()V
Landroid/media/MediaBrowser2$BrowserCallback;->onChildrenChanged(Landroid/media/MediaBrowser2;Ljava/lang/String;ILandroid/os/Bundle;)V
Landroid/media/MediaBrowser2$BrowserCallback;->onGetChildrenDone(Landroid/media/MediaBrowser2;Ljava/lang/String;IILjava/util/List;Landroid/os/Bundle;)V
@@ -39490,7 +36844,6 @@
Landroid/media/MediaBrowser2$BrowserCallback;->onGetLibraryRootDone(Landroid/media/MediaBrowser2;Landroid/os/Bundle;Ljava/lang/String;Landroid/os/Bundle;)V
Landroid/media/MediaBrowser2$BrowserCallback;->onGetSearchResultDone(Landroid/media/MediaBrowser2;Ljava/lang/String;IILjava/util/List;Landroid/os/Bundle;)V
Landroid/media/MediaBrowser2$BrowserCallback;->onSearchResultChanged(Landroid/media/MediaBrowser2;Ljava/lang/String;ILandroid/os/Bundle;)V
-Landroid/media/MediaBrowser2;
Landroid/media/MediaBrowser2;-><init>(Landroid/content/Context;Landroid/media/SessionToken2;Ljava/util/concurrent/Executor;Landroid/media/MediaBrowser2$BrowserCallback;)V
Landroid/media/MediaBrowser2;->createProvider(Landroid/content/Context;Landroid/media/SessionToken2;Ljava/util/concurrent/Executor;Landroid/media/MediaController2$ControllerCallback;)Landroid/media/update/MediaBrowser2Provider;
Landroid/media/MediaBrowser2;->getChildren(Ljava/lang/String;IILandroid/os/Bundle;)V
@@ -39501,18 +36854,13 @@
Landroid/media/MediaBrowser2;->search(Ljava/lang/String;Landroid/os/Bundle;)V
Landroid/media/MediaBrowser2;->subscribe(Ljava/lang/String;Landroid/os/Bundle;)V
Landroid/media/MediaBrowser2;->unsubscribe(Ljava/lang/String;)V
-Landroid/media/MediaCas$EventHandler;
-Landroid/media/MediaCas$EventHandler;-><init>(Landroid/os/Looper;)V
Landroid/media/MediaCas$EventHandler;->MSG_CAS_EVENT:I
-Landroid/media/MediaCas$OpenSessionCallback;
-Landroid/media/MediaCas$OpenSessionCallback;-><init>()V
Landroid/media/MediaCas$OpenSessionCallback;->mSession:Landroid/media/MediaCas$Session;
Landroid/media/MediaCas$OpenSessionCallback;->mStatus:I
Landroid/media/MediaCas$PluginDescriptor;-><init>()V
Landroid/media/MediaCas$PluginDescriptor;-><init>(Landroid/hardware/cas/V1_0/HidlCasPluginDescriptor;)V
Landroid/media/MediaCas$PluginDescriptor;->mCASystemId:I
Landroid/media/MediaCas$PluginDescriptor;->mName:Ljava/lang/String;
-Landroid/media/MediaCas$Session;-><init>(Ljava/util/ArrayList;)V
Landroid/media/MediaCas$Session;->mSessionId:Ljava/util/ArrayList;
Landroid/media/MediaCas;->cleanupAndRethrowIllegalState()V
Landroid/media/MediaCas;->createFromSessionId(Ljava/util/ArrayList;)Landroid/media/MediaCas$Session;
@@ -39541,46 +36889,35 @@
Landroid/media/MediaCasStateException;->mErrorCode:I
Landroid/media/MediaCasStateException;->throwExceptionIfNeeded(I)V
Landroid/media/MediaCasStateException;->throwExceptionIfNeeded(ILjava/lang/String;)V
-Landroid/media/MediaCodec$BufferFlag;
Landroid/media/MediaCodec$BufferInfo;->dup()Landroid/media/MediaCodec$BufferInfo;
-Landroid/media/MediaCodec$BufferMap$CodecBuffer;
Landroid/media/MediaCodec$BufferMap$CodecBuffer;-><init>()V
Landroid/media/MediaCodec$BufferMap$CodecBuffer;->free()V
Landroid/media/MediaCodec$BufferMap$CodecBuffer;->mByteBuffer:Ljava/nio/ByteBuffer;
Landroid/media/MediaCodec$BufferMap$CodecBuffer;->mImage:Landroid/media/Image;
Landroid/media/MediaCodec$BufferMap$CodecBuffer;->setByteBuffer(Ljava/nio/ByteBuffer;)V
Landroid/media/MediaCodec$BufferMap$CodecBuffer;->setImage(Landroid/media/Image;)V
-Landroid/media/MediaCodec$BufferMap;
Landroid/media/MediaCodec$BufferMap;-><init>()V
Landroid/media/MediaCodec$BufferMap;->clear()V
Landroid/media/MediaCodec$BufferMap;->mMap:Ljava/util/Map;
Landroid/media/MediaCodec$BufferMap;->put(ILandroid/media/Image;)V
Landroid/media/MediaCodec$BufferMap;->put(ILjava/nio/ByteBuffer;)V
Landroid/media/MediaCodec$BufferMap;->remove(I)V
-Landroid/media/MediaCodec$CodecException$ReasonCode;
Landroid/media/MediaCodec$CodecException;->ACTION_RECOVERABLE:I
Landroid/media/MediaCodec$CodecException;->ACTION_TRANSIENT:I
Landroid/media/MediaCodec$CodecException;->mActionCode:I
Landroid/media/MediaCodec$CodecException;->mDiagnosticInfo:Ljava/lang/String;
Landroid/media/MediaCodec$CodecException;->mErrorCode:I
-Landroid/media/MediaCodec$ConfigureFlag;
-Landroid/media/MediaCodec$CryptoException$CryptoErrorCode;
Landroid/media/MediaCodec$CryptoException;->mErrorCode:I
Landroid/media/MediaCodec$CryptoInfo$Pattern;->mEncryptBlocks:I
Landroid/media/MediaCodec$CryptoInfo$Pattern;->mSkipBlocks:I
Landroid/media/MediaCodec$CryptoInfo;->pattern:Landroid/media/MediaCodec$CryptoInfo$Pattern;
Landroid/media/MediaCodec$CryptoInfo;->setPattern(II)V
Landroid/media/MediaCodec$CryptoInfo;->zeroPattern:Landroid/media/MediaCodec$CryptoInfo$Pattern;
-Landroid/media/MediaCodec$EventHandler;
-Landroid/media/MediaCodec$EventHandler;-><init>(Landroid/media/MediaCodec;Landroid/os/Looper;)V
Landroid/media/MediaCodec$EventHandler;->handleCallback(Landroid/os/Message;)V
Landroid/media/MediaCodec$EventHandler;->mCodec:Landroid/media/MediaCodec;
-Landroid/media/MediaCodec$MediaImage$MediaPlane;
-Landroid/media/MediaCodec$MediaImage$MediaPlane;-><init>(Ljava/nio/ByteBuffer;II)V
Landroid/media/MediaCodec$MediaImage$MediaPlane;->mColInc:I
Landroid/media/MediaCodec$MediaImage$MediaPlane;->mData:Ljava/nio/ByteBuffer;
Landroid/media/MediaCodec$MediaImage$MediaPlane;->mRowInc:I
-Landroid/media/MediaCodec$MediaImage;
Landroid/media/MediaCodec$MediaImage;-><init>(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;ZJIILandroid/graphics/Rect;)V
Landroid/media/MediaCodec$MediaImage;->getScalingMode()I
Landroid/media/MediaCodec$MediaImage;->getTransform()I
@@ -39598,11 +36935,8 @@
Landroid/media/MediaCodec$MediaImage;->mYOffset:I
Landroid/media/MediaCodec$MediaImage;->TYPE_YUV:I
Landroid/media/MediaCodec$MetricsConstants;-><init>()V
-Landroid/media/MediaCodec$OutputBufferInfo;
-Landroid/media/MediaCodec$PersistentSurface;
Landroid/media/MediaCodec$PersistentSurface;-><init>()V
Landroid/media/MediaCodec$PersistentSurface;->mPersistentObject:J
-Landroid/media/MediaCodec$VideoScalingMode;
Landroid/media/MediaCodec;-><init>(Ljava/lang/String;ZZ)V
Landroid/media/MediaCodec;->BUFFER_FLAG_MUXER_DATA:I
Landroid/media/MediaCodec;->cacheBuffers(Z)V
@@ -39728,7 +37062,6 @@
Landroid/media/MediaCodecInfo$EncoderCapabilities;->parseFromInfo(Landroid/media/MediaFormat;)V
Landroid/media/MediaCodecInfo$EncoderCapabilities;->supports(Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/Integer;)Z
Landroid/media/MediaCodecInfo$EncoderCapabilities;->supportsFormat(Landroid/media/MediaFormat;)Z
-Landroid/media/MediaCodecInfo$Feature;
Landroid/media/MediaCodecInfo$Feature;-><init>(Ljava/lang/String;IZ)V
Landroid/media/MediaCodecInfo$Feature;->mDefault:Z
Landroid/media/MediaCodecInfo$Feature;->mName:Ljava/lang/String;
@@ -39812,7 +37145,6 @@
Landroid/media/MediaCodecList;->sInitLock:Ljava/lang/Object;
Landroid/media/MediaCodecList;->sRegularCodecInfos:[Landroid/media/MediaCodecInfo;
Landroid/media/MediaCodecList;->TAG:Ljava/lang/String;
-Landroid/media/MediaController2$ControllerCallback;
Landroid/media/MediaController2$ControllerCallback;-><init>()V
Landroid/media/MediaController2$ControllerCallback;->onAllowedCommandsChanged(Landroid/media/MediaController2;Landroid/media/SessionCommandGroup2;)V
Landroid/media/MediaController2$ControllerCallback;->onBufferingStateChanged(Landroid/media/MediaController2;Landroid/media/MediaItem2;I)V
@@ -39830,7 +37162,6 @@
Landroid/media/MediaController2$ControllerCallback;->onRepeatModeChanged(Landroid/media/MediaController2;I)V
Landroid/media/MediaController2$ControllerCallback;->onSeekCompleted(Landroid/media/MediaController2;J)V
Landroid/media/MediaController2$ControllerCallback;->onShuffleModeChanged(Landroid/media/MediaController2;I)V
-Landroid/media/MediaController2$PlaybackInfo;
Landroid/media/MediaController2$PlaybackInfo;-><init>(Landroid/media/update/MediaController2Provider$PlaybackInfoProvider;)V
Landroid/media/MediaController2$PlaybackInfo;->getAudioAttributes()Landroid/media/AudioAttributes;
Landroid/media/MediaController2$PlaybackInfo;->getControlType()I
@@ -39841,7 +37172,6 @@
Landroid/media/MediaController2$PlaybackInfo;->mProvider:Landroid/media/update/MediaController2Provider$PlaybackInfoProvider;
Landroid/media/MediaController2$PlaybackInfo;->PLAYBACK_TYPE_LOCAL:I
Landroid/media/MediaController2$PlaybackInfo;->PLAYBACK_TYPE_REMOTE:I
-Landroid/media/MediaController2;
Landroid/media/MediaController2;-><init>(Landroid/content/Context;Landroid/media/SessionToken2;Ljava/util/concurrent/Executor;Landroid/media/MediaController2$ControllerCallback;)V
Landroid/media/MediaController2;->addPlaylistItem(ILandroid/media/MediaItem2;)V
Landroid/media/MediaController2;->adjustVolume(II)V
@@ -39924,32 +37254,21 @@
Landroid/media/MediaDescription;->mMediaUri:Landroid/net/Uri;
Landroid/media/MediaDescription;->mSubtitle:Ljava/lang/CharSequence;
Landroid/media/MediaDescription;->mTitle:Ljava/lang/CharSequence;
-Landroid/media/MediaDrm$ArrayProperty;
-Landroid/media/MediaDrm$Certificate;
Landroid/media/MediaDrm$Certificate;-><init>()V
Landroid/media/MediaDrm$Certificate;->mCertificateData:[B
Landroid/media/MediaDrm$Certificate;->mWrappedKey:[B
-Landroid/media/MediaDrm$CertificateRequest;
Landroid/media/MediaDrm$CertificateRequest;-><init>([BLjava/lang/String;)V
Landroid/media/MediaDrm$CertificateRequest;->mData:[B
Landroid/media/MediaDrm$CertificateRequest;->mDefaultUrl:Ljava/lang/String;
-Landroid/media/MediaDrm$CertificateType;
-Landroid/media/MediaDrm$CryptoSession;-><init>([BLjava/lang/String;Ljava/lang/String;)V
Landroid/media/MediaDrm$CryptoSession;->mSessionId:[B
-Landroid/media/MediaDrm$DrmEvent;
-Landroid/media/MediaDrm$EventHandler;
-Landroid/media/MediaDrm$EventHandler;-><init>(Landroid/media/MediaDrm;Landroid/os/Looper;)V
Landroid/media/MediaDrm$EventHandler;->mMediaDrm:Landroid/media/MediaDrm;
-Landroid/media/MediaDrm$KeyRequest$RequestType;
Landroid/media/MediaDrm$KeyRequest;-><init>()V
Landroid/media/MediaDrm$KeyRequest;->mData:[B
Landroid/media/MediaDrm$KeyRequest;->mDefaultUrl:Ljava/lang/String;
Landroid/media/MediaDrm$KeyRequest;->mRequestType:I
-Landroid/media/MediaDrm$KeyStatus$KeyStatusCode;
Landroid/media/MediaDrm$KeyStatus;-><init>([BI)V
Landroid/media/MediaDrm$KeyStatus;->mKeyId:[B
Landroid/media/MediaDrm$KeyStatus;->mStatusCode:I
-Landroid/media/MediaDrm$KeyType;
Landroid/media/MediaDrm$MediaDrmStateException;-><init>(ILjava/lang/String;)V
Landroid/media/MediaDrm$MediaDrmStateException;->getErrorCode()I
Landroid/media/MediaDrm$MediaDrmStateException;->mDiagnosticInfo:Ljava/lang/String;
@@ -39958,7 +37277,6 @@
Landroid/media/MediaDrm$ProvisionRequest;-><init>()V
Landroid/media/MediaDrm$ProvisionRequest;->mData:[B
Landroid/media/MediaDrm$ProvisionRequest;->mDefaultUrl:Ljava/lang/String;
-Landroid/media/MediaDrm$StringProperty;
Landroid/media/MediaDrm;->CERTIFICATE_TYPE_NONE:I
Landroid/media/MediaDrm;->CERTIFICATE_TYPE_X509:I
Landroid/media/MediaDrm;->decryptNative(Landroid/media/MediaDrm;[B[B[B[B)[B
@@ -39997,8 +37315,6 @@
Landroid/media/MediaExtractor$CasInfo;->mSession:Landroid/media/MediaCas$Session;
Landroid/media/MediaExtractor$CasInfo;->mSystemId:I
Landroid/media/MediaExtractor$MetricsConstants;-><init>()V
-Landroid/media/MediaExtractor$SampleFlag;
-Landroid/media/MediaExtractor$SeekMode;
Landroid/media/MediaExtractor;->getFileFormatNative()Ljava/util/Map;
Landroid/media/MediaExtractor;->getTrackFormatNative(I)Ljava/util/Map;
Landroid/media/MediaExtractor;->mMediaCas:Landroid/media/MediaCas;
@@ -40010,9 +37326,7 @@
Landroid/media/MediaExtractor;->native_init()V
Landroid/media/MediaExtractor;->native_setup()V
Landroid/media/MediaExtractor;->toByteArray([B)Ljava/util/ArrayList;
-Landroid/media/MediaFile$MediaFileType;
Landroid/media/MediaFile$MediaFileType;-><init>(ILjava/lang/String;)V
-Landroid/media/MediaFile;
Landroid/media/MediaFile;->addFileType(Ljava/lang/String;ILjava/lang/String;IZ)V
Landroid/media/MediaFile;->FILE_TYPE_3GPP2:I
Landroid/media/MediaFile;->FILE_TYPE_3GPP:I
@@ -40090,9 +37404,6 @@
Landroid/media/MediaFile;->LAST_VIDEO_FILE_TYPE2:I
Landroid/media/MediaFile;->LAST_VIDEO_FILE_TYPE:I
Landroid/media/MediaFile;->sMimeTypeMap:Ljava/util/HashMap;
-Landroid/media/MediaFormat$ColorRange;
-Landroid/media/MediaFormat$ColorStandard;
-Landroid/media/MediaFormat$ColorTransfer;
Landroid/media/MediaFormat;-><init>(Ljava/util/Map;)V
Landroid/media/MediaFormat;->getInteger(Ljava/lang/String;I)I
Landroid/media/MediaFormat;->KEY_CA_SESSION_ID:Ljava/lang/String;
@@ -40100,7 +37411,6 @@
Landroid/media/MediaFormat;->KEY_FEATURE_:Ljava/lang/String;
Landroid/media/MediaFormat;->KEY_IS_TIMED_TEXT:Ljava/lang/String;
Landroid/media/MediaFormat;->KEY_MAX_BIT_RATE:Ljava/lang/String;
-Landroid/media/MediaHTTPConnection;
Landroid/media/MediaHTTPConnection;->CONNECT_TIMEOUT_MS:I
Landroid/media/MediaHTTPConnection;->convertHeaderStringToMap(Ljava/lang/String;)Ljava/util/Map;
Landroid/media/MediaHTTPConnection;->filterOutInternalHeaders(Ljava/lang/String;Ljava/lang/String;)Z
@@ -40121,14 +37431,12 @@
Landroid/media/MediaHTTPConnection;->TAG:Ljava/lang/String;
Landroid/media/MediaHTTPConnection;->teardownConnection()V
Landroid/media/MediaHTTPConnection;->VERBOSE:Z
-Landroid/media/MediaHTTPService;
Landroid/media/MediaHTTPService;-><init>(Ljava/util/List;)V
Landroid/media/MediaHTTPService;->createHttpServiceBinderIfNecessary(Ljava/lang/String;Ljava/util/List;)Landroid/os/IBinder;
Landroid/media/MediaHTTPService;->makeHTTPConnection()Landroid/media/IMediaHTTPConnection;
Landroid/media/MediaHTTPService;->mCookies:Ljava/util/List;
Landroid/media/MediaHTTPService;->mCookieStoreInitialized:Ljava/lang/Boolean;
Landroid/media/MediaHTTPService;->TAG:Ljava/lang/String;
-Landroid/media/MediaInserter;
Landroid/media/MediaInserter;-><init>(Landroid/content/ContentProviderClient;I)V
Landroid/media/MediaInserter;->flush(Landroid/net/Uri;Ljava/util/List;)V
Landroid/media/MediaInserter;->flushAllPriority()V
@@ -40139,15 +37447,12 @@
Landroid/media/MediaInserter;->mPriorityRowMap:Ljava/util/HashMap;
Landroid/media/MediaInserter;->mProvider:Landroid/content/ContentProviderClient;
Landroid/media/MediaInserter;->mRowMap:Ljava/util/HashMap;
-Landroid/media/MediaItem2$Builder;
Landroid/media/MediaItem2$Builder;-><init>(I)V
Landroid/media/MediaItem2$Builder;->build()Landroid/media/MediaItem2;
Landroid/media/MediaItem2$Builder;->mProvider:Landroid/media/update/MediaItem2Provider$BuilderProvider;
Landroid/media/MediaItem2$Builder;->setDataSourceDesc(Landroid/media/DataSourceDesc;)Landroid/media/MediaItem2$Builder;
Landroid/media/MediaItem2$Builder;->setMediaId(Ljava/lang/String;)Landroid/media/MediaItem2$Builder;
Landroid/media/MediaItem2$Builder;->setMetadata(Landroid/media/MediaMetadata2;)Landroid/media/MediaItem2$Builder;
-Landroid/media/MediaItem2$Flags;
-Landroid/media/MediaItem2;
Landroid/media/MediaItem2;-><init>(Landroid/media/update/MediaItem2Provider;)V
Landroid/media/MediaItem2;->FLAG_BROWSABLE:I
Landroid/media/MediaItem2;->FLAG_PLAYABLE:I
@@ -40162,7 +37467,6 @@
Landroid/media/MediaItem2;->mProvider:Landroid/media/update/MediaItem2Provider;
Landroid/media/MediaItem2;->setMetadata(Landroid/media/MediaMetadata2;)V
Landroid/media/MediaItem2;->toBundle()Landroid/os/Bundle;
-Landroid/media/MediaLibraryService2$LibraryRoot;
Landroid/media/MediaLibraryService2$LibraryRoot;-><init>(Ljava/lang/String;Landroid/os/Bundle;)V
Landroid/media/MediaLibraryService2$LibraryRoot;->EXTRA_OFFLINE:Ljava/lang/String;
Landroid/media/MediaLibraryService2$LibraryRoot;->EXTRA_RECENT:Ljava/lang/String;
@@ -40170,7 +37474,6 @@
Landroid/media/MediaLibraryService2$LibraryRoot;->getExtras()Landroid/os/Bundle;
Landroid/media/MediaLibraryService2$LibraryRoot;->getRootId()Ljava/lang/String;
Landroid/media/MediaLibraryService2$LibraryRoot;->mProvider:Landroid/media/update/MediaLibraryService2Provider$LibraryRootProvider;
-Landroid/media/MediaLibraryService2$MediaLibrarySession$Builder;
Landroid/media/MediaLibraryService2$MediaLibrarySession$Builder;-><init>(Landroid/media/MediaLibraryService2;Ljava/util/concurrent/Executor;Landroid/media/MediaLibraryService2$MediaLibrarySession$MediaLibrarySessionCallback;)V
Landroid/media/MediaLibraryService2$MediaLibrarySession$Builder;->build()Landroid/media/MediaLibraryService2$MediaLibrarySession;
Landroid/media/MediaLibraryService2$MediaLibrarySession$Builder;->setId(Ljava/lang/String;)Landroid/media/MediaLibraryService2$MediaLibrarySession$Builder;
@@ -40179,7 +37482,6 @@
Landroid/media/MediaLibraryService2$MediaLibrarySession$Builder;->setSessionActivity(Landroid/app/PendingIntent;)Landroid/media/MediaLibraryService2$MediaLibrarySession$Builder;
Landroid/media/MediaLibraryService2$MediaLibrarySession$Builder;->setSessionCallback(Ljava/util/concurrent/Executor;Landroid/media/MediaLibraryService2$MediaLibrarySession$MediaLibrarySessionCallback;)Landroid/media/MediaLibraryService2$MediaLibrarySession$Builder;
Landroid/media/MediaLibraryService2$MediaLibrarySession$Builder;->setVolumeProvider(Landroid/media/VolumeProvider2;)Landroid/media/MediaLibraryService2$MediaLibrarySession$Builder;
-Landroid/media/MediaLibraryService2$MediaLibrarySession$MediaLibrarySessionCallback;
Landroid/media/MediaLibraryService2$MediaLibrarySession$MediaLibrarySessionCallback;-><init>()V
Landroid/media/MediaLibraryService2$MediaLibrarySession$MediaLibrarySessionCallback;->onGetChildren(Landroid/media/MediaLibraryService2$MediaLibrarySession;Landroid/media/MediaSession2$ControllerInfo;Ljava/lang/String;IILandroid/os/Bundle;)Ljava/util/List;
Landroid/media/MediaLibraryService2$MediaLibrarySession$MediaLibrarySessionCallback;->onGetItem(Landroid/media/MediaLibraryService2$MediaLibrarySession;Landroid/media/MediaSession2$ControllerInfo;Ljava/lang/String;)Landroid/media/MediaItem2;
@@ -40188,26 +37490,18 @@
Landroid/media/MediaLibraryService2$MediaLibrarySession$MediaLibrarySessionCallback;->onSearch(Landroid/media/MediaLibraryService2$MediaLibrarySession;Landroid/media/MediaSession2$ControllerInfo;Ljava/lang/String;Landroid/os/Bundle;)V
Landroid/media/MediaLibraryService2$MediaLibrarySession$MediaLibrarySessionCallback;->onSubscribe(Landroid/media/MediaLibraryService2$MediaLibrarySession;Landroid/media/MediaSession2$ControllerInfo;Ljava/lang/String;Landroid/os/Bundle;)V
Landroid/media/MediaLibraryService2$MediaLibrarySession$MediaLibrarySessionCallback;->onUnsubscribe(Landroid/media/MediaLibraryService2$MediaLibrarySession;Landroid/media/MediaSession2$ControllerInfo;Ljava/lang/String;)V
-Landroid/media/MediaLibraryService2$MediaLibrarySession;
Landroid/media/MediaLibraryService2$MediaLibrarySession;-><init>(Landroid/media/update/MediaLibraryService2Provider$MediaLibrarySessionProvider;)V
Landroid/media/MediaLibraryService2$MediaLibrarySession;->mProvider:Landroid/media/update/MediaLibraryService2Provider$MediaLibrarySessionProvider;
Landroid/media/MediaLibraryService2$MediaLibrarySession;->notifyChildrenChanged(Landroid/media/MediaSession2$ControllerInfo;Ljava/lang/String;ILandroid/os/Bundle;)V
Landroid/media/MediaLibraryService2$MediaLibrarySession;->notifyChildrenChanged(Ljava/lang/String;ILandroid/os/Bundle;)V
Landroid/media/MediaLibraryService2$MediaLibrarySession;->notifySearchResultChanged(Landroid/media/MediaSession2$ControllerInfo;Ljava/lang/String;ILandroid/os/Bundle;)V
-Landroid/media/MediaLibraryService2;
Landroid/media/MediaLibraryService2;-><init>()V
Landroid/media/MediaLibraryService2;->createProvider()Landroid/media/update/MediaSessionService2Provider;
Landroid/media/MediaLibraryService2;->onCreateSession(Ljava/lang/String;)Landroid/media/MediaLibraryService2$MediaLibrarySession;
Landroid/media/MediaLibraryService2;->SERVICE_INTERFACE:Ljava/lang/String;
-Landroid/media/MediaMetadata$BitmapKey;
Landroid/media/MediaMetadata$Builder;-><init>(Landroid/media/MediaMetadata;I)V
Landroid/media/MediaMetadata$Builder;->mBundle:Landroid/os/Bundle;
Landroid/media/MediaMetadata$Builder;->scaleBitmap(Landroid/graphics/Bitmap;I)Landroid/graphics/Bitmap;
-Landroid/media/MediaMetadata$LongKey;
-Landroid/media/MediaMetadata$RatingKey;
-Landroid/media/MediaMetadata$TextKey;
-Landroid/media/MediaMetadata2$BitmapKey;
-Landroid/media/MediaMetadata2$Builder;
Landroid/media/MediaMetadata2$Builder;-><init>()V
Landroid/media/MediaMetadata2$Builder;-><init>(Landroid/media/MediaMetadata2;)V
Landroid/media/MediaMetadata2$Builder;-><init>(Landroid/media/update/MediaMetadata2Provider$BuilderProvider;)V
@@ -40220,11 +37514,6 @@
Landroid/media/MediaMetadata2$Builder;->putString(Ljava/lang/String;Ljava/lang/String;)Landroid/media/MediaMetadata2$Builder;
Landroid/media/MediaMetadata2$Builder;->putText(Ljava/lang/String;Ljava/lang/CharSequence;)Landroid/media/MediaMetadata2$Builder;
Landroid/media/MediaMetadata2$Builder;->setExtras(Landroid/os/Bundle;)Landroid/media/MediaMetadata2$Builder;
-Landroid/media/MediaMetadata2$FloatKey;
-Landroid/media/MediaMetadata2$LongKey;
-Landroid/media/MediaMetadata2$RatingKey;
-Landroid/media/MediaMetadata2$TextKey;
-Landroid/media/MediaMetadata2;
Landroid/media/MediaMetadata2;-><init>(Landroid/media/update/MediaMetadata2Provider;)V
Landroid/media/MediaMetadata2;->BT_FOLDER_TYPE_ALBUMS:J
Landroid/media/MediaMetadata2;->BT_FOLDER_TYPE_ARTISTS:J
@@ -40315,7 +37604,6 @@
Landroid/media/MediaMetadataEditor;->TAG:Ljava/lang/String;
Landroid/media/MediaMetadataRetriever$BitmapParams;->inPreferredConfig:Landroid/graphics/Bitmap$Config;
Landroid/media/MediaMetadataRetriever$BitmapParams;->outActualConfig:Landroid/graphics/Bitmap$Config;
-Landroid/media/MediaMetadataRetriever$Option;
Landroid/media/MediaMetadataRetriever;->EMBEDDED_PICTURE_TYPE_ANY:I
Landroid/media/MediaMetadataRetriever;->getFramesAtIndexInternal(IILandroid/media/MediaMetadataRetriever$BitmapParams;)Ljava/util/List;
Landroid/media/MediaMetadataRetriever;->getImageAtIndexInternal(ILandroid/media/MediaMetadataRetriever$BitmapParams;)Landroid/graphics/Bitmap;
@@ -40330,7 +37618,6 @@
Landroid/media/MediaMetadataRetriever;->_getImageAtIndex(ILandroid/media/MediaMetadataRetriever$BitmapParams;)Landroid/graphics/Bitmap;
Landroid/media/MediaMetadataRetriever;->_setDataSource(Landroid/media/MediaDataSource;)V
Landroid/media/MediaMetadataRetriever;->_setDataSource(Landroid/os/IBinder;Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;)V
-Landroid/media/MediaMuxer$Format;
Landroid/media/MediaMuxer$OutputFormat;-><init>()V
Landroid/media/MediaMuxer$OutputFormat;->MUXER_OUTPUT_FIRST:I
Landroid/media/MediaMuxer$OutputFormat;->MUXER_OUTPUT_LAST:I
@@ -40351,26 +37638,16 @@
Landroid/media/MediaPlayer$DrmInfo;->mapPssh:Ljava/util/Map;
Landroid/media/MediaPlayer$DrmInfo;->parsePSSH([BI)Ljava/util/Map;
Landroid/media/MediaPlayer$DrmInfo;->supportedSchemes:[Ljava/util/UUID;
-Landroid/media/MediaPlayer$EventHandler;
-Landroid/media/MediaPlayer$EventHandler;-><init>(Landroid/media/MediaPlayer;Landroid/os/Looper;)V
Landroid/media/MediaPlayer$EventHandler;->mMediaPlayer:Landroid/media/MediaPlayer;
Landroid/media/MediaPlayer$MetricsConstants;-><init>()V
-Landroid/media/MediaPlayer$OnDrmInfoHandlerDelegate;
-Landroid/media/MediaPlayer$OnDrmInfoHandlerDelegate;-><init>(Landroid/media/MediaPlayer;Landroid/media/MediaPlayer$OnDrmInfoListener;Landroid/os/Handler;)V
Landroid/media/MediaPlayer$OnDrmInfoHandlerDelegate;->mHandler:Landroid/os/Handler;
Landroid/media/MediaPlayer$OnDrmInfoHandlerDelegate;->mMediaPlayer:Landroid/media/MediaPlayer;
Landroid/media/MediaPlayer$OnDrmInfoHandlerDelegate;->mOnDrmInfoListener:Landroid/media/MediaPlayer$OnDrmInfoListener;
Landroid/media/MediaPlayer$OnDrmInfoHandlerDelegate;->notifyClient(Landroid/media/MediaPlayer$DrmInfo;)V
-Landroid/media/MediaPlayer$OnDrmPreparedHandlerDelegate;
-Landroid/media/MediaPlayer$OnDrmPreparedHandlerDelegate;-><init>(Landroid/media/MediaPlayer;Landroid/media/MediaPlayer$OnDrmPreparedListener;Landroid/os/Handler;)V
Landroid/media/MediaPlayer$OnDrmPreparedHandlerDelegate;->mHandler:Landroid/os/Handler;
Landroid/media/MediaPlayer$OnDrmPreparedHandlerDelegate;->mMediaPlayer:Landroid/media/MediaPlayer;
Landroid/media/MediaPlayer$OnDrmPreparedHandlerDelegate;->mOnDrmPreparedListener:Landroid/media/MediaPlayer$OnDrmPreparedListener;
Landroid/media/MediaPlayer$OnDrmPreparedHandlerDelegate;->notifyClient(I)V
-Landroid/media/MediaPlayer$PlaybackRateAudioMode;
-Landroid/media/MediaPlayer$PrepareDrmStatusCode;
-Landroid/media/MediaPlayer$ProvisioningThread;
-Landroid/media/MediaPlayer$ProvisioningThread;-><init>()V
Landroid/media/MediaPlayer$ProvisioningThread;->drmLock:Ljava/lang/Object;
Landroid/media/MediaPlayer$ProvisioningThread;->finished:Z
Landroid/media/MediaPlayer$ProvisioningThread;->initialize(Landroid/media/MediaDrm$ProvisionRequest;Ljava/util/UUID;Landroid/media/MediaPlayer;)Landroid/media/MediaPlayer$ProvisioningThread;
@@ -40381,10 +37658,6 @@
Landroid/media/MediaPlayer$ProvisioningThread;->TIMEOUT_MS:I
Landroid/media/MediaPlayer$ProvisioningThread;->urlStr:Ljava/lang/String;
Landroid/media/MediaPlayer$ProvisioningThread;->uuid:Ljava/util/UUID;
-Landroid/media/MediaPlayer$SeekMode;
-Landroid/media/MediaPlayer$TimeProvider$EventHandler;
-Landroid/media/MediaPlayer$TimeProvider$EventHandler;-><init>(Landroid/os/Looper;)V
-Landroid/media/MediaPlayer$TimeProvider;
Landroid/media/MediaPlayer$TimeProvider;-><init>(Landroid/media/MediaPlayer;)V
Landroid/media/MediaPlayer$TimeProvider;->cancelNotifications(Landroid/media/MediaTimeProvider$OnMediaTimeListener;)V
Landroid/media/MediaPlayer$TimeProvider;->close()V
@@ -40425,24 +37698,16 @@
Landroid/media/MediaPlayer$TimeProvider;->scheduleUpdate(Landroid/media/MediaTimeProvider$OnMediaTimeListener;)V
Landroid/media/MediaPlayer$TimeProvider;->TAG:Ljava/lang/String;
Landroid/media/MediaPlayer$TimeProvider;->TIME_ADJUSTMENT_RATE:J
-Landroid/media/MediaPlayer$TrackInfo$TrackType;
Landroid/media/MediaPlayer$TrackInfo;-><init>(ILandroid/media/MediaFormat;)V
Landroid/media/MediaPlayer$TrackInfo;-><init>(Landroid/os/Parcel;)V
Landroid/media/MediaPlayer$TrackInfo;->mFormat:Landroid/media/MediaFormat;
Landroid/media/MediaPlayer$TrackInfo;->mTrackType:I
-Landroid/media/MediaPlayer2$CallCompleted;
-Landroid/media/MediaPlayer2$CallStatus;
-Landroid/media/MediaPlayer2$DrmEventCallback;
Landroid/media/MediaPlayer2$DrmEventCallback;-><init>()V
Landroid/media/MediaPlayer2$DrmEventCallback;->onDrmInfo(Landroid/media/MediaPlayer2;Landroid/media/DataSourceDesc;Landroid/media/MediaPlayer2$DrmInfo;)V
Landroid/media/MediaPlayer2$DrmEventCallback;->onDrmPrepared(Landroid/media/MediaPlayer2;Landroid/media/DataSourceDesc;I)V
-Landroid/media/MediaPlayer2$DrmInfo;
Landroid/media/MediaPlayer2$DrmInfo;-><init>()V
Landroid/media/MediaPlayer2$DrmInfo;->getPssh()Ljava/util/Map;
Landroid/media/MediaPlayer2$DrmInfo;->getSupportedSchemes()Ljava/util/List;
-Landroid/media/MediaPlayer2$MediaError;
-Landroid/media/MediaPlayer2$MediaInfo;
-Landroid/media/MediaPlayer2$MediaPlayer2EventCallback;
Landroid/media/MediaPlayer2$MediaPlayer2EventCallback;-><init>()V
Landroid/media/MediaPlayer2$MediaPlayer2EventCallback;->onCallCompleted(Landroid/media/MediaPlayer2;Landroid/media/DataSourceDesc;II)V
Landroid/media/MediaPlayer2$MediaPlayer2EventCallback;->onCommandLabelReached(Landroid/media/MediaPlayer2;Ljava/lang/Object;)V
@@ -40452,8 +37717,6 @@
Landroid/media/MediaPlayer2$MediaPlayer2EventCallback;->onTimedMetaDataAvailable(Landroid/media/MediaPlayer2;Landroid/media/DataSourceDesc;Landroid/media/TimedMetaData;)V
Landroid/media/MediaPlayer2$MediaPlayer2EventCallback;->onTimedText(Landroid/media/MediaPlayer2;Landroid/media/DataSourceDesc;Landroid/media/TimedText;)V
Landroid/media/MediaPlayer2$MediaPlayer2EventCallback;->onVideoSizeChanged(Landroid/media/MediaPlayer2;Landroid/media/DataSourceDesc;II)V
-Landroid/media/MediaPlayer2$MediaPlayer2State;
-Landroid/media/MediaPlayer2$MetricsConstants;
Landroid/media/MediaPlayer2$MetricsConstants;-><init>()V
Landroid/media/MediaPlayer2$MetricsConstants;->CODEC_AUDIO:Ljava/lang/String;
Landroid/media/MediaPlayer2$MetricsConstants;->CODEC_VIDEO:Ljava/lang/String;
@@ -40467,20 +37730,11 @@
Landroid/media/MediaPlayer2$MetricsConstants;->MIME_TYPE_VIDEO:Ljava/lang/String;
Landroid/media/MediaPlayer2$MetricsConstants;->PLAYING:Ljava/lang/String;
Landroid/media/MediaPlayer2$MetricsConstants;->WIDTH:Ljava/lang/String;
-Landroid/media/MediaPlayer2$NoDrmSchemeException;
Landroid/media/MediaPlayer2$NoDrmSchemeException;-><init>(Ljava/lang/String;)V
-Landroid/media/MediaPlayer2$OnDrmConfigHelper;
Landroid/media/MediaPlayer2$OnDrmConfigHelper;->onDrmConfig(Landroid/media/MediaPlayer2;Landroid/media/DataSourceDesc;)V
-Landroid/media/MediaPlayer2$OnSubtitleDataListener;
Landroid/media/MediaPlayer2$OnSubtitleDataListener;->onSubtitleData(Landroid/media/MediaPlayer2;Landroid/media/SubtitleData;)V
-Landroid/media/MediaPlayer2$PlaybackRateAudioMode;
-Landroid/media/MediaPlayer2$PrepareDrmStatusCode;
-Landroid/media/MediaPlayer2$ProvisioningNetworkErrorException;
Landroid/media/MediaPlayer2$ProvisioningNetworkErrorException;-><init>(Ljava/lang/String;)V
-Landroid/media/MediaPlayer2$ProvisioningServerErrorException;
Landroid/media/MediaPlayer2$ProvisioningServerErrorException;-><init>(Ljava/lang/String;)V
-Landroid/media/MediaPlayer2$SeekMode;
-Landroid/media/MediaPlayer2$TrackInfo;
Landroid/media/MediaPlayer2$TrackInfo;-><init>()V
Landroid/media/MediaPlayer2$TrackInfo;->getFormat()Landroid/media/MediaFormat;
Landroid/media/MediaPlayer2$TrackInfo;->MEDIA_TRACK_TYPE_AUDIO:I
@@ -40489,7 +37743,6 @@
Landroid/media/MediaPlayer2$TrackInfo;->MEDIA_TRACK_TYPE_TIMEDTEXT:I
Landroid/media/MediaPlayer2$TrackInfo;->MEDIA_TRACK_TYPE_UNKNOWN:I
Landroid/media/MediaPlayer2$TrackInfo;->MEDIA_TRACK_TYPE_VIDEO:I
-Landroid/media/MediaPlayer2;
Landroid/media/MediaPlayer2;-><init>()V
Landroid/media/MediaPlayer2;->addSubtitleSource(Ljava/io/InputStream;Landroid/media/MediaFormat;)V
Landroid/media/MediaPlayer2;->addTimedTextSource(Landroid/content/Context;Landroid/net/Uri;Ljava/lang/String;)V
@@ -40664,7 +37917,6 @@
Landroid/media/MediaPlayer2;->unregisterPlayerEventCallback(Landroid/media/MediaPlayerBase$PlayerEventCallback;)V
Landroid/media/MediaPlayer2;->VIDEO_SCALING_MODE_SCALE_TO_FIT:I
Landroid/media/MediaPlayer2;->VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING:I
-Landroid/media/MediaPlayer2Impl$DrmInfoImpl;
Landroid/media/MediaPlayer2Impl$DrmInfoImpl;-><init>(Landroid/os/Parcel;)V
Landroid/media/MediaPlayer2Impl$DrmInfoImpl;-><init>(Ljava/util/Map;[Ljava/util/UUID;)V
Landroid/media/MediaPlayer2Impl$DrmInfoImpl;->arrToHex([B)Ljava/lang/String;
@@ -40675,18 +37927,11 @@
Landroid/media/MediaPlayer2Impl$DrmInfoImpl;->mapPssh:Ljava/util/Map;
Landroid/media/MediaPlayer2Impl$DrmInfoImpl;->parsePSSH([BI)Ljava/util/Map;
Landroid/media/MediaPlayer2Impl$DrmInfoImpl;->supportedSchemes:[Ljava/util/UUID;
-Landroid/media/MediaPlayer2Impl$EventHandler;
-Landroid/media/MediaPlayer2Impl$EventHandler;-><init>(Landroid/media/MediaPlayer2Impl;Landroid/os/Looper;)V
Landroid/media/MediaPlayer2Impl$EventHandler;->handleMessage(Landroid/os/Message;J)V
Landroid/media/MediaPlayer2Impl$EventHandler;->mMediaPlayer:Landroid/media/MediaPlayer2Impl;
-Landroid/media/MediaPlayer2Impl$NoDrmSchemeExceptionImpl;
Landroid/media/MediaPlayer2Impl$NoDrmSchemeExceptionImpl;-><init>(Ljava/lang/String;)V
-Landroid/media/MediaPlayer2Impl$ProvisioningNetworkErrorExceptionImpl;
Landroid/media/MediaPlayer2Impl$ProvisioningNetworkErrorExceptionImpl;-><init>(Ljava/lang/String;)V
-Landroid/media/MediaPlayer2Impl$ProvisioningServerErrorExceptionImpl;
Landroid/media/MediaPlayer2Impl$ProvisioningServerErrorExceptionImpl;-><init>(Ljava/lang/String;)V
-Landroid/media/MediaPlayer2Impl$ProvisioningThread;
-Landroid/media/MediaPlayer2Impl$ProvisioningThread;-><init>()V
Landroid/media/MediaPlayer2Impl$ProvisioningThread;->drmLock:Ljava/lang/Object;
Landroid/media/MediaPlayer2Impl$ProvisioningThread;->finished:Z
Landroid/media/MediaPlayer2Impl$ProvisioningThread;->initialize(Landroid/media/MediaDrm$ProvisionRequest;Ljava/util/UUID;Landroid/media/MediaPlayer2Impl;)Landroid/media/MediaPlayer2Impl$ProvisioningThread;
@@ -40696,7 +37941,6 @@
Landroid/media/MediaPlayer2Impl$ProvisioningThread;->TIMEOUT_MS:I
Landroid/media/MediaPlayer2Impl$ProvisioningThread;->urlStr:Ljava/lang/String;
Landroid/media/MediaPlayer2Impl$ProvisioningThread;->uuid:Ljava/util/UUID;
-Landroid/media/MediaPlayer2Impl$StreamEventCallback;
Landroid/media/MediaPlayer2Impl$StreamEventCallback;-><init>(JJJ)V
Landroid/media/MediaPlayer2Impl$StreamEventCallback;->mJAudioTrackPtr:J
Landroid/media/MediaPlayer2Impl$StreamEventCallback;->mNativeCallbackPtr:J
@@ -40704,16 +37948,11 @@
Landroid/media/MediaPlayer2Impl$StreamEventCallback;->onStreamDataRequest(Landroid/media/AudioTrack;)V
Landroid/media/MediaPlayer2Impl$StreamEventCallback;->onStreamPresentationEnd(Landroid/media/AudioTrack;)V
Landroid/media/MediaPlayer2Impl$StreamEventCallback;->onTearDown(Landroid/media/AudioTrack;)V
-Landroid/media/MediaPlayer2Impl$Task;
-Landroid/media/MediaPlayer2Impl$Task;-><init>(IZ)V
Landroid/media/MediaPlayer2Impl$Task;->mDSD:Landroid/media/DataSourceDesc;
Landroid/media/MediaPlayer2Impl$Task;->mMediaCallType:I
Landroid/media/MediaPlayer2Impl$Task;->mNeedToWaitForEventToComplete:Z
Landroid/media/MediaPlayer2Impl$Task;->process()V
Landroid/media/MediaPlayer2Impl$Task;->sendCompleteNotification(I)V
-Landroid/media/MediaPlayer2Impl$TimeProvider$EventHandler;
-Landroid/media/MediaPlayer2Impl$TimeProvider$EventHandler;-><init>(Landroid/os/Looper;)V
-Landroid/media/MediaPlayer2Impl$TimeProvider;
Landroid/media/MediaPlayer2Impl$TimeProvider;-><init>(Landroid/media/MediaPlayer2Impl;)V
Landroid/media/MediaPlayer2Impl$TimeProvider;->cancelNotifications(Landroid/media/MediaTimeProvider$OnMediaTimeListener;)V
Landroid/media/MediaPlayer2Impl$TimeProvider;->close()V
@@ -40755,7 +37994,6 @@
Landroid/media/MediaPlayer2Impl$TimeProvider;->scheduleUpdate(Landroid/media/MediaTimeProvider$OnMediaTimeListener;)V
Landroid/media/MediaPlayer2Impl$TimeProvider;->TAG:Ljava/lang/String;
Landroid/media/MediaPlayer2Impl$TimeProvider;->TIME_ADJUSTMENT_RATE:J
-Landroid/media/MediaPlayer2Impl$TrackInfoImpl;
Landroid/media/MediaPlayer2Impl$TrackInfoImpl;-><init>(ILandroid/media/MediaFormat;)V
Landroid/media/MediaPlayer2Impl$TrackInfoImpl;-><init>(Landroid/os/Parcel;)V
Landroid/media/MediaPlayer2Impl$TrackInfoImpl;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -40765,7 +38003,6 @@
Landroid/media/MediaPlayer2Impl$TrackInfoImpl;->mFormat:Landroid/media/MediaFormat;
Landroid/media/MediaPlayer2Impl$TrackInfoImpl;->mTrackType:I
Landroid/media/MediaPlayer2Impl$TrackInfoImpl;->writeToParcel(Landroid/os/Parcel;I)V
-Landroid/media/MediaPlayer2Impl;
Landroid/media/MediaPlayer2Impl;-><init>()V
Landroid/media/MediaPlayer2Impl;->addSubtitleSource(Ljava/io/InputStream;Landroid/media/MediaFormat;)V
Landroid/media/MediaPlayer2Impl;->addTask(Landroid/media/MediaPlayer2Impl$Task;)V
@@ -41155,8 +38392,6 @@
Landroid/media/MediaPlayer;->_setVolume(FF)V
Landroid/media/MediaPlayer;->_start()V
Landroid/media/MediaPlayer;->_stop()V
-Landroid/media/MediaPlayerBase$BuffState;
-Landroid/media/MediaPlayerBase$PlayerEventCallback;
Landroid/media/MediaPlayerBase$PlayerEventCallback;-><init>()V
Landroid/media/MediaPlayerBase$PlayerEventCallback;->onBufferingStateChanged(Landroid/media/MediaPlayerBase;Landroid/media/DataSourceDesc;I)V
Landroid/media/MediaPlayerBase$PlayerEventCallback;->onCurrentDataSourceChanged(Landroid/media/MediaPlayerBase;Landroid/media/DataSourceDesc;)V
@@ -41164,8 +38399,6 @@
Landroid/media/MediaPlayerBase$PlayerEventCallback;->onPlaybackSpeedChanged(Landroid/media/MediaPlayerBase;F)V
Landroid/media/MediaPlayerBase$PlayerEventCallback;->onPlayerStateChanged(Landroid/media/MediaPlayerBase;I)V
Landroid/media/MediaPlayerBase$PlayerEventCallback;->onSeekCompleted(Landroid/media/MediaPlayerBase;J)V
-Landroid/media/MediaPlayerBase$PlayerState;
-Landroid/media/MediaPlayerBase;
Landroid/media/MediaPlayerBase;-><init>()V
Landroid/media/MediaPlayerBase;->BUFFERING_STATE_BUFFERING_AND_PLAYABLE:I
Landroid/media/MediaPlayerBase;->BUFFERING_STATE_BUFFERING_AND_STARVED:I
@@ -41202,15 +38435,11 @@
Landroid/media/MediaPlayerBase;->skipToNext()V
Landroid/media/MediaPlayerBase;->UNKNOWN_TIME:J
Landroid/media/MediaPlayerBase;->unregisterPlayerEventCallback(Landroid/media/MediaPlayerBase$PlayerEventCallback;)V
-Landroid/media/MediaPlaylistAgent$PlaylistEventCallback;
Landroid/media/MediaPlaylistAgent$PlaylistEventCallback;-><init>()V
Landroid/media/MediaPlaylistAgent$PlaylistEventCallback;->onPlaylistChanged(Landroid/media/MediaPlaylistAgent;Ljava/util/List;Landroid/media/MediaMetadata2;)V
Landroid/media/MediaPlaylistAgent$PlaylistEventCallback;->onPlaylistMetadataChanged(Landroid/media/MediaPlaylistAgent;Landroid/media/MediaMetadata2;)V
Landroid/media/MediaPlaylistAgent$PlaylistEventCallback;->onRepeatModeChanged(Landroid/media/MediaPlaylistAgent;I)V
Landroid/media/MediaPlaylistAgent$PlaylistEventCallback;->onShuffleModeChanged(Landroid/media/MediaPlaylistAgent;I)V
-Landroid/media/MediaPlaylistAgent$RepeatMode;
-Landroid/media/MediaPlaylistAgent$ShuffleMode;
-Landroid/media/MediaPlaylistAgent;
Landroid/media/MediaPlaylistAgent;-><init>()V
Landroid/media/MediaPlaylistAgent;->addPlaylistItem(ILandroid/media/MediaItem2;)V
Landroid/media/MediaPlaylistAgent;->getMediaItem(Landroid/media/DataSourceDesc;)Landroid/media/MediaItem2;
@@ -41241,11 +38470,7 @@
Landroid/media/MediaPlaylistAgent;->skipToPreviousItem()V
Landroid/media/MediaPlaylistAgent;->unregisterPlaylistEventCallback(Landroid/media/MediaPlaylistAgent$PlaylistEventCallback;)V
Landroid/media/MediaPlaylistAgent;->updatePlaylistMetadata(Landroid/media/MediaMetadata2;)V
-Landroid/media/MediaRecorder$AudioEncoder;-><init>()V
-Landroid/media/MediaRecorder$AudioSource;-><init>()V
Landroid/media/MediaRecorder$AudioSource;->AUDIO_SOURCE_INVALID:I
-Landroid/media/MediaRecorder$EventHandler;
-Landroid/media/MediaRecorder$EventHandler;-><init>(Landroid/media/MediaRecorder;Landroid/os/Looper;)V
Landroid/media/MediaRecorder$EventHandler;->MEDIA_RECORDER_AUDIO_ROUTING_CHANGED:I
Landroid/media/MediaRecorder$EventHandler;->MEDIA_RECORDER_EVENT_ERROR:I
Landroid/media/MediaRecorder$EventHandler;->MEDIA_RECORDER_EVENT_INFO:I
@@ -41257,11 +38482,8 @@
Landroid/media/MediaRecorder$EventHandler;->MEDIA_RECORDER_TRACK_EVENT_LIST_START:I
Landroid/media/MediaRecorder$EventHandler;->mMediaRecorder:Landroid/media/MediaRecorder;
Landroid/media/MediaRecorder$MetricsConstants;-><init>()V
-Landroid/media/MediaRecorder$OutputFormat;-><init>()V
Landroid/media/MediaRecorder$OutputFormat;->AAC_ADIF:I
Landroid/media/MediaRecorder$OutputFormat;->OUTPUT_FORMAT_RTP_AVP:I
-Landroid/media/MediaRecorder$VideoEncoder;-><init>()V
-Landroid/media/MediaRecorder$VideoSource;-><init>()V
Landroid/media/MediaRecorder;->enableNativeRoutingCallbacksLocked(Z)V
Landroid/media/MediaRecorder;->isSystemOnlyAudioSource(I)Z
Landroid/media/MediaRecorder;->mChannelCount:I
@@ -41294,7 +38516,6 @@
Landroid/media/MediaRecorder;->toLogFriendlyAudioSource(I)Ljava/lang/String;
Landroid/media/MediaRecorder;->_setNextOutputFile(Ljava/io/FileDescriptor;)V
Landroid/media/MediaRecorder;->_setOutputFile(Ljava/io/FileDescriptor;)V
-Landroid/media/MediaRouter$CallbackInfo;
Landroid/media/MediaRouter$CallbackInfo;-><init>(Landroid/media/MediaRouter$Callback;IILandroid/media/MediaRouter;)V
Landroid/media/MediaRouter$CallbackInfo;->cb:Landroid/media/MediaRouter$Callback;
Landroid/media/MediaRouter$CallbackInfo;->filterRouteEvent(I)Z
@@ -41321,9 +38542,6 @@
Landroid/media/MediaRouter$RouteGroup;->routeUpdated()V
Landroid/media/MediaRouter$RouteGroup;->updateName()V
Landroid/media/MediaRouter$RouteGroup;->updateVolume()V
-Landroid/media/MediaRouter$RouteInfo$DeviceType;
-Landroid/media/MediaRouter$RouteInfo$PlaybackType;
-Landroid/media/MediaRouter$RouteInfo$PlaybackVolume;
Landroid/media/MediaRouter$RouteInfo;-><init>(Landroid/media/MediaRouter$RouteCategory;)V
Landroid/media/MediaRouter$RouteInfo;->choosePresentationDisplay()Landroid/view/Display;
Landroid/media/MediaRouter$RouteInfo;->isBluetooth()Z
@@ -41361,11 +38579,8 @@
Landroid/media/MediaRouter$RouteInfo;->STATUS_NOT_AVAILABLE:I
Landroid/media/MediaRouter$RouteInfo;->STATUS_SCANNING:I
Landroid/media/MediaRouter$RouteInfo;->updatePresentationDisplay()Z
-Landroid/media/MediaRouter$Static$Client;
-Landroid/media/MediaRouter$Static$Client;-><init>()V
Landroid/media/MediaRouter$Static$Client;->onRestoreRoute()V
Landroid/media/MediaRouter$Static$Client;->onStateChanged()V
-Landroid/media/MediaRouter$Static;
Landroid/media/MediaRouter$Static;-><init>(Landroid/content/Context;)V
Landroid/media/MediaRouter$Static;->findGlobalRoute(Ljava/lang/String;)Landroid/media/MediaRouter$RouteInfo;
Landroid/media/MediaRouter$Static;->getAllPresentationDisplays()[Landroid/view/Display;
@@ -41407,20 +38622,15 @@
Landroid/media/MediaRouter$Static;->updateDiscoveryRequest()V
Landroid/media/MediaRouter$Static;->updateGlobalRoute(Landroid/media/MediaRouter$RouteInfo;Landroid/media/MediaRouterClientState$RouteInfo;)V
Landroid/media/MediaRouter$Static;->updatePresentationDisplays(I)V
-Landroid/media/MediaRouter$UserRouteInfo$SessionVolumeProvider;
-Landroid/media/MediaRouter$UserRouteInfo$SessionVolumeProvider;-><init>(III)V
Landroid/media/MediaRouter$UserRouteInfo;-><init>(Landroid/media/MediaRouter$RouteCategory;)V
Landroid/media/MediaRouter$UserRouteInfo;->configureSessionVolume()V
Landroid/media/MediaRouter$UserRouteInfo;->mRcc:Landroid/media/RemoteControlClient;
Landroid/media/MediaRouter$UserRouteInfo;->mSvp:Landroid/media/MediaRouter$UserRouteInfo$SessionVolumeProvider;
Landroid/media/MediaRouter$UserRouteInfo;->updatePlaybackInfoOnRcc()V
-Landroid/media/MediaRouter$VolumeCallbackInfo;
Landroid/media/MediaRouter$VolumeCallbackInfo;-><init>(Landroid/media/MediaRouter$VolumeCallback;Landroid/media/MediaRouter$RouteInfo;)V
Landroid/media/MediaRouter$VolumeCallbackInfo;->route:Landroid/media/MediaRouter$RouteInfo;
Landroid/media/MediaRouter$VolumeCallbackInfo;->vcb:Landroid/media/MediaRouter$VolumeCallback;
-Landroid/media/MediaRouter$VolumeChangeReceiver;
Landroid/media/MediaRouter$VolumeChangeReceiver;-><init>()V
-Landroid/media/MediaRouter$WifiDisplayStatusChangedReceiver;
Landroid/media/MediaRouter$WifiDisplayStatusChangedReceiver;-><init>()V
Landroid/media/MediaRouter;-><init>(Landroid/content/Context;)V
Landroid/media/MediaRouter;->addRouteInt(Landroid/media/MediaRouter$RouteInfo;)V
@@ -41467,7 +38677,6 @@
Landroid/media/MediaRouter;->updateRoute(Landroid/media/MediaRouter$RouteInfo;)V
Landroid/media/MediaRouter;->updateWifiDisplayRoute(Landroid/media/MediaRouter$RouteInfo;Landroid/hardware/display/WifiDisplay;Landroid/hardware/display/WifiDisplayStatus;Z)V
Landroid/media/MediaRouter;->updateWifiDisplayStatus(Landroid/hardware/display/WifiDisplayStatus;)V
-Landroid/media/MediaRouterClientState$RouteInfo;
Landroid/media/MediaRouterClientState$RouteInfo;-><init>(Landroid/media/MediaRouterClientState$RouteInfo;)V
Landroid/media/MediaRouterClientState$RouteInfo;-><init>(Landroid/os/Parcel;)V
Landroid/media/MediaRouterClientState$RouteInfo;-><init>(Ljava/lang/String;)V
@@ -41485,17 +38694,14 @@
Landroid/media/MediaRouterClientState$RouteInfo;->volume:I
Landroid/media/MediaRouterClientState$RouteInfo;->volumeHandling:I
Landroid/media/MediaRouterClientState$RouteInfo;->volumeMax:I
-Landroid/media/MediaRouterClientState;
Landroid/media/MediaRouterClientState;-><init>()V
Landroid/media/MediaRouterClientState;-><init>(Landroid/os/Parcel;)V
Landroid/media/MediaRouterClientState;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/media/MediaRouterClientState;->getRoute(Ljava/lang/String;)Landroid/media/MediaRouterClientState$RouteInfo;
Landroid/media/MediaRouterClientState;->routes:Ljava/util/ArrayList;
-Landroid/media/MediaScanner$FileEntry;
Landroid/media/MediaScanner$FileEntry;->mFormat:I
Landroid/media/MediaScanner$FileEntry;->mLastModified:J
Landroid/media/MediaScanner$FileEntry;->mPath:Ljava/lang/String;
-Landroid/media/MediaScanner$MediaBulkDeleter;
Landroid/media/MediaScanner$MediaBulkDeleter;-><init>(Landroid/content/ContentProviderClient;Landroid/net/Uri;)V
Landroid/media/MediaScanner$MediaBulkDeleter;->delete(J)V
Landroid/media/MediaScanner$MediaBulkDeleter;->flush()V
@@ -41503,8 +38709,6 @@
Landroid/media/MediaScanner$MediaBulkDeleter;->mProvider:Landroid/content/ContentProviderClient;
Landroid/media/MediaScanner$MediaBulkDeleter;->whereArgs:Ljava/util/ArrayList;
Landroid/media/MediaScanner$MediaBulkDeleter;->whereClause:Ljava/lang/StringBuilder;
-Landroid/media/MediaScanner$MyMediaScannerClient;
-Landroid/media/MediaScanner$MyMediaScannerClient;-><init>()V
Landroid/media/MediaScanner$MyMediaScannerClient;->convertGenreCode(Ljava/lang/String;Ljava/lang/String;)Z
Landroid/media/MediaScanner$MyMediaScannerClient;->doesPathHaveFilename(Ljava/lang/String;Ljava/lang/String;)Z
Landroid/media/MediaScanner$MyMediaScannerClient;->getGenreName(Ljava/lang/String;)Ljava/lang/String;
@@ -41531,17 +38735,13 @@
Landroid/media/MediaScanner$MyMediaScannerClient;->processImageFile(Ljava/lang/String;)Z
Landroid/media/MediaScanner$MyMediaScannerClient;->setRingtoneIfNotSet(Ljava/lang/String;Landroid/net/Uri;J)V
Landroid/media/MediaScanner$MyMediaScannerClient;->testGenreNameConverter()V
-Landroid/media/MediaScanner$PlaylistEntry;
Landroid/media/MediaScanner$PlaylistEntry;-><init>()V
Landroid/media/MediaScanner$PlaylistEntry;->bestmatchid:J
Landroid/media/MediaScanner$PlaylistEntry;->bestmatchlevel:I
Landroid/media/MediaScanner$PlaylistEntry;->path:Ljava/lang/String;
-Landroid/media/MediaScanner$WplHandler;
-Landroid/media/MediaScanner$WplHandler;-><init>(Ljava/lang/String;Landroid/net/Uri;Landroid/database/Cursor;)V
Landroid/media/MediaScanner$WplHandler;->getContentHandler()Lorg/xml/sax/ContentHandler;
Landroid/media/MediaScanner$WplHandler;->handler:Lorg/xml/sax/ContentHandler;
Landroid/media/MediaScanner$WplHandler;->playListDirectory:Ljava/lang/String;
-Landroid/media/MediaScanner;
Landroid/media/MediaScanner;->ALARMS_DIR:Ljava/lang/String;
Landroid/media/MediaScanner;->cachePlaylistEntry(Ljava/lang/String;Ljava/lang/String;)V
Landroid/media/MediaScanner;->clearMediaPathCache(ZZ)V
@@ -41611,11 +38811,9 @@
Landroid/media/MediaScanner;->SYSTEM_SOUNDS_DIR:Ljava/lang/String;
Landroid/media/MediaScanner;->TAG:Ljava/lang/String;
Landroid/media/MediaScanner;->wasRingtoneAlreadySet(Ljava/lang/String;)Z
-Landroid/media/MediaScannerClient;
Landroid/media/MediaScannerClient;->handleStringTag(Ljava/lang/String;Ljava/lang/String;)V
Landroid/media/MediaScannerClient;->scanFile(Ljava/lang/String;JJZZ)V
Landroid/media/MediaScannerClient;->setMimeType(Ljava/lang/String;)V
-Landroid/media/MediaScannerConnection$ClientProxy;
Landroid/media/MediaScannerConnection$ClientProxy;-><init>([Ljava/lang/String;[Ljava/lang/String;Landroid/media/MediaScannerConnection$OnScanCompletedListener;)V
Landroid/media/MediaScannerConnection$ClientProxy;->mClient:Landroid/media/MediaScannerConnection$OnScanCompletedListener;
Landroid/media/MediaScannerConnection$ClientProxy;->mConnection:Landroid/media/MediaScannerConnection;
@@ -41629,7 +38827,6 @@
Landroid/media/MediaScannerConnection;->mListener:Landroid/media/IMediaScannerListener$Stub;
Landroid/media/MediaScannerConnection;->mService:Landroid/media/IMediaScannerService;
Landroid/media/MediaScannerConnection;->TAG:Ljava/lang/String;
-Landroid/media/MediaSession2$Builder;
Landroid/media/MediaSession2$Builder;-><init>(Landroid/content/Context;)V
Landroid/media/MediaSession2$Builder;->build()Landroid/media/MediaSession2;
Landroid/media/MediaSession2$Builder;->setId(Ljava/lang/String;)Landroid/media/MediaSession2$Builder;
@@ -41638,7 +38835,6 @@
Landroid/media/MediaSession2$Builder;->setSessionActivity(Landroid/app/PendingIntent;)Landroid/media/MediaSession2$Builder;
Landroid/media/MediaSession2$Builder;->setSessionCallback(Ljava/util/concurrent/Executor;Landroid/media/MediaSession2$SessionCallback;)Landroid/media/MediaSession2$Builder;
Landroid/media/MediaSession2$Builder;->setVolumeProvider(Landroid/media/VolumeProvider2;)Landroid/media/MediaSession2$Builder;
-Landroid/media/MediaSession2$BuilderBase;
Landroid/media/MediaSession2$BuilderBase;-><init>(Landroid/media/update/ProviderCreator;)V
Landroid/media/MediaSession2$BuilderBase;->build()Landroid/media/MediaSession2;
Landroid/media/MediaSession2$BuilderBase;->mProvider:Landroid/media/update/MediaSession2Provider$BuilderBaseProvider;
@@ -41648,7 +38844,6 @@
Landroid/media/MediaSession2$BuilderBase;->setSessionActivity(Landroid/app/PendingIntent;)Landroid/media/MediaSession2$BuilderBase;
Landroid/media/MediaSession2$BuilderBase;->setSessionCallback(Ljava/util/concurrent/Executor;Landroid/media/MediaSession2$SessionCallback;)Landroid/media/MediaSession2$BuilderBase;
Landroid/media/MediaSession2$BuilderBase;->setVolumeProvider(Landroid/media/VolumeProvider2;)Landroid/media/MediaSession2$BuilderBase;
-Landroid/media/MediaSession2$CommandButton$Builder;
Landroid/media/MediaSession2$CommandButton$Builder;-><init>()V
Landroid/media/MediaSession2$CommandButton$Builder;->build()Landroid/media/MediaSession2$CommandButton;
Landroid/media/MediaSession2$CommandButton$Builder;->mProvider:Landroid/media/update/MediaSession2Provider$CommandButtonProvider$BuilderProvider;
@@ -41657,7 +38852,6 @@
Landroid/media/MediaSession2$CommandButton$Builder;->setEnabled(Z)Landroid/media/MediaSession2$CommandButton$Builder;
Landroid/media/MediaSession2$CommandButton$Builder;->setExtras(Landroid/os/Bundle;)Landroid/media/MediaSession2$CommandButton$Builder;
Landroid/media/MediaSession2$CommandButton$Builder;->setIconResId(I)Landroid/media/MediaSession2$CommandButton$Builder;
-Landroid/media/MediaSession2$CommandButton;
Landroid/media/MediaSession2$CommandButton;-><init>(Landroid/media/update/MediaSession2Provider$CommandButtonProvider;)V
Landroid/media/MediaSession2$CommandButton;->getCommand()Landroid/media/SessionCommand2;
Landroid/media/MediaSession2$CommandButton;->getDisplayName()Ljava/lang/String;
@@ -41666,17 +38860,13 @@
Landroid/media/MediaSession2$CommandButton;->getProvider()Landroid/media/update/MediaSession2Provider$CommandButtonProvider;
Landroid/media/MediaSession2$CommandButton;->isEnabled()Z
Landroid/media/MediaSession2$CommandButton;->mProvider:Landroid/media/update/MediaSession2Provider$CommandButtonProvider;
-Landroid/media/MediaSession2$ControllerInfo;
Landroid/media/MediaSession2$ControllerInfo;-><init>(Landroid/content/Context;IILjava/lang/String;Landroid/os/IInterface;)V
Landroid/media/MediaSession2$ControllerInfo;->getPackageName()Ljava/lang/String;
Landroid/media/MediaSession2$ControllerInfo;->getProvider()Landroid/media/update/MediaSession2Provider$ControllerInfoProvider;
Landroid/media/MediaSession2$ControllerInfo;->getUid()I
Landroid/media/MediaSession2$ControllerInfo;->isTrusted()Z
Landroid/media/MediaSession2$ControllerInfo;->mProvider:Landroid/media/update/MediaSession2Provider$ControllerInfoProvider;
-Landroid/media/MediaSession2$ErrorCode;
-Landroid/media/MediaSession2$OnDataSourceMissingHelper;
Landroid/media/MediaSession2$OnDataSourceMissingHelper;->onDataSourceMissing(Landroid/media/MediaSession2;Landroid/media/MediaItem2;)Landroid/media/DataSourceDesc;
-Landroid/media/MediaSession2$SessionCallback;
Landroid/media/MediaSession2$SessionCallback;-><init>()V
Landroid/media/MediaSession2$SessionCallback;->onBufferingStateChanged(Landroid/media/MediaSession2;Landroid/media/MediaPlayerBase;Landroid/media/MediaItem2;I)V
Landroid/media/MediaSession2$SessionCallback;->onCommandRequest(Landroid/media/MediaSession2;Landroid/media/MediaSession2$ControllerInfo;Landroid/media/SessionCommand2;)Z
@@ -41701,7 +38891,6 @@
Landroid/media/MediaSession2$SessionCallback;->onSeekCompleted(Landroid/media/MediaSession2;Landroid/media/MediaPlayerBase;J)V
Landroid/media/MediaSession2$SessionCallback;->onSetRating(Landroid/media/MediaSession2;Landroid/media/MediaSession2$ControllerInfo;Ljava/lang/String;Landroid/media/Rating2;)V
Landroid/media/MediaSession2$SessionCallback;->onShuffleModeChanged(Landroid/media/MediaSession2;Landroid/media/MediaPlaylistAgent;I)V
-Landroid/media/MediaSession2;
Landroid/media/MediaSession2;-><init>(Landroid/media/update/MediaSession2Provider;)V
Landroid/media/MediaSession2;->addPlaylistItem(ILandroid/media/MediaItem2;)V
Landroid/media/MediaSession2;->clearOnDataSourceMissingHelper()V
@@ -41760,12 +38949,10 @@
Landroid/media/MediaSession2;->stop()V
Landroid/media/MediaSession2;->updatePlayer(Landroid/media/MediaPlayerBase;Landroid/media/MediaPlaylistAgent;Landroid/media/VolumeProvider2;)V
Landroid/media/MediaSession2;->updatePlaylistMetadata(Landroid/media/MediaMetadata2;)V
-Landroid/media/MediaSessionService2$MediaNotification;
Landroid/media/MediaSessionService2$MediaNotification;-><init>(ILandroid/app/Notification;)V
Landroid/media/MediaSessionService2$MediaNotification;->getNotification()Landroid/app/Notification;
Landroid/media/MediaSessionService2$MediaNotification;->getNotificationId()I
Landroid/media/MediaSessionService2$MediaNotification;->mProvider:Landroid/media/update/MediaSessionService2Provider$MediaNotificationProvider;
-Landroid/media/MediaSessionService2;
Landroid/media/MediaSessionService2;-><init>()V
Landroid/media/MediaSessionService2;->createProvider()Landroid/media/update/MediaSessionService2Provider;
Landroid/media/MediaSessionService2;->getSession()Landroid/media/MediaSession2;
@@ -41774,7 +38961,6 @@
Landroid/media/MediaSessionService2;->onUpdateNotification()Landroid/media/MediaSessionService2$MediaNotification;
Landroid/media/MediaSessionService2;->SERVICE_INTERFACE:Ljava/lang/String;
Landroid/media/MediaSessionService2;->SERVICE_META_DATA:Ljava/lang/String;
-Landroid/media/MediaSync$AudioBuffer;
Landroid/media/MediaSync$AudioBuffer;-><init>(Ljava/nio/ByteBuffer;IJ)V
Landroid/media/MediaSync$AudioBuffer;->mBufferIndex:I
Landroid/media/MediaSync$AudioBuffer;->mByteBuffer:Ljava/nio/ByteBuffer;
@@ -41817,11 +39003,9 @@
Landroid/media/MediaSyncEvent;->isValidType(I)Z
Landroid/media/MediaSyncEvent;->mAudioSession:I
Landroid/media/MediaSyncEvent;->mType:I
-Landroid/media/MediaTimeProvider$OnMediaTimeListener;
Landroid/media/MediaTimeProvider$OnMediaTimeListener;->onSeek(J)V
Landroid/media/MediaTimeProvider$OnMediaTimeListener;->onStop()V
Landroid/media/MediaTimeProvider$OnMediaTimeListener;->onTimedEvent(J)V
-Landroid/media/MediaTimeProvider;
Landroid/media/MediaTimeProvider;->cancelNotifications(Landroid/media/MediaTimeProvider$OnMediaTimeListener;)V
Landroid/media/MediaTimeProvider;->getCurrentTimeUs(ZZ)J
Landroid/media/MediaTimeProvider;->notifyAt(JLandroid/media/MediaTimeProvider$OnMediaTimeListener;)V
@@ -41832,7 +39016,6 @@
Landroid/media/MediaTimestamp;->clockRate:F
Landroid/media/MediaTimestamp;->mediaTimeUs:J
Landroid/media/MediaTimestamp;->nanoTime:J
-Landroid/media/Metadata;
Landroid/media/Metadata;->ALBUM:I
Landroid/media/Metadata;->ALBUM_ART:I
Landroid/media/Metadata;->ANY:I
@@ -41887,8 +39070,6 @@
Landroid/media/Metadata;->VIDEO_HEIGHT:I
Landroid/media/Metadata;->VIDEO_WIDTH:I
Landroid/media/MicrophoneInfo$Coordinate3F;-><init>(FFF)V
-Landroid/media/MicrophoneInfo$MicrophoneDirectionality;
-Landroid/media/MicrophoneInfo$MicrophoneLocation;
Landroid/media/MicrophoneInfo;->getInternalDeviceType()I
Landroid/media/MicrophoneInfo;->mAddress:Ljava/lang/String;
Landroid/media/MicrophoneInfo;->mChannelMapping:Ljava/util/List;
@@ -41907,49 +39088,39 @@
Landroid/media/MicrophoneInfo;->mType:I
Landroid/media/MicrophoneInfo;->setChannelMapping(Ljava/util/List;)V
Landroid/media/MicrophoneInfo;->setId(I)V
-Landroid/media/midi/IBluetoothMidiService$Stub$Proxy;
Landroid/media/midi/IBluetoothMidiService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/media/midi/IBluetoothMidiService$Stub$Proxy;->addBluetoothDevice(Landroid/bluetooth/BluetoothDevice;)Landroid/os/IBinder;
Landroid/media/midi/IBluetoothMidiService$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/media/midi/IBluetoothMidiService$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/media/midi/IBluetoothMidiService$Stub;
Landroid/media/midi/IBluetoothMidiService$Stub;-><init>()V
Landroid/media/midi/IBluetoothMidiService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/midi/IBluetoothMidiService;
Landroid/media/midi/IBluetoothMidiService$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/media/midi/IBluetoothMidiService$Stub;->TRANSACTION_addBluetoothDevice:I
-Landroid/media/midi/IBluetoothMidiService;
Landroid/media/midi/IBluetoothMidiService;->addBluetoothDevice(Landroid/bluetooth/BluetoothDevice;)Landroid/os/IBinder;
-Landroid/media/midi/IMidiDeviceListener$Stub$Proxy;
Landroid/media/midi/IMidiDeviceListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/media/midi/IMidiDeviceListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/media/midi/IMidiDeviceListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/media/midi/IMidiDeviceListener$Stub$Proxy;->onDeviceAdded(Landroid/media/midi/MidiDeviceInfo;)V
Landroid/media/midi/IMidiDeviceListener$Stub$Proxy;->onDeviceRemoved(Landroid/media/midi/MidiDeviceInfo;)V
Landroid/media/midi/IMidiDeviceListener$Stub$Proxy;->onDeviceStatusChanged(Landroid/media/midi/MidiDeviceStatus;)V
-Landroid/media/midi/IMidiDeviceListener$Stub;
Landroid/media/midi/IMidiDeviceListener$Stub;-><init>()V
Landroid/media/midi/IMidiDeviceListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/midi/IMidiDeviceListener;
Landroid/media/midi/IMidiDeviceListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/media/midi/IMidiDeviceListener$Stub;->TRANSACTION_onDeviceAdded:I
Landroid/media/midi/IMidiDeviceListener$Stub;->TRANSACTION_onDeviceRemoved:I
Landroid/media/midi/IMidiDeviceListener$Stub;->TRANSACTION_onDeviceStatusChanged:I
-Landroid/media/midi/IMidiDeviceListener;
Landroid/media/midi/IMidiDeviceListener;->onDeviceAdded(Landroid/media/midi/MidiDeviceInfo;)V
Landroid/media/midi/IMidiDeviceListener;->onDeviceRemoved(Landroid/media/midi/MidiDeviceInfo;)V
Landroid/media/midi/IMidiDeviceListener;->onDeviceStatusChanged(Landroid/media/midi/MidiDeviceStatus;)V
-Landroid/media/midi/IMidiDeviceOpenCallback$Stub$Proxy;
Landroid/media/midi/IMidiDeviceOpenCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/media/midi/IMidiDeviceOpenCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/media/midi/IMidiDeviceOpenCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/media/midi/IMidiDeviceOpenCallback$Stub$Proxy;->onDeviceOpened(Landroid/media/midi/IMidiDeviceServer;Landroid/os/IBinder;)V
-Landroid/media/midi/IMidiDeviceOpenCallback$Stub;
Landroid/media/midi/IMidiDeviceOpenCallback$Stub;-><init>()V
Landroid/media/midi/IMidiDeviceOpenCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/midi/IMidiDeviceOpenCallback;
Landroid/media/midi/IMidiDeviceOpenCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/media/midi/IMidiDeviceOpenCallback$Stub;->TRANSACTION_onDeviceOpened:I
-Landroid/media/midi/IMidiDeviceOpenCallback;
Landroid/media/midi/IMidiDeviceOpenCallback;->onDeviceOpened(Landroid/media/midi/IMidiDeviceServer;Landroid/os/IBinder;)V
-Landroid/media/midi/IMidiDeviceServer$Stub$Proxy;
Landroid/media/midi/IMidiDeviceServer$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/media/midi/IMidiDeviceServer$Stub$Proxy;->closeDevice()V
Landroid/media/midi/IMidiDeviceServer$Stub$Proxy;->closePort(Landroid/os/IBinder;)V
@@ -41960,7 +39131,6 @@
Landroid/media/midi/IMidiDeviceServer$Stub$Proxy;->openInputPort(Landroid/os/IBinder;I)Ljava/io/FileDescriptor;
Landroid/media/midi/IMidiDeviceServer$Stub$Proxy;->openOutputPort(Landroid/os/IBinder;I)Ljava/io/FileDescriptor;
Landroid/media/midi/IMidiDeviceServer$Stub$Proxy;->setDeviceInfo(Landroid/media/midi/MidiDeviceInfo;)V
-Landroid/media/midi/IMidiDeviceServer$Stub;
Landroid/media/midi/IMidiDeviceServer$Stub;-><init>()V
Landroid/media/midi/IMidiDeviceServer$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/midi/IMidiDeviceServer;
Landroid/media/midi/IMidiDeviceServer$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -41971,7 +39141,6 @@
Landroid/media/midi/IMidiDeviceServer$Stub;->TRANSACTION_openInputPort:I
Landroid/media/midi/IMidiDeviceServer$Stub;->TRANSACTION_openOutputPort:I
Landroid/media/midi/IMidiDeviceServer$Stub;->TRANSACTION_setDeviceInfo:I
-Landroid/media/midi/IMidiDeviceServer;
Landroid/media/midi/IMidiDeviceServer;->closeDevice()V
Landroid/media/midi/IMidiDeviceServer;->closePort(Landroid/os/IBinder;)V
Landroid/media/midi/IMidiDeviceServer;->connectPorts(Landroid/os/IBinder;Ljava/io/FileDescriptor;I)I
@@ -41979,7 +39148,6 @@
Landroid/media/midi/IMidiDeviceServer;->openInputPort(Landroid/os/IBinder;I)Ljava/io/FileDescriptor;
Landroid/media/midi/IMidiDeviceServer;->openOutputPort(Landroid/os/IBinder;I)Ljava/io/FileDescriptor;
Landroid/media/midi/IMidiDeviceServer;->setDeviceInfo(Landroid/media/midi/MidiDeviceInfo;)V
-Landroid/media/midi/IMidiManager$Stub$Proxy;
Landroid/media/midi/IMidiManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/media/midi/IMidiManager$Stub$Proxy;->closeDevice(Landroid/os/IBinder;Landroid/os/IBinder;)V
Landroid/media/midi/IMidiManager$Stub$Proxy;->getDevices()[Landroid/media/midi/MidiDeviceInfo;
@@ -41994,7 +39162,6 @@
Landroid/media/midi/IMidiManager$Stub$Proxy;->setDeviceStatus(Landroid/media/midi/IMidiDeviceServer;Landroid/media/midi/MidiDeviceStatus;)V
Landroid/media/midi/IMidiManager$Stub$Proxy;->unregisterDeviceServer(Landroid/media/midi/IMidiDeviceServer;)V
Landroid/media/midi/IMidiManager$Stub$Proxy;->unregisterListener(Landroid/os/IBinder;Landroid/media/midi/IMidiDeviceListener;)V
-Landroid/media/midi/IMidiManager$Stub;
Landroid/media/midi/IMidiManager$Stub;-><init>()V
Landroid/media/midi/IMidiManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/midi/IMidiManager;
Landroid/media/midi/IMidiManager$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -42009,7 +39176,6 @@
Landroid/media/midi/IMidiManager$Stub;->TRANSACTION_setDeviceStatus:I
Landroid/media/midi/IMidiManager$Stub;->TRANSACTION_unregisterDeviceServer:I
Landroid/media/midi/IMidiManager$Stub;->TRANSACTION_unregisterListener:I
-Landroid/media/midi/IMidiManager;
Landroid/media/midi/IMidiManager;->closeDevice(Landroid/os/IBinder;Landroid/os/IBinder;)V
Landroid/media/midi/IMidiManager;->getDevices()[Landroid/media/midi/MidiDeviceInfo;
Landroid/media/midi/IMidiManager;->getDeviceStatus(Landroid/media/midi/MidiDeviceInfo;)Landroid/media/midi/MidiDeviceStatus;
@@ -42021,7 +39187,6 @@
Landroid/media/midi/IMidiManager;->setDeviceStatus(Landroid/media/midi/IMidiDeviceServer;Landroid/media/midi/MidiDeviceStatus;)V
Landroid/media/midi/IMidiManager;->unregisterDeviceServer(Landroid/media/midi/IMidiDeviceServer;)V
Landroid/media/midi/IMidiManager;->unregisterListener(Landroid/os/IBinder;Landroid/media/midi/IMidiDeviceListener;)V
-Landroid/media/midi/MidiDevice$MidiConnection;-><init>(Landroid/os/IBinder;Landroid/media/midi/MidiInputPort;)V
Landroid/media/midi/MidiDevice$MidiConnection;->mGuard:Ldalvik/system/CloseGuard;
Landroid/media/midi/MidiDevice$MidiConnection;->mInputPortDeviceServer:Landroid/media/midi/IMidiDeviceServer;
Landroid/media/midi/MidiDevice$MidiConnection;->mInputPortToken:Landroid/os/IBinder;
@@ -42060,24 +39225,16 @@
Landroid/media/midi/MidiDeviceInfo;->PROPERTY_ALSA_DEVICE:Ljava/lang/String;
Landroid/media/midi/MidiDeviceInfo;->PROPERTY_SERVICE_INFO:Ljava/lang/String;
Landroid/media/midi/MidiDeviceInfo;->TAG:Ljava/lang/String;
-Landroid/media/midi/MidiDeviceServer$Callback;
Landroid/media/midi/MidiDeviceServer$Callback;->onClose()V
Landroid/media/midi/MidiDeviceServer$Callback;->onDeviceStatusChanged(Landroid/media/midi/MidiDeviceServer;Landroid/media/midi/MidiDeviceStatus;)V
-Landroid/media/midi/MidiDeviceServer$InputPortClient;
-Landroid/media/midi/MidiDeviceServer$InputPortClient;-><init>(Landroid/os/IBinder;Landroid/media/midi/MidiOutputPort;)V
Landroid/media/midi/MidiDeviceServer$InputPortClient;->close()V
Landroid/media/midi/MidiDeviceServer$InputPortClient;->mOutputPort:Landroid/media/midi/MidiOutputPort;
-Landroid/media/midi/MidiDeviceServer$OutputPortClient;
-Landroid/media/midi/MidiDeviceServer$OutputPortClient;-><init>(Landroid/os/IBinder;Landroid/media/midi/MidiInputPort;)V
Landroid/media/midi/MidiDeviceServer$OutputPortClient;->close()V
Landroid/media/midi/MidiDeviceServer$OutputPortClient;->getInputPort()Landroid/media/midi/MidiInputPort;
Landroid/media/midi/MidiDeviceServer$OutputPortClient;->mInputPort:Landroid/media/midi/MidiInputPort;
-Landroid/media/midi/MidiDeviceServer$PortClient;
-Landroid/media/midi/MidiDeviceServer$PortClient;-><init>(Landroid/os/IBinder;)V
Landroid/media/midi/MidiDeviceServer$PortClient;->close()V
Landroid/media/midi/MidiDeviceServer$PortClient;->getInputPort()Landroid/media/midi/MidiInputPort;
Landroid/media/midi/MidiDeviceServer$PortClient;->mToken:Landroid/os/IBinder;
-Landroid/media/midi/MidiDeviceServer;
Landroid/media/midi/MidiDeviceServer;-><init>(Landroid/media/midi/IMidiManager;[Landroid/media/midi/MidiReceiver;ILandroid/media/midi/MidiDeviceServer$Callback;)V
Landroid/media/midi/MidiDeviceServer;-><init>(Landroid/media/midi/IMidiManager;[Landroid/media/midi/MidiReceiver;Landroid/media/midi/MidiDeviceInfo;Landroid/media/midi/MidiDeviceServer$Callback;)V
Landroid/media/midi/MidiDeviceServer;->asBinder()Landroid/os/IBinder;
@@ -42128,8 +39285,6 @@
Landroid/media/midi/MidiInputPort;->mPortNumber:I
Landroid/media/midi/MidiInputPort;->mToken:Landroid/os/IBinder;
Landroid/media/midi/MidiInputPort;->TAG:Ljava/lang/String;
-Landroid/media/midi/MidiManager$DeviceListener;
-Landroid/media/midi/MidiManager$DeviceListener;-><init>(Landroid/media/midi/MidiManager$DeviceCallback;Landroid/os/Handler;)V
Landroid/media/midi/MidiManager$DeviceListener;->mCallback:Landroid/media/midi/MidiManager$DeviceCallback;
Landroid/media/midi/MidiManager$DeviceListener;->mHandler:Landroid/os/Handler;
Landroid/media/midi/MidiManager$DeviceListener;->onDeviceAdded(Landroid/media/midi/MidiDeviceInfo;)V
@@ -42157,7 +39312,6 @@
Landroid/media/midi/MidiOutputPort;->mToken:Landroid/os/IBinder;
Landroid/media/midi/MidiOutputPort;->TAG:Ljava/lang/String;
Landroid/media/midi/MidiReceiver;->mMaxMessageSize:I
-Landroid/media/MiniThumbFile;
Landroid/media/MiniThumbFile;-><init>(Landroid/net/Uri;)V
Landroid/media/MiniThumbFile;->BYTES_PER_MINTHUMB:I
Landroid/media/MiniThumbFile;->deactivate()V
@@ -42178,22 +39332,17 @@
Landroid/media/MiniThumbFile;->saveMiniThumbToFile([BJJ)V
Landroid/media/MiniThumbFile;->sThumbFiles:Ljava/util/Hashtable;
Landroid/media/MiniThumbFile;->TAG:Ljava/lang/String;
-Landroid/media/NativeRoutingEventHandlerDelegate;
Landroid/media/NativeRoutingEventHandlerDelegate;-><init>(Landroid/media/AudioRouting;Landroid/media/AudioRouting$OnRoutingChangedListener;Landroid/os/Handler;)V
Landroid/media/NativeRoutingEventHandlerDelegate;->mAudioRouting:Landroid/media/AudioRouting;
Landroid/media/NativeRoutingEventHandlerDelegate;->mHandler:Landroid/os/Handler;
Landroid/media/NativeRoutingEventHandlerDelegate;->mOnRoutingChangedListener:Landroid/media/AudioRouting$OnRoutingChangedListener;
Landroid/media/NativeRoutingEventHandlerDelegate;->notifyClient()V
-Landroid/media/PlaybackParams$AudioFallbackMode;
-Landroid/media/PlaybackParams$AudioStretchMode;
Landroid/media/PlaybackParams;-><init>(Landroid/os/Parcel;)V
Landroid/media/PlaybackParams;->AUDIO_STRETCH_MODE_DEFAULT:I
Landroid/media/PlaybackParams;->AUDIO_STRETCH_MODE_VOICE:I
-Landroid/media/PlayerBase$IAppOpsCallbackWrapper;
Landroid/media/PlayerBase$IAppOpsCallbackWrapper;-><init>(Landroid/media/PlayerBase;)V
Landroid/media/PlayerBase$IAppOpsCallbackWrapper;->mWeakPB:Ljava/lang/ref/WeakReference;
Landroid/media/PlayerBase$IAppOpsCallbackWrapper;->opChanged(IILjava/lang/String;)V
-Landroid/media/PlayerBase$IPlayerWrapper;
Landroid/media/PlayerBase$IPlayerWrapper;-><init>(Landroid/media/PlayerBase;)V
Landroid/media/PlayerBase$IPlayerWrapper;->applyVolumeShaper(Landroid/media/VolumeShaper$Configuration;Landroid/media/VolumeShaper$Operation;)V
Landroid/media/PlayerBase$IPlayerWrapper;->mWeakPB:Ljava/lang/ref/WeakReference;
@@ -42203,7 +39352,6 @@
Landroid/media/PlayerBase$IPlayerWrapper;->setVolume(F)V
Landroid/media/PlayerBase$IPlayerWrapper;->start()V
Landroid/media/PlayerBase$IPlayerWrapper;->stop()V
-Landroid/media/PlayerBase$PlayerIdCard;
Landroid/media/PlayerBase$PlayerIdCard;-><init>(ILandroid/media/AudioAttributes;Landroid/media/IPlayer;)V
Landroid/media/PlayerBase$PlayerIdCard;-><init>(Landroid/os/Parcel;)V
Landroid/media/PlayerBase$PlayerIdCard;->AUDIO_ATTRIBUTES_DEFINED:I
@@ -42212,7 +39360,6 @@
Landroid/media/PlayerBase$PlayerIdCard;->mAttributes:Landroid/media/AudioAttributes;
Landroid/media/PlayerBase$PlayerIdCard;->mIPlayer:Landroid/media/IPlayer;
Landroid/media/PlayerBase$PlayerIdCard;->mPlayerType:I
-Landroid/media/PlayerBase;
Landroid/media/PlayerBase;-><init>(Landroid/media/AudioAttributes;I)V
Landroid/media/PlayerBase;->basePause()V
Landroid/media/PlayerBase;->baseRegisterPlayer()V
@@ -42262,7 +39409,6 @@
Landroid/media/PlayerProxy;->DEBUG:Z
Landroid/media/PlayerProxy;->mConf:Landroid/media/AudioPlaybackConfiguration;
Landroid/media/PlayerProxy;->TAG:Ljava/lang/String;
-Landroid/media/projection/IMediaProjection$Stub$Proxy;
Landroid/media/projection/IMediaProjection$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/media/projection/IMediaProjection$Stub$Proxy;->applyVirtualDisplayFlags(I)I
Landroid/media/projection/IMediaProjection$Stub$Proxy;->canProjectAudio()Z
@@ -42274,7 +39420,6 @@
Landroid/media/projection/IMediaProjection$Stub$Proxy;->start(Landroid/media/projection/IMediaProjectionCallback;)V
Landroid/media/projection/IMediaProjection$Stub$Proxy;->stop()V
Landroid/media/projection/IMediaProjection$Stub$Proxy;->unregisterCallback(Landroid/media/projection/IMediaProjectionCallback;)V
-Landroid/media/projection/IMediaProjection$Stub;
Landroid/media/projection/IMediaProjection$Stub;-><init>()V
Landroid/media/projection/IMediaProjection$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/projection/IMediaProjection;
Landroid/media/projection/IMediaProjection$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -42286,7 +39431,6 @@
Landroid/media/projection/IMediaProjection$Stub;->TRANSACTION_start:I
Landroid/media/projection/IMediaProjection$Stub;->TRANSACTION_stop:I
Landroid/media/projection/IMediaProjection$Stub;->TRANSACTION_unregisterCallback:I
-Landroid/media/projection/IMediaProjection;
Landroid/media/projection/IMediaProjection;->applyVirtualDisplayFlags(I)I
Landroid/media/projection/IMediaProjection;->canProjectAudio()Z
Landroid/media/projection/IMediaProjection;->canProjectSecureVideo()Z
@@ -42295,19 +39439,15 @@
Landroid/media/projection/IMediaProjection;->start(Landroid/media/projection/IMediaProjectionCallback;)V
Landroid/media/projection/IMediaProjection;->stop()V
Landroid/media/projection/IMediaProjection;->unregisterCallback(Landroid/media/projection/IMediaProjectionCallback;)V
-Landroid/media/projection/IMediaProjectionCallback$Stub$Proxy;
Landroid/media/projection/IMediaProjectionCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/media/projection/IMediaProjectionCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/media/projection/IMediaProjectionCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/media/projection/IMediaProjectionCallback$Stub$Proxy;->onStop()V
-Landroid/media/projection/IMediaProjectionCallback$Stub;
Landroid/media/projection/IMediaProjectionCallback$Stub;-><init>()V
Landroid/media/projection/IMediaProjectionCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/projection/IMediaProjectionCallback;
Landroid/media/projection/IMediaProjectionCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/media/projection/IMediaProjectionCallback$Stub;->TRANSACTION_onStop:I
-Landroid/media/projection/IMediaProjectionCallback;
Landroid/media/projection/IMediaProjectionCallback;->onStop()V
-Landroid/media/projection/IMediaProjectionManager$Stub$Proxy;
Landroid/media/projection/IMediaProjectionManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/media/projection/IMediaProjectionManager$Stub$Proxy;->addCallback(Landroid/media/projection/IMediaProjectionWatcherCallback;)V
Landroid/media/projection/IMediaProjectionManager$Stub$Proxy;->createProjection(ILjava/lang/String;IZ)Landroid/media/projection/IMediaProjection;
@@ -42318,7 +39458,6 @@
Landroid/media/projection/IMediaProjectionManager$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/media/projection/IMediaProjectionManager$Stub$Proxy;->removeCallback(Landroid/media/projection/IMediaProjectionWatcherCallback;)V
Landroid/media/projection/IMediaProjectionManager$Stub$Proxy;->stopActiveProjection()V
-Landroid/media/projection/IMediaProjectionManager$Stub;
Landroid/media/projection/IMediaProjectionManager$Stub;-><init>()V
Landroid/media/projection/IMediaProjectionManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/projection/IMediaProjectionManager;
Landroid/media/projection/IMediaProjectionManager$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -42329,35 +39468,28 @@
Landroid/media/projection/IMediaProjectionManager$Stub;->TRANSACTION_isValidMediaProjection:I
Landroid/media/projection/IMediaProjectionManager$Stub;->TRANSACTION_removeCallback:I
Landroid/media/projection/IMediaProjectionManager$Stub;->TRANSACTION_stopActiveProjection:I
-Landroid/media/projection/IMediaProjectionManager;
Landroid/media/projection/IMediaProjectionManager;->addCallback(Landroid/media/projection/IMediaProjectionWatcherCallback;)V
Landroid/media/projection/IMediaProjectionManager;->createProjection(ILjava/lang/String;IZ)Landroid/media/projection/IMediaProjection;
Landroid/media/projection/IMediaProjectionManager;->getActiveProjectionInfo()Landroid/media/projection/MediaProjectionInfo;
Landroid/media/projection/IMediaProjectionManager;->isValidMediaProjection(Landroid/media/projection/IMediaProjection;)Z
Landroid/media/projection/IMediaProjectionManager;->removeCallback(Landroid/media/projection/IMediaProjectionWatcherCallback;)V
Landroid/media/projection/IMediaProjectionManager;->stopActiveProjection()V
-Landroid/media/projection/IMediaProjectionWatcherCallback$Stub$Proxy;
Landroid/media/projection/IMediaProjectionWatcherCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/media/projection/IMediaProjectionWatcherCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/media/projection/IMediaProjectionWatcherCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/media/projection/IMediaProjectionWatcherCallback$Stub$Proxy;->onStart(Landroid/media/projection/MediaProjectionInfo;)V
Landroid/media/projection/IMediaProjectionWatcherCallback$Stub$Proxy;->onStop(Landroid/media/projection/MediaProjectionInfo;)V
-Landroid/media/projection/IMediaProjectionWatcherCallback$Stub;
Landroid/media/projection/IMediaProjectionWatcherCallback$Stub;-><init>()V
Landroid/media/projection/IMediaProjectionWatcherCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/projection/IMediaProjectionWatcherCallback;
Landroid/media/projection/IMediaProjectionWatcherCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/media/projection/IMediaProjectionWatcherCallback$Stub;->TRANSACTION_onStart:I
Landroid/media/projection/IMediaProjectionWatcherCallback$Stub;->TRANSACTION_onStop:I
-Landroid/media/projection/IMediaProjectionWatcherCallback;
Landroid/media/projection/IMediaProjectionWatcherCallback;->onStart(Landroid/media/projection/MediaProjectionInfo;)V
Landroid/media/projection/IMediaProjectionWatcherCallback;->onStop(Landroid/media/projection/MediaProjectionInfo;)V
-Landroid/media/projection/MediaProjection$CallbackRecord;
Landroid/media/projection/MediaProjection$CallbackRecord;-><init>(Landroid/media/projection/MediaProjection$Callback;Landroid/os/Handler;)V
Landroid/media/projection/MediaProjection$CallbackRecord;->mCallback:Landroid/media/projection/MediaProjection$Callback;
Landroid/media/projection/MediaProjection$CallbackRecord;->mHandler:Landroid/os/Handler;
Landroid/media/projection/MediaProjection$CallbackRecord;->onStop()V
-Landroid/media/projection/MediaProjection$MediaProjectionCallback;
-Landroid/media/projection/MediaProjection$MediaProjectionCallback;-><init>()V
Landroid/media/projection/MediaProjection$MediaProjectionCallback;->onStop()V
Landroid/media/projection/MediaProjection;-><init>(Landroid/content/Context;Landroid/media/projection/IMediaProjection;)V
Landroid/media/projection/MediaProjection;->createAudioRecord(IIII)Landroid/media/AudioRecord;
@@ -42367,7 +39499,6 @@
Landroid/media/projection/MediaProjection;->mContext:Landroid/content/Context;
Landroid/media/projection/MediaProjection;->mImpl:Landroid/media/projection/IMediaProjection;
Landroid/media/projection/MediaProjection;->TAG:Ljava/lang/String;
-Landroid/media/projection/MediaProjectionInfo;
Landroid/media/projection/MediaProjectionInfo;-><init>(Landroid/os/Parcel;)V
Landroid/media/projection/MediaProjectionInfo;-><init>(Ljava/lang/String;Landroid/os/UserHandle;)V
Landroid/media/projection/MediaProjectionInfo;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -42375,11 +39506,9 @@
Landroid/media/projection/MediaProjectionInfo;->getUserHandle()Landroid/os/UserHandle;
Landroid/media/projection/MediaProjectionInfo;->mPackageName:Ljava/lang/String;
Landroid/media/projection/MediaProjectionInfo;->mUserHandle:Landroid/os/UserHandle;
-Landroid/media/projection/MediaProjectionManager$Callback;
Landroid/media/projection/MediaProjectionManager$Callback;-><init>()V
Landroid/media/projection/MediaProjectionManager$Callback;->onStart(Landroid/media/projection/MediaProjectionInfo;)V
Landroid/media/projection/MediaProjectionManager$Callback;->onStop(Landroid/media/projection/MediaProjectionInfo;)V
-Landroid/media/projection/MediaProjectionManager$CallbackDelegate;
Landroid/media/projection/MediaProjectionManager$CallbackDelegate;-><init>(Landroid/media/projection/MediaProjectionManager$Callback;Landroid/os/Handler;)V
Landroid/media/projection/MediaProjectionManager$CallbackDelegate;->mCallback:Landroid/media/projection/MediaProjectionManager$Callback;
Landroid/media/projection/MediaProjectionManager$CallbackDelegate;->mHandler:Landroid/os/Handler;
@@ -42399,11 +39528,6 @@
Landroid/media/projection/MediaProjectionManager;->TYPE_MIRRORING:I
Landroid/media/projection/MediaProjectionManager;->TYPE_PRESENTATION:I
Landroid/media/projection/MediaProjectionManager;->TYPE_SCREEN_CAPTURE:I
-Landroid/media/Rating$StarStyle;
-Landroid/media/Rating$Style;
-Landroid/media/Rating2$StarStyle;
-Landroid/media/Rating2$Style;
-Landroid/media/Rating2;
Landroid/media/Rating2;-><init>(Landroid/media/update/Rating2Provider;)V
Landroid/media/Rating2;->fromBundle(Landroid/os/Bundle;)Landroid/media/Rating2;
Landroid/media/Rating2;->getPercentRating()F
@@ -42432,7 +39556,6 @@
Landroid/media/Rating;->mRatingValue:F
Landroid/media/Rating;->RATING_NOT_RATED:F
Landroid/media/Rating;->TAG:Ljava/lang/String;
-Landroid/media/RemoteControlClient$MetadataEditor;-><init>()V
Landroid/media/RemoteControlClient$MetadataEditor;->METADATA_KEY_ARTWORK:I
Landroid/media/RemoteControlClient;->DEBUG:Z
Landroid/media/RemoteControlClient;->DEFAULT_PLAYBACK_VOLUME:I
@@ -42489,21 +39612,12 @@
Landroid/media/RemoteControlClient;->setPlaybackStateInt(IJFZ)V
Landroid/media/RemoteControlClient;->TAG:Ljava/lang/String;
Landroid/media/RemoteControlClient;->unregisterWithSession(Landroid/media/session/MediaSessionLegacyHelper;)V
-Landroid/media/RemoteController$EventHandler;
-Landroid/media/RemoteController$EventHandler;-><init>(Landroid/media/RemoteController;Landroid/os/Looper;)V
-Landroid/media/RemoteController$MediaControllerCallback;
-Landroid/media/RemoteController$MediaControllerCallback;-><init>()V
-Landroid/media/RemoteController$MetadataEditor;-><init>()V
-Landroid/media/RemoteController$MetadataEditor;-><init>(Landroid/os/Bundle;J)V
Landroid/media/RemoteController$MetadataEditor;->cleanupBitmapFromBundle(I)V
-Landroid/media/RemoteController$PlaybackInfo;
Landroid/media/RemoteController$PlaybackInfo;-><init>(IJJF)V
Landroid/media/RemoteController$PlaybackInfo;->mCurrentPosMs:J
Landroid/media/RemoteController$PlaybackInfo;->mSpeed:F
Landroid/media/RemoteController$PlaybackInfo;->mState:I
Landroid/media/RemoteController$PlaybackInfo;->mStateChangeTimeMs:J
-Landroid/media/RemoteController$TopTransportSessionListener;
-Landroid/media/RemoteController$TopTransportSessionListener;-><init>()V
Landroid/media/RemoteController;->DEBUG:Z
Landroid/media/RemoteController;->mArtworkHeight:I
Landroid/media/RemoteController;->mArtworkWidth:I
@@ -42534,11 +39648,9 @@
Landroid/media/RemoteController;->stopListeningToSessions()V
Landroid/media/RemoteController;->TAG:Ljava/lang/String;
Landroid/media/RemoteController;->updateController(Landroid/media/session/MediaController;)V
-Landroid/media/RemoteDisplay$Listener;
Landroid/media/RemoteDisplay$Listener;->onDisplayConnected(Landroid/view/Surface;IIII)V
Landroid/media/RemoteDisplay$Listener;->onDisplayDisconnected()V
Landroid/media/RemoteDisplay$Listener;->onDisplayError(I)V
-Landroid/media/RemoteDisplay;
Landroid/media/RemoteDisplay;-><init>(Landroid/media/RemoteDisplay$Listener;Landroid/os/Handler;Ljava/lang/String;)V
Landroid/media/RemoteDisplay;->DISPLAY_ERROR_CONNECTION_DROPPED:I
Landroid/media/RemoteDisplay;->DISPLAY_ERROR_UNKOWN:I
@@ -42557,7 +39669,6 @@
Landroid/media/RemoteDisplay;->pause()V
Landroid/media/RemoteDisplay;->resume()V
Landroid/media/RemoteDisplay;->startListening(Ljava/lang/String;)V
-Landroid/media/RemoteDisplayState$RemoteDisplayInfo;
Landroid/media/RemoteDisplayState$RemoteDisplayInfo;-><init>(Landroid/media/RemoteDisplayState$RemoteDisplayInfo;)V
Landroid/media/RemoteDisplayState$RemoteDisplayInfo;-><init>(Landroid/os/Parcel;)V
Landroid/media/RemoteDisplayState$RemoteDisplayInfo;-><init>(Ljava/lang/String;)V
@@ -42578,7 +39689,6 @@
Landroid/media/RemoteDisplayState$RemoteDisplayInfo;->volume:I
Landroid/media/RemoteDisplayState$RemoteDisplayInfo;->volumeHandling:I
Landroid/media/RemoteDisplayState$RemoteDisplayInfo;->volumeMax:I
-Landroid/media/RemoteDisplayState;
Landroid/media/RemoteDisplayState;-><init>(Landroid/os/Parcel;)V
Landroid/media/RemoteDisplayState;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/media/RemoteDisplayState;->DISCOVERY_MODE_ACTIVE:I
@@ -42586,7 +39696,6 @@
Landroid/media/RemoteDisplayState;->DISCOVERY_MODE_PASSIVE:I
Landroid/media/RemoteDisplayState;->isValid()Z
Landroid/media/RemoteDisplayState;->SERVICE_INTERFACE:Ljava/lang/String;
-Landroid/media/ResampleInputStream;
Landroid/media/ResampleInputStream;-><init>(Ljava/io/InputStream;II)V
Landroid/media/ResampleInputStream;->fir21([BI[BII)V
Landroid/media/ResampleInputStream;->mBuf:[B
@@ -42597,8 +39706,6 @@
Landroid/media/ResampleInputStream;->mRateIn:I
Landroid/media/ResampleInputStream;->mRateOut:I
Landroid/media/ResampleInputStream;->TAG:Ljava/lang/String;
-Landroid/media/Ringtone$MyOnCompletionListener;
-Landroid/media/Ringtone$MyOnCompletionListener;-><init>()V
Landroid/media/Ringtone;->applyPlaybackProperties_sync()V
Landroid/media/Ringtone;->destroyLocalPlayer()V
Landroid/media/Ringtone;->getTitle(Landroid/content/Context;Landroid/net/Uri;ZZ)Ljava/lang/String;
@@ -42621,8 +39728,6 @@
Landroid/media/Ringtone;->setTitle(Ljava/lang/String;)V
Landroid/media/Ringtone;->startLocalPlayer()V
Landroid/media/Ringtone;->TAG:Ljava/lang/String;
-Landroid/media/RingtoneManager$NewRingtoneScanner;
-Landroid/media/RingtoneManager$NewRingtoneScanner;-><init>(Ljava/io/File;)V
Landroid/media/RingtoneManager$NewRingtoneScanner;->mFile:Ljava/io/File;
Landroid/media/RingtoneManager$NewRingtoneScanner;->mMediaScannerConnection:Landroid/media/MediaScannerConnection;
Landroid/media/RingtoneManager$NewRingtoneScanner;->mQueue:Ljava/util/concurrent/LinkedBlockingQueue;
@@ -42664,19 +39769,15 @@
Landroid/media/RingtoneManager;->query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Landroid/content/Context;)Landroid/database/Cursor;
Landroid/media/RingtoneManager;->setFilterColumnsList(I)V
Landroid/media/RingtoneManager;->TAG:Ljava/lang/String;
-Landroid/media/session/IActiveSessionsListener$Stub$Proxy;
Landroid/media/session/IActiveSessionsListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/media/session/IActiveSessionsListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/media/session/IActiveSessionsListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/media/session/IActiveSessionsListener$Stub$Proxy;->onActiveSessionsChanged(Ljava/util/List;)V
-Landroid/media/session/IActiveSessionsListener$Stub;
Landroid/media/session/IActiveSessionsListener$Stub;-><init>()V
Landroid/media/session/IActiveSessionsListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/session/IActiveSessionsListener;
Landroid/media/session/IActiveSessionsListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/media/session/IActiveSessionsListener$Stub;->TRANSACTION_onActiveSessionsChanged:I
-Landroid/media/session/IActiveSessionsListener;
Landroid/media/session/IActiveSessionsListener;->onActiveSessionsChanged(Ljava/util/List;)V
-Landroid/media/session/ICallback$Stub$Proxy;
Landroid/media/session/ICallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/media/session/ICallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/media/session/ICallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -42684,7 +39785,6 @@
Landroid/media/session/ICallback$Stub$Proxy;->onAddressedPlayerChangedToMediaSession(Landroid/media/session/MediaSession$Token;)V
Landroid/media/session/ICallback$Stub$Proxy;->onMediaKeyEventDispatchedToMediaButtonReceiver(Landroid/view/KeyEvent;Landroid/content/ComponentName;)V
Landroid/media/session/ICallback$Stub$Proxy;->onMediaKeyEventDispatchedToMediaSession(Landroid/view/KeyEvent;Landroid/media/session/MediaSession$Token;)V
-Landroid/media/session/ICallback$Stub;
Landroid/media/session/ICallback$Stub;-><init>()V
Landroid/media/session/ICallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/session/ICallback;
Landroid/media/session/ICallback$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -42692,36 +39792,28 @@
Landroid/media/session/ICallback$Stub;->TRANSACTION_onAddressedPlayerChangedToMediaSession:I
Landroid/media/session/ICallback$Stub;->TRANSACTION_onMediaKeyEventDispatchedToMediaButtonReceiver:I
Landroid/media/session/ICallback$Stub;->TRANSACTION_onMediaKeyEventDispatchedToMediaSession:I
-Landroid/media/session/ICallback;
Landroid/media/session/ICallback;->onAddressedPlayerChangedToMediaButtonReceiver(Landroid/content/ComponentName;)V
Landroid/media/session/ICallback;->onAddressedPlayerChangedToMediaSession(Landroid/media/session/MediaSession$Token;)V
Landroid/media/session/ICallback;->onMediaKeyEventDispatchedToMediaButtonReceiver(Landroid/view/KeyEvent;Landroid/content/ComponentName;)V
Landroid/media/session/ICallback;->onMediaKeyEventDispatchedToMediaSession(Landroid/view/KeyEvent;Landroid/media/session/MediaSession$Token;)V
-Landroid/media/session/IOnMediaKeyListener$Stub$Proxy;
Landroid/media/session/IOnMediaKeyListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/media/session/IOnMediaKeyListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/media/session/IOnMediaKeyListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/media/session/IOnMediaKeyListener$Stub$Proxy;->onMediaKey(Landroid/view/KeyEvent;Landroid/os/ResultReceiver;)V
-Landroid/media/session/IOnMediaKeyListener$Stub;
Landroid/media/session/IOnMediaKeyListener$Stub;-><init>()V
Landroid/media/session/IOnMediaKeyListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/session/IOnMediaKeyListener;
Landroid/media/session/IOnMediaKeyListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/media/session/IOnMediaKeyListener$Stub;->TRANSACTION_onMediaKey:I
-Landroid/media/session/IOnMediaKeyListener;
Landroid/media/session/IOnMediaKeyListener;->onMediaKey(Landroid/view/KeyEvent;Landroid/os/ResultReceiver;)V
-Landroid/media/session/IOnVolumeKeyLongPressListener$Stub$Proxy;
Landroid/media/session/IOnVolumeKeyLongPressListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/media/session/IOnVolumeKeyLongPressListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/media/session/IOnVolumeKeyLongPressListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/media/session/IOnVolumeKeyLongPressListener$Stub$Proxy;->onVolumeKeyLongPress(Landroid/view/KeyEvent;)V
-Landroid/media/session/IOnVolumeKeyLongPressListener$Stub;
Landroid/media/session/IOnVolumeKeyLongPressListener$Stub;-><init>()V
Landroid/media/session/IOnVolumeKeyLongPressListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/session/IOnVolumeKeyLongPressListener;
Landroid/media/session/IOnVolumeKeyLongPressListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/media/session/IOnVolumeKeyLongPressListener$Stub;->TRANSACTION_onVolumeKeyLongPress:I
-Landroid/media/session/IOnVolumeKeyLongPressListener;
Landroid/media/session/IOnVolumeKeyLongPressListener;->onVolumeKeyLongPress(Landroid/view/KeyEvent;)V
-Landroid/media/session/ISession$Stub$Proxy;
Landroid/media/session/ISession$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/media/session/ISession$Stub$Proxy;->destroy()V
Landroid/media/session/ISession$Stub$Proxy;->getController()Landroid/media/session/ISessionController;
@@ -42741,7 +39833,6 @@
Landroid/media/session/ISession$Stub$Proxy;->setQueue(Landroid/content/pm/ParceledListSlice;)V
Landroid/media/session/ISession$Stub$Proxy;->setQueueTitle(Ljava/lang/CharSequence;)V
Landroid/media/session/ISession$Stub$Proxy;->setRatingType(I)V
-Landroid/media/session/ISession$Stub;
Landroid/media/session/ISession$Stub;-><init>()V
Landroid/media/session/ISession$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/session/ISession;
Landroid/media/session/ISession$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -42761,7 +39852,6 @@
Landroid/media/session/ISession$Stub;->TRANSACTION_setQueue:I
Landroid/media/session/ISession$Stub;->TRANSACTION_setQueueTitle:I
Landroid/media/session/ISession$Stub;->TRANSACTION_setRatingType:I
-Landroid/media/session/ISession;
Landroid/media/session/ISession;->destroy()V
Landroid/media/session/ISession;->getController()Landroid/media/session/ISessionController;
Landroid/media/session/ISession;->sendEvent(Ljava/lang/String;Landroid/os/Bundle;)V
@@ -42778,7 +39868,6 @@
Landroid/media/session/ISession;->setQueue(Landroid/content/pm/ParceledListSlice;)V
Landroid/media/session/ISession;->setQueueTitle(Ljava/lang/CharSequence;)V
Landroid/media/session/ISession;->setRatingType(I)V
-Landroid/media/session/ISessionCallback$Stub$Proxy;
Landroid/media/session/ISessionCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/media/session/ISessionCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/media/session/ISessionCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -42805,7 +39894,6 @@
Landroid/media/session/ISessionCallback$Stub$Proxy;->onSetVolumeTo(Ljava/lang/String;IILandroid/media/session/ISessionControllerCallback;I)V
Landroid/media/session/ISessionCallback$Stub$Proxy;->onSkipToTrack(Ljava/lang/String;IILandroid/media/session/ISessionControllerCallback;J)V
Landroid/media/session/ISessionCallback$Stub$Proxy;->onStop(Ljava/lang/String;IILandroid/media/session/ISessionControllerCallback;)V
-Landroid/media/session/ISessionCallback$Stub;
Landroid/media/session/ISessionCallback$Stub;-><init>()V
Landroid/media/session/ISessionCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/session/ISessionCallback;
Landroid/media/session/ISessionCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -42832,7 +39920,6 @@
Landroid/media/session/ISessionCallback$Stub;->TRANSACTION_onSetVolumeTo:I
Landroid/media/session/ISessionCallback$Stub;->TRANSACTION_onSkipToTrack:I
Landroid/media/session/ISessionCallback$Stub;->TRANSACTION_onStop:I
-Landroid/media/session/ISessionCallback;
Landroid/media/session/ISessionCallback;->onAdjustVolume(Ljava/lang/String;IILandroid/media/session/ISessionControllerCallback;I)V
Landroid/media/session/ISessionCallback;->onCommand(Ljava/lang/String;IILandroid/media/session/ISessionControllerCallback;Ljava/lang/String;Landroid/os/Bundle;Landroid/os/ResultReceiver;)V
Landroid/media/session/ISessionCallback;->onCustomAction(Ljava/lang/String;IILandroid/media/session/ISessionControllerCallback;Ljava/lang/String;Landroid/os/Bundle;)V
@@ -42856,7 +39943,6 @@
Landroid/media/session/ISessionCallback;->onSetVolumeTo(Ljava/lang/String;IILandroid/media/session/ISessionControllerCallback;I)V
Landroid/media/session/ISessionCallback;->onSkipToTrack(Ljava/lang/String;IILandroid/media/session/ISessionControllerCallback;J)V
Landroid/media/session/ISessionCallback;->onStop(Ljava/lang/String;IILandroid/media/session/ISessionControllerCallback;)V
-Landroid/media/session/ISessionController$Stub$Proxy;
Landroid/media/session/ISessionController$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/media/session/ISessionController$Stub$Proxy;->adjustVolume(Ljava/lang/String;Landroid/media/session/ISessionControllerCallback;ZII)V
Landroid/media/session/ISessionController$Stub$Proxy;->fastForward(Ljava/lang/String;Landroid/media/session/ISessionControllerCallback;)V
@@ -42896,7 +39982,6 @@
Landroid/media/session/ISessionController$Stub$Proxy;->skipToQueueItem(Ljava/lang/String;Landroid/media/session/ISessionControllerCallback;J)V
Landroid/media/session/ISessionController$Stub$Proxy;->stop(Ljava/lang/String;Landroid/media/session/ISessionControllerCallback;)V
Landroid/media/session/ISessionController$Stub$Proxy;->unregisterCallbackListener(Landroid/media/session/ISessionControllerCallback;)V
-Landroid/media/session/ISessionController$Stub;
Landroid/media/session/ISessionController$Stub;-><init>()V
Landroid/media/session/ISessionController$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/session/ISessionController;
Landroid/media/session/ISessionController$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -42936,7 +40021,6 @@
Landroid/media/session/ISessionController$Stub;->TRANSACTION_skipToQueueItem:I
Landroid/media/session/ISessionController$Stub;->TRANSACTION_stop:I
Landroid/media/session/ISessionController$Stub;->TRANSACTION_unregisterCallbackListener:I
-Landroid/media/session/ISessionController;
Landroid/media/session/ISessionController;->adjustVolume(Ljava/lang/String;Landroid/media/session/ISessionControllerCallback;ZII)V
Landroid/media/session/ISessionController;->fastForward(Ljava/lang/String;Landroid/media/session/ISessionControllerCallback;)V
Landroid/media/session/ISessionController;->getExtras()Landroid/os/Bundle;
@@ -42973,7 +40057,6 @@
Landroid/media/session/ISessionController;->skipToQueueItem(Ljava/lang/String;Landroid/media/session/ISessionControllerCallback;J)V
Landroid/media/session/ISessionController;->stop(Ljava/lang/String;Landroid/media/session/ISessionControllerCallback;)V
Landroid/media/session/ISessionController;->unregisterCallbackListener(Landroid/media/session/ISessionControllerCallback;)V
-Landroid/media/session/ISessionControllerCallback$Stub$Proxy;
Landroid/media/session/ISessionControllerCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/media/session/ISessionControllerCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/media/session/ISessionControllerCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -42985,7 +40068,6 @@
Landroid/media/session/ISessionControllerCallback$Stub$Proxy;->onQueueTitleChanged(Ljava/lang/CharSequence;)V
Landroid/media/session/ISessionControllerCallback$Stub$Proxy;->onSessionDestroyed()V
Landroid/media/session/ISessionControllerCallback$Stub$Proxy;->onVolumeInfoChanged(Landroid/media/session/ParcelableVolumeInfo;)V
-Landroid/media/session/ISessionControllerCallback$Stub;
Landroid/media/session/ISessionControllerCallback$Stub;-><init>()V
Landroid/media/session/ISessionControllerCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/session/ISessionControllerCallback;
Landroid/media/session/ISessionControllerCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -42997,7 +40079,6 @@
Landroid/media/session/ISessionControllerCallback$Stub;->TRANSACTION_onQueueTitleChanged:I
Landroid/media/session/ISessionControllerCallback$Stub;->TRANSACTION_onSessionDestroyed:I
Landroid/media/session/ISessionControllerCallback$Stub;->TRANSACTION_onVolumeInfoChanged:I
-Landroid/media/session/ISessionControllerCallback;
Landroid/media/session/ISessionControllerCallback;->onEvent(Ljava/lang/String;Landroid/os/Bundle;)V
Landroid/media/session/ISessionControllerCallback;->onExtrasChanged(Landroid/os/Bundle;)V
Landroid/media/session/ISessionControllerCallback;->onMetadataChanged(Landroid/media/MediaMetadata;)V
@@ -43006,7 +40087,6 @@
Landroid/media/session/ISessionControllerCallback;->onQueueTitleChanged(Ljava/lang/CharSequence;)V
Landroid/media/session/ISessionControllerCallback;->onSessionDestroyed()V
Landroid/media/session/ISessionControllerCallback;->onVolumeInfoChanged(Landroid/media/session/ParcelableVolumeInfo;)V
-Landroid/media/session/ISessionManager$Stub$Proxy;
Landroid/media/session/ISessionManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/media/session/ISessionManager$Stub$Proxy;->addSessionsListener(Landroid/media/session/IActiveSessionsListener;Landroid/content/ComponentName;I)V
Landroid/media/session/ISessionManager$Stub$Proxy;->addSessionTokensListener(Landroid/media/ISessionTokensListener;ILjava/lang/String;)V
@@ -43028,7 +40108,6 @@
Landroid/media/session/ISessionManager$Stub$Proxy;->setOnMediaKeyListener(Landroid/media/session/IOnMediaKeyListener;)V
Landroid/media/session/ISessionManager$Stub$Proxy;->setOnVolumeKeyLongPressListener(Landroid/media/session/IOnVolumeKeyLongPressListener;)V
Landroid/media/session/ISessionManager$Stub$Proxy;->setRemoteVolumeController(Landroid/media/IRemoteVolumeController;)V
-Landroid/media/session/ISessionManager$Stub;
Landroid/media/session/ISessionManager$Stub;-><init>()V
Landroid/media/session/ISessionManager$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/media/session/ISessionManager$Stub;->TRANSACTION_addSessionsListener:I
@@ -43049,7 +40128,6 @@
Landroid/media/session/ISessionManager$Stub;->TRANSACTION_setOnMediaKeyListener:I
Landroid/media/session/ISessionManager$Stub;->TRANSACTION_setOnVolumeKeyLongPressListener:I
Landroid/media/session/ISessionManager$Stub;->TRANSACTION_setRemoteVolumeController:I
-Landroid/media/session/ISessionManager;
Landroid/media/session/ISessionManager;->addSessionsListener(Landroid/media/session/IActiveSessionsListener;Landroid/content/ComponentName;I)V
Landroid/media/session/ISessionManager;->addSessionTokensListener(Landroid/media/ISessionTokensListener;ILjava/lang/String;)V
Landroid/media/session/ISessionManager;->createSession(Ljava/lang/String;Landroid/media/session/ISessionCallback;Ljava/lang/String;I)Landroid/media/session/ISession;
@@ -43068,7 +40146,6 @@
Landroid/media/session/ISessionManager;->setOnMediaKeyListener(Landroid/media/session/IOnMediaKeyListener;)V
Landroid/media/session/ISessionManager;->setOnVolumeKeyLongPressListener(Landroid/media/session/IOnVolumeKeyLongPressListener;)V
Landroid/media/session/ISessionManager;->setRemoteVolumeController(Landroid/media/IRemoteVolumeController;)V
-Landroid/media/session/MediaController$CallbackStub;
Landroid/media/session/MediaController$CallbackStub;-><init>(Landroid/media/session/MediaController;)V
Landroid/media/session/MediaController$CallbackStub;->mController:Ljava/lang/ref/WeakReference;
Landroid/media/session/MediaController$CallbackStub;->onEvent(Ljava/lang/String;Landroid/os/Bundle;)V
@@ -43079,7 +40156,6 @@
Landroid/media/session/MediaController$CallbackStub;->onQueueTitleChanged(Ljava/lang/CharSequence;)V
Landroid/media/session/MediaController$CallbackStub;->onSessionDestroyed()V
Landroid/media/session/MediaController$CallbackStub;->onVolumeInfoChanged(Landroid/media/session/ParcelableVolumeInfo;)V
-Landroid/media/session/MediaController$MessageHandler;
Landroid/media/session/MediaController$MessageHandler;-><init>(Landroid/os/Looper;Landroid/media/session/MediaController$Callback;)V
Landroid/media/session/MediaController$MessageHandler;->mCallback:Landroid/media/session/MediaController$Callback;
Landroid/media/session/MediaController$MessageHandler;->mRegistered:Z
@@ -43090,7 +40166,6 @@
Landroid/media/session/MediaController$PlaybackInfo;->mMaxVolume:I
Landroid/media/session/MediaController$PlaybackInfo;->mVolumeControl:I
Landroid/media/session/MediaController$PlaybackInfo;->mVolumeType:I
-Landroid/media/session/MediaController$TransportControls;-><init>()V
Landroid/media/session/MediaController$TransportControls;->TAG:Ljava/lang/String;
Landroid/media/session/MediaController;-><init>(Landroid/content/Context;Landroid/media/session/ISessionController;)V
Landroid/media/session/MediaController;->addCallbackLocked(Landroid/media/session/MediaController$Callback;Landroid/os/Handler;)V
@@ -43125,8 +40200,6 @@
Landroid/media/session/MediaSession$Callback;->mHandler:Landroid/media/session/MediaSession$CallbackMessageHandler;
Landroid/media/session/MediaSession$Callback;->mMediaPlayPauseKeyPending:Z
Landroid/media/session/MediaSession$Callback;->mSession:Landroid/media/session/MediaSession;
-Landroid/media/session/MediaSession$CallbackMessageHandler;
-Landroid/media/session/MediaSession$CallbackMessageHandler;-><init>(Landroid/os/Looper;Landroid/media/session/MediaSession$Callback;)V
Landroid/media/session/MediaSession$CallbackMessageHandler;->mCallback:Landroid/media/session/MediaSession$Callback;
Landroid/media/session/MediaSession$CallbackMessageHandler;->mCurrentControllerInfo:Landroid/media/session/MediaSessionManager$RemoteUserInfo;
Landroid/media/session/MediaSession$CallbackMessageHandler;->MSG_ADJUST_VOLUME:I
@@ -43153,7 +40226,6 @@
Landroid/media/session/MediaSession$CallbackMessageHandler;->MSG_SKIP_TO_ITEM:I
Landroid/media/session/MediaSession$CallbackMessageHandler;->MSG_STOP:I
Landroid/media/session/MediaSession$CallbackMessageHandler;->post(Landroid/media/session/MediaSessionManager$RemoteUserInfo;ILjava/lang/Object;Landroid/os/Bundle;J)V
-Landroid/media/session/MediaSession$CallbackStub;
Landroid/media/session/MediaSession$CallbackStub;-><init>(Landroid/media/session/MediaSession;)V
Landroid/media/session/MediaSession$CallbackStub;->createRemoteUserInfo(Ljava/lang/String;IILandroid/media/session/ISessionControllerCallback;)Landroid/media/session/MediaSessionManager$RemoteUserInfo;
Landroid/media/session/MediaSession$CallbackStub;->mMediaSession:Ljava/lang/ref/WeakReference;
@@ -43180,14 +40252,12 @@
Landroid/media/session/MediaSession$CallbackStub;->onSetVolumeTo(Ljava/lang/String;IILandroid/media/session/ISessionControllerCallback;I)V
Landroid/media/session/MediaSession$CallbackStub;->onSkipToTrack(Ljava/lang/String;IILandroid/media/session/ISessionControllerCallback;J)V
Landroid/media/session/MediaSession$CallbackStub;->onStop(Ljava/lang/String;IILandroid/media/session/ISessionControllerCallback;)V
-Landroid/media/session/MediaSession$Command;
Landroid/media/session/MediaSession$Command;-><init>(Ljava/lang/String;Landroid/os/Bundle;Landroid/os/ResultReceiver;)V
Landroid/media/session/MediaSession$Command;->command:Ljava/lang/String;
Landroid/media/session/MediaSession$Command;->extras:Landroid/os/Bundle;
Landroid/media/session/MediaSession$Command;->stub:Landroid/os/ResultReceiver;
Landroid/media/session/MediaSession$QueueItem;-><init>(Landroid/os/Parcel;)V
Landroid/media/session/MediaSession$QueueItem;->mDescription:Landroid/media/MediaDescription;
-Landroid/media/session/MediaSession$SessionFlags;
Landroid/media/session/MediaSession$Token;-><init>(Landroid/media/session/ISessionController;)V
Landroid/media/session/MediaSession$Token;->getBinder()Landroid/media/session/ISessionController;
Landroid/media/session/MediaSession$Token;->mBinder:Landroid/media/session/ISessionController;
@@ -43232,15 +40302,10 @@
Landroid/media/session/MediaSession;->postToCallback(Landroid/media/session/MediaSessionManager$RemoteUserInfo;ILjava/lang/Object;Landroid/os/Bundle;)V
Landroid/media/session/MediaSession;->postToCallbackDelayed(Landroid/media/session/MediaSessionManager$RemoteUserInfo;ILjava/lang/Object;Landroid/os/Bundle;J)V
Landroid/media/session/MediaSession;->TAG:Ljava/lang/String;
-Landroid/media/session/MediaSessionLegacyHelper$MediaButtonListener;
Landroid/media/session/MediaSessionLegacyHelper$MediaButtonListener;-><init>(Landroid/app/PendingIntent;Landroid/content/Context;)V
Landroid/media/session/MediaSessionLegacyHelper$MediaButtonListener;->mContext:Landroid/content/Context;
Landroid/media/session/MediaSessionLegacyHelper$MediaButtonListener;->mPendingIntent:Landroid/app/PendingIntent;
Landroid/media/session/MediaSessionLegacyHelper$MediaButtonListener;->sendKeyEvent(I)V
-Landroid/media/session/MediaSessionLegacyHelper$SessionHolder$SessionCallback;
-Landroid/media/session/MediaSessionLegacyHelper$SessionHolder$SessionCallback;-><init>()V
-Landroid/media/session/MediaSessionLegacyHelper$SessionHolder;
-Landroid/media/session/MediaSessionLegacyHelper$SessionHolder;-><init>(Landroid/media/session/MediaSession;Landroid/app/PendingIntent;)V
Landroid/media/session/MediaSessionLegacyHelper$SessionHolder;->mCb:Landroid/media/session/MediaSessionLegacyHelper$SessionHolder$SessionCallback;
Landroid/media/session/MediaSessionLegacyHelper$SessionHolder;->mFlags:I
Landroid/media/session/MediaSessionLegacyHelper$SessionHolder;->mMediaButtonListener:Landroid/media/session/MediaSessionLegacyHelper$MediaButtonListener;
@@ -43248,7 +40313,6 @@
Landroid/media/session/MediaSessionLegacyHelper$SessionHolder;->mRccListener:Landroid/media/session/MediaSession$Callback;
Landroid/media/session/MediaSessionLegacyHelper$SessionHolder;->mSession:Landroid/media/session/MediaSession;
Landroid/media/session/MediaSessionLegacyHelper$SessionHolder;->update()V
-Landroid/media/session/MediaSessionLegacyHelper;
Landroid/media/session/MediaSessionLegacyHelper;-><init>(Landroid/content/Context;)V
Landroid/media/session/MediaSessionLegacyHelper;->addMediaButtonListener(Landroid/app/PendingIntent;Landroid/content/ComponentName;Landroid/content/Context;)V
Landroid/media/session/MediaSessionLegacyHelper;->addRccListener(Landroid/app/PendingIntent;Landroid/media/session/MediaSession$Callback;)V
@@ -43271,13 +40335,11 @@
Landroid/media/session/MediaSessionLegacyHelper;->sInstance:Landroid/media/session/MediaSessionLegacyHelper;
Landroid/media/session/MediaSessionLegacyHelper;->sLock:Ljava/lang/Object;
Landroid/media/session/MediaSessionLegacyHelper;->TAG:Ljava/lang/String;
-Landroid/media/session/MediaSessionManager$Callback;
Landroid/media/session/MediaSessionManager$Callback;-><init>()V
Landroid/media/session/MediaSessionManager$Callback;->onAddressedPlayerChanged(Landroid/content/ComponentName;)V
Landroid/media/session/MediaSessionManager$Callback;->onAddressedPlayerChanged(Landroid/media/session/MediaSession$Token;)V
Landroid/media/session/MediaSessionManager$Callback;->onMediaKeyEventDispatched(Landroid/view/KeyEvent;Landroid/content/ComponentName;)V
Landroid/media/session/MediaSessionManager$Callback;->onMediaKeyEventDispatched(Landroid/view/KeyEvent;Landroid/media/session/MediaSession$Token;)V
-Landroid/media/session/MediaSessionManager$CallbackImpl;
Landroid/media/session/MediaSessionManager$CallbackImpl;-><init>(Landroid/media/session/MediaSessionManager$Callback;Landroid/os/Handler;)V
Landroid/media/session/MediaSessionManager$CallbackImpl;->mCallback:Landroid/media/session/MediaSessionManager$Callback;
Landroid/media/session/MediaSessionManager$CallbackImpl;->mHandler:Landroid/os/Handler;
@@ -43285,14 +40347,11 @@
Landroid/media/session/MediaSessionManager$CallbackImpl;->onAddressedPlayerChangedToMediaSession(Landroid/media/session/MediaSession$Token;)V
Landroid/media/session/MediaSessionManager$CallbackImpl;->onMediaKeyEventDispatchedToMediaButtonReceiver(Landroid/view/KeyEvent;Landroid/content/ComponentName;)V
Landroid/media/session/MediaSessionManager$CallbackImpl;->onMediaKeyEventDispatchedToMediaSession(Landroid/view/KeyEvent;Landroid/media/session/MediaSession$Token;)V
-Landroid/media/session/MediaSessionManager$OnMediaKeyListenerImpl;
Landroid/media/session/MediaSessionManager$OnMediaKeyListenerImpl;-><init>(Landroid/media/session/MediaSessionManager$OnMediaKeyListener;Landroid/os/Handler;)V
Landroid/media/session/MediaSessionManager$OnMediaKeyListenerImpl;->mHandler:Landroid/os/Handler;
Landroid/media/session/MediaSessionManager$OnMediaKeyListenerImpl;->mListener:Landroid/media/session/MediaSessionManager$OnMediaKeyListener;
Landroid/media/session/MediaSessionManager$OnMediaKeyListenerImpl;->onMediaKey(Landroid/view/KeyEvent;Landroid/os/ResultReceiver;)V
-Landroid/media/session/MediaSessionManager$OnSessionTokensChangedListener;
Landroid/media/session/MediaSessionManager$OnSessionTokensChangedListener;->onSessionTokensChanged(Ljava/util/List;)V
-Landroid/media/session/MediaSessionManager$OnVolumeKeyLongPressListenerImpl;
Landroid/media/session/MediaSessionManager$OnVolumeKeyLongPressListenerImpl;-><init>(Landroid/media/session/MediaSessionManager$OnVolumeKeyLongPressListener;Landroid/os/Handler;)V
Landroid/media/session/MediaSessionManager$OnVolumeKeyLongPressListenerImpl;->mHandler:Landroid/os/Handler;
Landroid/media/session/MediaSessionManager$OnVolumeKeyLongPressListenerImpl;->mListener:Landroid/media/session/MediaSessionManager$OnVolumeKeyLongPressListener;
@@ -43302,14 +40361,12 @@
Landroid/media/session/MediaSessionManager$RemoteUserInfo;->mPackageName:Ljava/lang/String;
Landroid/media/session/MediaSessionManager$RemoteUserInfo;->mPid:I
Landroid/media/session/MediaSessionManager$RemoteUserInfo;->mUid:I
-Landroid/media/session/MediaSessionManager$SessionsChangedWrapper;
Landroid/media/session/MediaSessionManager$SessionsChangedWrapper;-><init>(Landroid/content/Context;Landroid/media/session/MediaSessionManager$OnActiveSessionsChangedListener;Landroid/os/Handler;)V
Landroid/media/session/MediaSessionManager$SessionsChangedWrapper;->mContext:Landroid/content/Context;
Landroid/media/session/MediaSessionManager$SessionsChangedWrapper;->mHandler:Landroid/os/Handler;
Landroid/media/session/MediaSessionManager$SessionsChangedWrapper;->mListener:Landroid/media/session/MediaSessionManager$OnActiveSessionsChangedListener;
Landroid/media/session/MediaSessionManager$SessionsChangedWrapper;->mStub:Landroid/media/session/IActiveSessionsListener$Stub;
Landroid/media/session/MediaSessionManager$SessionsChangedWrapper;->release()V
-Landroid/media/session/MediaSessionManager$SessionTokensChangedWrapper;
Landroid/media/session/MediaSessionManager$SessionTokensChangedWrapper;-><init>(Landroid/content/Context;Ljava/util/concurrent/Executor;Landroid/media/session/MediaSessionManager$OnSessionTokensChangedListener;)V
Landroid/media/session/MediaSessionManager$SessionTokensChangedWrapper;->mContext:Landroid/content/Context;
Landroid/media/session/MediaSessionManager$SessionTokensChangedWrapper;->mExecutor:Ljava/util/concurrent/Executor;
@@ -43350,7 +40407,6 @@
Landroid/media/session/MediaSessionManager;->setRemoteVolumeController(Landroid/media/IRemoteVolumeController;)V
Landroid/media/session/MediaSessionManager;->TAG:Ljava/lang/String;
Landroid/media/session/MediaSessionManager;->toTokenList(Ljava/util/List;)Ljava/util/List;
-Landroid/media/session/ParcelableVolumeInfo;
Landroid/media/session/ParcelableVolumeInfo;-><init>(ILandroid/media/AudioAttributes;III)V
Landroid/media/session/ParcelableVolumeInfo;-><init>(Landroid/os/Parcel;)V
Landroid/media/session/ParcelableVolumeInfo;->audioAttrs:Landroid/media/AudioAttributes;
@@ -43359,7 +40415,6 @@
Landroid/media/session/ParcelableVolumeInfo;->currentVolume:I
Landroid/media/session/ParcelableVolumeInfo;->maxVolume:I
Landroid/media/session/ParcelableVolumeInfo;->volumeType:I
-Landroid/media/session/PlaybackState$Actions;
Landroid/media/session/PlaybackState$Builder;->mActions:J
Landroid/media/session/PlaybackState$Builder;->mActiveItemId:J
Landroid/media/session/PlaybackState$Builder;->mBufferedPosition:J
@@ -43380,7 +40435,6 @@
Landroid/media/session/PlaybackState$CustomAction;->mExtras:Landroid/os/Bundle;
Landroid/media/session/PlaybackState$CustomAction;->mIcon:I
Landroid/media/session/PlaybackState$CustomAction;->mName:Ljava/lang/CharSequence;
-Landroid/media/session/PlaybackState$State;
Landroid/media/session/PlaybackState;-><init>(IJJFJJLjava/util/List;JLjava/lang/CharSequence;Landroid/os/Bundle;)V
Landroid/media/session/PlaybackState;-><init>(Landroid/os/Parcel;)V
Landroid/media/session/PlaybackState;->getActionForRccFlag(I)J
@@ -43400,7 +40454,6 @@
Landroid/media/session/PlaybackState;->mState:I
Landroid/media/session/PlaybackState;->mUpdateTime:J
Landroid/media/session/PlaybackState;->TAG:Ljava/lang/String;
-Landroid/media/SessionCommand2;
Landroid/media/SessionCommand2;-><init>(I)V
Landroid/media/SessionCommand2;-><init>(Ljava/lang/String;Landroid/os/Bundle;)V
Landroid/media/SessionCommand2;->COMMAND_CODE_ADJUST_VOLUME:I
@@ -43446,7 +40499,6 @@
Landroid/media/SessionCommand2;->getProvider()Landroid/media/update/MediaSession2Provider$CommandProvider;
Landroid/media/SessionCommand2;->mProvider:Landroid/media/update/MediaSession2Provider$CommandProvider;
Landroid/media/SessionCommand2;->toBundle()Landroid/os/Bundle;
-Landroid/media/SessionCommandGroup2;
Landroid/media/SessionCommandGroup2;-><init>()V
Landroid/media/SessionCommandGroup2;-><init>(Landroid/media/SessionCommandGroup2;)V
Landroid/media/SessionCommandGroup2;-><init>(Landroid/media/update/MediaSession2Provider$CommandGroupProvider;)V
@@ -43462,8 +40514,6 @@
Landroid/media/SessionCommandGroup2;->removeCommand(I)V
Landroid/media/SessionCommandGroup2;->removeCommand(Landroid/media/SessionCommand2;)V
Landroid/media/SessionCommandGroup2;->toBundle()Landroid/os/Bundle;
-Landroid/media/SessionToken2$TokenType;
-Landroid/media/SessionToken2;
Landroid/media/SessionToken2;-><init>(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)V
Landroid/media/SessionToken2;-><init>(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;I)V
Landroid/media/SessionToken2;-><init>(Landroid/media/update/SessionToken2Provider;)V
@@ -43481,8 +40531,6 @@
Landroid/media/SessionToken2;->UID_UNKNOWN:I
Landroid/media/SoundPool$Builder;->mAudioAttributes:Landroid/media/AudioAttributes;
Landroid/media/SoundPool$Builder;->mMaxStreams:I
-Landroid/media/SoundPool$EventHandler;
-Landroid/media/SoundPool$EventHandler;-><init>(Landroid/os/Looper;)V
Landroid/media/SoundPool;-><init>(ILandroid/media/AudioAttributes;)V
Landroid/media/SoundPool;->DEBUG:Z
Landroid/media/SoundPool;->mAttributes:Landroid/media/AudioAttributes;
@@ -43508,7 +40556,6 @@
Landroid/media/SoundPool;->_mute(Z)V
Landroid/media/SoundPool;->_play(IFFIIF)I
Landroid/media/SoundPool;->_setVolume(IFF)V
-Landroid/media/soundtrigger/ISoundTriggerDetectionService$Stub$Proxy;
Landroid/media/soundtrigger/ISoundTriggerDetectionService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/media/soundtrigger/ISoundTriggerDetectionService$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/media/soundtrigger/ISoundTriggerDetectionService$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -43517,7 +40564,6 @@
Landroid/media/soundtrigger/ISoundTriggerDetectionService$Stub$Proxy;->onStopOperation(Landroid/os/ParcelUuid;I)V
Landroid/media/soundtrigger/ISoundTriggerDetectionService$Stub$Proxy;->removeClient(Landroid/os/ParcelUuid;)V
Landroid/media/soundtrigger/ISoundTriggerDetectionService$Stub$Proxy;->setClient(Landroid/os/ParcelUuid;Landroid/os/Bundle;Landroid/media/soundtrigger/ISoundTriggerDetectionServiceClient;)V
-Landroid/media/soundtrigger/ISoundTriggerDetectionService$Stub;
Landroid/media/soundtrigger/ISoundTriggerDetectionService$Stub;-><init>()V
Landroid/media/soundtrigger/ISoundTriggerDetectionService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/soundtrigger/ISoundTriggerDetectionService;
Landroid/media/soundtrigger/ISoundTriggerDetectionService$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -43526,23 +40572,19 @@
Landroid/media/soundtrigger/ISoundTriggerDetectionService$Stub;->TRANSACTION_onStopOperation:I
Landroid/media/soundtrigger/ISoundTriggerDetectionService$Stub;->TRANSACTION_removeClient:I
Landroid/media/soundtrigger/ISoundTriggerDetectionService$Stub;->TRANSACTION_setClient:I
-Landroid/media/soundtrigger/ISoundTriggerDetectionService;
Landroid/media/soundtrigger/ISoundTriggerDetectionService;->onError(Landroid/os/ParcelUuid;II)V
Landroid/media/soundtrigger/ISoundTriggerDetectionService;->onGenericRecognitionEvent(Landroid/os/ParcelUuid;ILandroid/hardware/soundtrigger/SoundTrigger$GenericRecognitionEvent;)V
Landroid/media/soundtrigger/ISoundTriggerDetectionService;->onStopOperation(Landroid/os/ParcelUuid;I)V
Landroid/media/soundtrigger/ISoundTriggerDetectionService;->removeClient(Landroid/os/ParcelUuid;)V
Landroid/media/soundtrigger/ISoundTriggerDetectionService;->setClient(Landroid/os/ParcelUuid;Landroid/os/Bundle;Landroid/media/soundtrigger/ISoundTriggerDetectionServiceClient;)V
-Landroid/media/soundtrigger/ISoundTriggerDetectionServiceClient$Stub$Proxy;
Landroid/media/soundtrigger/ISoundTriggerDetectionServiceClient$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/media/soundtrigger/ISoundTriggerDetectionServiceClient$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/media/soundtrigger/ISoundTriggerDetectionServiceClient$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/media/soundtrigger/ISoundTriggerDetectionServiceClient$Stub$Proxy;->onOpFinished(I)V
-Landroid/media/soundtrigger/ISoundTriggerDetectionServiceClient$Stub;
Landroid/media/soundtrigger/ISoundTriggerDetectionServiceClient$Stub;-><init>()V
Landroid/media/soundtrigger/ISoundTriggerDetectionServiceClient$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/soundtrigger/ISoundTriggerDetectionServiceClient;
Landroid/media/soundtrigger/ISoundTriggerDetectionServiceClient$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/media/soundtrigger/ISoundTriggerDetectionServiceClient$Stub;->TRANSACTION_onOpFinished:I
-Landroid/media/soundtrigger/ISoundTriggerDetectionServiceClient;
Landroid/media/soundtrigger/ISoundTriggerDetectionServiceClient;->onOpFinished(I)V
Landroid/media/soundtrigger/SoundTriggerDetectionService;->DEBUG:Z
Landroid/media/soundtrigger/SoundTriggerDetectionService;->LOG_TAG:Ljava/lang/String;
@@ -43557,17 +40599,11 @@
Landroid/media/soundtrigger/SoundTriggerDetector$EventPayload;->mCaptureSession:I
Landroid/media/soundtrigger/SoundTriggerDetector$EventPayload;->mData:[B
Landroid/media/soundtrigger/SoundTriggerDetector$EventPayload;->mTriggerAvailable:Z
-Landroid/media/soundtrigger/SoundTriggerDetector$MyHandler;
-Landroid/media/soundtrigger/SoundTriggerDetector$MyHandler;-><init>()V
-Landroid/media/soundtrigger/SoundTriggerDetector$MyHandler;-><init>(Landroid/os/Looper;)V
-Landroid/media/soundtrigger/SoundTriggerDetector$RecognitionCallback;
-Landroid/media/soundtrigger/SoundTriggerDetector$RecognitionCallback;-><init>()V
Landroid/media/soundtrigger/SoundTriggerDetector$RecognitionCallback;->onError(I)V
Landroid/media/soundtrigger/SoundTriggerDetector$RecognitionCallback;->onGenericSoundTriggerDetected(Landroid/hardware/soundtrigger/SoundTrigger$GenericRecognitionEvent;)V
Landroid/media/soundtrigger/SoundTriggerDetector$RecognitionCallback;->onKeyphraseDetected(Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionEvent;)V
Landroid/media/soundtrigger/SoundTriggerDetector$RecognitionCallback;->onRecognitionPaused()V
Landroid/media/soundtrigger/SoundTriggerDetector$RecognitionCallback;->onRecognitionResumed()V
-Landroid/media/soundtrigger/SoundTriggerDetector$RecognitionFlags;
Landroid/media/soundtrigger/SoundTriggerDetector;-><init>(Lcom/android/internal/app/ISoundTriggerService;Ljava/util/UUID;Landroid/media/soundtrigger/SoundTriggerDetector$Callback;Landroid/os/Handler;)V
Landroid/media/soundtrigger/SoundTriggerDetector;->DBG:Z
Landroid/media/soundtrigger/SoundTriggerDetector;->dump(Ljava/lang/String;Ljava/io/PrintWriter;)V
@@ -43601,7 +40637,6 @@
Landroid/media/soundtrigger/SoundTriggerManager;->mReceiverInstanceMap:Ljava/util/HashMap;
Landroid/media/soundtrigger/SoundTriggerManager;->mSoundTriggerService:Lcom/android/internal/app/ISoundTriggerService;
Landroid/media/soundtrigger/SoundTriggerManager;->TAG:Ljava/lang/String;
-Landroid/media/SRTRenderer;
Landroid/media/SRTRenderer;-><init>(Landroid/content/Context;)V
Landroid/media/SRTRenderer;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
Landroid/media/SRTRenderer;->createTrack(Landroid/media/MediaFormat;)Landroid/media/SubtitleTrack;
@@ -43610,16 +40645,12 @@
Landroid/media/SRTRenderer;->mRender:Z
Landroid/media/SRTRenderer;->mRenderingWidget:Landroid/media/WebVttRenderingWidget;
Landroid/media/SRTRenderer;->supports(Landroid/media/MediaFormat;)Z
-Landroid/media/SubtitleController$Anchor;
Landroid/media/SubtitleController$Anchor;->getSubtitleLooper()Landroid/os/Looper;
Landroid/media/SubtitleController$Anchor;->setSubtitleWidget(Landroid/media/SubtitleTrack$RenderingWidget;)V
-Landroid/media/SubtitleController$Listener;
Landroid/media/SubtitleController$Listener;->onSubtitleTrackSelected(Landroid/media/SubtitleTrack;)V
-Landroid/media/SubtitleController$Renderer;
Landroid/media/SubtitleController$Renderer;-><init>()V
Landroid/media/SubtitleController$Renderer;->createTrack(Landroid/media/MediaFormat;)Landroid/media/SubtitleTrack;
Landroid/media/SubtitleController$Renderer;->supports(Landroid/media/MediaFormat;)Z
-Landroid/media/SubtitleController;
Landroid/media/SubtitleController;->addTrack(Landroid/media/MediaFormat;)Landroid/media/SubtitleTrack;
Landroid/media/SubtitleController;->checkAnchorLooper()V
Landroid/media/SubtitleController;->doHide()V
@@ -43658,7 +40689,6 @@
Landroid/media/SubtitleData;->mTrackIndex:I
Landroid/media/SubtitleData;->parseParcel(Landroid/os/Parcel;)Z
Landroid/media/SubtitleData;->TAG:Ljava/lang/String;
-Landroid/media/SubtitleTrack$Cue;
Landroid/media/SubtitleTrack$Cue;-><init>()V
Landroid/media/SubtitleTrack$Cue;->mEndTimeMs:J
Landroid/media/SubtitleTrack$Cue;->mInnerTimesMs:[J
@@ -43666,8 +40696,6 @@
Landroid/media/SubtitleTrack$Cue;->mRunID:J
Landroid/media/SubtitleTrack$Cue;->mStartTimeMs:J
Landroid/media/SubtitleTrack$Cue;->onTime(J)V
-Landroid/media/SubtitleTrack$CueList$EntryIterator;
-Landroid/media/SubtitleTrack$CueList$EntryIterator;-><init>(Ljava/util/SortedMap;)V
Landroid/media/SubtitleTrack$CueList$EntryIterator;->mCurrentTimeMs:J
Landroid/media/SubtitleTrack$CueList$EntryIterator;->mDone:Z
Landroid/media/SubtitleTrack$CueList$EntryIterator;->mLastEntry:Landroid/util/Pair;
@@ -43675,7 +40703,6 @@
Landroid/media/SubtitleTrack$CueList$EntryIterator;->mListIterator:Ljava/util/Iterator;
Landroid/media/SubtitleTrack$CueList$EntryIterator;->mRemainingCues:Ljava/util/SortedMap;
Landroid/media/SubtitleTrack$CueList$EntryIterator;->nextKey()V
-Landroid/media/SubtitleTrack$CueList;
Landroid/media/SubtitleTrack$CueList;-><init>()V
Landroid/media/SubtitleTrack$CueList;->add(Landroid/media/SubtitleTrack$Cue;)V
Landroid/media/SubtitleTrack$CueList;->addEvent(Landroid/media/SubtitleTrack$Cue;J)Z
@@ -43686,11 +40713,8 @@
Landroid/media/SubtitleTrack$CueList;->remove(Landroid/media/SubtitleTrack$Cue;)V
Landroid/media/SubtitleTrack$CueList;->removeEvent(Landroid/media/SubtitleTrack$Cue;J)V
Landroid/media/SubtitleTrack$CueList;->TAG:Ljava/lang/String;
-Landroid/media/SubtitleTrack$RenderingWidget$OnChangedListener;
Landroid/media/SubtitleTrack$RenderingWidget$OnChangedListener;->onChanged(Landroid/media/SubtitleTrack$RenderingWidget;)V
-Landroid/media/SubtitleTrack$RenderingWidget;
Landroid/media/SubtitleTrack$RenderingWidget;->setVisible(Z)V
-Landroid/media/SubtitleTrack$Run;
Landroid/media/SubtitleTrack$Run;-><init>()V
Landroid/media/SubtitleTrack$Run;->mEndTimeMs:J
Landroid/media/SubtitleTrack$Run;->mFirstCue:Landroid/media/SubtitleTrack$Cue;
@@ -43700,7 +40724,6 @@
Landroid/media/SubtitleTrack$Run;->mStoredEndTimeMs:J
Landroid/media/SubtitleTrack$Run;->removeAtEndTimeMs()V
Landroid/media/SubtitleTrack$Run;->storeByEndTimeMs(Landroid/util/LongSparseArray;)V
-Landroid/media/SubtitleTrack;
Landroid/media/SubtitleTrack;-><init>(Landroid/media/MediaFormat;)V
Landroid/media/SubtitleTrack;->addCue(Landroid/media/SubtitleTrack$Cue;)Z
Landroid/media/SubtitleTrack;->clearActiveCues()V
@@ -43736,8 +40759,6 @@
Landroid/media/SubtitleTrack;->takeTime(J)V
Landroid/media/SubtitleTrack;->updateActiveCues(ZJ)V
Landroid/media/SubtitleTrack;->updateView(Ljava/util/Vector;)V
-Landroid/media/SyncParams$AudioAdjustMode;
-Landroid/media/SyncParams$SyncSource;
Landroid/media/SyncParams;->mAudioAdjustMode:I
Landroid/media/SyncParams;->mFrameRate:F
Landroid/media/SyncParams;->mSet:I
@@ -43747,7 +40768,6 @@
Landroid/media/SyncParams;->SET_FRAME_RATE:I
Landroid/media/SyncParams;->SET_SYNC_SOURCE:I
Landroid/media/SyncParams;->SET_TOLERANCE:I
-Landroid/media/TextTrackCue;
Landroid/media/TextTrackCue;-><init>()V
Landroid/media/TextTrackCue;->ALIGNMENT_END:I
Landroid/media/TextTrackCue;->ALIGNMENT_LEFT:I
@@ -43774,12 +40794,10 @@
Landroid/media/TextTrackCue;->WRITING_DIRECTION_HORIZONTAL:I
Landroid/media/TextTrackCue;->WRITING_DIRECTION_VERTICAL_LR:I
Landroid/media/TextTrackCue;->WRITING_DIRECTION_VERTICAL_RL:I
-Landroid/media/TextTrackCueSpan;
Landroid/media/TextTrackCueSpan;-><init>(Ljava/lang/String;J)V
Landroid/media/TextTrackCueSpan;->mEnabled:Z
Landroid/media/TextTrackCueSpan;->mText:Ljava/lang/String;
Landroid/media/TextTrackCueSpan;->mTimestampMs:J
-Landroid/media/TextTrackRegion;
Landroid/media/TextTrackRegion;-><init>()V
Landroid/media/TextTrackRegion;->mAnchorPointX:F
Landroid/media/TextTrackRegion;->mAnchorPointY:F
@@ -43791,7 +40809,6 @@
Landroid/media/TextTrackRegion;->mWidth:F
Landroid/media/TextTrackRegion;->SCROLL_VALUE_NONE:I
Landroid/media/TextTrackRegion;->SCROLL_VALUE_SCROLL_UP:I
-Landroid/media/ThumbnailUtils$SizedThumbnailBitmap;
Landroid/media/ThumbnailUtils$SizedThumbnailBitmap;-><init>()V
Landroid/media/ThumbnailUtils$SizedThumbnailBitmap;->mBitmap:Landroid/graphics/Bitmap;
Landroid/media/ThumbnailUtils$SizedThumbnailBitmap;->mThumbnailData:[B
@@ -43812,31 +40829,25 @@
Landroid/media/TimedMetaData;->mTimestampUs:J
Landroid/media/TimedMetaData;->parseParcel(Landroid/os/Parcel;)Z
Landroid/media/TimedMetaData;->TAG:Ljava/lang/String;
-Landroid/media/TimedText$CharPos;
Landroid/media/TimedText$CharPos;-><init>(II)V
Landroid/media/TimedText$CharPos;->endChar:I
Landroid/media/TimedText$CharPos;->startChar:I
-Landroid/media/TimedText$Font;
Landroid/media/TimedText$Font;-><init>(ILjava/lang/String;)V
Landroid/media/TimedText$Font;->ID:I
Landroid/media/TimedText$Font;->name:Ljava/lang/String;
-Landroid/media/TimedText$HyperText;
Landroid/media/TimedText$HyperText;-><init>(IILjava/lang/String;Ljava/lang/String;)V
Landroid/media/TimedText$HyperText;->altString:Ljava/lang/String;
Landroid/media/TimedText$HyperText;->endChar:I
Landroid/media/TimedText$HyperText;->startChar:I
Landroid/media/TimedText$HyperText;->URL:Ljava/lang/String;
-Landroid/media/TimedText$Justification;
Landroid/media/TimedText$Justification;-><init>(II)V
Landroid/media/TimedText$Justification;->horizontalJustification:I
Landroid/media/TimedText$Justification;->verticalJustification:I
-Landroid/media/TimedText$Karaoke;
Landroid/media/TimedText$Karaoke;-><init>(IIII)V
Landroid/media/TimedText$Karaoke;->endChar:I
Landroid/media/TimedText$Karaoke;->endTimeMs:I
Landroid/media/TimedText$Karaoke;->startChar:I
Landroid/media/TimedText$Karaoke;->startTimeMs:I
-Landroid/media/TimedText$Style;
Landroid/media/TimedText$Style;-><init>(IIIZZZII)V
Landroid/media/TimedText$Style;->colorRGBA:I
Landroid/media/TimedText$Style;->endChar:I
@@ -43903,13 +40914,11 @@
Landroid/media/ToneGenerator;->native_finalize()V
Landroid/media/ToneGenerator;->native_setup(II)V
Landroid/media/ToneGenerator;->TONE_UNKNOWN:I
-Landroid/media/TtmlRenderer;
Landroid/media/TtmlRenderer;->createTrack(Landroid/media/MediaFormat;)Landroid/media/SubtitleTrack;
Landroid/media/TtmlRenderer;->mContext:Landroid/content/Context;
Landroid/media/TtmlRenderer;->MEDIA_MIMETYPE_TEXT_TTML:Ljava/lang/String;
Landroid/media/TtmlRenderer;->mRenderingWidget:Landroid/media/TtmlRenderingWidget;
Landroid/media/TtmlRenderer;->supports(Landroid/media/MediaFormat;)Z
-Landroid/media/TtmlRenderingWidget;
Landroid/media/TtmlRenderingWidget;-><init>(Landroid/content/Context;)V
Landroid/media/TtmlRenderingWidget;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
Landroid/media/TtmlRenderingWidget;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
@@ -43920,7 +40929,6 @@
Landroid/media/TtmlRenderingWidget;->setOnChangedListener(Landroid/media/SubtitleTrack$RenderingWidget$OnChangedListener;)V
Landroid/media/TtmlRenderingWidget;->setSize(II)V
Landroid/media/TtmlRenderingWidget;->setVisible(Z)V
-Landroid/media/tv/DvbDeviceInfo;
Landroid/media/tv/DvbDeviceInfo;-><init>(II)V
Landroid/media/tv/DvbDeviceInfo;-><init>(Landroid/os/Parcel;)V
Landroid/media/tv/DvbDeviceInfo;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -43929,7 +40937,6 @@
Landroid/media/tv/DvbDeviceInfo;->mAdapterId:I
Landroid/media/tv/DvbDeviceInfo;->mDeviceId:I
Landroid/media/tv/DvbDeviceInfo;->TAG:Ljava/lang/String;
-Landroid/media/tv/ITvInputClient$Stub$Proxy;
Landroid/media/tv/ITvInputClient$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/media/tv/ITvInputClient$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/media/tv/ITvInputClient$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -43950,7 +40957,6 @@
Landroid/media/tv/ITvInputClient$Stub$Proxy;->onTuned(ILandroid/net/Uri;)V
Landroid/media/tv/ITvInputClient$Stub$Proxy;->onVideoAvailable(I)V
Landroid/media/tv/ITvInputClient$Stub$Proxy;->onVideoUnavailable(II)V
-Landroid/media/tv/ITvInputClient$Stub;
Landroid/media/tv/ITvInputClient$Stub;-><init>()V
Landroid/media/tv/ITvInputClient$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/tv/ITvInputClient;
Landroid/media/tv/ITvInputClient$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -43971,7 +40977,6 @@
Landroid/media/tv/ITvInputClient$Stub;->TRANSACTION_onTuned:I
Landroid/media/tv/ITvInputClient$Stub;->TRANSACTION_onVideoAvailable:I
Landroid/media/tv/ITvInputClient$Stub;->TRANSACTION_onVideoUnavailable:I
-Landroid/media/tv/ITvInputClient;
Landroid/media/tv/ITvInputClient;->onChannelRetuned(Landroid/net/Uri;I)V
Landroid/media/tv/ITvInputClient;->onContentAllowed(I)V
Landroid/media/tv/ITvInputClient;->onContentBlocked(Ljava/lang/String;I)V
@@ -43989,40 +40994,33 @@
Landroid/media/tv/ITvInputClient;->onTuned(ILandroid/net/Uri;)V
Landroid/media/tv/ITvInputClient;->onVideoAvailable(I)V
Landroid/media/tv/ITvInputClient;->onVideoUnavailable(II)V
-Landroid/media/tv/ITvInputHardware$Stub$Proxy;
Landroid/media/tv/ITvInputHardware$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/media/tv/ITvInputHardware$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/media/tv/ITvInputHardware$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/media/tv/ITvInputHardware$Stub$Proxy;->overrideAudioSink(ILjava/lang/String;III)V
Landroid/media/tv/ITvInputHardware$Stub$Proxy;->setStreamVolume(F)V
Landroid/media/tv/ITvInputHardware$Stub$Proxy;->setSurface(Landroid/view/Surface;Landroid/media/tv/TvStreamConfig;)Z
-Landroid/media/tv/ITvInputHardware$Stub;
Landroid/media/tv/ITvInputHardware$Stub;-><init>()V
Landroid/media/tv/ITvInputHardware$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/tv/ITvInputHardware;
Landroid/media/tv/ITvInputHardware$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/media/tv/ITvInputHardware$Stub;->TRANSACTION_overrideAudioSink:I
Landroid/media/tv/ITvInputHardware$Stub;->TRANSACTION_setStreamVolume:I
Landroid/media/tv/ITvInputHardware$Stub;->TRANSACTION_setSurface:I
-Landroid/media/tv/ITvInputHardware;
Landroid/media/tv/ITvInputHardware;->overrideAudioSink(ILjava/lang/String;III)V
Landroid/media/tv/ITvInputHardware;->setStreamVolume(F)V
Landroid/media/tv/ITvInputHardware;->setSurface(Landroid/view/Surface;Landroid/media/tv/TvStreamConfig;)Z
-Landroid/media/tv/ITvInputHardwareCallback$Stub$Proxy;
Landroid/media/tv/ITvInputHardwareCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/media/tv/ITvInputHardwareCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/media/tv/ITvInputHardwareCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/media/tv/ITvInputHardwareCallback$Stub$Proxy;->onReleased()V
Landroid/media/tv/ITvInputHardwareCallback$Stub$Proxy;->onStreamConfigChanged([Landroid/media/tv/TvStreamConfig;)V
-Landroid/media/tv/ITvInputHardwareCallback$Stub;
Landroid/media/tv/ITvInputHardwareCallback$Stub;-><init>()V
Landroid/media/tv/ITvInputHardwareCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/tv/ITvInputHardwareCallback;
Landroid/media/tv/ITvInputHardwareCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/media/tv/ITvInputHardwareCallback$Stub;->TRANSACTION_onReleased:I
Landroid/media/tv/ITvInputHardwareCallback$Stub;->TRANSACTION_onStreamConfigChanged:I
-Landroid/media/tv/ITvInputHardwareCallback;
Landroid/media/tv/ITvInputHardwareCallback;->onReleased()V
Landroid/media/tv/ITvInputHardwareCallback;->onStreamConfigChanged([Landroid/media/tv/TvStreamConfig;)V
-Landroid/media/tv/ITvInputManager$Stub$Proxy;
Landroid/media/tv/ITvInputManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/media/tv/ITvInputManager$Stub$Proxy;->acquireTvInputHardware(ILandroid/media/tv/ITvInputHardwareCallback;Landroid/media/tv/TvInputInfo;I)Landroid/media/tv/ITvInputHardware;
Landroid/media/tv/ITvInputManager$Stub$Proxy;->addBlockedRating(Ljava/lang/String;I)V
@@ -44071,7 +41069,6 @@
Landroid/media/tv/ITvInputManager$Stub$Proxy;->unblockContent(Landroid/os/IBinder;Ljava/lang/String;I)V
Landroid/media/tv/ITvInputManager$Stub$Proxy;->unregisterCallback(Landroid/media/tv/ITvInputManagerCallback;I)V
Landroid/media/tv/ITvInputManager$Stub$Proxy;->updateTvInputInfo(Landroid/media/tv/TvInputInfo;I)V
-Landroid/media/tv/ITvInputManager$Stub;
Landroid/media/tv/ITvInputManager$Stub;-><init>()V
Landroid/media/tv/ITvInputManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/tv/ITvInputManager;
Landroid/media/tv/ITvInputManager$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -44120,7 +41117,6 @@
Landroid/media/tv/ITvInputManager$Stub;->TRANSACTION_unblockContent:I
Landroid/media/tv/ITvInputManager$Stub;->TRANSACTION_unregisterCallback:I
Landroid/media/tv/ITvInputManager$Stub;->TRANSACTION_updateTvInputInfo:I
-Landroid/media/tv/ITvInputManager;
Landroid/media/tv/ITvInputManager;->acquireTvInputHardware(ILandroid/media/tv/ITvInputHardwareCallback;Landroid/media/tv/TvInputInfo;I)Landroid/media/tv/ITvInputHardware;
Landroid/media/tv/ITvInputManager;->addBlockedRating(Ljava/lang/String;I)V
Landroid/media/tv/ITvInputManager;->captureFrame(Ljava/lang/String;Landroid/view/Surface;Landroid/media/tv/TvStreamConfig;I)Z
@@ -44166,7 +41162,6 @@
Landroid/media/tv/ITvInputManager;->unblockContent(Landroid/os/IBinder;Ljava/lang/String;I)V
Landroid/media/tv/ITvInputManager;->unregisterCallback(Landroid/media/tv/ITvInputManagerCallback;I)V
Landroid/media/tv/ITvInputManager;->updateTvInputInfo(Landroid/media/tv/TvInputInfo;I)V
-Landroid/media/tv/ITvInputManagerCallback$Stub$Proxy;
Landroid/media/tv/ITvInputManagerCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/media/tv/ITvInputManagerCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/media/tv/ITvInputManagerCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -44175,7 +41170,6 @@
Landroid/media/tv/ITvInputManagerCallback$Stub$Proxy;->onInputStateChanged(Ljava/lang/String;I)V
Landroid/media/tv/ITvInputManagerCallback$Stub$Proxy;->onInputUpdated(Ljava/lang/String;)V
Landroid/media/tv/ITvInputManagerCallback$Stub$Proxy;->onTvInputInfoUpdated(Landroid/media/tv/TvInputInfo;)V
-Landroid/media/tv/ITvInputManagerCallback$Stub;
Landroid/media/tv/ITvInputManagerCallback$Stub;-><init>()V
Landroid/media/tv/ITvInputManagerCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/tv/ITvInputManagerCallback;
Landroid/media/tv/ITvInputManagerCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -44184,13 +41178,11 @@
Landroid/media/tv/ITvInputManagerCallback$Stub;->TRANSACTION_onInputStateChanged:I
Landroid/media/tv/ITvInputManagerCallback$Stub;->TRANSACTION_onInputUpdated:I
Landroid/media/tv/ITvInputManagerCallback$Stub;->TRANSACTION_onTvInputInfoUpdated:I
-Landroid/media/tv/ITvInputManagerCallback;
Landroid/media/tv/ITvInputManagerCallback;->onInputAdded(Ljava/lang/String;)V
Landroid/media/tv/ITvInputManagerCallback;->onInputRemoved(Ljava/lang/String;)V
Landroid/media/tv/ITvInputManagerCallback;->onInputStateChanged(Ljava/lang/String;I)V
Landroid/media/tv/ITvInputManagerCallback;->onInputUpdated(Ljava/lang/String;)V
Landroid/media/tv/ITvInputManagerCallback;->onTvInputInfoUpdated(Landroid/media/tv/TvInputInfo;)V
-Landroid/media/tv/ITvInputService$Stub$Proxy;
Landroid/media/tv/ITvInputService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/media/tv/ITvInputService$Stub$Proxy;->createRecordingSession(Landroid/media/tv/ITvInputSessionCallback;Ljava/lang/String;)V
Landroid/media/tv/ITvInputService$Stub$Proxy;->createSession(Landroid/view/InputChannel;Landroid/media/tv/ITvInputSessionCallback;Ljava/lang/String;)V
@@ -44202,7 +41194,6 @@
Landroid/media/tv/ITvInputService$Stub$Proxy;->notifyHdmiDeviceRemoved(Landroid/hardware/hdmi/HdmiDeviceInfo;)V
Landroid/media/tv/ITvInputService$Stub$Proxy;->registerCallback(Landroid/media/tv/ITvInputServiceCallback;)V
Landroid/media/tv/ITvInputService$Stub$Proxy;->unregisterCallback(Landroid/media/tv/ITvInputServiceCallback;)V
-Landroid/media/tv/ITvInputService$Stub;
Landroid/media/tv/ITvInputService$Stub;-><init>()V
Landroid/media/tv/ITvInputService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/tv/ITvInputService;
Landroid/media/tv/ITvInputService$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -44214,7 +41205,6 @@
Landroid/media/tv/ITvInputService$Stub;->TRANSACTION_notifyHdmiDeviceRemoved:I
Landroid/media/tv/ITvInputService$Stub;->TRANSACTION_registerCallback:I
Landroid/media/tv/ITvInputService$Stub;->TRANSACTION_unregisterCallback:I
-Landroid/media/tv/ITvInputService;
Landroid/media/tv/ITvInputService;->createRecordingSession(Landroid/media/tv/ITvInputSessionCallback;Ljava/lang/String;)V
Landroid/media/tv/ITvInputService;->createSession(Landroid/view/InputChannel;Landroid/media/tv/ITvInputSessionCallback;Ljava/lang/String;)V
Landroid/media/tv/ITvInputService;->notifyHardwareAdded(Landroid/media/tv/TvInputHardwareInfo;)V
@@ -44223,25 +41213,21 @@
Landroid/media/tv/ITvInputService;->notifyHdmiDeviceRemoved(Landroid/hardware/hdmi/HdmiDeviceInfo;)V
Landroid/media/tv/ITvInputService;->registerCallback(Landroid/media/tv/ITvInputServiceCallback;)V
Landroid/media/tv/ITvInputService;->unregisterCallback(Landroid/media/tv/ITvInputServiceCallback;)V
-Landroid/media/tv/ITvInputServiceCallback$Stub$Proxy;
Landroid/media/tv/ITvInputServiceCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/media/tv/ITvInputServiceCallback$Stub$Proxy;->addHardwareInput(ILandroid/media/tv/TvInputInfo;)V
Landroid/media/tv/ITvInputServiceCallback$Stub$Proxy;->addHdmiInput(ILandroid/media/tv/TvInputInfo;)V
Landroid/media/tv/ITvInputServiceCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/media/tv/ITvInputServiceCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/media/tv/ITvInputServiceCallback$Stub$Proxy;->removeHardwareInput(Ljava/lang/String;)V
-Landroid/media/tv/ITvInputServiceCallback$Stub;
Landroid/media/tv/ITvInputServiceCallback$Stub;-><init>()V
Landroid/media/tv/ITvInputServiceCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/tv/ITvInputServiceCallback;
Landroid/media/tv/ITvInputServiceCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/media/tv/ITvInputServiceCallback$Stub;->TRANSACTION_addHardwareInput:I
Landroid/media/tv/ITvInputServiceCallback$Stub;->TRANSACTION_addHdmiInput:I
Landroid/media/tv/ITvInputServiceCallback$Stub;->TRANSACTION_removeHardwareInput:I
-Landroid/media/tv/ITvInputServiceCallback;
Landroid/media/tv/ITvInputServiceCallback;->addHardwareInput(ILandroid/media/tv/TvInputInfo;)V
Landroid/media/tv/ITvInputServiceCallback;->addHdmiInput(ILandroid/media/tv/TvInputInfo;)V
Landroid/media/tv/ITvInputServiceCallback;->removeHardwareInput(Ljava/lang/String;)V
-Landroid/media/tv/ITvInputSession$Stub$Proxy;
Landroid/media/tv/ITvInputSession$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/media/tv/ITvInputSession$Stub$Proxy;->appPrivateCommand(Ljava/lang/String;Landroid/os/Bundle;)V
Landroid/media/tv/ITvInputSession$Stub$Proxy;->createOverlayView(Landroid/os/IBinder;Landroid/graphics/Rect;)V
@@ -44266,7 +41252,6 @@
Landroid/media/tv/ITvInputSession$Stub$Proxy;->timeShiftSetPlaybackParams(Landroid/media/PlaybackParams;)V
Landroid/media/tv/ITvInputSession$Stub$Proxy;->tune(Landroid/net/Uri;Landroid/os/Bundle;)V
Landroid/media/tv/ITvInputSession$Stub$Proxy;->unblockContent(Ljava/lang/String;)V
-Landroid/media/tv/ITvInputSession$Stub;
Landroid/media/tv/ITvInputSession$Stub;-><init>()V
Landroid/media/tv/ITvInputSession$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/tv/ITvInputSession;
Landroid/media/tv/ITvInputSession$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -44291,7 +41276,6 @@
Landroid/media/tv/ITvInputSession$Stub;->TRANSACTION_timeShiftSetPlaybackParams:I
Landroid/media/tv/ITvInputSession$Stub;->TRANSACTION_tune:I
Landroid/media/tv/ITvInputSession$Stub;->TRANSACTION_unblockContent:I
-Landroid/media/tv/ITvInputSession;
Landroid/media/tv/ITvInputSession;->appPrivateCommand(Ljava/lang/String;Landroid/os/Bundle;)V
Landroid/media/tv/ITvInputSession;->createOverlayView(Landroid/os/IBinder;Landroid/graphics/Rect;)V
Landroid/media/tv/ITvInputSession;->dispatchSurfaceChanged(III)V
@@ -44313,7 +41297,6 @@
Landroid/media/tv/ITvInputSession;->timeShiftSetPlaybackParams(Landroid/media/PlaybackParams;)V
Landroid/media/tv/ITvInputSession;->tune(Landroid/net/Uri;Landroid/os/Bundle;)V
Landroid/media/tv/ITvInputSession;->unblockContent(Ljava/lang/String;)V
-Landroid/media/tv/ITvInputSessionCallback$Stub$Proxy;
Landroid/media/tv/ITvInputSessionCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/media/tv/ITvInputSessionCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/media/tv/ITvInputSessionCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -44333,7 +41316,6 @@
Landroid/media/tv/ITvInputSessionCallback$Stub$Proxy;->onTuned(Landroid/net/Uri;)V
Landroid/media/tv/ITvInputSessionCallback$Stub$Proxy;->onVideoAvailable()V
Landroid/media/tv/ITvInputSessionCallback$Stub$Proxy;->onVideoUnavailable(I)V
-Landroid/media/tv/ITvInputSessionCallback$Stub;
Landroid/media/tv/ITvInputSessionCallback$Stub;-><init>()V
Landroid/media/tv/ITvInputSessionCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/tv/ITvInputSessionCallback;
Landroid/media/tv/ITvInputSessionCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -44353,7 +41335,6 @@
Landroid/media/tv/ITvInputSessionCallback$Stub;->TRANSACTION_onTuned:I
Landroid/media/tv/ITvInputSessionCallback$Stub;->TRANSACTION_onVideoAvailable:I
Landroid/media/tv/ITvInputSessionCallback$Stub;->TRANSACTION_onVideoUnavailable:I
-Landroid/media/tv/ITvInputSessionCallback;
Landroid/media/tv/ITvInputSessionCallback;->onChannelRetuned(Landroid/net/Uri;)V
Landroid/media/tv/ITvInputSessionCallback;->onContentAllowed()V
Landroid/media/tv/ITvInputSessionCallback;->onContentBlocked(Ljava/lang/String;)V
@@ -44370,10 +41351,7 @@
Landroid/media/tv/ITvInputSessionCallback;->onTuned(Landroid/net/Uri;)V
Landroid/media/tv/ITvInputSessionCallback;->onVideoAvailable()V
Landroid/media/tv/ITvInputSessionCallback;->onVideoUnavailable(I)V
-Landroid/media/tv/ITvInputSessionWrapper$TvInputEventReceiver;
-Landroid/media/tv/ITvInputSessionWrapper$TvInputEventReceiver;-><init>(Landroid/view/InputChannel;Landroid/os/Looper;)V
Landroid/media/tv/ITvInputSessionWrapper$TvInputEventReceiver;->onInputEvent(Landroid/view/InputEvent;I)V
-Landroid/media/tv/ITvInputSessionWrapper;
Landroid/media/tv/ITvInputSessionWrapper;-><init>(Landroid/content/Context;Landroid/media/tv/TvInputService$RecordingSession;)V
Landroid/media/tv/ITvInputSessionWrapper;-><init>(Landroid/content/Context;Landroid/media/tv/TvInputService$Session;Landroid/view/InputChannel;)V
Landroid/media/tv/ITvInputSessionWrapper;->appPrivateCommand(Ljava/lang/String;Landroid/os/Bundle;)V
@@ -44429,21 +41407,17 @@
Landroid/media/tv/ITvInputSessionWrapper;->timeShiftSetPlaybackParams(Landroid/media/PlaybackParams;)V
Landroid/media/tv/ITvInputSessionWrapper;->tune(Landroid/net/Uri;Landroid/os/Bundle;)V
Landroid/media/tv/ITvInputSessionWrapper;->unblockContent(Ljava/lang/String;)V
-Landroid/media/tv/ITvRemoteProvider$Stub$Proxy;
Landroid/media/tv/ITvRemoteProvider$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/media/tv/ITvRemoteProvider$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/media/tv/ITvRemoteProvider$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/media/tv/ITvRemoteProvider$Stub$Proxy;->onInputBridgeConnected(Landroid/os/IBinder;)V
Landroid/media/tv/ITvRemoteProvider$Stub$Proxy;->setRemoteServiceInputSink(Landroid/media/tv/ITvRemoteServiceInput;)V
-Landroid/media/tv/ITvRemoteProvider$Stub;
Landroid/media/tv/ITvRemoteProvider$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/tv/ITvRemoteProvider;
Landroid/media/tv/ITvRemoteProvider$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/media/tv/ITvRemoteProvider$Stub;->TRANSACTION_onInputBridgeConnected:I
Landroid/media/tv/ITvRemoteProvider$Stub;->TRANSACTION_setRemoteServiceInputSink:I
-Landroid/media/tv/ITvRemoteProvider;
Landroid/media/tv/ITvRemoteProvider;->onInputBridgeConnected(Landroid/os/IBinder;)V
Landroid/media/tv/ITvRemoteProvider;->setRemoteServiceInputSink(Landroid/media/tv/ITvRemoteServiceInput;)V
-Landroid/media/tv/ITvRemoteServiceInput$Stub$Proxy;
Landroid/media/tv/ITvRemoteServiceInput$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/media/tv/ITvRemoteServiceInput$Stub$Proxy;->clearInputBridge(Landroid/os/IBinder;)V
Landroid/media/tv/ITvRemoteServiceInput$Stub$Proxy;->closeInputBridge(Landroid/os/IBinder;)V
@@ -44456,7 +41430,6 @@
Landroid/media/tv/ITvRemoteServiceInput$Stub$Proxy;->sendPointerSync(Landroid/os/IBinder;)V
Landroid/media/tv/ITvRemoteServiceInput$Stub$Proxy;->sendPointerUp(Landroid/os/IBinder;I)V
Landroid/media/tv/ITvRemoteServiceInput$Stub$Proxy;->sendTimestamp(Landroid/os/IBinder;J)V
-Landroid/media/tv/ITvRemoteServiceInput$Stub;
Landroid/media/tv/ITvRemoteServiceInput$Stub;-><init>()V
Landroid/media/tv/ITvRemoteServiceInput$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/tv/ITvRemoteServiceInput;
Landroid/media/tv/ITvRemoteServiceInput$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -44469,7 +41442,6 @@
Landroid/media/tv/ITvRemoteServiceInput$Stub;->TRANSACTION_sendPointerSync:I
Landroid/media/tv/ITvRemoteServiceInput$Stub;->TRANSACTION_sendPointerUp:I
Landroid/media/tv/ITvRemoteServiceInput$Stub;->TRANSACTION_sendTimestamp:I
-Landroid/media/tv/ITvRemoteServiceInput;
Landroid/media/tv/TvContentRating;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V
Landroid/media/tv/TvContentRating;->DELIMITER:Ljava/lang/String;
Landroid/media/tv/TvContentRating;->mDomain:Ljava/lang/String;
@@ -44483,21 +41455,9 @@
Landroid/media/tv/TvContentRatingSystemInfo;->mApplicationInfo:Landroid/content/pm/ApplicationInfo;
Landroid/media/tv/TvContentRatingSystemInfo;->mXmlUri:Landroid/net/Uri;
Landroid/media/tv/TvContract$Channels$Logo;-><init>()V
-Landroid/media/tv/TvContract$Channels$ServiceType;
-Landroid/media/tv/TvContract$Channels$Type;
-Landroid/media/tv/TvContract$Channels$VideoFormat;
-Landroid/media/tv/TvContract$Channels$VideoResolution;
Landroid/media/tv/TvContract$Channels;-><init>()V
Landroid/media/tv/TvContract$Channels;->VIDEO_FORMAT_TO_RESOLUTION_MAP:Ljava/util/Map;
-Landroid/media/tv/TvContract$PreviewProgramColumns$AspectRatio;
-Landroid/media/tv/TvContract$PreviewProgramColumns$Availability;
-Landroid/media/tv/TvContract$PreviewProgramColumns$InteractionType;
-Landroid/media/tv/TvContract$PreviewProgramColumns$Type;
-Landroid/media/tv/TvContract$PreviewProgramColumns;
Landroid/media/tv/TvContract$PreviewPrograms;-><init>()V
-Landroid/media/tv/TvContract$ProgramColumns$ReviewRatingStyle;
-Landroid/media/tv/TvContract$ProgramColumns;
-Landroid/media/tv/TvContract$Programs$Genres$Genre;
Landroid/media/tv/TvContract$Programs$Genres;-><init>()V
Landroid/media/tv/TvContract$Programs$Genres;->CANONICAL_GENRES:Landroid/util/ArraySet;
Landroid/media/tv/TvContract$Programs$Genres;->COMMA:C
@@ -44508,7 +41468,6 @@
Landroid/media/tv/TvContract$Programs;-><init>()V
Landroid/media/tv/TvContract$RecordedPrograms;-><init>()V
Landroid/media/tv/TvContract$WatchedPrograms;-><init>()V
-Landroid/media/tv/TvContract$WatchNextPrograms$WatchNextType;
Landroid/media/tv/TvContract$WatchNextPrograms;-><init>()V
Landroid/media/tv/TvContract;-><init>()V
Landroid/media/tv/TvContract;->buildWatchedProgramUri(J)Landroid/net/Uri;
@@ -44535,7 +41494,6 @@
Landroid/media/tv/TvInputHardwareInfo$Builder;->mDeviceId:Ljava/lang/Integer;
Landroid/media/tv/TvInputHardwareInfo$Builder;->mHdmiPortId:Ljava/lang/Integer;
Landroid/media/tv/TvInputHardwareInfo$Builder;->mType:Ljava/lang/Integer;
-Landroid/media/tv/TvInputHardwareInfo$CableConnectionStatus;
Landroid/media/tv/TvInputHardwareInfo;-><init>()V
Landroid/media/tv/TvInputHardwareInfo;->mAudioAddress:Ljava/lang/String;
Landroid/media/tv/TvInputHardwareInfo;->mAudioType:I
@@ -44576,7 +41534,6 @@
Landroid/media/tv/TvInputInfo$TvInputSettings;->getCustomLabel(Landroid/content/Context;Ljava/lang/String;I)Ljava/lang/String;
Landroid/media/tv/TvInputInfo$TvInputSettings;->isHidden(Landroid/content/Context;Ljava/lang/String;I)Z
Landroid/media/tv/TvInputInfo$TvInputSettings;->TV_INPUT_SEPARATOR:Ljava/lang/String;
-Landroid/media/tv/TvInputInfo$Type;
Landroid/media/tv/TvInputInfo;-><init>(Landroid/content/pm/ResolveInfo;Ljava/lang/String;IZLjava/lang/CharSequence;ILandroid/graphics/drawable/Icon;Landroid/graphics/drawable/Icon;Landroid/graphics/drawable/Icon;Ljava/lang/String;ZILandroid/hardware/hdmi/HdmiDeviceInfo;ZLjava/lang/String;Landroid/os/Bundle;)V
Landroid/media/tv/TvInputInfo;-><init>(Landroid/os/Parcel;)V
Landroid/media/tv/TvInputInfo;->DEBUG:Z
@@ -44602,27 +41559,17 @@
Landroid/media/tv/TvInputManager$Hardware;-><init>(Landroid/media/tv/ITvInputHardware;)V
Landroid/media/tv/TvInputManager$Hardware;->getInterface()Landroid/media/tv/ITvInputHardware;
Landroid/media/tv/TvInputManager$Hardware;->mInterface:Landroid/media/tv/ITvInputHardware;
-Landroid/media/tv/TvInputManager$InputState;
-Landroid/media/tv/TvInputManager$RecordingError;
-Landroid/media/tv/TvInputManager$Session$FinishedInputEventCallback;
Landroid/media/tv/TvInputManager$Session$FinishedInputEventCallback;->onFinishedInputEvent(Ljava/lang/Object;Z)V
-Landroid/media/tv/TvInputManager$Session$InputEventHandler;
-Landroid/media/tv/TvInputManager$Session$InputEventHandler;-><init>(Landroid/os/Looper;)V
Landroid/media/tv/TvInputManager$Session$InputEventHandler;->MSG_FLUSH_INPUT_EVENT:I
Landroid/media/tv/TvInputManager$Session$InputEventHandler;->MSG_SEND_INPUT_EVENT:I
Landroid/media/tv/TvInputManager$Session$InputEventHandler;->MSG_TIMEOUT_INPUT_EVENT:I
-Landroid/media/tv/TvInputManager$Session$PendingEvent;
-Landroid/media/tv/TvInputManager$Session$PendingEvent;-><init>()V
Landroid/media/tv/TvInputManager$Session$PendingEvent;->mCallback:Landroid/media/tv/TvInputManager$Session$FinishedInputEventCallback;
Landroid/media/tv/TvInputManager$Session$PendingEvent;->mEvent:Landroid/view/InputEvent;
Landroid/media/tv/TvInputManager$Session$PendingEvent;->mEventHandler:Landroid/os/Handler;
Landroid/media/tv/TvInputManager$Session$PendingEvent;->mEventToken:Ljava/lang/Object;
Landroid/media/tv/TvInputManager$Session$PendingEvent;->mHandled:Z
Landroid/media/tv/TvInputManager$Session$PendingEvent;->recycle()V
-Landroid/media/tv/TvInputManager$Session$TvInputEventSender;
-Landroid/media/tv/TvInputManager$Session$TvInputEventSender;-><init>(Landroid/view/InputChannel;Landroid/os/Looper;)V
Landroid/media/tv/TvInputManager$Session$TvInputEventSender;->onInputEventFinished(IZ)V
-Landroid/media/tv/TvInputManager$Session;
Landroid/media/tv/TvInputManager$Session;-><init>(Landroid/os/IBinder;Landroid/view/InputChannel;Landroid/media/tv/ITvInputManager;IILandroid/util/SparseArray;)V
Landroid/media/tv/TvInputManager$Session;->containsTrack(Ljava/util/List;Ljava/lang/String;)Z
Landroid/media/tv/TvInputManager$Session;->createOverlayView(Landroid/view/View;Landroid/graphics/Rect;)V
@@ -44685,7 +41632,6 @@
Landroid/media/tv/TvInputManager$Session;->unblockContent(Landroid/media/tv/TvContentRating;)V
Landroid/media/tv/TvInputManager$Session;->updateTracks(Ljava/util/List;)Z
Landroid/media/tv/TvInputManager$Session;->updateTrackSelection(ILjava/lang/String;)Z
-Landroid/media/tv/TvInputManager$SessionCallback;
Landroid/media/tv/TvInputManager$SessionCallback;-><init>()V
Landroid/media/tv/TvInputManager$SessionCallback;->onChannelRetuned(Landroid/media/tv/TvInputManager$Session;Landroid/net/Uri;)V
Landroid/media/tv/TvInputManager$SessionCallback;->onContentAllowed(Landroid/media/tv/TvInputManager$Session;)V
@@ -44705,7 +41651,6 @@
Landroid/media/tv/TvInputManager$SessionCallback;->onVideoAvailable(Landroid/media/tv/TvInputManager$Session;)V
Landroid/media/tv/TvInputManager$SessionCallback;->onVideoSizeChanged(Landroid/media/tv/TvInputManager$Session;II)V
Landroid/media/tv/TvInputManager$SessionCallback;->onVideoUnavailable(Landroid/media/tv/TvInputManager$Session;I)V
-Landroid/media/tv/TvInputManager$SessionCallbackRecord;
Landroid/media/tv/TvInputManager$SessionCallbackRecord;-><init>(Landroid/media/tv/TvInputManager$SessionCallback;Landroid/os/Handler;)V
Landroid/media/tv/TvInputManager$SessionCallbackRecord;->mHandler:Landroid/os/Handler;
Landroid/media/tv/TvInputManager$SessionCallbackRecord;->mSession:Landroid/media/tv/TvInputManager$Session;
@@ -44728,8 +41673,6 @@
Landroid/media/tv/TvInputManager$SessionCallbackRecord;->postVideoAvailable()V
Landroid/media/tv/TvInputManager$SessionCallbackRecord;->postVideoSizeChanged(II)V
Landroid/media/tv/TvInputManager$SessionCallbackRecord;->postVideoUnavailable(I)V
-Landroid/media/tv/TvInputManager$TimeShiftStatus;
-Landroid/media/tv/TvInputManager$TvInputCallbackRecord;
Landroid/media/tv/TvInputManager$TvInputCallbackRecord;-><init>(Landroid/media/tv/TvInputManager$TvInputCallback;Landroid/os/Handler;)V
Landroid/media/tv/TvInputManager$TvInputCallbackRecord;->getCallback()Landroid/media/tv/TvInputManager$TvInputCallback;
Landroid/media/tv/TvInputManager$TvInputCallbackRecord;->mCallback:Landroid/media/tv/TvInputManager$TvInputCallback;
@@ -44739,7 +41682,6 @@
Landroid/media/tv/TvInputManager$TvInputCallbackRecord;->postInputStateChanged(Ljava/lang/String;I)V
Landroid/media/tv/TvInputManager$TvInputCallbackRecord;->postInputUpdated(Ljava/lang/String;)V
Landroid/media/tv/TvInputManager$TvInputCallbackRecord;->postTvInputInfoUpdated(Landroid/media/tv/TvInputInfo;)V
-Landroid/media/tv/TvInputManager$VideoUnavailableReason;
Landroid/media/tv/TvInputManager;-><init>(Landroid/media/tv/ITvInputManager;I)V
Landroid/media/tv/TvInputManager;->createRecordingSession(Ljava/lang/String;Landroid/media/tv/TvInputManager$SessionCallback;Landroid/os/Handler;)V
Landroid/media/tv/TvInputManager;->createSession(Ljava/lang/String;Landroid/media/tv/TvInputManager$SessionCallback;Landroid/os/Handler;)V
@@ -44771,9 +41713,7 @@
Landroid/media/tv/TvInputService$HardwareSession;->mProxySessionCallback:Landroid/media/tv/ITvInputSessionCallback;
Landroid/media/tv/TvInputService$HardwareSession;->mServiceHandler:Landroid/os/Handler;
Landroid/media/tv/TvInputService$HardwareSession;->release()V
-Landroid/media/tv/TvInputService$OverlayViewCleanUpTask;
Landroid/media/tv/TvInputService$OverlayViewCleanUpTask;-><init>()V
-Landroid/media/tv/TvInputService$OverlayViewCleanUpTask;->doInBackground([[Landroid/view/View;)Ljava/lang/Void;
Landroid/media/tv/TvInputService$RecordingSession;->appPrivateCommand(Ljava/lang/String;Landroid/os/Bundle;)V
Landroid/media/tv/TvInputService$RecordingSession;->executeOrPostRunnableOnMainThread(Ljava/lang/Runnable;)V
Landroid/media/tv/TvInputService$RecordingSession;->initialize(Landroid/media/tv/ITvInputSessionCallback;)V
@@ -44785,8 +41725,6 @@
Landroid/media/tv/TvInputService$RecordingSession;->startRecording(Landroid/net/Uri;)V
Landroid/media/tv/TvInputService$RecordingSession;->stopRecording()V
Landroid/media/tv/TvInputService$RecordingSession;->tune(Landroid/net/Uri;Landroid/os/Bundle;)V
-Landroid/media/tv/TvInputService$ServiceHandler;
-Landroid/media/tv/TvInputService$ServiceHandler;-><init>()V
Landroid/media/tv/TvInputService$ServiceHandler;->broadcastAddHardwareInput(ILandroid/media/tv/TvInputInfo;)V
Landroid/media/tv/TvInputService$ServiceHandler;->broadcastAddHdmiInput(ILandroid/media/tv/TvInputInfo;)V
Landroid/media/tv/TvInputService$ServiceHandler;->broadcastRemoveHardwareInput(Ljava/lang/String;)V
@@ -44797,8 +41735,6 @@
Landroid/media/tv/TvInputService$ServiceHandler;->DO_NOTIFY_SESSION_CREATED:I
Landroid/media/tv/TvInputService$ServiceHandler;->DO_REMOVE_HARDWARE_INPUT:I
Landroid/media/tv/TvInputService$ServiceHandler;->DO_REMOVE_HDMI_INPUT:I
-Landroid/media/tv/TvInputService$Session$TimeShiftPositionTrackingRunnable;
-Landroid/media/tv/TvInputService$Session$TimeShiftPositionTrackingRunnable;-><init>()V
Landroid/media/tv/TvInputService$Session;->appPrivateCommand(Ljava/lang/String;Landroid/os/Bundle;)V
Landroid/media/tv/TvInputService$Session;->createOverlayView(Landroid/os/IBinder;Landroid/graphics/Rect;)V
Landroid/media/tv/TvInputService$Session;->dispatchInputEvent(Landroid/view/InputEvent;Landroid/view/InputEventReceiver;)I
@@ -44850,8 +41786,6 @@
Landroid/media/tv/TvInputService;->mServiceHandler:Landroid/os/Handler;
Landroid/media/tv/TvInputService;->mTvInputManager:Landroid/media/tv/TvInputManager;
Landroid/media/tv/TvInputService;->TAG:Ljava/lang/String;
-Landroid/media/tv/TvRecordingClient$MySessionCallback;
-Landroid/media/tv/TvRecordingClient$MySessionCallback;-><init>(Ljava/lang/String;Landroid/net/Uri;Landroid/os/Bundle;)V
Landroid/media/tv/TvRecordingClient$MySessionCallback;->mChannelUri:Landroid/net/Uri;
Landroid/media/tv/TvRecordingClient$MySessionCallback;->mConnectionParams:Landroid/os/Bundle;
Landroid/media/tv/TvRecordingClient$MySessionCallback;->mInputId:Ljava/lang/String;
@@ -44896,7 +41830,6 @@
Landroid/media/tv/TvTrackInfo$Builder;->mVideoHeight:I
Landroid/media/tv/TvTrackInfo$Builder;->mVideoPixelAspectRatio:F
Landroid/media/tv/TvTrackInfo$Builder;->mVideoWidth:I
-Landroid/media/tv/TvTrackInfo$Type;
Landroid/media/tv/TvTrackInfo;-><init>(ILjava/lang/String;Ljava/lang/String;Ljava/lang/CharSequence;IIIIFFBLandroid/os/Bundle;)V
Landroid/media/tv/TvTrackInfo;-><init>(Landroid/os/Parcel;)V
Landroid/media/tv/TvTrackInfo;->mAudioChannelCount:I
@@ -44911,9 +41844,6 @@
Landroid/media/tv/TvTrackInfo;->mVideoHeight:I
Landroid/media/tv/TvTrackInfo;->mVideoPixelAspectRatio:F
Landroid/media/tv/TvTrackInfo;->mVideoWidth:I
-Landroid/media/tv/TvView$MySessionCallback;
-Landroid/media/tv/TvView$MySessionCallback;-><init>(Ljava/lang/String;Landroid/net/Uri;)V
-Landroid/media/tv/TvView$MySessionCallback;-><init>(Ljava/lang/String;Landroid/net/Uri;Landroid/os/Bundle;)V
Landroid/media/tv/TvView$MySessionCallback;->mChannelUri:Landroid/net/Uri;
Landroid/media/tv/TvView$MySessionCallback;->mInputId:Ljava/lang/String;
Landroid/media/tv/TvView$MySessionCallback;->mRecordedProgramUri:Landroid/net/Uri;
@@ -44979,7 +41909,6 @@
Landroid/media/tv/TvView;->ZORDER_MEDIA:I
Landroid/media/tv/TvView;->ZORDER_MEDIA_OVERLAY:I
Landroid/media/tv/TvView;->ZORDER_ON_TOP:I
-Landroid/media/VolumePolicy;
Landroid/media/VolumePolicy;-><init>(ZZZI)V
Landroid/media/VolumePolicy;->A11Y_MODE_INDEPENDENT_A11Y_VOLUME:I
Landroid/media/VolumePolicy;->A11Y_MODE_MEDIA_A11Y_VOLUME:I
@@ -44989,12 +41918,8 @@
Landroid/media/VolumePolicy;->vibrateToSilentDebounce:I
Landroid/media/VolumePolicy;->volumeDownToEnterSilent:Z
Landroid/media/VolumePolicy;->volumeUpToExitSilent:Z
-Landroid/media/VolumeProvider$Callback;
Landroid/media/VolumeProvider$Callback;-><init>()V
Landroid/media/VolumeProvider$Callback;->onVolumeChanged(Landroid/media/VolumeProvider;)V
-Landroid/media/VolumeProvider$ControlType;
-Landroid/media/VolumeProvider2$ControlType;
-Landroid/media/VolumeProvider2;
Landroid/media/VolumeProvider2;-><init>(III)V
Landroid/media/VolumeProvider2;->getControlType()I
Landroid/media/VolumeProvider2;->getCurrentVolume()I
@@ -45020,9 +41945,6 @@
Landroid/media/VolumeShaper$Configuration$Builder;->mType:I
Landroid/media/VolumeShaper$Configuration$Builder;->mVolumes:[F
Landroid/media/VolumeShaper$Configuration$Builder;->setId(I)Landroid/media/VolumeShaper$Configuration$Builder;
-Landroid/media/VolumeShaper$Configuration$InterpolatorType;
-Landroid/media/VolumeShaper$Configuration$OptionFlag;
-Landroid/media/VolumeShaper$Configuration$Type;
Landroid/media/VolumeShaper$Configuration;-><init>(I)V
Landroid/media/VolumeShaper$Configuration;->checkCurveForErrors([F[FZ)Ljava/lang/String;
Landroid/media/VolumeShaper$Configuration;->checkCurveForErrorsAndThrowException([F[FZZ)V
@@ -45038,7 +41960,6 @@
Landroid/media/VolumeShaper$Configuration;->OPTION_FLAG_VOLUME_IN_DBFS:I
Landroid/media/VolumeShaper$Configuration;->TYPE_ID:I
Landroid/media/VolumeShaper$Configuration;->TYPE_SCALE:I
-Landroid/media/VolumeShaper$Operation$Builder;
Landroid/media/VolumeShaper$Operation$Builder;-><init>()V
Landroid/media/VolumeShaper$Operation$Builder;-><init>(Landroid/media/VolumeShaper$Operation;)V
Landroid/media/VolumeShaper$Operation$Builder;->build()Landroid/media/VolumeShaper$Operation;
@@ -45052,7 +41973,6 @@
Landroid/media/VolumeShaper$Operation$Builder;->setFlags(I)Landroid/media/VolumeShaper$Operation$Builder;
Landroid/media/VolumeShaper$Operation$Builder;->setXOffset(F)Landroid/media/VolumeShaper$Operation$Builder;
Landroid/media/VolumeShaper$Operation$Builder;->terminate()Landroid/media/VolumeShaper$Operation$Builder;
-Landroid/media/VolumeShaper$Operation$Flag;
Landroid/media/VolumeShaper$Operation;->FLAG_CREATE_IF_NEEDED:I
Landroid/media/VolumeShaper$Operation;->FLAG_DEFER:I
Landroid/media/VolumeShaper$Operation;->FLAG_JOIN:I
@@ -45060,7 +41980,6 @@
Landroid/media/VolumeShaper$Operation;->FLAG_PUBLIC_ALL:I
Landroid/media/VolumeShaper$Operation;->FLAG_REVERSE:I
Landroid/media/VolumeShaper$Operation;->FLAG_TERMINATE:I
-Landroid/media/VolumeShaper$State;
Landroid/media/VolumeShaper$State;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/media/VolumeShaper$State;->getVolume()F
Landroid/media/VolumeShaper$State;->getXOffset()F
@@ -45070,12 +41989,10 @@
Landroid/media/VolumeShaper;->getStatePlayer(I)Landroid/media/VolumeShaper$State;
Landroid/media/VolumeShaper;->mId:I
Landroid/media/VolumeShaper;->mWeakPlayerBase:Ljava/lang/ref/WeakReference;
-Landroid/media/WebVttRenderer;
Landroid/media/WebVttRenderer;->createTrack(Landroid/media/MediaFormat;)Landroid/media/SubtitleTrack;
Landroid/media/WebVttRenderer;->mContext:Landroid/content/Context;
Landroid/media/WebVttRenderer;->mRenderingWidget:Landroid/media/WebVttRenderingWidget;
Landroid/media/WebVttRenderer;->supports(Landroid/media/MediaFormat;)Z
-Landroid/media/WebVttRenderingWidget$CueLayout;
Landroid/media/WebVttRenderingWidget$CueLayout;-><init>(Landroid/content/Context;Landroid/media/TextTrackCue;Landroid/view/accessibility/CaptioningManager$CaptionStyle;F)V
Landroid/media/WebVttRenderingWidget$CueLayout;->getCue()Landroid/media/TextTrackCue;
Landroid/media/WebVttRenderingWidget$CueLayout;->isActive()Z
@@ -45089,7 +42006,6 @@
Landroid/media/WebVttRenderingWidget$CueLayout;->setCaptionStyle(Landroid/view/accessibility/CaptioningManager$CaptionStyle;F)V
Landroid/media/WebVttRenderingWidget$CueLayout;->setOrder(I)V
Landroid/media/WebVttRenderingWidget$CueLayout;->update()V
-Landroid/media/WebVttRenderingWidget$RegionLayout;
Landroid/media/WebVttRenderingWidget$RegionLayout;-><init>(Landroid/content/Context;Landroid/media/TextTrackRegion;Landroid/view/accessibility/CaptioningManager$CaptionStyle;F)V
Landroid/media/WebVttRenderingWidget$RegionLayout;->getRegion()Landroid/media/TextTrackRegion;
Landroid/media/WebVttRenderingWidget$RegionLayout;->mCaptionStyle:Landroid/view/accessibility/CaptioningManager$CaptionStyle;
@@ -45101,13 +42017,11 @@
Landroid/media/WebVttRenderingWidget$RegionLayout;->prune()Z
Landroid/media/WebVttRenderingWidget$RegionLayout;->put(Landroid/media/TextTrackCue;)V
Landroid/media/WebVttRenderingWidget$RegionLayout;->setCaptionStyle(Landroid/view/accessibility/CaptioningManager$CaptionStyle;F)V
-Landroid/media/WebVttRenderingWidget$SpanLayout;
Landroid/media/WebVttRenderingWidget$SpanLayout;-><init>(Landroid/content/Context;[Landroid/media/TextTrackCueSpan;)V
Landroid/media/WebVttRenderingWidget$SpanLayout;->mBuilder:Landroid/text/SpannableStringBuilder;
Landroid/media/WebVttRenderingWidget$SpanLayout;->mSpans:[Landroid/media/TextTrackCueSpan;
Landroid/media/WebVttRenderingWidget$SpanLayout;->setCaptionStyle(Landroid/view/accessibility/CaptioningManager$CaptionStyle;F)V
Landroid/media/WebVttRenderingWidget$SpanLayout;->update()V
-Landroid/media/WebVttRenderingWidget;
Landroid/media/WebVttRenderingWidget;-><init>(Landroid/content/Context;)V
Landroid/media/WebVttRenderingWidget;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
Landroid/media/WebVttRenderingWidget;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
@@ -45152,7 +42066,6 @@
Landroid/metrics/LogMaker;->setTimestamp(J)Landroid/metrics/LogMaker;
Landroid/metrics/LogMaker;->setUid(I)Landroid/metrics/LogMaker;
Landroid/metrics/LogMaker;->TAG:Ljava/lang/String;
-Landroid/metrics/MetricsReader$Event;
Landroid/metrics/MetricsReader$Event;-><init>(JIILjava/lang/Object;)V
Landroid/metrics/MetricsReader$Event;-><init>(Landroid/util/EventLog$Event;)V
Landroid/metrics/MetricsReader$Event;->getData()Ljava/lang/Object;
@@ -45164,7 +42077,6 @@
Landroid/metrics/MetricsReader$Event;->mTimeMillis:J
Landroid/metrics/MetricsReader$Event;->mUid:I
Landroid/metrics/MetricsReader$Event;->setData(Ljava/lang/Object;)V
-Landroid/metrics/MetricsReader$LogReader;
Landroid/metrics/MetricsReader$LogReader;-><init>()V
Landroid/metrics/MetricsReader$LogReader;->readEvents([IJLjava/util/Collection;)V
Landroid/metrics/MetricsReader$LogReader;->writeCheckpoint(I)V
@@ -45365,7 +42277,6 @@
Landroid/mtp/MtpConstants;->TYPE_UINT64:I
Landroid/mtp/MtpConstants;->TYPE_UINT8:I
Landroid/mtp/MtpConstants;->TYPE_UNDEFINED:I
-Landroid/mtp/MtpDatabase;
Landroid/mtp/MtpDatabase;-><init>(Landroid/content/Context;Ljava/lang/String;[Ljava/lang/String;)V
Landroid/mtp/MtpDatabase;->addStorage(Landroid/os/storage/StorageVolume;)V
Landroid/mtp/MtpDatabase;->AUDIO_PROPERTIES:[I
@@ -45466,7 +42377,6 @@
Landroid/mtp/MtpDeviceInfo;->mOperationsSupported:[I
Landroid/mtp/MtpDeviceInfo;->mSerialNumber:Ljava/lang/String;
Landroid/mtp/MtpDeviceInfo;->mVersion:Ljava/lang/String;
-Landroid/mtp/MtpEvent$IllegalParameterAccess;
Landroid/mtp/MtpEvent$IllegalParameterAccess;-><init>(Ljava/lang/String;I)V
Landroid/mtp/MtpEvent;-><init>()V
Landroid/mtp/MtpEvent;->mEventCode:I
@@ -45497,12 +42407,9 @@
Landroid/mtp/MtpObjectInfo;->mThumbPixHeight:I
Landroid/mtp/MtpObjectInfo;->mThumbPixWidth:I
Landroid/mtp/MtpObjectInfo;->uint32ToLong(I)J
-Landroid/mtp/MtpPropertyGroup$Property;
-Landroid/mtp/MtpPropertyGroup$Property;-><init>(III)V
Landroid/mtp/MtpPropertyGroup$Property;->code:I
Landroid/mtp/MtpPropertyGroup$Property;->column:I
Landroid/mtp/MtpPropertyGroup$Property;->type:I
-Landroid/mtp/MtpPropertyGroup;
Landroid/mtp/MtpPropertyGroup;-><init>(Landroid/content/ContentProviderClient;Ljava/lang/String;[I)V
Landroid/mtp/MtpPropertyGroup;->createProperty(ILjava/util/ArrayList;)Landroid/mtp/MtpPropertyGroup$Property;
Landroid/mtp/MtpPropertyGroup;->format_date_time(J)Ljava/lang/String;
@@ -45516,7 +42423,6 @@
Landroid/mtp/MtpPropertyGroup;->queryAudio(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
Landroid/mtp/MtpPropertyGroup;->queryGenre(Ljava/lang/String;)Ljava/lang/String;
Landroid/mtp/MtpPropertyGroup;->TAG:Ljava/lang/String;
-Landroid/mtp/MtpPropertyList;
Landroid/mtp/MtpPropertyList;-><init>(I)V
Landroid/mtp/MtpPropertyList;->getCode()I
Landroid/mtp/MtpPropertyList;->getCount()I
@@ -45531,7 +42437,6 @@
Landroid/mtp/MtpPropertyList;->mObjectHandles:Ljava/util/List;
Landroid/mtp/MtpPropertyList;->mPropertyCodes:Ljava/util/List;
Landroid/mtp/MtpPropertyList;->mStringValues:Ljava/util/List;
-Landroid/mtp/MtpServer;
Landroid/mtp/MtpServer;-><init>(Landroid/mtp/MtpDatabase;Ljava/io/FileDescriptor;ZLjava/lang/Runnable;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
Landroid/mtp/MtpServer;->addStorage(Landroid/mtp/MtpStorage;)V
Landroid/mtp/MtpServer;->configure(Z)V
@@ -45552,7 +42457,6 @@
Landroid/mtp/MtpServer;->sendObjectAdded(I)V
Landroid/mtp/MtpServer;->sendObjectRemoved(I)V
Landroid/mtp/MtpServer;->start()V
-Landroid/mtp/MtpStorage;
Landroid/mtp/MtpStorage;-><init>(Landroid/os/storage/StorageVolume;I)V
Landroid/mtp/MtpStorage;->getDescription()Ljava/lang/String;
Landroid/mtp/MtpStorage;->getMaxFileSize()J
@@ -45568,11 +42472,9 @@
Landroid/mtp/MtpStorageInfo;->mMaxCapacity:J
Landroid/mtp/MtpStorageInfo;->mStorageId:I
Landroid/mtp/MtpStorageInfo;->mVolumeIdentifier:Ljava/lang/String;
-Landroid/mtp/MtpStorageManager$MtpNotifier;
Landroid/mtp/MtpStorageManager$MtpNotifier;-><init>()V
Landroid/mtp/MtpStorageManager$MtpNotifier;->sendObjectAdded(I)V
Landroid/mtp/MtpStorageManager$MtpNotifier;->sendObjectRemoved(I)V
-Landroid/mtp/MtpStorageManager$MtpObject;
Landroid/mtp/MtpStorageManager$MtpObject;-><init>(Ljava/lang/String;ILandroid/mtp/MtpStorageManager$MtpObject;Z)V
Landroid/mtp/MtpStorageManager$MtpObject;->addChild(Landroid/mtp/MtpStorageManager$MtpObject;)V
Landroid/mtp/MtpStorageManager$MtpObject;->copy(Z)Landroid/mtp/MtpStorageManager$MtpObject;
@@ -45611,11 +42513,7 @@
Landroid/mtp/MtpStorageManager$MtpObject;->setParent(Landroid/mtp/MtpStorageManager$MtpObject;)V
Landroid/mtp/MtpStorageManager$MtpObject;->setState(Landroid/mtp/MtpStorageManager$MtpObjectState;)V
Landroid/mtp/MtpStorageManager$MtpObject;->setVisited(Z)V
-Landroid/mtp/MtpStorageManager$MtpObjectObserver;
-Landroid/mtp/MtpStorageManager$MtpObjectObserver;-><init>(Landroid/mtp/MtpStorageManager$MtpObject;)V
Landroid/mtp/MtpStorageManager$MtpObjectObserver;->mObject:Landroid/mtp/MtpStorageManager$MtpObject;
-Landroid/mtp/MtpStorageManager$MtpObjectState;
-Landroid/mtp/MtpStorageManager$MtpObjectState;-><init>()V
Landroid/mtp/MtpStorageManager$MtpObjectState;->FROZEN:Landroid/mtp/MtpStorageManager$MtpObjectState;
Landroid/mtp/MtpStorageManager$MtpObjectState;->FROZEN_ADDED:Landroid/mtp/MtpStorageManager$MtpObjectState;
Landroid/mtp/MtpStorageManager$MtpObjectState;->FROZEN_ONESHOT_ADD:Landroid/mtp/MtpStorageManager$MtpObjectState;
@@ -45624,8 +42522,6 @@
Landroid/mtp/MtpStorageManager$MtpObjectState;->NORMAL:Landroid/mtp/MtpStorageManager$MtpObjectState;
Landroid/mtp/MtpStorageManager$MtpObjectState;->valueOf(Ljava/lang/String;)Landroid/mtp/MtpStorageManager$MtpObjectState;
Landroid/mtp/MtpStorageManager$MtpObjectState;->values()[Landroid/mtp/MtpStorageManager$MtpObjectState;
-Landroid/mtp/MtpStorageManager$MtpOperation;
-Landroid/mtp/MtpStorageManager$MtpOperation;-><init>()V
Landroid/mtp/MtpStorageManager$MtpOperation;->ADD:Landroid/mtp/MtpStorageManager$MtpOperation;
Landroid/mtp/MtpStorageManager$MtpOperation;->COPY:Landroid/mtp/MtpStorageManager$MtpOperation;
Landroid/mtp/MtpStorageManager$MtpOperation;->DELETE:Landroid/mtp/MtpStorageManager$MtpOperation;
@@ -45633,7 +42529,6 @@
Landroid/mtp/MtpStorageManager$MtpOperation;->RENAME:Landroid/mtp/MtpStorageManager$MtpOperation;
Landroid/mtp/MtpStorageManager$MtpOperation;->valueOf(Ljava/lang/String;)Landroid/mtp/MtpStorageManager$MtpOperation;
Landroid/mtp/MtpStorageManager$MtpOperation;->values()[Landroid/mtp/MtpStorageManager$MtpOperation;
-Landroid/mtp/MtpStorageManager;
Landroid/mtp/MtpStorageManager;-><init>(Landroid/mtp/MtpStorageManager$MtpNotifier;Ljava/util/Set;)V
Landroid/mtp/MtpStorageManager;->addMtpStorage(Landroid/os/storage/StorageVolume;)Landroid/mtp/MtpStorage;
Landroid/mtp/MtpStorageManager;->addObjectToCache(Landroid/mtp/MtpStorageManager$MtpObject;Ljava/lang/String;Z)Landroid/mtp/MtpStorageManager$MtpObject;
@@ -45692,15 +42587,10 @@
Landroid/net/CaptivePortal;->APP_RETURN_WANTED_AS_IS:I
Landroid/net/CaptivePortal;->mBinder:Landroid/os/IBinder;
Landroid/net/CaptivePortal;->useNetwork()V
-Landroid/net/ConnectivityManager$CallbackHandler;
-Landroid/net/ConnectivityManager$CallbackHandler;-><init>(Landroid/os/Handler;)V
-Landroid/net/ConnectivityManager$CallbackHandler;-><init>(Landroid/os/Looper;)V
Landroid/net/ConnectivityManager$CallbackHandler;->DBG:Z
Landroid/net/ConnectivityManager$CallbackHandler;->getObject(Landroid/os/Message;Ljava/lang/Class;)Ljava/lang/Object;
Landroid/net/ConnectivityManager$CallbackHandler;->TAG:Ljava/lang/String;
-Landroid/net/ConnectivityManager$Errors;
Landroid/net/ConnectivityManager$Errors;->TOO_MANY_REQUESTS:I
-Landroid/net/ConnectivityManager$LegacyRequest;
Landroid/net/ConnectivityManager$LegacyRequest;-><init>()V
Landroid/net/ConnectivityManager$LegacyRequest;->clearDnsBinding()V
Landroid/net/ConnectivityManager$LegacyRequest;->currentNetwork:Landroid/net/Network;
@@ -45709,14 +42599,11 @@
Landroid/net/ConnectivityManager$LegacyRequest;->networkCallback:Landroid/net/ConnectivityManager$NetworkCallback;
Landroid/net/ConnectivityManager$LegacyRequest;->networkCapabilities:Landroid/net/NetworkCapabilities;
Landroid/net/ConnectivityManager$LegacyRequest;->networkRequest:Landroid/net/NetworkRequest;
-Landroid/net/ConnectivityManager$MultipathPreference;
Landroid/net/ConnectivityManager$NetworkCallback;->networkRequest:Landroid/net/NetworkRequest;
Landroid/net/ConnectivityManager$NetworkCallback;->onAvailable(Landroid/net/Network;Landroid/net/NetworkCapabilities;Landroid/net/LinkProperties;)V
Landroid/net/ConnectivityManager$NetworkCallback;->onNetworkResumed(Landroid/net/Network;)V
Landroid/net/ConnectivityManager$NetworkCallback;->onNetworkSuspended(Landroid/net/Network;)V
Landroid/net/ConnectivityManager$NetworkCallback;->onPreCheck(Landroid/net/Network;)V
-Landroid/net/ConnectivityManager$PacketKeepalive;
-Landroid/net/ConnectivityManager$PacketKeepalive;-><init>(Landroid/net/Network;Landroid/net/ConnectivityManager$PacketKeepaliveCallback;)V
Landroid/net/ConnectivityManager$PacketKeepalive;->BINDER_DIED:I
Landroid/net/ConnectivityManager$PacketKeepalive;->ERROR_HARDWARE_ERROR:I
Landroid/net/ConnectivityManager$PacketKeepalive;->ERROR_HARDWARE_UNSUPPORTED:I
@@ -45736,9 +42623,6 @@
Landroid/net/ConnectivityManager$PacketKeepalive;->stopLooper()V
Landroid/net/ConnectivityManager$PacketKeepalive;->SUCCESS:I
Landroid/net/ConnectivityManager$PacketKeepalive;->TAG:Ljava/lang/String;
-Landroid/net/ConnectivityManager$PacketKeepaliveCallback;
-Landroid/net/ConnectivityManager$RestrictBackgroundStatus;
-Landroid/net/ConnectivityManager$TooManyRequestsException;
Landroid/net/ConnectivityManager$TooManyRequestsException;-><init>()V
Landroid/net/ConnectivityManager;-><init>(Landroid/content/Context;Landroid/net/IConnectivityManager;)V
Landroid/net/ConnectivityManager;->ACTION_CAPTIVE_PORTAL_TEST_COMPLETED:Ljava/lang/String;
@@ -45850,7 +42734,6 @@
Landroid/net/ConnectivityManager;->TETHER_ERROR_UNTETHER_IFACE_ERROR:I
Landroid/net/ConnectivityManager;->unsupportedStartingFrom(I)V
Landroid/net/ConnectivityManager;->updateLockdownVpn()Z
-Landroid/net/ConnectivityMetricsEvent;
Landroid/net/ConnectivityMetricsEvent;-><init>()V
Landroid/net/ConnectivityMetricsEvent;-><init>(Landroid/os/Parcel;)V
Landroid/net/ConnectivityMetricsEvent;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -45859,10 +42742,8 @@
Landroid/net/ConnectivityMetricsEvent;->netId:I
Landroid/net/ConnectivityMetricsEvent;->timestamp:J
Landroid/net/ConnectivityMetricsEvent;->transports:J
-Landroid/net/ConnectivityThread$Singleton;
Landroid/net/ConnectivityThread$Singleton;-><init>()V
Landroid/net/ConnectivityThread$Singleton;->INSTANCE:Landroid/net/ConnectivityThread;
-Landroid/net/ConnectivityThread;
Landroid/net/ConnectivityThread;-><init>()V
Landroid/net/ConnectivityThread;->createInstance()Landroid/net/ConnectivityThread;
Landroid/net/ConnectivityThread;->get()Landroid/net/ConnectivityThread;
@@ -45870,7 +42751,6 @@
Landroid/net/Credentials;->gid:I
Landroid/net/Credentials;->pid:I
Landroid/net/Credentials;->uid:I
-Landroid/net/DataUsageRequest;
Landroid/net/DataUsageRequest;-><init>(ILandroid/net/NetworkTemplate;J)V
Landroid/net/DataUsageRequest;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/net/DataUsageRequest;->PARCELABLE_KEY:Ljava/lang/String;
@@ -45881,7 +42761,6 @@
Landroid/net/DhcpInfo;-><init>(Landroid/net/DhcpInfo;)V
Landroid/net/DhcpInfo;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/net/DhcpInfo;->putAddress(Ljava/lang/StringBuffer;I)V
-Landroid/net/DhcpResults;
Landroid/net/DhcpResults;->addDns(Ljava/lang/String;)Z
Landroid/net/DhcpResults;->clear()V
Landroid/net/DhcpResults;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -45894,8 +42773,6 @@
Landroid/net/DhcpResults;->setServerAddress(Ljava/lang/String;)Z
Landroid/net/DhcpResults;->setVendorInfo(Ljava/lang/String;)V
Landroid/net/DhcpResults;->TAG:Ljava/lang/String;
-Landroid/net/EthernetManager$Listener;
-Landroid/net/EthernetManager;
Landroid/net/EthernetManager;-><init>(Landroid/content/Context;Landroid/net/IEthernetManager;)V
Landroid/net/EthernetManager;->mContext:Landroid/content/Context;
Landroid/net/EthernetManager;->mHandler:Landroid/os/Handler;
@@ -45904,7 +42781,6 @@
Landroid/net/EthernetManager;->mServiceListener:Landroid/net/IEthernetServiceListener$Stub;
Landroid/net/EthernetManager;->MSG_AVAILABILITY_CHANGED:I
Landroid/net/EthernetManager;->TAG:Ljava/lang/String;
-Landroid/net/EventLogTags;
Landroid/net/EventLogTags;-><init>()V
Landroid/net/EventLogTags;->NTP_FAILURE:I
Landroid/net/EventLogTags;->NTP_SUCCESS:I
@@ -45938,19 +42814,15 @@
Landroid/net/http/X509TrustManagerExtensions;->mDelegate:Lcom/android/org/conscrypt/TrustManagerImpl;
Landroid/net/http/X509TrustManagerExtensions;->mIsSameTrustConfiguration:Ljava/lang/reflect/Method;
Landroid/net/http/X509TrustManagerExtensions;->mTrustManager:Ljavax/net/ssl/X509TrustManager;
-Landroid/net/ICaptivePortal$Stub$Proxy;
Landroid/net/ICaptivePortal$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/net/ICaptivePortal$Stub$Proxy;->appResponse(I)V
Landroid/net/ICaptivePortal$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/net/ICaptivePortal$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/net/ICaptivePortal$Stub;
Landroid/net/ICaptivePortal$Stub;-><init>()V
Landroid/net/ICaptivePortal$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/ICaptivePortal;
Landroid/net/ICaptivePortal$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/net/ICaptivePortal$Stub;->TRANSACTION_appResponse:I
-Landroid/net/ICaptivePortal;
Landroid/net/ICaptivePortal;->appResponse(I)V
-Landroid/net/IConnectivityManager$Stub$Proxy;
Landroid/net/IConnectivityManager$Stub$Proxy;->addVpnAddress(Ljava/lang/String;I)Z
Landroid/net/IConnectivityManager$Stub$Proxy;->checkMobileProvisioning(I)I
Landroid/net/IConnectivityManager$Stub$Proxy;->establishVpn(Lcom/android/internal/net/VpnConfig;)Landroid/os/ParcelFileDescriptor;
@@ -46021,7 +42893,6 @@
Landroid/net/IConnectivityManager$Stub$Proxy;->unregisterNetworkFactory(Landroid/os/Messenger;)V
Landroid/net/IConnectivityManager$Stub$Proxy;->untether(Ljava/lang/String;Ljava/lang/String;)I
Landroid/net/IConnectivityManager$Stub$Proxy;->updateLockdownVpn()Z
-Landroid/net/IConnectivityManager$Stub;
Landroid/net/IConnectivityManager$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/net/IConnectivityManager$Stub;->TRANSACTION_addVpnAddress:I
Landroid/net/IConnectivityManager$Stub;->TRANSACTION_checkMobileProvisioning:I
@@ -46099,7 +42970,6 @@
Landroid/net/IConnectivityManager$Stub;->TRANSACTION_unregisterNetworkFactory:I
Landroid/net/IConnectivityManager$Stub;->TRANSACTION_untether:I
Landroid/net/IConnectivityManager$Stub;->TRANSACTION_updateLockdownVpn:I
-Landroid/net/IConnectivityManager;
Landroid/net/IConnectivityManager;->addVpnAddress(Ljava/lang/String;I)Z
Landroid/net/IConnectivityManager;->checkMobileProvisioning(I)I
Landroid/net/IConnectivityManager;->establishVpn(Lcom/android/internal/net/VpnConfig;)Landroid/os/ParcelFileDescriptor;
@@ -46162,7 +43032,6 @@
Landroid/net/IConnectivityManager;->unregisterNetworkFactory(Landroid/os/Messenger;)V
Landroid/net/IConnectivityManager;->untether(Ljava/lang/String;Ljava/lang/String;)I
Landroid/net/IConnectivityManager;->updateLockdownVpn()Z
-Landroid/net/IEthernetManager$Stub$Proxy;
Landroid/net/IEthernetManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/net/IEthernetManager$Stub$Proxy;->addListener(Landroid/net/IEthernetServiceListener;)V
Landroid/net/IEthernetManager$Stub$Proxy;->getAvailableInterfaces()[Ljava/lang/String;
@@ -46172,7 +43041,6 @@
Landroid/net/IEthernetManager$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/net/IEthernetManager$Stub$Proxy;->removeListener(Landroid/net/IEthernetServiceListener;)V
Landroid/net/IEthernetManager$Stub$Proxy;->setConfiguration(Ljava/lang/String;Landroid/net/IpConfiguration;)V
-Landroid/net/IEthernetManager$Stub;
Landroid/net/IEthernetManager$Stub;-><init>()V
Landroid/net/IEthernetManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/IEthernetManager;
Landroid/net/IEthernetManager$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -46182,44 +43050,36 @@
Landroid/net/IEthernetManager$Stub;->TRANSACTION_isAvailable:I
Landroid/net/IEthernetManager$Stub;->TRANSACTION_removeListener:I
Landroid/net/IEthernetManager$Stub;->TRANSACTION_setConfiguration:I
-Landroid/net/IEthernetManager;
Landroid/net/IEthernetManager;->addListener(Landroid/net/IEthernetServiceListener;)V
Landroid/net/IEthernetManager;->getAvailableInterfaces()[Ljava/lang/String;
Landroid/net/IEthernetManager;->getConfiguration(Ljava/lang/String;)Landroid/net/IpConfiguration;
Landroid/net/IEthernetManager;->isAvailable(Ljava/lang/String;)Z
Landroid/net/IEthernetManager;->removeListener(Landroid/net/IEthernetServiceListener;)V
Landroid/net/IEthernetManager;->setConfiguration(Ljava/lang/String;Landroid/net/IpConfiguration;)V
-Landroid/net/IEthernetServiceListener$Stub$Proxy;
Landroid/net/IEthernetServiceListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/net/IEthernetServiceListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/net/IEthernetServiceListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/net/IEthernetServiceListener$Stub$Proxy;->onAvailabilityChanged(Ljava/lang/String;Z)V
-Landroid/net/IEthernetServiceListener$Stub;
Landroid/net/IEthernetServiceListener$Stub;-><init>()V
Landroid/net/IEthernetServiceListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/IEthernetServiceListener;
Landroid/net/IEthernetServiceListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/net/IEthernetServiceListener$Stub;->TRANSACTION_onAvailabilityChanged:I
-Landroid/net/IEthernetServiceListener;
Landroid/net/IEthernetServiceListener;->onAvailabilityChanged(Ljava/lang/String;Z)V
-Landroid/net/IIpConnectivityMetrics$Stub$Proxy;
Landroid/net/IIpConnectivityMetrics$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/net/IIpConnectivityMetrics$Stub$Proxy;->addNetdEventCallback(ILandroid/net/INetdEventCallback;)Z
Landroid/net/IIpConnectivityMetrics$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/net/IIpConnectivityMetrics$Stub$Proxy;->logEvent(Landroid/net/ConnectivityMetricsEvent;)I
Landroid/net/IIpConnectivityMetrics$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/net/IIpConnectivityMetrics$Stub$Proxy;->removeNetdEventCallback(I)Z
-Landroid/net/IIpConnectivityMetrics$Stub;
Landroid/net/IIpConnectivityMetrics$Stub;-><init>()V
Landroid/net/IIpConnectivityMetrics$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/IIpConnectivityMetrics;
Landroid/net/IIpConnectivityMetrics$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/net/IIpConnectivityMetrics$Stub;->TRANSACTION_addNetdEventCallback:I
Landroid/net/IIpConnectivityMetrics$Stub;->TRANSACTION_logEvent:I
Landroid/net/IIpConnectivityMetrics$Stub;->TRANSACTION_removeNetdEventCallback:I
-Landroid/net/IIpConnectivityMetrics;
Landroid/net/IIpConnectivityMetrics;->addNetdEventCallback(ILandroid/net/INetdEventCallback;)Z
Landroid/net/IIpConnectivityMetrics;->logEvent(Landroid/net/ConnectivityMetricsEvent;)I
Landroid/net/IIpConnectivityMetrics;->removeNetdEventCallback(I)Z
-Landroid/net/IIpSecService$Stub$Proxy;
Landroid/net/IIpSecService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/net/IIpSecService$Stub$Proxy;->addAddressToTunnelInterface(ILandroid/net/LinkAddress;Ljava/lang/String;)V
Landroid/net/IIpSecService$Stub$Proxy;->allocateSecurityParameterIndex(Ljava/lang/String;ILandroid/os/IBinder;)Landroid/net/IpSecSpiResponse;
@@ -46236,7 +43096,6 @@
Landroid/net/IIpSecService$Stub$Proxy;->releaseSecurityParameterIndex(I)V
Landroid/net/IIpSecService$Stub$Proxy;->removeAddressFromTunnelInterface(ILandroid/net/LinkAddress;Ljava/lang/String;)V
Landroid/net/IIpSecService$Stub$Proxy;->removeTransportModeTransforms(Landroid/os/ParcelFileDescriptor;)V
-Landroid/net/IIpSecService$Stub;
Landroid/net/IIpSecService$Stub;-><init>()V
Landroid/net/IIpSecService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/IIpSecService;
Landroid/net/IIpSecService$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -46253,7 +43112,6 @@
Landroid/net/IIpSecService$Stub;->TRANSACTION_releaseSecurityParameterIndex:I
Landroid/net/IIpSecService$Stub;->TRANSACTION_removeAddressFromTunnelInterface:I
Landroid/net/IIpSecService$Stub;->TRANSACTION_removeTransportModeTransforms:I
-Landroid/net/IIpSecService;
Landroid/net/IIpSecService;->addAddressToTunnelInterface(ILandroid/net/LinkAddress;Ljava/lang/String;)V
Landroid/net/IIpSecService;->allocateSecurityParameterIndex(Ljava/lang/String;ILandroid/os/IBinder;)Landroid/net/IpSecSpiResponse;
Landroid/net/IIpSecService;->applyTransportModeTransform(Landroid/os/ParcelFileDescriptor;II)V
@@ -46267,7 +43125,6 @@
Landroid/net/IIpSecService;->releaseSecurityParameterIndex(I)V
Landroid/net/IIpSecService;->removeAddressFromTunnelInterface(ILandroid/net/LinkAddress;Ljava/lang/String;)V
Landroid/net/IIpSecService;->removeTransportModeTransforms(Landroid/os/ParcelFileDescriptor;)V
-Landroid/net/INetd$Stub$Proxy;
Landroid/net/INetd$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/net/INetd$Stub$Proxy;->addVirtualTunnelInterface(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;II)V
Landroid/net/INetd$Stub$Proxy;->bandwidthEnableDataSaver(Z)Z
@@ -46308,7 +43165,6 @@
Landroid/net/INetd$Stub$Proxy;->updateVirtualTunnelInterface(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;II)V
Landroid/net/INetd$Stub$Proxy;->wakeupAddInterface(Ljava/lang/String;Ljava/lang/String;II)V
Landroid/net/INetd$Stub$Proxy;->wakeupDelInterface(Ljava/lang/String;Ljava/lang/String;II)V
-Landroid/net/INetd$Stub;
Landroid/net/INetd$Stub;-><init>()V
Landroid/net/INetd$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/net/INetd$Stub;->TRANSACTION_addVirtualTunnelInterface:I
@@ -46348,7 +43204,6 @@
Landroid/net/INetd$Stub;->TRANSACTION_updateVirtualTunnelInterface:I
Landroid/net/INetd$Stub;->TRANSACTION_wakeupAddInterface:I
Landroid/net/INetd$Stub;->TRANSACTION_wakeupDelInterface:I
-Landroid/net/INetd;
Landroid/net/INetd;->addVirtualTunnelInterface(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;II)V
Landroid/net/INetd;->bandwidthEnableDataSaver(Z)Z
Landroid/net/INetd;->CONF:I
@@ -46415,28 +43270,24 @@
Landroid/net/INetd;->updateVirtualTunnelInterface(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;II)V
Landroid/net/INetd;->wakeupAddInterface(Ljava/lang/String;Ljava/lang/String;II)V
Landroid/net/INetd;->wakeupDelInterface(Ljava/lang/String;Ljava/lang/String;II)V
-Landroid/net/INetdEventCallback$Stub$Proxy;
Landroid/net/INetdEventCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/net/INetdEventCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/net/INetdEventCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/net/INetdEventCallback$Stub$Proxy;->onConnectEvent(Ljava/lang/String;IJI)V
Landroid/net/INetdEventCallback$Stub$Proxy;->onDnsEvent(Ljava/lang/String;[Ljava/lang/String;IJI)V
Landroid/net/INetdEventCallback$Stub$Proxy;->onPrivateDnsValidationEvent(ILjava/lang/String;Ljava/lang/String;Z)V
-Landroid/net/INetdEventCallback$Stub;
Landroid/net/INetdEventCallback$Stub;-><init>()V
Landroid/net/INetdEventCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/INetdEventCallback;
Landroid/net/INetdEventCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/net/INetdEventCallback$Stub;->TRANSACTION_onConnectEvent:I
Landroid/net/INetdEventCallback$Stub;->TRANSACTION_onDnsEvent:I
Landroid/net/INetdEventCallback$Stub;->TRANSACTION_onPrivateDnsValidationEvent:I
-Landroid/net/INetdEventCallback;
Landroid/net/INetdEventCallback;->CALLBACK_CALLER_CONNECTIVITY_SERVICE:I
Landroid/net/INetdEventCallback;->CALLBACK_CALLER_DEVICE_POLICY:I
Landroid/net/INetdEventCallback;->CALLBACK_CALLER_NETWORK_WATCHLIST:I
Landroid/net/INetdEventCallback;->onConnectEvent(Ljava/lang/String;IJI)V
Landroid/net/INetdEventCallback;->onDnsEvent(Ljava/lang/String;[Ljava/lang/String;IJI)V
Landroid/net/INetdEventCallback;->onPrivateDnsValidationEvent(ILjava/lang/String;Ljava/lang/String;Z)V
-Landroid/net/INetworkManagementEventObserver$Stub$Proxy;
Landroid/net/INetworkManagementEventObserver$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/net/INetworkManagementEventObserver$Stub$Proxy;->addressRemoved(Ljava/lang/String;Landroid/net/LinkAddress;)V
Landroid/net/INetworkManagementEventObserver$Stub$Proxy;->addressUpdated(Ljava/lang/String;Landroid/net/LinkAddress;)V
@@ -46451,7 +43302,6 @@
Landroid/net/INetworkManagementEventObserver$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/net/INetworkManagementEventObserver$Stub$Proxy;->routeRemoved(Landroid/net/RouteInfo;)V
Landroid/net/INetworkManagementEventObserver$Stub$Proxy;->routeUpdated(Landroid/net/RouteInfo;)V
-Landroid/net/INetworkManagementEventObserver$Stub;
Landroid/net/INetworkManagementEventObserver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/INetworkManagementEventObserver;
Landroid/net/INetworkManagementEventObserver$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/net/INetworkManagementEventObserver$Stub;->TRANSACTION_addressRemoved:I
@@ -46465,7 +43315,6 @@
Landroid/net/INetworkManagementEventObserver$Stub;->TRANSACTION_limitReached:I
Landroid/net/INetworkManagementEventObserver$Stub;->TRANSACTION_routeRemoved:I
Landroid/net/INetworkManagementEventObserver$Stub;->TRANSACTION_routeUpdated:I
-Landroid/net/INetworkManagementEventObserver;
Landroid/net/INetworkManagementEventObserver;->addressRemoved(Ljava/lang/String;Landroid/net/LinkAddress;)V
Landroid/net/INetworkManagementEventObserver;->addressUpdated(Ljava/lang/String;Landroid/net/LinkAddress;)V
Landroid/net/INetworkManagementEventObserver;->interfaceAdded(Ljava/lang/String;)V
@@ -46477,7 +43326,6 @@
Landroid/net/INetworkManagementEventObserver;->limitReached(Ljava/lang/String;Ljava/lang/String;)V
Landroid/net/INetworkManagementEventObserver;->routeRemoved(Landroid/net/RouteInfo;)V
Landroid/net/INetworkManagementEventObserver;->routeUpdated(Landroid/net/RouteInfo;)V
-Landroid/net/INetworkPolicyListener$Stub$Proxy;
Landroid/net/INetworkPolicyListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/net/INetworkPolicyListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/net/INetworkPolicyListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -46486,7 +43334,6 @@
Landroid/net/INetworkPolicyListener$Stub$Proxy;->onSubscriptionOverride(III)V
Landroid/net/INetworkPolicyListener$Stub$Proxy;->onUidPoliciesChanged(II)V
Landroid/net/INetworkPolicyListener$Stub$Proxy;->onUidRulesChanged(II)V
-Landroid/net/INetworkPolicyListener$Stub;
Landroid/net/INetworkPolicyListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/INetworkPolicyListener;
Landroid/net/INetworkPolicyListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/net/INetworkPolicyListener$Stub;->TRANSACTION_onMeteredIfacesChanged:I
@@ -46494,13 +43341,11 @@
Landroid/net/INetworkPolicyListener$Stub;->TRANSACTION_onSubscriptionOverride:I
Landroid/net/INetworkPolicyListener$Stub;->TRANSACTION_onUidPoliciesChanged:I
Landroid/net/INetworkPolicyListener$Stub;->TRANSACTION_onUidRulesChanged:I
-Landroid/net/INetworkPolicyListener;
Landroid/net/INetworkPolicyListener;->onMeteredIfacesChanged([Ljava/lang/String;)V
Landroid/net/INetworkPolicyListener;->onRestrictBackgroundChanged(Z)V
Landroid/net/INetworkPolicyListener;->onSubscriptionOverride(III)V
Landroid/net/INetworkPolicyListener;->onUidPoliciesChanged(II)V
Landroid/net/INetworkPolicyListener;->onUidRulesChanged(II)V
-Landroid/net/INetworkPolicyManager$Stub$Proxy;
Landroid/net/INetworkPolicyManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/net/INetworkPolicyManager$Stub$Proxy;->addUidPolicy(II)V
Landroid/net/INetworkPolicyManager$Stub$Proxy;->factoryReset(Ljava/lang/String;)V
@@ -46527,7 +43372,6 @@
Landroid/net/INetworkPolicyManager$Stub$Proxy;->setWifiMeteredOverride(Ljava/lang/String;I)V
Landroid/net/INetworkPolicyManager$Stub$Proxy;->snoozeLimit(Landroid/net/NetworkTemplate;)V
Landroid/net/INetworkPolicyManager$Stub$Proxy;->unregisterListener(Landroid/net/INetworkPolicyListener;)V
-Landroid/net/INetworkPolicyManager$Stub;
Landroid/net/INetworkPolicyManager$Stub;-><init>()V
Landroid/net/INetworkPolicyManager$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/net/INetworkPolicyManager$Stub;->TRANSACTION_addUidPolicy:I
@@ -46553,7 +43397,6 @@
Landroid/net/INetworkPolicyManager$Stub;->TRANSACTION_setWifiMeteredOverride:I
Landroid/net/INetworkPolicyManager$Stub;->TRANSACTION_snoozeLimit:I
Landroid/net/INetworkPolicyManager$Stub;->TRANSACTION_unregisterListener:I
-Landroid/net/INetworkPolicyManager;
Landroid/net/INetworkPolicyManager;->addUidPolicy(II)V
Landroid/net/INetworkPolicyManager;->factoryReset(Ljava/lang/String;)V
Landroid/net/INetworkPolicyManager;->getNetworkPolicies(Ljava/lang/String;)[Landroid/net/NetworkPolicy;
@@ -46570,34 +43413,27 @@
Landroid/net/INetworkPolicyManager;->setSubscriptionPlans(I[Landroid/telephony/SubscriptionPlan;Ljava/lang/String;)V
Landroid/net/INetworkPolicyManager;->setWifiMeteredOverride(Ljava/lang/String;I)V
Landroid/net/INetworkPolicyManager;->unregisterListener(Landroid/net/INetworkPolicyListener;)V
-Landroid/net/INetworkRecommendationProvider$Stub$Proxy;
Landroid/net/INetworkRecommendationProvider$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/net/INetworkRecommendationProvider$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/net/INetworkRecommendationProvider$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/net/INetworkRecommendationProvider$Stub$Proxy;->requestScores([Landroid/net/NetworkKey;)V
-Landroid/net/INetworkRecommendationProvider$Stub;
Landroid/net/INetworkRecommendationProvider$Stub;-><init>()V
Landroid/net/INetworkRecommendationProvider$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/INetworkRecommendationProvider;
Landroid/net/INetworkRecommendationProvider$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/net/INetworkRecommendationProvider$Stub;->TRANSACTION_requestScores:I
-Landroid/net/INetworkRecommendationProvider;
Landroid/net/INetworkRecommendationProvider;->requestScores([Landroid/net/NetworkKey;)V
-Landroid/net/INetworkScoreCache$Stub$Proxy;
Landroid/net/INetworkScoreCache$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/net/INetworkScoreCache$Stub$Proxy;->clearScores()V
Landroid/net/INetworkScoreCache$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/net/INetworkScoreCache$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/net/INetworkScoreCache$Stub$Proxy;->updateScores(Ljava/util/List;)V
-Landroid/net/INetworkScoreCache$Stub;
Landroid/net/INetworkScoreCache$Stub;-><init>()V
Landroid/net/INetworkScoreCache$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/INetworkScoreCache;
Landroid/net/INetworkScoreCache$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/net/INetworkScoreCache$Stub;->TRANSACTION_clearScores:I
Landroid/net/INetworkScoreCache$Stub;->TRANSACTION_updateScores:I
-Landroid/net/INetworkScoreCache;
Landroid/net/INetworkScoreCache;->clearScores()V
Landroid/net/INetworkScoreCache;->updateScores(Ljava/util/List;)V
-Landroid/net/INetworkScoreService$Stub$Proxy;
Landroid/net/INetworkScoreService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/net/INetworkScoreService$Stub$Proxy;->clearScores()Z
Landroid/net/INetworkScoreService$Stub$Proxy;->disableScoring()V
@@ -46612,7 +43448,6 @@
Landroid/net/INetworkScoreService$Stub$Proxy;->setActiveScorer(Ljava/lang/String;)Z
Landroid/net/INetworkScoreService$Stub$Proxy;->unregisterNetworkScoreCache(ILandroid/net/INetworkScoreCache;)V
Landroid/net/INetworkScoreService$Stub$Proxy;->updateScores([Landroid/net/ScoredNetwork;)Z
-Landroid/net/INetworkScoreService$Stub;
Landroid/net/INetworkScoreService$Stub;-><init>()V
Landroid/net/INetworkScoreService$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/net/INetworkScoreService$Stub;->TRANSACTION_clearScores:I
@@ -46626,7 +43461,6 @@
Landroid/net/INetworkScoreService$Stub;->TRANSACTION_setActiveScorer:I
Landroid/net/INetworkScoreService$Stub;->TRANSACTION_unregisterNetworkScoreCache:I
Landroid/net/INetworkScoreService$Stub;->TRANSACTION_updateScores:I
-Landroid/net/INetworkScoreService;
Landroid/net/INetworkScoreService;->clearScores()Z
Landroid/net/INetworkScoreService;->disableScoring()V
Landroid/net/INetworkScoreService;->getActiveScorer()Landroid/net/NetworkScorerAppData;
@@ -46638,7 +43472,6 @@
Landroid/net/INetworkScoreService;->setActiveScorer(Ljava/lang/String;)Z
Landroid/net/INetworkScoreService;->unregisterNetworkScoreCache(ILandroid/net/INetworkScoreCache;)V
Landroid/net/INetworkScoreService;->updateScores([Landroid/net/ScoredNetwork;)Z
-Landroid/net/INetworkStatsService$Stub$Proxy;
Landroid/net/INetworkStatsService$Stub$Proxy;->forceUpdate()V
Landroid/net/INetworkStatsService$Stub$Proxy;->forceUpdateIfaces([Landroid/net/Network;)V
Landroid/net/INetworkStatsService$Stub$Proxy;->getDataLayerSnapshotForUid(I)Landroid/net/NetworkStats;
@@ -46653,7 +43486,6 @@
Landroid/net/INetworkStatsService$Stub$Proxy;->openSessionForUsageStats(ILjava/lang/String;)Landroid/net/INetworkStatsSession;
Landroid/net/INetworkStatsService$Stub$Proxy;->registerUsageCallback(Ljava/lang/String;Landroid/net/DataUsageRequest;Landroid/os/Messenger;Landroid/os/IBinder;)Landroid/net/DataUsageRequest;
Landroid/net/INetworkStatsService$Stub$Proxy;->unregisterUsageRequest(Landroid/net/DataUsageRequest;)V
-Landroid/net/INetworkStatsService$Stub;
Landroid/net/INetworkStatsService$Stub;-><init>()V
Landroid/net/INetworkStatsService$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/net/INetworkStatsService$Stub;->TRANSACTION_forceUpdate:I
@@ -46669,7 +43501,6 @@
Landroid/net/INetworkStatsService$Stub;->TRANSACTION_openSessionForUsageStats:I
Landroid/net/INetworkStatsService$Stub;->TRANSACTION_registerUsageCallback:I
Landroid/net/INetworkStatsService$Stub;->TRANSACTION_unregisterUsageRequest:I
-Landroid/net/INetworkStatsService;
Landroid/net/INetworkStatsService;->forceUpdateIfaces([Landroid/net/Network;)V
Landroid/net/INetworkStatsService;->getDetailedUidStats([Ljava/lang/String;)Landroid/net/NetworkStats;
Landroid/net/INetworkStatsService;->getIfaceStats(Ljava/lang/String;I)J
@@ -46678,7 +43509,6 @@
Landroid/net/INetworkStatsService;->incrementOperationCount(III)V
Landroid/net/INetworkStatsService;->registerUsageCallback(Ljava/lang/String;Landroid/net/DataUsageRequest;Landroid/os/Messenger;Landroid/os/IBinder;)Landroid/net/DataUsageRequest;
Landroid/net/INetworkStatsService;->unregisterUsageRequest(Landroid/net/DataUsageRequest;)V
-Landroid/net/INetworkStatsSession$Stub$Proxy;
Landroid/net/INetworkStatsSession$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/net/INetworkStatsSession$Stub$Proxy;->close()V
Landroid/net/INetworkStatsSession$Stub$Proxy;->getDeviceSummaryForNetwork(Landroid/net/NetworkTemplate;JJ)Landroid/net/NetworkStats;
@@ -46690,7 +43520,6 @@
Landroid/net/INetworkStatsSession$Stub$Proxy;->getSummaryForAllUid(Landroid/net/NetworkTemplate;JJZ)Landroid/net/NetworkStats;
Landroid/net/INetworkStatsSession$Stub$Proxy;->getSummaryForNetwork(Landroid/net/NetworkTemplate;JJ)Landroid/net/NetworkStats;
Landroid/net/INetworkStatsSession$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/net/INetworkStatsSession$Stub;
Landroid/net/INetworkStatsSession$Stub;-><init>()V
Landroid/net/INetworkStatsSession$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/INetworkStatsSession;
Landroid/net/INetworkStatsSession$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -46702,11 +43531,9 @@
Landroid/net/INetworkStatsSession$Stub;->TRANSACTION_getRelevantUids:I
Landroid/net/INetworkStatsSession$Stub;->TRANSACTION_getSummaryForAllUid:I
Landroid/net/INetworkStatsSession$Stub;->TRANSACTION_getSummaryForNetwork:I
-Landroid/net/INetworkStatsSession;
Landroid/net/INetworkStatsSession;->getDeviceSummaryForNetwork(Landroid/net/NetworkTemplate;JJ)Landroid/net/NetworkStats;
Landroid/net/INetworkStatsSession;->getHistoryIntervalForUid(Landroid/net/NetworkTemplate;IIIIJJ)Landroid/net/NetworkStatsHistory;
Landroid/net/INetworkStatsSession;->getRelevantUids()[I
-Landroid/net/InterfaceConfiguration;
Landroid/net/InterfaceConfiguration;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/net/InterfaceConfiguration;->FLAG_DOWN:Ljava/lang/String;
Landroid/net/InterfaceConfiguration;->FLAG_UP:Ljava/lang/String;
@@ -46721,20 +43548,15 @@
Landroid/net/InterfaceConfiguration;->mHwAddr:Ljava/lang/String;
Landroid/net/InterfaceConfiguration;->setHardwareAddress(Ljava/lang/String;)V
Landroid/net/InterfaceConfiguration;->validateFlag(Ljava/lang/String;)V
-Landroid/net/IpConfiguration$IpAssignment;
-Landroid/net/IpConfiguration$IpAssignment;-><init>()V
Landroid/net/IpConfiguration$IpAssignment;->DHCP:Landroid/net/IpConfiguration$IpAssignment;
Landroid/net/IpConfiguration$IpAssignment;->UNASSIGNED:Landroid/net/IpConfiguration$IpAssignment;
Landroid/net/IpConfiguration$IpAssignment;->valueOf(Ljava/lang/String;)Landroid/net/IpConfiguration$IpAssignment;
Landroid/net/IpConfiguration$IpAssignment;->values()[Landroid/net/IpConfiguration$IpAssignment;
-Landroid/net/IpConfiguration$ProxySettings;
-Landroid/net/IpConfiguration$ProxySettings;-><init>()V
Landroid/net/IpConfiguration$ProxySettings;->PAC:Landroid/net/IpConfiguration$ProxySettings;
Landroid/net/IpConfiguration$ProxySettings;->STATIC:Landroid/net/IpConfiguration$ProxySettings;
Landroid/net/IpConfiguration$ProxySettings;->UNASSIGNED:Landroid/net/IpConfiguration$ProxySettings;
Landroid/net/IpConfiguration$ProxySettings;->valueOf(Ljava/lang/String;)Landroid/net/IpConfiguration$ProxySettings;
Landroid/net/IpConfiguration$ProxySettings;->values()[Landroid/net/IpConfiguration$ProxySettings;
-Landroid/net/IpConfiguration;
Landroid/net/IpConfiguration;-><init>()V
Landroid/net/IpConfiguration;-><init>(Landroid/net/IpConfiguration;)V
Landroid/net/IpConfiguration;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -46761,7 +43583,6 @@
Landroid/net/IpPrefix;->isIPv6()Z
Landroid/net/IpPrefix;->lengthComparator()Ljava/util/Comparator;
Landroid/net/IpPrefix;->prefixLength:I
-Landroid/net/IpSecAlgorithm$AlgorithmName;
Landroid/net/IpSecAlgorithm;->checkValidOrThrow(Ljava/lang/String;II)V
Landroid/net/IpSecAlgorithm;->CRYPT_NULL:Ljava/lang/String;
Landroid/net/IpSecAlgorithm;->equals(Landroid/net/IpSecAlgorithm;Landroid/net/IpSecAlgorithm;)Z
@@ -46773,7 +43594,6 @@
Landroid/net/IpSecAlgorithm;->mName:Ljava/lang/String;
Landroid/net/IpSecAlgorithm;->mTruncLenBits:I
Landroid/net/IpSecAlgorithm;->TAG:Ljava/lang/String;
-Landroid/net/IpSecConfig;
Landroid/net/IpSecConfig;-><init>()V
Landroid/net/IpSecConfig;-><init>(Landroid/net/IpSecConfig;)V
Landroid/net/IpSecConfig;-><init>(Landroid/os/Parcel;)V
@@ -46822,7 +43642,6 @@
Landroid/net/IpSecConfig;->setSourceAddress(Ljava/lang/String;)V
Landroid/net/IpSecConfig;->setSpiResourceId(I)V
Landroid/net/IpSecConfig;->TAG:Ljava/lang/String;
-Landroid/net/IpSecManager$IpSecTunnelInterface;
Landroid/net/IpSecManager$IpSecTunnelInterface;-><init>(Landroid/content/Context;Landroid/net/IIpSecService;Ljava/net/InetAddress;Ljava/net/InetAddress;Landroid/net/Network;)V
Landroid/net/IpSecManager$IpSecTunnelInterface;->addAddress(Ljava/net/InetAddress;I)V
Landroid/net/IpSecManager$IpSecTunnelInterface;->getInterfaceName()Ljava/lang/String;
@@ -46836,7 +43655,6 @@
Landroid/net/IpSecManager$IpSecTunnelInterface;->mService:Landroid/net/IIpSecService;
Landroid/net/IpSecManager$IpSecTunnelInterface;->mUnderlyingNetwork:Landroid/net/Network;
Landroid/net/IpSecManager$IpSecTunnelInterface;->removeAddress(Ljava/net/InetAddress;I)V
-Landroid/net/IpSecManager$PolicyDirection;
Landroid/net/IpSecManager$ResourceUnavailableException;-><init>(Ljava/lang/String;)V
Landroid/net/IpSecManager$SecurityParameterIndex;-><init>(Landroid/net/IIpSecService;Ljava/net/InetAddress;I)V
Landroid/net/IpSecManager$SecurityParameterIndex;->getResourceId()I
@@ -46847,7 +43665,6 @@
Landroid/net/IpSecManager$SecurityParameterIndex;->mSpi:I
Landroid/net/IpSecManager$SpiUnavailableException;-><init>(Ljava/lang/String;I)V
Landroid/net/IpSecManager$SpiUnavailableException;->mSpi:I
-Landroid/net/IpSecManager$Status;
Landroid/net/IpSecManager$Status;->OK:I
Landroid/net/IpSecManager$Status;->RESOURCE_UNAVAILABLE:I
Landroid/net/IpSecManager$Status;->SPI_UNAVAILABLE:I
@@ -46869,7 +43686,6 @@
Landroid/net/IpSecManager;->rethrowCheckedExceptionFromServiceSpecificException(Landroid/os/ServiceSpecificException;)Ljava/io/IOException;
Landroid/net/IpSecManager;->rethrowUncheckedExceptionFromServiceSpecificException(Landroid/os/ServiceSpecificException;)Ljava/lang/RuntimeException;
Landroid/net/IpSecManager;->TAG:Ljava/lang/String;
-Landroid/net/IpSecSpiResponse;
Landroid/net/IpSecSpiResponse;-><init>(I)V
Landroid/net/IpSecSpiResponse;-><init>(III)V
Landroid/net/IpSecSpiResponse;-><init>(Landroid/os/Parcel;)V
@@ -46881,8 +43697,6 @@
Landroid/net/IpSecTransform$Builder;->buildTunnelModeTransform(Ljava/net/InetAddress;Landroid/net/IpSecManager$SecurityParameterIndex;)Landroid/net/IpSecTransform;
Landroid/net/IpSecTransform$Builder;->mConfig:Landroid/net/IpSecConfig;
Landroid/net/IpSecTransform$Builder;->mContext:Landroid/content/Context;
-Landroid/net/IpSecTransform$EncapType;
-Landroid/net/IpSecTransform$NattKeepaliveCallback;
Landroid/net/IpSecTransform$NattKeepaliveCallback;-><init>()V
Landroid/net/IpSecTransform$NattKeepaliveCallback;->ERROR_HARDWARE_ERROR:I
Landroid/net/IpSecTransform$NattKeepaliveCallback;->ERROR_HARDWARE_UNSUPPORTED:I
@@ -46913,7 +43727,6 @@
Landroid/net/IpSecTransform;->startNattKeepalive(Landroid/net/IpSecTransform$NattKeepaliveCallback;ILandroid/os/Handler;)V
Landroid/net/IpSecTransform;->stopNattKeepalive()V
Landroid/net/IpSecTransform;->TAG:Ljava/lang/String;
-Landroid/net/IpSecTransformResponse;
Landroid/net/IpSecTransformResponse;-><init>(I)V
Landroid/net/IpSecTransformResponse;-><init>(II)V
Landroid/net/IpSecTransformResponse;-><init>(Landroid/os/Parcel;)V
@@ -46921,7 +43734,6 @@
Landroid/net/IpSecTransformResponse;->resourceId:I
Landroid/net/IpSecTransformResponse;->status:I
Landroid/net/IpSecTransformResponse;->TAG:Ljava/lang/String;
-Landroid/net/IpSecTunnelInterfaceResponse;
Landroid/net/IpSecTunnelInterfaceResponse;-><init>(I)V
Landroid/net/IpSecTunnelInterfaceResponse;-><init>(IILjava/lang/String;)V
Landroid/net/IpSecTunnelInterfaceResponse;-><init>(Landroid/os/Parcel;)V
@@ -46930,7 +43742,6 @@
Landroid/net/IpSecTunnelInterfaceResponse;->resourceId:I
Landroid/net/IpSecTunnelInterfaceResponse;->status:I
Landroid/net/IpSecTunnelInterfaceResponse;->TAG:Ljava/lang/String;
-Landroid/net/IpSecUdpEncapResponse;
Landroid/net/IpSecUdpEncapResponse;-><init>(I)V
Landroid/net/IpSecUdpEncapResponse;-><init>(IIILjava/io/FileDescriptor;)V
Landroid/net/IpSecUdpEncapResponse;-><init>(Landroid/os/Parcel;)V
@@ -46940,26 +43751,21 @@
Landroid/net/IpSecUdpEncapResponse;->resourceId:I
Landroid/net/IpSecUdpEncapResponse;->status:I
Landroid/net/IpSecUdpEncapResponse;->TAG:Ljava/lang/String;
-Landroid/net/ITetheringStatsProvider$Stub$Proxy;
Landroid/net/ITetheringStatsProvider$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/net/ITetheringStatsProvider$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/net/ITetheringStatsProvider$Stub$Proxy;->getTetherStats(I)Landroid/net/NetworkStats;
Landroid/net/ITetheringStatsProvider$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/net/ITetheringStatsProvider$Stub$Proxy;->setInterfaceQuota(Ljava/lang/String;J)V
-Landroid/net/ITetheringStatsProvider$Stub;
Landroid/net/ITetheringStatsProvider$Stub;-><init>()V
Landroid/net/ITetheringStatsProvider$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/ITetheringStatsProvider;
Landroid/net/ITetheringStatsProvider$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/net/ITetheringStatsProvider$Stub;->TRANSACTION_getTetherStats:I
Landroid/net/ITetheringStatsProvider$Stub;->TRANSACTION_setInterfaceQuota:I
-Landroid/net/ITetheringStatsProvider;
Landroid/net/ITetheringStatsProvider;->getTetherStats(I)Landroid/net/NetworkStats;
Landroid/net/ITetheringStatsProvider;->QUOTA_UNLIMITED:I
Landroid/net/ITetheringStatsProvider;->setInterfaceQuota(Ljava/lang/String;J)V
-Landroid/net/KeepalivePacketData$InvalidPacketException;
Landroid/net/KeepalivePacketData$InvalidPacketException;-><init>(I)V
Landroid/net/KeepalivePacketData$InvalidPacketException;->error:I
-Landroid/net/KeepalivePacketData;
Landroid/net/KeepalivePacketData;-><init>(Landroid/os/Parcel;)V
Landroid/net/KeepalivePacketData;-><init>(Ljava/net/InetAddress;ILjava/net/InetAddress;I[B)V
Landroid/net/KeepalivePacketData;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -46983,13 +43789,10 @@
Landroid/net/LinkAddress;->isIPv6ULA()Z
Landroid/net/LinkAddress;->scope:I
Landroid/net/LinkAddress;->scopeForUnicastAddress(Ljava/net/InetAddress;)I
-Landroid/net/LinkProperties$CompareResult;
Landroid/net/LinkProperties$CompareResult;-><init>()V
Landroid/net/LinkProperties$CompareResult;-><init>(Ljava/util/Collection;Ljava/util/Collection;)V
Landroid/net/LinkProperties$CompareResult;->added:Ljava/util/List;
Landroid/net/LinkProperties$CompareResult;->removed:Ljava/util/List;
-Landroid/net/LinkProperties$ProvisioningChange;
-Landroid/net/LinkProperties$ProvisioningChange;-><init>()V
Landroid/net/LinkProperties$ProvisioningChange;->valueOf(Ljava/lang/String;)Landroid/net/LinkProperties$ProvisioningChange;
Landroid/net/LinkProperties;->addValidatedPrivateDnsServer(Ljava/net/InetAddress;)Z
Landroid/net/LinkProperties;->compareAddresses(Landroid/net/LinkProperties;)Landroid/net/LinkProperties$CompareResult;
@@ -47028,7 +43831,6 @@
Landroid/net/LinkProperties;->setPrivateDnsServerName(Ljava/lang/String;)V
Landroid/net/LinkProperties;->setUsePrivateDns(Z)V
Landroid/net/LinkProperties;->setValidatedPrivateDnsServers(Ljava/util/Collection;)V
-Landroid/net/LinkQualityInfo;
Landroid/net/LinkQualityInfo;-><init>()V
Landroid/net/LinkQualityInfo;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/net/LinkQualityInfo;->getDataSampleDuration()I
@@ -47078,16 +43880,10 @@
Landroid/net/LocalSocket;->localAddress:Landroid/net/LocalSocketAddress;
Landroid/net/LocalSocket;->SOCKET_UNKNOWN:I
Landroid/net/LocalSocket;->sockType:I
-Landroid/net/LocalSocketAddress$Namespace;-><init>(I)V
Landroid/net/LocalSocketAddress$Namespace;->getId()I
Landroid/net/LocalSocketAddress$Namespace;->id:I
Landroid/net/LocalSocketAddress;->name:Ljava/lang/String;
Landroid/net/LocalSocketAddress;->namespace:Landroid/net/LocalSocketAddress$Namespace;
-Landroid/net/LocalSocketImpl$SocketInputStream;
-Landroid/net/LocalSocketImpl$SocketInputStream;-><init>()V
-Landroid/net/LocalSocketImpl$SocketOutputStream;
-Landroid/net/LocalSocketImpl$SocketOutputStream;-><init>()V
-Landroid/net/LocalSocketImpl;
Landroid/net/LocalSocketImpl;-><init>(Ljava/io/FileDescriptor;)V
Landroid/net/LocalSocketImpl;->accept(Landroid/net/LocalSocketImpl;)V
Landroid/net/LocalSocketImpl;->available()I
@@ -47123,9 +43919,7 @@
Landroid/net/LocalSocketImpl;->writeba_native([BIILjava/io/FileDescriptor;)V
Landroid/net/LocalSocketImpl;->writeMonitor:Ljava/lang/Object;
Landroid/net/LocalSocketImpl;->write_native(ILjava/io/FileDescriptor;)V
-Landroid/net/MacAddress$MacAddressType;
Landroid/net/MacAddress;-><init>(J)V
-Landroid/net/MacAddress;->addr([[I)[B
Landroid/net/MacAddress;->BASE_GOOGLE_MAC:Landroid/net/MacAddress;
Landroid/net/MacAddress;->byteAddrFromLongAddr(J)[B
Landroid/net/MacAddress;->byteAddrFromStringAddr(Ljava/lang/String;)[B
@@ -47154,25 +43948,19 @@
Landroid/net/MailTo;->mHeaders:Ljava/util/HashMap;
Landroid/net/MailTo;->SUBJECT:Ljava/lang/String;
Landroid/net/MailTo;->TO:Ljava/lang/String;
-Landroid/net/MatchAllNetworkSpecifier;
Landroid/net/MatchAllNetworkSpecifier;-><init>()V
Landroid/net/MatchAllNetworkSpecifier;->checkNotMatchAllNetworkSpecifier(Landroid/net/NetworkSpecifier;)V
Landroid/net/MatchAllNetworkSpecifier;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/net/MatchAllNetworkSpecifier;->satisfiedBy(Landroid/net/NetworkSpecifier;)Z
-Landroid/net/metrics/ApfProgramEvent$Decoder;
Landroid/net/metrics/ApfProgramEvent$Decoder;-><init>()V
Landroid/net/metrics/ApfProgramEvent$Decoder;->constants:Landroid/util/SparseArray;
-Landroid/net/metrics/ApfProgramEvent$Flags;
-Landroid/net/metrics/ApfProgramEvent;
Landroid/net/metrics/ApfProgramEvent;-><init>(Landroid/os/Parcel;)V
Landroid/net/metrics/ApfProgramEvent;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/net/metrics/ApfProgramEvent;->FLAG_HAS_IPV4_ADDRESS:I
Landroid/net/metrics/ApfProgramEvent;->FLAG_MULTICAST_FILTER_ON:I
Landroid/net/metrics/ApfProgramEvent;->namesOf(I)Ljava/lang/String;
-Landroid/net/metrics/ApfStats;
Landroid/net/metrics/ApfStats;-><init>(Landroid/os/Parcel;)V
Landroid/net/metrics/ApfStats;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/metrics/ConnectStats;
Landroid/net/metrics/ConnectStats;-><init>(IJLcom/android/internal/util/TokenBucket;I)V
Landroid/net/metrics/ConnectStats;->addEvent(IILjava/lang/String;)Z
Landroid/net/metrics/ConnectStats;->connectBlockingCount:I
@@ -47193,7 +43981,6 @@
Landroid/net/metrics/ConnectStats;->mMaxLatencyRecords:I
Landroid/net/metrics/ConnectStats;->netId:I
Landroid/net/metrics/ConnectStats;->transports:J
-Landroid/net/metrics/DefaultNetworkEvent;
Landroid/net/metrics/DefaultNetworkEvent;-><init>(J)V
Landroid/net/metrics/DefaultNetworkEvent;->creationTimeMs:J
Landroid/net/metrics/DefaultNetworkEvent;->durationMs:J
@@ -47207,17 +43994,14 @@
Landroid/net/metrics/DefaultNetworkEvent;->transports:I
Landroid/net/metrics/DefaultNetworkEvent;->updateDuration(J)V
Landroid/net/metrics/DefaultNetworkEvent;->validatedMs:J
-Landroid/net/metrics/DhcpClientEvent;
Landroid/net/metrics/DhcpClientEvent;-><init>(Landroid/os/Parcel;)V
Landroid/net/metrics/DhcpClientEvent;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/net/metrics/DhcpClientEvent;->durationMs:I
Landroid/net/metrics/DhcpClientEvent;->INITIAL_BOUND:Ljava/lang/String;
Landroid/net/metrics/DhcpClientEvent;->msg:Ljava/lang/String;
Landroid/net/metrics/DhcpClientEvent;->RENEWING_BOUND:Ljava/lang/String;
-Landroid/net/metrics/DhcpErrorEvent$Decoder;
Landroid/net/metrics/DhcpErrorEvent$Decoder;-><init>()V
Landroid/net/metrics/DhcpErrorEvent$Decoder;->constants:Landroid/util/SparseArray;
-Landroid/net/metrics/DhcpErrorEvent;
Landroid/net/metrics/DhcpErrorEvent;-><init>(Landroid/os/Parcel;)V
Landroid/net/metrics/DhcpErrorEvent;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/net/metrics/DhcpErrorEvent;->DHCP_ERROR:I
@@ -47227,7 +44011,6 @@
Landroid/net/metrics/DhcpErrorEvent;->L4_ERROR:I
Landroid/net/metrics/DhcpErrorEvent;->makeErrorCode(II)I
Landroid/net/metrics/DhcpErrorEvent;->MISC_ERROR:I
-Landroid/net/metrics/DnsEvent;
Landroid/net/metrics/DnsEvent;-><init>(IJI)V
Landroid/net/metrics/DnsEvent;->addResult(BBI)Z
Landroid/net/metrics/DnsEvent;->eventCount:I
@@ -47239,7 +44022,6 @@
Landroid/net/metrics/DnsEvent;->SIZE_LIMIT:I
Landroid/net/metrics/DnsEvent;->successCount:I
Landroid/net/metrics/DnsEvent;->transports:J
-Landroid/net/metrics/IpConnectivityLog;
Landroid/net/metrics/IpConnectivityLog;-><init>(Landroid/net/IIpConnectivityMetrics;)V
Landroid/net/metrics/IpConnectivityLog;->checkLoggerService()Z
Landroid/net/metrics/IpConnectivityLog;->DBG:Z
@@ -47250,11 +44032,8 @@
Landroid/net/metrics/IpConnectivityLog;->mService:Landroid/net/IIpConnectivityMetrics;
Landroid/net/metrics/IpConnectivityLog;->SERVICE_NAME:Ljava/lang/String;
Landroid/net/metrics/IpConnectivityLog;->TAG:Ljava/lang/String;
-Landroid/net/metrics/IpManagerEvent$Decoder;
Landroid/net/metrics/IpManagerEvent$Decoder;-><init>()V
Landroid/net/metrics/IpManagerEvent$Decoder;->constants:Landroid/util/SparseArray;
-Landroid/net/metrics/IpManagerEvent$EventType;
-Landroid/net/metrics/IpManagerEvent;
Landroid/net/metrics/IpManagerEvent;-><init>(Landroid/os/Parcel;)V
Landroid/net/metrics/IpManagerEvent;->COMPLETE_LIFECYCLE:I
Landroid/net/metrics/IpManagerEvent;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -47267,10 +44046,8 @@
Landroid/net/metrics/IpManagerEvent;->eventType:I
Landroid/net/metrics/IpManagerEvent;->PROVISIONING_FAIL:I
Landroid/net/metrics/IpManagerEvent;->PROVISIONING_OK:I
-Landroid/net/metrics/IpReachabilityEvent$Decoder;
Landroid/net/metrics/IpReachabilityEvent$Decoder;-><init>()V
Landroid/net/metrics/IpReachabilityEvent$Decoder;->constants:Landroid/util/SparseArray;
-Landroid/net/metrics/IpReachabilityEvent;
Landroid/net/metrics/IpReachabilityEvent;-><init>(Landroid/os/Parcel;)V
Landroid/net/metrics/IpReachabilityEvent;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/net/metrics/IpReachabilityEvent;->eventType:I
@@ -47279,11 +44056,8 @@
Landroid/net/metrics/IpReachabilityEvent;->PROBE:I
Landroid/net/metrics/IpReachabilityEvent;->PROVISIONING_LOST:I
Landroid/net/metrics/IpReachabilityEvent;->PROVISIONING_LOST_ORGANIC:I
-Landroid/net/metrics/NetworkEvent$Decoder;
Landroid/net/metrics/NetworkEvent$Decoder;-><init>()V
Landroid/net/metrics/NetworkEvent$Decoder;->constants:Landroid/util/SparseArray;
-Landroid/net/metrics/NetworkEvent$EventType;
-Landroid/net/metrics/NetworkEvent;
Landroid/net/metrics/NetworkEvent;-><init>(I)V
Landroid/net/metrics/NetworkEvent;-><init>(IJ)V
Landroid/net/metrics/NetworkEvent;-><init>(Landroid/os/Parcel;)V
@@ -47301,7 +44075,6 @@
Landroid/net/metrics/NetworkEvent;->NETWORK_UNLINGER:I
Landroid/net/metrics/NetworkEvent;->NETWORK_VALIDATED:I
Landroid/net/metrics/NetworkEvent;->NETWORK_VALIDATION_FAILED:I
-Landroid/net/metrics/NetworkMetrics$Metrics;
Landroid/net/metrics/NetworkMetrics$Metrics;-><init>()V
Landroid/net/metrics/NetworkMetrics$Metrics;->average()D
Landroid/net/metrics/NetworkMetrics$Metrics;->count(D)V
@@ -47310,7 +44083,6 @@
Landroid/net/metrics/NetworkMetrics$Metrics;->max:D
Landroid/net/metrics/NetworkMetrics$Metrics;->merge(Landroid/net/metrics/NetworkMetrics$Metrics;)V
Landroid/net/metrics/NetworkMetrics$Metrics;->sum:D
-Landroid/net/metrics/NetworkMetrics$Summary;
Landroid/net/metrics/NetworkMetrics$Summary;-><init>(IJ)V
Landroid/net/metrics/NetworkMetrics$Summary;->connectErrorRate:Landroid/net/metrics/NetworkMetrics$Metrics;
Landroid/net/metrics/NetworkMetrics$Summary;->connectLatencies:Landroid/net/metrics/NetworkMetrics$Metrics;
@@ -47322,7 +44094,6 @@
Landroid/net/metrics/NetworkMetrics$Summary;->sentAckTimeDiffenceMs:Landroid/net/metrics/NetworkMetrics$Metrics;
Landroid/net/metrics/NetworkMetrics$Summary;->tcpLossRate:Landroid/net/metrics/NetworkMetrics$Metrics;
Landroid/net/metrics/NetworkMetrics$Summary;->transports:J
-Landroid/net/metrics/NetworkMetrics;
Landroid/net/metrics/NetworkMetrics;-><init>(IJLcom/android/internal/util/TokenBucket;)V
Landroid/net/metrics/NetworkMetrics;->addConnectResult(IILjava/lang/String;)V
Landroid/net/metrics/NetworkMetrics;->addDnsResult(III)V
@@ -47336,7 +44107,6 @@
Landroid/net/metrics/NetworkMetrics;->pendingSummary:Landroid/net/metrics/NetworkMetrics$Summary;
Landroid/net/metrics/NetworkMetrics;->summary:Landroid/net/metrics/NetworkMetrics$Summary;
Landroid/net/metrics/NetworkMetrics;->transports:J
-Landroid/net/metrics/RaEvent$Builder;
Landroid/net/metrics/RaEvent$Builder;->dnsslLifetime:J
Landroid/net/metrics/RaEvent$Builder;->prefixPreferredLifetime:J
Landroid/net/metrics/RaEvent$Builder;->prefixValidLifetime:J
@@ -47344,7 +44114,6 @@
Landroid/net/metrics/RaEvent$Builder;->routeInfoLifetime:J
Landroid/net/metrics/RaEvent$Builder;->routerLifetime:J
Landroid/net/metrics/RaEvent$Builder;->updateLifetime(JJ)J
-Landroid/net/metrics/RaEvent;
Landroid/net/metrics/RaEvent;-><init>(JJJJJJ)V
Landroid/net/metrics/RaEvent;-><init>(Landroid/os/Parcel;)V
Landroid/net/metrics/RaEvent;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -47355,11 +44124,8 @@
Landroid/net/metrics/RaEvent;->rdnssLifetime:J
Landroid/net/metrics/RaEvent;->routeInfoLifetime:J
Landroid/net/metrics/RaEvent;->routerLifetime:J
-Landroid/net/metrics/ValidationProbeEvent$Decoder;
Landroid/net/metrics/ValidationProbeEvent$Decoder;-><init>()V
Landroid/net/metrics/ValidationProbeEvent$Decoder;->constants:Landroid/util/SparseArray;
-Landroid/net/metrics/ValidationProbeEvent$ReturnCode;
-Landroid/net/metrics/ValidationProbeEvent;
Landroid/net/metrics/ValidationProbeEvent;-><init>()V
Landroid/net/metrics/ValidationProbeEvent;-><init>(Landroid/os/Parcel;)V
Landroid/net/metrics/ValidationProbeEvent;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -47378,7 +44144,6 @@
Landroid/net/metrics/ValidationProbeEvent;->PROBE_PAC:I
Landroid/net/metrics/ValidationProbeEvent;->returnCode:I
Landroid/net/metrics/ValidationProbeEvent;->REVALIDATION:I
-Landroid/net/metrics/WakeupEvent;
Landroid/net/metrics/WakeupEvent;-><init>()V
Landroid/net/metrics/WakeupEvent;->dstHwAddr:Landroid/net/MacAddress;
Landroid/net/metrics/WakeupEvent;->dstIp:Ljava/lang/String;
@@ -47390,7 +44155,6 @@
Landroid/net/metrics/WakeupEvent;->srcPort:I
Landroid/net/metrics/WakeupEvent;->timestampMs:J
Landroid/net/metrics/WakeupEvent;->uid:I
-Landroid/net/metrics/WakeupStats;
Landroid/net/metrics/WakeupStats;-><init>(Ljava/lang/String;)V
Landroid/net/metrics/WakeupStats;->applicationWakeups:J
Landroid/net/metrics/WakeupStats;->countEvent(Landroid/net/metrics/WakeupEvent;)V
@@ -47410,7 +44174,6 @@
Landroid/net/metrics/WakeupStats;->systemWakeups:J
Landroid/net/metrics/WakeupStats;->totalWakeups:J
Landroid/net/metrics/WakeupStats;->updateDuration()V
-Landroid/net/MobileLinkQualityInfo;
Landroid/net/MobileLinkQualityInfo;->createFromParcelBody(Landroid/os/Parcel;)Landroid/net/MobileLinkQualityInfo;
Landroid/net/MobileLinkQualityInfo;->getCdmaDbm()I
Landroid/net/MobileLinkQualityInfo;->getCdmaEcio()I
@@ -47437,8 +44200,6 @@
Landroid/net/MobileLinkQualityInfo;->mLteSignalStrength:I
Landroid/net/MobileLinkQualityInfo;->mMobileNetworkType:I
Landroid/net/MobileLinkQualityInfo;->mRssi:I
-Landroid/net/Network$NetworkBoundSocketFactory;
-Landroid/net/Network$NetworkBoundSocketFactory;-><init>(I)V
Landroid/net/Network$NetworkBoundSocketFactory;->connectToHost(Ljava/lang/String;ILjava/net/SocketAddress;)Ljava/net/Socket;
Landroid/net/Network$NetworkBoundSocketFactory;->mNetId:I
Landroid/net/Network;-><init>(Landroid/net/Network;)V
@@ -47455,7 +44216,6 @@
Landroid/net/Network;->mUrlConnectionFactory:Lcom/android/okhttp/internalandroidapi/HttpURLConnectionFactory;
Landroid/net/Network;->setPrivateDnsBypass(Z)V
Landroid/net/Network;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-Landroid/net/NetworkAgent;
Landroid/net/NetworkAgent;-><init>(Landroid/os/Looper;Landroid/content/Context;Ljava/lang/String;Landroid/net/NetworkInfo;Landroid/net/NetworkCapabilities;Landroid/net/LinkProperties;I)V
Landroid/net/NetworkAgent;-><init>(Landroid/os/Looper;Landroid/content/Context;Ljava/lang/String;Landroid/net/NetworkInfo;Landroid/net/NetworkCapabilities;Landroid/net/LinkProperties;ILandroid/net/NetworkMisc;)V
Landroid/net/NetworkAgent;->BASE:I
@@ -47509,10 +44269,7 @@
Landroid/net/NetworkBadging;-><init>()V
Landroid/net/NetworkBadging;->getBadgedWifiSignalResource(I)I
Landroid/net/NetworkBadging;->getWifiSignalResource(I)I
-Landroid/net/NetworkCapabilities$NameOf;
Landroid/net/NetworkCapabilities$NameOf;->nameOf(I)Ljava/lang/String;
-Landroid/net/NetworkCapabilities$NetCapability;
-Landroid/net/NetworkCapabilities$Transport;
Landroid/net/NetworkCapabilities;->addUnwantedCapability(I)V
Landroid/net/NetworkCapabilities;->appendStringRepresentationOfBitMaskToStringBuilder(Ljava/lang/StringBuilder;JLandroid/net/NetworkCapabilities$NameOf;Ljava/lang/String;)V
Landroid/net/NetworkCapabilities;->appliesToUid(I)Z
@@ -47599,7 +44356,6 @@
Landroid/net/NetworkCapabilities;->TRANSPORT_NAMES:[Ljava/lang/String;
Landroid/net/NetworkCapabilities;->UNRESTRICTED_CAPABILITIES:J
Landroid/net/NetworkCapabilities;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-Landroid/net/NetworkCapabilitiesProto;
Landroid/net/NetworkCapabilitiesProto;-><init>()V
Landroid/net/NetworkCapabilitiesProto;->CAN_REPORT_SIGNAL_STRENGTH:J
Landroid/net/NetworkCapabilitiesProto;->CAPABILITIES:J
@@ -47635,7 +44391,6 @@
Landroid/net/NetworkCapabilitiesProto;->TRANSPORT_VPN:I
Landroid/net/NetworkCapabilitiesProto;->TRANSPORT_WIFI:I
Landroid/net/NetworkCapabilitiesProto;->TRANSPORT_WIFI_AWARE:I
-Landroid/net/NetworkConfig;
Landroid/net/NetworkConfig;-><init>(Ljava/lang/String;)V
Landroid/net/NetworkConfig;->dependencyMet:Z
Landroid/net/NetworkConfig;->isDefault()Z
@@ -47644,12 +44399,9 @@
Landroid/net/NetworkConfig;->radio:I
Landroid/net/NetworkConfig;->restoreTime:I
Landroid/net/NetworkConfig;->type:I
-Landroid/net/NetworkFactory$NetworkRequestInfo;
-Landroid/net/NetworkFactory$NetworkRequestInfo;-><init>(Landroid/net/NetworkRequest;I)V
Landroid/net/NetworkFactory$NetworkRequestInfo;->request:Landroid/net/NetworkRequest;
Landroid/net/NetworkFactory$NetworkRequestInfo;->requested:Z
Landroid/net/NetworkFactory$NetworkRequestInfo;->score:I
-Landroid/net/NetworkFactory;
Landroid/net/NetworkFactory;->acceptRequest(Landroid/net/NetworkRequest;I)Z
Landroid/net/NetworkFactory;->addNetworkRequest(Landroid/net/NetworkRequest;I)V
Landroid/net/NetworkFactory;->BASE:I
@@ -47683,7 +44435,6 @@
Landroid/net/NetworkFactory;->stopNetwork()V
Landroid/net/NetworkFactory;->unregister()V
Landroid/net/NetworkFactory;->VDBG:Z
-Landroid/net/NetworkIdentity;
Landroid/net/NetworkIdentity;-><init>(IILjava/lang/String;Ljava/lang/String;ZZZ)V
Landroid/net/NetworkIdentity;->buildNetworkIdentity(Landroid/content/Context;Landroid/net/NetworkState;Z)Landroid/net/NetworkIdentity;
Landroid/net/NetworkIdentity;->COMBINE_SUBTYPE_ENABLED:Z
@@ -47707,8 +44458,6 @@
Landroid/net/NetworkIdentity;->SUBTYPE_COMBINED:I
Landroid/net/NetworkIdentity;->TAG:Ljava/lang/String;
Landroid/net/NetworkIdentity;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-Landroid/net/NetworkInfo$DetailedState;-><init>()V
-Landroid/net/NetworkInfo$State;-><init>()V
Landroid/net/NetworkInfo;->mDetailedState:Landroid/net/NetworkInfo$DetailedState;
Landroid/net/NetworkInfo;->mExtraInfo:Ljava/lang/String;
Landroid/net/NetworkInfo;->mIsAvailable:Z
@@ -47727,7 +44476,6 @@
Landroid/net/NetworkKey;->createFromScanResult(Landroid/net/wifi/ScanResult;)Landroid/net/NetworkKey;
Landroid/net/NetworkKey;->createFromWifiInfo(Landroid/net/wifi/WifiInfo;)Landroid/net/NetworkKey;
Landroid/net/NetworkKey;->TAG:Ljava/lang/String;
-Landroid/net/NetworkMisc;
Landroid/net/NetworkMisc;-><init>()V
Landroid/net/NetworkMisc;-><init>(Landroid/net/NetworkMisc;)V
Landroid/net/NetworkMisc;->acceptUnvalidated:Z
@@ -47736,7 +44484,6 @@
Landroid/net/NetworkMisc;->explicitlySelected:Z
Landroid/net/NetworkMisc;->provisioningNotificationDisabled:Z
Landroid/net/NetworkMisc;->subscriberId:Ljava/lang/String;
-Landroid/net/NetworkPolicy;
Landroid/net/NetworkPolicy;-><init>(Landroid/net/NetworkTemplate;ILjava/lang/String;JJZ)V
Landroid/net/NetworkPolicy;-><init>(Landroid/net/NetworkTemplate;Landroid/util/RecurrenceRule;JJJJJZZ)V
Landroid/net/NetworkPolicy;-><init>(Landroid/net/NetworkTemplate;Landroid/util/RecurrenceRule;JJJJZZ)V
@@ -47758,14 +44505,12 @@
Landroid/net/NetworkPolicy;->VERSION_RAPID:I
Landroid/net/NetworkPolicy;->VERSION_RULE:I
Landroid/net/NetworkPolicy;->WARNING_DISABLED:J
-Landroid/net/NetworkPolicyManager$Listener;
Landroid/net/NetworkPolicyManager$Listener;-><init>()V
Landroid/net/NetworkPolicyManager$Listener;->onMeteredIfacesChanged([Ljava/lang/String;)V
Landroid/net/NetworkPolicyManager$Listener;->onRestrictBackgroundChanged(Z)V
Landroid/net/NetworkPolicyManager$Listener;->onSubscriptionOverride(III)V
Landroid/net/NetworkPolicyManager$Listener;->onUidPoliciesChanged(II)V
Landroid/net/NetworkPolicyManager$Listener;->onUidRulesChanged(II)V
-Landroid/net/NetworkPolicyManager;
Landroid/net/NetworkPolicyManager;-><init>(Landroid/content/Context;Landroid/net/INetworkPolicyManager;)V
Landroid/net/NetworkPolicyManager;->addUidPolicy(II)V
Landroid/net/NetworkPolicyManager;->ALLOW_PLATFORM_APP_POLICY:Z
@@ -47809,15 +44554,11 @@
Landroid/net/NetworkPolicyManager;->setNetworkPolicies([Landroid/net/NetworkPolicy;)V
Landroid/net/NetworkPolicyManager;->uidPoliciesToString(I)Ljava/lang/String;
Landroid/net/NetworkPolicyManager;->uidRulesToString(I)Ljava/lang/String;
-Landroid/net/NetworkProto;
Landroid/net/NetworkProto;-><init>()V
Landroid/net/NetworkProto;->NET_ID:J
-Landroid/net/NetworkQuotaInfo;
Landroid/net/NetworkQuotaInfo;-><init>()V
Landroid/net/NetworkQuotaInfo;-><init>(Landroid/os/Parcel;)V
Landroid/net/NetworkQuotaInfo;->NO_LIMIT:J
-Landroid/net/NetworkRecommendationProvider$ServiceWrapper;
-Landroid/net/NetworkRecommendationProvider$ServiceWrapper;-><init>(Landroid/content/Context;Ljava/util/concurrent/Executor;)V
Landroid/net/NetworkRecommendationProvider$ServiceWrapper;->enforceCallingPermission()V
Landroid/net/NetworkRecommendationProvider$ServiceWrapper;->execute(Ljava/lang/Runnable;)V
Landroid/net/NetworkRecommendationProvider$ServiceWrapper;->mContext:Landroid/content/Context;
@@ -47833,8 +44574,6 @@
Landroid/net/NetworkRequest$Builder;->setLinkDownstreamBandwidthKbps(I)Landroid/net/NetworkRequest$Builder;
Landroid/net/NetworkRequest$Builder;->setLinkUpstreamBandwidthKbps(I)Landroid/net/NetworkRequest$Builder;
Landroid/net/NetworkRequest$Builder;->setUids(Ljava/util/Set;)Landroid/net/NetworkRequest$Builder;
-Landroid/net/NetworkRequest$Type;
-Landroid/net/NetworkRequest$Type;-><init>()V
Landroid/net/NetworkRequest$Type;->BACKGROUND_REQUEST:Landroid/net/NetworkRequest$Type;
Landroid/net/NetworkRequest$Type;->LISTEN:Landroid/net/NetworkRequest$Type;
Landroid/net/NetworkRequest$Type;->NONE:Landroid/net/NetworkRequest$Type;
@@ -47852,7 +44591,6 @@
Landroid/net/NetworkRequest;->type:Landroid/net/NetworkRequest$Type;
Landroid/net/NetworkRequest;->typeToProtoEnum(Landroid/net/NetworkRequest$Type;)I
Landroid/net/NetworkRequest;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-Landroid/net/NetworkRequestProto;
Landroid/net/NetworkRequestProto;-><init>()V
Landroid/net/NetworkRequestProto;->LEGACY_TYPE:J
Landroid/net/NetworkRequestProto;->NETWORK_CAPABILITIES:J
@@ -47864,8 +44602,6 @@
Landroid/net/NetworkRequestProto;->TYPE_REQUEST:I
Landroid/net/NetworkRequestProto;->TYPE_TRACK_DEFAULT:I
Landroid/net/NetworkRequestProto;->TYPE_UNKNOWN:I
-Landroid/net/NetworkScoreManager$CacheUpdateFilter;
-Landroid/net/NetworkScoreManager$RecommendationsEnabledSetting;
Landroid/net/NetworkScoreManager;-><init>(Landroid/content/Context;)V
Landroid/net/NetworkScoreManager;->CACHE_FILTER_CURRENT_NETWORK:I
Landroid/net/NetworkScoreManager;->CACHE_FILTER_NONE:I
@@ -47885,7 +44621,6 @@
Landroid/net/NetworkScoreManager;->requestScores([Landroid/net/NetworkKey;)Z
Landroid/net/NetworkScoreManager;->unregisterNetworkScoreCache(ILandroid/net/INetworkScoreCache;)V
Landroid/net/NetworkScoreManager;->USE_OPEN_WIFI_PACKAGE_META_DATA:Ljava/lang/String;
-Landroid/net/NetworkScorerAppData;
Landroid/net/NetworkScorerAppData;-><init>(ILandroid/content/ComponentName;Ljava/lang/String;Landroid/content/ComponentName;Ljava/lang/String;)V
Landroid/net/NetworkScorerAppData;-><init>(Landroid/os/Parcel;)V
Landroid/net/NetworkScorerAppData;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -47902,7 +44637,6 @@
Landroid/net/NetworkSpecifier;-><init>()V
Landroid/net/NetworkSpecifier;->assertValidFromUid(I)V
Landroid/net/NetworkSpecifier;->satisfiedBy(Landroid/net/NetworkSpecifier;)Z
-Landroid/net/NetworkState;
Landroid/net/NetworkState;-><init>(Landroid/net/NetworkInfo;Landroid/net/LinkProperties;Landroid/net/NetworkCapabilities;Landroid/net/Network;Ljava/lang/String;Ljava/lang/String;)V
Landroid/net/NetworkState;->EMPTY:Landroid/net/NetworkState;
Landroid/net/NetworkState;->linkProperties:Landroid/net/LinkProperties;
@@ -47911,7 +44645,6 @@
Landroid/net/NetworkState;->networkInfo:Landroid/net/NetworkInfo;
Landroid/net/NetworkState;->SANITY_CHECK_ROAMING:Z
Landroid/net/NetworkState;->subscriberId:Ljava/lang/String;
-Landroid/net/NetworkStats$Entry;
Landroid/net/NetworkStats$Entry;-><init>(JJJJJ)V
Landroid/net/NetworkStats$Entry;-><init>(Ljava/lang/String;IIIIIIJJJJJ)V
Landroid/net/NetworkStats$Entry;-><init>(Ljava/lang/String;IIIJJJJJ)V
@@ -47922,10 +44655,8 @@
Landroid/net/NetworkStats$Entry;->metered:I
Landroid/net/NetworkStats$Entry;->operations:J
Landroid/net/NetworkStats$Entry;->roaming:I
-Landroid/net/NetworkStats$NonMonotonicObserver;
Landroid/net/NetworkStats$NonMonotonicObserver;->foundNonMonotonic(Landroid/net/NetworkStats;ILandroid/net/NetworkStats;ILjava/lang/Object;)V
Landroid/net/NetworkStats$NonMonotonicObserver;->foundNonMonotonic(Landroid/net/NetworkStats;ILjava/lang/Object;)V
-Landroid/net/NetworkStats;
Landroid/net/NetworkStats;->addIfaceValues(Ljava/lang/String;JJJJ)Landroid/net/NetworkStats;
Landroid/net/NetworkStats;->addTrafficToApplications(ILjava/lang/String;Ljava/lang/String;Landroid/net/NetworkStats$Entry;Landroid/net/NetworkStats$Entry;)Landroid/net/NetworkStats$Entry;
Landroid/net/NetworkStats;->addValues(Landroid/net/NetworkStats$Entry;)Landroid/net/NetworkStats;
@@ -47994,23 +44725,19 @@
Landroid/net/NetworkStats;->tunSubtract(ILandroid/net/NetworkStats;Landroid/net/NetworkStats$Entry;)V
Landroid/net/NetworkStats;->UID_ALL:I
Landroid/net/NetworkStats;->withoutUids([I)Landroid/net/NetworkStats;
-Landroid/net/NetworkStatsHistory$DataStreamUtils;
Landroid/net/NetworkStatsHistory$DataStreamUtils;-><init>()V
Landroid/net/NetworkStatsHistory$DataStreamUtils;->readFullLongArray(Ljava/io/DataInputStream;)[J
Landroid/net/NetworkStatsHistory$DataStreamUtils;->readVarLong(Ljava/io/DataInputStream;)J
Landroid/net/NetworkStatsHistory$DataStreamUtils;->readVarLongArray(Ljava/io/DataInputStream;)[J
Landroid/net/NetworkStatsHistory$DataStreamUtils;->writeVarLong(Ljava/io/DataOutputStream;J)V
Landroid/net/NetworkStatsHistory$DataStreamUtils;->writeVarLongArray(Ljava/io/DataOutputStream;[JI)V
-Landroid/net/NetworkStatsHistory$Entry;
Landroid/net/NetworkStatsHistory$Entry;-><init>()V
Landroid/net/NetworkStatsHistory$Entry;->activeTime:J
Landroid/net/NetworkStatsHistory$Entry;->operations:J
Landroid/net/NetworkStatsHistory$Entry;->UNKNOWN:J
-Landroid/net/NetworkStatsHistory$ParcelUtils;
Landroid/net/NetworkStatsHistory$ParcelUtils;-><init>()V
Landroid/net/NetworkStatsHistory$ParcelUtils;->readLongArray(Landroid/os/Parcel;)[J
Landroid/net/NetworkStatsHistory$ParcelUtils;->writeLongArray(Landroid/os/Parcel;[JI)V
-Landroid/net/NetworkStatsHistory;
Landroid/net/NetworkStatsHistory;-><init>(JI)V
Landroid/net/NetworkStatsHistory;-><init>(JII)V
Landroid/net/NetworkStatsHistory;-><init>(Landroid/net/NetworkStatsHistory;J)V
@@ -48059,7 +44786,6 @@
Landroid/net/NetworkStatsHistory;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
Landroid/net/NetworkStatsHistory;->writeToProto(Landroid/util/proto/ProtoOutputStream;J[JI)V
Landroid/net/NetworkStatsHistory;->writeToStream(Ljava/io/DataOutputStream;)V
-Landroid/net/NetworkTemplate;
Landroid/net/NetworkTemplate;-><init>(ILjava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V
Landroid/net/NetworkTemplate;-><init>(ILjava/lang/String;[Ljava/lang/String;Ljava/lang/String;III)V
Landroid/net/NetworkTemplate;-><init>(Landroid/os/Parcel;)V
@@ -48103,7 +44829,6 @@
Landroid/net/NetworkTemplate;->mSubscriberId:Ljava/lang/String;
Landroid/net/NetworkTemplate;->sForceAllNetworkTypes:Z
Landroid/net/NetworkTemplate;->TAG:Ljava/lang/String;
-Landroid/net/NetworkUtils;
Landroid/net/NetworkUtils;-><init>()V
Landroid/net/NetworkUtils;->addressTypeMatches(Ljava/net/InetAddress;Ljava/net/InetAddress;)Z
Landroid/net/NetworkUtils;->bindProcessToNetwork(I)Z
@@ -48126,7 +44851,6 @@
Landroid/net/NetworkUtils;->setupRaSocket(Ljava/io/FileDescriptor;I)V
Landroid/net/NetworkUtils;->TAG:Ljava/lang/String;
Landroid/net/NetworkUtils;->unparcelInetAddress(Landroid/os/Parcel;)Ljava/net/InetAddress;
-Landroid/net/NetworkWatchlistManager;
Landroid/net/NetworkWatchlistManager;-><init>(Landroid/content/Context;)V
Landroid/net/NetworkWatchlistManager;-><init>(Landroid/content/Context;Lcom/android/internal/net/INetworkWatchlistManager;)V
Landroid/net/NetworkWatchlistManager;->getWatchlistConfigHash()[B
@@ -48136,7 +44860,6 @@
Landroid/net/NetworkWatchlistManager;->reportWatchlistIfNecessary()V
Landroid/net/NetworkWatchlistManager;->SHARED_MEMORY_TAG:Ljava/lang/String;
Landroid/net/NetworkWatchlistManager;->TAG:Ljava/lang/String;
-Landroid/net/nsd/DnsSdTxtRecord;
Landroid/net/nsd/DnsSdTxtRecord;-><init>()V
Landroid/net/nsd/DnsSdTxtRecord;-><init>(Landroid/net/nsd/DnsSdTxtRecord;)V
Landroid/net/nsd/DnsSdTxtRecord;-><init>([B)V
@@ -48155,21 +44878,16 @@
Landroid/net/nsd/DnsSdTxtRecord;->remove(Ljava/lang/String;)I
Landroid/net/nsd/DnsSdTxtRecord;->set(Ljava/lang/String;Ljava/lang/String;)V
Landroid/net/nsd/DnsSdTxtRecord;->size()I
-Landroid/net/nsd/INsdManager$Stub$Proxy;
Landroid/net/nsd/INsdManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/net/nsd/INsdManager$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/net/nsd/INsdManager$Stub$Proxy;->getMessenger()Landroid/os/Messenger;
Landroid/net/nsd/INsdManager$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/net/nsd/INsdManager$Stub$Proxy;->setEnabled(Z)V
-Landroid/net/nsd/INsdManager$Stub;
Landroid/net/nsd/INsdManager$Stub;-><init>()V
Landroid/net/nsd/INsdManager$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/net/nsd/INsdManager$Stub;->TRANSACTION_getMessenger:I
Landroid/net/nsd/INsdManager$Stub;->TRANSACTION_setEnabled:I
-Landroid/net/nsd/INsdManager;
Landroid/net/nsd/INsdManager;->setEnabled(Z)V
-Landroid/net/nsd/NsdManager$ServiceHandler;
-Landroid/net/nsd/NsdManager$ServiceHandler;-><init>(Landroid/os/Looper;)V
Landroid/net/nsd/NsdManager;-><init>(Landroid/content/Context;Landroid/net/nsd/INsdManager;)V
Landroid/net/nsd/NsdManager;->BASE:I
Landroid/net/nsd/NsdManager;->checkListener(Ljava/lang/Object;)V
@@ -48229,7 +44947,6 @@
Landroid/net/nsd/NsdServiceInfo;->mTxtRecord:Landroid/util/ArrayMap;
Landroid/net/nsd/NsdServiceInfo;->setTxtRecords(Ljava/lang/String;)V
Landroid/net/nsd/NsdServiceInfo;->TAG:Ljava/lang/String;
-Landroid/net/PacProxySelector;
Landroid/net/PacProxySelector;-><init>()V
Landroid/net/PacProxySelector;->mDefaultList:Ljava/util/List;
Landroid/net/PacProxySelector;->mProxyService:Lcom/android/net/IProxyService;
@@ -48327,7 +45044,6 @@
Landroid/net/ScoredNetwork;->bundleEquals(Landroid/os/Bundle;Landroid/os/Bundle;)Z
Landroid/net/ScoredNetwork;->calculateRankingScore(I)I
Landroid/net/ScoredNetwork;->hasRankingScore()Z
-Landroid/net/sip/ISipService$Stub$Proxy;
Landroid/net/sip/ISipService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/net/sip/ISipService$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/net/sip/ISipService$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -48341,7 +45057,6 @@
Landroid/net/sip/ISipService$Stub;->TRANSACTION_open3:I
Landroid/net/sip/ISipService$Stub;->TRANSACTION_open:I
Landroid/net/sip/ISipService$Stub;->TRANSACTION_setRegistrationListener:I
-Landroid/net/sip/ISipSession$Stub$Proxy;
Landroid/net/sip/ISipSession$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/net/sip/ISipSession$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/net/sip/ISipSession$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -48359,7 +45074,6 @@
Landroid/net/sip/ISipSession$Stub;->TRANSACTION_register:I
Landroid/net/sip/ISipSession$Stub;->TRANSACTION_setListener:I
Landroid/net/sip/ISipSession$Stub;->TRANSACTION_unregister:I
-Landroid/net/sip/ISipSessionListener$Stub$Proxy;
Landroid/net/sip/ISipSessionListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/net/sip/ISipSessionListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/net/sip/ISipSessionListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -48377,7 +45091,6 @@
Landroid/net/sip/ISipSessionListener$Stub;->TRANSACTION_onRegistrationTimeout:I
Landroid/net/sip/ISipSessionListener$Stub;->TRANSACTION_onRinging:I
Landroid/net/sip/ISipSessionListener$Stub;->TRANSACTION_onRingingBack:I
-Landroid/net/sip/SimpleSessionDescription$Fields;
Landroid/net/sip/SimpleSessionDescription$Fields;-><init>(Ljava/lang/String;)V
Landroid/net/sip/SimpleSessionDescription$Fields;->cut(Ljava/lang/String;C)[Ljava/lang/String;
Landroid/net/sip/SimpleSessionDescription$Fields;->find(Ljava/lang/String;C)I
@@ -48398,7 +45111,6 @@
Landroid/net/sip/SimpleSessionDescription$Fields;->setBandwidth(Ljava/lang/String;I)V
Landroid/net/sip/SimpleSessionDescription$Fields;->setEncryption(Ljava/lang/String;Ljava/lang/String;)V
Landroid/net/sip/SimpleSessionDescription$Fields;->write(Ljava/lang/StringBuilder;)V
-Landroid/net/sip/SimpleSessionDescription$Media;
Landroid/net/sip/SimpleSessionDescription$Media;-><init>(Ljava/lang/String;IILjava/lang/String;)V
Landroid/net/sip/SimpleSessionDescription$Media;->getFmtp(I)Ljava/lang/String;
Landroid/net/sip/SimpleSessionDescription$Media;->getFmtp(Ljava/lang/String;)Ljava/lang/String;
@@ -48419,7 +45131,6 @@
Landroid/net/sip/SimpleSessionDescription$Media;->setFormat(Ljava/lang/String;Ljava/lang/String;)V
Landroid/net/sip/SimpleSessionDescription$Media;->setRtpPayload(ILjava/lang/String;Ljava/lang/String;)V
Landroid/net/sip/SimpleSessionDescription$Media;->write(Ljava/lang/StringBuilder;)V
-Landroid/net/sip/SimpleSessionDescription;
Landroid/net/sip/SimpleSessionDescription;-><init>(JLjava/lang/String;)V
Landroid/net/sip/SimpleSessionDescription;-><init>(Ljava/lang/String;)V
Landroid/net/sip/SimpleSessionDescription;->encode()Ljava/lang/String;
@@ -48485,7 +45196,6 @@
Landroid/net/sip/SipAudioCall;->transferToNewSession()V
Landroid/net/sip/SipAudioCall;->TRANSFER_TIMEOUT:I
Landroid/net/sip/SipErrorCode;-><init>()V
-Landroid/net/sip/SipManager$ListenerRelay;
Landroid/net/sip/SipManager$ListenerRelay;-><init>(Landroid/net/sip/SipRegistrationListener;Ljava/lang/String;)V
Landroid/net/sip/SipManager$ListenerRelay;->getUri(Landroid/net/sip/ISipSession;)Ljava/lang/String;
Landroid/net/sip/SipManager$ListenerRelay;->mListener:Landroid/net/sip/SipRegistrationListener;
@@ -48542,11 +45252,8 @@
Landroid/net/sip/SipSession;->mListener:Landroid/net/sip/SipSession$Listener;
Landroid/net/sip/SipSession;->mSession:Landroid/net/sip/ISipSession;
Landroid/net/sip/SipSession;->TAG:Ljava/lang/String;
-Landroid/net/sip/SipSessionAdapter;
Landroid/net/sip/SipSessionAdapter;-><init>()V
-Landroid/net/SntpClient$InvalidServerReplyException;
Landroid/net/SntpClient$InvalidServerReplyException;-><init>(Ljava/lang/String;)V
-Landroid/net/SntpClient;
Landroid/net/SntpClient;->checkValidServerReply(BBIJ)V
Landroid/net/SntpClient;->DBG:Z
Landroid/net/SntpClient;->mNtpTime:J
@@ -48572,17 +45279,14 @@
Landroid/net/SntpClient;->TAG:Ljava/lang/String;
Landroid/net/SntpClient;->TRANSMIT_TIME_OFFSET:I
Landroid/net/SntpClient;->writeTimeStamp([BIJ)V
-Landroid/net/SSLCertificateSocketFactory;->toLengthPrefixedList([[[B)[B
Landroid/net/SSLSessionCache;-><init>(Ljava/lang/Object;)V
Landroid/net/SSLSessionCache;->install(Landroid/net/SSLSessionCache;Ljavax/net/ssl/SSLContext;)V
Landroid/net/SSLSessionCache;->TAG:Ljava/lang/String;
-Landroid/net/StaticIpConfiguration;
Landroid/net/StaticIpConfiguration;-><init>(Landroid/net/StaticIpConfiguration;)V
Landroid/net/StaticIpConfiguration;->clear()V
Landroid/net/StaticIpConfiguration;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/net/StaticIpConfiguration;->readFromParcel(Landroid/net/StaticIpConfiguration;Landroid/os/Parcel;)V
Landroid/net/StaticIpConfiguration;->toLinkProperties(Ljava/lang/String;)Landroid/net/LinkProperties;
-Landroid/net/StringNetworkSpecifier;
Landroid/net/StringNetworkSpecifier;-><init>(Ljava/lang/String;)V
Landroid/net/StringNetworkSpecifier;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/net/StringNetworkSpecifier;->satisfiedBy(Landroid/net/NetworkSpecifier;)Z
@@ -48621,7 +45325,6 @@
Landroid/net/TrafficStats;->TYPE_TX_PACKETS:I
Landroid/net/TrafficStats;->UID_REMOVED:I
Landroid/net/TrafficStats;->UID_TETHERING:I
-Landroid/net/UidRange;
Landroid/net/UidRange;-><init>(II)V
Landroid/net/UidRange;->contains(I)Z
Landroid/net/UidRange;->containsRange(Landroid/net/UidRange;)Z
@@ -48631,7 +45334,6 @@
Landroid/net/UidRange;->getStartUser()I
Landroid/net/UidRange;->start:I
Landroid/net/UidRange;->stop:I
-Landroid/net/Uri$AbstractHierarchicalUri;
Landroid/net/Uri$AbstractHierarchicalUri;-><init>()V
Landroid/net/Uri$AbstractHierarchicalUri;->getUserInfoPart()Landroid/net/Uri$Part;
Landroid/net/Uri$AbstractHierarchicalUri;->host:Ljava/lang/String;
@@ -48640,12 +45342,10 @@
Landroid/net/Uri$AbstractHierarchicalUri;->parseUserInfo()Ljava/lang/String;
Landroid/net/Uri$AbstractHierarchicalUri;->port:I
Landroid/net/Uri$AbstractHierarchicalUri;->userInfo:Landroid/net/Uri$Part;
-Landroid/net/Uri$AbstractPart$Representation;
Landroid/net/Uri$AbstractPart$Representation;-><init>()V
Landroid/net/Uri$AbstractPart$Representation;->BOTH:I
Landroid/net/Uri$AbstractPart$Representation;->DECODED:I
Landroid/net/Uri$AbstractPart$Representation;->ENCODED:I
-Landroid/net/Uri$AbstractPart;
Landroid/net/Uri$AbstractPart;-><init>(Ljava/lang/String;Ljava/lang/String;)V
Landroid/net/Uri$AbstractPart;->decoded:Ljava/lang/String;
Landroid/net/Uri$AbstractPart;->encoded:Ljava/lang/String;
@@ -48664,7 +45364,6 @@
Landroid/net/Uri$Builder;->query(Landroid/net/Uri$Part;)Landroid/net/Uri$Builder;
Landroid/net/Uri$Builder;->query:Landroid/net/Uri$Part;
Landroid/net/Uri$Builder;->scheme:Ljava/lang/String;
-Landroid/net/Uri$HierarchicalUri;
Landroid/net/Uri$HierarchicalUri;-><init>(Ljava/lang/String;Landroid/net/Uri$Part;Landroid/net/Uri$PathPart;Landroid/net/Uri$Part;Landroid/net/Uri$Part;)V
Landroid/net/Uri$HierarchicalUri;->appendSspTo(Ljava/lang/StringBuilder;)V
Landroid/net/Uri$HierarchicalUri;->authority:Landroid/net/Uri$Part;
@@ -48679,7 +45378,6 @@
Landroid/net/Uri$HierarchicalUri;->ssp:Landroid/net/Uri$Part;
Landroid/net/Uri$HierarchicalUri;->TYPE_ID:I
Landroid/net/Uri$HierarchicalUri;->uriString:Ljava/lang/String;
-Landroid/net/Uri$OpaqueUri;
Landroid/net/Uri$OpaqueUri;-><init>(Ljava/lang/String;Landroid/net/Uri$Part;Landroid/net/Uri$Part;)V
Landroid/net/Uri$OpaqueUri;->cachedString:Ljava/lang/String;
Landroid/net/Uri$OpaqueUri;->fragment:Landroid/net/Uri$Part;
@@ -48687,10 +45385,8 @@
Landroid/net/Uri$OpaqueUri;->scheme:Ljava/lang/String;
Landroid/net/Uri$OpaqueUri;->ssp:Landroid/net/Uri$Part;
Landroid/net/Uri$OpaqueUri;->TYPE_ID:I
-Landroid/net/Uri$Part$EmptyPart;
Landroid/net/Uri$Part$EmptyPart;-><init>(Ljava/lang/String;)V
Landroid/net/Uri$Part$EmptyPart;->isEmpty()Z
-Landroid/net/Uri$Part;
Landroid/net/Uri$Part;-><init>(Ljava/lang/String;Ljava/lang/String;)V
Landroid/net/Uri$Part;->EMPTY:Landroid/net/Uri$Part;
Landroid/net/Uri$Part;->from(Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri$Part;
@@ -48701,7 +45397,6 @@
Landroid/net/Uri$Part;->nonNull(Landroid/net/Uri$Part;)Landroid/net/Uri$Part;
Landroid/net/Uri$Part;->NULL:Landroid/net/Uri$Part;
Landroid/net/Uri$Part;->readFrom(Landroid/os/Parcel;)Landroid/net/Uri$Part;
-Landroid/net/Uri$PathPart;
Landroid/net/Uri$PathPart;-><init>(Ljava/lang/String;Ljava/lang/String;)V
Landroid/net/Uri$PathPart;->appendDecodedSegment(Landroid/net/Uri$PathPart;Ljava/lang/String;)Landroid/net/Uri$PathPart;
Landroid/net/Uri$PathPart;->appendEncodedSegment(Landroid/net/Uri$PathPart;Ljava/lang/String;)Landroid/net/Uri$PathPart;
@@ -48715,18 +45410,15 @@
Landroid/net/Uri$PathPart;->NULL:Landroid/net/Uri$PathPart;
Landroid/net/Uri$PathPart;->pathSegments:Landroid/net/Uri$PathSegments;
Landroid/net/Uri$PathPart;->readFrom(Landroid/os/Parcel;)Landroid/net/Uri$PathPart;
-Landroid/net/Uri$PathSegments;
Landroid/net/Uri$PathSegments;-><init>([Ljava/lang/String;I)V
Landroid/net/Uri$PathSegments;->EMPTY:Landroid/net/Uri$PathSegments;
Landroid/net/Uri$PathSegments;->segments:[Ljava/lang/String;
Landroid/net/Uri$PathSegments;->size:I
-Landroid/net/Uri$PathSegmentsBuilder;
Landroid/net/Uri$PathSegmentsBuilder;-><init>()V
Landroid/net/Uri$PathSegmentsBuilder;->add(Ljava/lang/String;)V
Landroid/net/Uri$PathSegmentsBuilder;->build()Landroid/net/Uri$PathSegments;
Landroid/net/Uri$PathSegmentsBuilder;->segments:[Ljava/lang/String;
Landroid/net/Uri$PathSegmentsBuilder;->size:I
-Landroid/net/Uri$StringUri;
Landroid/net/Uri$StringUri;-><init>(Ljava/lang/String;)V
Landroid/net/Uri$StringUri;->authority:Landroid/net/Uri$Part;
Landroid/net/Uri$StringUri;->cachedFsi:I
@@ -48789,8 +45481,6 @@
Landroid/net/UrlQuerySanitizer;->sURLLegal:Landroid/net/UrlQuerySanitizer$ValueSanitizer;
Landroid/net/VpnService$Builder;->mConfig:Lcom/android/internal/net/VpnConfig;
Landroid/net/VpnService$Builder;->verifyApp(Ljava/lang/String;)V
-Landroid/net/VpnService$Callback;
-Landroid/net/VpnService$Callback;-><init>()V
Landroid/net/VpnService;->addAddress(Ljava/net/InetAddress;I)Z
Landroid/net/VpnService;->check(Ljava/net/InetAddress;I)V
Landroid/net/VpnService;->getService()Landroid/net/IConnectivityManager;
@@ -48805,7 +45495,6 @@
Landroid/net/WebAddress;->setAuthInfo(Ljava/lang/String;)V
Landroid/net/WebAddress;->setPort(I)V
Landroid/net/WebAddress;->setScheme(Ljava/lang/String;)V
-Landroid/net/wifi/AnqpInformationElement;
Landroid/net/wifi/AnqpInformationElement;-><init>(II[B)V
Landroid/net/wifi/AnqpInformationElement;->ANQP_3GPP_NETWORK:I
Landroid/net/wifi/AnqpInformationElement;->ANQP_CAPABILITY_LIST:I
@@ -48847,7 +45536,6 @@
Landroid/net/wifi/aware/Characteristics;->KEY_MAX_SERVICE_NAME_LENGTH:Ljava/lang/String;
Landroid/net/wifi/aware/Characteristics;->KEY_MAX_SERVICE_SPECIFIC_INFO_LENGTH:Ljava/lang/String;
Landroid/net/wifi/aware/Characteristics;->mCharacteristics:Landroid/os/Bundle;
-Landroid/net/wifi/aware/ConfigRequest$Builder;
Landroid/net/wifi/aware/ConfigRequest$Builder;-><init>()V
Landroid/net/wifi/aware/ConfigRequest$Builder;->build()Landroid/net/wifi/aware/ConfigRequest;
Landroid/net/wifi/aware/ConfigRequest$Builder;->mClusterHigh:I
@@ -48860,7 +45548,6 @@
Landroid/net/wifi/aware/ConfigRequest$Builder;->setDiscoveryWindowInterval(II)Landroid/net/wifi/aware/ConfigRequest$Builder;
Landroid/net/wifi/aware/ConfigRequest$Builder;->setMasterPreference(I)Landroid/net/wifi/aware/ConfigRequest$Builder;
Landroid/net/wifi/aware/ConfigRequest$Builder;->setSupport5gBand(Z)Landroid/net/wifi/aware/ConfigRequest$Builder;
-Landroid/net/wifi/aware/ConfigRequest;
Landroid/net/wifi/aware/ConfigRequest;-><init>(ZIII[I)V
Landroid/net/wifi/aware/ConfigRequest;->CLUSTER_ID_MAX:I
Landroid/net/wifi/aware/ConfigRequest;->CLUSTER_ID_MIN:I
@@ -48890,7 +45577,6 @@
Landroid/net/wifi/aware/DiscoverySession;->setTerminated()V
Landroid/net/wifi/aware/DiscoverySession;->TAG:Ljava/lang/String;
Landroid/net/wifi/aware/DiscoverySession;->VDBG:Z
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub$Proxy;
Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -48903,7 +45589,6 @@
Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub$Proxy;->onSessionConfigSuccess()V
Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub$Proxy;->onSessionStarted(I)V
Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub$Proxy;->onSessionTerminated(I)V
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub;
Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub;-><init>()V
Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback;
Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -48916,7 +45601,6 @@
Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub;->TRANSACTION_onSessionConfigSuccess:I
Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub;->TRANSACTION_onSessionStarted:I
Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub;->TRANSACTION_onSessionTerminated:I
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback;
Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback;->onMatch(I[B[B)V
Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback;->onMatchWithDistance(I[B[BI)V
Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback;->onMessageReceived(I[B)V
@@ -48926,37 +45610,30 @@
Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback;->onSessionConfigSuccess()V
Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback;->onSessionStarted(I)V
Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback;->onSessionTerminated(I)V
-Landroid/net/wifi/aware/IWifiAwareEventCallback$Stub$Proxy;
Landroid/net/wifi/aware/IWifiAwareEventCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/net/wifi/aware/IWifiAwareEventCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/net/wifi/aware/IWifiAwareEventCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/net/wifi/aware/IWifiAwareEventCallback$Stub$Proxy;->onConnectFail(I)V
Landroid/net/wifi/aware/IWifiAwareEventCallback$Stub$Proxy;->onConnectSuccess(I)V
Landroid/net/wifi/aware/IWifiAwareEventCallback$Stub$Proxy;->onIdentityChanged([B)V
-Landroid/net/wifi/aware/IWifiAwareEventCallback$Stub;
Landroid/net/wifi/aware/IWifiAwareEventCallback$Stub;-><init>()V
Landroid/net/wifi/aware/IWifiAwareEventCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/aware/IWifiAwareEventCallback;
Landroid/net/wifi/aware/IWifiAwareEventCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/net/wifi/aware/IWifiAwareEventCallback$Stub;->TRANSACTION_onConnectFail:I
Landroid/net/wifi/aware/IWifiAwareEventCallback$Stub;->TRANSACTION_onConnectSuccess:I
Landroid/net/wifi/aware/IWifiAwareEventCallback$Stub;->TRANSACTION_onIdentityChanged:I
-Landroid/net/wifi/aware/IWifiAwareEventCallback;
Landroid/net/wifi/aware/IWifiAwareEventCallback;->onConnectFail(I)V
Landroid/net/wifi/aware/IWifiAwareEventCallback;->onConnectSuccess(I)V
Landroid/net/wifi/aware/IWifiAwareEventCallback;->onIdentityChanged([B)V
-Landroid/net/wifi/aware/IWifiAwareMacAddressProvider$Stub$Proxy;
Landroid/net/wifi/aware/IWifiAwareMacAddressProvider$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/net/wifi/aware/IWifiAwareMacAddressProvider$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/net/wifi/aware/IWifiAwareMacAddressProvider$Stub$Proxy;->macAddress(Ljava/util/Map;)V
Landroid/net/wifi/aware/IWifiAwareMacAddressProvider$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/net/wifi/aware/IWifiAwareMacAddressProvider$Stub;
Landroid/net/wifi/aware/IWifiAwareMacAddressProvider$Stub;-><init>()V
Landroid/net/wifi/aware/IWifiAwareMacAddressProvider$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/aware/IWifiAwareMacAddressProvider;
Landroid/net/wifi/aware/IWifiAwareMacAddressProvider$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/net/wifi/aware/IWifiAwareMacAddressProvider$Stub;->TRANSACTION_macAddress:I
-Landroid/net/wifi/aware/IWifiAwareMacAddressProvider;
Landroid/net/wifi/aware/IWifiAwareMacAddressProvider;->macAddress(Ljava/util/Map;)V
-Landroid/net/wifi/aware/IWifiAwareManager$Stub$Proxy;
Landroid/net/wifi/aware/IWifiAwareManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/net/wifi/aware/IWifiAwareManager$Stub$Proxy;->connect(Landroid/os/IBinder;Ljava/lang/String;Landroid/net/wifi/aware/IWifiAwareEventCallback;Landroid/net/wifi/aware/ConfigRequest;Z)V
Landroid/net/wifi/aware/IWifiAwareManager$Stub$Proxy;->disconnect(ILandroid/os/IBinder;)V
@@ -48971,7 +45648,6 @@
Landroid/net/wifi/aware/IWifiAwareManager$Stub$Proxy;->terminateSession(II)V
Landroid/net/wifi/aware/IWifiAwareManager$Stub$Proxy;->updatePublish(IILandroid/net/wifi/aware/PublishConfig;)V
Landroid/net/wifi/aware/IWifiAwareManager$Stub$Proxy;->updateSubscribe(IILandroid/net/wifi/aware/SubscribeConfig;)V
-Landroid/net/wifi/aware/IWifiAwareManager$Stub;
Landroid/net/wifi/aware/IWifiAwareManager$Stub;-><init>()V
Landroid/net/wifi/aware/IWifiAwareManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/aware/IWifiAwareManager;
Landroid/net/wifi/aware/IWifiAwareManager$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -48986,7 +45662,6 @@
Landroid/net/wifi/aware/IWifiAwareManager$Stub;->TRANSACTION_terminateSession:I
Landroid/net/wifi/aware/IWifiAwareManager$Stub;->TRANSACTION_updatePublish:I
Landroid/net/wifi/aware/IWifiAwareManager$Stub;->TRANSACTION_updateSubscribe:I
-Landroid/net/wifi/aware/IWifiAwareManager;
Landroid/net/wifi/aware/IWifiAwareManager;->connect(Landroid/os/IBinder;Ljava/lang/String;Landroid/net/wifi/aware/IWifiAwareEventCallback;Landroid/net/wifi/aware/ConfigRequest;Z)V
Landroid/net/wifi/aware/IWifiAwareManager;->disconnect(ILandroid/os/IBinder;)V
Landroid/net/wifi/aware/IWifiAwareManager;->getCharacteristics()Landroid/net/wifi/aware/Characteristics;
@@ -49007,7 +45682,6 @@
Landroid/net/wifi/aware/PublishConfig$Builder;->mServiceName:[B
Landroid/net/wifi/aware/PublishConfig$Builder;->mServiceSpecificInfo:[B
Landroid/net/wifi/aware/PublishConfig$Builder;->mTtlSec:I
-Landroid/net/wifi/aware/PublishConfig$PublishTypes;
Landroid/net/wifi/aware/PublishConfig;-><init>([B[B[BIIZZ)V
Landroid/net/wifi/aware/PublishConfig;->assertValid(Landroid/net/wifi/aware/Characteristics;Z)V
Landroid/net/wifi/aware/PublishConfig;->mEnableRanging:Z
@@ -49029,7 +45703,6 @@
Landroid/net/wifi/aware/SubscribeConfig$Builder;->mServiceSpecificInfo:[B
Landroid/net/wifi/aware/SubscribeConfig$Builder;->mSubscribeType:I
Landroid/net/wifi/aware/SubscribeConfig$Builder;->mTtlSec:I
-Landroid/net/wifi/aware/SubscribeConfig$SubscribeTypes;
Landroid/net/wifi/aware/SubscribeConfig;-><init>([B[B[BIIZZIZI)V
Landroid/net/wifi/aware/SubscribeConfig;->assertValid(Landroid/net/wifi/aware/Characteristics;Z)V
Landroid/net/wifi/aware/SubscribeConfig;->mEnableTerminateNotification:Z
@@ -49044,7 +45717,6 @@
Landroid/net/wifi/aware/SubscribeConfig;->mTtlSec:I
Landroid/net/wifi/aware/SubscribeDiscoverySession;-><init>(Landroid/net/wifi/aware/WifiAwareManager;II)V
Landroid/net/wifi/aware/SubscribeDiscoverySession;->TAG:Ljava/lang/String;
-Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;
Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;-><init>(II)V
Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;->addHeader(II)V
Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;->allocate(I)Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;
@@ -49065,7 +45737,6 @@
Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;->putString(ILjava/lang/String;)Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;
Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;->putZeroLengthElement(I)Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;
Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;->wrap([B)Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;
-Landroid/net/wifi/aware/TlvBufferUtils$TlvElement;
Landroid/net/wifi/aware/TlvBufferUtils$TlvElement;-><init>(II[BI)V
Landroid/net/wifi/aware/TlvBufferUtils$TlvElement;->getByte()B
Landroid/net/wifi/aware/TlvBufferUtils$TlvElement;->getInt()I
@@ -49075,21 +45746,17 @@
Landroid/net/wifi/aware/TlvBufferUtils$TlvElement;->offset:I
Landroid/net/wifi/aware/TlvBufferUtils$TlvElement;->refArray:[B
Landroid/net/wifi/aware/TlvBufferUtils$TlvElement;->type:I
-Landroid/net/wifi/aware/TlvBufferUtils$TlvIterable;
Landroid/net/wifi/aware/TlvBufferUtils$TlvIterable;-><init>(II[B)V
Landroid/net/wifi/aware/TlvBufferUtils$TlvIterable;->mArray:[B
Landroid/net/wifi/aware/TlvBufferUtils$TlvIterable;->mArrayLength:I
Landroid/net/wifi/aware/TlvBufferUtils$TlvIterable;->mLengthSize:I
Landroid/net/wifi/aware/TlvBufferUtils$TlvIterable;->mTypeSize:I
Landroid/net/wifi/aware/TlvBufferUtils$TlvIterable;->toList()Ljava/util/List;
-Landroid/net/wifi/aware/TlvBufferUtils;
Landroid/net/wifi/aware/TlvBufferUtils;-><init>()V
Landroid/net/wifi/aware/TlvBufferUtils;->isValid([BII)Z
-Landroid/net/wifi/aware/WifiAwareAgentNetworkSpecifier$ByteArrayWrapper;
Landroid/net/wifi/aware/WifiAwareAgentNetworkSpecifier$ByteArrayWrapper;-><init>([B)V
Landroid/net/wifi/aware/WifiAwareAgentNetworkSpecifier$ByteArrayWrapper;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/net/wifi/aware/WifiAwareAgentNetworkSpecifier$ByteArrayWrapper;->mData:[B
-Landroid/net/wifi/aware/WifiAwareAgentNetworkSpecifier;
Landroid/net/wifi/aware/WifiAwareAgentNetworkSpecifier;-><init>()V
Landroid/net/wifi/aware/WifiAwareAgentNetworkSpecifier;-><init>(Landroid/net/wifi/aware/WifiAwareNetworkSpecifier;)V
Landroid/net/wifi/aware/WifiAwareAgentNetworkSpecifier;-><init>([Landroid/net/wifi/aware/WifiAwareNetworkSpecifier;)V
@@ -49104,8 +45771,6 @@
Landroid/net/wifi/aware/WifiAwareAgentNetworkSpecifier;->satisfiesAwareNetworkSpecifier(Landroid/net/wifi/aware/WifiAwareNetworkSpecifier;)Z
Landroid/net/wifi/aware/WifiAwareAgentNetworkSpecifier;->TAG:Ljava/lang/String;
Landroid/net/wifi/aware/WifiAwareAgentNetworkSpecifier;->VDBG:Z
-Landroid/net/wifi/aware/WifiAwareManager$DataPathRole;
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;
Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;-><init>(Landroid/net/wifi/aware/WifiAwareManager;Landroid/os/Looper;ZLandroid/net/wifi/aware/DiscoverySessionCallback;I)V
Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->CALLBACK_MATCH:I
Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->CALLBACK_MATCH_WITH_DISTANCE:I
@@ -49136,7 +45801,6 @@
Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->onSessionConfigSuccess()V
Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->onSessionStarted(I)V
Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->onSessionTerminated(I)V
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareEventCallbackProxy;
Landroid/net/wifi/aware/WifiAwareManager$WifiAwareEventCallbackProxy;-><init>(Landroid/net/wifi/aware/WifiAwareManager;Landroid/os/Looper;Landroid/os/Binder;Landroid/net/wifi/aware/AttachCallback;Landroid/net/wifi/aware/IdentityChangedListener;)V
Landroid/net/wifi/aware/WifiAwareManager$WifiAwareEventCallbackProxy;->CALLBACK_CONNECT_FAIL:I
Landroid/net/wifi/aware/WifiAwareManager$WifiAwareEventCallbackProxy;->CALLBACK_CONNECT_SUCCESS:I
@@ -49165,7 +45829,6 @@
Landroid/net/wifi/aware/WifiAwareManager;->updatePublish(IILandroid/net/wifi/aware/PublishConfig;)V
Landroid/net/wifi/aware/WifiAwareManager;->updateSubscribe(IILandroid/net/wifi/aware/SubscribeConfig;)V
Landroid/net/wifi/aware/WifiAwareManager;->VDBG:Z
-Landroid/net/wifi/aware/WifiAwareNetworkSpecifier;
Landroid/net/wifi/aware/WifiAwareNetworkSpecifier;-><init>(IIIII[B[BLjava/lang/String;I)V
Landroid/net/wifi/aware/WifiAwareNetworkSpecifier;->assertValidFromUid(I)V
Landroid/net/wifi/aware/WifiAwareNetworkSpecifier;->clientId:I
@@ -49195,7 +45858,6 @@
Landroid/net/wifi/aware/WifiAwareSession;->mTerminated:Z
Landroid/net/wifi/aware/WifiAwareSession;->TAG:Ljava/lang/String;
Landroid/net/wifi/aware/WifiAwareSession;->VDBG:Z
-Landroid/net/wifi/aware/WifiAwareUtils;
Landroid/net/wifi/aware/WifiAwareUtils;-><init>()V
Landroid/net/wifi/aware/WifiAwareUtils;->isLegacyVersion(Landroid/content/Context;I)Z
Landroid/net/wifi/aware/WifiAwareUtils;->validatePassphrase(Ljava/lang/String;)Z
@@ -49203,7 +45865,6 @@
Landroid/net/wifi/aware/WifiAwareUtils;->validateServiceName([B)V
Landroid/net/wifi/BatchedScanResult;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/net/wifi/BatchedScanResult;->TAG:Ljava/lang/String;
-Landroid/net/wifi/EAPConstants;
Landroid/net/wifi/EAPConstants;-><init>()V
Landroid/net/wifi/EAPConstants;->EAP_3Com:I
Landroid/net/wifi/EAPConstants;->EAP_ActiontecWireless:I
@@ -49235,12 +45896,10 @@
Landroid/net/wifi/EAPConstants;->EAP_TLS:I
Landroid/net/wifi/EAPConstants;->EAP_TTLS:I
Landroid/net/wifi/EAPConstants;->EAP_ZLXEAP:I
-Landroid/net/wifi/hotspot2/ConfigParser$MimeHeader;
Landroid/net/wifi/hotspot2/ConfigParser$MimeHeader;-><init>()V
Landroid/net/wifi/hotspot2/ConfigParser$MimeHeader;->boundary:Ljava/lang/String;
Landroid/net/wifi/hotspot2/ConfigParser$MimeHeader;->contentType:Ljava/lang/String;
Landroid/net/wifi/hotspot2/ConfigParser$MimeHeader;->encodingType:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/ConfigParser$MimePart;
Landroid/net/wifi/hotspot2/ConfigParser$MimePart;-><init>()V
Landroid/net/wifi/hotspot2/ConfigParser$MimePart;->data:[B
Landroid/net/wifi/hotspot2/ConfigParser$MimePart;->isLast:Z
@@ -49264,36 +45923,29 @@
Landroid/net/wifi/hotspot2/ConfigParser;->TYPE_PASSPOINT_PROFILE:Ljava/lang/String;
Landroid/net/wifi/hotspot2/ConfigParser;->TYPE_PKCS12:Ljava/lang/String;
Landroid/net/wifi/hotspot2/ConfigParser;->TYPE_WIFI_CONFIG:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/IProvisioningCallback$Stub$Proxy;
Landroid/net/wifi/hotspot2/IProvisioningCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/net/wifi/hotspot2/IProvisioningCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/net/wifi/hotspot2/IProvisioningCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/net/wifi/hotspot2/IProvisioningCallback$Stub$Proxy;->onProvisioningFailure(I)V
Landroid/net/wifi/hotspot2/IProvisioningCallback$Stub$Proxy;->onProvisioningStatus(I)V
-Landroid/net/wifi/hotspot2/IProvisioningCallback$Stub;
Landroid/net/wifi/hotspot2/IProvisioningCallback$Stub;-><init>()V
Landroid/net/wifi/hotspot2/IProvisioningCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/hotspot2/IProvisioningCallback;
Landroid/net/wifi/hotspot2/IProvisioningCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/net/wifi/hotspot2/IProvisioningCallback$Stub;->TRANSACTION_onProvisioningFailure:I
Landroid/net/wifi/hotspot2/IProvisioningCallback$Stub;->TRANSACTION_onProvisioningStatus:I
-Landroid/net/wifi/hotspot2/IProvisioningCallback;
Landroid/net/wifi/hotspot2/IProvisioningCallback;->onProvisioningFailure(I)V
Landroid/net/wifi/hotspot2/IProvisioningCallback;->onProvisioningStatus(I)V
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser$InternalNode;
Landroid/net/wifi/hotspot2/omadm/PpsMoParser$InternalNode;-><init>(Ljava/lang/String;Ljava/util/List;)V
Landroid/net/wifi/hotspot2/omadm/PpsMoParser$InternalNode;->getChildren()Ljava/util/List;
Landroid/net/wifi/hotspot2/omadm/PpsMoParser$InternalNode;->getValue()Ljava/lang/String;
Landroid/net/wifi/hotspot2/omadm/PpsMoParser$InternalNode;->isLeaf()Z
Landroid/net/wifi/hotspot2/omadm/PpsMoParser$InternalNode;->mChildren:Ljava/util/List;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser$LeafNode;
Landroid/net/wifi/hotspot2/omadm/PpsMoParser$LeafNode;-><init>(Ljava/lang/String;Ljava/lang/String;)V
Landroid/net/wifi/hotspot2/omadm/PpsMoParser$LeafNode;->getChildren()Ljava/util/List;
Landroid/net/wifi/hotspot2/omadm/PpsMoParser$LeafNode;->getValue()Ljava/lang/String;
Landroid/net/wifi/hotspot2/omadm/PpsMoParser$LeafNode;->isLeaf()Z
Landroid/net/wifi/hotspot2/omadm/PpsMoParser$LeafNode;->mValue:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser$ParsingException;
Landroid/net/wifi/hotspot2/omadm/PpsMoParser$ParsingException;-><init>(Ljava/lang/String;)V
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;
Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;-><init>(Ljava/lang/String;)V
Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;->getChildren()Ljava/util/List;
Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;->getName()Ljava/lang/String;
@@ -49420,7 +46072,6 @@
Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->TAG_TYPE:Ljava/lang/String;
Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->TAG_VALUE:Ljava/lang/String;
Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->TAG_VER_DTD:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/XMLNode;
Landroid/net/wifi/hotspot2/omadm/XMLNode;-><init>(Landroid/net/wifi/hotspot2/omadm/XMLNode;Ljava/lang/String;)V
Landroid/net/wifi/hotspot2/omadm/XMLNode;->addChild(Landroid/net/wifi/hotspot2/omadm/XMLNode;)V
Landroid/net/wifi/hotspot2/omadm/XMLNode;->addText(Ljava/lang/String;)V
@@ -49434,12 +46085,10 @@
Landroid/net/wifi/hotspot2/omadm/XMLNode;->mTag:Ljava/lang/String;
Landroid/net/wifi/hotspot2/omadm/XMLNode;->mText:Ljava/lang/String;
Landroid/net/wifi/hotspot2/omadm/XMLNode;->mTextBuilder:Ljava/lang/StringBuilder;
-Landroid/net/wifi/hotspot2/omadm/XMLParser;
Landroid/net/wifi/hotspot2/omadm/XMLParser;-><init>()V
Landroid/net/wifi/hotspot2/omadm/XMLParser;->mCurrent:Landroid/net/wifi/hotspot2/omadm/XMLNode;
Landroid/net/wifi/hotspot2/omadm/XMLParser;->mRoot:Landroid/net/wifi/hotspot2/omadm/XMLNode;
Landroid/net/wifi/hotspot2/omadm/XMLParser;->parse(Ljava/lang/String;)Landroid/net/wifi/hotspot2/omadm/XMLNode;
-Landroid/net/wifi/hotspot2/OsuProvider;
Landroid/net/wifi/hotspot2/OsuProvider;-><init>(Landroid/net/wifi/hotspot2/OsuProvider;)V
Landroid/net/wifi/hotspot2/OsuProvider;-><init>(Landroid/net/wifi/WifiSsid;Ljava/lang/String;Ljava/lang/String;Landroid/net/Uri;Ljava/lang/String;Ljava/util/List;Landroid/graphics/drawable/Icon;)V
Landroid/net/wifi/hotspot2/OsuProvider;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -49583,7 +46232,6 @@
Landroid/net/wifi/hotspot2/pps/HomeSp;->TAG:Ljava/lang/String;
Landroid/net/wifi/hotspot2/pps/HomeSp;->validate()Z
Landroid/net/wifi/hotspot2/pps/HomeSp;->writeHomeNetworkIds(Landroid/os/Parcel;Ljava/util/Map;)V
-Landroid/net/wifi/hotspot2/pps/Policy$RoamingPartner;
Landroid/net/wifi/hotspot2/pps/Policy$RoamingPartner;-><init>()V
Landroid/net/wifi/hotspot2/pps/Policy$RoamingPartner;-><init>(Landroid/net/wifi/hotspot2/pps/Policy$RoamingPartner;)V
Landroid/net/wifi/hotspot2/pps/Policy$RoamingPartner;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -49600,7 +46248,6 @@
Landroid/net/wifi/hotspot2/pps/Policy$RoamingPartner;->setFqdnExactMatch(Z)V
Landroid/net/wifi/hotspot2/pps/Policy$RoamingPartner;->setPriority(I)V
Landroid/net/wifi/hotspot2/pps/Policy$RoamingPartner;->validate()Z
-Landroid/net/wifi/hotspot2/pps/Policy;
Landroid/net/wifi/hotspot2/pps/Policy;-><init>()V
Landroid/net/wifi/hotspot2/pps/Policy;-><init>(Landroid/net/wifi/hotspot2/pps/Policy;)V
Landroid/net/wifi/hotspot2/pps/Policy;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -49639,7 +46286,6 @@
Landroid/net/wifi/hotspot2/pps/Policy;->validate()Z
Landroid/net/wifi/hotspot2/pps/Policy;->writeProtoPortMap(Landroid/os/Parcel;Ljava/util/Map;)V
Landroid/net/wifi/hotspot2/pps/Policy;->writeRoamingPartnerList(Landroid/os/Parcel;ILjava/util/List;)V
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;
Landroid/net/wifi/hotspot2/pps/UpdateParameter;-><init>()V
Landroid/net/wifi/hotspot2/pps/UpdateParameter;-><init>(Landroid/net/wifi/hotspot2/pps/UpdateParameter;)V
Landroid/net/wifi/hotspot2/pps/UpdateParameter;->CERTIFICATE_SHA256_BYTES:I
@@ -49680,7 +46326,6 @@
Landroid/net/wifi/hotspot2/pps/UpdateParameter;->UPDATE_RESTRICTION_ROAMING_PARTNER:Ljava/lang/String;
Landroid/net/wifi/hotspot2/pps/UpdateParameter;->UPDATE_RESTRICTION_UNRESTRICTED:Ljava/lang/String;
Landroid/net/wifi/hotspot2/pps/UpdateParameter;->validate()Z
-Landroid/net/wifi/hotspot2/ProvisioningCallback;
Landroid/net/wifi/hotspot2/ProvisioningCallback;-><init>()V
Landroid/net/wifi/hotspot2/ProvisioningCallback;->onProvisioningFailure(I)V
Landroid/net/wifi/hotspot2/ProvisioningCallback;->onProvisioningStatus(I)V
@@ -49696,22 +46341,18 @@
Landroid/net/wifi/hotspot2/ProvisioningCallback;->OSU_STATUS_PROVIDER_VERIFIED:I
Landroid/net/wifi/hotspot2/ProvisioningCallback;->OSU_STATUS_SERVER_CONNECTED:I
Landroid/net/wifi/hotspot2/ProvisioningCallback;->OSU_STATUS_SERVER_VALIDATED:I
-Landroid/net/wifi/ISoftApCallback$Stub$Proxy;
Landroid/net/wifi/ISoftApCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/net/wifi/ISoftApCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/net/wifi/ISoftApCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/net/wifi/ISoftApCallback$Stub$Proxy;->onNumClientsChanged(I)V
Landroid/net/wifi/ISoftApCallback$Stub$Proxy;->onStateChanged(II)V
-Landroid/net/wifi/ISoftApCallback$Stub;
Landroid/net/wifi/ISoftApCallback$Stub;-><init>()V
Landroid/net/wifi/ISoftApCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/ISoftApCallback;
Landroid/net/wifi/ISoftApCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/net/wifi/ISoftApCallback$Stub;->TRANSACTION_onNumClientsChanged:I
Landroid/net/wifi/ISoftApCallback$Stub;->TRANSACTION_onStateChanged:I
-Landroid/net/wifi/ISoftApCallback;
Landroid/net/wifi/ISoftApCallback;->onNumClientsChanged(I)V
Landroid/net/wifi/ISoftApCallback;->onStateChanged(II)V
-Landroid/net/wifi/IWifiManager$Stub$Proxy;
Landroid/net/wifi/IWifiManager$Stub$Proxy;->acquireMulticastLock(Landroid/os/IBinder;Ljava/lang/String;)V
Landroid/net/wifi/IWifiManager$Stub$Proxy;->acquireWifiLock(Landroid/os/IBinder;ILjava/lang/String;Landroid/os/WorkSource;)Z
Landroid/net/wifi/IWifiManager$Stub$Proxy;->addOrUpdateNetwork(Landroid/net/wifi/WifiConfiguration;Ljava/lang/String;)I
@@ -49779,7 +46420,6 @@
Landroid/net/wifi/IWifiManager$Stub$Proxy;->unregisterSoftApCallback(I)V
Landroid/net/wifi/IWifiManager$Stub$Proxy;->updateInterfaceIpState(Ljava/lang/String;I)V
Landroid/net/wifi/IWifiManager$Stub$Proxy;->updateWifiLockWorkSource(Landroid/os/IBinder;Landroid/os/WorkSource;)V
-Landroid/net/wifi/IWifiManager$Stub;
Landroid/net/wifi/IWifiManager$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_acquireMulticastLock:I
Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_acquireWifiLock:I
@@ -49845,7 +46485,6 @@
Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_unregisterSoftApCallback:I
Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_updateInterfaceIpState:I
Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_updateWifiLockWorkSource:I
-Landroid/net/wifi/IWifiManager;
Landroid/net/wifi/IWifiManager;->acquireMulticastLock(Landroid/os/IBinder;Ljava/lang/String;)V
Landroid/net/wifi/IWifiManager;->acquireWifiLock(Landroid/os/IBinder;ILjava/lang/String;Landroid/os/WorkSource;)Z
Landroid/net/wifi/IWifiManager;->addOrUpdateNetwork(Landroid/net/wifi/WifiConfiguration;Ljava/lang/String;)I
@@ -49908,18 +46547,14 @@
Landroid/net/wifi/IWifiManager;->unregisterSoftApCallback(I)V
Landroid/net/wifi/IWifiManager;->updateInterfaceIpState(Ljava/lang/String;I)V
Landroid/net/wifi/IWifiManager;->updateWifiLockWorkSource(Landroid/os/IBinder;Landroid/os/WorkSource;)V
-Landroid/net/wifi/IWifiScanner$Stub$Proxy;
Landroid/net/wifi/IWifiScanner$Stub$Proxy;->getAvailableChannels(I)Landroid/os/Bundle;
Landroid/net/wifi/IWifiScanner$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/net/wifi/IWifiScanner$Stub$Proxy;->getMessenger()Landroid/os/Messenger;
-Landroid/net/wifi/IWifiScanner$Stub;
Landroid/net/wifi/IWifiScanner$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/net/wifi/IWifiScanner$Stub;->TRANSACTION_getAvailableChannels:I
Landroid/net/wifi/IWifiScanner$Stub;->TRANSACTION_getMessenger:I
-Landroid/net/wifi/IWifiScanner;
Landroid/net/wifi/IWifiScanner;->getAvailableChannels(I)Landroid/os/Bundle;
Landroid/net/wifi/IWifiScanner;->getMessenger()Landroid/os/Messenger;
-Landroid/net/wifi/p2p/IWifiP2pManager$Stub$Proxy;
Landroid/net/wifi/p2p/IWifiP2pManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/net/wifi/p2p/IWifiP2pManager$Stub$Proxy;->checkConfigureWifiDisplayPermission()V
Landroid/net/wifi/p2p/IWifiP2pManager$Stub$Proxy;->close(Landroid/os/IBinder;)V
@@ -49928,7 +46563,6 @@
Landroid/net/wifi/p2p/IWifiP2pManager$Stub$Proxy;->getP2pStateMachineMessenger()Landroid/os/Messenger;
Landroid/net/wifi/p2p/IWifiP2pManager$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/net/wifi/p2p/IWifiP2pManager$Stub$Proxy;->setMiracastMode(I)V
-Landroid/net/wifi/p2p/IWifiP2pManager$Stub;
Landroid/net/wifi/p2p/IWifiP2pManager$Stub;-><init>()V
Landroid/net/wifi/p2p/IWifiP2pManager$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/net/wifi/p2p/IWifiP2pManager$Stub;->TRANSACTION_checkConfigureWifiDisplayPermission:I
@@ -49936,7 +46570,6 @@
Landroid/net/wifi/p2p/IWifiP2pManager$Stub;->TRANSACTION_getMessenger:I
Landroid/net/wifi/p2p/IWifiP2pManager$Stub;->TRANSACTION_getP2pStateMachineMessenger:I
Landroid/net/wifi/p2p/IWifiP2pManager$Stub;->TRANSACTION_setMiracastMode:I
-Landroid/net/wifi/p2p/IWifiP2pManager;
Landroid/net/wifi/p2p/IWifiP2pManager;->checkConfigureWifiDisplayPermission()V
Landroid/net/wifi/p2p/IWifiP2pManager;->close(Landroid/os/IBinder;)V
Landroid/net/wifi/p2p/IWifiP2pManager;->getMessenger(Landroid/os/IBinder;)Landroid/os/Messenger;
@@ -49953,7 +46586,6 @@
Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceRequest;-><init>()V
Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceRequest;-><init>(Ljava/lang/String;)V
Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceRequest;-><init>(Ljava/lang/String;II)V
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceResponse;
Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceResponse;-><init>(IILandroid/net/wifi/p2p/WifiP2pDevice;[B)V
Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceResponse;->getDnsQueryName()Ljava/lang/String;
Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceResponse;->getDnsType()I
@@ -49982,14 +46614,12 @@
Landroid/net/wifi/p2p/nsd/WifiP2pServiceRequest;->mTransId:I
Landroid/net/wifi/p2p/nsd/WifiP2pServiceRequest;->setTransactionId(I)V
Landroid/net/wifi/p2p/nsd/WifiP2pServiceRequest;->validateQuery(Ljava/lang/String;)V
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse$Status;
Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse$Status;-><init>()V
Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse$Status;->BAD_REQUEST:I
Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse$Status;->REQUESTED_INFORMATION_NOT_AVAILABLE:I
Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse$Status;->SERVICE_PROTOCOL_NOT_AVAILABLE:I
Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse$Status;->SUCCESS:I
Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse$Status;->toString(I)Ljava/lang/String;
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse;
Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse;-><init>(IIILandroid/net/wifi/p2p/WifiP2pDevice;[B)V
Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse;->equals(Ljava/lang/Object;Ljava/lang/Object;)Z
@@ -50012,7 +46642,6 @@
Landroid/net/wifi/p2p/nsd/WifiP2pUpnpServiceInfo;->VERSION_1_0:I
Landroid/net/wifi/p2p/nsd/WifiP2pUpnpServiceRequest;-><init>()V
Landroid/net/wifi/p2p/nsd/WifiP2pUpnpServiceRequest;-><init>(Ljava/lang/String;)V
-Landroid/net/wifi/p2p/nsd/WifiP2pUpnpServiceResponse;
Landroid/net/wifi/p2p/nsd/WifiP2pUpnpServiceResponse;-><init>(IILandroid/net/wifi/p2p/WifiP2pDevice;[B)V
Landroid/net/wifi/p2p/nsd/WifiP2pUpnpServiceResponse;->getUniqueServiceNames()Ljava/util/List;
Landroid/net/wifi/p2p/nsd/WifiP2pUpnpServiceResponse;->getVersion()I
@@ -50075,9 +46704,7 @@
Landroid/net/wifi/p2p/WifiP2pGroup;->setNetworkName(Ljava/lang/String;)V
Landroid/net/wifi/p2p/WifiP2pGroup;->setOwner(Landroid/net/wifi/p2p/WifiP2pDevice;)V
Landroid/net/wifi/p2p/WifiP2pGroup;->setPassphrase(Ljava/lang/String;)V
-Landroid/net/wifi/p2p/WifiP2pGroupList$GroupDeleteListener;
Landroid/net/wifi/p2p/WifiP2pGroupList$GroupDeleteListener;->onDeleteGroup(I)V
-Landroid/net/wifi/p2p/WifiP2pGroupList;
Landroid/net/wifi/p2p/WifiP2pGroupList;-><init>()V
Landroid/net/wifi/p2p/WifiP2pGroupList;->add(Landroid/net/wifi/p2p/WifiP2pGroup;)V
Landroid/net/wifi/p2p/WifiP2pGroupList;->clear()Z
@@ -50091,8 +46718,6 @@
Landroid/net/wifi/p2p/WifiP2pGroupList;->mListener:Landroid/net/wifi/p2p/WifiP2pGroupList$GroupDeleteListener;
Landroid/net/wifi/p2p/WifiP2pGroupList;->remove(I)V
Landroid/net/wifi/p2p/WifiP2pGroupList;->remove(Ljava/lang/String;)V
-Landroid/net/wifi/p2p/WifiP2pManager$Channel$P2pHandler;
-Landroid/net/wifi/p2p/WifiP2pManager$Channel$P2pHandler;-><init>(Landroid/os/Looper;)V
Landroid/net/wifi/p2p/WifiP2pManager$Channel;-><init>(Landroid/content/Context;Landroid/os/Looper;Landroid/net/wifi/p2p/WifiP2pManager$ChannelListener;Landroid/os/Binder;Landroid/net/wifi/p2p/WifiP2pManager;)V
Landroid/net/wifi/p2p/WifiP2pManager$Channel;->getListener(I)Ljava/lang/Object;
Landroid/net/wifi/p2p/WifiP2pManager$Channel;->handleDnsSdServiceResponse(Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceResponse;)V
@@ -50112,9 +46737,7 @@
Landroid/net/wifi/p2p/WifiP2pManager$Channel;->mP2pManager:Landroid/net/wifi/p2p/WifiP2pManager;
Landroid/net/wifi/p2p/WifiP2pManager$Channel;->mServRspListener:Landroid/net/wifi/p2p/WifiP2pManager$ServiceResponseListener;
Landroid/net/wifi/p2p/WifiP2pManager$Channel;->mUpnpServRspListener:Landroid/net/wifi/p2p/WifiP2pManager$UpnpServiceResponseListener;
-Landroid/net/wifi/p2p/WifiP2pManager$HandoverMessageListener;
Landroid/net/wifi/p2p/WifiP2pManager$HandoverMessageListener;->onHandoverMessageAvailable(Ljava/lang/String;)V
-Landroid/net/wifi/p2p/WifiP2pManager$PersistentGroupInfoListener;
Landroid/net/wifi/p2p/WifiP2pManager$PersistentGroupInfoListener;->onPersistentGroupInfoAvailable(Landroid/net/wifi/p2p/WifiP2pGroupList;)V
Landroid/net/wifi/p2p/WifiP2pManager;->ADD_LOCAL_SERVICE:I
Landroid/net/wifi/p2p/WifiP2pManager;->ADD_LOCAL_SERVICE_FAILED:I
@@ -50214,14 +46837,12 @@
Landroid/net/wifi/p2p/WifiP2pManager;->STOP_LISTEN_SUCCEEDED:I
Landroid/net/wifi/p2p/WifiP2pManager;->TAG:Ljava/lang/String;
Landroid/net/wifi/p2p/WifiP2pManager;->WIFI_P2P_PERSISTENT_GROUPS_CHANGED_ACTION:Ljava/lang/String;
-Landroid/net/wifi/p2p/WifiP2pProvDiscEvent;
Landroid/net/wifi/p2p/WifiP2pProvDiscEvent;-><init>(Ljava/lang/String;)V
Landroid/net/wifi/p2p/WifiP2pProvDiscEvent;->ENTER_PIN:I
Landroid/net/wifi/p2p/WifiP2pProvDiscEvent;->PBC_REQ:I
Landroid/net/wifi/p2p/WifiP2pProvDiscEvent;->PBC_RSP:I
Landroid/net/wifi/p2p/WifiP2pProvDiscEvent;->SHOW_PIN:I
Landroid/net/wifi/p2p/WifiP2pProvDiscEvent;->TAG:Ljava/lang/String;
-Landroid/net/wifi/p2p/WifiP2pWfdInfo;
Landroid/net/wifi/p2p/WifiP2pWfdInfo;->COUPLED_SINK_SUPPORT_AT_SINK:I
Landroid/net/wifi/p2p/WifiP2pWfdInfo;->COUPLED_SINK_SUPPORT_AT_SOURCE:I
Landroid/net/wifi/p2p/WifiP2pWfdInfo;->DEVICE_TYPE:I
@@ -50246,7 +46867,6 @@
Landroid/net/wifi/p2p/WifiP2pWfdInfo;->SOURCE_OR_PRIMARY_SINK:I
Landroid/net/wifi/p2p/WifiP2pWfdInfo;->TAG:Ljava/lang/String;
Landroid/net/wifi/p2p/WifiP2pWfdInfo;->WFD_SOURCE:I
-Landroid/net/wifi/ParcelUtil;
Landroid/net/wifi/ParcelUtil;-><init>()V
Landroid/net/wifi/ParcelUtil;->readCertificate(Landroid/os/Parcel;)Ljava/security/cert/X509Certificate;
Landroid/net/wifi/ParcelUtil;->readCertificates(Landroid/os/Parcel;)[Ljava/security/cert/X509Certificate;
@@ -50254,7 +46874,6 @@
Landroid/net/wifi/ParcelUtil;->writeCertificate(Landroid/os/Parcel;Ljava/security/cert/X509Certificate;)V
Landroid/net/wifi/ParcelUtil;->writeCertificates(Landroid/os/Parcel;[Ljava/security/cert/X509Certificate;)V
Landroid/net/wifi/ParcelUtil;->writePrivateKey(Landroid/os/Parcel;Ljava/security/PrivateKey;)V
-Landroid/net/wifi/PasspointManagementObjectDefinition;
Landroid/net/wifi/PasspointManagementObjectDefinition;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
Landroid/net/wifi/PasspointManagementObjectDefinition;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/net/wifi/PasspointManagementObjectDefinition;->getBaseUri()Ljava/lang/String;
@@ -50263,7 +46882,6 @@
Landroid/net/wifi/PasspointManagementObjectDefinition;->mBaseUri:Ljava/lang/String;
Landroid/net/wifi/PasspointManagementObjectDefinition;->mMoTree:Ljava/lang/String;
Landroid/net/wifi/PasspointManagementObjectDefinition;->mUrn:Ljava/lang/String;
-Landroid/net/wifi/RssiPacketCountInfo;
Landroid/net/wifi/RssiPacketCountInfo;-><init>()V
Landroid/net/wifi/RssiPacketCountInfo;-><init>(Landroid/os/Parcel;)V
Landroid/net/wifi/RssiPacketCountInfo;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -50271,36 +46889,30 @@
Landroid/net/wifi/RssiPacketCountInfo;->rxgood:I
Landroid/net/wifi/RssiPacketCountInfo;->txbad:I
Landroid/net/wifi/RssiPacketCountInfo;->txgood:I
-Landroid/net/wifi/rtt/IRttCallback$Stub$Proxy;
Landroid/net/wifi/rtt/IRttCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/net/wifi/rtt/IRttCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/net/wifi/rtt/IRttCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/net/wifi/rtt/IRttCallback$Stub$Proxy;->onRangingFailure(I)V
Landroid/net/wifi/rtt/IRttCallback$Stub$Proxy;->onRangingResults(Ljava/util/List;)V
-Landroid/net/wifi/rtt/IRttCallback$Stub;
Landroid/net/wifi/rtt/IRttCallback$Stub;-><init>()V
Landroid/net/wifi/rtt/IRttCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/rtt/IRttCallback;
Landroid/net/wifi/rtt/IRttCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/net/wifi/rtt/IRttCallback$Stub;->TRANSACTION_onRangingFailure:I
Landroid/net/wifi/rtt/IRttCallback$Stub;->TRANSACTION_onRangingResults:I
-Landroid/net/wifi/rtt/IRttCallback;
Landroid/net/wifi/rtt/IRttCallback;->onRangingFailure(I)V
Landroid/net/wifi/rtt/IRttCallback;->onRangingResults(Ljava/util/List;)V
-Landroid/net/wifi/rtt/IWifiRttManager$Stub$Proxy;
Landroid/net/wifi/rtt/IWifiRttManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/net/wifi/rtt/IWifiRttManager$Stub$Proxy;->cancelRanging(Landroid/os/WorkSource;)V
Landroid/net/wifi/rtt/IWifiRttManager$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/net/wifi/rtt/IWifiRttManager$Stub$Proxy;->isAvailable()Z
Landroid/net/wifi/rtt/IWifiRttManager$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/net/wifi/rtt/IWifiRttManager$Stub$Proxy;->startRanging(Landroid/os/IBinder;Ljava/lang/String;Landroid/os/WorkSource;Landroid/net/wifi/rtt/RangingRequest;Landroid/net/wifi/rtt/IRttCallback;)V
-Landroid/net/wifi/rtt/IWifiRttManager$Stub;
Landroid/net/wifi/rtt/IWifiRttManager$Stub;-><init>()V
Landroid/net/wifi/rtt/IWifiRttManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/rtt/IWifiRttManager;
Landroid/net/wifi/rtt/IWifiRttManager$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/net/wifi/rtt/IWifiRttManager$Stub;->TRANSACTION_cancelRanging:I
Landroid/net/wifi/rtt/IWifiRttManager$Stub;->TRANSACTION_isAvailable:I
Landroid/net/wifi/rtt/IWifiRttManager$Stub;->TRANSACTION_startRanging:I
-Landroid/net/wifi/rtt/IWifiRttManager;
Landroid/net/wifi/rtt/IWifiRttManager;->cancelRanging(Landroid/os/WorkSource;)V
Landroid/net/wifi/rtt/IWifiRttManager;->isAvailable()Z
Landroid/net/wifi/rtt/IWifiRttManager;->startRanging(Landroid/os/IBinder;Ljava/lang/String;Landroid/os/WorkSource;Landroid/net/wifi/rtt/RangingRequest;Landroid/net/wifi/rtt/IRttCallback;)V
@@ -50309,7 +46921,6 @@
Landroid/net/wifi/rtt/RangingRequest;->enforceValidity(Z)V
Landroid/net/wifi/rtt/RangingRequest;->MAX_PEERS:I
Landroid/net/wifi/rtt/RangingRequest;->mRttPeers:Ljava/util/List;
-Landroid/net/wifi/rtt/RangingResult$RangeResultStatus;
Landroid/net/wifi/rtt/RangingResult;-><init>(ILandroid/net/MacAddress;IIIII[B[BJ)V
Landroid/net/wifi/rtt/RangingResult;-><init>(ILandroid/net/wifi/aware/PeerHandle;IIIII[B[BJ)V
Landroid/net/wifi/rtt/RangingResult;->EMPTY_BYTE_ARRAY:[B
@@ -50325,10 +46936,6 @@
Landroid/net/wifi/rtt/RangingResult;->mStatus:I
Landroid/net/wifi/rtt/RangingResult;->mTimestamp:J
Landroid/net/wifi/rtt/RangingResult;->TAG:Ljava/lang/String;
-Landroid/net/wifi/rtt/RangingResultCallback$RangingOperationStatus;
-Landroid/net/wifi/rtt/ResponderConfig$ChannelWidth;
-Landroid/net/wifi/rtt/ResponderConfig$PreambleType;
-Landroid/net/wifi/rtt/ResponderConfig$ResponderType;
Landroid/net/wifi/rtt/ResponderConfig;-><init>(Landroid/net/MacAddress;Landroid/net/wifi/aware/PeerHandle;IZIIIII)V
Landroid/net/wifi/rtt/ResponderConfig;->AWARE_BAND_2_DISCOVERY_CHANNEL:I
Landroid/net/wifi/rtt/ResponderConfig;->isValid(Z)Z
@@ -50350,12 +46957,10 @@
Landroid/net/wifi/RttManager;->mNewService:Landroid/net/wifi/rtt/WifiRttManager;
Landroid/net/wifi/RttManager;->mRttCapabilities:Landroid/net/wifi/RttManager$RttCapabilities;
Landroid/net/wifi/RttManager;->TAG:Ljava/lang/String;
-Landroid/net/wifi/ScanResult$InformationElement;
Landroid/net/wifi/ScanResult$InformationElement;-><init>()V
Landroid/net/wifi/ScanResult$InformationElement;-><init>(Landroid/net/wifi/ScanResult$InformationElement;)V
Landroid/net/wifi/ScanResult$InformationElement;->EID_HT_CAPABILITIES:I
Landroid/net/wifi/ScanResult$InformationElement;->EID_VHT_CAPABILITIES:I
-Landroid/net/wifi/ScanResult$RadioChainInfo;
Landroid/net/wifi/ScanResult$RadioChainInfo;-><init>()V
Landroid/net/wifi/ScanResult$RadioChainInfo;->id:I
Landroid/net/wifi/ScanResult$RadioChainInfo;->level:I
@@ -50395,12 +47000,10 @@
Landroid/net/wifi/ScanResult;->radioChainInfos:[Landroid/net/wifi/ScanResult$RadioChainInfo;
Landroid/net/wifi/ScanResult;->setFlag(J)V
Landroid/net/wifi/ScanResult;->UNSPECIFIED:I
-Landroid/net/wifi/SupplicantState;-><init>()V
Landroid/net/wifi/SupplicantState;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/net/wifi/SupplicantState;->isConnecting(Landroid/net/wifi/SupplicantState;)Z
Landroid/net/wifi/SupplicantState;->isDriverActive(Landroid/net/wifi/SupplicantState;)Z
Landroid/net/wifi/SupplicantState;->isHandshakeState(Landroid/net/wifi/SupplicantState;)Z
-Landroid/net/wifi/WifiActivityEnergyInfo;
Landroid/net/wifi/WifiActivityEnergyInfo;-><init>(JIJ[JJJJJ)V
Landroid/net/wifi/WifiActivityEnergyInfo;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/net/wifi/WifiActivityEnergyInfo;->getControllerEnergyUsed()J
@@ -50431,7 +47034,6 @@
Landroid/net/wifi/WifiConfiguration$KeyMgmt;->FT_EAP:I
Landroid/net/wifi/WifiConfiguration$KeyMgmt;->FT_PSK:I
Landroid/net/wifi/WifiConfiguration$KeyMgmt;->OSEN:I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;
Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;-><init>()V
Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->clearDisableReasonCounter()V
Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->clearDisableReasonCounter(I)V
@@ -50510,7 +47112,6 @@
Landroid/net/wifi/WifiConfiguration$PairwiseCipher;-><init>()V
Landroid/net/wifi/WifiConfiguration$Protocol;-><init>()V
Landroid/net/wifi/WifiConfiguration$Protocol;->OSEN:I
-Landroid/net/wifi/WifiConfiguration$RecentFailure;
Landroid/net/wifi/WifiConfiguration$RecentFailure;-><init>()V
Landroid/net/wifi/WifiConfiguration$RecentFailure;->clear()V
Landroid/net/wifi/WifiConfiguration$RecentFailure;->getAssociationStatus()I
@@ -50590,9 +47191,7 @@
Landroid/net/wifi/WifiEnterpriseConfig$Phase2;->AUTHEAP_PREFIX:Ljava/lang/String;
Landroid/net/wifi/WifiEnterpriseConfig$Phase2;->AUTH_PREFIX:Ljava/lang/String;
Landroid/net/wifi/WifiEnterpriseConfig$Phase2;->strings:[Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig$SupplicantLoader;
Landroid/net/wifi/WifiEnterpriseConfig$SupplicantLoader;->loadValue(Ljava/lang/String;)Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig$SupplicantSaver;
Landroid/net/wifi/WifiEnterpriseConfig$SupplicantSaver;->saveValue(Ljava/lang/String;Ljava/lang/String;)Z
Landroid/net/wifi/WifiEnterpriseConfig;->ALTSUBJECT_MATCH_KEY:Ljava/lang/String;
Landroid/net/wifi/WifiEnterpriseConfig;->ANON_IDENTITY_KEY:Ljava/lang/String;
@@ -50680,7 +47279,6 @@
Landroid/net/wifi/WifiInfo;->txSuccessRate:D
Landroid/net/wifi/WifiInfo;->valueOf(Ljava/lang/String;)Landroid/net/wifi/SupplicantState;
Landroid/net/wifi/WifiManager$LocalOnlyHotspotCallback;->REQUEST_REGISTERED:I
-Landroid/net/wifi/WifiManager$LocalOnlyHotspotCallbackProxy;
Landroid/net/wifi/WifiManager$LocalOnlyHotspotCallbackProxy;-><init>(Landroid/net/wifi/WifiManager;Landroid/os/Looper;Landroid/net/wifi/WifiManager$LocalOnlyHotspotCallback;)V
Landroid/net/wifi/WifiManager$LocalOnlyHotspotCallbackProxy;->getMessenger()Landroid/os/Messenger;
Landroid/net/wifi/WifiManager$LocalOnlyHotspotCallbackProxy;->mHandler:Landroid/os/Handler;
@@ -50688,12 +47286,10 @@
Landroid/net/wifi/WifiManager$LocalOnlyHotspotCallbackProxy;->mMessenger:Landroid/os/Messenger;
Landroid/net/wifi/WifiManager$LocalOnlyHotspotCallbackProxy;->mWifiManager:Ljava/lang/ref/WeakReference;
Landroid/net/wifi/WifiManager$LocalOnlyHotspotCallbackProxy;->notifyFailed(I)V
-Landroid/net/wifi/WifiManager$LocalOnlyHotspotObserver;
Landroid/net/wifi/WifiManager$LocalOnlyHotspotObserver;-><init>()V
Landroid/net/wifi/WifiManager$LocalOnlyHotspotObserver;->onRegistered(Landroid/net/wifi/WifiManager$LocalOnlyHotspotSubscription;)V
Landroid/net/wifi/WifiManager$LocalOnlyHotspotObserver;->onStarted(Landroid/net/wifi/WifiConfiguration;)V
Landroid/net/wifi/WifiManager$LocalOnlyHotspotObserver;->onStopped()V
-Landroid/net/wifi/WifiManager$LocalOnlyHotspotObserverProxy;
Landroid/net/wifi/WifiManager$LocalOnlyHotspotObserverProxy;-><init>(Landroid/net/wifi/WifiManager;Landroid/os/Looper;Landroid/net/wifi/WifiManager$LocalOnlyHotspotObserver;)V
Landroid/net/wifi/WifiManager$LocalOnlyHotspotObserverProxy;->getMessenger()Landroid/os/Messenger;
Landroid/net/wifi/WifiManager$LocalOnlyHotspotObserverProxy;->mHandler:Landroid/os/Handler;
@@ -50701,42 +47297,29 @@
Landroid/net/wifi/WifiManager$LocalOnlyHotspotObserverProxy;->mMessenger:Landroid/os/Messenger;
Landroid/net/wifi/WifiManager$LocalOnlyHotspotObserverProxy;->mWifiManager:Ljava/lang/ref/WeakReference;
Landroid/net/wifi/WifiManager$LocalOnlyHotspotObserverProxy;->registered()V
-Landroid/net/wifi/WifiManager$LocalOnlyHotspotReservation;-><init>(Landroid/net/wifi/WifiConfiguration;)V
Landroid/net/wifi/WifiManager$LocalOnlyHotspotReservation;->mCloseGuard:Ldalvik/system/CloseGuard;
Landroid/net/wifi/WifiManager$LocalOnlyHotspotReservation;->mConfig:Landroid/net/wifi/WifiConfiguration;
-Landroid/net/wifi/WifiManager$LocalOnlyHotspotSubscription;
-Landroid/net/wifi/WifiManager$LocalOnlyHotspotSubscription;-><init>()V
Landroid/net/wifi/WifiManager$LocalOnlyHotspotSubscription;->mCloseGuard:Ldalvik/system/CloseGuard;
-Landroid/net/wifi/WifiManager$MulticastLock;-><init>(Ljava/lang/String;)V
Landroid/net/wifi/WifiManager$MulticastLock;->mBinder:Landroid/os/IBinder;
Landroid/net/wifi/WifiManager$MulticastLock;->mHeld:Z
Landroid/net/wifi/WifiManager$MulticastLock;->mRefCount:I
Landroid/net/wifi/WifiManager$MulticastLock;->mRefCounted:Z
Landroid/net/wifi/WifiManager$MulticastLock;->mTag:Ljava/lang/String;
-Landroid/net/wifi/WifiManager$ProvisioningCallbackProxy;
Landroid/net/wifi/WifiManager$ProvisioningCallbackProxy;-><init>(Landroid/os/Looper;Landroid/net/wifi/hotspot2/ProvisioningCallback;)V
Landroid/net/wifi/WifiManager$ProvisioningCallbackProxy;->mCallback:Landroid/net/wifi/hotspot2/ProvisioningCallback;
Landroid/net/wifi/WifiManager$ProvisioningCallbackProxy;->mHandler:Landroid/os/Handler;
Landroid/net/wifi/WifiManager$ProvisioningCallbackProxy;->onProvisioningFailure(I)V
Landroid/net/wifi/WifiManager$ProvisioningCallbackProxy;->onProvisioningStatus(I)V
-Landroid/net/wifi/WifiManager$SapStartFailure;
-Landroid/net/wifi/WifiManager$ServiceHandler;
-Landroid/net/wifi/WifiManager$ServiceHandler;-><init>(Landroid/os/Looper;)V
Landroid/net/wifi/WifiManager$ServiceHandler;->dispatchMessageToListeners(Landroid/os/Message;)V
-Landroid/net/wifi/WifiManager$SoftApCallback;
Landroid/net/wifi/WifiManager$SoftApCallback;->onNumClientsChanged(I)V
Landroid/net/wifi/WifiManager$SoftApCallback;->onStateChanged(II)V
-Landroid/net/wifi/WifiManager$SoftApCallbackProxy;
Landroid/net/wifi/WifiManager$SoftApCallbackProxy;-><init>(Landroid/os/Looper;Landroid/net/wifi/WifiManager$SoftApCallback;)V
Landroid/net/wifi/WifiManager$SoftApCallbackProxy;->mCallback:Landroid/net/wifi/WifiManager$SoftApCallback;
Landroid/net/wifi/WifiManager$SoftApCallbackProxy;->mHandler:Landroid/os/Handler;
Landroid/net/wifi/WifiManager$SoftApCallbackProxy;->onNumClientsChanged(I)V
Landroid/net/wifi/WifiManager$SoftApCallbackProxy;->onStateChanged(II)V
-Landroid/net/wifi/WifiManager$TxPacketCountListener;
Landroid/net/wifi/WifiManager$TxPacketCountListener;->onFailure(I)V
Landroid/net/wifi/WifiManager$TxPacketCountListener;->onSuccess(I)V
-Landroid/net/wifi/WifiManager$WifiApState;
-Landroid/net/wifi/WifiManager$WifiLock;-><init>(ILjava/lang/String;)V
Landroid/net/wifi/WifiManager$WifiLock;->mBinder:Landroid/os/IBinder;
Landroid/net/wifi/WifiManager$WifiLock;->mHeld:Z
Landroid/net/wifi/WifiManager$WifiLock;->mLockType:I
@@ -50898,12 +47481,10 @@
Landroid/net/wifi/WifiManager;->WPS_COMPLETED:I
Landroid/net/wifi/WifiManager;->WPS_FAILED:I
Landroid/net/wifi/WifiNetworkConnectionStatistics;->TAG:Ljava/lang/String;
-Landroid/net/wifi/WifiNetworkScoreCache$CacheListener;
Landroid/net/wifi/WifiNetworkScoreCache$CacheListener;-><init>(Landroid/os/Handler;)V
Landroid/net/wifi/WifiNetworkScoreCache$CacheListener;->mHandler:Landroid/os/Handler;
Landroid/net/wifi/WifiNetworkScoreCache$CacheListener;->networkCacheUpdated(Ljava/util/List;)V
Landroid/net/wifi/WifiNetworkScoreCache$CacheListener;->post(Ljava/util/List;)V
-Landroid/net/wifi/WifiNetworkScoreCache;
Landroid/net/wifi/WifiNetworkScoreCache;-><init>(Landroid/content/Context;)V
Landroid/net/wifi/WifiNetworkScoreCache;-><init>(Landroid/content/Context;Landroid/net/wifi/WifiNetworkScoreCache$CacheListener;)V
Landroid/net/wifi/WifiNetworkScoreCache;-><init>(Landroid/content/Context;Landroid/net/wifi/WifiNetworkScoreCache$CacheListener;I)V
@@ -50932,16 +47513,13 @@
Landroid/net/wifi/WifiScanner$ChannelSpec;->dwellTimeMS:I
Landroid/net/wifi/WifiScanner$ChannelSpec;->passive:Z
Landroid/net/wifi/WifiScanner$HotlistSettings;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/wifi/WifiScanner$OperationResult;
Landroid/net/wifi/WifiScanner$OperationResult;-><init>(ILjava/lang/String;)V
Landroid/net/wifi/WifiScanner$OperationResult;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/net/wifi/WifiScanner$OperationResult;->description:Ljava/lang/String;
Landroid/net/wifi/WifiScanner$OperationResult;->reason:I
Landroid/net/wifi/WifiScanner$ParcelableScanData;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/net/wifi/WifiScanner$ParcelableScanResults;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/wifi/WifiScanner$PnoScanListener;
Landroid/net/wifi/WifiScanner$PnoScanListener;->onPnoNetworkFound([Landroid/net/wifi/ScanResult;)V
-Landroid/net/wifi/WifiScanner$PnoSettings$PnoNetwork;
Landroid/net/wifi/WifiScanner$PnoSettings$PnoNetwork;-><init>(Ljava/lang/String;)V
Landroid/net/wifi/WifiScanner$PnoSettings$PnoNetwork;->authBitField:B
Landroid/net/wifi/WifiScanner$PnoSettings$PnoNetwork;->AUTH_CODE_EAPOL:B
@@ -50954,7 +47532,6 @@
Landroid/net/wifi/WifiScanner$PnoSettings$PnoNetwork;->FLAG_SAME_NETWORK:B
Landroid/net/wifi/WifiScanner$PnoSettings$PnoNetwork;->FLAG_STRICT_MATCH:B
Landroid/net/wifi/WifiScanner$PnoSettings$PnoNetwork;->ssid:Ljava/lang/String;
-Landroid/net/wifi/WifiScanner$PnoSettings;
Landroid/net/wifi/WifiScanner$PnoSettings;-><init>()V
Landroid/net/wifi/WifiScanner$PnoSettings;->band5GHzBonus:I
Landroid/net/wifi/WifiScanner$PnoSettings;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -50976,15 +47553,12 @@
Landroid/net/wifi/WifiScanner$ScanData;->mFlags:I
Landroid/net/wifi/WifiScanner$ScanData;->mId:I
Landroid/net/wifi/WifiScanner$ScanData;->mResults:[Landroid/net/wifi/ScanResult;
-Landroid/net/wifi/WifiScanner$ScanSettings$HiddenNetwork;
Landroid/net/wifi/WifiScanner$ScanSettings$HiddenNetwork;-><init>(Ljava/lang/String;)V
Landroid/net/wifi/WifiScanner$ScanSettings$HiddenNetwork;->ssid:Ljava/lang/String;
Landroid/net/wifi/WifiScanner$ScanSettings;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/net/wifi/WifiScanner$ScanSettings;->hiddenNetworks:[Landroid/net/wifi/WifiScanner$ScanSettings$HiddenNetwork;
Landroid/net/wifi/WifiScanner$ScanSettings;->isPnoScan:Z
Landroid/net/wifi/WifiScanner$ScanSettings;->type:I
-Landroid/net/wifi/WifiScanner$ServiceHandler;
-Landroid/net/wifi/WifiScanner$ServiceHandler;-><init>(Landroid/os/Looper;)V
Landroid/net/wifi/WifiScanner$WifiChangeSettings;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/net/wifi/WifiScanner;-><init>(Landroid/content/Context;Landroid/net/wifi/IWifiScanner;Landroid/os/Looper;)V
Landroid/net/wifi/WifiScanner;->addListener(Landroid/net/wifi/WifiScanner$ActionListener;)I
@@ -51037,7 +47611,6 @@
Landroid/net/wifi/WifiScanner;->TYPE_LOW_LATENCY:I
Landroid/net/wifi/WifiScanner;->TYPE_LOW_POWER:I
Landroid/net/wifi/WifiScanner;->validateChannel()V
-Landroid/net/wifi/WifiSsid;
Landroid/net/wifi/WifiSsid;-><init>()V
Landroid/net/wifi/WifiSsid;->convertToBytes(Ljava/lang/String;)V
Landroid/net/wifi/WifiSsid;->createFromByteArray([B)Landroid/net/wifi/WifiSsid;
@@ -51047,7 +47620,6 @@
Landroid/net/wifi/WifiSsid;->isArrayAllZeroes([B)Z
Landroid/net/wifi/WifiSsid;->isHidden()Z
Landroid/net/wifi/WifiSsid;->TAG:Ljava/lang/String;
-Landroid/net/wifi/WifiWakeReasonAndCounts;
Landroid/net/wifi/WifiWakeReasonAndCounts;-><init>()V
Landroid/net/wifi/WifiWakeReasonAndCounts;->cmdEventWakeCntArray:[I
Landroid/net/wifi/WifiWakeReasonAndCounts;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -51067,14 +47639,11 @@
Landroid/net/wifi/WifiWakeReasonAndCounts;->totalCmdEventWake:I
Landroid/net/wifi/WifiWakeReasonAndCounts;->totalDriverFwLocalWake:I
Landroid/net/wifi/WifiWakeReasonAndCounts;->totalRxDataWake:I
-Landroid/net/wifi/WpsResult$Status;
-Landroid/net/wifi/WpsResult$Status;-><init>()V
Landroid/net/wifi/WpsResult$Status;->FAILURE:Landroid/net/wifi/WpsResult$Status;
Landroid/net/wifi/WpsResult$Status;->IN_PROGRESS:Landroid/net/wifi/WpsResult$Status;
Landroid/net/wifi/WpsResult$Status;->SUCCESS:Landroid/net/wifi/WpsResult$Status;
Landroid/net/wifi/WpsResult$Status;->valueOf(Ljava/lang/String;)Landroid/net/wifi/WpsResult$Status;
Landroid/net/wifi/WpsResult$Status;->values()[Landroid/net/wifi/WpsResult$Status;
-Landroid/net/wifi/WpsResult;
Landroid/net/wifi/WpsResult;-><init>()V
Landroid/net/wifi/WpsResult;-><init>(Landroid/net/wifi/WpsResult$Status;)V
Landroid/net/wifi/WpsResult;-><init>(Landroid/net/wifi/WpsResult;)V
@@ -51084,7 +47653,6 @@
Landroid/net/WifiKey;-><init>(Landroid/os/Parcel;)V
Landroid/net/WifiKey;->BSSID_PATTERN:Ljava/util/regex/Pattern;
Landroid/net/WifiKey;->SSID_PATTERN:Ljava/util/regex/Pattern;
-Landroid/net/WifiLinkQualityInfo;
Landroid/net/WifiLinkQualityInfo;-><init>()V
Landroid/net/WifiLinkQualityInfo;->createFromParcelBody(Landroid/os/Parcel;)Landroid/net/WifiLinkQualityInfo;
Landroid/net/WifiLinkQualityInfo;->getBssid()Ljava/lang/String;
@@ -51102,26 +47670,22 @@
Landroid/net/WifiLinkQualityInfo;->setTxBad(J)V
Landroid/net/WifiLinkQualityInfo;->setTxGood(J)V
Landroid/net/WifiLinkQualityInfo;->setType(I)V
-Landroid/nfc/ApduList;
Landroid/nfc/ApduList;-><init>()V
Landroid/nfc/ApduList;-><init>(Landroid/os/Parcel;)V
Landroid/nfc/ApduList;->add([B)V
Landroid/nfc/ApduList;->commands:Ljava/util/ArrayList;
Landroid/nfc/ApduList;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/nfc/ApduList;->get()Ljava/util/List;
-Landroid/nfc/BeamShareData;
Landroid/nfc/BeamShareData;-><init>(Landroid/nfc/NdefMessage;[Landroid/net/Uri;Landroid/os/UserHandle;I)V
Landroid/nfc/BeamShareData;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/nfc/BeamShareData;->flags:I
Landroid/nfc/BeamShareData;->ndefMessage:Landroid/nfc/NdefMessage;
Landroid/nfc/BeamShareData;->uris:[Landroid/net/Uri;
Landroid/nfc/BeamShareData;->userHandle:Landroid/os/UserHandle;
-Landroid/nfc/cardemulation/AidGroup;
Landroid/nfc/cardemulation/AidGroup;-><init>(Ljava/util/List;Ljava/lang/String;)V
Landroid/nfc/cardemulation/AidGroup;->isValidCategory(Ljava/lang/String;)Z
Landroid/nfc/cardemulation/AidGroup;->MAX_NUM_AIDS:I
Landroid/nfc/cardemulation/AidGroup;->TAG:Ljava/lang/String;
-Landroid/nfc/cardemulation/ApduServiceInfo;
Landroid/nfc/cardemulation/ApduServiceInfo;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
Landroid/nfc/cardemulation/ApduServiceInfo;->getAidGroups()Ljava/util/ArrayList;
Landroid/nfc/cardemulation/ApduServiceInfo;->getAids()Ljava/util/List;
@@ -51154,8 +47718,6 @@
Landroid/nfc/cardemulation/CardEmulation;->sIsInitialized:Z
Landroid/nfc/cardemulation/CardEmulation;->sService:Landroid/nfc/INfcCardEmulation;
Landroid/nfc/cardemulation/CardEmulation;->TAG:Ljava/lang/String;
-Landroid/nfc/cardemulation/HostApduService$MsgHandler;
-Landroid/nfc/cardemulation/HostApduService$MsgHandler;-><init>()V
Landroid/nfc/cardemulation/HostApduService;->KEY_DATA:Ljava/lang/String;
Landroid/nfc/cardemulation/HostApduService;->mMessenger:Landroid/os/Messenger;
Landroid/nfc/cardemulation/HostApduService;->mNfcService:Landroid/os/Messenger;
@@ -51164,8 +47726,6 @@
Landroid/nfc/cardemulation/HostApduService;->MSG_RESPONSE_APDU:I
Landroid/nfc/cardemulation/HostApduService;->MSG_UNHANDLED:I
Landroid/nfc/cardemulation/HostApduService;->TAG:Ljava/lang/String;
-Landroid/nfc/cardemulation/HostNfcFService$MsgHandler;
-Landroid/nfc/cardemulation/HostNfcFService$MsgHandler;-><init>()V
Landroid/nfc/cardemulation/HostNfcFService;->KEY_DATA:Ljava/lang/String;
Landroid/nfc/cardemulation/HostNfcFService;->KEY_MESSENGER:Ljava/lang/String;
Landroid/nfc/cardemulation/HostNfcFService;->mMessenger:Landroid/os/Messenger;
@@ -51185,7 +47745,6 @@
Landroid/nfc/cardemulation/NfcFCardEmulation;->sIsInitialized:Z
Landroid/nfc/cardemulation/NfcFCardEmulation;->sService:Landroid/nfc/INfcFCardEmulation;
Landroid/nfc/cardemulation/NfcFCardEmulation;->TAG:Ljava/lang/String;
-Landroid/nfc/cardemulation/NfcFServiceInfo;
Landroid/nfc/cardemulation/NfcFServiceInfo;-><init>(Landroid/content/pm/PackageManager;Landroid/content/pm/ResolveInfo;)V
Landroid/nfc/cardemulation/NfcFServiceInfo;-><init>(Landroid/content/pm/ResolveInfo;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)V
Landroid/nfc/cardemulation/NfcFServiceInfo;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -51210,7 +47769,6 @@
Landroid/nfc/cardemulation/NfcFServiceInfo;->setOrReplaceDynamicNfcid2(Ljava/lang/String;)V
Landroid/nfc/cardemulation/NfcFServiceInfo;->setOrReplaceDynamicSystemCode(Ljava/lang/String;)V
Landroid/nfc/cardemulation/NfcFServiceInfo;->TAG:Ljava/lang/String;
-Landroid/nfc/ErrorCodes;
Landroid/nfc/ErrorCodes;-><init>()V
Landroid/nfc/ErrorCodes;->asString(I)Ljava/lang/String;
Landroid/nfc/ErrorCodes;->ERROR_BUFFER_TO_SMALL:I
@@ -51236,25 +47794,21 @@
Landroid/nfc/ErrorCodes;->ERROR_TIMEOUT:I
Landroid/nfc/ErrorCodes;->ERROR_WRITE:I
Landroid/nfc/ErrorCodes;->SUCCESS:I
-Landroid/nfc/IAppCallback$Stub$Proxy;
Landroid/nfc/IAppCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/nfc/IAppCallback$Stub$Proxy;->createBeamShareData(B)Landroid/nfc/BeamShareData;
Landroid/nfc/IAppCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/nfc/IAppCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/nfc/IAppCallback$Stub$Proxy;->onNdefPushComplete(B)V
Landroid/nfc/IAppCallback$Stub$Proxy;->onTagDiscovered(Landroid/nfc/Tag;)V
-Landroid/nfc/IAppCallback$Stub;
Landroid/nfc/IAppCallback$Stub;-><init>()V
Landroid/nfc/IAppCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/nfc/IAppCallback;
Landroid/nfc/IAppCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/nfc/IAppCallback$Stub;->TRANSACTION_createBeamShareData:I
Landroid/nfc/IAppCallback$Stub;->TRANSACTION_onNdefPushComplete:I
Landroid/nfc/IAppCallback$Stub;->TRANSACTION_onTagDiscovered:I
-Landroid/nfc/IAppCallback;
Landroid/nfc/IAppCallback;->createBeamShareData(B)Landroid/nfc/BeamShareData;
Landroid/nfc/IAppCallback;->onNdefPushComplete(B)V
Landroid/nfc/IAppCallback;->onTagDiscovered(Landroid/nfc/Tag;)V
-Landroid/nfc/INfcAdapter$Stub$Proxy;
Landroid/nfc/INfcAdapter$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/nfc/INfcAdapter$Stub$Proxy;->addNfcUnlockHandler(Landroid/nfc/INfcUnlockHandler;[I)V
Landroid/nfc/INfcAdapter$Stub$Proxy;->disable(Z)Z
@@ -51282,7 +47836,6 @@
Landroid/nfc/INfcAdapter$Stub$Proxy;->setP2pModes(II)V
Landroid/nfc/INfcAdapter$Stub$Proxy;->setReaderMode(Landroid/os/IBinder;Landroid/nfc/IAppCallback;ILandroid/os/Bundle;)V
Landroid/nfc/INfcAdapter$Stub$Proxy;->verifyNfcPermission()V
-Landroid/nfc/INfcAdapter$Stub;
Landroid/nfc/INfcAdapter$Stub;-><init>()V
Landroid/nfc/INfcAdapter$Stub;->asInterface(Landroid/os/IBinder;)Landroid/nfc/INfcAdapter;
Landroid/nfc/INfcAdapter$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -51309,7 +47862,6 @@
Landroid/nfc/INfcAdapter$Stub;->TRANSACTION_setP2pModes:I
Landroid/nfc/INfcAdapter$Stub;->TRANSACTION_setReaderMode:I
Landroid/nfc/INfcAdapter$Stub;->TRANSACTION_verifyNfcPermission:I
-Landroid/nfc/INfcAdapter;
Landroid/nfc/INfcAdapter;->addNfcUnlockHandler(Landroid/nfc/INfcUnlockHandler;[I)V
Landroid/nfc/INfcAdapter;->disable(Z)Z
Landroid/nfc/INfcAdapter;->disableNdefPush()Z
@@ -51334,7 +47886,6 @@
Landroid/nfc/INfcAdapter;->setP2pModes(II)V
Landroid/nfc/INfcAdapter;->setReaderMode(Landroid/os/IBinder;Landroid/nfc/IAppCallback;ILandroid/os/Bundle;)V
Landroid/nfc/INfcAdapter;->verifyNfcPermission()V
-Landroid/nfc/INfcAdapterExtras$Stub$Proxy;
Landroid/nfc/INfcAdapterExtras$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/nfc/INfcAdapterExtras$Stub$Proxy;->authenticate(Ljava/lang/String;[B)V
Landroid/nfc/INfcAdapterExtras$Stub$Proxy;->close(Ljava/lang/String;Landroid/os/IBinder;)Landroid/os/Bundle;
@@ -51345,7 +47896,6 @@
Landroid/nfc/INfcAdapterExtras$Stub$Proxy;->open(Ljava/lang/String;Landroid/os/IBinder;)Landroid/os/Bundle;
Landroid/nfc/INfcAdapterExtras$Stub$Proxy;->setCardEmulationRoute(Ljava/lang/String;I)V
Landroid/nfc/INfcAdapterExtras$Stub$Proxy;->transceive(Ljava/lang/String;[B)Landroid/os/Bundle;
-Landroid/nfc/INfcAdapterExtras$Stub;
Landroid/nfc/INfcAdapterExtras$Stub;-><init>()V
Landroid/nfc/INfcAdapterExtras$Stub;->asInterface(Landroid/os/IBinder;)Landroid/nfc/INfcAdapterExtras;
Landroid/nfc/INfcAdapterExtras$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -51356,8 +47906,6 @@
Landroid/nfc/INfcAdapterExtras$Stub;->TRANSACTION_open:I
Landroid/nfc/INfcAdapterExtras$Stub;->TRANSACTION_setCardEmulationRoute:I
Landroid/nfc/INfcAdapterExtras$Stub;->TRANSACTION_transceive:I
-Landroid/nfc/INfcAdapterExtras;
-Landroid/nfc/INfcCardEmulation$Stub$Proxy;
Landroid/nfc/INfcCardEmulation$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/nfc/INfcCardEmulation$Stub$Proxy;->getAidGroupForService(ILandroid/content/ComponentName;Ljava/lang/String;)Landroid/nfc/cardemulation/AidGroup;
Landroid/nfc/INfcCardEmulation$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
@@ -51372,7 +47920,6 @@
Landroid/nfc/INfcCardEmulation$Stub$Proxy;->setPreferredService(Landroid/content/ComponentName;)Z
Landroid/nfc/INfcCardEmulation$Stub$Proxy;->supportsAidPrefixRegistration()Z
Landroid/nfc/INfcCardEmulation$Stub$Proxy;->unsetPreferredService()Z
-Landroid/nfc/INfcCardEmulation$Stub;
Landroid/nfc/INfcCardEmulation$Stub;-><init>()V
Landroid/nfc/INfcCardEmulation$Stub;->asInterface(Landroid/os/IBinder;)Landroid/nfc/INfcCardEmulation;
Landroid/nfc/INfcCardEmulation$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -51387,7 +47934,6 @@
Landroid/nfc/INfcCardEmulation$Stub;->TRANSACTION_setPreferredService:I
Landroid/nfc/INfcCardEmulation$Stub;->TRANSACTION_supportsAidPrefixRegistration:I
Landroid/nfc/INfcCardEmulation$Stub;->TRANSACTION_unsetPreferredService:I
-Landroid/nfc/INfcCardEmulation;
Landroid/nfc/INfcCardEmulation;->getAidGroupForService(ILandroid/content/ComponentName;Ljava/lang/String;)Landroid/nfc/cardemulation/AidGroup;
Landroid/nfc/INfcCardEmulation;->getServices(ILjava/lang/String;)Ljava/util/List;
Landroid/nfc/INfcCardEmulation;->isDefaultServiceForAid(ILandroid/content/ComponentName;Ljava/lang/String;)Z
@@ -51399,7 +47945,6 @@
Landroid/nfc/INfcCardEmulation;->setPreferredService(Landroid/content/ComponentName;)Z
Landroid/nfc/INfcCardEmulation;->supportsAidPrefixRegistration()Z
Landroid/nfc/INfcCardEmulation;->unsetPreferredService()Z
-Landroid/nfc/INfcDta$Stub$Proxy;
Landroid/nfc/INfcDta$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/nfc/INfcDta$Stub$Proxy;->disableClient()V
Landroid/nfc/INfcDta$Stub$Proxy;->disableDta()V
@@ -51410,7 +47955,6 @@
Landroid/nfc/INfcDta$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/nfc/INfcDta$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/nfc/INfcDta$Stub$Proxy;->registerMessageService(Ljava/lang/String;)Z
-Landroid/nfc/INfcDta$Stub;
Landroid/nfc/INfcDta$Stub;-><init>()V
Landroid/nfc/INfcDta$Stub;->asInterface(Landroid/os/IBinder;)Landroid/nfc/INfcDta;
Landroid/nfc/INfcDta$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -51421,7 +47965,6 @@
Landroid/nfc/INfcDta$Stub;->TRANSACTION_enableDta:I
Landroid/nfc/INfcDta$Stub;->TRANSACTION_enableServer:I
Landroid/nfc/INfcDta$Stub;->TRANSACTION_registerMessageService:I
-Landroid/nfc/INfcDta;
Landroid/nfc/INfcDta;->disableClient()V
Landroid/nfc/INfcDta;->disableDta()V
Landroid/nfc/INfcDta;->disableServer()V
@@ -51429,7 +47972,6 @@
Landroid/nfc/INfcDta;->enableDta()V
Landroid/nfc/INfcDta;->enableServer(Ljava/lang/String;IIII)Z
Landroid/nfc/INfcDta;->registerMessageService(Ljava/lang/String;)Z
-Landroid/nfc/INfcFCardEmulation$Stub$Proxy;
Landroid/nfc/INfcFCardEmulation$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/nfc/INfcFCardEmulation$Stub$Proxy;->disableNfcFForegroundService()Z
Landroid/nfc/INfcFCardEmulation$Stub$Proxy;->enableNfcFForegroundService(Landroid/content/ComponentName;)Z
@@ -51442,7 +47984,6 @@
Landroid/nfc/INfcFCardEmulation$Stub$Proxy;->registerSystemCodeForService(ILandroid/content/ComponentName;Ljava/lang/String;)Z
Landroid/nfc/INfcFCardEmulation$Stub$Proxy;->removeSystemCodeForService(ILandroid/content/ComponentName;)Z
Landroid/nfc/INfcFCardEmulation$Stub$Proxy;->setNfcid2ForService(ILandroid/content/ComponentName;Ljava/lang/String;)Z
-Landroid/nfc/INfcFCardEmulation$Stub;
Landroid/nfc/INfcFCardEmulation$Stub;-><init>()V
Landroid/nfc/INfcFCardEmulation$Stub;->asInterface(Landroid/os/IBinder;)Landroid/nfc/INfcFCardEmulation;
Landroid/nfc/INfcFCardEmulation$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -51455,7 +47996,6 @@
Landroid/nfc/INfcFCardEmulation$Stub;->TRANSACTION_registerSystemCodeForService:I
Landroid/nfc/INfcFCardEmulation$Stub;->TRANSACTION_removeSystemCodeForService:I
Landroid/nfc/INfcFCardEmulation$Stub;->TRANSACTION_setNfcid2ForService:I
-Landroid/nfc/INfcFCardEmulation;
Landroid/nfc/INfcFCardEmulation;->disableNfcFForegroundService()Z
Landroid/nfc/INfcFCardEmulation;->enableNfcFForegroundService(Landroid/content/ComponentName;)Z
Landroid/nfc/INfcFCardEmulation;->getMaxNumOfRegisterableSystemCodes()I
@@ -51465,7 +48005,6 @@
Landroid/nfc/INfcFCardEmulation;->registerSystemCodeForService(ILandroid/content/ComponentName;Ljava/lang/String;)Z
Landroid/nfc/INfcFCardEmulation;->removeSystemCodeForService(ILandroid/content/ComponentName;)Z
Landroid/nfc/INfcFCardEmulation;->setNfcid2ForService(ILandroid/content/ComponentName;Ljava/lang/String;)Z
-Landroid/nfc/INfcTag$Stub$Proxy;
Landroid/nfc/INfcTag$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/nfc/INfcTag$Stub$Proxy;->canMakeReadOnly(I)Z
Landroid/nfc/INfcTag$Stub$Proxy;->connect(II)I
@@ -51487,7 +48026,6 @@
Landroid/nfc/INfcTag$Stub$Proxy;->resetTimeouts()V
Landroid/nfc/INfcTag$Stub$Proxy;->setTimeout(II)I
Landroid/nfc/INfcTag$Stub$Proxy;->transceive(I[BZ)Landroid/nfc/TransceiveResult;
-Landroid/nfc/INfcTag$Stub;
Landroid/nfc/INfcTag$Stub;-><init>()V
Landroid/nfc/INfcTag$Stub;->asInterface(Landroid/os/IBinder;)Landroid/nfc/INfcTag;
Landroid/nfc/INfcTag$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -51509,7 +48047,6 @@
Landroid/nfc/INfcTag$Stub;->TRANSACTION_resetTimeouts:I
Landroid/nfc/INfcTag$Stub;->TRANSACTION_setTimeout:I
Landroid/nfc/INfcTag$Stub;->TRANSACTION_transceive:I
-Landroid/nfc/INfcTag;
Landroid/nfc/INfcTag;->canMakeReadOnly(I)Z
Landroid/nfc/INfcTag;->connect(II)I
Landroid/nfc/INfcTag;->formatNdef(I[B)I
@@ -51528,29 +48065,23 @@
Landroid/nfc/INfcTag;->resetTimeouts()V
Landroid/nfc/INfcTag;->setTimeout(II)I
Landroid/nfc/INfcTag;->transceive(I[BZ)Landroid/nfc/TransceiveResult;
-Landroid/nfc/INfcUnlockHandler$Stub$Proxy;
Landroid/nfc/INfcUnlockHandler$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/nfc/INfcUnlockHandler$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/nfc/INfcUnlockHandler$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/nfc/INfcUnlockHandler$Stub$Proxy;->onUnlockAttempted(Landroid/nfc/Tag;)Z
-Landroid/nfc/INfcUnlockHandler$Stub;
Landroid/nfc/INfcUnlockHandler$Stub;-><init>()V
Landroid/nfc/INfcUnlockHandler$Stub;->asInterface(Landroid/os/IBinder;)Landroid/nfc/INfcUnlockHandler;
Landroid/nfc/INfcUnlockHandler$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/nfc/INfcUnlockHandler$Stub;->TRANSACTION_onUnlockAttempted:I
-Landroid/nfc/INfcUnlockHandler;
Landroid/nfc/INfcUnlockHandler;->onUnlockAttempted(Landroid/nfc/Tag;)Z
-Landroid/nfc/ITagRemovedCallback$Stub$Proxy;
Landroid/nfc/ITagRemovedCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/nfc/ITagRemovedCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/nfc/ITagRemovedCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/nfc/ITagRemovedCallback$Stub$Proxy;->onTagRemoved()V
-Landroid/nfc/ITagRemovedCallback$Stub;
Landroid/nfc/ITagRemovedCallback$Stub;-><init>()V
Landroid/nfc/ITagRemovedCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/nfc/ITagRemovedCallback;
Landroid/nfc/ITagRemovedCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/nfc/ITagRemovedCallback$Stub;->TRANSACTION_onTagRemoved:I
-Landroid/nfc/ITagRemovedCallback;
Landroid/nfc/ITagRemovedCallback;->onTagRemoved()V
Landroid/nfc/NdefMessage;->mRecords:[Landroid/nfc/NdefRecord;
Landroid/nfc/NdefRecord;->bytesToString([B)Ljava/lang/StringBuilder;
@@ -51574,8 +48105,6 @@
Landroid/nfc/NdefRecord;->URI_PREFIX_MAP:[Ljava/lang/String;
Landroid/nfc/NdefRecord;->validateTnf(S[B[B[B)Ljava/lang/String;
Landroid/nfc/NdefRecord;->writeToByteBuffer(Ljava/nio/ByteBuffer;ZZ)V
-Landroid/nfc/NfcActivityManager$NfcActivityState;
-Landroid/nfc/NfcActivityManager$NfcActivityState;-><init>(Landroid/app/Activity;)V
Landroid/nfc/NfcActivityManager$NfcActivityState;->activity:Landroid/app/Activity;
Landroid/nfc/NfcActivityManager$NfcActivityState;->destroy()V
Landroid/nfc/NfcActivityManager$NfcActivityState;->flags:I
@@ -51589,13 +48118,10 @@
Landroid/nfc/NfcActivityManager$NfcActivityState;->token:Landroid/os/Binder;
Landroid/nfc/NfcActivityManager$NfcActivityState;->uriCallback:Landroid/nfc/NfcAdapter$CreateBeamUrisCallback;
Landroid/nfc/NfcActivityManager$NfcActivityState;->uris:[Landroid/net/Uri;
-Landroid/nfc/NfcActivityManager$NfcApplicationState;
-Landroid/nfc/NfcActivityManager$NfcApplicationState;-><init>(Landroid/app/Application;)V
Landroid/nfc/NfcActivityManager$NfcApplicationState;->app:Landroid/app/Application;
Landroid/nfc/NfcActivityManager$NfcApplicationState;->refCount:I
Landroid/nfc/NfcActivityManager$NfcApplicationState;->register()V
Landroid/nfc/NfcActivityManager$NfcApplicationState;->unregister()V
-Landroid/nfc/NfcActivityManager;
Landroid/nfc/NfcActivityManager;-><init>(Landroid/nfc/NfcAdapter;)V
Landroid/nfc/NfcActivityManager;->createBeamShareData(B)Landroid/nfc/BeamShareData;
Landroid/nfc/NfcActivityManager;->DBG:Ljava/lang/Boolean;
@@ -51680,7 +48206,6 @@
Landroid/nfc/Tag;->setConnectedTechnology(I)V
Landroid/nfc/Tag;->setTechnologyDisconnected()V
Landroid/nfc/Tag;->writeBytesWithNull(Landroid/os/Parcel;[B)V
-Landroid/nfc/tech/BasicTagTechnology;
Landroid/nfc/tech/BasicTagTechnology;-><init>(Landroid/nfc/Tag;I)V
Landroid/nfc/tech/BasicTagTechnology;->checkConnected()V
Landroid/nfc/tech/BasicTagTechnology;->getMaxTransceiveLengthInternal()I
@@ -51776,12 +48301,9 @@
Landroid/nfc/tech/TagTechnology;->NFC_F:I
Landroid/nfc/tech/TagTechnology;->NFC_V:I
Landroid/nfc/tech/TagTechnology;->reconnect()V
-Landroid/nfc/TechListParcel;
-Landroid/nfc/TechListParcel;-><init>([[[Ljava/lang/String;)V
Landroid/nfc/TechListParcel;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/nfc/TechListParcel;->getTechLists()[[Ljava/lang/String;
Landroid/nfc/TechListParcel;->mTechLists:[[Ljava/lang/String;
-Landroid/nfc/TransceiveResult;
Landroid/nfc/TransceiveResult;-><init>(I[B)V
Landroid/nfc/TransceiveResult;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/nfc/TransceiveResult;->getResponseOrThrow()[B
@@ -51839,13 +48361,9 @@
Landroid/opengl/GLException;->getError()I
Landroid/opengl/GLException;->getErrorString(I)Ljava/lang/String;
Landroid/opengl/GLException;->mError:I
-Landroid/opengl/GLSurfaceView$BaseConfigChooser;
-Landroid/opengl/GLSurfaceView$BaseConfigChooser;-><init>([I)V
Landroid/opengl/GLSurfaceView$BaseConfigChooser;->chooseConfig(Ljavax/microedition/khronos/egl/EGL10;Ljavax/microedition/khronos/egl/EGLDisplay;[Ljavax/microedition/khronos/egl/EGLConfig;)Ljavax/microedition/khronos/egl/EGLConfig;
Landroid/opengl/GLSurfaceView$BaseConfigChooser;->filterConfigSpec([I)[I
Landroid/opengl/GLSurfaceView$BaseConfigChooser;->mConfigSpec:[I
-Landroid/opengl/GLSurfaceView$ComponentSizeChooser;
-Landroid/opengl/GLSurfaceView$ComponentSizeChooser;-><init>(IIIIII)V
Landroid/opengl/GLSurfaceView$ComponentSizeChooser;->chooseConfig(Ljavax/microedition/khronos/egl/EGL10;Ljavax/microedition/khronos/egl/EGLDisplay;[Ljavax/microedition/khronos/egl/EGLConfig;)Ljavax/microedition/khronos/egl/EGLConfig;
Landroid/opengl/GLSurfaceView$ComponentSizeChooser;->findConfigAttrib(Ljavax/microedition/khronos/egl/EGL10;Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLConfig;II)I
Landroid/opengl/GLSurfaceView$ComponentSizeChooser;->mAlphaSize:I
@@ -51855,12 +48373,8 @@
Landroid/opengl/GLSurfaceView$ComponentSizeChooser;->mRedSize:I
Landroid/opengl/GLSurfaceView$ComponentSizeChooser;->mStencilSize:I
Landroid/opengl/GLSurfaceView$ComponentSizeChooser;->mValue:[I
-Landroid/opengl/GLSurfaceView$DefaultContextFactory;
-Landroid/opengl/GLSurfaceView$DefaultContextFactory;-><init>()V
Landroid/opengl/GLSurfaceView$DefaultContextFactory;->EGL_CONTEXT_CLIENT_VERSION:I
-Landroid/opengl/GLSurfaceView$DefaultWindowSurfaceFactory;
Landroid/opengl/GLSurfaceView$DefaultWindowSurfaceFactory;-><init>()V
-Landroid/opengl/GLSurfaceView$EglHelper;
Landroid/opengl/GLSurfaceView$EglHelper;-><init>(Ljava/lang/ref/WeakReference;)V
Landroid/opengl/GLSurfaceView$EglHelper;->createGL()Ljavax/microedition/khronos/opengles/GL;
Landroid/opengl/GLSurfaceView$EglHelper;->createSurface()Z
@@ -51878,7 +48392,6 @@
Landroid/opengl/GLSurfaceView$EglHelper;->swap()I
Landroid/opengl/GLSurfaceView$EglHelper;->throwEglException(Ljava/lang/String;)V
Landroid/opengl/GLSurfaceView$EglHelper;->throwEglException(Ljava/lang/String;I)V
-Landroid/opengl/GLSurfaceView$GLThread;
Landroid/opengl/GLSurfaceView$GLThread;-><init>(Ljava/lang/ref/WeakReference;)V
Landroid/opengl/GLSurfaceView$GLThread;->ableToDraw()Z
Landroid/opengl/GLSurfaceView$GLThread;->getRenderMode()I
@@ -51918,17 +48431,13 @@
Landroid/opengl/GLSurfaceView$GLThread;->stopEglSurfaceLocked()V
Landroid/opengl/GLSurfaceView$GLThread;->surfaceCreated()V
Landroid/opengl/GLSurfaceView$GLThread;->surfaceDestroyed()V
-Landroid/opengl/GLSurfaceView$GLThreadManager;
Landroid/opengl/GLSurfaceView$GLThreadManager;-><init>()V
Landroid/opengl/GLSurfaceView$GLThreadManager;->releaseEglContextLocked(Landroid/opengl/GLSurfaceView$GLThread;)V
Landroid/opengl/GLSurfaceView$GLThreadManager;->TAG:Ljava/lang/String;
Landroid/opengl/GLSurfaceView$GLThreadManager;->threadExiting(Landroid/opengl/GLSurfaceView$GLThread;)V
-Landroid/opengl/GLSurfaceView$LogWriter;
Landroid/opengl/GLSurfaceView$LogWriter;-><init>()V
Landroid/opengl/GLSurfaceView$LogWriter;->flushBuilder()V
Landroid/opengl/GLSurfaceView$LogWriter;->mBuilder:Ljava/lang/StringBuilder;
-Landroid/opengl/GLSurfaceView$SimpleEGLConfigChooser;
-Landroid/opengl/GLSurfaceView$SimpleEGLConfigChooser;-><init>(Z)V
Landroid/opengl/GLSurfaceView;->checkRenderThreadState()V
Landroid/opengl/GLSurfaceView;->init()V
Landroid/opengl/GLSurfaceView;->LOG_ATTACH_DETACH:Z
@@ -51956,20 +48465,13 @@
Landroid/opengl/GLUtils;->native_texImage2D(IIILandroid/graphics/Bitmap;II)I
Landroid/opengl/GLUtils;->native_texSubImage2D(IIIILandroid/graphics/Bitmap;II)I
Landroid/opengl/Matrix;->sTemp:[F
-Landroid/os/AsyncResult;
-Landroid/os/AsyncTask$AsyncTaskResult;
-Landroid/os/AsyncTask$AsyncTaskResult;-><init>(Landroid/os/AsyncTask;[[Ljava/lang/Object;)V
Landroid/os/AsyncTask$AsyncTaskResult;->mData:[Ljava/lang/Object;
Landroid/os/AsyncTask$AsyncTaskResult;->mTask:Landroid/os/AsyncTask;
-Landroid/os/AsyncTask$InternalHandler;
Landroid/os/AsyncTask$InternalHandler;-><init>(Landroid/os/Looper;)V
-Landroid/os/AsyncTask$SerialExecutor;
Landroid/os/AsyncTask$SerialExecutor;-><init>()V
Landroid/os/AsyncTask$SerialExecutor;->mActive:Ljava/lang/Runnable;
Landroid/os/AsyncTask$SerialExecutor;->mTasks:Ljava/util/ArrayDeque;
Landroid/os/AsyncTask$SerialExecutor;->scheduleNext()V
-Landroid/os/AsyncTask$Status;-><init>()V
-Landroid/os/AsyncTask$WorkerRunnable;
Landroid/os/AsyncTask$WorkerRunnable;-><init>()V
Landroid/os/AsyncTask$WorkerRunnable;->mParams:[Ljava/lang/Object;
Landroid/os/AsyncTask;-><init>(Landroid/os/Handler;)V
@@ -51991,15 +48493,11 @@
Landroid/os/AsyncTask;->sHandler:Landroid/os/AsyncTask$InternalHandler;
Landroid/os/AsyncTask;->sPoolWorkQueue:Ljava/util/concurrent/BlockingQueue;
Landroid/os/AsyncTask;->sThreadFactory:Ljava/util/concurrent/ThreadFactory;
-Landroid/os/BackTraceProto$Stack;
-Landroid/os/BackTraceProto$Stack;-><init>()V
Landroid/os/BackTraceProto$Stack;->DUMP:J
Landroid/os/BackTraceProto$Stack;->DUMP_DURATION_NS:J
Landroid/os/BackTraceProto$Stack;->PID:J
-Landroid/os/BackTraceProto;
Landroid/os/BackTraceProto;-><init>()V
Landroid/os/BackTraceProto;->TRACES:J
-Landroid/os/BaseBundle$NoImagePreloadHolder;
Landroid/os/BaseBundle$NoImagePreloadHolder;-><init>()V
Landroid/os/BaseBundle$NoImagePreloadHolder;->EMPTY_PARCEL:Landroid/os/Parcel;
Landroid/os/BaseBundle;-><init>()V
@@ -52085,7 +48583,6 @@
Landroid/os/BatteryManager;->mBatteryStats:Lcom/android/internal/app/IBatteryStats;
Landroid/os/BatteryManager;->mContext:Landroid/content/Context;
Landroid/os/BatteryManager;->queryProperty(I)J
-Landroid/os/BatteryManagerInternal;
Landroid/os/BatteryManagerInternal;-><init>()V
Landroid/os/BatteryManagerInternal;->getBatteryChargeCounter()I
Landroid/os/BatteryManagerInternal;->getBatteryFullCharge()I
@@ -52094,7 +48591,6 @@
Landroid/os/BatteryManagerInternal;->getInvalidCharger()I
Landroid/os/BatteryManagerInternal;->getPlugType()I
Landroid/os/BatteryManagerInternal;->isPowered(I)Z
-Landroid/os/BatteryProperties;
Landroid/os/BatteryProperties;-><init>()V
Landroid/os/BatteryProperties;-><init>(Landroid/os/Parcel;)V
Landroid/os/BatteryProperties;->batteryChargeCounter:I
@@ -52113,7 +48609,6 @@
Landroid/os/BatteryProperties;->maxChargingCurrent:I
Landroid/os/BatteryProperties;->maxChargingVoltage:I
Landroid/os/BatteryProperties;->set(Landroid/os/BatteryProperties;)V
-Landroid/os/BatteryProperty;
Landroid/os/BatteryProperty;-><init>()V
Landroid/os/BatteryProperty;-><init>(Landroid/os/Parcel;)V
Landroid/os/BatteryProperty;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -52121,7 +48616,6 @@
Landroid/os/BatteryProperty;->mValueLong:J
Landroid/os/BatteryProperty;->readFromParcel(Landroid/os/Parcel;)V
Landroid/os/BatteryProperty;->setLong(J)V
-Landroid/os/BatteryStats$BitDescription;
Landroid/os/BatteryStats$BitDescription;-><init>(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;)V
Landroid/os/BatteryStats$BitDescription;-><init>(ILjava/lang/String;Ljava/lang/String;)V
Landroid/os/BatteryStats$BitDescription;->mask:I
@@ -52130,7 +48624,6 @@
Landroid/os/BatteryStats$BitDescription;->shortName:Ljava/lang/String;
Landroid/os/BatteryStats$BitDescription;->shortValues:[Ljava/lang/String;
Landroid/os/BatteryStats$BitDescription;->values:[Ljava/lang/String;
-Landroid/os/BatteryStats$ControllerActivityCounter;
Landroid/os/BatteryStats$ControllerActivityCounter;-><init>()V
Landroid/os/BatteryStats$ControllerActivityCounter;->getIdleTimeCounter()Landroid/os/BatteryStats$LongCounter;
Landroid/os/BatteryStats$ControllerActivityCounter;->getPowerCounter()Landroid/os/BatteryStats$LongCounter;
@@ -52138,22 +48631,18 @@
Landroid/os/BatteryStats$ControllerActivityCounter;->getScanTimeCounter()Landroid/os/BatteryStats$LongCounter;
Landroid/os/BatteryStats$ControllerActivityCounter;->getSleepTimeCounter()Landroid/os/BatteryStats$LongCounter;
Landroid/os/BatteryStats$ControllerActivityCounter;->getTxTimeCounters()[Landroid/os/BatteryStats$LongCounter;
-Landroid/os/BatteryStats$Counter;
Landroid/os/BatteryStats$Counter;->logState(Landroid/util/Printer;Ljava/lang/String;)V
-Landroid/os/BatteryStats$DailyItem;
Landroid/os/BatteryStats$DailyItem;-><init>()V
Landroid/os/BatteryStats$DailyItem;->mChargeSteps:Landroid/os/BatteryStats$LevelStepTracker;
Landroid/os/BatteryStats$DailyItem;->mDischargeSteps:Landroid/os/BatteryStats$LevelStepTracker;
Landroid/os/BatteryStats$DailyItem;->mEndTime:J
Landroid/os/BatteryStats$DailyItem;->mPackageChanges:Ljava/util/ArrayList;
Landroid/os/BatteryStats$DailyItem;->mStartTime:J
-Landroid/os/BatteryStats$HistoryEventTracker;
Landroid/os/BatteryStats$HistoryEventTracker;-><init>()V
Landroid/os/BatteryStats$HistoryEventTracker;->getStateForEvent(I)Ljava/util/HashMap;
Landroid/os/BatteryStats$HistoryEventTracker;->mActiveEvents:[Ljava/util/HashMap;
Landroid/os/BatteryStats$HistoryEventTracker;->removeEvents(I)V
Landroid/os/BatteryStats$HistoryEventTracker;->updateState(ILjava/lang/String;II)Z
-Landroid/os/BatteryStats$HistoryItem;
Landroid/os/BatteryStats$HistoryItem;-><init>(JLandroid/os/Parcel;)V
Landroid/os/BatteryStats$HistoryItem;->batteryChargeUAh:I
Landroid/os/BatteryStats$HistoryItem;->batteryTemperature:S
@@ -52271,7 +48760,6 @@
Landroid/os/BatteryStats$HistoryItem;->stepDetails:Landroid/os/BatteryStats$HistoryStepDetails;
Landroid/os/BatteryStats$HistoryItem;->wakelockTag:Landroid/os/BatteryStats$HistoryTag;
Landroid/os/BatteryStats$HistoryItem;->wakeReasonTag:Landroid/os/BatteryStats$HistoryTag;
-Landroid/os/BatteryStats$HistoryPrinter;
Landroid/os/BatteryStats$HistoryPrinter;-><init>()V
Landroid/os/BatteryStats$HistoryPrinter;->lastTime:J
Landroid/os/BatteryStats$HistoryPrinter;->oldChargeMAh:I
@@ -52289,7 +48777,6 @@
Landroid/os/BatteryStats$HistoryPrinter;->printStepCpuUidCheckinDetails(Ljava/lang/StringBuilder;III)V
Landroid/os/BatteryStats$HistoryPrinter;->printStepCpuUidDetails(Ljava/lang/StringBuilder;III)V
Landroid/os/BatteryStats$HistoryPrinter;->reset()V
-Landroid/os/BatteryStats$HistoryStepDetails;
Landroid/os/BatteryStats$HistoryStepDetails;-><init>()V
Landroid/os/BatteryStats$HistoryStepDetails;->appCpuSTime1:I
Landroid/os/BatteryStats$HistoryStepDetails;->appCpuSTime2:I
@@ -52313,7 +48800,6 @@
Landroid/os/BatteryStats$HistoryStepDetails;->systemTime:I
Landroid/os/BatteryStats$HistoryStepDetails;->userTime:I
Landroid/os/BatteryStats$HistoryStepDetails;->writeToParcel(Landroid/os/Parcel;)V
-Landroid/os/BatteryStats$HistoryTag;
Landroid/os/BatteryStats$HistoryTag;-><init>()V
Landroid/os/BatteryStats$HistoryTag;->poolIdx:I
Landroid/os/BatteryStats$HistoryTag;->readFromParcel(Landroid/os/Parcel;)V
@@ -52322,9 +48808,7 @@
Landroid/os/BatteryStats$HistoryTag;->string:Ljava/lang/String;
Landroid/os/BatteryStats$HistoryTag;->uid:I
Landroid/os/BatteryStats$HistoryTag;->writeToParcel(Landroid/os/Parcel;I)V
-Landroid/os/BatteryStats$IntToString;
Landroid/os/BatteryStats$IntToString;->applyAsString(I)Ljava/lang/String;
-Landroid/os/BatteryStats$LevelStepTracker;
Landroid/os/BatteryStats$LevelStepTracker;-><init>(I)V
Landroid/os/BatteryStats$LevelStepTracker;-><init>(I[J)V
Landroid/os/BatteryStats$LevelStepTracker;->addLevelSteps(IJJ)V
@@ -52344,20 +48828,16 @@
Landroid/os/BatteryStats$LevelStepTracker;->mStepDurations:[J
Landroid/os/BatteryStats$LevelStepTracker;->readFromParcel(Landroid/os/Parcel;)V
Landroid/os/BatteryStats$LevelStepTracker;->writeToParcel(Landroid/os/Parcel;)V
-Landroid/os/BatteryStats$LongCounter;
Landroid/os/BatteryStats$LongCounter;-><init>()V
Landroid/os/BatteryStats$LongCounter;->getCountLocked(I)J
Landroid/os/BatteryStats$LongCounter;->logState(Landroid/util/Printer;Ljava/lang/String;)V
-Landroid/os/BatteryStats$LongCounterArray;
Landroid/os/BatteryStats$LongCounterArray;-><init>()V
Landroid/os/BatteryStats$LongCounterArray;->getCountsLocked(I)[J
Landroid/os/BatteryStats$LongCounterArray;->logState(Landroid/util/Printer;Ljava/lang/String;)V
-Landroid/os/BatteryStats$PackageChange;
Landroid/os/BatteryStats$PackageChange;-><init>()V
Landroid/os/BatteryStats$PackageChange;->mPackageName:Ljava/lang/String;
Landroid/os/BatteryStats$PackageChange;->mUpdate:Z
Landroid/os/BatteryStats$PackageChange;->mVersionCode:J
-Landroid/os/BatteryStats$Timer;
Landroid/os/BatteryStats$Timer;->getCurrentDurationMsLocked(J)J
Landroid/os/BatteryStats$Timer;->getMaxDurationMsLocked(J)J
Landroid/os/BatteryStats$Timer;->getSubTimer()Landroid/os/BatteryStats$Timer;
@@ -52365,31 +48845,21 @@
Landroid/os/BatteryStats$Timer;->getTotalDurationMsLocked(J)J
Landroid/os/BatteryStats$Timer;->isRunningLocked()Z
Landroid/os/BatteryStats$Timer;->logState(Landroid/util/Printer;Ljava/lang/String;)V
-Landroid/os/BatteryStats$TimerEntry;
Landroid/os/BatteryStats$TimerEntry;-><init>(Ljava/lang/String;ILandroid/os/BatteryStats$Timer;J)V
Landroid/os/BatteryStats$TimerEntry;->mId:I
Landroid/os/BatteryStats$TimerEntry;->mName:Ljava/lang/String;
Landroid/os/BatteryStats$TimerEntry;->mTime:J
Landroid/os/BatteryStats$TimerEntry;->mTimer:Landroid/os/BatteryStats$Timer;
-Landroid/os/BatteryStats$Uid$Pid;
-Landroid/os/BatteryStats$Uid$Pid;-><init>()V
Landroid/os/BatteryStats$Uid$Pid;->mWakeNesting:I
Landroid/os/BatteryStats$Uid$Pid;->mWakeStartMs:J
Landroid/os/BatteryStats$Uid$Pid;->mWakeSumMs:J
-Landroid/os/BatteryStats$Uid$Pkg$Serv;
Landroid/os/BatteryStats$Uid$Pkg$Serv;-><init>()V
-Landroid/os/BatteryStats$Uid$Pkg;
-Landroid/os/BatteryStats$Uid$Proc$ExcessivePower;
Landroid/os/BatteryStats$Uid$Proc$ExcessivePower;->TYPE_CPU:I
Landroid/os/BatteryStats$Uid$Proc$ExcessivePower;->TYPE_WAKE:I
-Landroid/os/BatteryStats$Uid$Proc;
Landroid/os/BatteryStats$Uid$Proc;->getNumAnrs(I)I
Landroid/os/BatteryStats$Uid$Proc;->getNumCrashes(I)I
Landroid/os/BatteryStats$Uid$Proc;->isActive()Z
-Landroid/os/BatteryStats$Uid$Sensor;
Landroid/os/BatteryStats$Uid$Sensor;->getSensorBackgroundTime()Landroid/os/BatteryStats$Timer;
-Landroid/os/BatteryStats$Uid$Wakelock;
-Landroid/os/BatteryStats$Uid;
Landroid/os/BatteryStats$Uid;->CRITICAL_PROC_STATES:[I
Landroid/os/BatteryStats$Uid;->getAggregatedPartialWakelockTimer()Landroid/os/BatteryStats$Timer;
Landroid/os/BatteryStats$Uid;->getBluetoothControllerActivity()Landroid/os/BatteryStats$ControllerActivityCounter;
@@ -52464,7 +48934,6 @@
Landroid/os/BatteryStats$Uid;->PROCESS_STATE_TOP_SLEEPING:I
Landroid/os/BatteryStats$Uid;->UID_PROCESS_TYPES:[Ljava/lang/String;
Landroid/os/BatteryStats$Uid;->USER_ACTIVITY_TYPES:[Ljava/lang/String;
-Landroid/os/BatteryStats;
Landroid/os/BatteryStats;->AGGREGATED_WAKELOCK_DATA:Ljava/lang/String;
Landroid/os/BatteryStats;->AGGREGATED_WAKE_TYPE_PARTIAL:I
Landroid/os/BatteryStats;->APK_DATA:Ljava/lang/String;
@@ -52516,7 +48985,6 @@
Landroid/os/BatteryStats;->dumpDurationSteps(Landroid/util/proto/ProtoOutputStream;JLandroid/os/BatteryStats$LevelStepTracker;)V
Landroid/os/BatteryStats;->dumpDurationSteps(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;Landroid/os/BatteryStats$LevelStepTracker;Z)Z
Landroid/os/BatteryStats;->dumpHistoryLocked(Ljava/io/PrintWriter;IJZ)V
-Landroid/os/BatteryStats;->dumpLine(Ljava/io/PrintWriter;ILjava/lang/String;Ljava/lang/String;[[Ljava/lang/Object;)V
Landroid/os/BatteryStats;->dumpLineHeader(Ljava/io/PrintWriter;ILjava/lang/String;Ljava/lang/String;)V
Landroid/os/BatteryStats;->dumpLocked(Landroid/content/Context;Ljava/io/PrintWriter;IIJ)V
Landroid/os/BatteryStats;->dumpLocked(Landroid/content/Context;Ljava/io/PrintWriter;Ljava/lang/String;II)V
@@ -52798,12 +49266,10 @@
Landroid/os/BatteryStats;->WIFI_SUPPL_STATE_TIME_DATA:Ljava/lang/String;
Landroid/os/BatteryStats;->WIFI_SUPPL_STATE_UNINITIALIZED:I
Landroid/os/BatteryStats;->writeToParcelWithoutUids(Landroid/os/Parcel;I)V
-Landroid/os/BatteryStatsInternal;
Landroid/os/BatteryStatsInternal;-><init>()V
Landroid/os/BatteryStatsInternal;->getMobileIfaces()[Ljava/lang/String;
Landroid/os/BatteryStatsInternal;->getWifiIfaces()[Ljava/lang/String;
Landroid/os/BatteryStatsInternal;->noteJobsDeferred(IIJ)V
-Landroid/os/BatteryStatsProto;
Landroid/os/BatteryStatsProto;-><init>()V
Landroid/os/BatteryStatsProto;->END_PLATFORM_VERSION:J
Landroid/os/BatteryStatsProto;->PARCEL_VERSION:J
@@ -52811,14 +49277,10 @@
Landroid/os/BatteryStatsProto;->START_PLATFORM_VERSION:J
Landroid/os/BatteryStatsProto;->SYSTEM:J
Landroid/os/BatteryStatsProto;->UIDS:J
-Landroid/os/BatteryTypeProto;
Landroid/os/BatteryTypeProto;-><init>()V
Landroid/os/BatteryTypeProto;->TYPE:J
-Landroid/os/BestClock;
-Landroid/os/BestClock;-><init>(Ljava/time/ZoneId;[[Ljava/time/Clock;)V
Landroid/os/BestClock;->clocks:[Ljava/time/Clock;
Landroid/os/BestClock;->TAG:Ljava/lang/String;
-Landroid/os/Binder$NoImagePreloadHolder;
Landroid/os/Binder$NoImagePreloadHolder;-><init>()V
Landroid/os/Binder$NoImagePreloadHolder;->sRegistry:Llibcore/util/NativeAllocationRegistry;
Landroid/os/Binder;->allowBlocking(Landroid/os/IBinder;)Landroid/os/IBinder;
@@ -52854,14 +49316,11 @@
Landroid/os/Binder;->TAG:Ljava/lang/String;
Landroid/os/Binder;->withCleanCallingIdentity(Lcom/android/internal/util/FunctionalUtils$ThrowingRunnable;)V
Landroid/os/Binder;->withCleanCallingIdentity(Lcom/android/internal/util/FunctionalUtils$ThrowingSupplier;)Ljava/lang/Object;
-Landroid/os/Broadcaster$Registration;
-Landroid/os/Broadcaster$Registration;-><init>()V
Landroid/os/Broadcaster$Registration;->next:Landroid/os/Broadcaster$Registration;
Landroid/os/Broadcaster$Registration;->prev:Landroid/os/Broadcaster$Registration;
Landroid/os/Broadcaster$Registration;->senderWhat:I
Landroid/os/Broadcaster$Registration;->targets:[Landroid/os/Handler;
Landroid/os/Broadcaster$Registration;->targetWhats:[I
-Landroid/os/Broadcaster;
Landroid/os/Broadcaster;->dumpRegistrations()V
Landroid/os/Broadcaster;->mReg:Landroid/os/Broadcaster$Registration;
Landroid/os/Build$VERSION;->ALL_CODENAMES:[Ljava/lang/String;
@@ -52889,29 +49348,21 @@
Landroid/os/Bundle;->STRIPPED:Landroid/os/Bundle;
Landroid/os/Bundle;->toShortString()Ljava/lang/String;
Landroid/os/Bundle;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-Landroid/os/BundleProto;
Landroid/os/BundleProto;-><init>()V
Landroid/os/BundleProto;->MAP_DATA:J
Landroid/os/BundleProto;->PARCELLED_DATA_SIZE:J
-Landroid/os/CancellationSignal$Transport;
Landroid/os/CancellationSignal$Transport;-><init>()V
Landroid/os/CancellationSignal$Transport;->cancel()V
Landroid/os/CancellationSignal$Transport;->mCancellationSignal:Landroid/os/CancellationSignal;
Landroid/os/CancellationSignal;->createTransport()Landroid/os/ICancellationSignal;
Landroid/os/CancellationSignal;->fromTransport(Landroid/os/ICancellationSignal;)Landroid/os/CancellationSignal;
Landroid/os/CancellationSignal;->setRemote(Landroid/os/ICancellationSignal;)V
-Landroid/os/ChildZygoteProcess;
Landroid/os/ChildZygoteProcess;-><init>(Landroid/net/LocalSocketAddress;I)V
Landroid/os/ChildZygoteProcess;->getPid()I
Landroid/os/ChildZygoteProcess;->mPid:I
-Landroid/os/CommonClock$OnServerDiedListener;
Landroid/os/CommonClock$OnServerDiedListener;->onServerDied()V
-Landroid/os/CommonClock$OnTimelineChangedListener;
Landroid/os/CommonClock$OnTimelineChangedListener;->onTimelineChanged(J)V
-Landroid/os/CommonClock$TimelineChangedListener;
-Landroid/os/CommonClock$TimelineChangedListener;-><init>()V
Landroid/os/CommonClock$TimelineChangedListener;->DESCRIPTOR:Ljava/lang/String;
-Landroid/os/CommonClock;
Landroid/os/CommonClock;-><init>()V
Landroid/os/CommonClock;->create()Landroid/os/CommonClock;
Landroid/os/CommonClock;->ERROR_ESTIMATE_UNKNOWN:I
@@ -52957,9 +49408,7 @@
Landroid/os/CommonClock;->throwOnDeadServer()V
Landroid/os/CommonClock;->TIME_NOT_SYNCED:J
Landroid/os/CommonClock;->unregisterTimelineChangeListener()V
-Landroid/os/CommonTimeConfig$OnServerDiedListener;
Landroid/os/CommonTimeConfig$OnServerDiedListener;->onServerDied()V
-Landroid/os/CommonTimeConfig;
Landroid/os/CommonTimeConfig;-><init>()V
Landroid/os/CommonTimeConfig;->checkDeadServer()Z
Landroid/os/CommonTimeConfig;->create()Landroid/os/CommonTimeConfig;
@@ -53012,7 +49461,6 @@
Landroid/os/CommonTimeConfig;->setServerDiedListener(Landroid/os/CommonTimeConfig$OnServerDiedListener;)V
Landroid/os/CommonTimeConfig;->SUCCESS:I
Landroid/os/CommonTimeConfig;->throwOnDeadServer()V
-Landroid/os/CommonTimeUtils;
Landroid/os/CommonTimeUtils;-><init>(Landroid/os/IBinder;Ljava/lang/String;)V
Landroid/os/CommonTimeUtils;->ERROR:I
Landroid/os/CommonTimeUtils;->ERROR_BAD_VALUE:I
@@ -53030,11 +49478,8 @@
Landroid/os/CommonTimeUtils;->transactSetString(ILjava/lang/String;)I
Landroid/os/ConditionVariable;->mCondition:Z
Landroid/os/ConfigUpdate;-><init>()V
-Landroid/os/ControllerActivityProto$TxLevel;
-Landroid/os/ControllerActivityProto$TxLevel;-><init>()V
Landroid/os/ControllerActivityProto$TxLevel;->DURATION_MS:J
Landroid/os/ControllerActivityProto$TxLevel;->LEVEL:J
-Landroid/os/ControllerActivityProto;
Landroid/os/ControllerActivityProto;-><init>()V
Landroid/os/ControllerActivityProto;->IDLE_DURATION_MS:J
Landroid/os/ControllerActivityProto;->POWER_MAH:J
@@ -53046,20 +49491,13 @@
Landroid/os/CountDownTimer;->mMillisInFuture:J
Landroid/os/CountDownTimer;->MSG:I
Landroid/os/CountDownTimer;->mStopTimeInFuture:J
-Landroid/os/CpuFreqProto$Stats$TimeInState;
-Landroid/os/CpuFreqProto$Stats$TimeInState;-><init>()V
Landroid/os/CpuFreqProto$Stats$TimeInState;->STATE_KHZ:J
Landroid/os/CpuFreqProto$Stats$TimeInState;->TIME_JIFFY:J
-Landroid/os/CpuFreqProto$Stats;
-Landroid/os/CpuFreqProto$Stats;-><init>()V
Landroid/os/CpuFreqProto$Stats;->CPU_NAME:J
Landroid/os/CpuFreqProto$Stats;->TIMES:J
-Landroid/os/CpuFreqProto;
Landroid/os/CpuFreqProto;-><init>()V
Landroid/os/CpuFreqProto;->CPU_FREQS:J
Landroid/os/CpuFreqProto;->JIFFY_HZ:J
-Landroid/os/CpuInfoProto$CpuUsage;
-Landroid/os/CpuInfoProto$CpuUsage;-><init>()V
Landroid/os/CpuInfoProto$CpuUsage;->CPU:J
Landroid/os/CpuInfoProto$CpuUsage;->HOST:J
Landroid/os/CpuInfoProto$CpuUsage;->IDLE:J
@@ -53069,15 +49507,11 @@
Landroid/os/CpuInfoProto$CpuUsage;->SIRQ:J
Landroid/os/CpuInfoProto$CpuUsage;->SYS:J
Landroid/os/CpuInfoProto$CpuUsage;->USER:J
-Landroid/os/CpuInfoProto$MemStats;
-Landroid/os/CpuInfoProto$MemStats;-><init>()V
Landroid/os/CpuInfoProto$MemStats;->BUFFERS:J
Landroid/os/CpuInfoProto$MemStats;->CACHED:J
Landroid/os/CpuInfoProto$MemStats;->FREE:J
Landroid/os/CpuInfoProto$MemStats;->TOTAL:J
Landroid/os/CpuInfoProto$MemStats;->USED:J
-Landroid/os/CpuInfoProto$Task;
-Landroid/os/CpuInfoProto$Task;-><init>()V
Landroid/os/CpuInfoProto$Task;->CMD:J
Landroid/os/CpuInfoProto$Task;->CPU:J
Landroid/os/CpuInfoProto$Task;->NAME:J
@@ -53100,14 +49534,11 @@
Landroid/os/CpuInfoProto$Task;->TID:J
Landroid/os/CpuInfoProto$Task;->USER:J
Landroid/os/CpuInfoProto$Task;->VIRT:J
-Landroid/os/CpuInfoProto$TaskStats;
-Landroid/os/CpuInfoProto$TaskStats;-><init>()V
Landroid/os/CpuInfoProto$TaskStats;->RUNNING:J
Landroid/os/CpuInfoProto$TaskStats;->SLEEPING:J
Landroid/os/CpuInfoProto$TaskStats;->STOPPED:J
Landroid/os/CpuInfoProto$TaskStats;->TOTAL:J
Landroid/os/CpuInfoProto$TaskStats;->ZOMBIE:J
-Landroid/os/CpuInfoProto;
Landroid/os/CpuInfoProto;-><init>()V
Landroid/os/CpuInfoProto;->CPU_USAGE:J
Landroid/os/CpuInfoProto;->MEM:J
@@ -53119,7 +49550,6 @@
Landroid/os/CpuUsageInfo;->mActive:J
Landroid/os/CpuUsageInfo;->mTotal:J
Landroid/os/CpuUsageInfo;->readFromParcel(Landroid/os/Parcel;)V
-Landroid/os/Debug$DebugProperty;
Landroid/os/Debug$MemoryInfo;-><init>(Landroid/os/Parcel;)V
Landroid/os/Debug$MemoryInfo;->getOtherPrivateClean(I)I
Landroid/os/Debug$MemoryInfo;->getOtherRss(I)I
@@ -53242,7 +49672,6 @@
Landroid/os/DropBoxManager;->HAS_BYTE_ARRAY:I
Landroid/os/DropBoxManager;->mContext:Landroid/content/Context;
Landroid/os/DropBoxManager;->TAG:Ljava/lang/String;
-Landroid/os/Environment$UserEnvironment;
Landroid/os/Environment$UserEnvironment;->buildExternalStorageAndroidDataDirs()[Ljava/io/File;
Landroid/os/Environment$UserEnvironment;->buildExternalStorageAndroidObbDirs()[Ljava/io/File;
Landroid/os/Environment$UserEnvironment;->buildExternalStorageAppCacheDirs(Ljava/lang/String;)[Ljava/io/File;
@@ -53252,7 +49681,6 @@
Landroid/os/Environment$UserEnvironment;->buildExternalStorageAppObbDirs(Ljava/lang/String;)[Ljava/io/File;
Landroid/os/Environment$UserEnvironment;->buildExternalStoragePublicDirs(Ljava/lang/String;)[Ljava/io/File;
Landroid/os/Environment$UserEnvironment;->mUserId:I
-Landroid/os/Environment;->buildPaths([Ljava/io/File;[[Ljava/lang/String;)[Ljava/io/File;
Landroid/os/Environment;->classifyExternalStorageDirectory(Ljava/io/File;)I
Landroid/os/Environment;->DIRECTORY_ANDROID:Ljava/lang/String;
Landroid/os/Environment;->DIR_ANDROID:Ljava/lang/String;
@@ -53333,20 +49761,17 @@
Landroid/os/Environment;->sUserRequired:Z
Landroid/os/Environment;->TAG:Ljava/lang/String;
Landroid/os/Environment;->throwIfUserRequired()V
-Landroid/os/EventLogTags;
Landroid/os/EventLogTags;-><init>()V
Landroid/os/EventLogTags;->SERVICE_MANAGER_SLOW:I
Landroid/os/EventLogTags;->SERVICE_MANAGER_STATS:I
Landroid/os/EventLogTags;->writeServiceManagerSlow(ILjava/lang/String;)V
Landroid/os/EventLogTags;->writeServiceManagerStats(III)V
-Landroid/os/FactoryTest;
Landroid/os/FactoryTest;-><init>()V
Landroid/os/FactoryTest;->FACTORY_TEST_HIGH_LEVEL:I
Landroid/os/FactoryTest;->FACTORY_TEST_LOW_LEVEL:I
Landroid/os/FactoryTest;->FACTORY_TEST_OFF:I
Landroid/os/FactoryTest;->getMode()I
Landroid/os/FactoryTest;->isLongPressOnPowerOffEnabled()Z
-Landroid/os/FileBridge$FileBridgeOutputStream;
Landroid/os/FileBridge$FileBridgeOutputStream;-><init>(Landroid/os/ParcelFileDescriptor;)V
Landroid/os/FileBridge$FileBridgeOutputStream;-><init>(Ljava/io/FileDescriptor;)V
Landroid/os/FileBridge$FileBridgeOutputStream;->fsync()V
@@ -53354,7 +49779,6 @@
Landroid/os/FileBridge$FileBridgeOutputStream;->mClientPfd:Landroid/os/ParcelFileDescriptor;
Landroid/os/FileBridge$FileBridgeOutputStream;->mTemp:[B
Landroid/os/FileBridge$FileBridgeOutputStream;->writeCommandAndBlock(ILjava/lang/String;)V
-Landroid/os/FileBridge;
Landroid/os/FileBridge;-><init>()V
Landroid/os/FileBridge;->CMD_CLOSE:I
Landroid/os/FileBridge;->CMD_FSYNC:I
@@ -53369,7 +49793,6 @@
Landroid/os/FileBridge;->mTarget:Ljava/io/FileDescriptor;
Landroid/os/FileBridge;->setTargetFile(Ljava/io/FileDescriptor;)V
Landroid/os/FileBridge;->TAG:Ljava/lang/String;
-Landroid/os/FileObserver$ObserverThread;
Landroid/os/FileObserver$ObserverThread;-><init>()V
Landroid/os/FileObserver$ObserverThread;->init()I
Landroid/os/FileObserver$ObserverThread;->m_fd:I
@@ -53383,7 +49806,6 @@
Landroid/os/FileObserver;->m_descriptor:Ljava/lang/Integer;
Landroid/os/FileObserver;->m_mask:I
Landroid/os/FileObserver;->m_path:Ljava/lang/String;
-Landroid/os/FileUtils$MemoryPipe;
Landroid/os/FileUtils$MemoryPipe;-><init>([BZ)V
Landroid/os/FileUtils$MemoryPipe;->createSink([B)Landroid/os/FileUtils$MemoryPipe;
Landroid/os/FileUtils$MemoryPipe;->createSource([B)Landroid/os/FileUtils$MemoryPipe;
@@ -53393,12 +49815,9 @@
Landroid/os/FileUtils$MemoryPipe;->pipe:[Ljava/io/FileDescriptor;
Landroid/os/FileUtils$MemoryPipe;->sink:Z
Landroid/os/FileUtils$MemoryPipe;->startInternal()Landroid/os/FileUtils$MemoryPipe;
-Landroid/os/FileUtils$NoImagePreloadHolder;
Landroid/os/FileUtils$NoImagePreloadHolder;-><init>()V
Landroid/os/FileUtils$NoImagePreloadHolder;->SAFE_FILENAME_PATTERN:Ljava/util/regex/Pattern;
-Landroid/os/FileUtils$ProgressListener;
Landroid/os/FileUtils$ProgressListener;->onProgress(J)V
-Landroid/os/FileUtils;
Landroid/os/FileUtils;->buildFile(Ljava/io/File;Ljava/lang/String;Ljava/lang/String;)Ljava/io/File;
Landroid/os/FileUtils;->buildUniqueFile(Ljava/io/File;Ljava/lang/String;)Ljava/io/File;
Landroid/os/FileUtils;->buildUniqueFile(Ljava/io/File;Ljava/lang/String;Ljava/lang/String;)Ljava/io/File;
@@ -53457,7 +49876,6 @@
Landroid/os/FileUtils;->TAG:Ljava/lang/String;
Landroid/os/FileUtils;->trimFilename(Ljava/lang/String;I)Ljava/lang/String;
Landroid/os/FileUtils;->trimFilename(Ljava/lang/StringBuilder;I)V
-Landroid/os/GraphicsEnvironment;
Landroid/os/GraphicsEnvironment;-><init>()V
Landroid/os/GraphicsEnvironment;->chooseAbi(Landroid/content/pm/ApplicationInfo;)Ljava/lang/String;
Landroid/os/GraphicsEnvironment;->chooseDriver(Landroid/content/Context;)V
@@ -53477,17 +49895,13 @@
Landroid/os/GraphicsEnvironment;->setupGpuLayers(Landroid/content/Context;)V
Landroid/os/GraphicsEnvironment;->sInstance:Landroid/os/GraphicsEnvironment;
Landroid/os/GraphicsEnvironment;->TAG:Ljava/lang/String;
-Landroid/os/GZippedFileProto;
Landroid/os/GZippedFileProto;-><init>()V
Landroid/os/GZippedFileProto;->FILENAME:J
Landroid/os/GZippedFileProto;->GZIPPED_DATA:J
-Landroid/os/Handler$BlockingRunnable;
Landroid/os/Handler$BlockingRunnable;-><init>(Ljava/lang/Runnable;)V
Landroid/os/Handler$BlockingRunnable;->mDone:Z
Landroid/os/Handler$BlockingRunnable;->mTask:Ljava/lang/Runnable;
Landroid/os/Handler$BlockingRunnable;->postAndWait(Landroid/os/Handler;J)Z
-Landroid/os/Handler$MessengerImpl;
-Landroid/os/Handler$MessengerImpl;-><init>()V
Landroid/os/Handler$MessengerImpl;->send(Landroid/os/Message;)V
Landroid/os/Handler;-><init>(Landroid/os/Handler$Callback;Z)V
Landroid/os/Handler;->dumpMine(Landroid/util/Printer;Ljava/lang/String;)V
@@ -53504,7 +49918,6 @@
Landroid/os/Handler;->mQueue:Landroid/os/MessageQueue;
Landroid/os/Handler;->runWithScissors(Ljava/lang/Runnable;J)Z
Landroid/os/Handler;->TAG:Ljava/lang/String;
-Landroid/os/HandlerExecutor;
Landroid/os/HandlerExecutor;-><init>(Landroid/os/Handler;)V
Landroid/os/HandlerExecutor;->mHandler:Landroid/os/Handler;
Landroid/os/HandlerThread;->getThreadHandler()Landroid/os/Handler;
@@ -53512,27 +49925,21 @@
Landroid/os/HandlerThread;->mLooper:Landroid/os/Looper;
Landroid/os/HandlerThread;->mPriority:I
Landroid/os/HandlerThread;->mTid:I
-Landroid/os/HardwarePropertiesManager$DeviceTemperatureType;
-Landroid/os/HardwarePropertiesManager$TemperatureSource;
Landroid/os/HardwarePropertiesManager;-><init>(Landroid/content/Context;Landroid/os/IHardwarePropertiesManager;)V
Landroid/os/HardwarePropertiesManager;->mContext:Landroid/content/Context;
Landroid/os/HardwarePropertiesManager;->mService:Landroid/os/IHardwarePropertiesManager;
Landroid/os/HardwarePropertiesManager;->TAG:Ljava/lang/String;
-Landroid/os/health/HealthKeys$Constant;
-Landroid/os/health/HealthKeys$Constants;
Landroid/os/health/HealthKeys$Constants;->getDataType()Ljava/lang/String;
Landroid/os/health/HealthKeys$Constants;->getIndex(II)I
Landroid/os/health/HealthKeys$Constants;->getKeys(I)[I
Landroid/os/health/HealthKeys$Constants;->getSize(I)I
Landroid/os/health/HealthKeys$Constants;->mDataType:Ljava/lang/String;
Landroid/os/health/HealthKeys$Constants;->mKeys:[[I
-Landroid/os/health/HealthKeys$SortedIntArray;
Landroid/os/health/HealthKeys$SortedIntArray;-><init>(I)V
Landroid/os/health/HealthKeys$SortedIntArray;->addValue(I)V
Landroid/os/health/HealthKeys$SortedIntArray;->getArray()[I
Landroid/os/health/HealthKeys$SortedIntArray;->mArray:[I
Landroid/os/health/HealthKeys$SortedIntArray;->mCount:I
-Landroid/os/health/HealthKeys;
Landroid/os/health/HealthKeys;-><init>()V
Landroid/os/health/HealthKeys;->BASE_PACKAGE:I
Landroid/os/health/HealthKeys;->BASE_PID:I
@@ -53563,11 +49970,9 @@
Landroid/os/health/HealthStats;->mTimersKeys:[I
Landroid/os/health/HealthStats;->mTimersValues:[Landroid/util/ArrayMap;
Landroid/os/health/HealthStats;->mTimerTimes:[J
-Landroid/os/health/HealthStatsParceler;
Landroid/os/health/HealthStatsParceler;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/os/health/HealthStatsParceler;->mHealthStats:Landroid/os/health/HealthStats;
Landroid/os/health/HealthStatsParceler;->mWriter:Landroid/os/health/HealthStatsWriter;
-Landroid/os/health/HealthStatsWriter;
Landroid/os/health/HealthStatsWriter;->countBooleanArray([Z)I
Landroid/os/health/HealthStatsWriter;->countObjectArray([Ljava/lang/Object;)I
Landroid/os/health/HealthStatsWriter;->mConstants:Landroid/os/health/HealthKeys$Constants;
@@ -53596,7 +50001,6 @@
Landroid/os/health/TimerStat;->mTime:J
Landroid/os/health/UidHealthStats;-><init>()V
Landroid/os/health/UidHealthStats;->CONSTANTS:Landroid/os/health/HealthKeys$Constants;
-Landroid/os/HidlSupport$Mutable;
Landroid/os/HidlSupport$Mutable;-><init>()V
Landroid/os/HidlSupport$Mutable;-><init>(Ljava/lang/Object;)V
Landroid/os/HidlSupport$Mutable;->value:Ljava/lang/Object;
@@ -53635,33 +50039,27 @@
Landroid/os/HwParcel;->writeInt64Vector([J)V
Landroid/os/HwParcel;->writeInt8Vector([B)V
Landroid/os/HwParcel;->writeStringVector([Ljava/lang/String;)V
-Landroid/os/HwRemoteBinder;
Landroid/os/HwRemoteBinder;->mNativeContext:J
Landroid/os/HwRemoteBinder;->native_init()J
Landroid/os/HwRemoteBinder;->native_setup_empty()V
Landroid/os/HwRemoteBinder;->sendDeathNotice(Landroid/os/IHwBinder$DeathRecipient;J)V
Landroid/os/HwRemoteBinder;->sNativeRegistry:Llibcore/util/NativeAllocationRegistry;
Landroid/os/HwRemoteBinder;->TAG:Ljava/lang/String;
-Landroid/os/IBatteryPropertiesListener$Stub$Proxy;
Landroid/os/IBatteryPropertiesListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/os/IBatteryPropertiesListener$Stub$Proxy;->batteryPropertiesChanged(Landroid/os/BatteryProperties;)V
Landroid/os/IBatteryPropertiesListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/os/IBatteryPropertiesListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/os/IBatteryPropertiesListener$Stub;
Landroid/os/IBatteryPropertiesListener$Stub;-><init>()V
Landroid/os/IBatteryPropertiesListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IBatteryPropertiesListener;
Landroid/os/IBatteryPropertiesListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/os/IBatteryPropertiesListener$Stub;->TRANSACTION_batteryPropertiesChanged:I
-Landroid/os/IBatteryPropertiesListener;
Landroid/os/IBatteryPropertiesListener;->batteryPropertiesChanged(Landroid/os/BatteryProperties;)V
-Landroid/os/IBatteryPropertiesRegistrar$Stub$Proxy;
Landroid/os/IBatteryPropertiesRegistrar$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/os/IBatteryPropertiesRegistrar$Stub$Proxy;->getProperty(ILandroid/os/BatteryProperty;)I
Landroid/os/IBatteryPropertiesRegistrar$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/os/IBatteryPropertiesRegistrar$Stub$Proxy;->registerListener(Landroid/os/IBatteryPropertiesListener;)V
Landroid/os/IBatteryPropertiesRegistrar$Stub$Proxy;->scheduleUpdate()V
Landroid/os/IBatteryPropertiesRegistrar$Stub$Proxy;->unregisterListener(Landroid/os/IBatteryPropertiesListener;)V
-Landroid/os/IBatteryPropertiesRegistrar$Stub;
Landroid/os/IBatteryPropertiesRegistrar$Stub;-><init>()V
Landroid/os/IBatteryPropertiesRegistrar$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IBatteryPropertiesRegistrar;
Landroid/os/IBatteryPropertiesRegistrar$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -53669,7 +50067,6 @@
Landroid/os/IBatteryPropertiesRegistrar$Stub;->TRANSACTION_registerListener:I
Landroid/os/IBatteryPropertiesRegistrar$Stub;->TRANSACTION_scheduleUpdate:I
Landroid/os/IBatteryPropertiesRegistrar$Stub;->TRANSACTION_unregisterListener:I
-Landroid/os/IBatteryPropertiesRegistrar;
Landroid/os/IBatteryPropertiesRegistrar;->getProperty(ILandroid/os/BatteryProperty;)I
Landroid/os/IBatteryPropertiesRegistrar;->registerListener(Landroid/os/IBatteryPropertiesListener;)V
Landroid/os/IBatteryPropertiesRegistrar;->scheduleUpdate()V
@@ -53677,30 +50074,23 @@
Landroid/os/IBinder;->MAX_IPC_SIZE:I
Landroid/os/IBinder;->shellCommand(Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;[Ljava/lang/String;Landroid/os/ShellCallback;Landroid/os/ResultReceiver;)V
Landroid/os/IBinder;->SHELL_COMMAND_TRANSACTION:I
-Landroid/os/ICancellationSignal$Stub$Proxy;
Landroid/os/ICancellationSignal$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/os/ICancellationSignal$Stub$Proxy;->cancel()V
Landroid/os/ICancellationSignal$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/os/ICancellationSignal$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/os/ICancellationSignal$Stub;
Landroid/os/ICancellationSignal$Stub;-><init>()V
Landroid/os/ICancellationSignal$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/ICancellationSignal;
Landroid/os/ICancellationSignal$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/os/ICancellationSignal$Stub;->TRANSACTION_cancel:I
-Landroid/os/ICancellationSignal;
Landroid/os/ICancellationSignal;->cancel()V
-Landroid/os/IDeviceIdentifiersPolicyService$Stub$Proxy;
Landroid/os/IDeviceIdentifiersPolicyService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/os/IDeviceIdentifiersPolicyService$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/os/IDeviceIdentifiersPolicyService$Stub$Proxy;->getSerial()Ljava/lang/String;
Landroid/os/IDeviceIdentifiersPolicyService$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/os/IDeviceIdentifiersPolicyService$Stub;
Landroid/os/IDeviceIdentifiersPolicyService$Stub;-><init>()V
Landroid/os/IDeviceIdentifiersPolicyService$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/os/IDeviceIdentifiersPolicyService$Stub;->TRANSACTION_getSerial:I
-Landroid/os/IDeviceIdentifiersPolicyService;
Landroid/os/IDeviceIdentifiersPolicyService;->getSerial()Ljava/lang/String;
-Landroid/os/IDeviceIdleController$Stub$Proxy;
Landroid/os/IDeviceIdleController$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/os/IDeviceIdleController$Stub$Proxy;->addPowerSaveTempWhitelistApp(Ljava/lang/String;JILjava/lang/String;)V
Landroid/os/IDeviceIdleController$Stub$Proxy;->addPowerSaveTempWhitelistAppForMms(Ljava/lang/String;ILjava/lang/String;)J
@@ -53726,7 +50116,6 @@
Landroid/os/IDeviceIdleController$Stub$Proxy;->removeSystemPowerWhitelistApp(Ljava/lang/String;)V
Landroid/os/IDeviceIdleController$Stub$Proxy;->restoreSystemPowerWhitelistApp(Ljava/lang/String;)V
Landroid/os/IDeviceIdleController$Stub$Proxy;->unregisterMaintenanceActivityListener(Landroid/os/IMaintenanceActivityListener;)V
-Landroid/os/IDeviceIdleController$Stub;
Landroid/os/IDeviceIdleController$Stub;-><init>()V
Landroid/os/IDeviceIdleController$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/os/IDeviceIdleController$Stub;->TRANSACTION_addPowerSaveTempWhitelistApp:I
@@ -53751,7 +50140,6 @@
Landroid/os/IDeviceIdleController$Stub;->TRANSACTION_removeSystemPowerWhitelistApp:I
Landroid/os/IDeviceIdleController$Stub;->TRANSACTION_restoreSystemPowerWhitelistApp:I
Landroid/os/IDeviceIdleController$Stub;->TRANSACTION_unregisterMaintenanceActivityListener:I
-Landroid/os/IDeviceIdleController;
Landroid/os/IDeviceIdleController;->addPowerSaveTempWhitelistAppForMms(Ljava/lang/String;ILjava/lang/String;)J
Landroid/os/IDeviceIdleController;->addPowerSaveTempWhitelistAppForSms(Ljava/lang/String;ILjava/lang/String;)J
Landroid/os/IDeviceIdleController;->addPowerSaveWhitelistApp(Ljava/lang/String;)V
@@ -53771,43 +50159,36 @@
Landroid/os/IDeviceIdleController;->removeSystemPowerWhitelistApp(Ljava/lang/String;)V
Landroid/os/IDeviceIdleController;->restoreSystemPowerWhitelistApp(Ljava/lang/String;)V
Landroid/os/IDeviceIdleController;->unregisterMaintenanceActivityListener(Landroid/os/IMaintenanceActivityListener;)V
-Landroid/os/IHardwarePropertiesManager$Stub$Proxy;
Landroid/os/IHardwarePropertiesManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/os/IHardwarePropertiesManager$Stub$Proxy;->getCpuUsages(Ljava/lang/String;)[Landroid/os/CpuUsageInfo;
Landroid/os/IHardwarePropertiesManager$Stub$Proxy;->getDeviceTemperatures(Ljava/lang/String;II)[F
Landroid/os/IHardwarePropertiesManager$Stub$Proxy;->getFanSpeeds(Ljava/lang/String;)[F
Landroid/os/IHardwarePropertiesManager$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/os/IHardwarePropertiesManager$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/os/IHardwarePropertiesManager$Stub;
Landroid/os/IHardwarePropertiesManager$Stub;-><init>()V
Landroid/os/IHardwarePropertiesManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IHardwarePropertiesManager;
Landroid/os/IHardwarePropertiesManager$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/os/IHardwarePropertiesManager$Stub;->TRANSACTION_getCpuUsages:I
Landroid/os/IHardwarePropertiesManager$Stub;->TRANSACTION_getDeviceTemperatures:I
Landroid/os/IHardwarePropertiesManager$Stub;->TRANSACTION_getFanSpeeds:I
-Landroid/os/IHardwarePropertiesManager;
Landroid/os/IHardwarePropertiesManager;->getCpuUsages(Ljava/lang/String;)[Landroid/os/CpuUsageInfo;
Landroid/os/IHardwarePropertiesManager;->getDeviceTemperatures(Ljava/lang/String;II)[F
Landroid/os/IHardwarePropertiesManager;->getFanSpeeds(Ljava/lang/String;)[F
-Landroid/os/IIncidentManager$Stub$Proxy;
Landroid/os/IIncidentManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/os/IIncidentManager$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/os/IIncidentManager$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/os/IIncidentManager$Stub$Proxy;->reportIncident(Landroid/os/IncidentReportArgs;)V
Landroid/os/IIncidentManager$Stub$Proxy;->reportIncidentToStream(Landroid/os/IncidentReportArgs;Landroid/os/IIncidentReportStatusListener;Ljava/io/FileDescriptor;)V
Landroid/os/IIncidentManager$Stub$Proxy;->systemRunning()V
-Landroid/os/IIncidentManager$Stub;
Landroid/os/IIncidentManager$Stub;-><init>()V
Landroid/os/IIncidentManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IIncidentManager;
Landroid/os/IIncidentManager$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/os/IIncidentManager$Stub;->TRANSACTION_reportIncident:I
Landroid/os/IIncidentManager$Stub;->TRANSACTION_reportIncidentToStream:I
Landroid/os/IIncidentManager$Stub;->TRANSACTION_systemRunning:I
-Landroid/os/IIncidentManager;
Landroid/os/IIncidentManager;->reportIncident(Landroid/os/IncidentReportArgs;)V
Landroid/os/IIncidentManager;->reportIncidentToStream(Landroid/os/IncidentReportArgs;Landroid/os/IIncidentReportStatusListener;Ljava/io/FileDescriptor;)V
Landroid/os/IIncidentManager;->systemRunning()V
-Landroid/os/IIncidentReportStatusListener$Stub$Proxy;
Landroid/os/IIncidentReportStatusListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/os/IIncidentReportStatusListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/os/IIncidentReportStatusListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -53815,7 +50196,6 @@
Landroid/os/IIncidentReportStatusListener$Stub$Proxy;->onReportFinished()V
Landroid/os/IIncidentReportStatusListener$Stub$Proxy;->onReportSectionStatus(II)V
Landroid/os/IIncidentReportStatusListener$Stub$Proxy;->onReportStarted()V
-Landroid/os/IIncidentReportStatusListener$Stub;
Landroid/os/IIncidentReportStatusListener$Stub;-><init>()V
Landroid/os/IIncidentReportStatusListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IIncidentReportStatusListener;
Landroid/os/IIncidentReportStatusListener$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -53823,14 +50203,12 @@
Landroid/os/IIncidentReportStatusListener$Stub;->TRANSACTION_onReportFinished:I
Landroid/os/IIncidentReportStatusListener$Stub;->TRANSACTION_onReportSectionStatus:I
Landroid/os/IIncidentReportStatusListener$Stub;->TRANSACTION_onReportStarted:I
-Landroid/os/IIncidentReportStatusListener;
Landroid/os/IIncidentReportStatusListener;->onReportFailed()V
Landroid/os/IIncidentReportStatusListener;->onReportFinished()V
Landroid/os/IIncidentReportStatusListener;->onReportSectionStatus(II)V
Landroid/os/IIncidentReportStatusListener;->onReportStarted()V
Landroid/os/IIncidentReportStatusListener;->STATUS_FINISHED:I
Landroid/os/IIncidentReportStatusListener;->STATUS_STARTING:I
-Landroid/os/IInstalld$Stub$Proxy;
Landroid/os/IInstalld$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/os/IInstalld$Stub$Proxy;->assertFsverityRootHashMatches(Ljava/lang/String;[B)V
Landroid/os/IInstalld$Stub$Proxy;->clearAppData(Ljava/lang/String;Ljava/lang/String;IIJ)V
@@ -53873,7 +50251,6 @@
Landroid/os/IInstalld$Stub$Proxy;->rmdex(Ljava/lang/String;Ljava/lang/String;)V
Landroid/os/IInstalld$Stub$Proxy;->rmPackageDir(Ljava/lang/String;)V
Landroid/os/IInstalld$Stub$Proxy;->setAppQuota(Ljava/lang/String;IIJ)V
-Landroid/os/IInstalld$Stub;
Landroid/os/IInstalld$Stub;-><init>()V
Landroid/os/IInstalld$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IInstalld;
Landroid/os/IInstalld$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -53916,7 +50293,6 @@
Landroid/os/IInstalld$Stub;->TRANSACTION_rmdex:I
Landroid/os/IInstalld$Stub;->TRANSACTION_rmPackageDir:I
Landroid/os/IInstalld$Stub;->TRANSACTION_setAppQuota:I
-Landroid/os/IInstalld;
Landroid/os/IInstalld;->assertFsverityRootHashMatches(Ljava/lang/String;[B)V
Landroid/os/IInstalld;->clearAppData(Ljava/lang/String;Ljava/lang/String;IIJ)V
Landroid/os/IInstalld;->clearAppProfiles(Ljava/lang/String;Ljava/lang/String;)V
@@ -53956,49 +50332,36 @@
Landroid/os/IInstalld;->rmdex(Ljava/lang/String;Ljava/lang/String;)V
Landroid/os/IInstalld;->rmPackageDir(Ljava/lang/String;)V
Landroid/os/IInstalld;->setAppQuota(Ljava/lang/String;IIJ)V
-Landroid/os/IMaintenanceActivityListener$Stub$Proxy;
Landroid/os/IMaintenanceActivityListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/os/IMaintenanceActivityListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/os/IMaintenanceActivityListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/os/IMaintenanceActivityListener$Stub$Proxy;->onMaintenanceActivityChanged(Z)V
-Landroid/os/IMaintenanceActivityListener$Stub;
Landroid/os/IMaintenanceActivityListener$Stub;-><init>()V
Landroid/os/IMaintenanceActivityListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IMaintenanceActivityListener;
Landroid/os/IMaintenanceActivityListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/os/IMaintenanceActivityListener$Stub;->TRANSACTION_onMaintenanceActivityChanged:I
-Landroid/os/IMaintenanceActivityListener;
Landroid/os/IMaintenanceActivityListener;->onMaintenanceActivityChanged(Z)V
-Landroid/os/IMessenger$Stub$Proxy;
Landroid/os/IMessenger$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/os/IMessenger$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/os/IMessenger$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/os/IMessenger$Stub$Proxy;->send(Landroid/os/Message;)V
-Landroid/os/IMessenger$Stub;
Landroid/os/IMessenger$Stub;-><init>()V
Landroid/os/IMessenger$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IMessenger;
Landroid/os/IMessenger$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/os/IMessenger$Stub;->TRANSACTION_send:I
-Landroid/os/IMessenger;
Landroid/os/IMessenger;->send(Landroid/os/Message;)V
-Landroid/os/IncidentHeaderProto$StatsdConfigKey;
-Landroid/os/IncidentHeaderProto$StatsdConfigKey;-><init>()V
Landroid/os/IncidentHeaderProto$StatsdConfigKey;->ID:J
Landroid/os/IncidentHeaderProto$StatsdConfigKey;->UID:J
-Landroid/os/IncidentHeaderProto;
Landroid/os/IncidentHeaderProto;-><init>()V
Landroid/os/IncidentHeaderProto;->ALERT_ID:J
Landroid/os/IncidentHeaderProto;->CONFIG_KEY:J
Landroid/os/IncidentHeaderProto;->REASON:J
-Landroid/os/IncidentManager$IncidentdDeathRecipient;
-Landroid/os/IncidentManager$IncidentdDeathRecipient;-><init>()V
Landroid/os/IncidentManager;-><init>(Landroid/content/Context;)V
Landroid/os/IncidentManager;->getIIncidentManagerLocked()Landroid/os/IIncidentManager;
Landroid/os/IncidentManager;->mContext:Landroid/content/Context;
Landroid/os/IncidentManager;->mService:Landroid/os/IIncidentManager;
Landroid/os/IncidentManager;->reportIncidentInternal(Landroid/os/IncidentReportArgs;)V
Landroid/os/IncidentManager;->TAG:Ljava/lang/String;
-Landroid/os/IncidentMetadata$SectionStats;
-Landroid/os/IncidentMetadata$SectionStats;-><init>()V
Landroid/os/IncidentMetadata$SectionStats;->DUMP_DURATION_MS:J
Landroid/os/IncidentMetadata$SectionStats;->DUMP_SIZE_BYTES:J
Landroid/os/IncidentMetadata$SectionStats;->EXEC_DURATION_MS:J
@@ -54007,7 +50370,6 @@
Landroid/os/IncidentMetadata$SectionStats;->REPORT_SIZE_BYTES:J
Landroid/os/IncidentMetadata$SectionStats;->SUCCESS:J
Landroid/os/IncidentMetadata$SectionStats;->TIMED_OUT:J
-Landroid/os/IncidentMetadata;
Landroid/os/IncidentMetadata;-><init>()V
Landroid/os/IncidentMetadata;->AUTOMATIC:I
Landroid/os/IncidentMetadata;->DEST:J
@@ -54018,7 +50380,6 @@
Landroid/os/IncidentMetadata;->SECTIONS:J
Landroid/os/IncidentMetadata;->SEQUENCE_NUMBER:J
Landroid/os/IncidentMetadata;->USE_DROPBOX:J
-Landroid/os/IncidentProto;
Landroid/os/IncidentProto;-><init>()V
Landroid/os/IncidentProto;->ACTIVITIES:J
Landroid/os/IncidentProto;->ALARM:J
@@ -54073,19 +50434,15 @@
Landroid/os/IncidentReportArgs;->mHeaders:Ljava/util/ArrayList;
Landroid/os/IncidentReportArgs;->mSections:Landroid/util/IntArray;
Landroid/os/IncidentReportArgs;->setPrivacyPolicy(I)V
-Landroid/os/INetworkActivityListener$Stub$Proxy;
Landroid/os/INetworkActivityListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/os/INetworkActivityListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/os/INetworkActivityListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/os/INetworkActivityListener$Stub$Proxy;->onNetworkActive()V
-Landroid/os/INetworkActivityListener$Stub;
Landroid/os/INetworkActivityListener$Stub;-><init>()V
Landroid/os/INetworkActivityListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/INetworkActivityListener;
Landroid/os/INetworkActivityListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/os/INetworkActivityListener$Stub;->TRANSACTION_onNetworkActive:I
-Landroid/os/INetworkActivityListener;
Landroid/os/INetworkActivityListener;->onNetworkActive()V
-Landroid/os/INetworkManagementService$Stub$Proxy;
Landroid/os/INetworkManagementService$Stub$Proxy;->addIdleTimer(Ljava/lang/String;II)V
Landroid/os/INetworkManagementService$Stub$Proxy;->addInterfaceToLocalNetwork(Ljava/lang/String;Ljava/util/List;)V
Landroid/os/INetworkManagementService$Stub$Proxy;->addInterfaceToNetwork(Ljava/lang/String;I)V
@@ -54175,7 +50532,6 @@
Landroid/os/INetworkManagementService$Stub$Proxy;->unregisterObserver(Landroid/net/INetworkManagementEventObserver;)V
Landroid/os/INetworkManagementService$Stub$Proxy;->unregisterTetheringStatsProvider(Landroid/net/ITetheringStatsProvider;)V
Landroid/os/INetworkManagementService$Stub$Proxy;->untetherInterface(Ljava/lang/String;)V
-Landroid/os/INetworkManagementService$Stub;
Landroid/os/INetworkManagementService$Stub;-><init>()V
Landroid/os/INetworkManagementService$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/os/INetworkManagementService$Stub;->TRANSACTION_addIdleTimer:I
@@ -54265,7 +50621,6 @@
Landroid/os/INetworkManagementService$Stub;->TRANSACTION_unregisterObserver:I
Landroid/os/INetworkManagementService$Stub;->TRANSACTION_unregisterTetheringStatsProvider:I
Landroid/os/INetworkManagementService$Stub;->TRANSACTION_untetherInterface:I
-Landroid/os/INetworkManagementService;
Landroid/os/INetworkManagementService;->addIdleTimer(Ljava/lang/String;II)V
Landroid/os/INetworkManagementService;->addInterfaceToLocalNetwork(Ljava/lang/String;Ljava/util/List;)V
Landroid/os/INetworkManagementService;->addInterfaceToNetwork(Ljava/lang/String;I)V
@@ -54333,7 +50688,6 @@
Landroid/os/INetworkManagementService;->tetherLimitReached(Landroid/net/ITetheringStatsProvider;)V
Landroid/os/INetworkManagementService;->unregisterNetworkActivityListener(Landroid/os/INetworkActivityListener;)V
Landroid/os/INetworkManagementService;->unregisterTetheringStatsProvider(Landroid/net/ITetheringStatsProvider;)V
-Landroid/os/IPermissionController$Stub$Proxy;
Landroid/os/IPermissionController$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/os/IPermissionController$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/os/IPermissionController$Stub$Proxy;->getPackagesForUid(I)[Ljava/lang/String;
@@ -54341,20 +50695,17 @@
Landroid/os/IPermissionController$Stub$Proxy;->isRuntimePermission(Ljava/lang/String;)Z
Landroid/os/IPermissionController$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/os/IPermissionController$Stub$Proxy;->noteOp(Ljava/lang/String;ILjava/lang/String;)I
-Landroid/os/IPermissionController$Stub;
Landroid/os/IPermissionController$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/os/IPermissionController$Stub;->TRANSACTION_checkPermission:I
Landroid/os/IPermissionController$Stub;->TRANSACTION_getPackagesForUid:I
Landroid/os/IPermissionController$Stub;->TRANSACTION_getPackageUid:I
Landroid/os/IPermissionController$Stub;->TRANSACTION_isRuntimePermission:I
Landroid/os/IPermissionController$Stub;->TRANSACTION_noteOp:I
-Landroid/os/IPermissionController;
Landroid/os/IPermissionController;->checkPermission(Ljava/lang/String;II)Z
Landroid/os/IPermissionController;->getPackagesForUid(I)[Ljava/lang/String;
Landroid/os/IPermissionController;->getPackageUid(Ljava/lang/String;I)I
Landroid/os/IPermissionController;->isRuntimePermission(Ljava/lang/String;)Z
Landroid/os/IPermissionController;->noteOp(Ljava/lang/String;ILjava/lang/String;)I
-Landroid/os/IPowerManager$Stub$Proxy;
Landroid/os/IPowerManager$Stub$Proxy;->acquireWakeLock(Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;Ljava/lang/String;)V
Landroid/os/IPowerManager$Stub$Proxy;->acquireWakeLockWithUid(Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;I)V
Landroid/os/IPowerManager$Stub$Proxy;->boostScreenBrightness(J)V
@@ -54383,7 +50734,6 @@
Landroid/os/IPowerManager$Stub$Proxy;->updateWakeLockWorkSource(Landroid/os/IBinder;Landroid/os/WorkSource;Ljava/lang/String;)V
Landroid/os/IPowerManager$Stub$Proxy;->userActivity(JII)V
Landroid/os/IPowerManager$Stub$Proxy;->wakeUp(JLjava/lang/String;Ljava/lang/String;)V
-Landroid/os/IPowerManager$Stub;
Landroid/os/IPowerManager$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/os/IPowerManager$Stub;->TRANSACTION_acquireWakeLockWithUid:I
Landroid/os/IPowerManager$Stub;->TRANSACTION_boostScreenBrightness:I
@@ -54410,7 +50760,6 @@
Landroid/os/IPowerManager$Stub;->TRANSACTION_updateWakeLockWorkSource:I
Landroid/os/IPowerManager$Stub;->TRANSACTION_userActivity:I
Landroid/os/IPowerManager$Stub;->TRANSACTION_wakeUp:I
-Landroid/os/IPowerManager;
Landroid/os/IPowerManager;->acquireWakeLock(Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;Ljava/lang/String;)V
Landroid/os/IPowerManager;->acquireWakeLockWithUid(Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;I)V
Landroid/os/IPowerManager;->boostScreenBrightness(J)V
@@ -54431,40 +50780,33 @@
Landroid/os/IPowerManager;->shutdown(ZLjava/lang/String;Z)V
Landroid/os/IPowerManager;->updateWakeLockUids(Landroid/os/IBinder;[I)V
Landroid/os/IPowerManager;->updateWakeLockWorkSource(Landroid/os/IBinder;Landroid/os/WorkSource;Ljava/lang/String;)V
-Landroid/os/IProcessInfoService$Stub$Proxy;
Landroid/os/IProcessInfoService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/os/IProcessInfoService$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/os/IProcessInfoService$Stub$Proxy;->getProcessStatesAndOomScoresFromPids([I[I[I)V
Landroid/os/IProcessInfoService$Stub$Proxy;->getProcessStatesFromPids([I[I)V
Landroid/os/IProcessInfoService$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/os/IProcessInfoService$Stub;
Landroid/os/IProcessInfoService$Stub;-><init>()V
Landroid/os/IProcessInfoService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IProcessInfoService;
Landroid/os/IProcessInfoService$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/os/IProcessInfoService$Stub;->TRANSACTION_getProcessStatesAndOomScoresFromPids:I
Landroid/os/IProcessInfoService$Stub;->TRANSACTION_getProcessStatesFromPids:I
-Landroid/os/IProcessInfoService;
Landroid/os/IProcessInfoService;->getProcessStatesAndOomScoresFromPids([I[I[I)V
Landroid/os/IProcessInfoService;->getProcessStatesFromPids([I[I)V
-Landroid/os/IProgressListener$Stub$Proxy;
Landroid/os/IProgressListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/os/IProgressListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/os/IProgressListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/os/IProgressListener$Stub$Proxy;->onFinished(ILandroid/os/Bundle;)V
Landroid/os/IProgressListener$Stub$Proxy;->onProgress(IILandroid/os/Bundle;)V
Landroid/os/IProgressListener$Stub$Proxy;->onStarted(ILandroid/os/Bundle;)V
-Landroid/os/IProgressListener$Stub;
Landroid/os/IProgressListener$Stub;-><init>()V
Landroid/os/IProgressListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IProgressListener;
Landroid/os/IProgressListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/os/IProgressListener$Stub;->TRANSACTION_onFinished:I
Landroid/os/IProgressListener$Stub;->TRANSACTION_onProgress:I
Landroid/os/IProgressListener$Stub;->TRANSACTION_onStarted:I
-Landroid/os/IProgressListener;
Landroid/os/IProgressListener;->onFinished(ILandroid/os/Bundle;)V
Landroid/os/IProgressListener;->onProgress(IILandroid/os/Bundle;)V
Landroid/os/IProgressListener;->onStarted(ILandroid/os/Bundle;)V
-Landroid/os/IRecoverySystem$Stub$Proxy;
Landroid/os/IRecoverySystem$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/os/IRecoverySystem$Stub$Proxy;->clearBcb()Z
Landroid/os/IRecoverySystem$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
@@ -54472,56 +50814,44 @@
Landroid/os/IRecoverySystem$Stub$Proxy;->rebootRecoveryWithCommand(Ljava/lang/String;)V
Landroid/os/IRecoverySystem$Stub$Proxy;->setupBcb(Ljava/lang/String;)Z
Landroid/os/IRecoverySystem$Stub$Proxy;->uncrypt(Ljava/lang/String;Landroid/os/IRecoverySystemProgressListener;)Z
-Landroid/os/IRecoverySystem$Stub;
Landroid/os/IRecoverySystem$Stub;-><init>()V
Landroid/os/IRecoverySystem$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/os/IRecoverySystem$Stub;->TRANSACTION_clearBcb:I
Landroid/os/IRecoverySystem$Stub;->TRANSACTION_rebootRecoveryWithCommand:I
Landroid/os/IRecoverySystem$Stub;->TRANSACTION_setupBcb:I
Landroid/os/IRecoverySystem$Stub;->TRANSACTION_uncrypt:I
-Landroid/os/IRecoverySystem;
Landroid/os/IRecoverySystem;->clearBcb()Z
Landroid/os/IRecoverySystem;->rebootRecoveryWithCommand(Ljava/lang/String;)V
Landroid/os/IRecoverySystem;->setupBcb(Ljava/lang/String;)Z
Landroid/os/IRecoverySystem;->uncrypt(Ljava/lang/String;Landroid/os/IRecoverySystemProgressListener;)Z
-Landroid/os/IRecoverySystemProgressListener$Stub$Proxy;
Landroid/os/IRecoverySystemProgressListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/os/IRecoverySystemProgressListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/os/IRecoverySystemProgressListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/os/IRecoverySystemProgressListener$Stub$Proxy;->onProgress(I)V
-Landroid/os/IRecoverySystemProgressListener$Stub;
Landroid/os/IRecoverySystemProgressListener$Stub;-><init>()V
Landroid/os/IRecoverySystemProgressListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IRecoverySystemProgressListener;
Landroid/os/IRecoverySystemProgressListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/os/IRecoverySystemProgressListener$Stub;->TRANSACTION_onProgress:I
-Landroid/os/IRecoverySystemProgressListener;
Landroid/os/IRecoverySystemProgressListener;->onProgress(I)V
-Landroid/os/IRemoteCallback$Stub$Proxy;
Landroid/os/IRemoteCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/os/IRemoteCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/os/IRemoteCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/os/IRemoteCallback$Stub$Proxy;->sendResult(Landroid/os/Bundle;)V
-Landroid/os/IRemoteCallback$Stub;
Landroid/os/IRemoteCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IRemoteCallback;
Landroid/os/IRemoteCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/os/IRemoteCallback$Stub;->TRANSACTION_sendResult:I
-Landroid/os/IRemoteCallback;
-Landroid/os/ISchedulingPolicyService$Stub$Proxy;
Landroid/os/ISchedulingPolicyService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/os/ISchedulingPolicyService$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/os/ISchedulingPolicyService$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/os/ISchedulingPolicyService$Stub$Proxy;->requestCpusetBoost(ZLandroid/os/IBinder;)I
Landroid/os/ISchedulingPolicyService$Stub$Proxy;->requestPriority(IIIZ)I
-Landroid/os/ISchedulingPolicyService$Stub;
Landroid/os/ISchedulingPolicyService$Stub;-><init>()V
Landroid/os/ISchedulingPolicyService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/ISchedulingPolicyService;
Landroid/os/ISchedulingPolicyService$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/os/ISchedulingPolicyService$Stub;->TRANSACTION_requestCpusetBoost:I
Landroid/os/ISchedulingPolicyService$Stub;->TRANSACTION_requestPriority:I
-Landroid/os/ISchedulingPolicyService;
Landroid/os/ISchedulingPolicyService;->requestCpusetBoost(ZLandroid/os/IBinder;)I
Landroid/os/ISchedulingPolicyService;->requestPriority(IIIZ)I
-Landroid/os/IServiceManager;
Landroid/os/IServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;ZI)V
Landroid/os/IServiceManager;->ADD_SERVICE_TRANSACTION:I
Landroid/os/IServiceManager;->CHECK_SERVICES_TRANSACTION:I
@@ -54538,7 +50868,6 @@
Landroid/os/IServiceManager;->LIST_SERVICES_TRANSACTION:I
Landroid/os/IServiceManager;->setPermissionController(Landroid/os/IPermissionController;)V
Landroid/os/IServiceManager;->SET_PERMISSION_CONTROLLER_TRANSACTION:I
-Landroid/os/IStatsCompanionService$Stub$Proxy;
Landroid/os/IStatsCompanionService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/os/IStatsCompanionService$Stub$Proxy;->cancelAlarmForSubscriberTriggering()V
Landroid/os/IStatsCompanionService$Stub$Proxy;->cancelAnomalyAlarm()V
@@ -54553,7 +50882,6 @@
Landroid/os/IStatsCompanionService$Stub$Proxy;->setPullingAlarm(J)V
Landroid/os/IStatsCompanionService$Stub$Proxy;->statsdReady()V
Landroid/os/IStatsCompanionService$Stub$Proxy;->triggerUidSnapshot()V
-Landroid/os/IStatsCompanionService$Stub;
Landroid/os/IStatsCompanionService$Stub;-><init>()V
Landroid/os/IStatsCompanionService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IStatsCompanionService;
Landroid/os/IStatsCompanionService$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -54568,7 +50896,6 @@
Landroid/os/IStatsCompanionService$Stub;->TRANSACTION_setPullingAlarm:I
Landroid/os/IStatsCompanionService$Stub;->TRANSACTION_statsdReady:I
Landroid/os/IStatsCompanionService$Stub;->TRANSACTION_triggerUidSnapshot:I
-Landroid/os/IStatsCompanionService;
Landroid/os/IStatsCompanionService;->cancelAlarmForSubscriberTriggering()V
Landroid/os/IStatsCompanionService;->cancelAnomalyAlarm()V
Landroid/os/IStatsCompanionService;->cancelPullingAlarm()V
@@ -54580,7 +50907,6 @@
Landroid/os/IStatsCompanionService;->setPullingAlarm(J)V
Landroid/os/IStatsCompanionService;->statsdReady()V
Landroid/os/IStatsCompanionService;->triggerUidSnapshot()V
-Landroid/os/IStatsManager$Stub$Proxy;
Landroid/os/IStatsManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/os/IStatsManager$Stub$Proxy;->addConfiguration(J[BLjava/lang/String;)V
Landroid/os/IStatsManager$Stub$Proxy;->getData(JLjava/lang/String;)[B
@@ -54602,7 +50928,6 @@
Landroid/os/IStatsManager$Stub$Proxy;->statsCompanionReady()V
Landroid/os/IStatsManager$Stub$Proxy;->systemRunning()V
Landroid/os/IStatsManager$Stub$Proxy;->unsetBroadcastSubscriber(JJLjava/lang/String;)V
-Landroid/os/IStatsManager$Stub;
Landroid/os/IStatsManager$Stub;-><init>()V
Landroid/os/IStatsManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IStatsManager;
Landroid/os/IStatsManager$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -54624,7 +50949,6 @@
Landroid/os/IStatsManager$Stub;->TRANSACTION_statsCompanionReady:I
Landroid/os/IStatsManager$Stub;->TRANSACTION_systemRunning:I
Landroid/os/IStatsManager$Stub;->TRANSACTION_unsetBroadcastSubscriber:I
-Landroid/os/IStatsManager;
Landroid/os/IStatsManager;->addConfiguration(J[BLjava/lang/String;)V
Landroid/os/IStatsManager;->getData(JLjava/lang/String;)[B
Landroid/os/IStatsManager;->getMetadata(Ljava/lang/String;)[B
@@ -54643,52 +50967,42 @@
Landroid/os/IStatsManager;->statsCompanionReady()V
Landroid/os/IStatsManager;->systemRunning()V
Landroid/os/IStatsManager;->unsetBroadcastSubscriber(JJLjava/lang/String;)V
-Landroid/os/IStoraged$Stub$Proxy;
Landroid/os/IStoraged$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/os/IStoraged$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/os/IStoraged$Stub$Proxy;->getRecentPerf()I
Landroid/os/IStoraged$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/os/IStoraged$Stub$Proxy;->onUserStarted(I)V
Landroid/os/IStoraged$Stub$Proxy;->onUserStopped(I)V
-Landroid/os/IStoraged$Stub;
Landroid/os/IStoraged$Stub;-><init>()V
Landroid/os/IStoraged$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IStoraged;
Landroid/os/IStoraged$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/os/IStoraged$Stub;->TRANSACTION_getRecentPerf:I
Landroid/os/IStoraged$Stub;->TRANSACTION_onUserStarted:I
Landroid/os/IStoraged$Stub;->TRANSACTION_onUserStopped:I
-Landroid/os/IStoraged;
Landroid/os/IStoraged;->getRecentPerf()I
Landroid/os/IStoraged;->onUserStarted(I)V
Landroid/os/IStoraged;->onUserStopped(I)V
-Landroid/os/ISystemUpdateManager$Stub$Proxy;
Landroid/os/ISystemUpdateManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/os/ISystemUpdateManager$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/os/ISystemUpdateManager$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/os/ISystemUpdateManager$Stub$Proxy;->retrieveSystemUpdateInfo()Landroid/os/Bundle;
Landroid/os/ISystemUpdateManager$Stub$Proxy;->updateSystemUpdateInfo(Landroid/os/PersistableBundle;)V
-Landroid/os/ISystemUpdateManager$Stub;
Landroid/os/ISystemUpdateManager$Stub;-><init>()V
Landroid/os/ISystemUpdateManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/ISystemUpdateManager;
Landroid/os/ISystemUpdateManager$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/os/ISystemUpdateManager$Stub;->TRANSACTION_retrieveSystemUpdateInfo:I
Landroid/os/ISystemUpdateManager$Stub;->TRANSACTION_updateSystemUpdateInfo:I
-Landroid/os/ISystemUpdateManager;
Landroid/os/ISystemUpdateManager;->retrieveSystemUpdateInfo()Landroid/os/Bundle;
Landroid/os/ISystemUpdateManager;->updateSystemUpdateInfo(Landroid/os/PersistableBundle;)V
-Landroid/os/IThermalEventListener$Stub$Proxy;
Landroid/os/IThermalEventListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/os/IThermalEventListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/os/IThermalEventListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/os/IThermalEventListener$Stub$Proxy;->notifyThrottling(ZLandroid/os/Temperature;)V
-Landroid/os/IThermalEventListener$Stub;
Landroid/os/IThermalEventListener$Stub;-><init>()V
Landroid/os/IThermalEventListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IThermalEventListener;
Landroid/os/IThermalEventListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/os/IThermalEventListener$Stub;->TRANSACTION_notifyThrottling:I
-Landroid/os/IThermalEventListener;
Landroid/os/IThermalEventListener;->notifyThrottling(ZLandroid/os/Temperature;)V
-Landroid/os/IThermalService$Stub$Proxy;
Landroid/os/IThermalService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/os/IThermalService$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/os/IThermalService$Stub$Proxy;->isThrottling()Z
@@ -54696,7 +51010,6 @@
Landroid/os/IThermalService$Stub$Proxy;->notifyThrottling(ZLandroid/os/Temperature;)V
Landroid/os/IThermalService$Stub$Proxy;->registerThermalEventListener(Landroid/os/IThermalEventListener;)V
Landroid/os/IThermalService$Stub$Proxy;->unregisterThermalEventListener(Landroid/os/IThermalEventListener;)V
-Landroid/os/IThermalService$Stub;
Landroid/os/IThermalService$Stub;-><init>()V
Landroid/os/IThermalService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IThermalService;
Landroid/os/IThermalService$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -54704,12 +51017,10 @@
Landroid/os/IThermalService$Stub;->TRANSACTION_notifyThrottling:I
Landroid/os/IThermalService$Stub;->TRANSACTION_registerThermalEventListener:I
Landroid/os/IThermalService$Stub;->TRANSACTION_unregisterThermalEventListener:I
-Landroid/os/IThermalService;
Landroid/os/IThermalService;->isThrottling()Z
Landroid/os/IThermalService;->notifyThrottling(ZLandroid/os/Temperature;)V
Landroid/os/IThermalService;->registerThermalEventListener(Landroid/os/IThermalEventListener;)V
Landroid/os/IThermalService;->unregisterThermalEventListener(Landroid/os/IThermalEventListener;)V
-Landroid/os/IUpdateEngine$Stub$Proxy;
Landroid/os/IUpdateEngine$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/os/IUpdateEngine$Stub$Proxy;->applyPayload(Ljava/lang/String;JJ[Ljava/lang/String;)V
Landroid/os/IUpdateEngine$Stub$Proxy;->bind(Landroid/os/IUpdateEngineCallback;)Z
@@ -54721,7 +51032,6 @@
Landroid/os/IUpdateEngine$Stub$Proxy;->suspend()V
Landroid/os/IUpdateEngine$Stub$Proxy;->unbind(Landroid/os/IUpdateEngineCallback;)Z
Landroid/os/IUpdateEngine$Stub$Proxy;->verifyPayloadApplicable(Ljava/lang/String;)Z
-Landroid/os/IUpdateEngine$Stub;
Landroid/os/IUpdateEngine$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IUpdateEngine;
Landroid/os/IUpdateEngine$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/os/IUpdateEngine$Stub;->TRANSACTION_applyPayload:I
@@ -54732,7 +51042,6 @@
Landroid/os/IUpdateEngine$Stub;->TRANSACTION_suspend:I
Landroid/os/IUpdateEngine$Stub;->TRANSACTION_unbind:I
Landroid/os/IUpdateEngine$Stub;->TRANSACTION_verifyPayloadApplicable:I
-Landroid/os/IUpdateEngine;
Landroid/os/IUpdateEngine;->applyPayload(Ljava/lang/String;JJ[Ljava/lang/String;)V
Landroid/os/IUpdateEngine;->bind(Landroid/os/IUpdateEngineCallback;)Z
Landroid/os/IUpdateEngine;->cancel()V
@@ -54741,36 +51050,29 @@
Landroid/os/IUpdateEngine;->suspend()V
Landroid/os/IUpdateEngine;->unbind(Landroid/os/IUpdateEngineCallback;)Z
Landroid/os/IUpdateEngine;->verifyPayloadApplicable(Ljava/lang/String;)Z
-Landroid/os/IUpdateEngineCallback$Stub$Proxy;
Landroid/os/IUpdateEngineCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/os/IUpdateEngineCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/os/IUpdateEngineCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/os/IUpdateEngineCallback$Stub$Proxy;->onPayloadApplicationComplete(I)V
Landroid/os/IUpdateEngineCallback$Stub$Proxy;->onStatusUpdate(IF)V
-Landroid/os/IUpdateEngineCallback$Stub;
Landroid/os/IUpdateEngineCallback$Stub;-><init>()V
Landroid/os/IUpdateEngineCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IUpdateEngineCallback;
Landroid/os/IUpdateEngineCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/os/IUpdateEngineCallback$Stub;->TRANSACTION_onPayloadApplicationComplete:I
Landroid/os/IUpdateEngineCallback$Stub;->TRANSACTION_onStatusUpdate:I
-Landroid/os/IUpdateEngineCallback;
Landroid/os/IUpdateEngineCallback;->onPayloadApplicationComplete(I)V
-Landroid/os/IUpdateLock$Stub$Proxy;
Landroid/os/IUpdateLock$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/os/IUpdateLock$Stub$Proxy;->acquireUpdateLock(Landroid/os/IBinder;Ljava/lang/String;)V
Landroid/os/IUpdateLock$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/os/IUpdateLock$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/os/IUpdateLock$Stub$Proxy;->releaseUpdateLock(Landroid/os/IBinder;)V
-Landroid/os/IUpdateLock$Stub;
Landroid/os/IUpdateLock$Stub;-><init>()V
Landroid/os/IUpdateLock$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IUpdateLock;
Landroid/os/IUpdateLock$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/os/IUpdateLock$Stub;->TRANSACTION_acquireUpdateLock:I
Landroid/os/IUpdateLock$Stub;->TRANSACTION_releaseUpdateLock:I
-Landroid/os/IUpdateLock;
Landroid/os/IUpdateLock;->acquireUpdateLock(Landroid/os/IBinder;Ljava/lang/String;)V
Landroid/os/IUpdateLock;->releaseUpdateLock(Landroid/os/IBinder;)V
-Landroid/os/IUserManager$Stub$Proxy;
Landroid/os/IUserManager$Stub$Proxy;->canAddMoreManagedProfiles(IZ)Z
Landroid/os/IUserManager$Stub$Proxy;->canHaveRestrictedProfile(I)Z
Landroid/os/IUserManager$Stub$Proxy;->clearSeedAccountData()V
@@ -54833,7 +51135,6 @@
Landroid/os/IUserManager$Stub$Proxy;->setUserName(ILjava/lang/String;)V
Landroid/os/IUserManager$Stub$Proxy;->setUserRestriction(Ljava/lang/String;ZI)V
Landroid/os/IUserManager$Stub$Proxy;->someUserHasSeedAccount(Ljava/lang/String;Ljava/lang/String;)Z
-Landroid/os/IUserManager$Stub;
Landroid/os/IUserManager$Stub;-><init>()V
Landroid/os/IUserManager$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/os/IUserManager$Stub;->TRANSACTION_canAddMoreManagedProfiles:I
@@ -54896,7 +51197,6 @@
Landroid/os/IUserManager$Stub;->TRANSACTION_setUserName:I
Landroid/os/IUserManager$Stub;->TRANSACTION_setUserRestriction:I
Landroid/os/IUserManager$Stub;->TRANSACTION_someUserHasSeedAccount:I
-Landroid/os/IUserManager;
Landroid/os/IUserManager;->canAddMoreManagedProfiles(IZ)Z
Landroid/os/IUserManager;->canHaveRestrictedProfile(I)Z
Landroid/os/IUserManager;->clearSeedAccountData()V
@@ -54956,7 +51256,6 @@
Landroid/os/IUserManager;->setUserName(ILjava/lang/String;)V
Landroid/os/IUserManager;->setUserRestriction(Ljava/lang/String;ZI)V
Landroid/os/IUserManager;->someUserHasSeedAccount(Ljava/lang/String;Ljava/lang/String;)Z
-Landroid/os/IVibratorService$Stub$Proxy;
Landroid/os/IVibratorService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/os/IVibratorService$Stub$Proxy;->cancelVibrate(Landroid/os/IBinder;)V
Landroid/os/IVibratorService$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
@@ -54964,19 +51263,16 @@
Landroid/os/IVibratorService$Stub$Proxy;->hasVibrator()Z
Landroid/os/IVibratorService$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/os/IVibratorService$Stub$Proxy;->vibrate(ILjava/lang/String;Landroid/os/VibrationEffect;ILandroid/os/IBinder;)V
-Landroid/os/IVibratorService$Stub;
Landroid/os/IVibratorService$Stub;-><init>()V
Landroid/os/IVibratorService$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/os/IVibratorService$Stub;->TRANSACTION_cancelVibrate:I
Landroid/os/IVibratorService$Stub;->TRANSACTION_hasAmplitudeControl:I
Landroid/os/IVibratorService$Stub;->TRANSACTION_hasVibrator:I
Landroid/os/IVibratorService$Stub;->TRANSACTION_vibrate:I
-Landroid/os/IVibratorService;
Landroid/os/IVibratorService;->cancelVibrate(Landroid/os/IBinder;)V
Landroid/os/IVibratorService;->hasAmplitudeControl()Z
Landroid/os/IVibratorService;->hasVibrator()Z
Landroid/os/IVibratorService;->vibrate(ILjava/lang/String;Landroid/os/VibrationEffect;ILandroid/os/IBinder;)V
-Landroid/os/IVold$Stub$Proxy;
Landroid/os/IVold$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/os/IVold$Stub$Proxy;->abortIdleMaint(Landroid/os/IVoldTaskListener;)V
Landroid/os/IVold$Stub$Proxy;->addUserKeyAuth(IILjava/lang/String;Ljava/lang/String;)V
@@ -55031,7 +51327,6 @@
Landroid/os/IVold$Stub$Proxy;->unlockUserKey(IILjava/lang/String;Ljava/lang/String;)V
Landroid/os/IVold$Stub$Proxy;->unmount(Ljava/lang/String;)V
Landroid/os/IVold$Stub$Proxy;->unmountAppFuse(III)V
-Landroid/os/IVold$Stub;
Landroid/os/IVold$Stub;-><init>()V
Landroid/os/IVold$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IVold;
Landroid/os/IVold$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -55086,7 +51381,6 @@
Landroid/os/IVold$Stub;->TRANSACTION_unlockUserKey:I
Landroid/os/IVold$Stub;->TRANSACTION_unmount:I
Landroid/os/IVold$Stub;->TRANSACTION_unmountAppFuse:I
-Landroid/os/IVold;
Landroid/os/IVold;->abortIdleMaint(Landroid/os/IVoldTaskListener;)V
Landroid/os/IVold;->addUserKeyAuth(IILjava/lang/String;Ljava/lang/String;)V
Landroid/os/IVold;->benchmark(Ljava/lang/String;Landroid/os/IVoldTaskListener;)V
@@ -55175,7 +51469,6 @@
Landroid/os/IVold;->VOLUME_TYPE_OBB:I
Landroid/os/IVold;->VOLUME_TYPE_PRIVATE:I
Landroid/os/IVold;->VOLUME_TYPE_PUBLIC:I
-Landroid/os/IVoldListener$Stub$Proxy;
Landroid/os/IVoldListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/os/IVoldListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/os/IVoldListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -55189,7 +51482,6 @@
Landroid/os/IVoldListener$Stub$Proxy;->onVolumeMetadataChanged(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
Landroid/os/IVoldListener$Stub$Proxy;->onVolumePathChanged(Ljava/lang/String;Ljava/lang/String;)V
Landroid/os/IVoldListener$Stub$Proxy;->onVolumeStateChanged(Ljava/lang/String;I)V
-Landroid/os/IVoldListener$Stub;
Landroid/os/IVoldListener$Stub;-><init>()V
Landroid/os/IVoldListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IVoldListener;
Landroid/os/IVoldListener$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -55203,7 +51495,6 @@
Landroid/os/IVoldListener$Stub;->TRANSACTION_onVolumeMetadataChanged:I
Landroid/os/IVoldListener$Stub;->TRANSACTION_onVolumePathChanged:I
Landroid/os/IVoldListener$Stub;->TRANSACTION_onVolumeStateChanged:I
-Landroid/os/IVoldListener;
Landroid/os/IVoldListener;->onDiskCreated(Ljava/lang/String;I)V
Landroid/os/IVoldListener;->onDiskDestroyed(Ljava/lang/String;)V
Landroid/os/IVoldListener;->onDiskMetadataChanged(Ljava/lang/String;JLjava/lang/String;Ljava/lang/String;)V
@@ -55214,23 +51505,18 @@
Landroid/os/IVoldListener;->onVolumeMetadataChanged(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
Landroid/os/IVoldListener;->onVolumePathChanged(Ljava/lang/String;Ljava/lang/String;)V
Landroid/os/IVoldListener;->onVolumeStateChanged(Ljava/lang/String;I)V
-Landroid/os/IVoldTaskListener$Stub$Proxy;
Landroid/os/IVoldTaskListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/os/IVoldTaskListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/os/IVoldTaskListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/os/IVoldTaskListener$Stub$Proxy;->onFinished(ILandroid/os/PersistableBundle;)V
Landroid/os/IVoldTaskListener$Stub$Proxy;->onStatus(ILandroid/os/PersistableBundle;)V
-Landroid/os/IVoldTaskListener$Stub;
Landroid/os/IVoldTaskListener$Stub;-><init>()V
Landroid/os/IVoldTaskListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IVoldTaskListener;
Landroid/os/IVoldTaskListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/os/IVoldTaskListener$Stub;->TRANSACTION_onFinished:I
Landroid/os/IVoldTaskListener$Stub;->TRANSACTION_onStatus:I
-Landroid/os/IVoldTaskListener;
Landroid/os/IVoldTaskListener;->onFinished(ILandroid/os/PersistableBundle;)V
Landroid/os/IVoldTaskListener;->onStatus(ILandroid/os/PersistableBundle;)V
-Landroid/os/KernelWakeSourcesProto$WakeupSource;
-Landroid/os/KernelWakeSourcesProto$WakeupSource;-><init>()V
Landroid/os/KernelWakeSourcesProto$WakeupSource;->ACTIVE_COUNT:J
Landroid/os/KernelWakeSourcesProto$WakeupSource;->ACTIVE_SINCE:J
Landroid/os/KernelWakeSourcesProto$WakeupSource;->EVENT_COUNT:J
@@ -55241,7 +51527,6 @@
Landroid/os/KernelWakeSourcesProto$WakeupSource;->PREVENT_SUSPEND_TIME:J
Landroid/os/KernelWakeSourcesProto$WakeupSource;->TOTAL_TIME:J
Landroid/os/KernelWakeSourcesProto$WakeupSource;->WAKEUP_COUNT:J
-Landroid/os/KernelWakeSourcesProto;
Landroid/os/KernelWakeSourcesProto;-><init>()V
Landroid/os/KernelWakeSourcesProto;->WAKEUP_SOURCES:J
Landroid/os/LocaleList;-><init>(Ljava/util/Locale;Landroid/os/LocaleList;)V
@@ -55284,18 +51569,13 @@
Landroid/os/Looper;->showSlowLog(JJJLjava/lang/String;Landroid/os/Message;)Z
Landroid/os/Looper;->TAG:Ljava/lang/String;
Landroid/os/Looper;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-Landroid/os/LooperProto;
Landroid/os/LooperProto;-><init>()V
Landroid/os/LooperProto;->QUEUE:J
Landroid/os/LooperProto;->THREAD_ID:J
Landroid/os/LooperProto;->THREAD_NAME:J
-Landroid/os/MemoryFile$MemoryInputStream;
-Landroid/os/MemoryFile$MemoryInputStream;-><init>()V
Landroid/os/MemoryFile$MemoryInputStream;->mMark:I
Landroid/os/MemoryFile$MemoryInputStream;->mOffset:I
Landroid/os/MemoryFile$MemoryInputStream;->mSingleByte:[B
-Landroid/os/MemoryFile$MemoryOutputStream;
-Landroid/os/MemoryFile$MemoryOutputStream;-><init>()V
Landroid/os/MemoryFile$MemoryOutputStream;->mOffset:I
Landroid/os/MemoryFile$MemoryOutputStream;->mSingleByte:[B
Landroid/os/MemoryFile;->beginAccess()V
@@ -55319,7 +51599,6 @@
Landroid/os/Message;->sPoolSync:Ljava/lang/Object;
Landroid/os/Message;->updateCheckRecycle(I)V
Landroid/os/Message;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-Landroid/os/MessageProto;
Landroid/os/MessageProto;-><init>()V
Landroid/os/MessageProto;->ARG1:J
Landroid/os/MessageProto;->ARG2:J
@@ -55329,13 +51608,11 @@
Landroid/os/MessageProto;->TARGET:J
Landroid/os/MessageProto;->WHAT:J
Landroid/os/MessageProto;->WHEN:J
-Landroid/os/MessageQueue$FileDescriptorRecord;
Landroid/os/MessageQueue$FileDescriptorRecord;-><init>(Ljava/io/FileDescriptor;ILandroid/os/MessageQueue$OnFileDescriptorEventListener;)V
Landroid/os/MessageQueue$FileDescriptorRecord;->mDescriptor:Ljava/io/FileDescriptor;
Landroid/os/MessageQueue$FileDescriptorRecord;->mEvents:I
Landroid/os/MessageQueue$FileDescriptorRecord;->mListener:Landroid/os/MessageQueue$OnFileDescriptorEventListener;
Landroid/os/MessageQueue$FileDescriptorRecord;->mSeq:I
-Landroid/os/MessageQueue$OnFileDescriptorEventListener$Events;
Landroid/os/MessageQueue;-><init>(Z)V
Landroid/os/MessageQueue;->DEBUG:Z
Landroid/os/MessageQueue;->dispose()V
@@ -55364,18 +51641,15 @@
Landroid/os/MessageQueue;->TAG:Ljava/lang/String;
Landroid/os/MessageQueue;->updateOnFileDescriptorEventListenerLocked(Ljava/io/FileDescriptor;ILandroid/os/MessageQueue$OnFileDescriptorEventListener;)V
Landroid/os/MessageQueue;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-Landroid/os/MessageQueueProto;
Landroid/os/MessageQueueProto;-><init>()V
Landroid/os/MessageQueueProto;->IS_POLLING_LOCKED:J
Landroid/os/MessageQueueProto;->IS_QUITTING:J
Landroid/os/MessageQueueProto;->MESSAGES:J
Landroid/os/Messenger;->mTarget:Landroid/os/IMessenger;
-Landroid/os/NullVibrator;
Landroid/os/NullVibrator;-><init>()V
Landroid/os/NullVibrator;->getInstance()Landroid/os/NullVibrator;
Landroid/os/NullVibrator;->sInstance:Landroid/os/NullVibrator;
Landroid/os/NullVibrator;->vibrate(ILjava/lang/String;Landroid/os/VibrationEffect;Landroid/media/AudioAttributes;)V
-Landroid/os/OsProtoEnums;
Landroid/os/OsProtoEnums;-><init>()V
Landroid/os/OsProtoEnums;->BATTERY_HEALTH_COLD:I
Landroid/os/OsProtoEnums;->BATTERY_HEALTH_DEAD:I
@@ -55407,8 +51681,6 @@
Landroid/os/OsProtoEnums;->TEMPERATURE_TYPE_GPU:I
Landroid/os/OsProtoEnums;->TEMPERATURE_TYPE_SKIN:I
Landroid/os/OsProtoEnums;->TEMPERATURE_TYPE_UNKNOWN:I
-Landroid/os/PageTypeInfoProto$Block;
-Landroid/os/PageTypeInfoProto$Block;-><init>()V
Landroid/os/PageTypeInfoProto$Block;->CMA:J
Landroid/os/PageTypeInfoProto$Block;->HIGHATOMIC:J
Landroid/os/PageTypeInfoProto$Block;->ISOLATE:J
@@ -55418,19 +51690,15 @@
Landroid/os/PageTypeInfoProto$Block;->RESERVE:J
Landroid/os/PageTypeInfoProto$Block;->UNMOVABLE:J
Landroid/os/PageTypeInfoProto$Block;->ZONE:J
-Landroid/os/PageTypeInfoProto$MigrateType;
-Landroid/os/PageTypeInfoProto$MigrateType;-><init>()V
Landroid/os/PageTypeInfoProto$MigrateType;->FREE_PAGES_COUNT:J
Landroid/os/PageTypeInfoProto$MigrateType;->NODE:J
Landroid/os/PageTypeInfoProto$MigrateType;->TYPE:J
Landroid/os/PageTypeInfoProto$MigrateType;->ZONE:J
-Landroid/os/PageTypeInfoProto;
Landroid/os/PageTypeInfoProto;-><init>()V
Landroid/os/PageTypeInfoProto;->BLOCKS:J
Landroid/os/PageTypeInfoProto;->MIGRATE_TYPES:J
Landroid/os/PageTypeInfoProto;->PAGES_PER_BLOCK:J
Landroid/os/PageTypeInfoProto;->PAGE_BLOCK_ORDER:J
-Landroid/os/Parcel$ReadWriteHelper;
Landroid/os/Parcel$ReadWriteHelper;->DEFAULT:Landroid/os/Parcel$ReadWriteHelper;
Landroid/os/Parcel$ReadWriteHelper;->readString(Landroid/os/Parcel;)Ljava/lang/String;
Landroid/os/Parcel$ReadWriteHelper;->writeString(Landroid/os/Parcel;Ljava/lang/String;)V
@@ -55580,22 +51848,17 @@
Landroid/os/Parcel;->writeStringNoHelper(Ljava/lang/String;)V
Landroid/os/Parcel;->writeTypedList(Ljava/util/List;I)V
Landroid/os/Parcel;->WRITE_EXCEPTION_STACK_TRACE_THRESHOLD_MS:I
-Landroid/os/Parcelable$ContentsFlags;
-Landroid/os/Parcelable$WriteFlags;
Landroid/os/Parcelable;->PARCELABLE_ELIDE_DUPLICATES:I
-Landroid/os/ParcelableException;
Landroid/os/ParcelableException;-><init>(Ljava/lang/Throwable;)V
Landroid/os/ParcelableException;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/os/ParcelableException;->maybeRethrow(Ljava/lang/Class;)V
Landroid/os/ParcelableException;->readFromParcel(Landroid/os/Parcel;)Ljava/lang/Throwable;
Landroid/os/ParcelableException;->writeToParcel(Landroid/os/Parcel;Ljava/lang/Throwable;)V
-Landroid/os/ParcelableParcel;
Landroid/os/ParcelableParcel;-><init>(Landroid/os/Parcel;Ljava/lang/ClassLoader;)V
Landroid/os/ParcelableParcel;->mClassLoader:Ljava/lang/ClassLoader;
Landroid/os/ParcelableParcel;->mParcel:Landroid/os/Parcel;
Landroid/os/ParcelFileDescriptor$AutoCloseInputStream;->mPfd:Landroid/os/ParcelFileDescriptor;
Landroid/os/ParcelFileDescriptor$AutoCloseOutputStream;->mPfd:Landroid/os/ParcelFileDescriptor;
-Landroid/os/ParcelFileDescriptor$Status;
Landroid/os/ParcelFileDescriptor$Status;-><init>(I)V
Landroid/os/ParcelFileDescriptor$Status;-><init>(ILjava/lang/String;)V
Landroid/os/ParcelFileDescriptor$Status;->asIOException()Ljava/io/IOException;
@@ -55655,7 +51918,6 @@
Landroid/os/PatternMatcher;->TOKEN_TYPE_LITERAL:I
Landroid/os/PatternMatcher;->TOKEN_TYPE_SET:I
Landroid/os/PatternMatcher;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-Landroid/os/PatternMatcherProto;
Landroid/os/PatternMatcherProto;-><init>()V
Landroid/os/PatternMatcherProto;->PATTERN:J
Landroid/os/PatternMatcherProto;->TYPE:J
@@ -55663,7 +51925,6 @@
Landroid/os/PatternMatcherProto;->TYPE_LITERAL:I
Landroid/os/PatternMatcherProto;->TYPE_PREFIX:I
Landroid/os/PatternMatcherProto;->TYPE_SIMPLE_GLOB:I
-Landroid/os/PerformanceCollector$PerformanceResultsWriter;
Landroid/os/PerformanceCollector$PerformanceResultsWriter;->writeBeginSnapshot(Ljava/lang/String;)V
Landroid/os/PerformanceCollector$PerformanceResultsWriter;->writeEndSnapshot(Landroid/os/Bundle;)V
Landroid/os/PerformanceCollector$PerformanceResultsWriter;->writeMeasurement(Ljava/lang/String;F)V
@@ -55671,7 +51932,6 @@
Landroid/os/PerformanceCollector$PerformanceResultsWriter;->writeMeasurement(Ljava/lang/String;Ljava/lang/String;)V
Landroid/os/PerformanceCollector$PerformanceResultsWriter;->writeStartTiming(Ljava/lang/String;)V
Landroid/os/PerformanceCollector$PerformanceResultsWriter;->writeStopTiming(Landroid/os/Bundle;)V
-Landroid/os/PerformanceCollector;
Landroid/os/PerformanceCollector;-><init>(Landroid/os/PerformanceCollector$PerformanceResultsWriter;)V
Landroid/os/PerformanceCollector;->addIteration(Ljava/lang/String;)Landroid/os/Bundle;
Landroid/os/PerformanceCollector;->addMeasurement(Ljava/lang/String;F)V
@@ -55719,7 +51979,6 @@
Landroid/os/PerformanceCollector;->startAllocCounting()V
Landroid/os/PerformanceCollector;->startPerformanceSnapshot()V
Landroid/os/PerformanceCollector;->stopAllocCounting()V
-Landroid/os/PersistableBundle$MyReadMapCallback;
Landroid/os/PersistableBundle$MyReadMapCallback;-><init>()V
Landroid/os/PersistableBundle$MyReadMapCallback;->readThisUnknownObjectXml(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Ljava/lang/Object;
Landroid/os/PersistableBundle;-><init>(Landroid/os/Bundle;)V
@@ -55734,17 +51993,14 @@
Landroid/os/PersistableBundle;->toShortString()Ljava/lang/String;
Landroid/os/PersistableBundle;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
Landroid/os/PersistableBundle;->writeUnknownObject(Ljava/lang/Object;Ljava/lang/String;Lorg/xmlpull/v1/XmlSerializer;)V
-Landroid/os/PersistableBundleProto;
Landroid/os/PersistableBundleProto;-><init>()V
Landroid/os/PersistableBundleProto;->MAP_DATA:J
Landroid/os/PersistableBundleProto;->PARCELLED_DATA_SIZE:J
-Landroid/os/PooledStringReader;
Landroid/os/PooledStringReader;-><init>(Landroid/os/Parcel;)V
Landroid/os/PooledStringReader;->getStringCount()I
Landroid/os/PooledStringReader;->mIn:Landroid/os/Parcel;
Landroid/os/PooledStringReader;->mPool:[Ljava/lang/String;
Landroid/os/PooledStringReader;->readString()Ljava/lang/String;
-Landroid/os/PooledStringWriter;
Landroid/os/PooledStringWriter;-><init>(Landroid/os/Parcel;)V
Landroid/os/PooledStringWriter;->finish()V
Landroid/os/PooledStringWriter;->getStringCount()I
@@ -55753,8 +52009,6 @@
Landroid/os/PooledStringWriter;->mPool:Ljava/util/HashMap;
Landroid/os/PooledStringWriter;->mStart:I
Landroid/os/PooledStringWriter;->writeString(Ljava/lang/String;)V
-Landroid/os/PowerManager$LocationPowerSaveMode;
-Landroid/os/PowerManager$ServiceType;
Landroid/os/PowerManager$ServiceType;->ANIMATION:I
Landroid/os/PowerManager$ServiceType;->AOD:I
Landroid/os/PowerManager$ServiceType;->BATTERY_STATS:I
@@ -55770,8 +52024,6 @@
Landroid/os/PowerManager$ServiceType;->SCREEN_BRIGHTNESS:I
Landroid/os/PowerManager$ServiceType;->SOUND:I
Landroid/os/PowerManager$ServiceType;->VIBRATION:I
-Landroid/os/PowerManager$ShutdownReason;
-Landroid/os/PowerManager$WakeLock;-><init>(ILjava/lang/String;Ljava/lang/String;)V
Landroid/os/PowerManager$WakeLock;->acquireLocked()V
Landroid/os/PowerManager$WakeLock;->getTag()Ljava/lang/String;
Landroid/os/PowerManager$WakeLock;->mExternalCount:I
@@ -55835,10 +52087,8 @@
Landroid/os/PowerManager;->TAG:Ljava/lang/String;
Landroid/os/PowerManager;->UNIMPORTANT_FOR_LOGGING:I
Landroid/os/PowerManager;->WAKE_LOCK_LEVEL_MASK:I
-Landroid/os/PowerManagerInternal$LowPowerModeListener;
Landroid/os/PowerManagerInternal$LowPowerModeListener;->getServiceType()I
Landroid/os/PowerManagerInternal$LowPowerModeListener;->onLowPowerModeChanged(Landroid/os/PowerSaveState;)V
-Landroid/os/PowerManagerInternal;
Landroid/os/PowerManagerInternal;-><init>()V
Landroid/os/PowerManagerInternal;->finishUidChanges()V
Landroid/os/PowerManagerInternal;->getLowPowerState(I)Landroid/os/PowerSaveState;
@@ -55867,26 +52117,21 @@
Landroid/os/PowerManagerInternal;->WAKEFULNESS_AWAKE:I
Landroid/os/PowerManagerInternal;->WAKEFULNESS_DOZING:I
Landroid/os/PowerManagerInternal;->WAKEFULNESS_DREAMING:I
-Landroid/os/PowerManagerInternalProto;
Landroid/os/PowerManagerInternalProto;-><init>()V
Landroid/os/PowerManagerInternalProto;->WAKEFULNESS_ASLEEP:I
Landroid/os/PowerManagerInternalProto;->WAKEFULNESS_AWAKE:I
Landroid/os/PowerManagerInternalProto;->WAKEFULNESS_DOZING:I
Landroid/os/PowerManagerInternalProto;->WAKEFULNESS_DREAMING:I
-Landroid/os/PowerManagerProto$WakeLock;
-Landroid/os/PowerManagerProto$WakeLock;-><init>()V
Landroid/os/PowerManagerProto$WakeLock;->HELD:J
Landroid/os/PowerManagerProto$WakeLock;->INTERNAL_COUNT:J
Landroid/os/PowerManagerProto$WakeLock;->PACKAGE_NAME:J
Landroid/os/PowerManagerProto$WakeLock;->TAG:J
Landroid/os/PowerManagerProto$WakeLock;->WORK_SOURCE:J
-Landroid/os/PowerManagerProto;
Landroid/os/PowerManagerProto;-><init>()V
Landroid/os/PowerManagerProto;->USER_ACTIVITY_EVENT_ACCESSIBILITY:I
Landroid/os/PowerManagerProto;->USER_ACTIVITY_EVENT_BUTTON:I
Landroid/os/PowerManagerProto;->USER_ACTIVITY_EVENT_OTHER:I
Landroid/os/PowerManagerProto;->USER_ACTIVITY_EVENT_TOUCH:I
-Landroid/os/PowerSaveState$Builder;
Landroid/os/PowerSaveState$Builder;-><init>()V
Landroid/os/PowerSaveState$Builder;->build()Landroid/os/PowerSaveState;
Landroid/os/PowerSaveState$Builder;->mBatterySaverEnabled:Z
@@ -55897,7 +52142,6 @@
Landroid/os/PowerSaveState$Builder;->setBrightnessFactor(F)Landroid/os/PowerSaveState$Builder;
Landroid/os/PowerSaveState$Builder;->setGlobalBatterySaverEnabled(Z)Landroid/os/PowerSaveState$Builder;
Landroid/os/PowerSaveState$Builder;->setGpsMode(I)Landroid/os/PowerSaveState$Builder;
-Landroid/os/PowerSaveState;
Landroid/os/PowerSaveState;-><init>(Landroid/os/Parcel;)V
Landroid/os/PowerSaveState;-><init>(Landroid/os/PowerSaveState$Builder;)V
Landroid/os/PowerSaveState;->batterySaverEnabled:Z
@@ -55905,7 +52149,6 @@
Landroid/os/PowerSaveState;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/os/PowerSaveState;->globalBatterySaverEnabled:Z
Landroid/os/PowerSaveState;->gpsMode:I
-Landroid/os/Process$ProcessStartResult;
Landroid/os/Process$ProcessStartResult;-><init>()V
Landroid/os/Process$ProcessStartResult;->pid:I
Landroid/os/Process$ProcessStartResult;->usingWrapper:Z
@@ -55966,8 +52209,6 @@
Landroid/os/Process;->WEBVIEW_ZYGOTE_UID:I
Landroid/os/Process;->zygoteProcess:Landroid/os/ZygoteProcess;
Landroid/os/Process;->ZYGOTE_SOCKET:Ljava/lang/String;
-Landroid/os/ProcrankProto$Process;
-Landroid/os/ProcrankProto$Process;-><init>()V
Landroid/os/ProcrankProto$Process;->CMDLINE:J
Landroid/os/ProcrankProto$Process;->PID:J
Landroid/os/ProcrankProto$Process;->PSS:J
@@ -55978,23 +52219,14 @@
Landroid/os/ProcrankProto$Process;->USWAP:J
Landroid/os/ProcrankProto$Process;->VSS:J
Landroid/os/ProcrankProto$Process;->ZSWAP:J
-Landroid/os/ProcrankProto$Summary$Ram;
-Landroid/os/ProcrankProto$Summary$Ram;-><init>()V
Landroid/os/ProcrankProto$Summary$Ram;->RAW_TEXT:J
-Landroid/os/ProcrankProto$Summary$Zram;
-Landroid/os/ProcrankProto$Summary$Zram;-><init>()V
Landroid/os/ProcrankProto$Summary$Zram;->RAW_TEXT:J
-Landroid/os/ProcrankProto$Summary;
-Landroid/os/ProcrankProto$Summary;-><init>()V
Landroid/os/ProcrankProto$Summary;->RAM:J
Landroid/os/ProcrankProto$Summary;->TOTAL:J
Landroid/os/ProcrankProto$Summary;->ZRAM:J
-Landroid/os/ProcrankProto;
Landroid/os/ProcrankProto;-><init>()V
Landroid/os/ProcrankProto;->PROCESSES:J
Landroid/os/ProcrankProto;->SUMMARY:J
-Landroid/os/PsProto$Process;
-Landroid/os/PsProto$Process;-><init>()V
Landroid/os/PsProto$Process;->ADDR:J
Landroid/os/PsProto$Process;->CMD:J
Landroid/os/PsProto$Process;->LABEL:J
@@ -56031,13 +52263,11 @@
Landroid/os/PsProto$Process;->USER:J
Landroid/os/PsProto$Process;->VSZ:J
Landroid/os/PsProto$Process;->WCHAN:J
-Landroid/os/PsProto;
Landroid/os/PsProto;-><init>()V
Landroid/os/PsProto;->PROCESSES:J
Landroid/os/RecoverySystem;-><init>(Landroid/os/IRecoverySystem;)V
Landroid/os/RecoverySystem;->ACTION_EUICC_FACTORY_RESET:Ljava/lang/String;
Landroid/os/RecoverySystem;->BLOCK_MAP_FILE:Ljava/io/File;
-Landroid/os/RecoverySystem;->bootCommand(Landroid/content/Context;[[Ljava/lang/String;)V
Landroid/os/RecoverySystem;->clearBcb()Z
Landroid/os/RecoverySystem;->DEFAULT_EUICC_FACTORY_RESET_TIMEOUT_MILLIS:J
Landroid/os/RecoverySystem;->DEFAULT_KEYSTORE:Ljava/io/File;
@@ -56071,21 +52301,17 @@
Landroid/os/RecoverySystem;->UNCRYPT_PACKAGE_FILE:Ljava/io/File;
Landroid/os/RecoverySystem;->UNCRYPT_STATUS_FILE:Ljava/io/File;
Landroid/os/RecoverySystem;->wipeEuiccData(Landroid/content/Context;Ljava/lang/String;)Z
-Landroid/os/Registrant;
Landroid/os/Registrant;->internalNotifyRegistrant(Ljava/lang/Object;Ljava/lang/Throwable;)V
Landroid/os/Registrant;->notifyException(Ljava/lang/Throwable;)V
Landroid/os/Registrant;->refH:Ljava/lang/ref/WeakReference;
Landroid/os/Registrant;->userObj:Ljava/lang/Object;
Landroid/os/Registrant;->what:I
-Landroid/os/RegistrantList;
Landroid/os/RegistrantList;->internalNotifyRegistrants(Ljava/lang/Object;Ljava/lang/Throwable;)V
Landroid/os/RegistrantList;->notifyException(Ljava/lang/Throwable;)V
Landroid/os/RegistrantList;->registrants:Ljava/util/ArrayList;
Landroid/os/RemoteCallback;-><init>(Landroid/os/Parcel;)V
Landroid/os/RemoteCallback;->mCallback:Landroid/os/IRemoteCallback;
Landroid/os/RemoteCallback;->mListener:Landroid/os/RemoteCallback$OnResultListener;
-Landroid/os/RemoteCallbackList$Callback;
-Landroid/os/RemoteCallbackList$Callback;-><init>(Landroid/os/IInterface;Ljava/lang/Object;)V
Landroid/os/RemoteCallbackList$Callback;->mCallback:Landroid/os/IInterface;
Landroid/os/RemoteCallbackList$Callback;->mCookie:Ljava/lang/Object;
Landroid/os/RemoteCallbackList;->broadcast(Ljava/util/function/Consumer;)V
@@ -56099,21 +52325,15 @@
Landroid/os/RemoteCallbackList;->TAG:Ljava/lang/String;
Landroid/os/RemoteException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;ZZ)V
Landroid/os/RemoteException;->rethrowAsRuntimeException()Ljava/lang/RuntimeException;
-Landroid/os/RemoteMailException;
Landroid/os/RemoteMailException;-><init>()V
Landroid/os/RemoteMailException;-><init>(Ljava/lang/String;)V
-Landroid/os/ResultReceiver$MyResultReceiver;
-Landroid/os/ResultReceiver$MyResultReceiver;-><init>()V
Landroid/os/ResultReceiver$MyResultReceiver;->send(ILandroid/os/Bundle;)V
-Landroid/os/ResultReceiver$MyRunnable;
-Landroid/os/ResultReceiver$MyRunnable;-><init>(ILandroid/os/Bundle;)V
Landroid/os/ResultReceiver$MyRunnable;->mResultCode:I
Landroid/os/ResultReceiver$MyRunnable;->mResultData:Landroid/os/Bundle;
Landroid/os/ResultReceiver;-><init>(Landroid/os/Parcel;)V
Landroid/os/ResultReceiver;->mHandler:Landroid/os/Handler;
Landroid/os/ResultReceiver;->mLocal:Z
Landroid/os/ResultReceiver;->mReceiver:Lcom/android/internal/os/IResultReceiver;
-Landroid/os/RevocableFileDescriptor;
Landroid/os/RevocableFileDescriptor;-><init>()V
Landroid/os/RevocableFileDescriptor;-><init>(Landroid/content/Context;Ljava/io/File;)V
Landroid/os/RevocableFileDescriptor;-><init>(Landroid/content/Context;Ljava/io/FileDescriptor;)V
@@ -56127,7 +52347,6 @@
Landroid/os/RevocableFileDescriptor;->mRevoked:Z
Landroid/os/RevocableFileDescriptor;->revoke()V
Landroid/os/RevocableFileDescriptor;->TAG:Ljava/lang/String;
-Landroid/os/SELinux;
Landroid/os/SELinux;-><init>()V
Landroid/os/SELinux;->getPeerContext(Ljava/io/FileDescriptor;)Ljava/lang/String;
Landroid/os/SELinux;->native_restorecon(Ljava/lang/String;I)Z
@@ -56141,12 +52360,9 @@
Landroid/os/SELinux;->setFileContext(Ljava/lang/String;Ljava/lang/String;)Z
Landroid/os/SELinux;->setFSCreateContext(Ljava/lang/String;)Z
Landroid/os/SELinux;->TAG:Ljava/lang/String;
-Landroid/os/ServiceManager$ServiceNotFoundException;
Landroid/os/ServiceManager$ServiceNotFoundException;-><init>(Ljava/lang/String;)V
-Landroid/os/ServiceManager$Stats;
Landroid/os/ServiceManager$Stats;->COUNT:I
Landroid/os/ServiceManager$Stats;->GET_SERVICE:I
-Landroid/os/ServiceManager;
Landroid/os/ServiceManager;->getServiceOrThrow(Ljava/lang/String;)Landroid/os/IBinder;
Landroid/os/ServiceManager;->GET_SERVICE_LOG_EVERY_CALLS_CORE:I
Landroid/os/ServiceManager;->GET_SERVICE_LOG_EVERY_CALLS_NON_CORE:I
@@ -56164,21 +52380,16 @@
Landroid/os/ServiceManager;->sStatLogger:Lcom/android/internal/util/StatLogger;
Landroid/os/ServiceManager;->STATS_LOG_INTERVAL_MS:I
Landroid/os/ServiceManager;->TAG:Ljava/lang/String;
-Landroid/os/ServiceManagerNative;
Landroid/os/ServiceManagerNative;-><init>()V
-Landroid/os/ServiceSpecificException;
Landroid/os/ServiceSpecificException;-><init>(I)V
-Landroid/os/SharedMemory$Closer;
Landroid/os/SharedMemory$Closer;-><init>(Ljava/io/FileDescriptor;Landroid/os/SharedMemory$MemoryRegistration;)V
Landroid/os/SharedMemory$Closer;->mFd:Ljava/io/FileDescriptor;
Landroid/os/SharedMemory$Closer;->mMemoryReference:Landroid/os/SharedMemory$MemoryRegistration;
-Landroid/os/SharedMemory$MemoryRegistration;
Landroid/os/SharedMemory$MemoryRegistration;-><init>(I)V
Landroid/os/SharedMemory$MemoryRegistration;->acquire()Landroid/os/SharedMemory$MemoryRegistration;
Landroid/os/SharedMemory$MemoryRegistration;->mReferenceCount:I
Landroid/os/SharedMemory$MemoryRegistration;->mSize:I
Landroid/os/SharedMemory$MemoryRegistration;->release()V
-Landroid/os/SharedMemory$Unmapper;
Landroid/os/SharedMemory$Unmapper;-><init>(JILandroid/os/SharedMemory$MemoryRegistration;)V
Landroid/os/SharedMemory$Unmapper;->mAddress:J
Landroid/os/SharedMemory$Unmapper;->mMemoryReference:Landroid/os/SharedMemory$MemoryRegistration;
@@ -56195,10 +52406,7 @@
Landroid/os/SharedMemory;->nSetProt(Ljava/io/FileDescriptor;I)I
Landroid/os/SharedMemory;->PROT_MASK:I
Landroid/os/SharedMemory;->validateProt(I)V
-Landroid/os/ShellCallback$MyShellCallback;
-Landroid/os/ShellCallback$MyShellCallback;-><init>()V
Landroid/os/ShellCallback$MyShellCallback;->openFile(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;
-Landroid/os/ShellCallback;
Landroid/os/ShellCallback;-><init>()V
Landroid/os/ShellCallback;-><init>(Landroid/os/Parcel;)V
Landroid/os/ShellCallback;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -56209,7 +52417,6 @@
Landroid/os/ShellCallback;->openFile(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;
Landroid/os/ShellCallback;->TAG:Ljava/lang/String;
Landroid/os/ShellCallback;->writeToParcel(Landroid/os/ShellCallback;Landroid/os/Parcel;)V
-Landroid/os/ShellCommand;
Landroid/os/ShellCommand;-><init>()V
Landroid/os/ShellCommand;->adoptResultReceiver()Landroid/os/ResultReceiver;
Landroid/os/ShellCommand;->DEBUG:Z
@@ -56249,7 +52456,6 @@
Landroid/os/ShellCommand;->onHelp()V
Landroid/os/ShellCommand;->openFileForSystem(Ljava/lang/String;Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;
Landroid/os/ShellCommand;->TAG:Ljava/lang/String;
-Landroid/os/SimpleClock;
Landroid/os/SimpleClock;-><init>(Ljava/time/ZoneId;)V
Landroid/os/SimpleClock;->zone:Ljava/time/ZoneId;
Landroid/os/StatFs;->doStat(Ljava/lang/String;)Landroid/system/StructStatVfs;
@@ -56260,7 +52466,6 @@
Landroid/os/StatsDimensionsValue;->readValueFromParcel(ILandroid/os/Parcel;)Ljava/lang/Object;
Landroid/os/StatsDimensionsValue;->TAG:Ljava/lang/String;
Landroid/os/StatsDimensionsValue;->writeValueToParcel(ILjava/lang/Object;Landroid/os/Parcel;I)Z
-Landroid/os/StatsLogEventWrapper;
Landroid/os/StatsLogEventWrapper;-><init>(JII)V
Landroid/os/StatsLogEventWrapper;-><init>(Landroid/os/Parcel;)V
Landroid/os/StatsLogEventWrapper;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -56278,7 +52483,6 @@
Landroid/os/StatsLogEventWrapper;->writeInt(I)V
Landroid/os/StatsLogEventWrapper;->writeLong(J)V
Landroid/os/StatsLogEventWrapper;->writeString(Ljava/lang/String;)V
-Landroid/os/storage/DiskInfo;
Landroid/os/storage/DiskInfo;-><init>(Ljava/lang/String;I)V
Landroid/os/storage/DiskInfo;->ACTION_DISK_SCANNED:Ljava/lang/String;
Landroid/os/storage/DiskInfo;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V
@@ -56293,17 +52497,13 @@
Landroid/os/storage/DiskInfo;->isInteresting(Ljava/lang/String;)Z
Landroid/os/storage/DiskInfo;->sysPath:Ljava/lang/String;
Landroid/os/storage/DiskInfo;->volumeCount:I
-Landroid/os/storage/IObbActionListener$Stub$Proxy;
Landroid/os/storage/IObbActionListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/os/storage/IObbActionListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/os/storage/IObbActionListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/os/storage/IObbActionListener$Stub$Proxy;->onObbResult(Ljava/lang/String;II)V
-Landroid/os/storage/IObbActionListener$Stub;
Landroid/os/storage/IObbActionListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/os/storage/IObbActionListener$Stub;->TRANSACTION_onObbResult:I
-Landroid/os/storage/IObbActionListener;
Landroid/os/storage/IObbActionListener;->onObbResult(Ljava/lang/String;II)V
-Landroid/os/storage/IStorageEventListener$Stub$Proxy;
Landroid/os/storage/IStorageEventListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/os/storage/IStorageEventListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/os/storage/IStorageEventListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -56314,7 +52514,6 @@
Landroid/os/storage/IStorageEventListener$Stub$Proxy;->onVolumeForgotten(Ljava/lang/String;)V
Landroid/os/storage/IStorageEventListener$Stub$Proxy;->onVolumeRecordChanged(Landroid/os/storage/VolumeRecord;)V
Landroid/os/storage/IStorageEventListener$Stub$Proxy;->onVolumeStateChanged(Landroid/os/storage/VolumeInfo;II)V
-Landroid/os/storage/IStorageEventListener$Stub;
Landroid/os/storage/IStorageEventListener$Stub;-><init>()V
Landroid/os/storage/IStorageEventListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/storage/IStorageEventListener;
Landroid/os/storage/IStorageEventListener$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -56325,7 +52524,6 @@
Landroid/os/storage/IStorageEventListener$Stub;->TRANSACTION_onVolumeForgotten:I
Landroid/os/storage/IStorageEventListener$Stub;->TRANSACTION_onVolumeRecordChanged:I
Landroid/os/storage/IStorageEventListener$Stub;->TRANSACTION_onVolumeStateChanged:I
-Landroid/os/storage/IStorageEventListener;
Landroid/os/storage/IStorageEventListener;->onDiskDestroyed(Landroid/os/storage/DiskInfo;)V
Landroid/os/storage/IStorageEventListener;->onDiskScanned(Landroid/os/storage/DiskInfo;I)V
Landroid/os/storage/IStorageEventListener;->onStorageStateChanged(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
@@ -56333,7 +52531,6 @@
Landroid/os/storage/IStorageEventListener;->onVolumeForgotten(Ljava/lang/String;)V
Landroid/os/storage/IStorageEventListener;->onVolumeRecordChanged(Landroid/os/storage/VolumeRecord;)V
Landroid/os/storage/IStorageEventListener;->onVolumeStateChanged(Landroid/os/storage/VolumeInfo;II)V
-Landroid/os/storage/IStorageManager$Stub$Proxy;
Landroid/os/storage/IStorageManager$Stub$Proxy;->abortIdleMaintenance()V
Landroid/os/storage/IStorageManager$Stub$Proxy;->addUserKeyAuth(II[B[B)V
Landroid/os/storage/IStorageManager$Stub$Proxy;->allocateBytes(Ljava/lang/String;JILjava/lang/String;)V
@@ -56393,7 +52590,6 @@
Landroid/os/storage/IStorageManager$Stub$Proxy;->unmountObb(Ljava/lang/String;ZLandroid/os/storage/IObbActionListener;I)V
Landroid/os/storage/IStorageManager$Stub$Proxy;->unregisterListener(Landroid/os/storage/IStorageEventListener;)V
Landroid/os/storage/IStorageManager$Stub$Proxy;->verifyEncryptionPassword(Ljava/lang/String;)I
-Landroid/os/storage/IStorageManager$Stub;
Landroid/os/storage/IStorageManager$Stub;-><init>()V
Landroid/os/storage/IStorageManager$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/os/storage/IStorageManager$Stub;->TRANSACTION_abortIdleMaintenance:I
@@ -56453,7 +52649,6 @@
Landroid/os/storage/IStorageManager$Stub;->TRANSACTION_unmountObb:I
Landroid/os/storage/IStorageManager$Stub;->TRANSACTION_unregisterListener:I
Landroid/os/storage/IStorageManager$Stub;->TRANSACTION_verifyEncryptionPassword:I
-Landroid/os/storage/IStorageManager;
Landroid/os/storage/IStorageManager;->abortIdleMaintenance()V
Landroid/os/storage/IStorageManager;->addUserKeyAuth(II[B[B)V
Landroid/os/storage/IStorageManager;->allocateBytes(Ljava/lang/String;JILjava/lang/String;)V
@@ -56511,33 +52706,23 @@
Landroid/os/storage/IStorageManager;->unmountObb(Ljava/lang/String;ZLandroid/os/storage/IObbActionListener;I)V
Landroid/os/storage/IStorageManager;->unregisterListener(Landroid/os/storage/IStorageEventListener;)V
Landroid/os/storage/IStorageManager;->verifyEncryptionPassword(Ljava/lang/String;)I
-Landroid/os/storage/IStorageShutdownObserver$Stub$Proxy;
Landroid/os/storage/IStorageShutdownObserver$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/os/storage/IStorageShutdownObserver$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/os/storage/IStorageShutdownObserver$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/os/storage/IStorageShutdownObserver$Stub$Proxy;->onShutDownComplete(I)V
-Landroid/os/storage/IStorageShutdownObserver$Stub;
Landroid/os/storage/IStorageShutdownObserver$Stub;-><init>()V
Landroid/os/storage/IStorageShutdownObserver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/storage/IStorageShutdownObserver;
Landroid/os/storage/IStorageShutdownObserver$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/os/storage/IStorageShutdownObserver$Stub;->TRANSACTION_onShutDownComplete:I
-Landroid/os/storage/IStorageShutdownObserver;
Landroid/os/storage/IStorageShutdownObserver;->onShutDownComplete(I)V
-Landroid/os/storage/StorageEventListener;
-Landroid/os/storage/StorageManager$AllocateFlags;
-Landroid/os/storage/StorageManager$ObbActionListener;
-Landroid/os/storage/StorageManager$ObbActionListener;-><init>()V
Landroid/os/storage/StorageManager$ObbActionListener;->addListener(Landroid/os/storage/OnObbStateChangeListener;)I
Landroid/os/storage/StorageManager$ObbActionListener;->mListeners:Landroid/util/SparseArray;
Landroid/os/storage/StorageManager$ObbActionListener;->onObbResult(Ljava/lang/String;II)V
-Landroid/os/storage/StorageManager$ObbListenerDelegate;
-Landroid/os/storage/StorageManager$ObbListenerDelegate;-><init>(Landroid/os/storage/OnObbStateChangeListener;)V
Landroid/os/storage/StorageManager$ObbListenerDelegate;->getListener()Landroid/os/storage/OnObbStateChangeListener;
Landroid/os/storage/StorageManager$ObbListenerDelegate;->mHandler:Landroid/os/Handler;
Landroid/os/storage/StorageManager$ObbListenerDelegate;->mObbEventListenerRef:Ljava/lang/ref/WeakReference;
Landroid/os/storage/StorageManager$ObbListenerDelegate;->nonce:I
Landroid/os/storage/StorageManager$ObbListenerDelegate;->sendObbStateChanged(Ljava/lang/String;I)V
-Landroid/os/storage/StorageManager$StorageEventListenerDelegate;
Landroid/os/storage/StorageManager$StorageEventListenerDelegate;-><init>(Landroid/os/storage/StorageEventListener;Landroid/os/Looper;)V
Landroid/os/storage/StorageManager$StorageEventListenerDelegate;->mCallback:Landroid/os/storage/StorageEventListener;
Landroid/os/storage/StorageManager$StorageEventListenerDelegate;->mHandler:Landroid/os/Handler;
@@ -56658,15 +52843,12 @@
Landroid/os/storage/StorageManager;->wipeAdoptableDisks()V
Landroid/os/storage/StorageManager;->XATTR_CACHE_GROUP:Ljava/lang/String;
Landroid/os/storage/StorageManager;->XATTR_CACHE_TOMBSTONE:Ljava/lang/String;
-Landroid/os/storage/StorageManagerInternal$ExternalStorageMountPolicy;
Landroid/os/storage/StorageManagerInternal$ExternalStorageMountPolicy;->getMountMode(ILjava/lang/String;)I
Landroid/os/storage/StorageManagerInternal$ExternalStorageMountPolicy;->hasExternalStorage(ILjava/lang/String;)Z
-Landroid/os/storage/StorageManagerInternal;
Landroid/os/storage/StorageManagerInternal;-><init>()V
Landroid/os/storage/StorageManagerInternal;->addExternalStoragePolicy(Landroid/os/storage/StorageManagerInternal$ExternalStorageMountPolicy;)V
Landroid/os/storage/StorageManagerInternal;->getExternalStorageMountMode(ILjava/lang/String;)I
Landroid/os/storage/StorageManagerInternal;->onExternalStoragePolicyChanged(ILjava/lang/String;)V
-Landroid/os/storage/StorageVolume$ScopedAccessProviderContract;
Landroid/os/storage/StorageVolume$ScopedAccessProviderContract;-><init>()V
Landroid/os/storage/StorageVolume$ScopedAccessProviderContract;->AUTHORITY:Ljava/lang/String;
Landroid/os/storage/StorageVolume$ScopedAccessProviderContract;->COL_DIRECTORY:Ljava/lang/String;
@@ -56698,7 +52880,6 @@
Landroid/os/storage/StorageVolume;->mState:Ljava/lang/String;
Landroid/os/storage/StorageVolume;->STORAGE_ID_INVALID:I
Landroid/os/storage/StorageVolume;->STORAGE_ID_PRIMARY:I
-Landroid/os/storage/VolumeInfo;
Landroid/os/storage/VolumeInfo;-><init>(Ljava/lang/String;ILandroid/os/storage/DiskInfo;Ljava/lang/String;)V
Landroid/os/storage/VolumeInfo;->ACTION_VOLUME_STATE_CHANGED:Ljava/lang/String;
Landroid/os/storage/VolumeInfo;->buildBrowseIntentForUser(I)Landroid/content/Intent;
@@ -56738,7 +52919,6 @@
Landroid/os/storage/VolumeInfo;->TYPE_ASEC:I
Landroid/os/storage/VolumeInfo;->TYPE_OBB:I
Landroid/os/storage/VolumeInfo;->TYPE_PRIVATE:I
-Landroid/os/storage/VolumeRecord;
Landroid/os/storage/VolumeRecord;-><init>(ILjava/lang/String;)V
Landroid/os/storage/VolumeRecord;->createdMillis:J
Landroid/os/storage/VolumeRecord;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V
@@ -56757,7 +52937,6 @@
Landroid/os/storage/VolumeRecord;->userFlags:I
Landroid/os/storage/VolumeRecord;->USER_FLAG_INITED:I
Landroid/os/storage/VolumeRecord;->USER_FLAG_SNOOZED:I
-Landroid/os/StrictMode$AndroidBlockGuardPolicy;
Landroid/os/StrictMode$AndroidBlockGuardPolicy;-><init>(I)V
Landroid/os/StrictMode$AndroidBlockGuardPolicy;->getPolicyMask()I
Landroid/os/StrictMode$AndroidBlockGuardPolicy;->handleViolationWithTimingAttempt(Landroid/os/StrictMode$ViolationInfo;)V
@@ -56772,15 +52951,12 @@
Landroid/os/StrictMode$AndroidBlockGuardPolicy;->onWriteToDisk()V
Landroid/os/StrictMode$AndroidBlockGuardPolicy;->setPolicyMask(I)V
Landroid/os/StrictMode$AndroidBlockGuardPolicy;->startHandlingViolationException(Landroid/os/strictmode/Violation;)V
-Landroid/os/StrictMode$AndroidCloseGuardReporter;
Landroid/os/StrictMode$AndroidCloseGuardReporter;-><init>()V
Landroid/os/StrictMode$AndroidCloseGuardReporter;->report(Ljava/lang/String;Ljava/lang/Throwable;)V
-Landroid/os/StrictMode$InstanceTracker;
Landroid/os/StrictMode$InstanceTracker;-><init>(Ljava/lang/Object;)V
Landroid/os/StrictMode$InstanceTracker;->getInstanceCount(Ljava/lang/Class;)I
Landroid/os/StrictMode$InstanceTracker;->mKlass:Ljava/lang/Class;
Landroid/os/StrictMode$InstanceTracker;->sInstanceCounts:Ljava/util/HashMap;
-Landroid/os/StrictMode$Span;
Landroid/os/StrictMode$Span;-><init>()V
Landroid/os/StrictMode$Span;-><init>(Landroid/os/StrictMode$ThreadSpanState;)V
Landroid/os/StrictMode$Span;->mContainerState:Landroid/os/StrictMode$ThreadSpanState;
@@ -56796,7 +52972,6 @@
Landroid/os/StrictMode$ThreadPolicy;-><init>(ILandroid/os/StrictMode$OnThreadViolationListener;Ljava/util/concurrent/Executor;)V
Landroid/os/StrictMode$ThreadPolicy;->mCallbackExecutor:Ljava/util/concurrent/Executor;
Landroid/os/StrictMode$ThreadPolicy;->mListener:Landroid/os/StrictMode$OnThreadViolationListener;
-Landroid/os/StrictMode$ThreadSpanState;
Landroid/os/StrictMode$ThreadSpanState;-><init>()V
Landroid/os/StrictMode$ThreadSpanState;->mActiveHead:Landroid/os/StrictMode$Span;
Landroid/os/StrictMode$ThreadSpanState;->mActiveSize:I
@@ -56928,11 +53103,9 @@
Landroid/os/StrictMode;->vmUntaggedSocketEnabled()Z
Landroid/os/StrictMode;->VM_PENALTY_MASK:I
Landroid/os/StrictMode;->writeGatheredViolationsToParcel(Landroid/os/Parcel;)V
-Landroid/os/SynchronousResultReceiver$Result;
Landroid/os/SynchronousResultReceiver$Result;-><init>(ILandroid/os/Bundle;)V
Landroid/os/SynchronousResultReceiver$Result;->bundle:Landroid/os/Bundle;
Landroid/os/SynchronousResultReceiver$Result;->resultCode:I
-Landroid/os/SynchronousResultReceiver;
Landroid/os/SynchronousResultReceiver;-><init>()V
Landroid/os/SynchronousResultReceiver;-><init>(Ljava/lang/String;)V
Landroid/os/SynchronousResultReceiver;->awaitResult(J)Landroid/os/SynchronousResultReceiver$Result;
@@ -56949,27 +53122,19 @@
Landroid/os/SystemProperties;->sRoReads:Ljava/util/HashMap;
Landroid/os/SystemProperties;->TAG:Ljava/lang/String;
Landroid/os/SystemProperties;->TRACK_KEY_ACCESS:Z
-Landroid/os/SystemPropertiesProto$AacDrc;
-Landroid/os/SystemPropertiesProto$AacDrc;-><init>()V
Landroid/os/SystemPropertiesProto$AacDrc;->BOOST:J
Landroid/os/SystemPropertiesProto$AacDrc;->CUT:J
Landroid/os/SystemPropertiesProto$AacDrc;->ENC_TARGET_LEVEL:J
Landroid/os/SystemPropertiesProto$AacDrc;->HEAVY:J
Landroid/os/SystemPropertiesProto$AacDrc;->REFERENCE_LEVEL:J
-Landroid/os/SystemPropertiesProto$Aaudio;
-Landroid/os/SystemPropertiesProto$Aaudio;-><init>()V
Landroid/os/SystemPropertiesProto$Aaudio;->HW_BURST_MIN_USEC:J
Landroid/os/SystemPropertiesProto$Aaudio;->MINIMUM_SLEEP_USEC:J
Landroid/os/SystemPropertiesProto$Aaudio;->MIXER_BURSTS:J
Landroid/os/SystemPropertiesProto$Aaudio;->MMAP_EXCLUSIVE_POLICY:J
Landroid/os/SystemPropertiesProto$Aaudio;->MMAP_POLICY:J
Landroid/os/SystemPropertiesProto$Aaudio;->WAKEUP_DELAY_USEC:J
-Landroid/os/SystemPropertiesProto$Camera;
-Landroid/os/SystemPropertiesProto$Camera;-><init>()V
Landroid/os/SystemPropertiesProto$Camera;->DISABLE_ZSL_MODE:J
Landroid/os/SystemPropertiesProto$Camera;->FIFO_DISABLE:J
-Landroid/os/SystemPropertiesProto$DalvikVm;
-Landroid/os/SystemPropertiesProto$DalvikVm;-><init>()V
Landroid/os/SystemPropertiesProto$DalvikVm;->APPIMAGEFORMAT:J
Landroid/os/SystemPropertiesProto$DalvikVm;->BACKGROUNDGCTYPE:J
Landroid/os/SystemPropertiesProto$DalvikVm;->CHECKJNI:J
@@ -57024,8 +53189,6 @@
Landroid/os/SystemPropertiesProto$DalvikVm;->USEJIT:J
Landroid/os/SystemPropertiesProto$DalvikVm;->USEJITPROFILES:J
Landroid/os/SystemPropertiesProto$DalvikVm;->ZYGOTE_MAX_BOOT_RETRY:J
-Landroid/os/SystemPropertiesProto$InitSvc;
-Landroid/os/SystemPropertiesProto$InitSvc;-><init>()V
Landroid/os/SystemPropertiesProto$InitSvc;->ADBD:J
Landroid/os/SystemPropertiesProto$InitSvc;->AUDIOSERVER:J
Landroid/os/SystemPropertiesProto$InitSvc;->BOOTANIM:J
@@ -57070,12 +53233,8 @@
Landroid/os/SystemPropertiesProto$InitSvc;->WPA_SUPPLICANT:J
Landroid/os/SystemPropertiesProto$InitSvc;->ZYGOTE:J
Landroid/os/SystemPropertiesProto$InitSvc;->ZYGOTE_SECONDARY:J
-Landroid/os/SystemPropertiesProto$Log;
-Landroid/os/SystemPropertiesProto$Log;-><init>()V
Landroid/os/SystemPropertiesProto$Log;->TAG_STATS_LOG:J
Landroid/os/SystemPropertiesProto$Log;->TAG_WIFI_HAL:J
-Landroid/os/SystemPropertiesProto$Persist;
-Landroid/os/SystemPropertiesProto$Persist;-><init>()V
Landroid/os/SystemPropertiesProto$Persist;->CONFIG_CALIBRATION_FAC:J
Landroid/os/SystemPropertiesProto$Persist;->DBG_VOLTE_AVAIL_OVR:J
Landroid/os/SystemPropertiesProto$Persist;->DBG_VT_AVAIL_OVR:J
@@ -57087,19 +53246,13 @@
Landroid/os/SystemPropertiesProto$Persist;->SYS_DALVIK_VM_LIB_2:J
Landroid/os/SystemPropertiesProto$Persist;->SYS_SF_COLOR_SATURATION:J
Landroid/os/SystemPropertiesProto$Persist;->SYS_TIMEZONE:J
-Landroid/os/SystemPropertiesProto$PmDexopt;
-Landroid/os/SystemPropertiesProto$PmDexopt;-><init>()V
Landroid/os/SystemPropertiesProto$PmDexopt;->AB_OTA:J
Landroid/os/SystemPropertiesProto$PmDexopt;->BG_DEXOPT:J
Landroid/os/SystemPropertiesProto$PmDexopt;->BOOT:J
Landroid/os/SystemPropertiesProto$PmDexopt;->FIRST_BOOT:J
Landroid/os/SystemPropertiesProto$PmDexopt;->INSTALL:J
-Landroid/os/SystemPropertiesProto$Property;
-Landroid/os/SystemPropertiesProto$Property;-><init>()V
Landroid/os/SystemPropertiesProto$Property;->NAME:J
Landroid/os/SystemPropertiesProto$Property;->VALUE:J
-Landroid/os/SystemPropertiesProto$Ro$Boot;
-Landroid/os/SystemPropertiesProto$Ro$Boot;-><init>()V
Landroid/os/SystemPropertiesProto$Ro$Boot;->AVB_VERSION:J
Landroid/os/SystemPropertiesProto$Ro$Boot;->BASEBAND:J
Landroid/os/SystemPropertiesProto$Ro$Boot;->BOOTDEVICE:J
@@ -57120,13 +53273,9 @@
Landroid/os/SystemPropertiesProto$Ro$Boot;->VERIFIEDBOOTSTATE:J
Landroid/os/SystemPropertiesProto$Ro$Boot;->VERITYMODE:J
Landroid/os/SystemPropertiesProto$Ro$Boot;->WIFICOUNTRYCODE:J
-Landroid/os/SystemPropertiesProto$Ro$BootImage;
-Landroid/os/SystemPropertiesProto$Ro$BootImage;-><init>()V
Landroid/os/SystemPropertiesProto$Ro$BootImage;->BUILD_DATE:J
Landroid/os/SystemPropertiesProto$Ro$BootImage;->BUILD_DATE_UTC:J
Landroid/os/SystemPropertiesProto$Ro$BootImage;->BUILD_FINGERPRINT:J
-Landroid/os/SystemPropertiesProto$Ro$Build$Version;
-Landroid/os/SystemPropertiesProto$Ro$Build$Version;-><init>()V
Landroid/os/SystemPropertiesProto$Ro$Build$Version;->BASE_OS:J
Landroid/os/SystemPropertiesProto$Ro$Build$Version;->CODENAME:J
Landroid/os/SystemPropertiesProto$Ro$Build$Version;->INCREMENTAL:J
@@ -57134,8 +53283,6 @@
Landroid/os/SystemPropertiesProto$Ro$Build$Version;->RELEASE:J
Landroid/os/SystemPropertiesProto$Ro$Build$Version;->SDK:J
Landroid/os/SystemPropertiesProto$Ro$Build$Version;->SECURITY_PATCH:J
-Landroid/os/SystemPropertiesProto$Ro$Build;
-Landroid/os/SystemPropertiesProto$Ro$Build;-><init>()V
Landroid/os/SystemPropertiesProto$Ro$Build;->DATE:J
Landroid/os/SystemPropertiesProto$Ro$Build;->DATE_UTC:J
Landroid/os/SystemPropertiesProto$Ro$Build;->DESCRIPTION:J
@@ -57148,15 +53295,11 @@
Landroid/os/SystemPropertiesProto$Ro$Build;->TYPE:J
Landroid/os/SystemPropertiesProto$Ro$Build;->USER:J
Landroid/os/SystemPropertiesProto$Ro$Build;->VERSION:J
-Landroid/os/SystemPropertiesProto$Ro$Config;
-Landroid/os/SystemPropertiesProto$Ro$Config;-><init>()V
Landroid/os/SystemPropertiesProto$Ro$Config;->ALARM_ALERT:J
Landroid/os/SystemPropertiesProto$Ro$Config;->MEDIA_VOL_STEPS:J
Landroid/os/SystemPropertiesProto$Ro$Config;->NOTIFICATION_SOUND:J
Landroid/os/SystemPropertiesProto$Ro$Config;->RINGTONE:J
Landroid/os/SystemPropertiesProto$Ro$Config;->VC_CALL_VOL_STEPS:J
-Landroid/os/SystemPropertiesProto$Ro$Hardware;
-Landroid/os/SystemPropertiesProto$Ro$Hardware;-><init>()V
Landroid/os/SystemPropertiesProto$Ro$Hardware;->ACTIVITY_RECOGNITION:J
Landroid/os/SystemPropertiesProto$Ro$Hardware;->AUDIO:J
Landroid/os/SystemPropertiesProto$Ro$Hardware;->AUDIO_A2DP:J
@@ -57196,15 +53339,11 @@
Landroid/os/SystemPropertiesProto$Ro$Hardware;->VIBRATOR:J
Landroid/os/SystemPropertiesProto$Ro$Hardware;->VIRTUAL_DEVICE:J
Landroid/os/SystemPropertiesProto$Ro$Hardware;->VULKAN:J
-Landroid/os/SystemPropertiesProto$Ro$Product$Vendor;
-Landroid/os/SystemPropertiesProto$Ro$Product$Vendor;-><init>()V
Landroid/os/SystemPropertiesProto$Ro$Product$Vendor;->BRAND:J
Landroid/os/SystemPropertiesProto$Ro$Product$Vendor;->DEVICE:J
Landroid/os/SystemPropertiesProto$Ro$Product$Vendor;->MANUFACTURER:J
Landroid/os/SystemPropertiesProto$Ro$Product$Vendor;->MODEL:J
Landroid/os/SystemPropertiesProto$Ro$Product$Vendor;->NAME:J
-Landroid/os/SystemPropertiesProto$Ro$Product;
-Landroid/os/SystemPropertiesProto$Ro$Product;-><init>()V
Landroid/os/SystemPropertiesProto$Ro$Product;->BOARD:J
Landroid/os/SystemPropertiesProto$Ro$Product;->BRAND:J
Landroid/os/SystemPropertiesProto$Ro$Product;->CPU_ABI:J
@@ -57217,18 +53356,12 @@
Landroid/os/SystemPropertiesProto$Ro$Product;->MODEL:J
Landroid/os/SystemPropertiesProto$Ro$Product;->NAME:J
Landroid/os/SystemPropertiesProto$Ro$Product;->VENDOR:J
-Landroid/os/SystemPropertiesProto$Ro$Telephony;
-Landroid/os/SystemPropertiesProto$Ro$Telephony;-><init>()V
Landroid/os/SystemPropertiesProto$Ro$Telephony;->CALL_RING_MULTIPLE:J
Landroid/os/SystemPropertiesProto$Ro$Telephony;->DEFAULT_CDMA_SUB:J
Landroid/os/SystemPropertiesProto$Ro$Telephony;->DEFAULT_NETWORK:J
-Landroid/os/SystemPropertiesProto$Ro$Vendor;
-Landroid/os/SystemPropertiesProto$Ro$Vendor;-><init>()V
Landroid/os/SystemPropertiesProto$Ro$Vendor;->BUILD_DATE:J
Landroid/os/SystemPropertiesProto$Ro$Vendor;->BUILD_DATE_UTC:J
Landroid/os/SystemPropertiesProto$Ro$Vendor;->BUILD_FINGERPRINT:J
-Landroid/os/SystemPropertiesProto$Ro;
-Landroid/os/SystemPropertiesProto$Ro;-><init>()V
Landroid/os/SystemPropertiesProto$Ro;->ADB_SECURE:J
Landroid/os/SystemPropertiesProto$Ro;->ARCH:J
Landroid/os/SystemPropertiesProto$Ro;->AUDIO_IGNORE_EFFECTS:J
@@ -57273,8 +53406,6 @@
Landroid/os/SystemPropertiesProto$Ro;->VNDK_VERSION:J
Landroid/os/SystemPropertiesProto$Ro;->VTS_COVERAGE:J
Landroid/os/SystemPropertiesProto$Ro;->ZYGOTE:J
-Landroid/os/SystemPropertiesProto$Sys$Usb;
-Landroid/os/SystemPropertiesProto$Sys$Usb;-><init>()V
Landroid/os/SystemPropertiesProto$Sys$Usb;->CONFIG:J
Landroid/os/SystemPropertiesProto$Sys$Usb;->CONFIGFS:J
Landroid/os/SystemPropertiesProto$Sys$Usb;->CONTROLLER:J
@@ -57284,14 +53415,11 @@
Landroid/os/SystemPropertiesProto$Sys$Usb;->FFS_READY:J
Landroid/os/SystemPropertiesProto$Sys$Usb;->MTP_DEVICE_TYPE:J
Landroid/os/SystemPropertiesProto$Sys$Usb;->STATE:J
-Landroid/os/SystemPropertiesProto$Sys;
-Landroid/os/SystemPropertiesProto$Sys;-><init>()V
Landroid/os/SystemPropertiesProto$Sys;->BOOT_COMPLETED:J
Landroid/os/SystemPropertiesProto$Sys;->BOOT_FROM_CHARGER_MODE:J
Landroid/os/SystemPropertiesProto$Sys;->RETAILDEMO_ENABLED:J
Landroid/os/SystemPropertiesProto$Sys;->SHUTDOWN_REQUESTED:J
Landroid/os/SystemPropertiesProto$Sys;->USB:J
-Landroid/os/SystemPropertiesProto;
Landroid/os/SystemPropertiesProto;-><init>()V
Landroid/os/SystemPropertiesProto;->AAC_DRC:J
Landroid/os/SystemPropertiesProto;->AAUDIO:J
@@ -57324,8 +53452,6 @@
Landroid/os/SystemPropertiesProto;->VTS_NATIVE_SERVER_ON:J
Landroid/os/SystemPropertiesProto;->WIFI_DIRECT_INTERFACE:J
Landroid/os/SystemPropertiesProto;->WIFI_INTERFACE:J
-Landroid/os/SystemProto$Battery;
-Landroid/os/SystemProto$Battery;-><init>()V
Landroid/os/SystemProto$Battery;->BATTERY_REALTIME_MS:J
Landroid/os/SystemProto$Battery;->BATTERY_UPTIME_MS:J
Landroid/os/SystemProto$Battery;->ESTIMATED_BATTERY_CAPACITY_MAH:J
@@ -57338,8 +53464,6 @@
Landroid/os/SystemProto$Battery;->START_COUNT:J
Landroid/os/SystemProto$Battery;->TOTAL_REALTIME_MS:J
Landroid/os/SystemProto$Battery;->TOTAL_UPTIME_MS:J
-Landroid/os/SystemProto$BatteryDischarge;
-Landroid/os/SystemProto$BatteryDischarge;-><init>()V
Landroid/os/SystemProto$BatteryDischarge;->LOWER_BOUND_SINCE_CHARGE:J
Landroid/os/SystemProto$BatteryDischarge;->SCREEN_DOZE_SINCE_CHARGE:J
Landroid/os/SystemProto$BatteryDischarge;->SCREEN_OFF_SINCE_CHARGE:J
@@ -57350,8 +53474,6 @@
Landroid/os/SystemProto$BatteryDischarge;->TOTAL_MAH_SCREEN_DOZE:J
Landroid/os/SystemProto$BatteryDischarge;->TOTAL_MAH_SCREEN_OFF:J
Landroid/os/SystemProto$BatteryDischarge;->UPPER_BOUND_SINCE_CHARGE:J
-Landroid/os/SystemProto$BatteryLevelStep;
-Landroid/os/SystemProto$BatteryLevelStep;-><init>()V
Landroid/os/SystemProto$BatteryLevelStep;->DISPLAY_STATE:J
Landroid/os/SystemProto$BatteryLevelStep;->DS_DOZE:I
Landroid/os/SystemProto$BatteryLevelStep;->DS_DOZE_SUSPEND:I
@@ -57369,13 +53491,9 @@
Landroid/os/SystemProto$BatteryLevelStep;->PSM_MIXED:I
Landroid/os/SystemProto$BatteryLevelStep;->PSM_OFF:I
Landroid/os/SystemProto$BatteryLevelStep;->PSM_ON:I
-Landroid/os/SystemProto$DataConnection;
-Landroid/os/SystemProto$DataConnection;-><init>()V
Landroid/os/SystemProto$DataConnection;->IS_NONE:J
Landroid/os/SystemProto$DataConnection;->NAME:J
Landroid/os/SystemProto$DataConnection;->TOTAL:J
-Landroid/os/SystemProto$GlobalNetwork;
-Landroid/os/SystemProto$GlobalNetwork;-><init>()V
Landroid/os/SystemProto$GlobalNetwork;->BT_BYTES_RX:J
Landroid/os/SystemProto$GlobalNetwork;->BT_BYTES_TX:J
Landroid/os/SystemProto$GlobalNetwork;->MOBILE_BYTES_RX:J
@@ -57386,16 +53504,10 @@
Landroid/os/SystemProto$GlobalNetwork;->WIFI_BYTES_TX:J
Landroid/os/SystemProto$GlobalNetwork;->WIFI_PACKETS_RX:J
Landroid/os/SystemProto$GlobalNetwork;->WIFI_PACKETS_TX:J
-Landroid/os/SystemProto$GlobalWifi;
-Landroid/os/SystemProto$GlobalWifi;-><init>()V
Landroid/os/SystemProto$GlobalWifi;->ON_DURATION_MS:J
Landroid/os/SystemProto$GlobalWifi;->RUNNING_DURATION_MS:J
-Landroid/os/SystemProto$KernelWakelock;
-Landroid/os/SystemProto$KernelWakelock;-><init>()V
Landroid/os/SystemProto$KernelWakelock;->NAME:J
Landroid/os/SystemProto$KernelWakelock;->TOTAL:J
-Landroid/os/SystemProto$Misc;
-Landroid/os/SystemProto$Misc;-><init>()V
Landroid/os/SystemProto$Misc;->BATTERY_SAVER_MODE_ENABLED_DURATION_MS:J
Landroid/os/SystemProto$Misc;->DEEP_DOZE_COUNT:J
Landroid/os/SystemProto$Misc;->DEEP_DOZE_ENABLED_DURATION_MS:J
@@ -57417,12 +53529,8 @@
Landroid/os/SystemProto$Misc;->PARTIAL_WAKELOCK_TOTAL_DURATION_MS:J
Landroid/os/SystemProto$Misc;->PHONE_ON_DURATION_MS:J
Landroid/os/SystemProto$Misc;->SCREEN_ON_DURATION_MS:J
-Landroid/os/SystemProto$PhoneSignalStrength;
-Landroid/os/SystemProto$PhoneSignalStrength;-><init>()V
Landroid/os/SystemProto$PhoneSignalStrength;->NAME:J
Landroid/os/SystemProto$PhoneSignalStrength;->TOTAL:J
-Landroid/os/SystemProto$PowerUseItem;
-Landroid/os/SystemProto$PowerUseItem;-><init>()V
Landroid/os/SystemProto$PowerUseItem;->AMBIENT_DISPLAY:I
Landroid/os/SystemProto$PowerUseItem;->BLUETOOTH:I
Landroid/os/SystemProto$PowerUseItem;->CAMERA:I
@@ -57443,19 +53551,13 @@
Landroid/os/SystemProto$PowerUseItem;->UNKNOWN_SIPPER:I
Landroid/os/SystemProto$PowerUseItem;->USER:I
Landroid/os/SystemProto$PowerUseItem;->WIFI:I
-Landroid/os/SystemProto$PowerUseSummary;
-Landroid/os/SystemProto$PowerUseSummary;-><init>()V
Landroid/os/SystemProto$PowerUseSummary;->BATTERY_CAPACITY_MAH:J
Landroid/os/SystemProto$PowerUseSummary;->COMPUTED_POWER_MAH:J
Landroid/os/SystemProto$PowerUseSummary;->MAX_DRAINED_POWER_MAH:J
Landroid/os/SystemProto$PowerUseSummary;->MIN_DRAINED_POWER_MAH:J
-Landroid/os/SystemProto$ResourcePowerManager;
-Landroid/os/SystemProto$ResourcePowerManager;-><init>()V
Landroid/os/SystemProto$ResourcePowerManager;->NAME:J
Landroid/os/SystemProto$ResourcePowerManager;->SCREEN_OFF:J
Landroid/os/SystemProto$ResourcePowerManager;->TOTAL:J
-Landroid/os/SystemProto$ScreenBrightness;
-Landroid/os/SystemProto$ScreenBrightness;-><init>()V
Landroid/os/SystemProto$ScreenBrightness;->BRIGHT:I
Landroid/os/SystemProto$ScreenBrightness;->DARK:I
Landroid/os/SystemProto$ScreenBrightness;->DIM:I
@@ -57463,16 +53565,10 @@
Landroid/os/SystemProto$ScreenBrightness;->MEDIUM:I
Landroid/os/SystemProto$ScreenBrightness;->NAME:J
Landroid/os/SystemProto$ScreenBrightness;->TOTAL:J
-Landroid/os/SystemProto$WakeupReason;
-Landroid/os/SystemProto$WakeupReason;-><init>()V
Landroid/os/SystemProto$WakeupReason;->NAME:J
Landroid/os/SystemProto$WakeupReason;->TOTAL:J
-Landroid/os/SystemProto$WifiMulticastWakelockTotal;
-Landroid/os/SystemProto$WifiMulticastWakelockTotal;-><init>()V
Landroid/os/SystemProto$WifiMulticastWakelockTotal;->COUNT:J
Landroid/os/SystemProto$WifiMulticastWakelockTotal;->DURATION_MS:J
-Landroid/os/SystemProto$WifiSignalStrength;
-Landroid/os/SystemProto$WifiSignalStrength;-><init>()V
Landroid/os/SystemProto$WifiSignalStrength;->GOOD:I
Landroid/os/SystemProto$WifiSignalStrength;->GREAT:I
Landroid/os/SystemProto$WifiSignalStrength;->MODERATE:I
@@ -57480,8 +53576,6 @@
Landroid/os/SystemProto$WifiSignalStrength;->NONE:I
Landroid/os/SystemProto$WifiSignalStrength;->POOR:I
Landroid/os/SystemProto$WifiSignalStrength;->TOTAL:J
-Landroid/os/SystemProto$WifiState;
-Landroid/os/SystemProto$WifiState;-><init>()V
Landroid/os/SystemProto$WifiState;->NAME:J
Landroid/os/SystemProto$WifiState;->OFF:I
Landroid/os/SystemProto$WifiState;->OFF_SCANNING:I
@@ -57492,8 +53586,6 @@
Landroid/os/SystemProto$WifiState;->ON_NO_NETWORKS:I
Landroid/os/SystemProto$WifiState;->SOFT_AP:I
Landroid/os/SystemProto$WifiState;->TOTAL:J
-Landroid/os/SystemProto$WifiSupplicantState;
-Landroid/os/SystemProto$WifiSupplicantState;-><init>()V
Landroid/os/SystemProto$WifiSupplicantState;->ASSOCIATED:I
Landroid/os/SystemProto$WifiSupplicantState;->ASSOCIATING:I
Landroid/os/SystemProto$WifiSupplicantState;->AUTHENTICATING:I
@@ -57509,7 +53601,6 @@
Landroid/os/SystemProto$WifiSupplicantState;->SCANNING:I
Landroid/os/SystemProto$WifiSupplicantState;->TOTAL:J
Landroid/os/SystemProto$WifiSupplicantState;->UNINITIALIZED:I
-Landroid/os/SystemProto;
Landroid/os/SystemProto;-><init>()V
Landroid/os/SystemProto;->BATTERY:J
Landroid/os/SystemProto;->BATTERY_DISCHARGE:J
@@ -57537,15 +53628,12 @@
Landroid/os/SystemProto;->WIFI_SIGNAL_STRENGTH:J
Landroid/os/SystemProto;->WIFI_STATE:J
Landroid/os/SystemProto;->WIFI_SUPPLICANT_STATE:J
-Landroid/os/SystemService$State;
-Landroid/os/SystemService$State;-><init>(Ljava/lang/String;)V
Landroid/os/SystemService$State;->RESTARTING:Landroid/os/SystemService$State;
Landroid/os/SystemService$State;->RUNNING:Landroid/os/SystemService$State;
Landroid/os/SystemService$State;->STOPPED:Landroid/os/SystemService$State;
Landroid/os/SystemService$State;->STOPPING:Landroid/os/SystemService$State;
Landroid/os/SystemService$State;->valueOf(Ljava/lang/String;)Landroid/os/SystemService$State;
Landroid/os/SystemService$State;->values()[Landroid/os/SystemService$State;
-Landroid/os/SystemService;
Landroid/os/SystemService;-><init>()V
Landroid/os/SystemService;->getState(Ljava/lang/String;)Landroid/os/SystemService$State;
Landroid/os/SystemService;->isRunning(Ljava/lang/String;)Z
@@ -57553,18 +53641,15 @@
Landroid/os/SystemService;->restart(Ljava/lang/String;)V
Landroid/os/SystemService;->sPropertyLock:Ljava/lang/Object;
Landroid/os/SystemService;->sStates:Ljava/util/HashMap;
-Landroid/os/SystemService;->waitForAnyStopped([[Ljava/lang/String;)V
Landroid/os/SystemService;->waitForState(Ljava/lang/String;Landroid/os/SystemService$State;J)V
Landroid/os/SystemUpdateManager;-><init>(Landroid/os/ISystemUpdateManager;)V
Landroid/os/SystemUpdateManager;->mService:Landroid/os/ISystemUpdateManager;
Landroid/os/SystemUpdateManager;->TAG:Ljava/lang/String;
-Landroid/os/SystemVibrator;
Landroid/os/SystemVibrator;->mService:Landroid/os/IVibratorService;
Landroid/os/SystemVibrator;->mToken:Landroid/os/Binder;
Landroid/os/SystemVibrator;->TAG:Ljava/lang/String;
Landroid/os/SystemVibrator;->usageForAttributes(Landroid/media/AudioAttributes;)I
Landroid/os/SystemVibrator;->vibrate(ILjava/lang/String;Landroid/os/VibrationEffect;Landroid/media/AudioAttributes;)V
-Landroid/os/Temperature;
Landroid/os/Temperature;-><init>()V
Landroid/os/Temperature;-><init>(FI)V
Landroid/os/Temperature;-><init>(Landroid/os/Parcel;)V
@@ -57574,10 +53659,7 @@
Landroid/os/Temperature;->mType:I
Landroid/os/Temperature;->mValue:F
Landroid/os/Temperature;->readFromParcel(Landroid/os/Parcel;)V
-Landroid/os/TestLooperManager$LooperHolder;
-Landroid/os/TestLooperManager$LooperHolder;-><init>()V
Landroid/os/TestLooperManager$LooperHolder;->processMessage(Landroid/os/TestLooperManager$MessageExecution;)V
-Landroid/os/TestLooperManager$MessageExecution;
Landroid/os/TestLooperManager$MessageExecution;-><init>()V
Landroid/os/TestLooperManager$MessageExecution;->m:Landroid/os/Message;
Landroid/os/TestLooperManager$MessageExecution;->response:Ljava/lang/Throwable;
@@ -57589,15 +53671,12 @@
Landroid/os/TestLooperManager;->mQueue:Landroid/os/MessageQueue;
Landroid/os/TestLooperManager;->mReleased:Z
Landroid/os/TestLooperManager;->sHeldLoopers:Landroid/util/ArraySet;
-Landroid/os/TimerProto;
Landroid/os/TimerProto;-><init>()V
Landroid/os/TimerProto;->COUNT:J
Landroid/os/TimerProto;->CURRENT_DURATION_MS:J
Landroid/os/TimerProto;->DURATION_MS:J
Landroid/os/TimerProto;->MAX_DURATION_MS:J
Landroid/os/TimerProto;->TOTAL_DURATION_MS:J
-Landroid/os/TokenWatcher$Death;
-Landroid/os/TokenWatcher$Death;-><init>(Landroid/os/IBinder;Ljava/lang/String;)V
Landroid/os/TokenWatcher$Death;->tag:Ljava/lang/String;
Landroid/os/TokenWatcher$Death;->token:Landroid/os/IBinder;
Landroid/os/TokenWatcher;->dumpInternal()Ljava/util/ArrayList;
@@ -57646,24 +53725,20 @@
Landroid/os/Trace;->TRACE_TAG_VIDEO:J
Landroid/os/Trace;->TRACE_TAG_WEBVIEW:J
Landroid/os/Trace;->TRACE_TAG_WINDOW_MANAGER:J
-Landroid/os/TransactionTracker;
Landroid/os/TransactionTracker;-><init>()V
Landroid/os/TransactionTracker;->addTrace(Ljava/lang/Throwable;)V
Landroid/os/TransactionTracker;->clearTraces()V
Landroid/os/TransactionTracker;->mTraces:Ljava/util/Map;
Landroid/os/TransactionTracker;->resetTraces()V
Landroid/os/TransactionTracker;->writeTracesToFile(Landroid/os/ParcelFileDescriptor;)V
-Landroid/os/UEventObserver$UEvent;
Landroid/os/UEventObserver$UEvent;-><init>(Ljava/lang/String;)V
Landroid/os/UEventObserver$UEvent;->mMap:Ljava/util/HashMap;
-Landroid/os/UEventObserver$UEventThread;
Landroid/os/UEventObserver$UEventThread;-><init>()V
Landroid/os/UEventObserver$UEventThread;->addObserver(Ljava/lang/String;Landroid/os/UEventObserver;)V
Landroid/os/UEventObserver$UEventThread;->mKeysAndObservers:Ljava/util/ArrayList;
Landroid/os/UEventObserver$UEventThread;->mTempObserversToSignal:Ljava/util/ArrayList;
Landroid/os/UEventObserver$UEventThread;->removeObserver(Landroid/os/UEventObserver;)V
Landroid/os/UEventObserver$UEventThread;->sendEvent(Ljava/lang/String;)V
-Landroid/os/UEventObserver;
Landroid/os/UEventObserver;->DEBUG:Z
Landroid/os/UEventObserver;->getThread()Landroid/os/UEventObserver$UEventThread;
Landroid/os/UEventObserver;->nativeAddMatch(Ljava/lang/String;)V
@@ -57673,29 +53748,19 @@
Landroid/os/UEventObserver;->peekThread()Landroid/os/UEventObserver$UEventThread;
Landroid/os/UEventObserver;->sThread:Landroid/os/UEventObserver$UEventThread;
Landroid/os/UEventObserver;->TAG:Ljava/lang/String;
-Landroid/os/UidProto$AggregatedWakelock;
-Landroid/os/UidProto$AggregatedWakelock;-><init>()V
Landroid/os/UidProto$AggregatedWakelock;->BACKGROUND_PARTIAL_DURATION_MS:J
Landroid/os/UidProto$AggregatedWakelock;->PARTIAL_DURATION_MS:J
-Landroid/os/UidProto$BluetoothMisc;
-Landroid/os/UidProto$BluetoothMisc;-><init>()V
Landroid/os/UidProto$BluetoothMisc;->APPORTIONED_BLE_SCAN:J
Landroid/os/UidProto$BluetoothMisc;->BACKGROUND_BLE_SCAN:J
Landroid/os/UidProto$BluetoothMisc;->BACKGROUND_BLE_SCAN_RESULT_COUNT:J
Landroid/os/UidProto$BluetoothMisc;->BACKGROUND_UNOPTIMIZED_BLE_SCAN:J
Landroid/os/UidProto$BluetoothMisc;->BLE_SCAN_RESULT_COUNT:J
Landroid/os/UidProto$BluetoothMisc;->UNOPTIMIZED_BLE_SCAN:J
-Landroid/os/UidProto$Cpu$ByFrequency;
-Landroid/os/UidProto$Cpu$ByFrequency;-><init>()V
Landroid/os/UidProto$Cpu$ByFrequency;->FREQUENCY_INDEX:J
Landroid/os/UidProto$Cpu$ByFrequency;->SCREEN_OFF_DURATION_MS:J
Landroid/os/UidProto$Cpu$ByFrequency;->TOTAL_DURATION_MS:J
-Landroid/os/UidProto$Cpu$ByProcessState;
-Landroid/os/UidProto$Cpu$ByProcessState;-><init>()V
Landroid/os/UidProto$Cpu$ByProcessState;->BY_FREQUENCY:J
Landroid/os/UidProto$Cpu$ByProcessState;->PROCESS_STATE:J
-Landroid/os/UidProto$Cpu;
-Landroid/os/UidProto$Cpu;-><init>()V
Landroid/os/UidProto$Cpu;->BACKGROUND:I
Landroid/os/UidProto$Cpu;->BY_FREQUENCY:J
Landroid/os/UidProto$Cpu;->BY_PROCESS_STATE:J
@@ -57707,21 +53772,13 @@
Landroid/os/UidProto$Cpu;->TOP:I
Landroid/os/UidProto$Cpu;->TOP_SLEEPING:I
Landroid/os/UidProto$Cpu;->USER_DURATION_MS:J
-Landroid/os/UidProto$Job;
-Landroid/os/UidProto$Job;-><init>()V
Landroid/os/UidProto$Job;->BACKGROUND:J
Landroid/os/UidProto$Job;->NAME:J
Landroid/os/UidProto$Job;->TOTAL:J
-Landroid/os/UidProto$JobCompletion$ReasonCount;
-Landroid/os/UidProto$JobCompletion$ReasonCount;-><init>()V
Landroid/os/UidProto$JobCompletion$ReasonCount;->COUNT:J
Landroid/os/UidProto$JobCompletion$ReasonCount;->NAME:J
-Landroid/os/UidProto$JobCompletion;
-Landroid/os/UidProto$JobCompletion;-><init>()V
Landroid/os/UidProto$JobCompletion;->NAME:J
Landroid/os/UidProto$JobCompletion;->REASON_COUNT:J
-Landroid/os/UidProto$Network;
-Landroid/os/UidProto$Network;-><init>()V
Landroid/os/UidProto$Network;->BT_BYTES_RX:J
Landroid/os/UidProto$Network;->BT_BYTES_TX:J
Landroid/os/UidProto$Network;->MOBILE_ACTIVE_COUNT:J
@@ -57744,24 +53801,16 @@
Landroid/os/UidProto$Network;->WIFI_PACKETS_RX:J
Landroid/os/UidProto$Network;->WIFI_PACKETS_TX:J
Landroid/os/UidProto$Network;->WIFI_WAKEUP_COUNT:J
-Landroid/os/UidProto$Package$Service;
-Landroid/os/UidProto$Package$Service;-><init>()V
Landroid/os/UidProto$Package$Service;->LAUNCH_COUNT:J
Landroid/os/UidProto$Package$Service;->NAME:J
Landroid/os/UidProto$Package$Service;->START_COUNT:J
Landroid/os/UidProto$Package$Service;->START_DURATION_MS:J
-Landroid/os/UidProto$Package;
-Landroid/os/UidProto$Package;-><init>()V
Landroid/os/UidProto$Package;->NAME:J
Landroid/os/UidProto$Package;->SERVICES:J
-Landroid/os/UidProto$PowerUseItem;
-Landroid/os/UidProto$PowerUseItem;-><init>()V
Landroid/os/UidProto$PowerUseItem;->COMPUTED_POWER_MAH:J
Landroid/os/UidProto$PowerUseItem;->PROPORTIONAL_SMEAR_MAH:J
Landroid/os/UidProto$PowerUseItem;->SCREEN_POWER_MAH:J
Landroid/os/UidProto$PowerUseItem;->SHOULD_HIDE:J
-Landroid/os/UidProto$Process;
-Landroid/os/UidProto$Process;-><init>()V
Landroid/os/UidProto$Process;->ANR_COUNT:J
Landroid/os/UidProto$Process;->CRASH_COUNT:J
Landroid/os/UidProto$Process;->FOREGROUND_DURATION_MS:J
@@ -57769,13 +53818,9 @@
Landroid/os/UidProto$Process;->START_COUNT:J
Landroid/os/UidProto$Process;->SYSTEM_DURATION_MS:J
Landroid/os/UidProto$Process;->USER_DURATION_MS:J
-Landroid/os/UidProto$Sensor;
-Landroid/os/UidProto$Sensor;-><init>()V
Landroid/os/UidProto$Sensor;->APPORTIONED:J
Landroid/os/UidProto$Sensor;->BACKGROUND:J
Landroid/os/UidProto$Sensor;->ID:J
-Landroid/os/UidProto$StateTime;
-Landroid/os/UidProto$StateTime;-><init>()V
Landroid/os/UidProto$StateTime;->DURATION_MS:J
Landroid/os/UidProto$StateTime;->PROCESS_STATE_BACKGROUND:I
Landroid/os/UidProto$StateTime;->PROCESS_STATE_CACHED:I
@@ -57785,33 +53830,22 @@
Landroid/os/UidProto$StateTime;->PROCESS_STATE_TOP:I
Landroid/os/UidProto$StateTime;->PROCESS_STATE_TOP_SLEEPING:I
Landroid/os/UidProto$StateTime;->STATE:J
-Landroid/os/UidProto$Sync;
-Landroid/os/UidProto$Sync;-><init>()V
Landroid/os/UidProto$Sync;->BACKGROUND:J
Landroid/os/UidProto$Sync;->NAME:J
Landroid/os/UidProto$Sync;->TOTAL:J
-Landroid/os/UidProto$UserActivity;
-Landroid/os/UidProto$UserActivity;-><init>()V
Landroid/os/UidProto$UserActivity;->COUNT:J
Landroid/os/UidProto$UserActivity;->NAME:J
-Landroid/os/UidProto$Wakelock;
-Landroid/os/UidProto$Wakelock;-><init>()V
Landroid/os/UidProto$Wakelock;->BACKGROUND_PARTIAL:J
Landroid/os/UidProto$Wakelock;->FULL:J
Landroid/os/UidProto$Wakelock;->NAME:J
Landroid/os/UidProto$Wakelock;->PARTIAL:J
Landroid/os/UidProto$Wakelock;->WINDOW:J
-Landroid/os/UidProto$WakeupAlarm;
-Landroid/os/UidProto$WakeupAlarm;-><init>()V
Landroid/os/UidProto$WakeupAlarm;->COUNT:J
Landroid/os/UidProto$WakeupAlarm;->NAME:J
-Landroid/os/UidProto$Wifi;
-Landroid/os/UidProto$Wifi;-><init>()V
Landroid/os/UidProto$Wifi;->APPORTIONED_SCAN:J
Landroid/os/UidProto$Wifi;->BACKGROUND_SCAN:J
Landroid/os/UidProto$Wifi;->FULL_WIFI_LOCK_DURATION_MS:J
Landroid/os/UidProto$Wifi;->RUNNING_DURATION_MS:J
-Landroid/os/UidProto;
Landroid/os/UidProto;-><init>()V
Landroid/os/UidProto;->AGGREGATED_WAKELOCK:J
Landroid/os/UidProto;->AUDIO:J
@@ -57846,7 +53880,6 @@
Landroid/os/UpdateEngine;->mUpdateEngineCallbackLock:Ljava/lang/Object;
Landroid/os/UpdateEngine;->TAG:Ljava/lang/String;
Landroid/os/UpdateEngine;->UPDATE_ENGINE_SERVICE:Ljava/lang/String;
-Landroid/os/UpdateLock;
Landroid/os/UpdateLock;-><init>(Ljava/lang/String;)V
Landroid/os/UpdateLock;->acquireLocked()V
Landroid/os/UpdateLock;->checkService()V
@@ -57877,7 +53910,6 @@
Landroid/os/UserManager$EnforcingUser;->userRestrictionSource:I
Landroid/os/UserManager$UserOperationException;-><init>(Ljava/lang/String;I)V
Landroid/os/UserManager$UserOperationException;->mUserOperationResult:I
-Landroid/os/UserManager$UserOperationResult;
Landroid/os/UserManager;-><init>(Landroid/content/Context;Landroid/os/IUserManager;)V
Landroid/os/UserManager;->ACTION_CREATE_USER:Ljava/lang/String;
Landroid/os/UserManager;->canAddMoreManagedProfiles(IZ)Z
@@ -57935,9 +53967,7 @@
Landroid/os/UserManager;->setUserRestriction(Ljava/lang/String;ZLandroid/os/UserHandle;)V
Landroid/os/UserManager;->someUserHasSeedAccount(Ljava/lang/String;Ljava/lang/String;)Z
Landroid/os/UserManager;->TAG:Ljava/lang/String;
-Landroid/os/UserManagerInternal$UserRestrictionsListener;
Landroid/os/UserManagerInternal$UserRestrictionsListener;->onUserRestrictionsChanged(ILandroid/os/Bundle;Landroid/os/Bundle;)V
-Landroid/os/UserManagerInternal;
Landroid/os/UserManagerInternal;-><init>()V
Landroid/os/UserManagerInternal;->addUserRestrictionsListener(Landroid/os/UserManagerInternal$UserRestrictionsListener;)V
Landroid/os/UserManagerInternal;->CAMERA_DISABLED_GLOBALLY:I
@@ -57967,7 +53997,6 @@
Landroid/os/UserManagerInternal;->setUserIcon(ILandroid/graphics/Bitmap;)V
Landroid/os/UserManagerInternal;->setUserManaged(IZ)V
Landroid/os/UserManagerInternal;->setUserState(II)V
-Landroid/os/VibrationEffect$OneShot;
Landroid/os/VibrationEffect$OneShot;-><init>(JI)V
Landroid/os/VibrationEffect$OneShot;-><init>(Landroid/os/Parcel;)V
Landroid/os/VibrationEffect$OneShot;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -57978,7 +54007,6 @@
Landroid/os/VibrationEffect$OneShot;->resolve(I)Landroid/os/VibrationEffect$OneShot;
Landroid/os/VibrationEffect$OneShot;->scale(FI)Landroid/os/VibrationEffect;
Landroid/os/VibrationEffect$OneShot;->validate()V
-Landroid/os/VibrationEffect$Prebaked;
Landroid/os/VibrationEffect$Prebaked;-><init>(IZ)V
Landroid/os/VibrationEffect$Prebaked;-><init>(Landroid/os/Parcel;)V
Landroid/os/VibrationEffect$Prebaked;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -57992,7 +54020,6 @@
Landroid/os/VibrationEffect$Prebaked;->setEffectStrength(I)V
Landroid/os/VibrationEffect$Prebaked;->shouldFallback()Z
Landroid/os/VibrationEffect$Prebaked;->validate()V
-Landroid/os/VibrationEffect$Waveform;
Landroid/os/VibrationEffect$Waveform;-><init>(Landroid/os/Parcel;)V
Landroid/os/VibrationEffect$Waveform;-><init>([J[II)V
Landroid/os/VibrationEffect$Waveform;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -58025,7 +54052,6 @@
Landroid/os/VibrationEffect;->RINGTONES:[I
Landroid/os/VibrationEffect;->scale(IFI)I
Landroid/os/VibrationEffect;->validate()V
-Landroid/os/Vibrator$VibrationIntensity;
Landroid/os/Vibrator;-><init>(Landroid/content/Context;)V
Landroid/os/Vibrator;->getDefaultHapticFeedbackIntensity()I
Landroid/os/Vibrator;->getDefaultNotificationVibrationIntensity()I
@@ -58039,11 +54065,9 @@
Landroid/os/Vibrator;->VIBRATION_INTENSITY_LOW:I
Landroid/os/Vibrator;->VIBRATION_INTENSITY_MEDIUM:I
Landroid/os/Vibrator;->VIBRATION_INTENSITY_OFF:I
-Landroid/os/VintfObject;
Landroid/os/VintfObject;-><init>()V
Landroid/os/VintfObject;->verify([Ljava/lang/String;)I
Landroid/os/VintfObject;->verifyWithoutAvb()I
-Landroid/os/VintfRuntimeInfo;
Landroid/os/VintfRuntimeInfo;-><init>()V
Landroid/os/VintfRuntimeInfo;->getBootAvbVersion()Ljava/lang/String;
Landroid/os/VintfRuntimeInfo;->getBootVbmetaAvbVersion()Ljava/lang/String;
@@ -58079,18 +54103,12 @@
Landroid/os/WorkSource;->updateUidsAndNamesLocked(Landroid/os/WorkSource;ZZ)Z
Landroid/os/WorkSource;->updateUidsLocked(Landroid/os/WorkSource;ZZ)Z
Landroid/os/WorkSource;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-Landroid/os/WorkSourceProto$WorkChain;
-Landroid/os/WorkSourceProto$WorkChain;-><init>()V
Landroid/os/WorkSourceProto$WorkChain;->NODES:J
-Landroid/os/WorkSourceProto$WorkSourceContentProto;
-Landroid/os/WorkSourceProto$WorkSourceContentProto;-><init>()V
Landroid/os/WorkSourceProto$WorkSourceContentProto;->NAME:J
Landroid/os/WorkSourceProto$WorkSourceContentProto;->UID:J
-Landroid/os/WorkSourceProto;
Landroid/os/WorkSourceProto;-><init>()V
Landroid/os/WorkSourceProto;->WORK_CHAINS:J
Landroid/os/WorkSourceProto;->WORK_SOURCE_CONTENTS:J
-Landroid/os/ZygoteProcess$ZygoteState;
Landroid/os/ZygoteProcess$ZygoteState;-><init>(Landroid/net/LocalSocket;Ljava/io/DataInputStream;Ljava/io/BufferedWriter;Ljava/util/List;)V
Landroid/os/ZygoteProcess$ZygoteState;->abiList:Ljava/util/List;
Landroid/os/ZygoteProcess$ZygoteState;->close()V
@@ -58101,7 +54119,6 @@
Landroid/os/ZygoteProcess$ZygoteState;->mClosed:Z
Landroid/os/ZygoteProcess$ZygoteState;->socket:Landroid/net/LocalSocket;
Landroid/os/ZygoteProcess$ZygoteState;->writer:Ljava/io/BufferedWriter;
-Landroid/os/ZygoteProcess;
Landroid/os/ZygoteProcess;-><init>(Landroid/net/LocalSocketAddress;Landroid/net/LocalSocketAddress;)V
Landroid/os/ZygoteProcess;-><init>(Ljava/lang/String;Ljava/lang/String;)V
Landroid/os/ZygoteProcess;->close()V
@@ -58130,15 +54147,11 @@
Landroid/os/ZygoteProcess;->waitForConnectionToZygote(Ljava/lang/String;)V
Landroid/os/ZygoteProcess;->zygoteSendArgsAndGetResult(Landroid/os/ZygoteProcess$ZygoteState;Ljava/util/ArrayList;)Landroid/os/Process$ProcessStartResult;
Landroid/os/ZygoteProcess;->ZYGOTE_RETRY_MILLIS:I
-Landroid/os/ZygoteStartFailedEx;
Landroid/os/ZygoteStartFailedEx;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
-Landroid/permissionpresenterservice/RuntimePermissionPresenterService$MyHandler;
-Landroid/permissionpresenterservice/RuntimePermissionPresenterService$MyHandler;-><init>(Landroid/os/Looper;)V
Landroid/permissionpresenterservice/RuntimePermissionPresenterService$MyHandler;->MSG_GET_APPS_USING_PERMISSIONS:I
Landroid/permissionpresenterservice/RuntimePermissionPresenterService$MyHandler;->MSG_GET_APP_PERMISSIONS:I
Landroid/permissionpresenterservice/RuntimePermissionPresenterService$MyHandler;->MSG_REVOKE_APP_PERMISSION:I
Landroid/permissionpresenterservice/RuntimePermissionPresenterService;->mHandler:Landroid/os/Handler;
-Landroid/preference/DialogPreference$SavedState;
Landroid/preference/DialogPreference$SavedState;-><init>(Landroid/os/Parcel;)V
Landroid/preference/DialogPreference$SavedState;-><init>(Landroid/os/Parcelable;)V
Landroid/preference/DialogPreference$SavedState;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -58147,7 +54160,6 @@
Landroid/preference/DialogPreference;->mDialogLayoutResId:I
Landroid/preference/DialogPreference;->needInputMethod()Z
Landroid/preference/DialogPreference;->requestInputMethod(Landroid/app/Dialog;)V
-Landroid/preference/EditTextPreference$SavedState;
Landroid/preference/EditTextPreference$SavedState;-><init>(Landroid/os/Parcel;)V
Landroid/preference/EditTextPreference$SavedState;-><init>(Landroid/os/Parcelable;)V
Landroid/preference/EditTextPreference$SavedState;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -58155,16 +54167,12 @@
Landroid/preference/EditTextPreference;->mText:Ljava/lang/String;
Landroid/preference/EditTextPreference;->mTextSet:Z
Landroid/preference/EditTextPreference;->needInputMethod()Z
-Landroid/preference/GenericInflater$Factory;
Landroid/preference/GenericInflater$Factory;->onCreateItem(Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Ljava/lang/Object;
-Landroid/preference/GenericInflater$FactoryMerger;
Landroid/preference/GenericInflater$FactoryMerger;-><init>(Landroid/preference/GenericInflater$Factory;Landroid/preference/GenericInflater$Factory;)V
Landroid/preference/GenericInflater$FactoryMerger;->mF1:Landroid/preference/GenericInflater$Factory;
Landroid/preference/GenericInflater$FactoryMerger;->mF2:Landroid/preference/GenericInflater$Factory;
Landroid/preference/GenericInflater$FactoryMerger;->onCreateItem(Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Ljava/lang/Object;
-Landroid/preference/GenericInflater$Parent;
Landroid/preference/GenericInflater$Parent;->addItemFromInflater(Ljava/lang/Object;)V
-Landroid/preference/GenericInflater;
Landroid/preference/GenericInflater;-><init>(Landroid/content/Context;)V
Landroid/preference/GenericInflater;-><init>(Landroid/preference/GenericInflater;Landroid/content/Context;)V
Landroid/preference/GenericInflater;->cloneInContext(Landroid/content/Context;)Landroid/preference/GenericInflater;
@@ -58191,7 +54199,6 @@
Landroid/preference/GenericInflater;->sConstructorMap:Ljava/util/HashMap;
Landroid/preference/GenericInflater;->setDefaultPackage(Ljava/lang/String;)V
Landroid/preference/GenericInflater;->setFactory(Landroid/preference/GenericInflater$Factory;)V
-Landroid/preference/ListPreference$SavedState;
Landroid/preference/ListPreference$SavedState;-><init>(Landroid/os/Parcel;)V
Landroid/preference/ListPreference$SavedState;-><init>(Landroid/os/Parcelable;)V
Landroid/preference/ListPreference$SavedState;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -58202,12 +54209,10 @@
Landroid/preference/ListPreference;->mSummary:Ljava/lang/String;
Landroid/preference/ListPreference;->mValue:Ljava/lang/String;
Landroid/preference/ListPreference;->mValueSet:Z
-Landroid/preference/MultiCheckPreference$SavedState;
Landroid/preference/MultiCheckPreference$SavedState;-><init>(Landroid/os/Parcel;)V
Landroid/preference/MultiCheckPreference$SavedState;-><init>(Landroid/os/Parcelable;)V
Landroid/preference/MultiCheckPreference$SavedState;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/preference/MultiCheckPreference$SavedState;->values:[Z
-Landroid/preference/MultiCheckPreference;
Landroid/preference/MultiCheckPreference;-><init>(Landroid/content/Context;)V
Landroid/preference/MultiCheckPreference;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
Landroid/preference/MultiCheckPreference;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
@@ -58229,7 +54234,6 @@
Landroid/preference/MultiCheckPreference;->setEntryValuesCS([Ljava/lang/CharSequence;)V
Landroid/preference/MultiCheckPreference;->setValue(IZ)V
Landroid/preference/MultiCheckPreference;->setValues([Z)V
-Landroid/preference/MultiSelectListPreference$SavedState;
Landroid/preference/MultiSelectListPreference$SavedState;-><init>(Landroid/os/Parcel;)V
Landroid/preference/MultiSelectListPreference$SavedState;-><init>(Landroid/os/Parcelable;)V
Landroid/preference/MultiSelectListPreference$SavedState;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -58240,7 +54244,6 @@
Landroid/preference/MultiSelectListPreference;->mNewValues:Ljava/util/Set;
Landroid/preference/MultiSelectListPreference;->mPreferenceChanged:Z
Landroid/preference/MultiSelectListPreference;->mValues:Ljava/util/Set;
-Landroid/preference/Preference$OnPreferenceChangeInternalListener;
Landroid/preference/Preference$OnPreferenceChangeInternalListener;->onPreferenceChange(Landroid/preference/Preference;)V
Landroid/preference/Preference$OnPreferenceChangeInternalListener;->onPreferenceHierarchyChange(Landroid/preference/Preference;)V
Landroid/preference/Preference;->assignParent(Landroid/preference/PreferenceGroup;)V
@@ -58287,12 +54290,10 @@
Landroid/preference/Preference;->unregisterDependency()V
Landroid/preference/Preference;->unregisterDependent(Landroid/preference/Preference;)V
Landroid/preference/PreferenceActivity$Header;-><init>(Landroid/os/Parcel;)V
-Landroid/preference/PreferenceActivity$HeaderAdapter$HeaderViewHolder;
Landroid/preference/PreferenceActivity$HeaderAdapter$HeaderViewHolder;-><init>()V
Landroid/preference/PreferenceActivity$HeaderAdapter$HeaderViewHolder;->icon:Landroid/widget/ImageView;
Landroid/preference/PreferenceActivity$HeaderAdapter$HeaderViewHolder;->summary:Landroid/widget/TextView;
Landroid/preference/PreferenceActivity$HeaderAdapter$HeaderViewHolder;->title:Landroid/widget/TextView;
-Landroid/preference/PreferenceActivity$HeaderAdapter;
Landroid/preference/PreferenceActivity$HeaderAdapter;-><init>(Landroid/content/Context;Ljava/util/List;IZ)V
Landroid/preference/PreferenceActivity$HeaderAdapter;->mInflater:Landroid/view/LayoutInflater;
Landroid/preference/PreferenceActivity$HeaderAdapter;->mLayoutResId:I
@@ -58346,11 +54347,9 @@
Landroid/preference/PreferenceFragment;->postBindPreferences()V
Landroid/preference/PreferenceFragment;->PREFERENCES_TAG:Ljava/lang/String;
Landroid/preference/PreferenceFragment;->requirePreferenceManager()V
-Landroid/preference/PreferenceFrameLayout$LayoutParams;
Landroid/preference/PreferenceFrameLayout$LayoutParams;-><init>(II)V
Landroid/preference/PreferenceFrameLayout$LayoutParams;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
Landroid/preference/PreferenceFrameLayout$LayoutParams;->removeBorders:Z
-Landroid/preference/PreferenceFrameLayout;
Landroid/preference/PreferenceFrameLayout;-><init>(Landroid/content/Context;)V
Landroid/preference/PreferenceFrameLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
Landroid/preference/PreferenceFrameLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
@@ -58370,13 +54369,11 @@
Landroid/preference/PreferenceGroup;->mPreferenceList:Ljava/util/List;
Landroid/preference/PreferenceGroup;->removePreferenceInt(Landroid/preference/Preference;)Z
Landroid/preference/PreferenceGroup;->sortPreferences()V
-Landroid/preference/PreferenceGroupAdapter$PreferenceLayout;
Landroid/preference/PreferenceGroupAdapter$PreferenceLayout;-><init>()V
Landroid/preference/PreferenceGroupAdapter$PreferenceLayout;->compareTo(Landroid/preference/PreferenceGroupAdapter$PreferenceLayout;)I
Landroid/preference/PreferenceGroupAdapter$PreferenceLayout;->name:Ljava/lang/String;
Landroid/preference/PreferenceGroupAdapter$PreferenceLayout;->resId:I
Landroid/preference/PreferenceGroupAdapter$PreferenceLayout;->widgetResId:I
-Landroid/preference/PreferenceGroupAdapter;
Landroid/preference/PreferenceGroupAdapter;-><init>(Landroid/preference/PreferenceGroup;)V
Landroid/preference/PreferenceGroupAdapter;->addPreferenceClassName(Landroid/preference/Preference;)V
Landroid/preference/PreferenceGroupAdapter;->createPreferenceLayout(Landroid/preference/Preference;Landroid/preference/PreferenceGroupAdapter$PreferenceLayout;)Landroid/preference/PreferenceGroupAdapter$PreferenceLayout;
@@ -58399,7 +54396,6 @@
Landroid/preference/PreferenceGroupAdapter;->sWrapperLayoutParams:Landroid/view/ViewGroup$LayoutParams;
Landroid/preference/PreferenceGroupAdapter;->syncMyPreferences()V
Landroid/preference/PreferenceGroupAdapter;->TAG:Ljava/lang/String;
-Landroid/preference/PreferenceManager$OnPreferenceTreeClickListener;
Landroid/preference/PreferenceManager$OnPreferenceTreeClickListener;->onPreferenceTreeClick(Landroid/preference/PreferenceScreen;Landroid/preference/Preference;)Z
Landroid/preference/PreferenceManager;->addPreferencesScreen(Landroid/content/DialogInterface;)V
Landroid/preference/PreferenceManager;->dismissAllScreens()V
@@ -58430,7 +54426,6 @@
Landroid/preference/PreferenceManager;->STORAGE_DEFAULT:I
Landroid/preference/PreferenceManager;->STORAGE_DEVICE_PROTECTED:I
Landroid/preference/PreferenceManager;->TAG:Ljava/lang/String;
-Landroid/preference/PreferenceScreen$SavedState;
Landroid/preference/PreferenceScreen$SavedState;-><init>(Landroid/os/Parcel;)V
Landroid/preference/PreferenceScreen$SavedState;-><init>(Landroid/os/Parcelable;)V
Landroid/preference/PreferenceScreen$SavedState;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -58445,20 +54440,17 @@
Landroid/preference/RingtonePreference;->mShowDefault:Z
Landroid/preference/RingtonePreference;->mShowSilent:Z
Landroid/preference/RingtonePreference;->TAG:Ljava/lang/String;
-Landroid/preference/SeekBarDialogPreference;
Landroid/preference/SeekBarDialogPreference;-><init>(Landroid/content/Context;)V
Landroid/preference/SeekBarDialogPreference;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
Landroid/preference/SeekBarDialogPreference;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V
Landroid/preference/SeekBarDialogPreference;->createActionButtons()V
Landroid/preference/SeekBarDialogPreference;->getSeekBar(Landroid/view/View;)Landroid/widget/SeekBar;
Landroid/preference/SeekBarDialogPreference;->mMyIcon:Landroid/graphics/drawable/Drawable;
-Landroid/preference/SeekBarPreference$SavedState;
Landroid/preference/SeekBarPreference$SavedState;-><init>(Landroid/os/Parcel;)V
Landroid/preference/SeekBarPreference$SavedState;-><init>(Landroid/os/Parcelable;)V
Landroid/preference/SeekBarPreference$SavedState;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/preference/SeekBarPreference$SavedState;->max:I
Landroid/preference/SeekBarPreference$SavedState;->progress:I
-Landroid/preference/SeekBarPreference;
Landroid/preference/SeekBarPreference;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V
Landroid/preference/SeekBarPreference;->getProgress()I
Landroid/preference/SeekBarPreference;->mMax:I
@@ -58469,22 +54461,14 @@
Landroid/preference/SeekBarPreference;->setProgress(I)V
Landroid/preference/SeekBarPreference;->setProgress(IZ)V
Landroid/preference/SeekBarPreference;->syncProgress(Landroid/widget/SeekBar;)V
-Landroid/preference/SeekBarVolumizer$Callback;
Landroid/preference/SeekBarVolumizer$Callback;->onMuted(ZZ)V
Landroid/preference/SeekBarVolumizer$Callback;->onProgressChanged(Landroid/widget/SeekBar;IZ)V
Landroid/preference/SeekBarVolumizer$Callback;->onSampleStarting(Landroid/preference/SeekBarVolumizer;)V
-Landroid/preference/SeekBarVolumizer$H;
-Landroid/preference/SeekBarVolumizer$H;-><init>()V
Landroid/preference/SeekBarVolumizer$H;->postUpdateSlider(IIZ)V
Landroid/preference/SeekBarVolumizer$H;->UPDATE_SLIDER:I
-Landroid/preference/SeekBarVolumizer$Observer;
-Landroid/preference/SeekBarVolumizer$Observer;-><init>(Landroid/os/Handler;)V
-Landroid/preference/SeekBarVolumizer$Receiver;
-Landroid/preference/SeekBarVolumizer$Receiver;-><init>()V
Landroid/preference/SeekBarVolumizer$Receiver;->mListening:Z
Landroid/preference/SeekBarVolumizer$Receiver;->setListening(Z)V
Landroid/preference/SeekBarVolumizer$Receiver;->updateVolumeSlider(II)V
-Landroid/preference/SeekBarVolumizer;
Landroid/preference/SeekBarVolumizer;->changeVolumeBy(I)V
Landroid/preference/SeekBarVolumizer;->CHECK_RINGTONE_PLAYBACK_DELAY_MS:I
Landroid/preference/SeekBarVolumizer;->getSeekBar()Landroid/widget/SeekBar;
@@ -58533,11 +54517,8 @@
Landroid/preference/SeekBarVolumizer;->TAG:Ljava/lang/String;
Landroid/preference/SeekBarVolumizer;->updateSeekBar()V
Landroid/preference/SeekBarVolumizer;->updateSlider()V
-Landroid/preference/SwitchPreference$Listener;
-Landroid/preference/SwitchPreference$Listener;-><init>()V
Landroid/preference/SwitchPreference;->mSwitchOff:Ljava/lang/CharSequence;
Landroid/preference/SwitchPreference;->mSwitchOn:Ljava/lang/CharSequence;
-Landroid/preference/TwoStatePreference$SavedState;
Landroid/preference/TwoStatePreference$SavedState;-><init>(Landroid/os/Parcel;)V
Landroid/preference/TwoStatePreference$SavedState;-><init>(Landroid/os/Parcelable;)V
Landroid/preference/TwoStatePreference$SavedState;->checked:Z
@@ -58547,15 +54528,12 @@
Landroid/preference/TwoStatePreference;->mDisableDependentsState:Z
Landroid/preference/TwoStatePreference;->mSummaryOff:Ljava/lang/CharSequence;
Landroid/preference/TwoStatePreference;->mSummaryOn:Ljava/lang/CharSequence;
-Landroid/preference/VolumePreference$SavedState;
Landroid/preference/VolumePreference$SavedState;-><init>(Landroid/os/Parcel;)V
Landroid/preference/VolumePreference$SavedState;-><init>(Landroid/os/Parcelable;)V
Landroid/preference/VolumePreference$SavedState;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/preference/VolumePreference$SavedState;->getVolumeStore()Landroid/preference/VolumePreference$VolumeStore;
Landroid/preference/VolumePreference$SavedState;->mVolumeStore:Landroid/preference/VolumePreference$VolumeStore;
-Landroid/preference/VolumePreference$VolumeStore;
Landroid/preference/VolumePreference$VolumeStore;-><init>()V
-Landroid/preference/VolumePreference;
Landroid/preference/VolumePreference;-><init>(Landroid/content/Context;)V
Landroid/preference/VolumePreference;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
Landroid/preference/VolumePreference;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V
@@ -58565,7 +54543,6 @@
Landroid/preference/VolumePreference;->onProgressChanged(Landroid/widget/SeekBar;IZ)V
Landroid/preference/VolumePreference;->onSampleStarting(Landroid/preference/SeekBarVolumizer;)V
Landroid/preference/VolumePreference;->setStreamType(I)V
-Landroid/print/ILayoutResultCallback$Stub$Proxy;
Landroid/print/ILayoutResultCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/print/ILayoutResultCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/print/ILayoutResultCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -58573,7 +54550,6 @@
Landroid/print/ILayoutResultCallback$Stub$Proxy;->onLayoutFailed(Ljava/lang/CharSequence;I)V
Landroid/print/ILayoutResultCallback$Stub$Proxy;->onLayoutFinished(Landroid/print/PrintDocumentInfo;ZI)V
Landroid/print/ILayoutResultCallback$Stub$Proxy;->onLayoutStarted(Landroid/os/ICancellationSignal;I)V
-Landroid/print/ILayoutResultCallback$Stub;
Landroid/print/ILayoutResultCallback$Stub;-><init>()V
Landroid/print/ILayoutResultCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/print/ILayoutResultCallback;
Landroid/print/ILayoutResultCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -58581,12 +54557,10 @@
Landroid/print/ILayoutResultCallback$Stub;->TRANSACTION_onLayoutFailed:I
Landroid/print/ILayoutResultCallback$Stub;->TRANSACTION_onLayoutFinished:I
Landroid/print/ILayoutResultCallback$Stub;->TRANSACTION_onLayoutStarted:I
-Landroid/print/ILayoutResultCallback;
Landroid/print/ILayoutResultCallback;->onLayoutCanceled(I)V
Landroid/print/ILayoutResultCallback;->onLayoutFailed(Ljava/lang/CharSequence;I)V
Landroid/print/ILayoutResultCallback;->onLayoutFinished(Landroid/print/PrintDocumentInfo;ZI)V
Landroid/print/ILayoutResultCallback;->onLayoutStarted(Landroid/os/ICancellationSignal;I)V
-Landroid/print/IPrintDocumentAdapter$Stub$Proxy;
Landroid/print/IPrintDocumentAdapter$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/print/IPrintDocumentAdapter$Stub$Proxy;->finish()V
Landroid/print/IPrintDocumentAdapter$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
@@ -58596,7 +54570,6 @@
Landroid/print/IPrintDocumentAdapter$Stub$Proxy;->setObserver(Landroid/print/IPrintDocumentAdapterObserver;)V
Landroid/print/IPrintDocumentAdapter$Stub$Proxy;->start()V
Landroid/print/IPrintDocumentAdapter$Stub$Proxy;->write([Landroid/print/PageRange;Landroid/os/ParcelFileDescriptor;Landroid/print/IWriteResultCallback;I)V
-Landroid/print/IPrintDocumentAdapter$Stub;
Landroid/print/IPrintDocumentAdapter$Stub;-><init>()V
Landroid/print/IPrintDocumentAdapter$Stub;->asInterface(Landroid/os/IBinder;)Landroid/print/IPrintDocumentAdapter;
Landroid/print/IPrintDocumentAdapter$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -58606,53 +54579,42 @@
Landroid/print/IPrintDocumentAdapter$Stub;->TRANSACTION_setObserver:I
Landroid/print/IPrintDocumentAdapter$Stub;->TRANSACTION_start:I
Landroid/print/IPrintDocumentAdapter$Stub;->TRANSACTION_write:I
-Landroid/print/IPrintDocumentAdapter;
Landroid/print/IPrintDocumentAdapter;->finish()V
Landroid/print/IPrintDocumentAdapter;->kill(Ljava/lang/String;)V
Landroid/print/IPrintDocumentAdapter;->layout(Landroid/print/PrintAttributes;Landroid/print/PrintAttributes;Landroid/print/ILayoutResultCallback;Landroid/os/Bundle;I)V
Landroid/print/IPrintDocumentAdapter;->setObserver(Landroid/print/IPrintDocumentAdapterObserver;)V
Landroid/print/IPrintDocumentAdapter;->start()V
Landroid/print/IPrintDocumentAdapter;->write([Landroid/print/PageRange;Landroid/os/ParcelFileDescriptor;Landroid/print/IWriteResultCallback;I)V
-Landroid/print/IPrintDocumentAdapterObserver$Stub$Proxy;
Landroid/print/IPrintDocumentAdapterObserver$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/print/IPrintDocumentAdapterObserver$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/print/IPrintDocumentAdapterObserver$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/print/IPrintDocumentAdapterObserver$Stub$Proxy;->onDestroy()V
-Landroid/print/IPrintDocumentAdapterObserver$Stub;
Landroid/print/IPrintDocumentAdapterObserver$Stub;-><init>()V
Landroid/print/IPrintDocumentAdapterObserver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/print/IPrintDocumentAdapterObserver;
Landroid/print/IPrintDocumentAdapterObserver$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/print/IPrintDocumentAdapterObserver$Stub;->TRANSACTION_onDestroy:I
-Landroid/print/IPrintDocumentAdapterObserver;
Landroid/print/IPrintDocumentAdapterObserver;->onDestroy()V
-Landroid/print/IPrinterDiscoveryObserver$Stub$Proxy;
Landroid/print/IPrinterDiscoveryObserver$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/print/IPrinterDiscoveryObserver$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/print/IPrinterDiscoveryObserver$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/print/IPrinterDiscoveryObserver$Stub$Proxy;->onPrintersAdded(Landroid/content/pm/ParceledListSlice;)V
Landroid/print/IPrinterDiscoveryObserver$Stub$Proxy;->onPrintersRemoved(Landroid/content/pm/ParceledListSlice;)V
-Landroid/print/IPrinterDiscoveryObserver$Stub;
Landroid/print/IPrinterDiscoveryObserver$Stub;-><init>()V
Landroid/print/IPrinterDiscoveryObserver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/print/IPrinterDiscoveryObserver;
Landroid/print/IPrinterDiscoveryObserver$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/print/IPrinterDiscoveryObserver$Stub;->TRANSACTION_onPrintersAdded:I
Landroid/print/IPrinterDiscoveryObserver$Stub;->TRANSACTION_onPrintersRemoved:I
-Landroid/print/IPrinterDiscoveryObserver;
Landroid/print/IPrinterDiscoveryObserver;->onPrintersAdded(Landroid/content/pm/ParceledListSlice;)V
Landroid/print/IPrinterDiscoveryObserver;->onPrintersRemoved(Landroid/content/pm/ParceledListSlice;)V
-Landroid/print/IPrintJobStateChangeListener$Stub$Proxy;
Landroid/print/IPrintJobStateChangeListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/print/IPrintJobStateChangeListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/print/IPrintJobStateChangeListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/print/IPrintJobStateChangeListener$Stub$Proxy;->onPrintJobStateChanged(Landroid/print/PrintJobId;)V
-Landroid/print/IPrintJobStateChangeListener$Stub;
Landroid/print/IPrintJobStateChangeListener$Stub;-><init>()V
Landroid/print/IPrintJobStateChangeListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/print/IPrintJobStateChangeListener;
Landroid/print/IPrintJobStateChangeListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/print/IPrintJobStateChangeListener$Stub;->TRANSACTION_onPrintJobStateChanged:I
-Landroid/print/IPrintJobStateChangeListener;
Landroid/print/IPrintJobStateChangeListener;->onPrintJobStateChanged(Landroid/print/PrintJobId;)V
-Landroid/print/IPrintManager$Stub$Proxy;
Landroid/print/IPrintManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/print/IPrintManager$Stub$Proxy;->addPrintJobStateChangeListener(Landroid/print/IPrintJobStateChangeListener;II)V
Landroid/print/IPrintManager$Stub$Proxy;->addPrintServiceRecommendationsChangeListener(Landroid/printservice/recommendation/IRecommendationsChangeListener;I)V
@@ -58680,7 +54642,6 @@
Landroid/print/IPrintManager$Stub$Proxy;->stopPrinterDiscovery(Landroid/print/IPrinterDiscoveryObserver;I)V
Landroid/print/IPrintManager$Stub$Proxy;->stopPrinterStateTracking(Landroid/print/PrinterId;I)V
Landroid/print/IPrintManager$Stub$Proxy;->validatePrinters(Ljava/util/List;I)V
-Landroid/print/IPrintManager$Stub;
Landroid/print/IPrintManager$Stub;-><init>()V
Landroid/print/IPrintManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/print/IPrintManager;
Landroid/print/IPrintManager$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -58708,7 +54669,6 @@
Landroid/print/IPrintManager$Stub;->TRANSACTION_stopPrinterDiscovery:I
Landroid/print/IPrintManager$Stub;->TRANSACTION_stopPrinterStateTracking:I
Landroid/print/IPrintManager$Stub;->TRANSACTION_validatePrinters:I
-Landroid/print/IPrintManager;
Landroid/print/IPrintManager;->addPrintJobStateChangeListener(Landroid/print/IPrintJobStateChangeListener;II)V
Landroid/print/IPrintManager;->addPrintServiceRecommendationsChangeListener(Landroid/printservice/recommendation/IRecommendationsChangeListener;I)V
Landroid/print/IPrintManager;->addPrintServicesChangeListener(Landroid/print/IPrintServicesChangeListener;I)V
@@ -58733,19 +54693,15 @@
Landroid/print/IPrintManager;->stopPrinterDiscovery(Landroid/print/IPrinterDiscoveryObserver;I)V
Landroid/print/IPrintManager;->stopPrinterStateTracking(Landroid/print/PrinterId;I)V
Landroid/print/IPrintManager;->validatePrinters(Ljava/util/List;I)V
-Landroid/print/IPrintServicesChangeListener$Stub$Proxy;
Landroid/print/IPrintServicesChangeListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/print/IPrintServicesChangeListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/print/IPrintServicesChangeListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/print/IPrintServicesChangeListener$Stub$Proxy;->onPrintServicesChanged()V
-Landroid/print/IPrintServicesChangeListener$Stub;
Landroid/print/IPrintServicesChangeListener$Stub;-><init>()V
Landroid/print/IPrintServicesChangeListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/print/IPrintServicesChangeListener;
Landroid/print/IPrintServicesChangeListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/print/IPrintServicesChangeListener$Stub;->TRANSACTION_onPrintServicesChanged:I
-Landroid/print/IPrintServicesChangeListener;
Landroid/print/IPrintServicesChangeListener;->onPrintServicesChanged()V
-Landroid/print/IPrintSpooler$Stub$Proxy;
Landroid/print/IPrintSpooler$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/print/IPrintSpooler$Stub$Proxy;->clearCustomPrinterIconCache(Landroid/print/IPrintSpoolerCallbacks;I)V
Landroid/print/IPrintSpooler$Stub$Proxy;->createPrintJob(Landroid/print/PrintJobInfo;)V
@@ -58765,7 +54721,6 @@
Landroid/print/IPrintSpooler$Stub$Proxy;->setStatus(Landroid/print/PrintJobId;Ljava/lang/CharSequence;)V
Landroid/print/IPrintSpooler$Stub$Proxy;->setStatusRes(Landroid/print/PrintJobId;ILjava/lang/CharSequence;)V
Landroid/print/IPrintSpooler$Stub$Proxy;->writePrintJobData(Landroid/os/ParcelFileDescriptor;Landroid/print/PrintJobId;)V
-Landroid/print/IPrintSpooler$Stub;
Landroid/print/IPrintSpooler$Stub;-><init>()V
Landroid/print/IPrintSpooler$Stub;->asInterface(Landroid/os/IBinder;)Landroid/print/IPrintSpooler;
Landroid/print/IPrintSpooler$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -58785,7 +54740,6 @@
Landroid/print/IPrintSpooler$Stub;->TRANSACTION_setStatus:I
Landroid/print/IPrintSpooler$Stub;->TRANSACTION_setStatusRes:I
Landroid/print/IPrintSpooler$Stub;->TRANSACTION_writePrintJobData:I
-Landroid/print/IPrintSpooler;
Landroid/print/IPrintSpooler;->clearCustomPrinterIconCache(Landroid/print/IPrintSpoolerCallbacks;I)V
Landroid/print/IPrintSpooler;->createPrintJob(Landroid/print/PrintJobInfo;)V
Landroid/print/IPrintSpooler;->getCustomPrinterIcon(Landroid/print/PrinterId;Landroid/print/IPrintSpoolerCallbacks;I)V
@@ -58802,7 +54756,6 @@
Landroid/print/IPrintSpooler;->setStatus(Landroid/print/PrintJobId;Ljava/lang/CharSequence;)V
Landroid/print/IPrintSpooler;->setStatusRes(Landroid/print/PrintJobId;ILjava/lang/CharSequence;)V
Landroid/print/IPrintSpooler;->writePrintJobData(Landroid/os/ParcelFileDescriptor;Landroid/print/PrintJobId;)V
-Landroid/print/IPrintSpoolerCallbacks$Stub$Proxy;
Landroid/print/IPrintSpoolerCallbacks$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/print/IPrintSpoolerCallbacks$Stub$Proxy;->customPrinterIconCacheCleared(I)V
Landroid/print/IPrintSpoolerCallbacks$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
@@ -58814,7 +54767,6 @@
Landroid/print/IPrintSpoolerCallbacks$Stub$Proxy;->onGetPrintJobInfosResult(Ljava/util/List;I)V
Landroid/print/IPrintSpoolerCallbacks$Stub$Proxy;->onSetPrintJobStateResult(ZI)V
Landroid/print/IPrintSpoolerCallbacks$Stub$Proxy;->onSetPrintJobTagResult(ZI)V
-Landroid/print/IPrintSpoolerCallbacks$Stub;
Landroid/print/IPrintSpoolerCallbacks$Stub;-><init>()V
Landroid/print/IPrintSpoolerCallbacks$Stub;->asInterface(Landroid/os/IBinder;)Landroid/print/IPrintSpoolerCallbacks;
Landroid/print/IPrintSpoolerCallbacks$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -58826,7 +54778,6 @@
Landroid/print/IPrintSpoolerCallbacks$Stub;->TRANSACTION_onGetPrintJobInfosResult:I
Landroid/print/IPrintSpoolerCallbacks$Stub;->TRANSACTION_onSetPrintJobStateResult:I
Landroid/print/IPrintSpoolerCallbacks$Stub;->TRANSACTION_onSetPrintJobTagResult:I
-Landroid/print/IPrintSpoolerCallbacks;
Landroid/print/IPrintSpoolerCallbacks;->customPrinterIconCacheCleared(I)V
Landroid/print/IPrintSpoolerCallbacks;->onCancelPrintJobResult(ZI)V
Landroid/print/IPrintSpoolerCallbacks;->onCustomPrinterIconCached(I)V
@@ -58835,7 +54786,6 @@
Landroid/print/IPrintSpoolerCallbacks;->onGetPrintJobInfosResult(Ljava/util/List;I)V
Landroid/print/IPrintSpoolerCallbacks;->onSetPrintJobStateResult(ZI)V
Landroid/print/IPrintSpoolerCallbacks;->onSetPrintJobTagResult(ZI)V
-Landroid/print/IPrintSpoolerClient$Stub$Proxy;
Landroid/print/IPrintSpoolerClient$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/print/IPrintSpoolerClient$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/print/IPrintSpoolerClient$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -58843,7 +54793,6 @@
Landroid/print/IPrintSpoolerClient$Stub$Proxy;->onAllPrintJobsHandled()V
Landroid/print/IPrintSpoolerClient$Stub$Proxy;->onPrintJobQueued(Landroid/print/PrintJobInfo;)V
Landroid/print/IPrintSpoolerClient$Stub$Proxy;->onPrintJobStateChanged(Landroid/print/PrintJobInfo;)V
-Landroid/print/IPrintSpoolerClient$Stub;
Landroid/print/IPrintSpoolerClient$Stub;-><init>()V
Landroid/print/IPrintSpoolerClient$Stub;->asInterface(Landroid/os/IBinder;)Landroid/print/IPrintSpoolerClient;
Landroid/print/IPrintSpoolerClient$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -58851,12 +54800,10 @@
Landroid/print/IPrintSpoolerClient$Stub;->TRANSACTION_onAllPrintJobsHandled:I
Landroid/print/IPrintSpoolerClient$Stub;->TRANSACTION_onPrintJobQueued:I
Landroid/print/IPrintSpoolerClient$Stub;->TRANSACTION_onPrintJobStateChanged:I
-Landroid/print/IPrintSpoolerClient;
Landroid/print/IPrintSpoolerClient;->onAllPrintJobsForServiceHandled(Landroid/content/ComponentName;)V
Landroid/print/IPrintSpoolerClient;->onAllPrintJobsHandled()V
Landroid/print/IPrintSpoolerClient;->onPrintJobQueued(Landroid/print/PrintJobInfo;)V
Landroid/print/IPrintSpoolerClient;->onPrintJobStateChanged(Landroid/print/PrintJobInfo;)V
-Landroid/print/IWriteResultCallback$Stub$Proxy;
Landroid/print/IWriteResultCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/print/IWriteResultCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/print/IWriteResultCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -58864,7 +54811,6 @@
Landroid/print/IWriteResultCallback$Stub$Proxy;->onWriteFailed(Ljava/lang/CharSequence;I)V
Landroid/print/IWriteResultCallback$Stub$Proxy;->onWriteFinished([Landroid/print/PageRange;I)V
Landroid/print/IWriteResultCallback$Stub$Proxy;->onWriteStarted(Landroid/os/ICancellationSignal;I)V
-Landroid/print/IWriteResultCallback$Stub;
Landroid/print/IWriteResultCallback$Stub;-><init>()V
Landroid/print/IWriteResultCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/print/IWriteResultCallback;
Landroid/print/IWriteResultCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -58872,7 +54818,6 @@
Landroid/print/IWriteResultCallback$Stub;->TRANSACTION_onWriteFailed:I
Landroid/print/IWriteResultCallback$Stub;->TRANSACTION_onWriteFinished:I
Landroid/print/IWriteResultCallback$Stub;->TRANSACTION_onWriteStarted:I
-Landroid/print/IWriteResultCallback;
Landroid/print/IWriteResultCallback;->onWriteCanceled(I)V
Landroid/print/IWriteResultCallback;->onWriteFailed(Ljava/lang/CharSequence;I)V
Landroid/print/IWriteResultCallback;->onWriteFinished([Landroid/print/PageRange;I)V
@@ -58889,8 +54834,6 @@
Landroid/print/pdf/PrintedPdfDocument;->mPageWidth:I
Landroid/print/pdf/PrintedPdfDocument;->POINTS_IN_INCH:I
Landroid/print/PrintAttributes$Builder;->mAttributes:Landroid/print/PrintAttributes;
-Landroid/print/PrintAttributes$ColorMode;
-Landroid/print/PrintAttributes$DuplexMode;
Landroid/print/PrintAttributes$Margins;->createFromParcel(Landroid/os/Parcel;)Landroid/print/PrintAttributes$Margins;
Landroid/print/PrintAttributes$Margins;->mBottomMils:I
Landroid/print/PrintAttributes$Margins;->mLeftMils:I
@@ -58941,7 +54884,6 @@
Landroid/print/PrintAttributes;->VALID_COLOR_MODES:I
Landroid/print/PrintAttributes;->VALID_DUPLEX_MODES:I
Landroid/print/PrintDocumentInfo$Builder;->mPrototype:Landroid/print/PrintDocumentInfo;
-Landroid/print/PrintDocumentInfo$ContentType;
Landroid/print/PrintDocumentInfo;-><init>()V
Landroid/print/PrintDocumentInfo;-><init>(Landroid/os/Parcel;)V
Landroid/print/PrintDocumentInfo;-><init>(Landroid/print/PrintDocumentInfo;)V
@@ -58981,16 +54923,11 @@
Landroid/print/PrinterCapabilitiesInfo;->writeMargins(Landroid/print/PrintAttributes$Margins;Landroid/os/Parcel;)V
Landroid/print/PrinterCapabilitiesInfo;->writeMediaSizes(Landroid/os/Parcel;)V
Landroid/print/PrinterCapabilitiesInfo;->writeResolutions(Landroid/os/Parcel;)V
-Landroid/print/PrinterDiscoverySession$OnPrintersChangeListener;
Landroid/print/PrinterDiscoverySession$OnPrintersChangeListener;->onPrintersChanged()V
-Landroid/print/PrinterDiscoverySession$PrinterDiscoveryObserver;
Landroid/print/PrinterDiscoverySession$PrinterDiscoveryObserver;-><init>(Landroid/print/PrinterDiscoverySession;)V
Landroid/print/PrinterDiscoverySession$PrinterDiscoveryObserver;->mWeakSession:Ljava/lang/ref/WeakReference;
Landroid/print/PrinterDiscoverySession$PrinterDiscoveryObserver;->onPrintersAdded(Landroid/content/pm/ParceledListSlice;)V
Landroid/print/PrinterDiscoverySession$PrinterDiscoveryObserver;->onPrintersRemoved(Landroid/content/pm/ParceledListSlice;)V
-Landroid/print/PrinterDiscoverySession$SessionHandler;
-Landroid/print/PrinterDiscoverySession$SessionHandler;-><init>(Landroid/os/Looper;)V
-Landroid/print/PrinterDiscoverySession;
Landroid/print/PrinterDiscoverySession;-><init>(Landroid/print/IPrintManager;Landroid/content/Context;I)V
Landroid/print/PrinterDiscoverySession;->destroy()V
Landroid/print/PrinterDiscoverySession;->destroyNoCheck()V
@@ -59032,7 +54969,6 @@
Landroid/print/PrinterInfo$Builder;->mName:Ljava/lang/String;
Landroid/print/PrinterInfo$Builder;->mPrinterId:Landroid/print/PrinterId;
Landroid/print/PrinterInfo$Builder;->mStatus:I
-Landroid/print/PrinterInfo$Status;
Landroid/print/PrinterInfo;-><init>(Landroid/os/Parcel;)V
Landroid/print/PrinterInfo;-><init>(Landroid/print/PrinterId;Ljava/lang/String;IIZLjava/lang/String;Landroid/app/PendingIntent;Landroid/print/PrinterCapabilitiesInfo;I)V
Landroid/print/PrinterInfo;->checkName(Ljava/lang/String;)Ljava/lang/String;
@@ -59050,15 +54986,11 @@
Landroid/print/PrinterInfo;->mInfoIntent:Landroid/app/PendingIntent;
Landroid/print/PrinterInfo;->mName:Ljava/lang/String;
Landroid/print/PrinterInfo;->mStatus:I
-Landroid/print/PrintFileDocumentAdapter$WriteFileAsyncTask;
-Landroid/print/PrintFileDocumentAdapter$WriteFileAsyncTask;-><init>(Landroid/os/ParcelFileDescriptor;Landroid/os/CancellationSignal;Landroid/print/PrintDocumentAdapter$WriteResultCallback;)V
-Landroid/print/PrintFileDocumentAdapter$WriteFileAsyncTask;->doInBackground([[Ljava/lang/Void;)Ljava/lang/Void;
Landroid/print/PrintFileDocumentAdapter$WriteFileAsyncTask;->mCancellationSignal:Landroid/os/CancellationSignal;
Landroid/print/PrintFileDocumentAdapter$WriteFileAsyncTask;->mDestination:Landroid/os/ParcelFileDescriptor;
Landroid/print/PrintFileDocumentAdapter$WriteFileAsyncTask;->mResultCallback:Landroid/print/PrintDocumentAdapter$WriteResultCallback;
Landroid/print/PrintFileDocumentAdapter$WriteFileAsyncTask;->onCancelled(Ljava/lang/Void;)V
Landroid/print/PrintFileDocumentAdapter$WriteFileAsyncTask;->onPostExecute(Ljava/lang/Void;)V
-Landroid/print/PrintFileDocumentAdapter;
Landroid/print/PrintFileDocumentAdapter;-><init>(Landroid/content/Context;Ljava/io/File;Landroid/print/PrintDocumentInfo;)V
Landroid/print/PrintFileDocumentAdapter;->LOG_TAG:Ljava/lang/String;
Landroid/print/PrintFileDocumentAdapter;->mContext:Landroid/content/Context;
@@ -59077,7 +55009,6 @@
Landroid/print/PrintJobInfo$Builder;->mPrototype:Landroid/print/PrintJobInfo;
Landroid/print/PrintJobInfo$Builder;->setProgress(F)V
Landroid/print/PrintJobInfo$Builder;->setStatus(Ljava/lang/CharSequence;)V
-Landroid/print/PrintJobInfo$State;
Landroid/print/PrintJobInfo;-><init>()V
Landroid/print/PrintJobInfo;-><init>(Landroid/os/Parcel;)V
Landroid/print/PrintJobInfo;-><init>(Landroid/print/PrintJobInfo;)V
@@ -59125,27 +55056,19 @@
Landroid/print/PrintJobInfo;->STATE_ANY_ACTIVE:I
Landroid/print/PrintJobInfo;->STATE_ANY_SCHEDULED:I
Landroid/print/PrintJobInfo;->STATE_ANY_VISIBLE_TO_CLIENTS:I
-Landroid/print/PrintManager$PrintDocumentAdapterDelegate$DestroyableCallback;
Landroid/print/PrintManager$PrintDocumentAdapterDelegate$DestroyableCallback;->destroy()V
-Landroid/print/PrintManager$PrintDocumentAdapterDelegate$MyHandler;
-Landroid/print/PrintManager$PrintDocumentAdapterDelegate$MyHandler;-><init>(Landroid/os/Looper;)V
Landroid/print/PrintManager$PrintDocumentAdapterDelegate$MyHandler;->MSG_ON_FINISH:I
Landroid/print/PrintManager$PrintDocumentAdapterDelegate$MyHandler;->MSG_ON_KILL:I
Landroid/print/PrintManager$PrintDocumentAdapterDelegate$MyHandler;->MSG_ON_LAYOUT:I
Landroid/print/PrintManager$PrintDocumentAdapterDelegate$MyHandler;->MSG_ON_START:I
Landroid/print/PrintManager$PrintDocumentAdapterDelegate$MyHandler;->MSG_ON_WRITE:I
-Landroid/print/PrintManager$PrintDocumentAdapterDelegate$MyLayoutResultCallback;
-Landroid/print/PrintManager$PrintDocumentAdapterDelegate$MyLayoutResultCallback;-><init>(Landroid/print/ILayoutResultCallback;I)V
Landroid/print/PrintManager$PrintDocumentAdapterDelegate$MyLayoutResultCallback;->destroy()V
Landroid/print/PrintManager$PrintDocumentAdapterDelegate$MyLayoutResultCallback;->mCallback:Landroid/print/ILayoutResultCallback;
Landroid/print/PrintManager$PrintDocumentAdapterDelegate$MyLayoutResultCallback;->mSequence:I
-Landroid/print/PrintManager$PrintDocumentAdapterDelegate$MyWriteResultCallback;
-Landroid/print/PrintManager$PrintDocumentAdapterDelegate$MyWriteResultCallback;-><init>(Landroid/print/IWriteResultCallback;Landroid/os/ParcelFileDescriptor;I)V
Landroid/print/PrintManager$PrintDocumentAdapterDelegate$MyWriteResultCallback;->destroy()V
Landroid/print/PrintManager$PrintDocumentAdapterDelegate$MyWriteResultCallback;->mCallback:Landroid/print/IWriteResultCallback;
Landroid/print/PrintManager$PrintDocumentAdapterDelegate$MyWriteResultCallback;->mFd:Landroid/os/ParcelFileDescriptor;
Landroid/print/PrintManager$PrintDocumentAdapterDelegate$MyWriteResultCallback;->mSequence:I
-Landroid/print/PrintManager$PrintDocumentAdapterDelegate;
Landroid/print/PrintManager$PrintDocumentAdapterDelegate;-><init>(Landroid/app/Activity;Landroid/print/PrintDocumentAdapter;)V
Landroid/print/PrintManager$PrintDocumentAdapterDelegate;->destroyLocked()V
Landroid/print/PrintManager$PrintDocumentAdapterDelegate;->finish()V
@@ -59161,22 +55084,18 @@
Landroid/print/PrintManager$PrintDocumentAdapterDelegate;->setObserver(Landroid/print/IPrintDocumentAdapterObserver;)V
Landroid/print/PrintManager$PrintDocumentAdapterDelegate;->start()V
Landroid/print/PrintManager$PrintDocumentAdapterDelegate;->write([Landroid/print/PageRange;Landroid/os/ParcelFileDescriptor;Landroid/print/IWriteResultCallback;I)V
-Landroid/print/PrintManager$PrintJobStateChangeListener;
Landroid/print/PrintManager$PrintJobStateChangeListener;->onPrintJobStateChanged(Landroid/print/PrintJobId;)V
-Landroid/print/PrintManager$PrintJobStateChangeListenerWrapper;
Landroid/print/PrintManager$PrintJobStateChangeListenerWrapper;-><init>(Landroid/print/PrintManager$PrintJobStateChangeListener;Landroid/os/Handler;)V
Landroid/print/PrintManager$PrintJobStateChangeListenerWrapper;->destroy()V
Landroid/print/PrintManager$PrintJobStateChangeListenerWrapper;->getListener()Landroid/print/PrintManager$PrintJobStateChangeListener;
Landroid/print/PrintManager$PrintJobStateChangeListenerWrapper;->mWeakHandler:Ljava/lang/ref/WeakReference;
Landroid/print/PrintManager$PrintJobStateChangeListenerWrapper;->mWeakListener:Ljava/lang/ref/WeakReference;
Landroid/print/PrintManager$PrintJobStateChangeListenerWrapper;->onPrintJobStateChanged(Landroid/print/PrintJobId;)V
-Landroid/print/PrintManager$PrintServiceRecommendationsChangeListenerWrapper;
Landroid/print/PrintManager$PrintServiceRecommendationsChangeListenerWrapper;-><init>(Landroid/print/PrintManager$PrintServiceRecommendationsChangeListener;Landroid/os/Handler;)V
Landroid/print/PrintManager$PrintServiceRecommendationsChangeListenerWrapper;->destroy()V
Landroid/print/PrintManager$PrintServiceRecommendationsChangeListenerWrapper;->mWeakHandler:Ljava/lang/ref/WeakReference;
Landroid/print/PrintManager$PrintServiceRecommendationsChangeListenerWrapper;->mWeakListener:Ljava/lang/ref/WeakReference;
Landroid/print/PrintManager$PrintServiceRecommendationsChangeListenerWrapper;->onRecommendationsChanged()V
-Landroid/print/PrintManager$PrintServicesChangeListenerWrapper;
Landroid/print/PrintManager$PrintServicesChangeListenerWrapper;-><init>(Landroid/print/PrintManager$PrintServicesChangeListener;Landroid/os/Handler;)V
Landroid/print/PrintManager$PrintServicesChangeListenerWrapper;->destroy()V
Landroid/print/PrintManager$PrintServicesChangeListenerWrapper;->mWeakHandler:Ljava/lang/ref/WeakReference;
@@ -59211,17 +55130,11 @@
Landroid/print/PrintManager;->removePrintJobStateChangeListener(Landroid/print/PrintManager$PrintJobStateChangeListener;)V
Landroid/print/PrintManager;->restartPrintJob(Landroid/print/PrintJobId;)V
Landroid/print/PrintManager;->setPrintServiceEnabled(Landroid/content/ComponentName;Z)V
-Landroid/print/PrintServiceRecommendationsLoader$MyHandler;
-Landroid/print/PrintServiceRecommendationsLoader$MyHandler;-><init>()V
-Landroid/print/PrintServiceRecommendationsLoader;
Landroid/print/PrintServiceRecommendationsLoader;-><init>(Landroid/print/PrintManager;Landroid/content/Context;)V
Landroid/print/PrintServiceRecommendationsLoader;->mHandler:Landroid/os/Handler;
Landroid/print/PrintServiceRecommendationsLoader;->mListener:Landroid/print/PrintManager$PrintServiceRecommendationsChangeListener;
Landroid/print/PrintServiceRecommendationsLoader;->mPrintManager:Landroid/print/PrintManager;
Landroid/print/PrintServiceRecommendationsLoader;->queueNewResult()V
-Landroid/print/PrintServicesLoader$MyHandler;
-Landroid/print/PrintServicesLoader$MyHandler;-><init>()V
-Landroid/print/PrintServicesLoader;
Landroid/print/PrintServicesLoader;-><init>(Landroid/print/PrintManager;Landroid/content/Context;I)V
Landroid/print/PrintServicesLoader;->mHandler:Landroid/os/Handler;
Landroid/print/PrintServicesLoader;->mListener:Landroid/print/PrintManager$PrintServicesChangeListener;
@@ -59232,7 +55145,6 @@
Landroid/printservice/CustomPrinterIconCallback;->LOG_TAG:Ljava/lang/String;
Landroid/printservice/CustomPrinterIconCallback;->mObserver:Landroid/printservice/IPrintServiceClient;
Landroid/printservice/CustomPrinterIconCallback;->mPrinterId:Landroid/print/PrinterId;
-Landroid/printservice/IPrintService$Stub$Proxy;
Landroid/printservice/IPrintService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/printservice/IPrintService$Stub$Proxy;->createPrinterDiscoverySession()V
Landroid/printservice/IPrintService$Stub$Proxy;->destroyPrinterDiscoverySession()V
@@ -59247,7 +55159,6 @@
Landroid/printservice/IPrintService$Stub$Proxy;->stopPrinterDiscovery()V
Landroid/printservice/IPrintService$Stub$Proxy;->stopPrinterStateTracking(Landroid/print/PrinterId;)V
Landroid/printservice/IPrintService$Stub$Proxy;->validatePrinters(Ljava/util/List;)V
-Landroid/printservice/IPrintService$Stub;
Landroid/printservice/IPrintService$Stub;-><init>()V
Landroid/printservice/IPrintService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/printservice/IPrintService;
Landroid/printservice/IPrintService$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -59262,7 +55173,6 @@
Landroid/printservice/IPrintService$Stub;->TRANSACTION_stopPrinterDiscovery:I
Landroid/printservice/IPrintService$Stub;->TRANSACTION_stopPrinterStateTracking:I
Landroid/printservice/IPrintService$Stub;->TRANSACTION_validatePrinters:I
-Landroid/printservice/IPrintService;
Landroid/printservice/IPrintService;->createPrinterDiscoverySession()V
Landroid/printservice/IPrintService;->destroyPrinterDiscoverySession()V
Landroid/printservice/IPrintService;->onPrintJobQueued(Landroid/print/PrintJobInfo;)V
@@ -59274,7 +55184,6 @@
Landroid/printservice/IPrintService;->stopPrinterDiscovery()V
Landroid/printservice/IPrintService;->stopPrinterStateTracking(Landroid/print/PrinterId;)V
Landroid/printservice/IPrintService;->validatePrinters(Ljava/util/List;)V
-Landroid/printservice/IPrintServiceClient$Stub$Proxy;
Landroid/printservice/IPrintServiceClient$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/printservice/IPrintServiceClient$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/printservice/IPrintServiceClient$Stub$Proxy;->getPrintJobInfo(Landroid/print/PrintJobId;)Landroid/print/PrintJobInfo;
@@ -59289,7 +55198,6 @@
Landroid/printservice/IPrintServiceClient$Stub$Proxy;->setStatus(Landroid/print/PrintJobId;Ljava/lang/CharSequence;)V
Landroid/printservice/IPrintServiceClient$Stub$Proxy;->setStatusRes(Landroid/print/PrintJobId;ILjava/lang/CharSequence;)V
Landroid/printservice/IPrintServiceClient$Stub$Proxy;->writePrintJobData(Landroid/os/ParcelFileDescriptor;Landroid/print/PrintJobId;)V
-Landroid/printservice/IPrintServiceClient$Stub;
Landroid/printservice/IPrintServiceClient$Stub;-><init>()V
Landroid/printservice/IPrintServiceClient$Stub;->asInterface(Landroid/os/IBinder;)Landroid/printservice/IPrintServiceClient;
Landroid/printservice/IPrintServiceClient$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -59304,7 +55212,6 @@
Landroid/printservice/IPrintServiceClient$Stub;->TRANSACTION_setStatus:I
Landroid/printservice/IPrintServiceClient$Stub;->TRANSACTION_setStatusRes:I
Landroid/printservice/IPrintServiceClient$Stub;->TRANSACTION_writePrintJobData:I
-Landroid/printservice/IPrintServiceClient;
Landroid/printservice/IPrintServiceClient;->getPrintJobInfo(Landroid/print/PrintJobId;)Landroid/print/PrintJobInfo;
Landroid/printservice/IPrintServiceClient;->getPrintJobInfos()Ljava/util/List;
Landroid/printservice/IPrintServiceClient;->onCustomPrinterIconLoaded(Landroid/print/PrinterId;Landroid/graphics/drawable/Icon;)V
@@ -59348,8 +55255,6 @@
Landroid/printservice/PrintJob;->mDocument:Landroid/printservice/PrintDocument;
Landroid/printservice/PrintJob;->mPrintServiceClient:Landroid/printservice/IPrintServiceClient;
Landroid/printservice/PrintJob;->setState(ILjava/lang/String;)Z
-Landroid/printservice/PrintService$ServiceHandler;
-Landroid/printservice/PrintService$ServiceHandler;-><init>(Landroid/os/Looper;)V
Landroid/printservice/PrintService$ServiceHandler;->MSG_CREATE_PRINTER_DISCOVERY_SESSION:I
Landroid/printservice/PrintService$ServiceHandler;->MSG_DESTROY_PRINTER_DISCOVERY_SESSION:I
Landroid/printservice/PrintService$ServiceHandler;->MSG_ON_PRINTJOB_QUEUED:I
@@ -59386,41 +55291,32 @@
Landroid/printservice/PrintServiceInfo;->mSettingsActivityName:Ljava/lang/String;
Landroid/printservice/PrintServiceInfo;->setIsEnabled(Z)V
Landroid/printservice/PrintServiceInfo;->TAG_PRINT_SERVICE:Ljava/lang/String;
-Landroid/printservice/recommendation/IRecommendationsChangeListener$Stub$Proxy;
Landroid/printservice/recommendation/IRecommendationsChangeListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/printservice/recommendation/IRecommendationsChangeListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/printservice/recommendation/IRecommendationsChangeListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/printservice/recommendation/IRecommendationsChangeListener$Stub$Proxy;->onRecommendationsChanged()V
-Landroid/printservice/recommendation/IRecommendationsChangeListener$Stub;
Landroid/printservice/recommendation/IRecommendationsChangeListener$Stub;-><init>()V
Landroid/printservice/recommendation/IRecommendationsChangeListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/printservice/recommendation/IRecommendationsChangeListener;
Landroid/printservice/recommendation/IRecommendationsChangeListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/printservice/recommendation/IRecommendationsChangeListener$Stub;->TRANSACTION_onRecommendationsChanged:I
-Landroid/printservice/recommendation/IRecommendationsChangeListener;
Landroid/printservice/recommendation/IRecommendationsChangeListener;->onRecommendationsChanged()V
-Landroid/printservice/recommendation/IRecommendationService$Stub$Proxy;
Landroid/printservice/recommendation/IRecommendationService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/printservice/recommendation/IRecommendationService$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/printservice/recommendation/IRecommendationService$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/printservice/recommendation/IRecommendationService$Stub$Proxy;->registerCallbacks(Landroid/printservice/recommendation/IRecommendationServiceCallbacks;)V
-Landroid/printservice/recommendation/IRecommendationService$Stub;
Landroid/printservice/recommendation/IRecommendationService$Stub;-><init>()V
Landroid/printservice/recommendation/IRecommendationService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/printservice/recommendation/IRecommendationService;
Landroid/printservice/recommendation/IRecommendationService$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/printservice/recommendation/IRecommendationService$Stub;->TRANSACTION_registerCallbacks:I
-Landroid/printservice/recommendation/IRecommendationService;
Landroid/printservice/recommendation/IRecommendationService;->registerCallbacks(Landroid/printservice/recommendation/IRecommendationServiceCallbacks;)V
-Landroid/printservice/recommendation/IRecommendationServiceCallbacks$Stub$Proxy;
Landroid/printservice/recommendation/IRecommendationServiceCallbacks$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/printservice/recommendation/IRecommendationServiceCallbacks$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/printservice/recommendation/IRecommendationServiceCallbacks$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/printservice/recommendation/IRecommendationServiceCallbacks$Stub$Proxy;->onRecommendationsUpdated(Ljava/util/List;)V
-Landroid/printservice/recommendation/IRecommendationServiceCallbacks$Stub;
Landroid/printservice/recommendation/IRecommendationServiceCallbacks$Stub;-><init>()V
Landroid/printservice/recommendation/IRecommendationServiceCallbacks$Stub;->asInterface(Landroid/os/IBinder;)Landroid/printservice/recommendation/IRecommendationServiceCallbacks;
Landroid/printservice/recommendation/IRecommendationServiceCallbacks$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/printservice/recommendation/IRecommendationServiceCallbacks$Stub;->TRANSACTION_onRecommendationsUpdated:I
-Landroid/printservice/recommendation/IRecommendationServiceCallbacks;
Landroid/printservice/recommendation/IRecommendationServiceCallbacks;->onRecommendationsUpdated(Ljava/util/List;)V
Landroid/printservice/recommendation/RecommendationInfo;-><init>(Landroid/os/Parcel;)V
Landroid/printservice/recommendation/RecommendationInfo;->mDiscoveredPrinters:Ljava/util/List;
@@ -59428,8 +55324,6 @@
Landroid/printservice/recommendation/RecommendationInfo;->mPackageName:Ljava/lang/CharSequence;
Landroid/printservice/recommendation/RecommendationInfo;->mRecommendsMultiVendorService:Z
Landroid/printservice/recommendation/RecommendationInfo;->readDiscoveredPrinters(Landroid/os/Parcel;)Ljava/util/ArrayList;
-Landroid/printservice/recommendation/RecommendationService$MyHandler;
-Landroid/printservice/recommendation/RecommendationService$MyHandler;-><init>()V
Landroid/printservice/recommendation/RecommendationService$MyHandler;->MSG_CONNECT:I
Landroid/printservice/recommendation/RecommendationService$MyHandler;->MSG_DISCONNECT:I
Landroid/printservice/recommendation/RecommendationService$MyHandler;->MSG_UPDATE:I
@@ -59437,11 +55331,9 @@
Landroid/printservice/recommendation/RecommendationService;->mCallbacks:Landroid/printservice/recommendation/IRecommendationServiceCallbacks;
Landroid/printservice/recommendation/RecommendationService;->mHandler:Landroid/os/Handler;
Landroid/provider/BlockedNumberContract$BlockedNumbers;-><init>()V
-Landroid/provider/BlockedNumberContract$SystemContract$BlockSuppressionStatus;
Landroid/provider/BlockedNumberContract$SystemContract$BlockSuppressionStatus;-><init>(ZJ)V
Landroid/provider/BlockedNumberContract$SystemContract$BlockSuppressionStatus;->isSuppressed:Z
Landroid/provider/BlockedNumberContract$SystemContract$BlockSuppressionStatus;->untilTimestampMillis:J
-Landroid/provider/BlockedNumberContract$SystemContract;
Landroid/provider/BlockedNumberContract$SystemContract;-><init>()V
Landroid/provider/BlockedNumberContract$SystemContract;->ACTION_BLOCK_SUPPRESSION_STATE_CHANGED:Ljava/lang/String;
Landroid/provider/BlockedNumberContract$SystemContract;->endBlockSuppression(Landroid/content/Context;)V
@@ -59489,18 +55381,15 @@
Landroid/provider/Browser;->HISTORY_PROJECTION_TOUCH_ICON_INDEX:I
Landroid/provider/Browser;->LOGTAG:Ljava/lang/String;
Landroid/provider/Browser;->MAX_HISTORY_COUNT:I
-Landroid/provider/BrowserContract$Accounts;
Landroid/provider/BrowserContract$Accounts;-><init>()V
Landroid/provider/BrowserContract$Accounts;->ACCOUNT_NAME:Ljava/lang/String;
Landroid/provider/BrowserContract$Accounts;->ACCOUNT_TYPE:Ljava/lang/String;
Landroid/provider/BrowserContract$Accounts;->ROOT_ID:Ljava/lang/String;
-Landroid/provider/BrowserContract$BaseSyncColumns;
Landroid/provider/BrowserContract$BaseSyncColumns;->SYNC1:Ljava/lang/String;
Landroid/provider/BrowserContract$BaseSyncColumns;->SYNC2:Ljava/lang/String;
Landroid/provider/BrowserContract$BaseSyncColumns;->SYNC3:Ljava/lang/String;
Landroid/provider/BrowserContract$BaseSyncColumns;->SYNC4:Ljava/lang/String;
Landroid/provider/BrowserContract$BaseSyncColumns;->SYNC5:Ljava/lang/String;
-Landroid/provider/BrowserContract$Bookmarks;
Landroid/provider/BrowserContract$Bookmarks;-><init>()V
Landroid/provider/BrowserContract$Bookmarks;->BOOKMARK_TYPE_BOOKMARK:I
Landroid/provider/BrowserContract$Bookmarks;->BOOKMARK_TYPE_BOOKMARK_BAR_FOLDER:I
@@ -59520,7 +55409,6 @@
Landroid/provider/BrowserContract$Bookmarks;->POSITION:Ljava/lang/String;
Landroid/provider/BrowserContract$Bookmarks;->QUERY_PARAMETER_SHOW_DELETED:Ljava/lang/String;
Landroid/provider/BrowserContract$Bookmarks;->TYPE:Ljava/lang/String;
-Landroid/provider/BrowserContract$ChromeSyncColumns;
Landroid/provider/BrowserContract$ChromeSyncColumns;-><init>()V
Landroid/provider/BrowserContract$ChromeSyncColumns;->CLIENT_UNIQUE:Ljava/lang/String;
Landroid/provider/BrowserContract$ChromeSyncColumns;->FOLDER_NAME_BOOKMARKS:Ljava/lang/String;
@@ -59528,35 +55416,27 @@
Landroid/provider/BrowserContract$ChromeSyncColumns;->FOLDER_NAME_OTHER_BOOKMARKS:Ljava/lang/String;
Landroid/provider/BrowserContract$ChromeSyncColumns;->FOLDER_NAME_ROOT:Ljava/lang/String;
Landroid/provider/BrowserContract$ChromeSyncColumns;->SERVER_UNIQUE:Ljava/lang/String;
-Landroid/provider/BrowserContract$Combined;
Landroid/provider/BrowserContract$Combined;-><init>()V
Landroid/provider/BrowserContract$Combined;->IS_BOOKMARK:Ljava/lang/String;
-Landroid/provider/BrowserContract$CommonColumns;
Landroid/provider/BrowserContract$CommonColumns;->DATE_CREATED:Ljava/lang/String;
Landroid/provider/BrowserContract$CommonColumns;->TITLE:Ljava/lang/String;
Landroid/provider/BrowserContract$CommonColumns;->URL:Ljava/lang/String;
Landroid/provider/BrowserContract$CommonColumns;->_ID:Ljava/lang/String;
-Landroid/provider/BrowserContract$History;
Landroid/provider/BrowserContract$History;-><init>()V
Landroid/provider/BrowserContract$History;->CONTENT_ITEM_TYPE:Ljava/lang/String;
Landroid/provider/BrowserContract$History;->CONTENT_TYPE:Ljava/lang/String;
-Landroid/provider/BrowserContract$HistoryColumns;
Landroid/provider/BrowserContract$HistoryColumns;->DATE_LAST_VISITED:Ljava/lang/String;
Landroid/provider/BrowserContract$HistoryColumns;->USER_ENTERED:Ljava/lang/String;
Landroid/provider/BrowserContract$HistoryColumns;->VISITS:Ljava/lang/String;
-Landroid/provider/BrowserContract$ImageColumns;
Landroid/provider/BrowserContract$ImageColumns;->FAVICON:Ljava/lang/String;
Landroid/provider/BrowserContract$ImageColumns;->THUMBNAIL:Ljava/lang/String;
Landroid/provider/BrowserContract$ImageColumns;->TOUCH_ICON:Ljava/lang/String;
-Landroid/provider/BrowserContract$ImageMappingColumns;
Landroid/provider/BrowserContract$ImageMappingColumns;->IMAGE_ID:Ljava/lang/String;
Landroid/provider/BrowserContract$ImageMappingColumns;->URL:Ljava/lang/String;
-Landroid/provider/BrowserContract$ImageMappings;
Landroid/provider/BrowserContract$ImageMappings;-><init>()V
Landroid/provider/BrowserContract$ImageMappings;->CONTENT_ITEM_TYPE:Ljava/lang/String;
Landroid/provider/BrowserContract$ImageMappings;->CONTENT_TYPE:Ljava/lang/String;
Landroid/provider/BrowserContract$ImageMappings;->CONTENT_URI:Landroid/net/Uri;
-Landroid/provider/BrowserContract$Images;
Landroid/provider/BrowserContract$Images;-><init>()V
Landroid/provider/BrowserContract$Images;->CONTENT_ITEM_TYPE:Ljava/lang/String;
Landroid/provider/BrowserContract$Images;->CONTENT_TYPE:Ljava/lang/String;
@@ -59566,7 +55446,6 @@
Landroid/provider/BrowserContract$Images;->IMAGE_TYPE_TOUCH_ICON:I
Landroid/provider/BrowserContract$Images;->TYPE:Ljava/lang/String;
Landroid/provider/BrowserContract$Images;->URL:Ljava/lang/String;
-Landroid/provider/BrowserContract$Searches;
Landroid/provider/BrowserContract$Searches;-><init>()V
Landroid/provider/BrowserContract$Searches;->CONTENT_ITEM_TYPE:Ljava/lang/String;
Landroid/provider/BrowserContract$Searches;->CONTENT_TYPE:Ljava/lang/String;
@@ -59574,7 +55453,6 @@
Landroid/provider/BrowserContract$Searches;->DATE:Ljava/lang/String;
Landroid/provider/BrowserContract$Searches;->SEARCH:Ljava/lang/String;
Landroid/provider/BrowserContract$Searches;->_ID:Ljava/lang/String;
-Landroid/provider/BrowserContract$Settings;
Landroid/provider/BrowserContract$Settings;-><init>()V
Landroid/provider/BrowserContract$Settings;->CONTENT_URI:Landroid/net/Uri;
Landroid/provider/BrowserContract$Settings;->isSyncEnabled(Landroid/content/Context;)Z
@@ -59582,14 +55460,12 @@
Landroid/provider/BrowserContract$Settings;->KEY_SYNC_ENABLED:Ljava/lang/String;
Landroid/provider/BrowserContract$Settings;->setSyncEnabled(Landroid/content/Context;Z)V
Landroid/provider/BrowserContract$Settings;->VALUE:Ljava/lang/String;
-Landroid/provider/BrowserContract$SyncColumns;
Landroid/provider/BrowserContract$SyncColumns;->ACCOUNT_NAME:Ljava/lang/String;
Landroid/provider/BrowserContract$SyncColumns;->ACCOUNT_TYPE:Ljava/lang/String;
Landroid/provider/BrowserContract$SyncColumns;->DATE_MODIFIED:Ljava/lang/String;
Landroid/provider/BrowserContract$SyncColumns;->DIRTY:Ljava/lang/String;
Landroid/provider/BrowserContract$SyncColumns;->SOURCE_ID:Ljava/lang/String;
Landroid/provider/BrowserContract$SyncColumns;->VERSION:Ljava/lang/String;
-Landroid/provider/BrowserContract$SyncState;
Landroid/provider/BrowserContract$SyncState;-><init>()V
Landroid/provider/BrowserContract$SyncState;->CONTENT_DIRECTORY:Ljava/lang/String;
Landroid/provider/BrowserContract$SyncState;->CONTENT_URI:Landroid/net/Uri;
@@ -59597,7 +55473,6 @@
Landroid/provider/BrowserContract$SyncState;->getWithUri(Landroid/content/ContentProviderClient;Landroid/accounts/Account;)Landroid/util/Pair;
Landroid/provider/BrowserContract$SyncState;->newSetOperation(Landroid/accounts/Account;[B)Landroid/content/ContentProviderOperation;
Landroid/provider/BrowserContract$SyncState;->set(Landroid/content/ContentProviderClient;Landroid/accounts/Account;[B)V
-Landroid/provider/BrowserContract;
Landroid/provider/BrowserContract;-><init>()V
Landroid/provider/BrowserContract;->AUTHORITY:Ljava/lang/String;
Landroid/provider/BrowserContract;->CALLER_IS_SYNCADAPTER:Ljava/lang/String;
@@ -59614,13 +55489,10 @@
Landroid/provider/CalendarContract$CalendarAlerts;->WHERE_FINDNEXTALARMTIME:Ljava/lang/String;
Landroid/provider/CalendarContract$CalendarAlerts;->WHERE_RESCHEDULE_MISSED_ALARMS:Ljava/lang/String;
Landroid/provider/CalendarContract$CalendarCache;-><init>()V
-Landroid/provider/CalendarContract$CalendarEntity$EntityIteratorImpl;
Landroid/provider/CalendarContract$CalendarEntity$EntityIteratorImpl;-><init>(Landroid/database/Cursor;)V
Landroid/provider/CalendarContract$CalendarEntity$EntityIteratorImpl;->getEntityAndIncrementCursor(Landroid/database/Cursor;)Landroid/content/Entity;
Landroid/provider/CalendarContract$CalendarEntity;-><init>()V
-Landroid/provider/CalendarContract$CalendarMetaData;
Landroid/provider/CalendarContract$CalendarMetaData;-><init>()V
-Landroid/provider/CalendarContract$CalendarMetaDataColumns;
Landroid/provider/CalendarContract$CalendarMetaDataColumns;->LOCAL_TIMEZONE:Ljava/lang/String;
Landroid/provider/CalendarContract$CalendarMetaDataColumns;->MAX_EVENTDAYS:Ljava/lang/String;
Landroid/provider/CalendarContract$CalendarMetaDataColumns;->MAX_INSTANCE:Ljava/lang/String;
@@ -59635,7 +55507,6 @@
Landroid/provider/CalendarContract$Events;-><init>()V
Landroid/provider/CalendarContract$Events;->DEFAULT_SORT_ORDER:Ljava/lang/String;
Landroid/provider/CalendarContract$Events;->SYNC_WRITABLE_COLUMNS:[Ljava/lang/String;
-Landroid/provider/CalendarContract$EventsEntity$EntityIteratorImpl;
Landroid/provider/CalendarContract$EventsEntity$EntityIteratorImpl;-><init>(Landroid/database/Cursor;Landroid/content/ContentProviderClient;)V
Landroid/provider/CalendarContract$EventsEntity$EntityIteratorImpl;-><init>(Landroid/database/Cursor;Landroid/content/ContentResolver;)V
Landroid/provider/CalendarContract$EventsEntity$EntityIteratorImpl;->ATTENDEES_PROJECTION:[Ljava/lang/String;
@@ -59658,9 +55529,7 @@
Landroid/provider/CalendarContract$EventsEntity$EntityIteratorImpl;->REMINDERS_PROJECTION:[Ljava/lang/String;
Landroid/provider/CalendarContract$EventsEntity$EntityIteratorImpl;->WHERE_EVENT_ID:Ljava/lang/String;
Landroid/provider/CalendarContract$EventsEntity;-><init>()V
-Landroid/provider/CalendarContract$EventsRawTimes;
Landroid/provider/CalendarContract$EventsRawTimes;-><init>()V
-Landroid/provider/CalendarContract$EventsRawTimesColumns;
Landroid/provider/CalendarContract$EventsRawTimesColumns;->DTEND_2445:Ljava/lang/String;
Landroid/provider/CalendarContract$EventsRawTimesColumns;->DTSTART_2445:Ljava/lang/String;
Landroid/provider/CalendarContract$EventsRawTimesColumns;->EVENT_ID:Ljava/lang/String;
@@ -59696,7 +55565,6 @@
Landroid/provider/CallLog;->LOG_TAG:Ljava/lang/String;
Landroid/provider/CallLog;->SHADOW_AUTHORITY:Ljava/lang/String;
Landroid/provider/CallLog;->VERBOSE_LOG:Z
-Landroid/provider/Contacts$ContactMethods$ProviderNames;
Landroid/provider/Contacts$ContactMethods$ProviderNames;->AIM:Ljava/lang/String;
Landroid/provider/Contacts$ContactMethods$ProviderNames;->GTALK:Ljava/lang/String;
Landroid/provider/Contacts$ContactMethods$ProviderNames;->ICQ:Ljava/lang/String;
@@ -59726,7 +55594,6 @@
Landroid/provider/Contacts$PeopleColumns;->SORT_STRING:Ljava/lang/String;
Landroid/provider/Contacts$Phones;-><init>()V
Landroid/provider/Contacts$Photos;-><init>()V
-Landroid/provider/Contacts$Presence;
Landroid/provider/Contacts$Presence;-><init>()V
Landroid/provider/Contacts$Presence;->CONTENT_URI:Landroid/net/Uri;
Landroid/provider/Contacts$Presence;->getPresenceIconResourceId(I)I
@@ -59736,7 +55603,6 @@
Landroid/provider/Contacts;-><init>()V
Landroid/provider/Contacts;->TAG:Ljava/lang/String;
Landroid/provider/ContactsContract$AggregationExceptions;-><init>()V
-Landroid/provider/ContactsContract$Authorization;
Landroid/provider/ContactsContract$Authorization;-><init>()V
Landroid/provider/ContactsContract$Authorization;->AUTHORIZATION_METHOD:Ljava/lang/String;
Landroid/provider/ContactsContract$Authorization;->KEY_AUTHORIZED_URI:Ljava/lang/String;
@@ -59760,7 +55626,6 @@
Landroid/provider/ContactsContract$CommonDataKinds$Website;-><init>()V
Landroid/provider/ContactsContract$CommonDataKinds;-><init>()V
Landroid/provider/ContactsContract$CommonDataKinds;->PACKAGE_COMMON:Ljava/lang/String;
-Landroid/provider/ContactsContract$ContactCounts;
Landroid/provider/ContactsContract$ContactOptionsColumns;->LR_LAST_TIME_CONTACTED:Ljava/lang/String;
Landroid/provider/ContactsContract$ContactOptionsColumns;->LR_TIMES_CONTACTED:Ljava/lang/String;
Landroid/provider/ContactsContract$ContactOptionsColumns;->RAW_LAST_TIME_CONTACTED:Ljava/lang/String;
@@ -59791,7 +55656,6 @@
Landroid/provider/ContactsContract$Directory;->ENTERPRISE_FILE_URI:Landroid/net/Uri;
Landroid/provider/ContactsContract$Directory;->isRemoteDirectory(J)Z
Landroid/provider/ContactsContract$DisplayPhoto;-><init>()V
-Landroid/provider/ContactsContract$Groups$EntityIteratorImpl;
Landroid/provider/ContactsContract$Groups$EntityIteratorImpl;-><init>(Landroid/database/Cursor;)V
Landroid/provider/ContactsContract$Groups$EntityIteratorImpl;->getEntityAndIncrementCursor(Landroid/database/Cursor;)Landroid/content/Entity;
Landroid/provider/ContactsContract$Groups;-><init>()V
@@ -59811,9 +55675,7 @@
Landroid/provider/ContactsContract$MetadataSyncState;-><init>()V
Landroid/provider/ContactsContract$PhoneLookup;-><init>()V
Landroid/provider/ContactsContract$PhoneLookup;->CONTENT_TYPE:Ljava/lang/String;
-Landroid/provider/ContactsContract$PhotoFiles;
Landroid/provider/ContactsContract$PhotoFiles;-><init>()V
-Landroid/provider/ContactsContract$PhotoFilesColumns;
Landroid/provider/ContactsContract$PhotoFilesColumns;->FILESIZE:Ljava/lang/String;
Landroid/provider/ContactsContract$PhotoFilesColumns;->HEIGHT:Ljava/lang/String;
Landroid/provider/ContactsContract$PhotoFilesColumns;->WIDTH:Ljava/lang/String;
@@ -59828,7 +55690,6 @@
Landroid/provider/ContactsContract$RawContacts$Data;-><init>()V
Landroid/provider/ContactsContract$RawContacts$DisplayPhoto;-><init>()V
Landroid/provider/ContactsContract$RawContacts$Entity;-><init>()V
-Landroid/provider/ContactsContract$RawContacts$EntityIteratorImpl;
Landroid/provider/ContactsContract$RawContacts$EntityIteratorImpl;-><init>(Landroid/database/Cursor;)V
Landroid/provider/ContactsContract$RawContacts$EntityIteratorImpl;->DATA_KEYS:[Ljava/lang/String;
Landroid/provider/ContactsContract$RawContacts$EntityIteratorImpl;->getEntityAndIncrementCursor(Landroid/database/Cursor;)Landroid/content/Entity;
@@ -59844,9 +55705,7 @@
Landroid/provider/ContactsContract$StreamItems$StreamItemPhotos;-><init>()V
Landroid/provider/ContactsContract$StreamItems;-><init>()V
Landroid/provider/ContactsContract$SyncState;-><init>()V
-Landroid/provider/ContactsContract$SyncStateColumns;
Landroid/provider/ContactsContract;->HIDDEN_COLUMN_PREFIX:Ljava/lang/String;
-Landroid/provider/ContactsInternal;
Landroid/provider/ContactsInternal;-><init>()V
Landroid/provider/ContactsInternal;->CONTACTS_URI_LOOKUP:I
Landroid/provider/ContactsInternal;->CONTACTS_URI_LOOKUP_ID:I
@@ -59935,14 +55794,12 @@
Landroid/provider/DocumentsProvider;->queryChildDocumentsForManage(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
Landroid/provider/DocumentsProvider;->registerAuthority(Ljava/lang/String;)V
Landroid/provider/DocumentsProvider;->TAG:Ljava/lang/String;
-Landroid/provider/Downloads$Impl$RequestHeaders;
Landroid/provider/Downloads$Impl$RequestHeaders;-><init>()V
Landroid/provider/Downloads$Impl$RequestHeaders;->COLUMN_DOWNLOAD_ID:Ljava/lang/String;
Landroid/provider/Downloads$Impl$RequestHeaders;->COLUMN_HEADER:Ljava/lang/String;
Landroid/provider/Downloads$Impl$RequestHeaders;->COLUMN_VALUE:Ljava/lang/String;
Landroid/provider/Downloads$Impl$RequestHeaders;->HEADERS_DB_TABLE:Ljava/lang/String;
Landroid/provider/Downloads$Impl$RequestHeaders;->URI_SEGMENT:Ljava/lang/String;
-Landroid/provider/Downloads$Impl;
Landroid/provider/Downloads$Impl;-><init>()V
Landroid/provider/Downloads$Impl;->ACTION_DOWNLOAD_COMPLETED:Ljava/lang/String;
Landroid/provider/Downloads$Impl;->ACTION_NOTIFICATION_CLICKED:Ljava/lang/String;
@@ -60016,7 +55873,6 @@
Landroid/provider/Downloads$Impl;->VISIBILITY_VISIBLE:I
Landroid/provider/Downloads$Impl;->VISIBILITY_VISIBLE_NOTIFY_COMPLETED:I
Landroid/provider/Downloads$Impl;->_DATA:Ljava/lang/String;
-Landroid/provider/Downloads;
Landroid/provider/Downloads;-><init>()V
Landroid/provider/Downloads;->QUERY_WHERE_CLAUSE:Ljava/lang/String;
Landroid/provider/Downloads;->removeAllDownloadsByPackage(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)V
@@ -60027,7 +55883,6 @@
Landroid/provider/FontRequest;->mProviderPackage:Ljava/lang/String;
Landroid/provider/FontRequest;->mQuery:Ljava/lang/String;
Landroid/provider/FontsContract$Columns;-><init>()V
-Landroid/provider/FontsContract$FontFamilyResult$FontResultStatus;
Landroid/provider/FontsContract$FontFamilyResult;-><init>(I[Landroid/provider/FontsContract$FontInfo;)V
Landroid/provider/FontsContract$FontFamilyResult;->mFonts:[Landroid/provider/FontsContract$FontInfo;
Landroid/provider/FontsContract$FontFamilyResult;->mStatusCode:I
@@ -60038,7 +55893,6 @@
Landroid/provider/FontsContract$FontInfo;->mTtcIndex:I
Landroid/provider/FontsContract$FontInfo;->mUri:Landroid/net/Uri;
Landroid/provider/FontsContract$FontInfo;->mWeight:I
-Landroid/provider/FontsContract$FontRequestCallback$FontRequestFailReason;
Landroid/provider/FontsContract;-><init>()V
Landroid/provider/FontsContract;->convertToByteArrayList([Landroid/content/pm/Signature;)Ljava/util/List;
Landroid/provider/FontsContract;->equalsByteArrayList(Ljava/util/List;Ljava/util/List;)Z
@@ -60067,7 +55921,6 @@
Landroid/provider/MediaStore$Audio$Radio;-><init>()V
Landroid/provider/MediaStore$Files;->getDirectoryUri(Ljava/lang/String;)Landroid/net/Uri;
Landroid/provider/MediaStore$Images$Media;->StoreThumbnail(Landroid/content/ContentResolver;Landroid/graphics/Bitmap;JFFI)Landroid/graphics/Bitmap;
-Landroid/provider/MediaStore$InternalThumbnails;
Landroid/provider/MediaStore$InternalThumbnails;-><init>()V
Landroid/provider/MediaStore$InternalThumbnails;->cancelThumbnailRequest(Landroid/content/ContentResolver;JLandroid/net/Uri;J)V
Landroid/provider/MediaStore$InternalThumbnails;->DEFAULT_GROUP_ID:I
@@ -60087,7 +55940,6 @@
Landroid/provider/MediaStore;->RETRANSLATE_CALL:Ljava/lang/String;
Landroid/provider/MediaStore;->TAG:Ljava/lang/String;
Landroid/provider/MediaStore;->UNHIDE_CALL:Ljava/lang/String;
-Landroid/provider/MetadataReader;
Landroid/provider/MetadataReader;-><init>()V
Landroid/provider/MetadataReader;->DEFAULT_EXIF_TAGS:[Ljava/lang/String;
Landroid/provider/MetadataReader;->getExifData(Ljava/io/InputStream;[Ljava/lang/String;)Landroid/os/Bundle;
@@ -60099,7 +55951,6 @@
Landroid/provider/MetadataReader;->TYPE_INT:I
Landroid/provider/MetadataReader;->TYPE_MAPPING:Ljava/util/Map;
Landroid/provider/MetadataReader;->TYPE_STRING:I
-Landroid/provider/OneTimeUseBuilder;
Landroid/provider/OneTimeUseBuilder;-><init>()V
Landroid/provider/OneTimeUseBuilder;->build()Ljava/lang/Object;
Landroid/provider/OneTimeUseBuilder;->checkNotUsed()V
@@ -60110,7 +55961,6 @@
Landroid/provider/SearchIndexablesContract$RawData;-><init>()V
Landroid/provider/SearchIndexablesContract$RawData;->PAYLOAD:Ljava/lang/String;
Landroid/provider/SearchIndexablesContract$RawData;->PAYLOAD_TYPE:Ljava/lang/String;
-Landroid/provider/SearchIndexablesContract$SiteMapColumns;
Landroid/provider/SearchIndexablesContract$SiteMapColumns;-><init>()V
Landroid/provider/SearchIndexablesContract$SiteMapColumns;->CHILD_CLASS:Ljava/lang/String;
Landroid/provider/SearchIndexablesContract$SiteMapColumns;->CHILD_TITLE:Ljava/lang/String;
@@ -60131,7 +55981,6 @@
Landroid/provider/SearchIndexablesProvider;->mMatcher:Landroid/content/UriMatcher;
Landroid/provider/SearchIndexablesProvider;->querySiteMapPairs()Landroid/database/Cursor;
Landroid/provider/SearchIndexablesProvider;->TAG:Ljava/lang/String;
-Landroid/provider/SearchRecentSuggestions$SuggestionColumns;
Landroid/provider/SearchRecentSuggestions$SuggestionColumns;-><init>()V
Landroid/provider/SearchRecentSuggestions$SuggestionColumns;->DATE:Ljava/lang/String;
Landroid/provider/SearchRecentSuggestions$SuggestionColumns;->DISPLAY1:Ljava/lang/String;
@@ -60146,7 +55995,6 @@
Landroid/provider/SearchRecentSuggestions;->saveRecentQueryBlocking(Ljava/lang/String;Ljava/lang/String;)V
Landroid/provider/SearchRecentSuggestions;->sWritesInProgress:Ljava/util/concurrent/Semaphore;
Landroid/provider/SearchRecentSuggestions;->waitForSave()V
-Landroid/provider/Settings$Bookmarks;
Landroid/provider/Settings$Bookmarks;-><init>()V
Landroid/provider/Settings$Bookmarks;->FOLDER:Ljava/lang/String;
Landroid/provider/Settings$Bookmarks;->getIntentForShortcut(Landroid/content/ContentResolver;C)Landroid/content/Intent;
@@ -60161,13 +56009,11 @@
Landroid/provider/Settings$Bookmarks;->sShortcutSelection:Ljava/lang/String;
Landroid/provider/Settings$Bookmarks;->TAG:Ljava/lang/String;
Landroid/provider/Settings$Bookmarks;->TITLE:Ljava/lang/String;
-Landroid/provider/Settings$ContentProviderHolder;
Landroid/provider/Settings$ContentProviderHolder;-><init>(Landroid/net/Uri;)V
Landroid/provider/Settings$ContentProviderHolder;->clearProviderForTest()V
Landroid/provider/Settings$ContentProviderHolder;->getProvider(Landroid/content/ContentResolver;)Landroid/content/IContentProvider;
Landroid/provider/Settings$ContentProviderHolder;->mLock:Ljava/lang/Object;
Landroid/provider/Settings$ContentProviderHolder;->mUri:Landroid/net/Uri;
-Landroid/provider/Settings$GenerationTracker;
Landroid/provider/Settings$GenerationTracker;-><init>(Landroid/util/MemoryIntArray;IILjava/lang/Runnable;)V
Landroid/provider/Settings$GenerationTracker;->destroy()V
Landroid/provider/Settings$GenerationTracker;->getCurrentGeneration()I
@@ -60600,7 +56446,6 @@
Landroid/provider/Settings$Global;->ZEN_SETTINGS_SUGGESTION_VIEWED:Ljava/lang/String;
Landroid/provider/Settings$Global;->ZEN_SETTINGS_UPDATED:Ljava/lang/String;
Landroid/provider/Settings$Global;->ZRAM_ENABLED:Ljava/lang/String;
-Landroid/provider/Settings$NameValueCache;
Landroid/provider/Settings$NameValueCache;-><init>(Landroid/net/Uri;Ljava/lang/String;Ljava/lang/String;Landroid/provider/Settings$ContentProviderHolder;)V
Landroid/provider/Settings$NameValueCache;->clearGenerationTrackerForTest()V
Landroid/provider/Settings$NameValueCache;->DEBUG:Z
@@ -60612,7 +56457,6 @@
Landroid/provider/Settings$NameValueCache;->NAME_EQ_PLACEHOLDER:Ljava/lang/String;
Landroid/provider/Settings$NameValueCache;->putStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZI)Z
Landroid/provider/Settings$NameValueCache;->SELECT_VALUE_PROJECTION:[Ljava/lang/String;
-Landroid/provider/Settings$ResetMode;
Landroid/provider/Settings$Secure;->ACCESSIBILITY_AUTOCLICK_DELAY:Ljava/lang/String;
Landroid/provider/Settings$Secure;->ACCESSIBILITY_AUTOCLICK_DELAY_VALIDATOR:Landroid/provider/SettingsValidators$Validator;
Landroid/provider/Settings$Secure;->ACCESSIBILITY_AUTOCLICK_ENABLED_VALIDATOR:Landroid/provider/SettingsValidators$Validator;
@@ -61035,7 +56879,6 @@
Landroid/provider/Settings$System;->WIFI_USE_STATIC_IP_VALIDATOR:Landroid/provider/SettingsValidators$Validator;
Landroid/provider/Settings$System;->WINDOW_ORIENTATION_LISTENER_LOG:Ljava/lang/String;
Landroid/provider/Settings$System;->WINDOW_ORIENTATION_LISTENER_LOG_VALIDATOR:Landroid/provider/SettingsValidators$Validator;
-Landroid/provider/Settings$UserSetupPersonalization;
Landroid/provider/Settings;->ACTION_ALL_APPS_NOTIFICATION_SETTINGS:Ljava/lang/String;
Landroid/provider/Settings;->ACTION_APPLICATION_DETAILS_SETTINGS_OPEN_BY_DEFAULT_PAGE:Ljava/lang/String;
Landroid/provider/Settings;->ACTION_APP_NOTIFICATION_REDACTION:Ljava/lang/String;
@@ -61107,25 +56950,21 @@
Landroid/provider/Settings;->ZEN_MODE_BLOCKED_EFFECTS_SETTINGS:Ljava/lang/String;
Landroid/provider/Settings;->ZEN_MODE_ONBOARDING:Ljava/lang/String;
Landroid/provider/SettingsSlicesContract;-><init>()V
-Landroid/provider/SettingsStringUtil$ColonDelimitedSet$OfStrings;
Landroid/provider/SettingsStringUtil$ColonDelimitedSet$OfStrings;-><init>(Ljava/lang/String;)V
Landroid/provider/SettingsStringUtil$ColonDelimitedSet$OfStrings;->add(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
Landroid/provider/SettingsStringUtil$ColonDelimitedSet$OfStrings;->addAll(Ljava/lang/String;Ljava/util/Collection;)Ljava/lang/String;
Landroid/provider/SettingsStringUtil$ColonDelimitedSet$OfStrings;->contains(Ljava/lang/String;Ljava/lang/String;)Z
Landroid/provider/SettingsStringUtil$ColonDelimitedSet$OfStrings;->itemFromString(Ljava/lang/String;)Ljava/lang/String;
Landroid/provider/SettingsStringUtil$ColonDelimitedSet$OfStrings;->remove(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Landroid/provider/SettingsStringUtil$ColonDelimitedSet;
Landroid/provider/SettingsStringUtil$ColonDelimitedSet;-><init>(Ljava/lang/String;)V
Landroid/provider/SettingsStringUtil$ColonDelimitedSet;->itemFromString(Ljava/lang/String;)Ljava/lang/Object;
Landroid/provider/SettingsStringUtil$ColonDelimitedSet;->itemToString(Ljava/lang/Object;)Ljava/lang/String;
-Landroid/provider/SettingsStringUtil$ComponentNameSet;
Landroid/provider/SettingsStringUtil$ComponentNameSet;-><init>(Ljava/lang/String;)V
Landroid/provider/SettingsStringUtil$ComponentNameSet;->add(Ljava/lang/String;Landroid/content/ComponentName;)Ljava/lang/String;
Landroid/provider/SettingsStringUtil$ComponentNameSet;->contains(Ljava/lang/String;Landroid/content/ComponentName;)Z
Landroid/provider/SettingsStringUtil$ComponentNameSet;->itemFromString(Ljava/lang/String;)Landroid/content/ComponentName;
Landroid/provider/SettingsStringUtil$ComponentNameSet;->itemToString(Landroid/content/ComponentName;)Ljava/lang/String;
Landroid/provider/SettingsStringUtil$ComponentNameSet;->remove(Ljava/lang/String;Landroid/content/ComponentName;)Ljava/lang/String;
-Landroid/provider/SettingsStringUtil$SettingStringHelper;
Landroid/provider/SettingsStringUtil$SettingStringHelper;-><init>(Landroid/content/ContentResolver;Ljava/lang/String;I)V
Landroid/provider/SettingsStringUtil$SettingStringHelper;->mContentResolver:Landroid/content/ContentResolver;
Landroid/provider/SettingsStringUtil$SettingStringHelper;->modify(Ljava/util/function/Function;)Z
@@ -61133,34 +56972,26 @@
Landroid/provider/SettingsStringUtil$SettingStringHelper;->mUserId:I
Landroid/provider/SettingsStringUtil$SettingStringHelper;->read()Ljava/lang/String;
Landroid/provider/SettingsStringUtil$SettingStringHelper;->write(Ljava/lang/String;)Z
-Landroid/provider/SettingsStringUtil;
Landroid/provider/SettingsStringUtil;-><init>()V
Landroid/provider/SettingsStringUtil;->DELIMITER:Ljava/lang/String;
-Landroid/provider/SettingsValidators$ComponentNameListValidator;
Landroid/provider/SettingsValidators$ComponentNameListValidator;-><init>(Ljava/lang/String;)V
Landroid/provider/SettingsValidators$ComponentNameListValidator;->mSeparator:Ljava/lang/String;
Landroid/provider/SettingsValidators$ComponentNameListValidator;->validate(Ljava/lang/String;)Z
-Landroid/provider/SettingsValidators$DiscreteValueValidator;
Landroid/provider/SettingsValidators$DiscreteValueValidator;-><init>([Ljava/lang/String;)V
Landroid/provider/SettingsValidators$DiscreteValueValidator;->mValues:[Ljava/lang/String;
Landroid/provider/SettingsValidators$DiscreteValueValidator;->validate(Ljava/lang/String;)Z
-Landroid/provider/SettingsValidators$InclusiveFloatRangeValidator;
Landroid/provider/SettingsValidators$InclusiveFloatRangeValidator;-><init>(FF)V
Landroid/provider/SettingsValidators$InclusiveFloatRangeValidator;->mMax:F
Landroid/provider/SettingsValidators$InclusiveFloatRangeValidator;->mMin:F
Landroid/provider/SettingsValidators$InclusiveFloatRangeValidator;->validate(Ljava/lang/String;)Z
-Landroid/provider/SettingsValidators$InclusiveIntegerRangeValidator;
Landroid/provider/SettingsValidators$InclusiveIntegerRangeValidator;-><init>(II)V
Landroid/provider/SettingsValidators$InclusiveIntegerRangeValidator;->mMax:I
Landroid/provider/SettingsValidators$InclusiveIntegerRangeValidator;->mMin:I
Landroid/provider/SettingsValidators$InclusiveIntegerRangeValidator;->validate(Ljava/lang/String;)Z
-Landroid/provider/SettingsValidators$PackageNameListValidator;
Landroid/provider/SettingsValidators$PackageNameListValidator;-><init>(Ljava/lang/String;)V
Landroid/provider/SettingsValidators$PackageNameListValidator;->mSeparator:Ljava/lang/String;
Landroid/provider/SettingsValidators$PackageNameListValidator;->validate(Ljava/lang/String;)Z
-Landroid/provider/SettingsValidators$Validator;
Landroid/provider/SettingsValidators$Validator;->validate(Ljava/lang/String;)Z
-Landroid/provider/SettingsValidators;
Landroid/provider/SettingsValidators;-><init>()V
Landroid/provider/SettingsValidators;->ANY_INTEGER_VALIDATOR:Landroid/provider/SettingsValidators$Validator;
Landroid/provider/SettingsValidators;->ANY_STRING_VALIDATOR:Landroid/provider/SettingsValidators$Validator;
@@ -61172,7 +57003,6 @@
Landroid/provider/SettingsValidators;->NULLABLE_COMPONENT_NAME_VALIDATOR:Landroid/provider/SettingsValidators$Validator;
Landroid/provider/SettingsValidators;->PACKAGE_NAME_VALIDATOR:Landroid/provider/SettingsValidators$Validator;
Landroid/provider/SettingsValidators;->URI_VALIDATOR:Landroid/provider/SettingsValidators$Validator;
-Landroid/provider/SyncConstValue;
Landroid/provider/SyncConstValue;->NON_SYNCABLE_ACCOUNT:Ljava/lang/String;
Landroid/provider/SyncConstValue;->NON_SYNCABLE_ACCOUNT_TYPE:Ljava/lang/String;
Landroid/provider/SyncConstValue;->_SYNC_ACCOUNT:Ljava/lang/String;
@@ -61223,7 +57053,6 @@
Landroid/provider/Telephony$BaseMmsColumns;->STORE_STATUS:Ljava/lang/String;
Landroid/provider/Telephony$BaseMmsColumns;->STORE_STATUS_TEXT:Ljava/lang/String;
Landroid/provider/Telephony$BaseMmsColumns;->TOTALS:Ljava/lang/String;
-Landroid/provider/Telephony$CarrierColumns;
Landroid/provider/Telephony$CarrierColumns;->CONTENT_URI:Landroid/net/Uri;
Landroid/provider/Telephony$CarrierColumns;->EXPIRATION_TIME:Ljava/lang/String;
Landroid/provider/Telephony$CarrierColumns;->KEY_IDENTIFIER:Ljava/lang/String;
@@ -61234,7 +57063,6 @@
Landroid/provider/Telephony$CarrierColumns;->MVNO_MATCH_DATA:Ljava/lang/String;
Landroid/provider/Telephony$CarrierColumns;->MVNO_TYPE:Ljava/lang/String;
Landroid/provider/Telephony$CarrierColumns;->PUBLIC_KEY:Ljava/lang/String;
-Landroid/provider/Telephony$CarrierId$All;
Landroid/provider/Telephony$CarrierId$All;-><init>()V
Landroid/provider/Telephony$CarrierId$All;->APN:Ljava/lang/String;
Landroid/provider/Telephony$CarrierId$All;->CONTENT_URI:Landroid/net/Uri;
@@ -61274,7 +57102,6 @@
Landroid/provider/Telephony$Carriers;->USER_EDITED:I
Landroid/provider/Telephony$Carriers;->USER_VISIBLE:Ljava/lang/String;
Landroid/provider/Telephony$Carriers;->WAIT_TIME:Ljava/lang/String;
-Landroid/provider/Telephony$CellBroadcasts;
Landroid/provider/Telephony$CellBroadcasts;-><init>()V
Landroid/provider/Telephony$CellBroadcasts;->CID:Ljava/lang/String;
Landroid/provider/Telephony$CellBroadcasts;->CMAS_CATEGORY:Ljava/lang/String;
@@ -61312,7 +57139,6 @@
Landroid/provider/Telephony$Mms;->query(Landroid/content/ContentResolver;[Ljava/lang/String;)Landroid/database/Cursor;
Landroid/provider/Telephony$Mms;->query(Landroid/content/ContentResolver;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
Landroid/provider/Telephony$MmsSms$PendingMessages;-><init>()V
-Landroid/provider/Telephony$MmsSms$WordsTable;
Landroid/provider/Telephony$MmsSms$WordsTable;-><init>()V
Landroid/provider/Telephony$MmsSms$WordsTable;->ID:Ljava/lang/String;
Landroid/provider/Telephony$MmsSms$WordsTable;->INDEXED_TEXT:Ljava/lang/String;
@@ -61392,7 +57218,6 @@
Landroid/R$style;->ButtonBar:I
Landroid/R$style;->TextAppearance_SearchResult_Subtitle:I
Landroid/R$style;->TextAppearance_SearchResult_Title:I
-Landroid/R$styleable;
Landroid/R$styleable;-><init>()V
Landroid/R$styleable;->AbsListView:[I
Landroid/R$styleable;->AbsListView_cacheColorHint:I
@@ -63452,7 +59277,6 @@
Landroid/R$styleable;->Window_windowTransitionBackgroundFadeDuration:I
Landroid/R$styleable;->Window_windowTranslucentNavigation:I
Landroid/R$styleable;->Window_windowTranslucentStatus:I
-Landroid/renderscript/Allocation$MipmapControl;-><init>(I)V
Landroid/renderscript/Allocation$MipmapControl;->mID:I
Landroid/renderscript/Allocation;-><init>(JLandroid/renderscript/RenderScript;Landroid/renderscript/Type;I)V
Landroid/renderscript/Allocation;-><init>(JLandroid/renderscript/RenderScript;Landroid/renderscript/Type;ZILandroid/renderscript/Allocation$MipmapControl;)V
@@ -63712,10 +59536,7 @@
Landroid/renderscript/Element$Builder;->mElements:[Landroid/renderscript/Element;
Landroid/renderscript/Element$Builder;->mRS:Landroid/renderscript/RenderScript;
Landroid/renderscript/Element$Builder;->mSkipPadding:I
-Landroid/renderscript/Element$DataKind;-><init>(I)V
Landroid/renderscript/Element$DataKind;->mID:I
-Landroid/renderscript/Element$DataType;-><init>(I)V
-Landroid/renderscript/Element$DataType;-><init>(II)V
Landroid/renderscript/Element$DataType;->mID:I
Landroid/renderscript/Element$DataType;->mSize:I
Landroid/renderscript/Element;-><init>(JLandroid/renderscript/RenderScript;)V
@@ -63742,14 +59563,11 @@
Landroid/renderscript/FieldPacker;->mLen:I
Landroid/renderscript/FieldPacker;->mPos:I
Landroid/renderscript/FieldPacker;->resize(I)Z
-Landroid/renderscript/FileA3D$EntryType;
-Landroid/renderscript/FileA3D$EntryType;-><init>(I)V
Landroid/renderscript/FileA3D$EntryType;->mID:I
Landroid/renderscript/FileA3D$EntryType;->toEntryType(I)Landroid/renderscript/FileA3D$EntryType;
Landroid/renderscript/FileA3D$EntryType;->UNKNOWN:Landroid/renderscript/FileA3D$EntryType;
Landroid/renderscript/FileA3D$EntryType;->valueOf(Ljava/lang/String;)Landroid/renderscript/FileA3D$EntryType;
Landroid/renderscript/FileA3D$EntryType;->values()[Landroid/renderscript/FileA3D$EntryType;
-Landroid/renderscript/FileA3D$IndexEntry;
Landroid/renderscript/FileA3D$IndexEntry;-><init>(Landroid/renderscript/RenderScript;IJLjava/lang/String;Landroid/renderscript/FileA3D$EntryType;)V
Landroid/renderscript/FileA3D$IndexEntry;->getMesh()Landroid/renderscript/Mesh;
Landroid/renderscript/FileA3D$IndexEntry;->getName()Ljava/lang/String;
@@ -63760,7 +59578,6 @@
Landroid/renderscript/FileA3D$IndexEntry;->mLoadedObj:Landroid/renderscript/BaseObj;
Landroid/renderscript/FileA3D$IndexEntry;->mName:Ljava/lang/String;
Landroid/renderscript/FileA3D$IndexEntry;->mRS:Landroid/renderscript/RenderScript;
-Landroid/renderscript/FileA3D;
Landroid/renderscript/FileA3D;-><init>(JLandroid/renderscript/RenderScript;Ljava/io/InputStream;)V
Landroid/renderscript/FileA3D;->createFromAsset(Landroid/renderscript/RenderScript;Landroid/content/res/AssetManager;Ljava/lang/String;)Landroid/renderscript/FileA3D;
Landroid/renderscript/FileA3D;->createFromFile(Landroid/renderscript/RenderScript;Ljava/io/File;)Landroid/renderscript/FileA3D;
@@ -63856,21 +59673,17 @@
Landroid/renderscript/Float4;->sub(Landroid/renderscript/Float4;)V
Landroid/renderscript/Float4;->sub(Landroid/renderscript/Float4;F)Landroid/renderscript/Float4;
Landroid/renderscript/Float4;->sub(Landroid/renderscript/Float4;Landroid/renderscript/Float4;)Landroid/renderscript/Float4;
-Landroid/renderscript/Font$FontFamily;
Landroid/renderscript/Font$FontFamily;-><init>()V
Landroid/renderscript/Font$FontFamily;->mBoldFileName:Ljava/lang/String;
Landroid/renderscript/Font$FontFamily;->mBoldItalicFileName:Ljava/lang/String;
Landroid/renderscript/Font$FontFamily;->mItalicFileName:Ljava/lang/String;
Landroid/renderscript/Font$FontFamily;->mNames:[Ljava/lang/String;
Landroid/renderscript/Font$FontFamily;->mNormalFileName:Ljava/lang/String;
-Landroid/renderscript/Font$Style;
-Landroid/renderscript/Font$Style;-><init>()V
Landroid/renderscript/Font$Style;->BOLD:Landroid/renderscript/Font$Style;
Landroid/renderscript/Font$Style;->BOLD_ITALIC:Landroid/renderscript/Font$Style;
Landroid/renderscript/Font$Style;->NORMAL:Landroid/renderscript/Font$Style;
Landroid/renderscript/Font$Style;->valueOf(Ljava/lang/String;)Landroid/renderscript/Font$Style;
Landroid/renderscript/Font$Style;->values()[Landroid/renderscript/Font$Style;
-Landroid/renderscript/Font;
Landroid/renderscript/Font;-><init>(JLandroid/renderscript/RenderScript;)V
Landroid/renderscript/Font;->addFamilyToMap(Landroid/renderscript/Font$FontFamily;)V
Landroid/renderscript/Font;->createFromAsset(Landroid/renderscript/RenderScript;Landroid/content/res/Resources;Ljava/lang/String;F)Landroid/renderscript/Font;
@@ -64091,25 +59904,19 @@
Landroid/renderscript/Matrix3f;->mMat:[F
Landroid/renderscript/Matrix4f;->computeCofactor(II)F
Landroid/renderscript/Matrix4f;->load(Landroid/renderscript/Matrix3f;)V
-Landroid/renderscript/Mesh$AllocationBuilder$Entry;
-Landroid/renderscript/Mesh$AllocationBuilder$Entry;-><init>()V
Landroid/renderscript/Mesh$AllocationBuilder$Entry;->a:Landroid/renderscript/Allocation;
Landroid/renderscript/Mesh$AllocationBuilder$Entry;->prim:Landroid/renderscript/Mesh$Primitive;
-Landroid/renderscript/Mesh$AllocationBuilder;
Landroid/renderscript/Mesh$AllocationBuilder;->getCurrentIndexSetIndex()I
Landroid/renderscript/Mesh$AllocationBuilder;->getCurrentVertexTypeIndex()I
Landroid/renderscript/Mesh$AllocationBuilder;->mIndexTypes:Ljava/util/Vector;
Landroid/renderscript/Mesh$AllocationBuilder;->mRS:Landroid/renderscript/RenderScript;
Landroid/renderscript/Mesh$AllocationBuilder;->mVertexTypeCount:I
Landroid/renderscript/Mesh$AllocationBuilder;->mVertexTypes:[Landroid/renderscript/Mesh$AllocationBuilder$Entry;
-Landroid/renderscript/Mesh$Builder$Entry;
-Landroid/renderscript/Mesh$Builder$Entry;-><init>()V
Landroid/renderscript/Mesh$Builder$Entry;->e:Landroid/renderscript/Element;
Landroid/renderscript/Mesh$Builder$Entry;->prim:Landroid/renderscript/Mesh$Primitive;
Landroid/renderscript/Mesh$Builder$Entry;->size:I
Landroid/renderscript/Mesh$Builder$Entry;->t:Landroid/renderscript/Type;
Landroid/renderscript/Mesh$Builder$Entry;->usage:I
-Landroid/renderscript/Mesh$Builder;
Landroid/renderscript/Mesh$Builder;-><init>(Landroid/renderscript/RenderScript;I)V
Landroid/renderscript/Mesh$Builder;->addIndexSetType(Landroid/renderscript/Element;ILandroid/renderscript/Mesh$Primitive;)Landroid/renderscript/Mesh$Builder;
Landroid/renderscript/Mesh$Builder;->addIndexSetType(Landroid/renderscript/Mesh$Primitive;)Landroid/renderscript/Mesh$Builder;
@@ -64125,8 +59932,6 @@
Landroid/renderscript/Mesh$Builder;->mVertexTypeCount:I
Landroid/renderscript/Mesh$Builder;->mVertexTypes:[Landroid/renderscript/Mesh$Builder$Entry;
Landroid/renderscript/Mesh$Builder;->newType(Landroid/renderscript/Element;I)Landroid/renderscript/Type;
-Landroid/renderscript/Mesh$Primitive;
-Landroid/renderscript/Mesh$Primitive;-><init>(I)V
Landroid/renderscript/Mesh$Primitive;->LINE:Landroid/renderscript/Mesh$Primitive;
Landroid/renderscript/Mesh$Primitive;->LINE_STRIP:Landroid/renderscript/Mesh$Primitive;
Landroid/renderscript/Mesh$Primitive;->mID:I
@@ -64134,7 +59939,6 @@
Landroid/renderscript/Mesh$Primitive;->TRIANGLE_STRIP:Landroid/renderscript/Mesh$Primitive;
Landroid/renderscript/Mesh$Primitive;->valueOf(Ljava/lang/String;)Landroid/renderscript/Mesh$Primitive;
Landroid/renderscript/Mesh$Primitive;->values()[Landroid/renderscript/Mesh$Primitive;
-Landroid/renderscript/Mesh$TriangleMeshBuilder;
Landroid/renderscript/Mesh$TriangleMeshBuilder;->addVertex(FFF)Landroid/renderscript/Mesh$TriangleMeshBuilder;
Landroid/renderscript/Mesh$TriangleMeshBuilder;->COLOR:I
Landroid/renderscript/Mesh$TriangleMeshBuilder;->latch()V
@@ -64162,7 +59966,6 @@
Landroid/renderscript/Mesh$TriangleMeshBuilder;->setNormal(FFF)Landroid/renderscript/Mesh$TriangleMeshBuilder;
Landroid/renderscript/Mesh$TriangleMeshBuilder;->setTexture(FF)Landroid/renderscript/Mesh$TriangleMeshBuilder;
Landroid/renderscript/Mesh$TriangleMeshBuilder;->TEXTURE_0:I
-Landroid/renderscript/Mesh;
Landroid/renderscript/Mesh;-><init>(JLandroid/renderscript/RenderScript;)V
Landroid/renderscript/Mesh;->getIndexSetAllocation(I)Landroid/renderscript/Allocation;
Landroid/renderscript/Mesh;->getPrimitive(I)Landroid/renderscript/Mesh$Primitive;
@@ -64172,7 +59975,6 @@
Landroid/renderscript/Mesh;->mPrimitives:[Landroid/renderscript/Mesh$Primitive;
Landroid/renderscript/Mesh;->mVertexBuffers:[Landroid/renderscript/Allocation;
Landroid/renderscript/Mesh;->updateFromNative()V
-Landroid/renderscript/Program$BaseProgramBuilder;
Landroid/renderscript/Program$BaseProgramBuilder;->addConstant(Landroid/renderscript/Type;)Landroid/renderscript/Program$BaseProgramBuilder;
Landroid/renderscript/Program$BaseProgramBuilder;->addTexture(Landroid/renderscript/Program$TextureType;)Landroid/renderscript/Program$BaseProgramBuilder;
Landroid/renderscript/Program$BaseProgramBuilder;->addTexture(Landroid/renderscript/Program$TextureType;Ljava/lang/String;)Landroid/renderscript/Program$BaseProgramBuilder;
@@ -64184,8 +59986,6 @@
Landroid/renderscript/Program$BaseProgramBuilder;->mTextureTypes:[Landroid/renderscript/Program$TextureType;
Landroid/renderscript/Program$BaseProgramBuilder;->setShader(Landroid/content/res/Resources;I)Landroid/renderscript/Program$BaseProgramBuilder;
Landroid/renderscript/Program$BaseProgramBuilder;->setShader(Ljava/lang/String;)Landroid/renderscript/Program$BaseProgramBuilder;
-Landroid/renderscript/Program$ProgramParam;
-Landroid/renderscript/Program$ProgramParam;-><init>(I)V
Landroid/renderscript/Program$ProgramParam;->CONSTANT:Landroid/renderscript/Program$ProgramParam;
Landroid/renderscript/Program$ProgramParam;->INPUT:Landroid/renderscript/Program$ProgramParam;
Landroid/renderscript/Program$ProgramParam;->mID:I
@@ -64193,13 +59993,10 @@
Landroid/renderscript/Program$ProgramParam;->TEXTURE_TYPE:Landroid/renderscript/Program$ProgramParam;
Landroid/renderscript/Program$ProgramParam;->valueOf(Ljava/lang/String;)Landroid/renderscript/Program$ProgramParam;
Landroid/renderscript/Program$ProgramParam;->values()[Landroid/renderscript/Program$ProgramParam;
-Landroid/renderscript/Program$TextureType;
-Landroid/renderscript/Program$TextureType;-><init>(I)V
Landroid/renderscript/Program$TextureType;->mID:I
Landroid/renderscript/Program$TextureType;->TEXTURE_CUBE:Landroid/renderscript/Program$TextureType;
Landroid/renderscript/Program$TextureType;->valueOf(Ljava/lang/String;)Landroid/renderscript/Program$TextureType;
Landroid/renderscript/Program$TextureType;->values()[Landroid/renderscript/Program$TextureType;
-Landroid/renderscript/Program;
Landroid/renderscript/Program;-><init>(JLandroid/renderscript/RenderScript;)V
Landroid/renderscript/Program;->bindConstants(Landroid/renderscript/Allocation;I)V
Landroid/renderscript/Program;->bindSampler(Landroid/renderscript/Sampler;I)V
@@ -64220,26 +60017,17 @@
Landroid/renderscript/Program;->mTextureCount:I
Landroid/renderscript/Program;->mTextureNames:[Ljava/lang/String;
Landroid/renderscript/Program;->mTextures:[Landroid/renderscript/Program$TextureType;
-Landroid/renderscript/ProgramFragment$Builder;
-Landroid/renderscript/ProgramFragment;
Landroid/renderscript/ProgramFragment;-><init>(JLandroid/renderscript/RenderScript;)V
-Landroid/renderscript/ProgramFragmentFixedFunction$Builder$EnvMode;
-Landroid/renderscript/ProgramFragmentFixedFunction$Builder$EnvMode;-><init>(I)V
Landroid/renderscript/ProgramFragmentFixedFunction$Builder$EnvMode;->DECAL:Landroid/renderscript/ProgramFragmentFixedFunction$Builder$EnvMode;
Landroid/renderscript/ProgramFragmentFixedFunction$Builder$EnvMode;->mID:I
Landroid/renderscript/ProgramFragmentFixedFunction$Builder$EnvMode;->valueOf(Ljava/lang/String;)Landroid/renderscript/ProgramFragmentFixedFunction$Builder$EnvMode;
Landroid/renderscript/ProgramFragmentFixedFunction$Builder$EnvMode;->values()[Landroid/renderscript/ProgramFragmentFixedFunction$Builder$EnvMode;
-Landroid/renderscript/ProgramFragmentFixedFunction$Builder$Format;
-Landroid/renderscript/ProgramFragmentFixedFunction$Builder$Format;-><init>(I)V
Landroid/renderscript/ProgramFragmentFixedFunction$Builder$Format;->LUMINANCE_ALPHA:Landroid/renderscript/ProgramFragmentFixedFunction$Builder$Format;
Landroid/renderscript/ProgramFragmentFixedFunction$Builder$Format;->mID:I
Landroid/renderscript/ProgramFragmentFixedFunction$Builder$Format;->valueOf(Ljava/lang/String;)Landroid/renderscript/ProgramFragmentFixedFunction$Builder$Format;
Landroid/renderscript/ProgramFragmentFixedFunction$Builder$Format;->values()[Landroid/renderscript/ProgramFragmentFixedFunction$Builder$Format;
-Landroid/renderscript/ProgramFragmentFixedFunction$Builder$Slot;
-Landroid/renderscript/ProgramFragmentFixedFunction$Builder$Slot;-><init>(Landroid/renderscript/ProgramFragmentFixedFunction$Builder$EnvMode;Landroid/renderscript/ProgramFragmentFixedFunction$Builder$Format;)V
Landroid/renderscript/ProgramFragmentFixedFunction$Builder$Slot;->env:Landroid/renderscript/ProgramFragmentFixedFunction$Builder$EnvMode;
Landroid/renderscript/ProgramFragmentFixedFunction$Builder$Slot;->format:Landroid/renderscript/ProgramFragmentFixedFunction$Builder$Format;
-Landroid/renderscript/ProgramFragmentFixedFunction$Builder;
Landroid/renderscript/ProgramFragmentFixedFunction$Builder;->buildShaderString()V
Landroid/renderscript/ProgramFragmentFixedFunction$Builder;->MAX_TEXTURE:I
Landroid/renderscript/ProgramFragmentFixedFunction$Builder;->mNumTextures:I
@@ -64249,25 +60037,19 @@
Landroid/renderscript/ProgramFragmentFixedFunction$Builder;->mSlots:[Landroid/renderscript/ProgramFragmentFixedFunction$Builder$Slot;
Landroid/renderscript/ProgramFragmentFixedFunction$Builder;->mVaryingColorEnable:Z
Landroid/renderscript/ProgramFragmentFixedFunction$Builder;->setPointSpriteTexCoordinateReplacement(Z)Landroid/renderscript/ProgramFragmentFixedFunction$Builder;
-Landroid/renderscript/ProgramFragmentFixedFunction$InternalBuilder;
Landroid/renderscript/ProgramFragmentFixedFunction$InternalBuilder;-><init>(Landroid/renderscript/RenderScript;)V
Landroid/renderscript/ProgramFragmentFixedFunction$InternalBuilder;->create()Landroid/renderscript/ProgramFragmentFixedFunction;
-Landroid/renderscript/ProgramFragmentFixedFunction;
Landroid/renderscript/ProgramFragmentFixedFunction;-><init>(JLandroid/renderscript/RenderScript;)V
-Landroid/renderscript/ProgramRaster$Builder;
Landroid/renderscript/ProgramRaster$Builder;->mCullMode:Landroid/renderscript/ProgramRaster$CullMode;
Landroid/renderscript/ProgramRaster$Builder;->mPointSprite:Z
Landroid/renderscript/ProgramRaster$Builder;->mRS:Landroid/renderscript/RenderScript;
Landroid/renderscript/ProgramRaster$Builder;->setCullMode(Landroid/renderscript/ProgramRaster$CullMode;)Landroid/renderscript/ProgramRaster$Builder;
-Landroid/renderscript/ProgramRaster$CullMode;
-Landroid/renderscript/ProgramRaster$CullMode;-><init>(I)V
Landroid/renderscript/ProgramRaster$CullMode;->BACK:Landroid/renderscript/ProgramRaster$CullMode;
Landroid/renderscript/ProgramRaster$CullMode;->FRONT:Landroid/renderscript/ProgramRaster$CullMode;
Landroid/renderscript/ProgramRaster$CullMode;->mID:I
Landroid/renderscript/ProgramRaster$CullMode;->NONE:Landroid/renderscript/ProgramRaster$CullMode;
Landroid/renderscript/ProgramRaster$CullMode;->valueOf(Ljava/lang/String;)Landroid/renderscript/ProgramRaster$CullMode;
Landroid/renderscript/ProgramRaster$CullMode;->values()[Landroid/renderscript/ProgramRaster$CullMode;
-Landroid/renderscript/ProgramRaster;
Landroid/renderscript/ProgramRaster;-><init>(JLandroid/renderscript/RenderScript;)V
Landroid/renderscript/ProgramRaster;->CULL_BACK(Landroid/renderscript/RenderScript;)Landroid/renderscript/ProgramRaster;
Landroid/renderscript/ProgramRaster;->CULL_FRONT(Landroid/renderscript/RenderScript;)Landroid/renderscript/ProgramRaster;
@@ -64276,8 +60058,6 @@
Landroid/renderscript/ProgramRaster;->isPointSpriteEnabled()Z
Landroid/renderscript/ProgramRaster;->mCullMode:Landroid/renderscript/ProgramRaster$CullMode;
Landroid/renderscript/ProgramRaster;->mPointSprite:Z
-Landroid/renderscript/ProgramStore$BlendDstFunc;
-Landroid/renderscript/ProgramStore$BlendDstFunc;-><init>(I)V
Landroid/renderscript/ProgramStore$BlendDstFunc;->DST_ALPHA:Landroid/renderscript/ProgramStore$BlendDstFunc;
Landroid/renderscript/ProgramStore$BlendDstFunc;->mID:I
Landroid/renderscript/ProgramStore$BlendDstFunc;->ONE_MINUS_DST_ALPHA:Landroid/renderscript/ProgramStore$BlendDstFunc;
@@ -64286,8 +60066,6 @@
Landroid/renderscript/ProgramStore$BlendDstFunc;->SRC_COLOR:Landroid/renderscript/ProgramStore$BlendDstFunc;
Landroid/renderscript/ProgramStore$BlendDstFunc;->valueOf(Ljava/lang/String;)Landroid/renderscript/ProgramStore$BlendDstFunc;
Landroid/renderscript/ProgramStore$BlendDstFunc;->values()[Landroid/renderscript/ProgramStore$BlendDstFunc;
-Landroid/renderscript/ProgramStore$BlendSrcFunc;
-Landroid/renderscript/ProgramStore$BlendSrcFunc;-><init>(I)V
Landroid/renderscript/ProgramStore$BlendSrcFunc;->DST_ALPHA:Landroid/renderscript/ProgramStore$BlendSrcFunc;
Landroid/renderscript/ProgramStore$BlendSrcFunc;->DST_COLOR:Landroid/renderscript/ProgramStore$BlendSrcFunc;
Landroid/renderscript/ProgramStore$BlendSrcFunc;->mID:I
@@ -64298,7 +60076,6 @@
Landroid/renderscript/ProgramStore$BlendSrcFunc;->valueOf(Ljava/lang/String;)Landroid/renderscript/ProgramStore$BlendSrcFunc;
Landroid/renderscript/ProgramStore$BlendSrcFunc;->values()[Landroid/renderscript/ProgramStore$BlendSrcFunc;
Landroid/renderscript/ProgramStore$BlendSrcFunc;->ZERO:Landroid/renderscript/ProgramStore$BlendSrcFunc;
-Landroid/renderscript/ProgramStore$Builder;
Landroid/renderscript/ProgramStore$Builder;->mBlendDst:Landroid/renderscript/ProgramStore$BlendDstFunc;
Landroid/renderscript/ProgramStore$Builder;->mBlendSrc:Landroid/renderscript/ProgramStore$BlendSrcFunc;
Landroid/renderscript/ProgramStore$Builder;->mColorMaskA:Z
@@ -64310,8 +60087,6 @@
Landroid/renderscript/ProgramStore$Builder;->mDither:Z
Landroid/renderscript/ProgramStore$Builder;->mRS:Landroid/renderscript/RenderScript;
Landroid/renderscript/ProgramStore$Builder;->setColorMaskEnabled(ZZZZ)Landroid/renderscript/ProgramStore$Builder;
-Landroid/renderscript/ProgramStore$DepthFunc;
-Landroid/renderscript/ProgramStore$DepthFunc;-><init>(I)V
Landroid/renderscript/ProgramStore$DepthFunc;->EQUAL:Landroid/renderscript/ProgramStore$DepthFunc;
Landroid/renderscript/ProgramStore$DepthFunc;->GREATER:Landroid/renderscript/ProgramStore$DepthFunc;
Landroid/renderscript/ProgramStore$DepthFunc;->GREATER_OR_EQUAL:Landroid/renderscript/ProgramStore$DepthFunc;
@@ -64320,7 +60095,6 @@
Landroid/renderscript/ProgramStore$DepthFunc;->NOT_EQUAL:Landroid/renderscript/ProgramStore$DepthFunc;
Landroid/renderscript/ProgramStore$DepthFunc;->valueOf(Ljava/lang/String;)Landroid/renderscript/ProgramStore$DepthFunc;
Landroid/renderscript/ProgramStore$DepthFunc;->values()[Landroid/renderscript/ProgramStore$DepthFunc;
-Landroid/renderscript/ProgramStore;
Landroid/renderscript/ProgramStore;-><init>(JLandroid/renderscript/RenderScript;)V
Landroid/renderscript/ProgramStore;->BLEND_ALPHA_DEPTH_TEST(Landroid/renderscript/RenderScript;)Landroid/renderscript/ProgramStore;
Landroid/renderscript/ProgramStore;->BLEND_NONE_DEPTH_NONE(Landroid/renderscript/RenderScript;)Landroid/renderscript/ProgramStore;
@@ -64343,19 +60117,15 @@
Landroid/renderscript/ProgramStore;->mDepthFunc:Landroid/renderscript/ProgramStore$DepthFunc;
Landroid/renderscript/ProgramStore;->mDepthMask:Z
Landroid/renderscript/ProgramStore;->mDither:Z
-Landroid/renderscript/ProgramVertex$Builder;
-Landroid/renderscript/ProgramVertex;
Landroid/renderscript/ProgramVertex;-><init>(JLandroid/renderscript/RenderScript;)V
Landroid/renderscript/ProgramVertex;->getInput(I)Landroid/renderscript/Element;
Landroid/renderscript/ProgramVertex;->getInputCount()I
-Landroid/renderscript/ProgramVertexFixedFunction$Builder;
Landroid/renderscript/ProgramVertexFixedFunction$Builder;->buildShaderString()V
Landroid/renderscript/ProgramVertexFixedFunction$Builder;->getConstantInputType(Landroid/renderscript/RenderScript;)Landroid/renderscript/Type;
Landroid/renderscript/ProgramVertexFixedFunction$Builder;->mRS:Landroid/renderscript/RenderScript;
Landroid/renderscript/ProgramVertexFixedFunction$Builder;->mShader:Ljava/lang/String;
Landroid/renderscript/ProgramVertexFixedFunction$Builder;->mTextureMatrixEnable:Z
Landroid/renderscript/ProgramVertexFixedFunction$Builder;->setTextureMatrixEnable(Z)Landroid/renderscript/ProgramVertexFixedFunction$Builder;
-Landroid/renderscript/ProgramVertexFixedFunction$Constants;
Landroid/renderscript/ProgramVertexFixedFunction$Constants;->addToBuffer(ILandroid/renderscript/Matrix4f;)V
Landroid/renderscript/ProgramVertexFixedFunction$Constants;->destroy()V
Landroid/renderscript/ProgramVertexFixedFunction$Constants;->getAllocation()Landroid/renderscript/Allocation;
@@ -64369,15 +60139,11 @@
Landroid/renderscript/ProgramVertexFixedFunction$Constants;->setModelview(Landroid/renderscript/Matrix4f;)V
Landroid/renderscript/ProgramVertexFixedFunction$Constants;->setTexture(Landroid/renderscript/Matrix4f;)V
Landroid/renderscript/ProgramVertexFixedFunction$Constants;->TEXTURE_OFFSET:I
-Landroid/renderscript/ProgramVertexFixedFunction$InternalBuilder;
Landroid/renderscript/ProgramVertexFixedFunction$InternalBuilder;-><init>(Landroid/renderscript/RenderScript;)V
Landroid/renderscript/ProgramVertexFixedFunction$InternalBuilder;->addInput(Landroid/renderscript/Element;)Landroid/renderscript/ProgramVertexFixedFunction$InternalBuilder;
Landroid/renderscript/ProgramVertexFixedFunction$InternalBuilder;->create()Landroid/renderscript/ProgramVertexFixedFunction;
-Landroid/renderscript/ProgramVertexFixedFunction;
Landroid/renderscript/ProgramVertexFixedFunction;-><init>(JLandroid/renderscript/RenderScript;)V
-Landroid/renderscript/RenderScript$ContextType;-><init>(I)V
Landroid/renderscript/RenderScript$ContextType;->mID:I
-Landroid/renderscript/RenderScript$MessageThread;
Landroid/renderscript/RenderScript$MessageThread;-><init>(Landroid/renderscript/RenderScript;)V
Landroid/renderscript/RenderScript$MessageThread;->mAuxData:[I
Landroid/renderscript/RenderScript$MessageThread;->mRS:Landroid/renderscript/RenderScript;
@@ -64390,7 +60156,6 @@
Landroid/renderscript/RenderScript$MessageThread;->RS_MESSAGE_TO_CLIENT_NONE:I
Landroid/renderscript/RenderScript$MessageThread;->RS_MESSAGE_TO_CLIENT_RESIZE:I
Landroid/renderscript/RenderScript$MessageThread;->RS_MESSAGE_TO_CLIENT_USER:I
-Landroid/renderscript/RenderScript$Priority;-><init>(I)V
Landroid/renderscript/RenderScript$Priority;->mID:I
Landroid/renderscript/RenderScript;-><init>(Landroid/content/Context;)V
Landroid/renderscript/RenderScript;->CREATE_FLAG_WAIT_FOR_ATTACH:I
@@ -64752,9 +60517,7 @@
Landroid/renderscript/RenderScript;->TRACE_TAG:J
Landroid/renderscript/RenderScript;->validateObject(Landroid/renderscript/BaseObj;)V
Landroid/renderscript/RenderScript;->_nInit()V
-Landroid/renderscript/RenderScriptCacheDir;
Landroid/renderscript/RenderScriptCacheDir;-><init>()V
-Landroid/renderscript/RenderScriptGL$SurfaceConfig;
Landroid/renderscript/RenderScriptGL$SurfaceConfig;-><init>(Landroid/renderscript/RenderScriptGL$SurfaceConfig;)V
Landroid/renderscript/RenderScriptGL$SurfaceConfig;->mAlphaMin:I
Landroid/renderscript/RenderScriptGL$SurfaceConfig;->mAlphaPref:I
@@ -64771,7 +60534,6 @@
Landroid/renderscript/RenderScriptGL$SurfaceConfig;->setColor(II)V
Landroid/renderscript/RenderScriptGL$SurfaceConfig;->setSamples(IIF)V
Landroid/renderscript/RenderScriptGL$SurfaceConfig;->validateRange(IIII)V
-Landroid/renderscript/RenderScriptGL;
Landroid/renderscript/RenderScriptGL;->bindProgramFragment(Landroid/renderscript/ProgramFragment;)V
Landroid/renderscript/RenderScriptGL;->getHeight()I
Landroid/renderscript/RenderScriptGL;->getWidth()I
@@ -64781,7 +60543,6 @@
Landroid/renderscript/RenderScriptGL;->pause()V
Landroid/renderscript/RenderScriptGL;->resume()V
Landroid/renderscript/RenderScriptGL;->setSurfaceTexture(Landroid/graphics/SurfaceTexture;II)V
-Landroid/renderscript/RSSurfaceView;
Landroid/renderscript/RSSurfaceView;->createRenderScriptGL(Landroid/renderscript/RenderScriptGL$SurfaceConfig;)Landroid/renderscript/RenderScriptGL;
Landroid/renderscript/RSSurfaceView;->destroyRenderScriptGL()V
Landroid/renderscript/RSSurfaceView;->getRenderScriptGL()Landroid/renderscript/RenderScriptGL;
@@ -64791,7 +60552,6 @@
Landroid/renderscript/RSSurfaceView;->pause()V
Landroid/renderscript/RSSurfaceView;->resume()V
Landroid/renderscript/RSSurfaceView;->setRenderScriptGL(Landroid/renderscript/RenderScriptGL;)V
-Landroid/renderscript/RSTextureView;
Landroid/renderscript/RSTextureView;-><init>(Landroid/content/Context;)V
Landroid/renderscript/RSTextureView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
Landroid/renderscript/RSTextureView;->createRenderScriptGL(Landroid/renderscript/RenderScriptGL$SurfaceConfig;)Landroid/renderscript/RenderScriptGL;
@@ -64810,7 +60570,6 @@
Landroid/renderscript/Sampler$Builder;->mWrapR:Landroid/renderscript/Sampler$Value;
Landroid/renderscript/Sampler$Builder;->mWrapS:Landroid/renderscript/Sampler$Value;
Landroid/renderscript/Sampler$Builder;->mWrapT:Landroid/renderscript/Sampler$Value;
-Landroid/renderscript/Sampler$Value;-><init>(I)V
Landroid/renderscript/Sampler$Value;->mID:I
Landroid/renderscript/Sampler;-><init>(JLandroid/renderscript/RenderScript;)V
Landroid/renderscript/Sampler;->mAniso:F
@@ -64865,7 +60624,6 @@
Landroid/renderscript/ScriptGroup$Builder;->validateCycle(Landroid/renderscript/ScriptGroup$Node;Landroid/renderscript/ScriptGroup$Node;)V
Landroid/renderscript/ScriptGroup$Builder;->validateDAG()V
Landroid/renderscript/ScriptGroup$Builder;->validateDAGRecurse(Landroid/renderscript/ScriptGroup$Node;I)V
-Landroid/renderscript/ScriptGroup$Closure$ValueAndSize;
Landroid/renderscript/ScriptGroup$Closure$ValueAndSize;-><init>(Landroid/renderscript/RenderScript;Ljava/lang/Object;)V
Landroid/renderscript/ScriptGroup$Closure$ValueAndSize;->size:I
Landroid/renderscript/ScriptGroup$Closure$ValueAndSize;->value:J
@@ -64882,7 +60640,6 @@
Landroid/renderscript/ScriptGroup$Closure;->setArg(ILjava/lang/Object;)V
Landroid/renderscript/ScriptGroup$Closure;->setGlobal(Landroid/renderscript/Script$FieldID;Ljava/lang/Object;)V
Landroid/renderscript/ScriptGroup$Closure;->TAG:Ljava/lang/String;
-Landroid/renderscript/ScriptGroup$ConnectLine;
Landroid/renderscript/ScriptGroup$ConnectLine;-><init>(Landroid/renderscript/Type;Landroid/renderscript/Script$KernelID;Landroid/renderscript/Script$FieldID;)V
Landroid/renderscript/ScriptGroup$ConnectLine;-><init>(Landroid/renderscript/Type;Landroid/renderscript/Script$KernelID;Landroid/renderscript/Script$KernelID;)V
Landroid/renderscript/ScriptGroup$ConnectLine;->mAllocationType:Landroid/renderscript/Type;
@@ -64904,11 +60661,9 @@
Landroid/renderscript/ScriptGroup$Input;->mFieldID:Ljava/util/List;
Landroid/renderscript/ScriptGroup$Input;->mValue:Ljava/lang/Object;
Landroid/renderscript/ScriptGroup$Input;->set(Ljava/lang/Object;)V
-Landroid/renderscript/ScriptGroup$IO;
Landroid/renderscript/ScriptGroup$IO;-><init>(Landroid/renderscript/Script$KernelID;)V
Landroid/renderscript/ScriptGroup$IO;->mAllocation:Landroid/renderscript/Allocation;
Landroid/renderscript/ScriptGroup$IO;->mKID:Landroid/renderscript/Script$KernelID;
-Landroid/renderscript/ScriptGroup$Node;
Landroid/renderscript/ScriptGroup$Node;-><init>(Landroid/renderscript/Script;)V
Landroid/renderscript/ScriptGroup$Node;->dagNumber:I
Landroid/renderscript/ScriptGroup$Node;->mInputs:Ljava/util/ArrayList;
@@ -64929,10 +60684,6 @@
Landroid/renderscript/ScriptIntrinsic3DLUT;->mElement:Landroid/renderscript/Element;
Landroid/renderscript/ScriptIntrinsic3DLUT;->mLUT:Landroid/renderscript/Allocation;
Landroid/renderscript/ScriptIntrinsic;-><init>(JLandroid/renderscript/RenderScript;)V
-Landroid/renderscript/ScriptIntrinsicBLAS$Diag;
-Landroid/renderscript/ScriptIntrinsicBLAS$Side;
-Landroid/renderscript/ScriptIntrinsicBLAS$Transpose;
-Landroid/renderscript/ScriptIntrinsicBLAS$Uplo;
Landroid/renderscript/ScriptIntrinsicBLAS;-><init>(JLandroid/renderscript/RenderScript;)V
Landroid/renderscript/ScriptIntrinsicBLAS;->mLUT:Landroid/renderscript/Allocation;
Landroid/renderscript/ScriptIntrinsicBLAS;->RsBlas_bnnm:I
@@ -65240,7 +60991,6 @@
Landroid/renderscript/Type$Builder;->mRS:Landroid/renderscript/RenderScript;
Landroid/renderscript/Type$Builder;->mYuv:I
Landroid/renderscript/Type$Builder;->setArray(II)Landroid/renderscript/Type$Builder;
-Landroid/renderscript/Type$CubemapFace;-><init>(I)V
Landroid/renderscript/Type$CubemapFace;->mID:I
Landroid/renderscript/Type;-><init>(JLandroid/renderscript/RenderScript;)V
Landroid/renderscript/Type;->calcElementCount()V
@@ -65257,11 +61007,9 @@
Landroid/renderscript/Type;->mElementCount:I
Landroid/renderscript/Type;->mMaxArrays:I
Landroid/renderscript/Type;->updateFromNative()V
-Landroid/sax/Children$Child;
Landroid/sax/Children$Child;-><init>(Landroid/sax/Element;Ljava/lang/String;Ljava/lang/String;II)V
Landroid/sax/Children$Child;->hash:I
Landroid/sax/Children$Child;->next:Landroid/sax/Children$Child;
-Landroid/sax/Children;
Landroid/sax/Children;-><init>()V
Landroid/sax/Children;->children:[Landroid/sax/Children$Child;
Landroid/sax/Children;->get(Ljava/lang/String;Ljava/lang/String;)Landroid/sax/Element;
@@ -65280,8 +61028,6 @@
Landroid/sax/Element;->toString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
Landroid/sax/Element;->uri:Ljava/lang/String;
Landroid/sax/Element;->visited:Z
-Landroid/sax/RootElement$Handler;
-Landroid/sax/RootElement$Handler;-><init>()V
Landroid/sax/RootElement$Handler;->bodyBuilder:Ljava/lang/StringBuilder;
Landroid/sax/RootElement$Handler;->current:Landroid/sax/Element;
Landroid/sax/RootElement$Handler;->depth:I
@@ -65295,7 +61041,6 @@
Landroid/se/omapi/Channel;->mService:Landroid/se/omapi/SEService;
Landroid/se/omapi/Channel;->mSession:Landroid/se/omapi/Session;
Landroid/se/omapi/Channel;->TAG:Ljava/lang/String;
-Landroid/se/omapi/ISecureElementChannel$Stub$Proxy;
Landroid/se/omapi/ISecureElementChannel$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/se/omapi/ISecureElementChannel$Stub$Proxy;->close()V
Landroid/se/omapi/ISecureElementChannel$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
@@ -65305,7 +61050,6 @@
Landroid/se/omapi/ISecureElementChannel$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/se/omapi/ISecureElementChannel$Stub$Proxy;->selectNext()Z
Landroid/se/omapi/ISecureElementChannel$Stub$Proxy;->transmit([B)[B
-Landroid/se/omapi/ISecureElementChannel$Stub;
Landroid/se/omapi/ISecureElementChannel$Stub;-><init>()V
Landroid/se/omapi/ISecureElementChannel$Stub;->asInterface(Landroid/os/IBinder;)Landroid/se/omapi/ISecureElementChannel;
Landroid/se/omapi/ISecureElementChannel$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -65315,59 +61059,48 @@
Landroid/se/omapi/ISecureElementChannel$Stub;->TRANSACTION_isClosed:I
Landroid/se/omapi/ISecureElementChannel$Stub;->TRANSACTION_selectNext:I
Landroid/se/omapi/ISecureElementChannel$Stub;->TRANSACTION_transmit:I
-Landroid/se/omapi/ISecureElementChannel;
Landroid/se/omapi/ISecureElementChannel;->close()V
Landroid/se/omapi/ISecureElementChannel;->getSelectResponse()[B
Landroid/se/omapi/ISecureElementChannel;->isBasicChannel()Z
Landroid/se/omapi/ISecureElementChannel;->isClosed()Z
Landroid/se/omapi/ISecureElementChannel;->selectNext()Z
Landroid/se/omapi/ISecureElementChannel;->transmit([B)[B
-Landroid/se/omapi/ISecureElementListener$Stub$Proxy;
Landroid/se/omapi/ISecureElementListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/se/omapi/ISecureElementListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/se/omapi/ISecureElementListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/se/omapi/ISecureElementListener$Stub;
Landroid/se/omapi/ISecureElementListener$Stub;-><init>()V
Landroid/se/omapi/ISecureElementListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/se/omapi/ISecureElementListener;
Landroid/se/omapi/ISecureElementListener$Stub;->DESCRIPTOR:Ljava/lang/String;
-Landroid/se/omapi/ISecureElementListener;
-Landroid/se/omapi/ISecureElementReader$Stub$Proxy;
Landroid/se/omapi/ISecureElementReader$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/se/omapi/ISecureElementReader$Stub$Proxy;->closeSessions()V
Landroid/se/omapi/ISecureElementReader$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/se/omapi/ISecureElementReader$Stub$Proxy;->isSecureElementPresent()Z
Landroid/se/omapi/ISecureElementReader$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/se/omapi/ISecureElementReader$Stub$Proxy;->openSession()Landroid/se/omapi/ISecureElementSession;
-Landroid/se/omapi/ISecureElementReader$Stub;
Landroid/se/omapi/ISecureElementReader$Stub;-><init>()V
Landroid/se/omapi/ISecureElementReader$Stub;->asInterface(Landroid/os/IBinder;)Landroid/se/omapi/ISecureElementReader;
Landroid/se/omapi/ISecureElementReader$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/se/omapi/ISecureElementReader$Stub;->TRANSACTION_closeSessions:I
Landroid/se/omapi/ISecureElementReader$Stub;->TRANSACTION_isSecureElementPresent:I
Landroid/se/omapi/ISecureElementReader$Stub;->TRANSACTION_openSession:I
-Landroid/se/omapi/ISecureElementReader;
Landroid/se/omapi/ISecureElementReader;->closeSessions()V
Landroid/se/omapi/ISecureElementReader;->isSecureElementPresent()Z
Landroid/se/omapi/ISecureElementReader;->openSession()Landroid/se/omapi/ISecureElementSession;
-Landroid/se/omapi/ISecureElementService$Stub$Proxy;
Landroid/se/omapi/ISecureElementService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/se/omapi/ISecureElementService$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/se/omapi/ISecureElementService$Stub$Proxy;->getReader(Ljava/lang/String;)Landroid/se/omapi/ISecureElementReader;
Landroid/se/omapi/ISecureElementService$Stub$Proxy;->getReaders()[Ljava/lang/String;
Landroid/se/omapi/ISecureElementService$Stub$Proxy;->isNFCEventAllowed(Ljava/lang/String;[B[Ljava/lang/String;)[Z
Landroid/se/omapi/ISecureElementService$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/se/omapi/ISecureElementService$Stub;
Landroid/se/omapi/ISecureElementService$Stub;-><init>()V
Landroid/se/omapi/ISecureElementService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/se/omapi/ISecureElementService;
Landroid/se/omapi/ISecureElementService$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/se/omapi/ISecureElementService$Stub;->TRANSACTION_getReader:I
Landroid/se/omapi/ISecureElementService$Stub;->TRANSACTION_getReaders:I
Landroid/se/omapi/ISecureElementService$Stub;->TRANSACTION_isNFCEventAllowed:I
-Landroid/se/omapi/ISecureElementService;
Landroid/se/omapi/ISecureElementService;->getReader(Ljava/lang/String;)Landroid/se/omapi/ISecureElementReader;
Landroid/se/omapi/ISecureElementService;->getReaders()[Ljava/lang/String;
Landroid/se/omapi/ISecureElementService;->isNFCEventAllowed(Ljava/lang/String;[B[Ljava/lang/String;)[Z
-Landroid/se/omapi/ISecureElementSession$Stub$Proxy;
Landroid/se/omapi/ISecureElementSession$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/se/omapi/ISecureElementSession$Stub$Proxy;->close()V
Landroid/se/omapi/ISecureElementSession$Stub$Proxy;->closeChannels()V
@@ -65377,7 +61110,6 @@
Landroid/se/omapi/ISecureElementSession$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/se/omapi/ISecureElementSession$Stub$Proxy;->openBasicChannel([BBLandroid/se/omapi/ISecureElementListener;)Landroid/se/omapi/ISecureElementChannel;
Landroid/se/omapi/ISecureElementSession$Stub$Proxy;->openLogicalChannel([BBLandroid/se/omapi/ISecureElementListener;)Landroid/se/omapi/ISecureElementChannel;
-Landroid/se/omapi/ISecureElementSession$Stub;
Landroid/se/omapi/ISecureElementSession$Stub;-><init>()V
Landroid/se/omapi/ISecureElementSession$Stub;->asInterface(Landroid/os/IBinder;)Landroid/se/omapi/ISecureElementSession;
Landroid/se/omapi/ISecureElementSession$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -65387,7 +61119,6 @@
Landroid/se/omapi/ISecureElementSession$Stub;->TRANSACTION_isClosed:I
Landroid/se/omapi/ISecureElementSession$Stub;->TRANSACTION_openBasicChannel:I
Landroid/se/omapi/ISecureElementSession$Stub;->TRANSACTION_openLogicalChannel:I
-Landroid/se/omapi/ISecureElementSession;
Landroid/se/omapi/ISecureElementSession;->close()V
Landroid/se/omapi/ISecureElementSession;->closeChannels()V
Landroid/se/omapi/ISecureElementSession;->getAtr()[B
@@ -65400,8 +61131,6 @@
Landroid/se/omapi/Reader;->mReader:Landroid/se/omapi/ISecureElementReader;
Landroid/se/omapi/Reader;->mService:Landroid/se/omapi/SEService;
Landroid/se/omapi/Reader;->TAG:Ljava/lang/String;
-Landroid/se/omapi/SEService$SEListener;
-Landroid/se/omapi/SEService$SEListener;-><init>()V
Landroid/se/omapi/SEService$SEListener;->mExecutor:Ljava/util/concurrent/Executor;
Landroid/se/omapi/SEService$SEListener;->mListener:Landroid/se/omapi/SEService$OnConnectedListener;
Landroid/se/omapi/SEService$SEListener;->onConnected()V
@@ -65422,7 +61151,6 @@
Landroid/se/omapi/Session;->mService:Landroid/se/omapi/SEService;
Landroid/se/omapi/Session;->mSession:Landroid/se/omapi/ISecureElementSession;
Landroid/se/omapi/Session;->TAG:Ljava/lang/String;
-Landroid/Section;
Landroid/Section;-><init>()V
Landroid/Section;->SECTION_COMMAND:I
Landroid/Section;->SECTION_DUMPSYS:I
@@ -65431,7 +61159,6 @@
Landroid/Section;->SECTION_LOG:I
Landroid/Section;->SECTION_NONE:I
Landroid/Section;->SECTION_TOMBSTONE:I
-Landroid/SectionFlags;
Landroid/SectionFlags;-><init>()V
Landroid/SectionFlags;->ARGS:J
Landroid/SectionFlags;->DEVICE_SPECIFIC:J
@@ -65457,7 +61184,6 @@
Landroid/security/ConfirmationPrompt;->TAG:Ljava/lang/String;
Landroid/security/ConfirmationPrompt;->UI_OPTION_ACCESSIBILITY_INVERTED_FLAG:I
Landroid/security/ConfirmationPrompt;->UI_OPTION_ACCESSIBILITY_MAGNIFIED_FLAG:I
-Landroid/security/Credentials;
Landroid/security/Credentials;-><init>()V
Landroid/security/Credentials;->CA_CERTIFICATE:Ljava/lang/String;
Landroid/security/Credentials;->convertFromPem([B)Ljava/util/List;
@@ -65493,38 +61219,29 @@
Landroid/security/Credentials;->USER_SECRET_KEY:Ljava/lang/String;
Landroid/security/Credentials;->VPN:Ljava/lang/String;
Landroid/security/Credentials;->WIFI:Ljava/lang/String;
-Landroid/security/FrameworkNetworkSecurityPolicy;
Landroid/security/FrameworkNetworkSecurityPolicy;-><init>(Z)V
Landroid/security/FrameworkNetworkSecurityPolicy;->mCleartextTrafficPermitted:Z
-Landroid/security/GateKeeper;
Landroid/security/GateKeeper;-><init>()V
Landroid/security/GateKeeper;->getService()Landroid/service/gatekeeper/IGateKeeperService;
Landroid/security/GateKeeper;->INVALID_SECURE_USER_ID:J
-Landroid/security/IConfirmationPromptCallback$Stub$Proxy;
Landroid/security/IConfirmationPromptCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/security/IConfirmationPromptCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/security/IConfirmationPromptCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/security/IConfirmationPromptCallback$Stub$Proxy;->onConfirmationPromptCompleted(I[B)V
-Landroid/security/IConfirmationPromptCallback$Stub;
Landroid/security/IConfirmationPromptCallback$Stub;-><init>()V
Landroid/security/IConfirmationPromptCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/security/IConfirmationPromptCallback;
Landroid/security/IConfirmationPromptCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/security/IConfirmationPromptCallback$Stub;->TRANSACTION_onConfirmationPromptCompleted:I
-Landroid/security/IConfirmationPromptCallback;
Landroid/security/IConfirmationPromptCallback;->onConfirmationPromptCompleted(I[B)V
-Landroid/security/IKeyChainAliasCallback$Stub$Proxy;
Landroid/security/IKeyChainAliasCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/security/IKeyChainAliasCallback$Stub$Proxy;->alias(Ljava/lang/String;)V
Landroid/security/IKeyChainAliasCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/security/IKeyChainAliasCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/security/IKeyChainAliasCallback$Stub;
Landroid/security/IKeyChainAliasCallback$Stub;-><init>()V
Landroid/security/IKeyChainAliasCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/security/IKeyChainAliasCallback;
Landroid/security/IKeyChainAliasCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/security/IKeyChainAliasCallback$Stub;->TRANSACTION_alias:I
-Landroid/security/IKeyChainAliasCallback;
Landroid/security/IKeyChainAliasCallback;->alias(Ljava/lang/String;)V
-Landroid/security/IKeyChainService$Stub$Proxy;
Landroid/security/IKeyChainService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/security/IKeyChainService$Stub$Proxy;->attestKey(Ljava/lang/String;[B[ILandroid/security/keymaster/KeymasterCertificateChain;)I
Landroid/security/IKeyChainService$Stub$Proxy;->containsCaAlias(Ljava/lang/String;)Z
@@ -65548,7 +61265,6 @@
Landroid/security/IKeyChainService$Stub$Proxy;->setGrant(ILjava/lang/String;Z)V
Landroid/security/IKeyChainService$Stub$Proxy;->setKeyPairCertificate(Ljava/lang/String;[B[B)Z
Landroid/security/IKeyChainService$Stub$Proxy;->setUserSelectable(Ljava/lang/String;Z)V
-Landroid/security/IKeyChainService$Stub;
Landroid/security/IKeyChainService$Stub;-><init>()V
Landroid/security/IKeyChainService$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/security/IKeyChainService$Stub;->TRANSACTION_attestKey:I
@@ -65571,7 +61287,6 @@
Landroid/security/IKeyChainService$Stub;->TRANSACTION_setGrant:I
Landroid/security/IKeyChainService$Stub;->TRANSACTION_setKeyPairCertificate:I
Landroid/security/IKeyChainService$Stub;->TRANSACTION_setUserSelectable:I
-Landroid/security/IKeyChainService;
Landroid/security/IKeyChainService;->attestKey(Ljava/lang/String;[B[ILandroid/security/keymaster/KeymasterCertificateChain;)I
Landroid/security/IKeyChainService;->containsCaAlias(Ljava/lang/String;)Z
Landroid/security/IKeyChainService;->deleteCaCertificate(Ljava/lang/String;)Z
@@ -65591,7 +61306,6 @@
Landroid/security/IKeyChainService;->setGrant(ILjava/lang/String;Z)V
Landroid/security/IKeyChainService;->setKeyPairCertificate(Ljava/lang/String;[B[B)Z
Landroid/security/IKeyChainService;->setUserSelectable(Ljava/lang/String;Z)V
-Landroid/security/IKeystoreService$Stub$Proxy;
Landroid/security/IKeystoreService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/security/IKeystoreService$Stub$Proxy;->abort(Landroid/os/IBinder;)I
Landroid/security/IKeystoreService$Stub$Proxy;->addAuthToken([B)I
@@ -65637,7 +61351,6 @@
Landroid/security/IKeystoreService$Stub$Proxy;->unlock(ILjava/lang/String;)I
Landroid/security/IKeystoreService$Stub$Proxy;->update(Landroid/os/IBinder;Landroid/security/keymaster/KeymasterArguments;[B)Landroid/security/keymaster/OperationResult;
Landroid/security/IKeystoreService$Stub$Proxy;->verify(Ljava/lang/String;[B[B)I
-Landroid/security/IKeystoreService$Stub;
Landroid/security/IKeystoreService$Stub;-><init>()V
Landroid/security/IKeystoreService$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/security/IKeystoreService$Stub;->TRANSACTION_abort:I
@@ -65682,7 +61395,6 @@
Landroid/security/IKeystoreService$Stub;->TRANSACTION_unlock:I
Landroid/security/IKeystoreService$Stub;->TRANSACTION_update:I
Landroid/security/IKeystoreService$Stub;->TRANSACTION_verify:I
-Landroid/security/IKeystoreService;
Landroid/security/IKeystoreService;->abort(Landroid/os/IBinder;)I
Landroid/security/IKeystoreService;->addAuthToken([B)I
Landroid/security/IKeystoreService;->addRngEntropy([BI)I
@@ -65710,11 +61422,9 @@
Landroid/security/IKeystoreService;->presentConfirmationPrompt(Landroid/os/IBinder;Ljava/lang/String;[BLjava/lang/String;I)I
Landroid/security/IKeystoreService;->unlock(ILjava/lang/String;)I
Landroid/security/IKeystoreService;->update(Landroid/os/IBinder;Landroid/security/keymaster/KeymasterArguments;[B)Landroid/security/keymaster/OperationResult;
-Landroid/security/KeyChain$AliasResponse;
Landroid/security/KeyChain$AliasResponse;-><init>(Landroid/security/KeyChainAliasCallback;)V
Landroid/security/KeyChain$AliasResponse;->alias(Ljava/lang/String;)V
Landroid/security/KeyChain$AliasResponse;->keyChainAliasResponse:Landroid/security/KeyChainAliasCallback;
-Landroid/security/KeyChain$KeyChainConnection;
Landroid/security/KeyChain$KeyChainConnection;-><init>(Landroid/content/Context;Landroid/content/ServiceConnection;Landroid/security/IKeyChainService;)V
Landroid/security/KeyChain$KeyChainConnection;->context:Landroid/content/Context;
Landroid/security/KeyChain$KeyChainConnection;->getService()Landroid/security/IKeyChainService;
@@ -65747,29 +61457,23 @@
Landroid/security/KeyChain;->KEY_GEN_SUPERFLUOUS_ATTESTATION_CHALLENGE:I
Landroid/security/KeyChain;->toCertificate([B)Ljava/security/cert/X509Certificate;
Landroid/security/KeyChain;->toCertificates([B)Ljava/util/Collection;
-Landroid/security/keymaster/ExportResult;
Landroid/security/keymaster/ExportResult;-><init>(Landroid/os/Parcel;)V
Landroid/security/keymaster/ExportResult;->exportData:[B
Landroid/security/keymaster/ExportResult;->resultCode:I
-Landroid/security/keymaster/IKeyAttestationApplicationIdProvider$Stub$Proxy;
Landroid/security/keymaster/IKeyAttestationApplicationIdProvider$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/security/keymaster/IKeyAttestationApplicationIdProvider$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/security/keymaster/IKeyAttestationApplicationIdProvider$Stub$Proxy;->getKeyAttestationApplicationId(I)Landroid/security/keymaster/KeyAttestationApplicationId;
Landroid/security/keymaster/IKeyAttestationApplicationIdProvider$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/security/keymaster/IKeyAttestationApplicationIdProvider$Stub;
Landroid/security/keymaster/IKeyAttestationApplicationIdProvider$Stub;-><init>()V
Landroid/security/keymaster/IKeyAttestationApplicationIdProvider$Stub;->asInterface(Landroid/os/IBinder;)Landroid/security/keymaster/IKeyAttestationApplicationIdProvider;
Landroid/security/keymaster/IKeyAttestationApplicationIdProvider$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/security/keymaster/IKeyAttestationApplicationIdProvider$Stub;->TRANSACTION_getKeyAttestationApplicationId:I
-Landroid/security/keymaster/IKeyAttestationApplicationIdProvider;
Landroid/security/keymaster/IKeyAttestationApplicationIdProvider;->getKeyAttestationApplicationId(I)Landroid/security/keymaster/KeyAttestationApplicationId;
-Landroid/security/keymaster/KeyAttestationApplicationId;
Landroid/security/keymaster/KeyAttestationApplicationId;-><init>(Landroid/os/Parcel;)V
Landroid/security/keymaster/KeyAttestationApplicationId;-><init>([Landroid/security/keymaster/KeyAttestationPackageInfo;)V
Landroid/security/keymaster/KeyAttestationApplicationId;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/security/keymaster/KeyAttestationApplicationId;->getAttestationPackageInfos()[Landroid/security/keymaster/KeyAttestationPackageInfo;
Landroid/security/keymaster/KeyAttestationApplicationId;->mAttestationPackageInfos:[Landroid/security/keymaster/KeyAttestationPackageInfo;
-Landroid/security/keymaster/KeyAttestationPackageInfo;
Landroid/security/keymaster/KeyAttestationPackageInfo;-><init>(Landroid/os/Parcel;)V
Landroid/security/keymaster/KeyAttestationPackageInfo;-><init>(Ljava/lang/String;J[Landroid/content/pm/Signature;)V
Landroid/security/keymaster/KeyAttestationPackageInfo;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -65779,7 +61483,6 @@
Landroid/security/keymaster/KeyAttestationPackageInfo;->mPackageName:Ljava/lang/String;
Landroid/security/keymaster/KeyAttestationPackageInfo;->mPackageSignatures:[Landroid/content/pm/Signature;
Landroid/security/keymaster/KeyAttestationPackageInfo;->mPackageVersionCode:J
-Landroid/security/keymaster/KeyCharacteristics;
Landroid/security/keymaster/KeyCharacteristics;-><init>(Landroid/os/Parcel;)V
Landroid/security/keymaster/KeyCharacteristics;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/security/keymaster/KeyCharacteristics;->getBoolean(I)Z
@@ -65790,18 +61493,15 @@
Landroid/security/keymaster/KeyCharacteristics;->getUnsignedLongs(I)Ljava/util/List;
Landroid/security/keymaster/KeyCharacteristics;->hwEnforced:Landroid/security/keymaster/KeymasterArguments;
Landroid/security/keymaster/KeyCharacteristics;->swEnforced:Landroid/security/keymaster/KeymasterArguments;
-Landroid/security/keymaster/KeymasterArgument;
Landroid/security/keymaster/KeymasterArgument;-><init>(I)V
Landroid/security/keymaster/KeymasterArgument;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/security/keymaster/KeymasterArgument;->tag:I
Landroid/security/keymaster/KeymasterArgument;->writeValue(Landroid/os/Parcel;)V
-Landroid/security/keymaster/KeymasterArguments;
Landroid/security/keymaster/KeymasterArguments;-><init>(Landroid/os/Parcel;)V
Landroid/security/keymaster/KeymasterArguments;->addBoolean(I)V
Landroid/security/keymaster/KeymasterArguments;->addBytes(I[B)V
Landroid/security/keymaster/KeymasterArguments;->addDate(ILjava/util/Date;)V
Landroid/security/keymaster/KeymasterArguments;->addDateIfNotNull(ILjava/util/Date;)V
-Landroid/security/keymaster/KeymasterArguments;->addEnums(I[[I)V
Landroid/security/keymaster/KeymasterArguments;->addEnumTag(II)V
Landroid/security/keymaster/KeymasterArguments;->addLongTag(ILjava/math/BigInteger;)V
Landroid/security/keymaster/KeymasterArguments;->containsTag(I)Z
@@ -65822,11 +61522,9 @@
Landroid/security/keymaster/KeymasterArguments;->UINT32_RANGE:J
Landroid/security/keymaster/KeymasterArguments;->UINT64_MAX_VALUE:Ljava/math/BigInteger;
Landroid/security/keymaster/KeymasterArguments;->UINT64_RANGE:Ljava/math/BigInteger;
-Landroid/security/keymaster/KeymasterBlob;
Landroid/security/keymaster/KeymasterBlob;-><init>(Landroid/os/Parcel;)V
Landroid/security/keymaster/KeymasterBlob;-><init>([B)V
Landroid/security/keymaster/KeymasterBlob;->blob:[B
-Landroid/security/keymaster/KeymasterCertificateChain;
Landroid/security/keymaster/KeymasterCertificateChain;-><init>()V
Landroid/security/keymaster/KeymasterCertificateChain;-><init>(Landroid/os/Parcel;)V
Landroid/security/keymaster/KeymasterCertificateChain;-><init>(Ljava/util/List;)V
@@ -65834,7 +61532,6 @@
Landroid/security/keymaster/KeymasterCertificateChain;->getCertificates()Ljava/util/List;
Landroid/security/keymaster/KeymasterCertificateChain;->mCertificates:Ljava/util/List;
Landroid/security/keymaster/KeymasterCertificateChain;->readFromParcel(Landroid/os/Parcel;)V
-Landroid/security/keymaster/KeymasterDefs;
Landroid/security/keymaster/KeymasterDefs;-><init>()V
Landroid/security/keymaster/KeymasterDefs;->getErrorMessage(I)Ljava/lang/String;
Landroid/security/keymaster/KeymasterDefs;->getTagType(I)I
@@ -66001,7 +61698,6 @@
Landroid/security/keymaster/KeymasterDefs;->KM_ULONG:I
Landroid/security/keymaster/KeymasterDefs;->KM_ULONG_REP:I
Landroid/security/keymaster/KeymasterDefs;->sErrorCodeToString:Ljava/util/Map;
-Landroid/security/keymaster/OperationResult;
Landroid/security/keymaster/OperationResult;-><init>(ILandroid/os/IBinder;JI[BLandroid/security/keymaster/KeymasterArguments;)V
Landroid/security/keymaster/OperationResult;-><init>(Landroid/os/Parcel;)V
Landroid/security/keymaster/OperationResult;->inputConsumed:I
@@ -66032,24 +61728,15 @@
Landroid/security/KeyPairGeneratorSpec;->mSpec:Ljava/security/spec/AlgorithmParameterSpec;
Landroid/security/KeyPairGeneratorSpec;->mStartDate:Ljava/util/Date;
Landroid/security/KeyPairGeneratorSpec;->mSubjectDN:Ljavax/security/auth/x500/X500Principal;
-Landroid/security/KeyStore$State;
-Landroid/security/KeyStore$State;-><init>()V
Landroid/security/KeyStore$State;->UNINITIALIZED:Landroid/security/KeyStore$State;
Landroid/security/KeyStore$State;->valueOf(Ljava/lang/String;)Landroid/security/KeyStore$State;
Landroid/security/KeyStore$State;->values()[Landroid/security/KeyStore$State;
-Landroid/security/keystore/AndroidKeyStore3DESCipherSpi$CBC$NoPadding;
Landroid/security/keystore/AndroidKeyStore3DESCipherSpi$CBC$NoPadding;-><init>()V
-Landroid/security/keystore/AndroidKeyStore3DESCipherSpi$CBC$PKCS7Padding;
Landroid/security/keystore/AndroidKeyStore3DESCipherSpi$CBC$PKCS7Padding;-><init>()V
-Landroid/security/keystore/AndroidKeyStore3DESCipherSpi$CBC;
Landroid/security/keystore/AndroidKeyStore3DESCipherSpi$CBC;-><init>(I)V
-Landroid/security/keystore/AndroidKeyStore3DESCipherSpi$ECB$NoPadding;
Landroid/security/keystore/AndroidKeyStore3DESCipherSpi$ECB$NoPadding;-><init>()V
-Landroid/security/keystore/AndroidKeyStore3DESCipherSpi$ECB$PKCS7Padding;
Landroid/security/keystore/AndroidKeyStore3DESCipherSpi$ECB$PKCS7Padding;-><init>()V
-Landroid/security/keystore/AndroidKeyStore3DESCipherSpi$ECB;
Landroid/security/keystore/AndroidKeyStore3DESCipherSpi$ECB;-><init>(I)V
-Landroid/security/keystore/AndroidKeyStore3DESCipherSpi;
Landroid/security/keystore/AndroidKeyStore3DESCipherSpi;-><init>(IIZ)V
Landroid/security/keystore/AndroidKeyStore3DESCipherSpi;->addAlgorithmSpecificParametersToBegin(Landroid/security/keymaster/KeymasterArguments;)V
Landroid/security/keystore/AndroidKeyStore3DESCipherSpi;->BLOCK_SIZE_BYTES:I
@@ -66066,7 +61753,6 @@
Landroid/security/keystore/AndroidKeyStore3DESCipherSpi;->mKeymasterBlockMode:I
Landroid/security/keystore/AndroidKeyStore3DESCipherSpi;->mKeymasterPadding:I
Landroid/security/keystore/AndroidKeyStore3DESCipherSpi;->resetAll()V
-Landroid/security/keystore/AndroidKeyStoreCipherSpiBase;
Landroid/security/keystore/AndroidKeyStoreCipherSpiBase;-><init>()V
Landroid/security/keystore/AndroidKeyStoreCipherSpiBase;->addAlgorithmSpecificParametersToBegin(Landroid/security/keymaster/KeymasterArguments;)V
Landroid/security/keystore/AndroidKeyStoreCipherSpiBase;->createAdditionalAuthenticationDataStreamer(Landroid/security/KeyStore;Landroid/os/IBinder;)Landroid/security/keystore/KeyStoreCryptoOperationStreamer;
@@ -66103,25 +61789,17 @@
Landroid/security/keystore/AndroidKeyStoreCipherSpiBase;->resetWhilePreservingInitState()V
Landroid/security/keystore/AndroidKeyStoreCipherSpiBase;->setKey(Landroid/security/keystore/AndroidKeyStoreKey;)V
Landroid/security/keystore/AndroidKeyStoreCipherSpiBase;->setKeymasterPurposeOverride(I)V
-Landroid/security/keystore/AndroidKeyStoreECPrivateKey;
Landroid/security/keystore/AndroidKeyStoreECPrivateKey;-><init>(Ljava/lang/String;ILjava/security/spec/ECParameterSpec;)V
Landroid/security/keystore/AndroidKeyStoreECPrivateKey;->mParams:Ljava/security/spec/ECParameterSpec;
-Landroid/security/keystore/AndroidKeyStoreECPublicKey;
Landroid/security/keystore/AndroidKeyStoreECPublicKey;-><init>(Ljava/lang/String;ILjava/security/interfaces/ECPublicKey;)V
Landroid/security/keystore/AndroidKeyStoreECPublicKey;-><init>(Ljava/lang/String;I[BLjava/security/spec/ECParameterSpec;Ljava/security/spec/ECPoint;)V
Landroid/security/keystore/AndroidKeyStoreECPublicKey;->mParams:Ljava/security/spec/ECParameterSpec;
Landroid/security/keystore/AndroidKeyStoreECPublicKey;->mW:Ljava/security/spec/ECPoint;
-Landroid/security/keystore/AndroidKeyStoreHmacSpi$HmacSHA1;
Landroid/security/keystore/AndroidKeyStoreHmacSpi$HmacSHA1;-><init>()V
-Landroid/security/keystore/AndroidKeyStoreHmacSpi$HmacSHA224;
Landroid/security/keystore/AndroidKeyStoreHmacSpi$HmacSHA224;-><init>()V
-Landroid/security/keystore/AndroidKeyStoreHmacSpi$HmacSHA256;
Landroid/security/keystore/AndroidKeyStoreHmacSpi$HmacSHA256;-><init>()V
-Landroid/security/keystore/AndroidKeyStoreHmacSpi$HmacSHA384;
Landroid/security/keystore/AndroidKeyStoreHmacSpi$HmacSHA384;-><init>()V
-Landroid/security/keystore/AndroidKeyStoreHmacSpi$HmacSHA512;
Landroid/security/keystore/AndroidKeyStoreHmacSpi$HmacSHA512;-><init>()V
-Landroid/security/keystore/AndroidKeyStoreHmacSpi;
Landroid/security/keystore/AndroidKeyStoreHmacSpi;-><init>(I)V
Landroid/security/keystore/AndroidKeyStoreHmacSpi;->ensureKeystoreOperationInitialized()V
Landroid/security/keystore/AndroidKeyStoreHmacSpi;->getOperationHandle()J
@@ -66135,33 +61813,22 @@
Landroid/security/keystore/AndroidKeyStoreHmacSpi;->mOperationToken:Landroid/os/IBinder;
Landroid/security/keystore/AndroidKeyStoreHmacSpi;->resetAll()V
Landroid/security/keystore/AndroidKeyStoreHmacSpi;->resetWhilePreservingInitState()V
-Landroid/security/keystore/AndroidKeyStoreKey;
Landroid/security/keystore/AndroidKeyStoreKey;-><init>(Ljava/lang/String;ILjava/lang/String;)V
Landroid/security/keystore/AndroidKeyStoreKey;->getAlias()Ljava/lang/String;
Landroid/security/keystore/AndroidKeyStoreKey;->getUid()I
Landroid/security/keystore/AndroidKeyStoreKey;->mAlgorithm:Ljava/lang/String;
Landroid/security/keystore/AndroidKeyStoreKey;->mAlias:Ljava/lang/String;
Landroid/security/keystore/AndroidKeyStoreKey;->mUid:I
-Landroid/security/keystore/AndroidKeyStoreKeyFactorySpi;
Landroid/security/keystore/AndroidKeyStoreKeyFactorySpi;-><init>()V
Landroid/security/keystore/AndroidKeyStoreKeyFactorySpi;->mKeyStore:Landroid/security/KeyStore;
-Landroid/security/keystore/AndroidKeyStoreKeyGeneratorSpi$AES;
Landroid/security/keystore/AndroidKeyStoreKeyGeneratorSpi$AES;-><init>()V
-Landroid/security/keystore/AndroidKeyStoreKeyGeneratorSpi$DESede;
Landroid/security/keystore/AndroidKeyStoreKeyGeneratorSpi$DESede;-><init>()V
-Landroid/security/keystore/AndroidKeyStoreKeyGeneratorSpi$HmacBase;
Landroid/security/keystore/AndroidKeyStoreKeyGeneratorSpi$HmacBase;-><init>(I)V
-Landroid/security/keystore/AndroidKeyStoreKeyGeneratorSpi$HmacSHA1;
Landroid/security/keystore/AndroidKeyStoreKeyGeneratorSpi$HmacSHA1;-><init>()V
-Landroid/security/keystore/AndroidKeyStoreKeyGeneratorSpi$HmacSHA224;
Landroid/security/keystore/AndroidKeyStoreKeyGeneratorSpi$HmacSHA224;-><init>()V
-Landroid/security/keystore/AndroidKeyStoreKeyGeneratorSpi$HmacSHA256;
Landroid/security/keystore/AndroidKeyStoreKeyGeneratorSpi$HmacSHA256;-><init>()V
-Landroid/security/keystore/AndroidKeyStoreKeyGeneratorSpi$HmacSHA384;
Landroid/security/keystore/AndroidKeyStoreKeyGeneratorSpi$HmacSHA384;-><init>()V
-Landroid/security/keystore/AndroidKeyStoreKeyGeneratorSpi$HmacSHA512;
Landroid/security/keystore/AndroidKeyStoreKeyGeneratorSpi$HmacSHA512;-><init>()V
-Landroid/security/keystore/AndroidKeyStoreKeyGeneratorSpi;
Landroid/security/keystore/AndroidKeyStoreKeyGeneratorSpi;-><init>(II)V
Landroid/security/keystore/AndroidKeyStoreKeyGeneratorSpi;-><init>(III)V
Landroid/security/keystore/AndroidKeyStoreKeyGeneratorSpi;->mDefaultKeySizeBits:I
@@ -66176,11 +61843,8 @@
Landroid/security/keystore/AndroidKeyStoreKeyGeneratorSpi;->mRng:Ljava/security/SecureRandom;
Landroid/security/keystore/AndroidKeyStoreKeyGeneratorSpi;->mSpec:Landroid/security/keystore/KeyGenParameterSpec;
Landroid/security/keystore/AndroidKeyStoreKeyGeneratorSpi;->resetAll()V
-Landroid/security/keystore/AndroidKeyStoreKeyPairGeneratorSpi$EC;
Landroid/security/keystore/AndroidKeyStoreKeyPairGeneratorSpi$EC;-><init>()V
-Landroid/security/keystore/AndroidKeyStoreKeyPairGeneratorSpi$RSA;
Landroid/security/keystore/AndroidKeyStoreKeyPairGeneratorSpi$RSA;-><init>()V
-Landroid/security/keystore/AndroidKeyStoreKeyPairGeneratorSpi;
Landroid/security/keystore/AndroidKeyStoreKeyPairGeneratorSpi;-><init>(I)V
Landroid/security/keystore/AndroidKeyStoreKeyPairGeneratorSpi;->addAlgorithmSpecificParameters(Landroid/security/keymaster/KeymasterArguments;)V
Landroid/security/keystore/AndroidKeyStoreKeyPairGeneratorSpi;->checkValidKeySize(II)V
@@ -66223,9 +61887,7 @@
Landroid/security/keystore/AndroidKeyStoreKeyPairGeneratorSpi;->SUPPORTED_EC_NIST_CURVE_NAMES:Ljava/util/List;
Landroid/security/keystore/AndroidKeyStoreKeyPairGeneratorSpi;->SUPPORTED_EC_NIST_CURVE_NAME_TO_SIZE:Ljava/util/Map;
Landroid/security/keystore/AndroidKeyStoreKeyPairGeneratorSpi;->SUPPORTED_EC_NIST_CURVE_SIZES:Ljava/util/List;
-Landroid/security/keystore/AndroidKeyStorePrivateKey;
Landroid/security/keystore/AndroidKeyStorePrivateKey;-><init>(Ljava/lang/String;ILjava/lang/String;)V
-Landroid/security/keystore/AndroidKeyStoreProvider;
Landroid/security/keystore/AndroidKeyStoreProvider;-><init>()V
Landroid/security/keystore/AndroidKeyStoreProvider;->DESEDE_SYSTEM_PROPERTY:Ljava/lang/String;
Landroid/security/keystore/AndroidKeyStoreProvider;->getAndroidKeyStorePrivateKey(Landroid/security/keystore/AndroidKeyStorePublicKey;)Landroid/security/keystore/AndroidKeyStorePrivateKey;
@@ -66245,30 +61907,23 @@
Landroid/security/keystore/AndroidKeyStoreProvider;->PROVIDER_NAME:Ljava/lang/String;
Landroid/security/keystore/AndroidKeyStoreProvider;->putKeyFactoryImpl(Ljava/lang/String;)V
Landroid/security/keystore/AndroidKeyStoreProvider;->putSecretKeyFactoryImpl(Ljava/lang/String;)V
-Landroid/security/keystore/AndroidKeyStorePublicKey;
Landroid/security/keystore/AndroidKeyStorePublicKey;-><init>(Ljava/lang/String;ILjava/lang/String;[B)V
Landroid/security/keystore/AndroidKeyStorePublicKey;->mEncoded:[B
-Landroid/security/keystore/AndroidKeyStoreRSAPrivateKey;
Landroid/security/keystore/AndroidKeyStoreRSAPrivateKey;-><init>(Ljava/lang/String;ILjava/math/BigInteger;)V
Landroid/security/keystore/AndroidKeyStoreRSAPrivateKey;->mModulus:Ljava/math/BigInteger;
-Landroid/security/keystore/AndroidKeyStoreRSAPublicKey;
Landroid/security/keystore/AndroidKeyStoreRSAPublicKey;-><init>(Ljava/lang/String;ILjava/security/interfaces/RSAPublicKey;)V
Landroid/security/keystore/AndroidKeyStoreRSAPublicKey;-><init>(Ljava/lang/String;I[BLjava/math/BigInteger;Ljava/math/BigInteger;)V
Landroid/security/keystore/AndroidKeyStoreRSAPublicKey;->mModulus:Ljava/math/BigInteger;
Landroid/security/keystore/AndroidKeyStoreRSAPublicKey;->mPublicExponent:Ljava/math/BigInteger;
-Landroid/security/keystore/AndroidKeyStoreSecretKey;
Landroid/security/keystore/AndroidKeyStoreSecretKey;-><init>(Ljava/lang/String;ILjava/lang/String;)V
-Landroid/security/keystore/AndroidKeyStoreSecretKeyFactorySpi;
Landroid/security/keystore/AndroidKeyStoreSecretKeyFactorySpi;-><init>()V
Landroid/security/keystore/AndroidKeyStoreSecretKeyFactorySpi;->engineGetKeySpec(Ljavax/crypto/SecretKey;Ljava/lang/Class;)Ljava/security/spec/KeySpec;
Landroid/security/keystore/AndroidKeyStoreSecretKeyFactorySpi;->getGateKeeperSecureUserId()Ljava/math/BigInteger;
Landroid/security/keystore/AndroidKeyStoreSecretKeyFactorySpi;->getKeyInfo(Landroid/security/KeyStore;Ljava/lang/String;Ljava/lang/String;I)Landroid/security/keystore/KeyInfo;
Landroid/security/keystore/AndroidKeyStoreSecretKeyFactorySpi;->mKeyStore:Landroid/security/KeyStore;
-Landroid/security/keystore/AndroidKeyStoreSpi$KeyStoreX509Certificate;
Landroid/security/keystore/AndroidKeyStoreSpi$KeyStoreX509Certificate;-><init>(Ljava/lang/String;ILjava/security/cert/X509Certificate;)V
Landroid/security/keystore/AndroidKeyStoreSpi$KeyStoreX509Certificate;->mPrivateKeyAlias:Ljava/lang/String;
Landroid/security/keystore/AndroidKeyStoreSpi$KeyStoreX509Certificate;->mPrivateKeyUid:I
-Landroid/security/keystore/AndroidKeyStoreSpi;
Landroid/security/keystore/AndroidKeyStoreSpi;-><init>()V
Landroid/security/keystore/AndroidKeyStoreSpi;->getCertificateForPrivateKeyEntry(Ljava/lang/String;[B)Ljava/security/cert/Certificate;
Landroid/security/keystore/AndroidKeyStoreSpi;->getCertificateForTrustedCertificateEntry([B)Ljava/security/cert/Certificate;
@@ -66286,7 +61941,6 @@
Landroid/security/keystore/AndroidKeyStoreSpi;->toCertificate([B)Ljava/security/cert/X509Certificate;
Landroid/security/keystore/AndroidKeyStoreSpi;->toCertificates([B)Ljava/util/Collection;
Landroid/security/keystore/AndroidKeyStoreSpi;->wrapIntoKeyStoreCertificate(Ljava/lang/String;ILjava/security/cert/X509Certificate;)Landroid/security/keystore/AndroidKeyStoreSpi$KeyStoreX509Certificate;
-Landroid/security/keystore/ArrayUtils;
Landroid/security/keystore/ArrayUtils;-><init>()V
Landroid/security/keystore/ArrayUtils;->cloneIfNotEmpty([B)[B
Landroid/security/keystore/ArrayUtils;->cloneIfNotEmpty([Ljava/lang/String;)[Ljava/lang/String;
@@ -66300,13 +61954,10 @@
Landroid/security/keystore/AttestationUtils;->parseCertificateChain(Landroid/security/keymaster/KeymasterCertificateChain;)[Ljava/security/cert/X509Certificate;
Landroid/security/keystore/AttestationUtils;->prepareAttestationArguments(Landroid/content/Context;[I[B)Landroid/security/keymaster/KeymasterArguments;
Landroid/security/keystore/AttestationUtils;->prepareAttestationArgumentsForDeviceId(Landroid/content/Context;[I[B)Landroid/security/keymaster/KeymasterArguments;
-Landroid/security/keystore/DelegatingX509Certificate;
Landroid/security/keystore/DelegatingX509Certificate;-><init>(Ljava/security/cert/X509Certificate;)V
Landroid/security/keystore/DelegatingX509Certificate;->mDelegate:Ljava/security/cert/X509Certificate;
-Landroid/security/keystore/DeviceIdAttestationException;
Landroid/security/keystore/DeviceIdAttestationException;-><init>(Ljava/lang/String;)V
Landroid/security/keystore/DeviceIdAttestationException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
-Landroid/security/keystore/KeyAttestationException;
Landroid/security/keystore/KeyAttestationException;-><init>(Ljava/lang/String;)V
Landroid/security/keystore/KeyAttestationException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
Landroid/security/keystore/KeyGenParameterSpec$Builder;-><init>(Landroid/security/keystore/KeyGenParameterSpec;)V
@@ -66391,7 +62042,6 @@
Landroid/security/keystore/KeyInfo;->mUserAuthenticationValidityDurationSeconds:I
Landroid/security/keystore/KeyInfo;->mUserAuthenticationValidWhileOnBody:Z
Landroid/security/keystore/KeyInfo;->mUserConfirmationRequired:Z
-Landroid/security/keystore/KeymasterUtils;
Landroid/security/keystore/KeymasterUtils;-><init>()V
Landroid/security/keystore/KeymasterUtils;->addMinMacLengthAuthorizationIfNecessary(Landroid/security/keymaster/KeymasterArguments;I[I[I)V
Landroid/security/keystore/KeymasterUtils;->addUserAuthArgs(Landroid/security/keymaster/KeymasterArguments;Landroid/security/keystore/UserAuthArgs;)V
@@ -66399,52 +62049,38 @@
Landroid/security/keystore/KeymasterUtils;->getRootSid()J
Landroid/security/keystore/KeymasterUtils;->isKeymasterBlockModeIndCpaCompatibleWithSymmetricCrypto(I)Z
Landroid/security/keystore/KeymasterUtils;->isKeymasterPaddingSchemeIndCpaCompatibleWithAsymmetricCrypto(I)Z
-Landroid/security/keystore/KeyProperties$BlockMode;
Landroid/security/keystore/KeyProperties$BlockMode;-><init>()V
Landroid/security/keystore/KeyProperties$BlockMode;->allFromKeymaster(Ljava/util/Collection;)[Ljava/lang/String;
Landroid/security/keystore/KeyProperties$BlockMode;->allToKeymaster([Ljava/lang/String;)[I
Landroid/security/keystore/KeyProperties$BlockMode;->fromKeymaster(I)Ljava/lang/String;
Landroid/security/keystore/KeyProperties$BlockMode;->toKeymaster(Ljava/lang/String;)I
-Landroid/security/keystore/KeyProperties$BlockModeEnum;
-Landroid/security/keystore/KeyProperties$Digest;
Landroid/security/keystore/KeyProperties$Digest;-><init>()V
Landroid/security/keystore/KeyProperties$Digest;->allFromKeymaster(Ljava/util/Collection;)[Ljava/lang/String;
Landroid/security/keystore/KeyProperties$Digest;->allToKeymaster([Ljava/lang/String;)[I
Landroid/security/keystore/KeyProperties$Digest;->fromKeymaster(I)Ljava/lang/String;
Landroid/security/keystore/KeyProperties$Digest;->fromKeymasterToSignatureAlgorithmDigest(I)Ljava/lang/String;
Landroid/security/keystore/KeyProperties$Digest;->toKeymaster(Ljava/lang/String;)I
-Landroid/security/keystore/KeyProperties$DigestEnum;
-Landroid/security/keystore/KeyProperties$EncryptionPadding;
Landroid/security/keystore/KeyProperties$EncryptionPadding;-><init>()V
Landroid/security/keystore/KeyProperties$EncryptionPadding;->allToKeymaster([Ljava/lang/String;)[I
Landroid/security/keystore/KeyProperties$EncryptionPadding;->fromKeymaster(I)Ljava/lang/String;
Landroid/security/keystore/KeyProperties$EncryptionPadding;->toKeymaster(Ljava/lang/String;)I
-Landroid/security/keystore/KeyProperties$EncryptionPaddingEnum;
-Landroid/security/keystore/KeyProperties$KeyAlgorithm;
Landroid/security/keystore/KeyProperties$KeyAlgorithm;-><init>()V
Landroid/security/keystore/KeyProperties$KeyAlgorithm;->fromKeymasterAsymmetricKeyAlgorithm(I)Ljava/lang/String;
Landroid/security/keystore/KeyProperties$KeyAlgorithm;->fromKeymasterSecretKeyAlgorithm(II)Ljava/lang/String;
Landroid/security/keystore/KeyProperties$KeyAlgorithm;->toKeymasterAsymmetricKeyAlgorithm(Ljava/lang/String;)I
Landroid/security/keystore/KeyProperties$KeyAlgorithm;->toKeymasterDigest(Ljava/lang/String;)I
Landroid/security/keystore/KeyProperties$KeyAlgorithm;->toKeymasterSecretKeyAlgorithm(Ljava/lang/String;)I
-Landroid/security/keystore/KeyProperties$KeyAlgorithmEnum;
-Landroid/security/keystore/KeyProperties$Origin;
Landroid/security/keystore/KeyProperties$Origin;-><init>()V
Landroid/security/keystore/KeyProperties$Origin;->fromKeymaster(I)I
-Landroid/security/keystore/KeyProperties$OriginEnum;
-Landroid/security/keystore/KeyProperties$Purpose;
Landroid/security/keystore/KeyProperties$Purpose;-><init>()V
Landroid/security/keystore/KeyProperties$Purpose;->allFromKeymaster(Ljava/util/Collection;)I
Landroid/security/keystore/KeyProperties$Purpose;->allToKeymaster(I)[I
Landroid/security/keystore/KeyProperties$Purpose;->fromKeymaster(I)I
Landroid/security/keystore/KeyProperties$Purpose;->toKeymaster(I)I
-Landroid/security/keystore/KeyProperties$PurposeEnum;
-Landroid/security/keystore/KeyProperties$SignaturePadding;
Landroid/security/keystore/KeyProperties$SignaturePadding;-><init>()V
Landroid/security/keystore/KeyProperties$SignaturePadding;->allToKeymaster([Ljava/lang/String;)[I
Landroid/security/keystore/KeyProperties$SignaturePadding;->fromKeymaster(I)Ljava/lang/String;
Landroid/security/keystore/KeyProperties$SignaturePadding;->toKeymaster(Ljava/lang/String;)I
-Landroid/security/keystore/KeyProperties$SignaturePaddingEnum;
Landroid/security/keystore/KeyProperties;-><init>()V
Landroid/security/keystore/KeyProperties;->getSetBitCount(I)I
Landroid/security/keystore/KeyProperties;->getSetFlags(I)[I
@@ -66491,20 +62127,15 @@
Landroid/security/keystore/KeyProtection;->mUserAuthenticationValidWhileOnBody:Z
Landroid/security/keystore/KeyProtection;->mUserConfirmationRequired:Z
Landroid/security/keystore/KeyProtection;->mUserPresenceRequred:Z
-Landroid/security/keystore/KeyStoreConnectException;
Landroid/security/keystore/KeyStoreConnectException;-><init>()V
-Landroid/security/keystore/KeyStoreCryptoOperation;
Landroid/security/keystore/KeyStoreCryptoOperation;->getOperationHandle()J
-Landroid/security/keystore/KeyStoreCryptoOperationChunkedStreamer$MainDataStream;
Landroid/security/keystore/KeyStoreCryptoOperationChunkedStreamer$MainDataStream;-><init>(Landroid/security/KeyStore;Landroid/os/IBinder;)V
Landroid/security/keystore/KeyStoreCryptoOperationChunkedStreamer$MainDataStream;->finish([B[B)Landroid/security/keymaster/OperationResult;
Landroid/security/keystore/KeyStoreCryptoOperationChunkedStreamer$MainDataStream;->mKeyStore:Landroid/security/KeyStore;
Landroid/security/keystore/KeyStoreCryptoOperationChunkedStreamer$MainDataStream;->mOperationToken:Landroid/os/IBinder;
Landroid/security/keystore/KeyStoreCryptoOperationChunkedStreamer$MainDataStream;->update([B)Landroid/security/keymaster/OperationResult;
-Landroid/security/keystore/KeyStoreCryptoOperationChunkedStreamer$Stream;
Landroid/security/keystore/KeyStoreCryptoOperationChunkedStreamer$Stream;->finish([B[B)Landroid/security/keymaster/OperationResult;
Landroid/security/keystore/KeyStoreCryptoOperationChunkedStreamer$Stream;->update([B)Landroid/security/keymaster/OperationResult;
-Landroid/security/keystore/KeyStoreCryptoOperationChunkedStreamer;
Landroid/security/keystore/KeyStoreCryptoOperationChunkedStreamer;-><init>(Landroid/security/keystore/KeyStoreCryptoOperationChunkedStreamer$Stream;)V
Landroid/security/keystore/KeyStoreCryptoOperationChunkedStreamer;-><init>(Landroid/security/keystore/KeyStoreCryptoOperationChunkedStreamer$Stream;I)V
Landroid/security/keystore/KeyStoreCryptoOperationChunkedStreamer;->DEFAULT_MAX_CHUNK_SIZE:I
@@ -66520,12 +62151,10 @@
Landroid/security/keystore/KeyStoreCryptoOperationChunkedStreamer;->mMaxChunkSize:I
Landroid/security/keystore/KeyStoreCryptoOperationChunkedStreamer;->mProducedOutputSizeBytes:J
Landroid/security/keystore/KeyStoreCryptoOperationChunkedStreamer;->update([BII)[B
-Landroid/security/keystore/KeyStoreCryptoOperationStreamer;
Landroid/security/keystore/KeyStoreCryptoOperationStreamer;->doFinal([BII[B[B)[B
Landroid/security/keystore/KeyStoreCryptoOperationStreamer;->getConsumedInputSizeBytes()J
Landroid/security/keystore/KeyStoreCryptoOperationStreamer;->getProducedOutputSizeBytes()J
Landroid/security/keystore/KeyStoreCryptoOperationStreamer;->update([BII)[B
-Landroid/security/keystore/ParcelableKeyGenParameterSpec;
Landroid/security/keystore/ParcelableKeyGenParameterSpec;-><init>(Landroid/os/Parcel;)V
Landroid/security/keystore/ParcelableKeyGenParameterSpec;-><init>(Landroid/security/keystore/KeyGenParameterSpec;)V
Landroid/security/keystore/ParcelableKeyGenParameterSpec;->ALGORITHM_PARAMETER_SPEC_EC:I
@@ -66537,15 +62166,12 @@
Landroid/security/keystore/ParcelableKeyGenParameterSpec;->readDateOrNull(Landroid/os/Parcel;)Ljava/util/Date;
Landroid/security/keystore/ParcelableKeyGenParameterSpec;->writeOptionalDate(Landroid/os/Parcel;Ljava/util/Date;)V
Landroid/security/keystore/recovery/KeyChainProtectionParams$Builder;->mInstance:Landroid/security/keystore/recovery/KeyChainProtectionParams;
-Landroid/security/keystore/recovery/KeyChainProtectionParams$LockScreenUiFormat;
-Landroid/security/keystore/recovery/KeyChainProtectionParams$UserSecretType;
Landroid/security/keystore/recovery/KeyChainProtectionParams;-><init>()V
Landroid/security/keystore/recovery/KeyChainProtectionParams;-><init>(Landroid/os/Parcel;)V
Landroid/security/keystore/recovery/KeyChainProtectionParams;->mKeyDerivationParams:Landroid/security/keystore/recovery/KeyDerivationParams;
Landroid/security/keystore/recovery/KeyChainProtectionParams;->mLockScreenUiFormat:Ljava/lang/Integer;
Landroid/security/keystore/recovery/KeyChainProtectionParams;->mSecret:[B
Landroid/security/keystore/recovery/KeyChainProtectionParams;->mUserSecretType:Ljava/lang/Integer;
-Landroid/security/keystore/recovery/KeyChainSnapshot$Builder;
Landroid/security/keystore/recovery/KeyChainSnapshot$Builder;-><init>()V
Landroid/security/keystore/recovery/KeyChainSnapshot$Builder;->build()Landroid/security/keystore/recovery/KeyChainSnapshot;
Landroid/security/keystore/recovery/KeyChainSnapshot$Builder;->mInstance:Landroid/security/keystore/recovery/KeyChainSnapshot;
@@ -66570,14 +62196,12 @@
Landroid/security/keystore/recovery/KeyChainSnapshot;->mMaxAttempts:I
Landroid/security/keystore/recovery/KeyChainSnapshot;->mServerParams:[B
Landroid/security/keystore/recovery/KeyChainSnapshot;->mSnapshotVersion:I
-Landroid/security/keystore/recovery/KeyDerivationParams$KeyDerivationAlgorithm;
Landroid/security/keystore/recovery/KeyDerivationParams;-><init>(I[B)V
Landroid/security/keystore/recovery/KeyDerivationParams;-><init>(I[BI)V
Landroid/security/keystore/recovery/KeyDerivationParams;-><init>(Landroid/os/Parcel;)V
Landroid/security/keystore/recovery/KeyDerivationParams;->mAlgorithm:I
Landroid/security/keystore/recovery/KeyDerivationParams;->mMemoryDifficulty:I
Landroid/security/keystore/recovery/KeyDerivationParams;->mSalt:[B
-Landroid/security/keystore/recovery/RecoveryCertPath;
Landroid/security/keystore/recovery/RecoveryCertPath;-><init>(Landroid/os/Parcel;)V
Landroid/security/keystore/recovery/RecoveryCertPath;-><init>([B)V
Landroid/security/keystore/recovery/RecoveryCertPath;->CERT_PATH_ENCODING:Ljava/lang/String;
@@ -66612,7 +62236,6 @@
Landroid/security/keystore/recovery/RecoverySession;->newSessionId()Ljava/lang/String;
Landroid/security/keystore/recovery/RecoverySession;->SESSION_ID_LENGTH_BYTES:I
Landroid/security/keystore/recovery/RecoverySession;->TAG:Ljava/lang/String;
-Landroid/security/keystore/recovery/TrustedRootCertificates;
Landroid/security/keystore/recovery/TrustedRootCertificates;-><init>()V
Landroid/security/keystore/recovery/TrustedRootCertificates;->ALL_ROOT_CERTIFICATES:Landroid/util/ArrayMap;
Landroid/security/keystore/recovery/TrustedRootCertificates;->constructRootCertificateMap()Landroid/util/ArrayMap;
@@ -66634,14 +62257,12 @@
Landroid/security/keystore/recovery/WrappedApplicationKey;-><init>(Ljava/lang/String;[B)V
Landroid/security/keystore/recovery/WrappedApplicationKey;->mAlias:Ljava/lang/String;
Landroid/security/keystore/recovery/WrappedApplicationKey;->mEncryptedKeyMaterial:[B
-Landroid/security/keystore/recovery/X509CertificateParsingUtils;
Landroid/security/keystore/recovery/X509CertificateParsingUtils;-><init>()V
Landroid/security/keystore/recovery/X509CertificateParsingUtils;->CERT_FORMAT:Ljava/lang/String;
Landroid/security/keystore/recovery/X509CertificateParsingUtils;->decodeBase64(Ljava/lang/String;)[B
Landroid/security/keystore/recovery/X509CertificateParsingUtils;->decodeBase64Cert(Ljava/lang/String;)Ljava/security/cert/X509Certificate;
Landroid/security/keystore/recovery/X509CertificateParsingUtils;->decodeCert(Ljava/io/InputStream;)Ljava/security/cert/X509Certificate;
Landroid/security/keystore/recovery/X509CertificateParsingUtils;->decodeCert([B)Ljava/security/cert/X509Certificate;
-Landroid/security/keystore/UserAuthArgs;
Landroid/security/keystore/UserAuthArgs;->getBoundToSpecificSecureUserId()J
Landroid/security/keystore/UserAuthArgs;->getUserAuthenticationValidityDurationSeconds()I
Landroid/security/keystore/UserAuthArgs;->isInvalidatedByBiometricEnrollment()Z
@@ -66654,7 +62275,6 @@
Landroid/security/keystore/WrappedKeyEntry;->mTransformation:Ljava/lang/String;
Landroid/security/keystore/WrappedKeyEntry;->mWrappedKeyBytes:[B
Landroid/security/keystore/WrappedKeyEntry;->mWrappingKeyAlias:Ljava/lang/String;
-Landroid/security/KeyStore;
Landroid/security/KeyStore;-><init>(Landroid/security/IKeystoreService;)V
Landroid/security/KeyStore;->abort(Landroid/os/IBinder;)I
Landroid/security/KeyStore;->addAuthToken([B)I
@@ -66749,7 +62369,6 @@
Landroid/security/KeyStore;->VALUE_CORRUPTED:I
Landroid/security/KeyStore;->verify(Ljava/lang/String;[B[B)Z
Landroid/security/KeyStore;->WRONG_PASSWORD:I
-Landroid/security/KeystoreArguments;
Landroid/security/KeystoreArguments;-><init>()V
Landroid/security/KeystoreArguments;-><init>(Landroid/os/Parcel;)V
Landroid/security/KeystoreArguments;->args:[[B
@@ -66759,7 +62378,6 @@
Landroid/security/KeyStoreParameter;-><init>(I)V
Landroid/security/KeyStoreParameter;->getFlags()I
Landroid/security/KeyStoreParameter;->mFlags:I
-Landroid/security/net/config/ApplicationConfig;
Landroid/security/net/config/ApplicationConfig;-><init>(Landroid/security/net/config/ConfigSource;)V
Landroid/security/net/config/ApplicationConfig;->ensureInitialized()V
Landroid/security/net/config/ApplicationConfig;->getConfigForHostname(Ljava/lang/String;)Landroid/security/net/config/NetworkSecurityConfig;
@@ -66778,7 +62396,6 @@
Landroid/security/net/config/ApplicationConfig;->setDefaultInstance(Landroid/security/net/config/ApplicationConfig;)V
Landroid/security/net/config/ApplicationConfig;->sInstance:Landroid/security/net/config/ApplicationConfig;
Landroid/security/net/config/ApplicationConfig;->sLock:Ljava/lang/Object;
-Landroid/security/net/config/CertificatesEntryRef;
Landroid/security/net/config/CertificatesEntryRef;-><init>(Landroid/security/net/config/CertificateSource;Z)V
Landroid/security/net/config/CertificatesEntryRef;->findAllCertificatesByIssuerAndSignature(Ljava/security/cert/X509Certificate;)Ljava/util/Set;
Landroid/security/net/config/CertificatesEntryRef;->findByIssuerAndSignature(Ljava/security/cert/X509Certificate;)Landroid/security/net/config/TrustAnchor;
@@ -66788,21 +62405,16 @@
Landroid/security/net/config/CertificatesEntryRef;->mOverridesPins:Z
Landroid/security/net/config/CertificatesEntryRef;->mSource:Landroid/security/net/config/CertificateSource;
Landroid/security/net/config/CertificatesEntryRef;->overridesPins()Z
-Landroid/security/net/config/CertificateSource;
Landroid/security/net/config/CertificateSource;->findAllByIssuerAndSignature(Ljava/security/cert/X509Certificate;)Ljava/util/Set;
Landroid/security/net/config/CertificateSource;->findByIssuerAndSignature(Ljava/security/cert/X509Certificate;)Ljava/security/cert/X509Certificate;
Landroid/security/net/config/CertificateSource;->findBySubjectAndPublicKey(Ljava/security/cert/X509Certificate;)Ljava/security/cert/X509Certificate;
Landroid/security/net/config/CertificateSource;->getCertificates()Ljava/util/Set;
Landroid/security/net/config/CertificateSource;->handleTrustStorageUpdate()V
-Landroid/security/net/config/ConfigNetworkSecurityPolicy;
Landroid/security/net/config/ConfigNetworkSecurityPolicy;-><init>(Landroid/security/net/config/ApplicationConfig;)V
Landroid/security/net/config/ConfigNetworkSecurityPolicy;->mConfig:Landroid/security/net/config/ApplicationConfig;
-Landroid/security/net/config/ConfigSource;
Landroid/security/net/config/ConfigSource;->getDefaultConfig()Landroid/security/net/config/NetworkSecurityConfig;
Landroid/security/net/config/ConfigSource;->getPerDomainConfigs()Ljava/util/Set;
-Landroid/security/net/config/DirectoryCertificateSource$CertSelector;
Landroid/security/net/config/DirectoryCertificateSource$CertSelector;->match(Ljava/security/cert/X509Certificate;)Z
-Landroid/security/net/config/DirectoryCertificateSource;
Landroid/security/net/config/DirectoryCertificateSource;-><init>(Ljava/io/File;)V
Landroid/security/net/config/DirectoryCertificateSource;->findAllByIssuerAndSignature(Ljava/security/cert/X509Certificate;)Ljava/util/Set;
Landroid/security/net/config/DirectoryCertificateSource;->findByIssuerAndSignature(Ljava/security/cert/X509Certificate;)Ljava/security/cert/X509Certificate;
@@ -66819,16 +62431,13 @@
Landroid/security/net/config/DirectoryCertificateSource;->mDir:Ljava/io/File;
Landroid/security/net/config/DirectoryCertificateSource;->mLock:Ljava/lang/Object;
Landroid/security/net/config/DirectoryCertificateSource;->readCertificate(Ljava/lang/String;)Ljava/security/cert/X509Certificate;
-Landroid/security/net/config/Domain;
Landroid/security/net/config/Domain;-><init>(Ljava/lang/String;Z)V
Landroid/security/net/config/Domain;->hostname:Ljava/lang/String;
Landroid/security/net/config/Domain;->subdomainsIncluded:Z
-Landroid/security/net/config/ManifestConfigSource$DefaultConfigSource;
Landroid/security/net/config/ManifestConfigSource$DefaultConfigSource;-><init>(ZLandroid/content/pm/ApplicationInfo;)V
Landroid/security/net/config/ManifestConfigSource$DefaultConfigSource;->getDefaultConfig()Landroid/security/net/config/NetworkSecurityConfig;
Landroid/security/net/config/ManifestConfigSource$DefaultConfigSource;->getPerDomainConfigs()Ljava/util/Set;
Landroid/security/net/config/ManifestConfigSource$DefaultConfigSource;->mDefaultConfig:Landroid/security/net/config/NetworkSecurityConfig;
-Landroid/security/net/config/ManifestConfigSource;
Landroid/security/net/config/ManifestConfigSource;-><init>(Landroid/content/Context;)V
Landroid/security/net/config/ManifestConfigSource;->DBG:Z
Landroid/security/net/config/ManifestConfigSource;->getConfigSource()Landroid/security/net/config/ConfigSource;
@@ -66839,7 +62448,6 @@
Landroid/security/net/config/ManifestConfigSource;->mConfigSource:Landroid/security/net/config/ConfigSource;
Landroid/security/net/config/ManifestConfigSource;->mContext:Landroid/content/Context;
Landroid/security/net/config/ManifestConfigSource;->mLock:Ljava/lang/Object;
-Landroid/security/net/config/NetworkSecurityConfig$Builder;
Landroid/security/net/config/NetworkSecurityConfig$Builder;-><init>()V
Landroid/security/net/config/NetworkSecurityConfig$Builder;->addCertificatesEntryRef(Landroid/security/net/config/CertificatesEntryRef;)Landroid/security/net/config/NetworkSecurityConfig$Builder;
Landroid/security/net/config/NetworkSecurityConfig$Builder;->addCertificatesEntryRefs(Ljava/util/Collection;)Landroid/security/net/config/NetworkSecurityConfig$Builder;
@@ -66862,7 +62470,6 @@
Landroid/security/net/config/NetworkSecurityConfig$Builder;->setHstsEnforced(Z)Landroid/security/net/config/NetworkSecurityConfig$Builder;
Landroid/security/net/config/NetworkSecurityConfig$Builder;->setParent(Landroid/security/net/config/NetworkSecurityConfig$Builder;)Landroid/security/net/config/NetworkSecurityConfig$Builder;
Landroid/security/net/config/NetworkSecurityConfig$Builder;->setPinSet(Landroid/security/net/config/PinSet;)Landroid/security/net/config/NetworkSecurityConfig$Builder;
-Landroid/security/net/config/NetworkSecurityConfig;
Landroid/security/net/config/NetworkSecurityConfig;-><init>(ZZLandroid/security/net/config/PinSet;Ljava/util/List;)V
Landroid/security/net/config/NetworkSecurityConfig;->DEFAULT_CLEARTEXT_TRAFFIC_PERMITTED:Z
Landroid/security/net/config/NetworkSecurityConfig;->DEFAULT_HSTS_ENFORCED:Z
@@ -66884,11 +62491,9 @@
Landroid/security/net/config/NetworkSecurityConfig;->mPins:Landroid/security/net/config/PinSet;
Landroid/security/net/config/NetworkSecurityConfig;->mTrustManager:Landroid/security/net/config/NetworkSecurityTrustManager;
Landroid/security/net/config/NetworkSecurityConfig;->mTrustManagerLock:Ljava/lang/Object;
-Landroid/security/net/config/NetworkSecurityConfigProvider;
Landroid/security/net/config/NetworkSecurityConfigProvider;-><init>()V
Landroid/security/net/config/NetworkSecurityConfigProvider;->install(Landroid/content/Context;)V
Landroid/security/net/config/NetworkSecurityConfigProvider;->PREFIX:Ljava/lang/String;
-Landroid/security/net/config/NetworkSecurityTrustManager;
Landroid/security/net/config/NetworkSecurityTrustManager;-><init>(Landroid/security/net/config/NetworkSecurityConfig;)V
Landroid/security/net/config/NetworkSecurityTrustManager;->checkPins(Ljava/util/List;)V
Landroid/security/net/config/NetworkSecurityTrustManager;->checkServerTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;Ljava/lang/String;)Ljava/util/List;
@@ -66898,20 +62503,17 @@
Landroid/security/net/config/NetworkSecurityTrustManager;->mIssuers:[Ljava/security/cert/X509Certificate;
Landroid/security/net/config/NetworkSecurityTrustManager;->mIssuersLock:Ljava/lang/Object;
Landroid/security/net/config/NetworkSecurityTrustManager;->mNetworkSecurityConfig:Landroid/security/net/config/NetworkSecurityConfig;
-Landroid/security/net/config/Pin;
Landroid/security/net/config/Pin;-><init>(Ljava/lang/String;[B)V
Landroid/security/net/config/Pin;->digest:[B
Landroid/security/net/config/Pin;->digestAlgorithm:Ljava/lang/String;
Landroid/security/net/config/Pin;->getDigestLength(Ljava/lang/String;)I
Landroid/security/net/config/Pin;->isSupportedDigestAlgorithm(Ljava/lang/String;)Z
Landroid/security/net/config/Pin;->mHashCode:I
-Landroid/security/net/config/PinSet;
Landroid/security/net/config/PinSet;-><init>(Ljava/util/Set;J)V
Landroid/security/net/config/PinSet;->EMPTY_PINSET:Landroid/security/net/config/PinSet;
Landroid/security/net/config/PinSet;->expirationTime:J
Landroid/security/net/config/PinSet;->getPinAlgorithms()Ljava/util/Set;
Landroid/security/net/config/PinSet;->pins:Ljava/util/Set;
-Landroid/security/net/config/ResourceCertificateSource;
Landroid/security/net/config/ResourceCertificateSource;-><init>(ILandroid/content/Context;)V
Landroid/security/net/config/ResourceCertificateSource;->ensureInitialized()V
Landroid/security/net/config/ResourceCertificateSource;->findAllByIssuerAndSignature(Ljava/security/cert/X509Certificate;)Ljava/util/Set;
@@ -66924,30 +62526,23 @@
Landroid/security/net/config/ResourceCertificateSource;->mIndex:Lcom/android/org/conscrypt/TrustedCertificateIndex;
Landroid/security/net/config/ResourceCertificateSource;->mLock:Ljava/lang/Object;
Landroid/security/net/config/ResourceCertificateSource;->mResourceId:I
-Landroid/security/net/config/RootTrustManager;
Landroid/security/net/config/RootTrustManager;-><init>(Landroid/security/net/config/ApplicationConfig;)V
Landroid/security/net/config/RootTrustManager;->isSameTrustConfiguration(Ljava/lang/String;Ljava/lang/String;)Z
Landroid/security/net/config/RootTrustManager;->mConfig:Landroid/security/net/config/ApplicationConfig;
-Landroid/security/net/config/RootTrustManagerFactorySpi$ApplicationConfigParameters;
Landroid/security/net/config/RootTrustManagerFactorySpi$ApplicationConfigParameters;-><init>(Landroid/security/net/config/ApplicationConfig;)V
Landroid/security/net/config/RootTrustManagerFactorySpi$ApplicationConfigParameters;->config:Landroid/security/net/config/ApplicationConfig;
-Landroid/security/net/config/RootTrustManagerFactorySpi;
Landroid/security/net/config/RootTrustManagerFactorySpi;-><init>()V
Landroid/security/net/config/RootTrustManagerFactorySpi;->mApplicationConfig:Landroid/security/net/config/ApplicationConfig;
Landroid/security/net/config/RootTrustManagerFactorySpi;->mConfig:Landroid/security/net/config/NetworkSecurityConfig;
-Landroid/security/net/config/SystemCertificateSource$NoPreloadHolder;
Landroid/security/net/config/SystemCertificateSource$NoPreloadHolder;-><init>()V
Landroid/security/net/config/SystemCertificateSource$NoPreloadHolder;->INSTANCE:Landroid/security/net/config/SystemCertificateSource;
-Landroid/security/net/config/SystemCertificateSource;
Landroid/security/net/config/SystemCertificateSource;-><init>()V
Landroid/security/net/config/SystemCertificateSource;->getInstance()Landroid/security/net/config/SystemCertificateSource;
Landroid/security/net/config/SystemCertificateSource;->isCertMarkedAsRemoved(Ljava/lang/String;)Z
Landroid/security/net/config/SystemCertificateSource;->mUserRemovedCaDir:Ljava/io/File;
-Landroid/security/net/config/TrustAnchor;
Landroid/security/net/config/TrustAnchor;-><init>(Ljava/security/cert/X509Certificate;Z)V
Landroid/security/net/config/TrustAnchor;->certificate:Ljava/security/cert/X509Certificate;
Landroid/security/net/config/TrustAnchor;->overridesPins:Z
-Landroid/security/net/config/TrustedCertificateStoreAdapter;
Landroid/security/net/config/TrustedCertificateStoreAdapter;-><init>(Landroid/security/net/config/NetworkSecurityConfig;)V
Landroid/security/net/config/TrustedCertificateStoreAdapter;->aliases()Ljava/util/Set;
Landroid/security/net/config/TrustedCertificateStoreAdapter;->allSystemAliases()Ljava/util/Set;
@@ -66964,17 +62559,13 @@
Landroid/security/net/config/TrustedCertificateStoreAdapter;->isUserAddedCertificate(Ljava/security/cert/X509Certificate;)Z
Landroid/security/net/config/TrustedCertificateStoreAdapter;->mConfig:Landroid/security/net/config/NetworkSecurityConfig;
Landroid/security/net/config/TrustedCertificateStoreAdapter;->userAliases()Ljava/util/Set;
-Landroid/security/net/config/UserCertificateSource$NoPreloadHolder;
Landroid/security/net/config/UserCertificateSource$NoPreloadHolder;-><init>()V
Landroid/security/net/config/UserCertificateSource$NoPreloadHolder;->INSTANCE:Landroid/security/net/config/UserCertificateSource;
-Landroid/security/net/config/UserCertificateSource;
Landroid/security/net/config/UserCertificateSource;-><init>()V
Landroid/security/net/config/UserCertificateSource;->getInstance()Landroid/security/net/config/UserCertificateSource;
Landroid/security/net/config/UserCertificateSource;->isCertMarkedAsRemoved(Ljava/lang/String;)Z
-Landroid/security/net/config/XmlConfigSource$ParserException;
Landroid/security/net/config/XmlConfigSource$ParserException;-><init>(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)V
Landroid/security/net/config/XmlConfigSource$ParserException;-><init>(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;Ljava/lang/Throwable;)V
-Landroid/security/net/config/XmlConfigSource;
Landroid/security/net/config/XmlConfigSource;-><init>(Landroid/content/Context;ILandroid/content/pm/ApplicationInfo;)V
Landroid/security/net/config/XmlConfigSource;->addDebugAnchorsIfNeeded(Landroid/security/net/config/NetworkSecurityConfig$Builder;Landroid/security/net/config/NetworkSecurityConfig$Builder;)V
Landroid/security/net/config/XmlConfigSource;->CONFIG_BASE:I
@@ -67005,11 +62596,9 @@
Landroid/security/NetworkSecurityPolicy;->handleTrustStorageUpdate()V
Landroid/security/NetworkSecurityPolicy;->INSTANCE:Landroid/security/NetworkSecurityPolicy;
Landroid/security/NetworkSecurityPolicy;->setCleartextTrafficPermitted(Z)V
-Landroid/security/Scrypt;
Landroid/security/Scrypt;-><init>()V
Landroid/security/Scrypt;->nativeScrypt([B[BIIII)[B
Landroid/security/Scrypt;->scrypt([B[BIIII)[B
-Landroid/security/SystemKeyStore;
Landroid/security/SystemKeyStore;-><init>()V
Landroid/security/SystemKeyStore;->deleteKey(Ljava/lang/String;)V
Landroid/security/SystemKeyStore;->generateNewKey(ILjava/lang/String;Ljava/lang/String;)[B
@@ -67022,10 +62611,7 @@
Landroid/security/SystemKeyStore;->retrieveKeyHexString(Ljava/lang/String;)Ljava/lang/String;
Landroid/security/SystemKeyStore;->SYSTEM_KEYSTORE_DIRECTORY:Ljava/lang/String;
Landroid/security/SystemKeyStore;->toHexString([B)Ljava/lang/String;
-Landroid/service/autofill/AutofillFieldClassificationService$AutofillFieldClassificationServiceWrapper;
-Landroid/service/autofill/AutofillFieldClassificationService$AutofillFieldClassificationServiceWrapper;-><init>()V
Landroid/service/autofill/AutofillFieldClassificationService$AutofillFieldClassificationServiceWrapper;->getScores(Landroid/os/RemoteCallback;Ljava/lang/String;Landroid/os/Bundle;Ljava/util/List;[Ljava/lang/String;)V
-Landroid/service/autofill/AutofillFieldClassificationService$Scores;
Landroid/service/autofill/AutofillFieldClassificationService$Scores;-><init>(Landroid/os/Parcel;)V
Landroid/service/autofill/AutofillFieldClassificationService$Scores;-><init>([[F)V
Landroid/service/autofill/AutofillFieldClassificationService$Scores;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -67039,7 +62625,6 @@
Landroid/service/autofill/AutofillService;->mHandler:Landroid/os/Handler;
Landroid/service/autofill/AutofillService;->mInterface:Landroid/service/autofill/IAutoFillService;
Landroid/service/autofill/AutofillService;->TAG:Ljava/lang/String;
-Landroid/service/autofill/AutofillServiceInfo;
Landroid/service/autofill/AutofillServiceInfo;-><init>(Landroid/content/Context;Landroid/content/ComponentName;I)V
Landroid/service/autofill/AutofillServiceInfo;-><init>(Landroid/content/Context;Landroid/content/pm/ServiceInfo;)V
Landroid/service/autofill/AutofillServiceInfo;->dump(Ljava/lang/String;Ljava/io/PrintWriter;)V
@@ -67091,7 +62676,6 @@
Landroid/service/autofill/Dataset$Builder;->mPresentation:Landroid/widget/RemoteViews;
Landroid/service/autofill/Dataset$Builder;->setLifeTheUniverseAndEverything(Landroid/view/autofill/AutofillId;Landroid/view/autofill/AutofillValue;Landroid/widget/RemoteViews;Landroid/service/autofill/Dataset$DatasetFieldFilter;)V
Landroid/service/autofill/Dataset$Builder;->throwIfDestroyed()V
-Landroid/service/autofill/Dataset$DatasetFieldFilter;
Landroid/service/autofill/Dataset$DatasetFieldFilter;-><init>(Ljava/util/regex/Pattern;)V
Landroid/service/autofill/Dataset$DatasetFieldFilter;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/service/autofill/Dataset$DatasetFieldFilter;->pattern:Ljava/util/regex/Pattern;
@@ -67137,7 +62721,6 @@
Landroid/service/autofill/FillContext;->mRequestId:I
Landroid/service/autofill/FillContext;->mStructure:Landroid/app/assist/AssistStructure;
Landroid/service/autofill/FillContext;->mViewNodeLookupTable:Landroid/util/ArrayMap;
-Landroid/service/autofill/FillEventHistory$Event$EventIds;
Landroid/service/autofill/FillEventHistory$Event;-><init>(ILjava/lang/String;Landroid/os/Bundle;Ljava/util/List;Landroid/util/ArraySet;Ljava/util/ArrayList;Ljava/util/ArrayList;Ljava/util/ArrayList;Ljava/util/ArrayList;[Landroid/view/autofill/AutofillId;[Landroid/service/autofill/FieldClassification;)V
Landroid/service/autofill/FillEventHistory$Event;->mChangedDatasetIds:Ljava/util/ArrayList;
Landroid/service/autofill/FillEventHistory$Event;->mChangedFieldIds:Ljava/util/ArrayList;
@@ -67157,7 +62740,6 @@
Landroid/service/autofill/FillEventHistory;->mEvents:Ljava/util/List;
Landroid/service/autofill/FillEventHistory;->mSessionId:I
Landroid/service/autofill/FillEventHistory;->TAG:Ljava/lang/String;
-Landroid/service/autofill/FillRequest$RequestFlags;
Landroid/service/autofill/FillRequest;-><init>(ILjava/util/ArrayList;Landroid/os/Bundle;I)V
Landroid/service/autofill/FillRequest;-><init>(Landroid/os/Parcel;)V
Landroid/service/autofill/FillRequest;->INVALID_REQUEST_ID:I
@@ -67181,7 +62763,6 @@
Landroid/service/autofill/FillResponse$Builder;->throwIfAuthenticationCalled()V
Landroid/service/autofill/FillResponse$Builder;->throwIfDestroyed()V
Landroid/service/autofill/FillResponse$Builder;->throwIfDisableAutofillCalled()V
-Landroid/service/autofill/FillResponse$FillResponseFlags;
Landroid/service/autofill/FillResponse;-><init>(Landroid/service/autofill/FillResponse$Builder;)V
Landroid/service/autofill/FillResponse;->getAuthentication()Landroid/content/IntentSender;
Landroid/service/autofill/FillResponse;->getAuthenticationIds()[Landroid/view/autofill/AutofillId;
@@ -67209,51 +62790,42 @@
Landroid/service/autofill/FillResponse;->mRequestId:I
Landroid/service/autofill/FillResponse;->mSaveInfo:Landroid/service/autofill/SaveInfo;
Landroid/service/autofill/FillResponse;->setRequestId(I)V
-Landroid/service/autofill/IAutofillFieldClassificationService$Stub$Proxy;
Landroid/service/autofill/IAutofillFieldClassificationService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/autofill/IAutofillFieldClassificationService$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/service/autofill/IAutofillFieldClassificationService$Stub$Proxy;->getScores(Landroid/os/RemoteCallback;Ljava/lang/String;Landroid/os/Bundle;Ljava/util/List;[Ljava/lang/String;)V
Landroid/service/autofill/IAutofillFieldClassificationService$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/service/autofill/IAutofillFieldClassificationService$Stub;
Landroid/service/autofill/IAutofillFieldClassificationService$Stub;-><init>()V
Landroid/service/autofill/IAutofillFieldClassificationService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/autofill/IAutofillFieldClassificationService;
Landroid/service/autofill/IAutofillFieldClassificationService$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/service/autofill/IAutofillFieldClassificationService$Stub;->TRANSACTION_getScores:I
-Landroid/service/autofill/IAutofillFieldClassificationService;
Landroid/service/autofill/IAutofillFieldClassificationService;->getScores(Landroid/os/RemoteCallback;Ljava/lang/String;Landroid/os/Bundle;Ljava/util/List;[Ljava/lang/String;)V
-Landroid/service/autofill/IAutoFillService$Stub$Proxy;
Landroid/service/autofill/IAutoFillService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/autofill/IAutoFillService$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/service/autofill/IAutoFillService$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/service/autofill/IAutoFillService$Stub$Proxy;->onConnectedStateChanged(Z)V
Landroid/service/autofill/IAutoFillService$Stub$Proxy;->onFillRequest(Landroid/service/autofill/FillRequest;Landroid/service/autofill/IFillCallback;)V
Landroid/service/autofill/IAutoFillService$Stub$Proxy;->onSaveRequest(Landroid/service/autofill/SaveRequest;Landroid/service/autofill/ISaveCallback;)V
-Landroid/service/autofill/IAutoFillService$Stub;
Landroid/service/autofill/IAutoFillService$Stub;-><init>()V
Landroid/service/autofill/IAutoFillService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/autofill/IAutoFillService;
Landroid/service/autofill/IAutoFillService$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/service/autofill/IAutoFillService$Stub;->TRANSACTION_onConnectedStateChanged:I
Landroid/service/autofill/IAutoFillService$Stub;->TRANSACTION_onFillRequest:I
Landroid/service/autofill/IAutoFillService$Stub;->TRANSACTION_onSaveRequest:I
-Landroid/service/autofill/IAutoFillService;
Landroid/service/autofill/IAutoFillService;->onConnectedStateChanged(Z)V
Landroid/service/autofill/IAutoFillService;->onFillRequest(Landroid/service/autofill/FillRequest;Landroid/service/autofill/IFillCallback;)V
Landroid/service/autofill/IAutoFillService;->onSaveRequest(Landroid/service/autofill/SaveRequest;Landroid/service/autofill/ISaveCallback;)V
-Landroid/service/autofill/IFillCallback$Stub$Proxy;
Landroid/service/autofill/IFillCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/autofill/IFillCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/service/autofill/IFillCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/service/autofill/IFillCallback$Stub$Proxy;->onCancellable(Landroid/os/ICancellationSignal;)V
Landroid/service/autofill/IFillCallback$Stub$Proxy;->onFailure(ILjava/lang/CharSequence;)V
Landroid/service/autofill/IFillCallback$Stub$Proxy;->onSuccess(Landroid/service/autofill/FillResponse;)V
-Landroid/service/autofill/IFillCallback$Stub;
Landroid/service/autofill/IFillCallback$Stub;-><init>()V
Landroid/service/autofill/IFillCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/autofill/IFillCallback;
Landroid/service/autofill/IFillCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/service/autofill/IFillCallback$Stub;->TRANSACTION_onCancellable:I
Landroid/service/autofill/IFillCallback$Stub;->TRANSACTION_onFailure:I
Landroid/service/autofill/IFillCallback$Stub;->TRANSACTION_onSuccess:I
-Landroid/service/autofill/IFillCallback;
Landroid/service/autofill/IFillCallback;->onCancellable(Landroid/os/ICancellationSignal;)V
Landroid/service/autofill/IFillCallback;->onFailure(ILjava/lang/CharSequence;)V
Landroid/service/autofill/IFillCallback;->onSuccess(Landroid/service/autofill/FillResponse;)V
@@ -67262,7 +62834,6 @@
Landroid/service/autofill/ImageTransformation$Builder;->mId:Landroid/view/autofill/AutofillId;
Landroid/service/autofill/ImageTransformation$Builder;->mOptions:Ljava/util/ArrayList;
Landroid/service/autofill/ImageTransformation$Builder;->throwIfDestroyed()V
-Landroid/service/autofill/ImageTransformation$Option;
Landroid/service/autofill/ImageTransformation$Option;-><init>(Ljava/util/regex/Pattern;ILjava/lang/CharSequence;)V
Landroid/service/autofill/ImageTransformation$Option;->contentDescription:Ljava/lang/CharSequence;
Landroid/service/autofill/ImageTransformation$Option;->pattern:Ljava/util/regex/Pattern;
@@ -67275,19 +62846,16 @@
Landroid/service/autofill/InternalTransformation;->apply(Landroid/service/autofill/ValueFinder;Landroid/widget/RemoteViews;I)V
Landroid/service/autofill/InternalTransformation;->batchApply(Landroid/service/autofill/ValueFinder;Landroid/widget/RemoteViews;Ljava/util/ArrayList;)Z
Landroid/service/autofill/InternalTransformation;->TAG:Ljava/lang/String;
-Landroid/service/autofill/ISaveCallback$Stub$Proxy;
Landroid/service/autofill/ISaveCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/autofill/ISaveCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/service/autofill/ISaveCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/service/autofill/ISaveCallback$Stub$Proxy;->onFailure(Ljava/lang/CharSequence;)V
Landroid/service/autofill/ISaveCallback$Stub$Proxy;->onSuccess(Landroid/content/IntentSender;)V
-Landroid/service/autofill/ISaveCallback$Stub;
Landroid/service/autofill/ISaveCallback$Stub;-><init>()V
Landroid/service/autofill/ISaveCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/autofill/ISaveCallback;
Landroid/service/autofill/ISaveCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/service/autofill/ISaveCallback$Stub;->TRANSACTION_onFailure:I
Landroid/service/autofill/ISaveCallback$Stub;->TRANSACTION_onSuccess:I
-Landroid/service/autofill/ISaveCallback;
Landroid/service/autofill/ISaveCallback;->onFailure(Ljava/lang/CharSequence;)V
Landroid/service/autofill/ISaveCallback;->onSuccess(Landroid/content/IntentSender;)V
Landroid/service/autofill/LuhnChecksumValidator;->isLuhnChecksumValid(Ljava/lang/String;)Z
@@ -67315,9 +62883,6 @@
Landroid/service/autofill/SaveInfo$Builder;->mType:I
Landroid/service/autofill/SaveInfo$Builder;->mValidator:Landroid/service/autofill/InternalValidator;
Landroid/service/autofill/SaveInfo$Builder;->throwIfDestroyed()V
-Landroid/service/autofill/SaveInfo$NegativeButtonStyle;
-Landroid/service/autofill/SaveInfo$SaveDataType;
-Landroid/service/autofill/SaveInfo$SaveInfoFlags;
Landroid/service/autofill/SaveInfo;-><init>(Landroid/service/autofill/SaveInfo$Builder;)V
Landroid/service/autofill/SaveInfo;->getCustomDescription()Landroid/service/autofill/CustomDescription;
Landroid/service/autofill/SaveInfo;->getDescription()Ljava/lang/CharSequence;
@@ -67382,7 +62947,6 @@
Landroid/service/autofill/UserData;->TAG:Ljava/lang/String;
Landroid/service/autofill/Validators;-><init>()V
Landroid/service/autofill/Validators;->getInternalValidators([Landroid/service/autofill/Validator;)[Landroid/service/autofill/InternalValidator;
-Landroid/service/carrier/CarrierIdentifier$MatchType;
Landroid/service/carrier/CarrierIdentifier$MatchType;->ALL:I
Landroid/service/carrier/CarrierIdentifier$MatchType;->GID1:I
Landroid/service/carrier/CarrierIdentifier$MatchType;->GID2:I
@@ -67396,8 +62960,6 @@
Landroid/service/carrier/CarrierIdentifier;->mMnc:Ljava/lang/String;
Landroid/service/carrier/CarrierIdentifier;->mSpn:Ljava/lang/String;
Landroid/service/carrier/CarrierIdentifier;->readFromParcel(Landroid/os/Parcel;)V
-Landroid/service/carrier/CarrierMessagingService$ICarrierMessagingWrapper;
-Landroid/service/carrier/CarrierMessagingService$ICarrierMessagingWrapper;-><init>()V
Landroid/service/carrier/CarrierMessagingService$ICarrierMessagingWrapper;->downloadMms(Landroid/net/Uri;ILandroid/net/Uri;Landroid/service/carrier/ICarrierMessagingCallback;)V
Landroid/service/carrier/CarrierMessagingService$ICarrierMessagingWrapper;->filterSms(Landroid/service/carrier/MessagePdu;Ljava/lang/String;IILandroid/service/carrier/ICarrierMessagingCallback;)V
Landroid/service/carrier/CarrierMessagingService$ICarrierMessagingWrapper;->sendDataSms([BILjava/lang/String;IILandroid/service/carrier/ICarrierMessagingCallback;)V
@@ -67411,8 +62973,6 @@
Landroid/service/carrier/CarrierMessagingService$SendSmsResult;->mMessageRef:I
Landroid/service/carrier/CarrierMessagingService$SendSmsResult;->mSendStatus:I
Landroid/service/carrier/CarrierMessagingService;->mWrapper:Landroid/service/carrier/CarrierMessagingService$ICarrierMessagingWrapper;
-Landroid/service/carrier/CarrierService$ICarrierServiceWrapper;
-Landroid/service/carrier/CarrierService$ICarrierServiceWrapper;-><init>()V
Landroid/service/carrier/CarrierService$ICarrierServiceWrapper;->getCarrierConfig(Landroid/service/carrier/CarrierIdentifier;Landroid/os/ResultReceiver;)V
Landroid/service/carrier/CarrierService$ICarrierServiceWrapper;->KEY_CONFIG_BUNDLE:Ljava/lang/String;
Landroid/service/carrier/CarrierService$ICarrierServiceWrapper;->RESULT_ERROR:I
@@ -67420,7 +62980,6 @@
Landroid/service/carrier/CarrierService;->LOG_TAG:Ljava/lang/String;
Landroid/service/carrier/CarrierService;->mStubWrapper:Landroid/service/carrier/ICarrierService$Stub;
Landroid/service/carrier/CarrierService;->sRegistry:Lcom/android/internal/telephony/ITelephonyRegistry;
-Landroid/service/carrier/ICarrierMessagingCallback$Stub$Proxy;
Landroid/service/carrier/ICarrierMessagingCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/carrier/ICarrierMessagingCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/service/carrier/ICarrierMessagingCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -67429,7 +62988,6 @@
Landroid/service/carrier/ICarrierMessagingCallback$Stub$Proxy;->onSendMmsComplete(I[B)V
Landroid/service/carrier/ICarrierMessagingCallback$Stub$Proxy;->onSendMultipartSmsComplete(I[I)V
Landroid/service/carrier/ICarrierMessagingCallback$Stub$Proxy;->onSendSmsComplete(II)V
-Landroid/service/carrier/ICarrierMessagingCallback$Stub;
Landroid/service/carrier/ICarrierMessagingCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/carrier/ICarrierMessagingCallback;
Landroid/service/carrier/ICarrierMessagingCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/service/carrier/ICarrierMessagingCallback$Stub;->TRANSACTION_onDownloadMmsComplete:I
@@ -67437,13 +62995,11 @@
Landroid/service/carrier/ICarrierMessagingCallback$Stub;->TRANSACTION_onSendMmsComplete:I
Landroid/service/carrier/ICarrierMessagingCallback$Stub;->TRANSACTION_onSendMultipartSmsComplete:I
Landroid/service/carrier/ICarrierMessagingCallback$Stub;->TRANSACTION_onSendSmsComplete:I
-Landroid/service/carrier/ICarrierMessagingCallback;
Landroid/service/carrier/ICarrierMessagingCallback;->onDownloadMmsComplete(I)V
Landroid/service/carrier/ICarrierMessagingCallback;->onFilterComplete(I)V
Landroid/service/carrier/ICarrierMessagingCallback;->onSendMmsComplete(I[B)V
Landroid/service/carrier/ICarrierMessagingCallback;->onSendMultipartSmsComplete(I[I)V
Landroid/service/carrier/ICarrierMessagingCallback;->onSendSmsComplete(II)V
-Landroid/service/carrier/ICarrierMessagingService$Stub$Proxy;
Landroid/service/carrier/ICarrierMessagingService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/carrier/ICarrierMessagingService$Stub$Proxy;->downloadMms(Landroid/net/Uri;ILandroid/net/Uri;Landroid/service/carrier/ICarrierMessagingCallback;)V
Landroid/service/carrier/ICarrierMessagingService$Stub$Proxy;->filterSms(Landroid/service/carrier/MessagePdu;Ljava/lang/String;IILandroid/service/carrier/ICarrierMessagingCallback;)V
@@ -67453,7 +63009,6 @@
Landroid/service/carrier/ICarrierMessagingService$Stub$Proxy;->sendMms(Landroid/net/Uri;ILandroid/net/Uri;Landroid/service/carrier/ICarrierMessagingCallback;)V
Landroid/service/carrier/ICarrierMessagingService$Stub$Proxy;->sendMultipartTextSms(Ljava/util/List;ILjava/lang/String;ILandroid/service/carrier/ICarrierMessagingCallback;)V
Landroid/service/carrier/ICarrierMessagingService$Stub$Proxy;->sendTextSms(Ljava/lang/String;ILjava/lang/String;ILandroid/service/carrier/ICarrierMessagingCallback;)V
-Landroid/service/carrier/ICarrierMessagingService$Stub;
Landroid/service/carrier/ICarrierMessagingService$Stub;-><init>()V
Landroid/service/carrier/ICarrierMessagingService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/carrier/ICarrierMessagingService;
Landroid/service/carrier/ICarrierMessagingService$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -67463,23 +63018,19 @@
Landroid/service/carrier/ICarrierMessagingService$Stub;->TRANSACTION_sendMms:I
Landroid/service/carrier/ICarrierMessagingService$Stub;->TRANSACTION_sendMultipartTextSms:I
Landroid/service/carrier/ICarrierMessagingService$Stub;->TRANSACTION_sendTextSms:I
-Landroid/service/carrier/ICarrierMessagingService;
Landroid/service/carrier/ICarrierMessagingService;->downloadMms(Landroid/net/Uri;ILandroid/net/Uri;Landroid/service/carrier/ICarrierMessagingCallback;)V
Landroid/service/carrier/ICarrierMessagingService;->sendDataSms([BILjava/lang/String;IILandroid/service/carrier/ICarrierMessagingCallback;)V
Landroid/service/carrier/ICarrierMessagingService;->sendMms(Landroid/net/Uri;ILandroid/net/Uri;Landroid/service/carrier/ICarrierMessagingCallback;)V
Landroid/service/carrier/ICarrierMessagingService;->sendMultipartTextSms(Ljava/util/List;ILjava/lang/String;ILandroid/service/carrier/ICarrierMessagingCallback;)V
Landroid/service/carrier/ICarrierMessagingService;->sendTextSms(Ljava/lang/String;ILjava/lang/String;ILandroid/service/carrier/ICarrierMessagingCallback;)V
-Landroid/service/carrier/ICarrierService$Stub$Proxy;
Landroid/service/carrier/ICarrierService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/carrier/ICarrierService$Stub$Proxy;->getCarrierConfig(Landroid/service/carrier/CarrierIdentifier;Landroid/os/ResultReceiver;)V
Landroid/service/carrier/ICarrierService$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/service/carrier/ICarrierService$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/service/carrier/ICarrierService$Stub;
Landroid/service/carrier/ICarrierService$Stub;-><init>()V
Landroid/service/carrier/ICarrierService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/carrier/ICarrierService;
Landroid/service/carrier/ICarrierService$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/service/carrier/ICarrierService$Stub;->TRANSACTION_getCarrierConfig:I
-Landroid/service/carrier/ICarrierService;
Landroid/service/carrier/ICarrierService;->getCarrierConfig(Landroid/service/carrier/CarrierIdentifier;Landroid/os/ResultReceiver;)V
Landroid/service/carrier/MessagePdu;->mPduList:Ljava/util/List;
Landroid/service/carrier/MessagePdu;->NULL_LENGTH:I
@@ -67490,43 +63041,32 @@
Landroid/service/chooser/ChooserTarget;->mScore:F
Landroid/service/chooser/ChooserTarget;->mTitle:Ljava/lang/CharSequence;
Landroid/service/chooser/ChooserTarget;->TAG:Ljava/lang/String;
-Landroid/service/chooser/ChooserTargetService$IChooserTargetServiceWrapper;
-Landroid/service/chooser/ChooserTargetService$IChooserTargetServiceWrapper;-><init>()V
Landroid/service/chooser/ChooserTargetService$IChooserTargetServiceWrapper;->getChooserTargets(Landroid/content/ComponentName;Landroid/content/IntentFilter;Landroid/service/chooser/IChooserTargetResult;)V
Landroid/service/chooser/ChooserTargetService;->DEBUG:Z
Landroid/service/chooser/ChooserTargetService;->mWrapper:Landroid/service/chooser/ChooserTargetService$IChooserTargetServiceWrapper;
Landroid/service/chooser/ChooserTargetService;->TAG:Ljava/lang/String;
-Landroid/service/chooser/IChooserTargetResult$Stub$Proxy;
Landroid/service/chooser/IChooserTargetResult$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/chooser/IChooserTargetResult$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/service/chooser/IChooserTargetResult$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/service/chooser/IChooserTargetResult$Stub$Proxy;->sendResult(Ljava/util/List;)V
-Landroid/service/chooser/IChooserTargetResult$Stub;
Landroid/service/chooser/IChooserTargetResult$Stub;-><init>()V
Landroid/service/chooser/IChooserTargetResult$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/chooser/IChooserTargetResult;
Landroid/service/chooser/IChooserTargetResult$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/service/chooser/IChooserTargetResult$Stub;->TRANSACTION_sendResult:I
-Landroid/service/chooser/IChooserTargetResult;
Landroid/service/chooser/IChooserTargetResult;->sendResult(Ljava/util/List;)V
-Landroid/service/chooser/IChooserTargetService$Stub$Proxy;
Landroid/service/chooser/IChooserTargetService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/chooser/IChooserTargetService$Stub$Proxy;->getChooserTargets(Landroid/content/ComponentName;Landroid/content/IntentFilter;Landroid/service/chooser/IChooserTargetResult;)V
Landroid/service/chooser/IChooserTargetService$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/service/chooser/IChooserTargetService$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/service/chooser/IChooserTargetService$Stub;
Landroid/service/chooser/IChooserTargetService$Stub;-><init>()V
Landroid/service/chooser/IChooserTargetService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/chooser/IChooserTargetService;
Landroid/service/chooser/IChooserTargetService$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/service/chooser/IChooserTargetService$Stub;->TRANSACTION_getChooserTargets:I
-Landroid/service/chooser/IChooserTargetService;
Landroid/service/chooser/IChooserTargetService;->getChooserTargets(Landroid/content/ComponentName;Landroid/content/IntentFilter;Landroid/service/chooser/IChooserTargetResult;)V
-Landroid/service/dreams/DreamManagerInternal;
Landroid/service/dreams/DreamManagerInternal;-><init>()V
Landroid/service/dreams/DreamManagerInternal;->isDreaming()Z
Landroid/service/dreams/DreamManagerInternal;->startDream(Z)V
Landroid/service/dreams/DreamManagerInternal;->stopDream(Z)V
-Landroid/service/dreams/DreamService$DreamServiceWrapper;
-Landroid/service/dreams/DreamService$DreamServiceWrapper;-><init>()V
Landroid/service/dreams/DreamService$DreamServiceWrapper;->attach(Landroid/os/IBinder;ZLandroid/os/IRemoteCallback;)V
Landroid/service/dreams/DreamService$DreamServiceWrapper;->detach()V
Landroid/service/dreams/DreamService$DreamServiceWrapper;->wakeUp()V
@@ -67565,7 +63105,6 @@
Landroid/service/dreams/DreamService;->TAG:Ljava/lang/String;
Landroid/service/dreams/DreamService;->updateDoze()V
Landroid/service/dreams/DreamService;->wakeUp(Z)V
-Landroid/service/dreams/IDreamManager$Stub$Proxy;
Landroid/service/dreams/IDreamManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/dreams/IDreamManager$Stub$Proxy;->awaken()V
Landroid/service/dreams/IDreamManager$Stub$Proxy;->dream()V
@@ -67579,7 +63118,6 @@
Landroid/service/dreams/IDreamManager$Stub$Proxy;->startDozing(Landroid/os/IBinder;II)V
Landroid/service/dreams/IDreamManager$Stub$Proxy;->stopDozing(Landroid/os/IBinder;)V
Landroid/service/dreams/IDreamManager$Stub$Proxy;->testDream(Landroid/content/ComponentName;)V
-Landroid/service/dreams/IDreamManager$Stub;
Landroid/service/dreams/IDreamManager$Stub;-><init>()V
Landroid/service/dreams/IDreamManager$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/service/dreams/IDreamManager$Stub;->TRANSACTION_awaken:I
@@ -67592,31 +63130,26 @@
Landroid/service/dreams/IDreamManager$Stub;->TRANSACTION_startDozing:I
Landroid/service/dreams/IDreamManager$Stub;->TRANSACTION_stopDozing:I
Landroid/service/dreams/IDreamManager$Stub;->TRANSACTION_testDream:I
-Landroid/service/dreams/IDreamManager;
Landroid/service/dreams/IDreamManager;->finishSelf(Landroid/os/IBinder;Z)V
Landroid/service/dreams/IDreamManager;->getDefaultDreamComponent()Landroid/content/ComponentName;
Landroid/service/dreams/IDreamManager;->startDozing(Landroid/os/IBinder;II)V
Landroid/service/dreams/IDreamManager;->stopDozing(Landroid/os/IBinder;)V
Landroid/service/dreams/IDreamManager;->testDream(Landroid/content/ComponentName;)V
-Landroid/service/dreams/IDreamService$Stub$Proxy;
Landroid/service/dreams/IDreamService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/dreams/IDreamService$Stub$Proxy;->attach(Landroid/os/IBinder;ZLandroid/os/IRemoteCallback;)V
Landroid/service/dreams/IDreamService$Stub$Proxy;->detach()V
Landroid/service/dreams/IDreamService$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/service/dreams/IDreamService$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/service/dreams/IDreamService$Stub$Proxy;->wakeUp()V
-Landroid/service/dreams/IDreamService$Stub;
Landroid/service/dreams/IDreamService$Stub;-><init>()V
Landroid/service/dreams/IDreamService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/dreams/IDreamService;
Landroid/service/dreams/IDreamService$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/service/dreams/IDreamService$Stub;->TRANSACTION_attach:I
Landroid/service/dreams/IDreamService$Stub;->TRANSACTION_detach:I
Landroid/service/dreams/IDreamService$Stub;->TRANSACTION_wakeUp:I
-Landroid/service/dreams/IDreamService;
Landroid/service/dreams/IDreamService;->attach(Landroid/os/IBinder;ZLandroid/os/IRemoteCallback;)V
Landroid/service/dreams/IDreamService;->detach()V
Landroid/service/dreams/IDreamService;->wakeUp()V
-Landroid/service/dreams/Sandman;
Landroid/service/dreams/Sandman;-><init>()V
Landroid/service/dreams/Sandman;->isScreenSaverActivatedOnDock(Landroid/content/Context;)Z
Landroid/service/dreams/Sandman;->isScreenSaverEnabled(Landroid/content/Context;)Z
@@ -67648,8 +63181,6 @@
Landroid/service/euicc/EuiccProfileInfo;->mState:I
Landroid/service/euicc/EuiccProfileInfo;->PROFILE_CLASS_UNSET:I
Landroid/service/euicc/EuiccProfileInfo;->PROFILE_STATE_UNSET:I
-Landroid/service/euicc/EuiccService$IEuiccServiceWrapper;
-Landroid/service/euicc/EuiccService$IEuiccServiceWrapper;-><init>()V
Landroid/service/euicc/EuiccService$IEuiccServiceWrapper;->deleteSubscription(ILjava/lang/String;Landroid/service/euicc/IDeleteSubscriptionCallback;)V
Landroid/service/euicc/EuiccService$IEuiccServiceWrapper;->downloadSubscription(ILandroid/telephony/euicc/DownloadableSubscription;ZZLandroid/service/euicc/IDownloadSubscriptionCallback;)V
Landroid/service/euicc/EuiccService$IEuiccServiceWrapper;->eraseSubscriptions(ILandroid/service/euicc/IEraseSubscriptionsCallback;)V
@@ -67674,40 +63205,30 @@
Landroid/service/euicc/GetEuiccProfileInfoListResult;->mIsRemovable:Z
Landroid/service/euicc/GetEuiccProfileInfoListResult;->mProfiles:[Landroid/service/euicc/EuiccProfileInfo;
Landroid/service/euicc/GetEuiccProfileInfoListResult;->result:I
-Landroid/service/euicc/IDeleteSubscriptionCallback$Stub$Proxy;
Landroid/service/euicc/IDeleteSubscriptionCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/euicc/IDeleteSubscriptionCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/service/euicc/IDeleteSubscriptionCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/service/euicc/IDeleteSubscriptionCallback$Stub$Proxy;->onComplete(I)V
-Landroid/service/euicc/IDeleteSubscriptionCallback$Stub;
Landroid/service/euicc/IDeleteSubscriptionCallback$Stub;-><init>()V
Landroid/service/euicc/IDeleteSubscriptionCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/euicc/IDeleteSubscriptionCallback;
Landroid/service/euicc/IDeleteSubscriptionCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/service/euicc/IDeleteSubscriptionCallback$Stub;->TRANSACTION_onComplete:I
-Landroid/service/euicc/IDeleteSubscriptionCallback;
-Landroid/service/euicc/IDownloadSubscriptionCallback$Stub$Proxy;
Landroid/service/euicc/IDownloadSubscriptionCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/euicc/IDownloadSubscriptionCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/service/euicc/IDownloadSubscriptionCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/service/euicc/IDownloadSubscriptionCallback$Stub$Proxy;->onComplete(I)V
-Landroid/service/euicc/IDownloadSubscriptionCallback$Stub;
Landroid/service/euicc/IDownloadSubscriptionCallback$Stub;-><init>()V
Landroid/service/euicc/IDownloadSubscriptionCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/euicc/IDownloadSubscriptionCallback;
Landroid/service/euicc/IDownloadSubscriptionCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/service/euicc/IDownloadSubscriptionCallback$Stub;->TRANSACTION_onComplete:I
-Landroid/service/euicc/IDownloadSubscriptionCallback;
-Landroid/service/euicc/IEraseSubscriptionsCallback$Stub$Proxy;
Landroid/service/euicc/IEraseSubscriptionsCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/euicc/IEraseSubscriptionsCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/service/euicc/IEraseSubscriptionsCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/service/euicc/IEraseSubscriptionsCallback$Stub$Proxy;->onComplete(I)V
-Landroid/service/euicc/IEraseSubscriptionsCallback$Stub;
Landroid/service/euicc/IEraseSubscriptionsCallback$Stub;-><init>()V
Landroid/service/euicc/IEraseSubscriptionsCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/euicc/IEraseSubscriptionsCallback;
Landroid/service/euicc/IEraseSubscriptionsCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/service/euicc/IEraseSubscriptionsCallback$Stub;->TRANSACTION_onComplete:I
-Landroid/service/euicc/IEraseSubscriptionsCallback;
-Landroid/service/euicc/IEuiccService$Stub$Proxy;
Landroid/service/euicc/IEuiccService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/euicc/IEuiccService$Stub$Proxy;->deleteSubscription(ILjava/lang/String;Landroid/service/euicc/IDeleteSubscriptionCallback;)V
Landroid/service/euicc/IEuiccService$Stub$Proxy;->downloadSubscription(ILandroid/telephony/euicc/DownloadableSubscription;ZZLandroid/service/euicc/IDownloadSubscriptionCallback;)V
@@ -67724,7 +63245,6 @@
Landroid/service/euicc/IEuiccService$Stub$Proxy;->startOtaIfNecessary(ILandroid/service/euicc/IOtaStatusChangedCallback;)V
Landroid/service/euicc/IEuiccService$Stub$Proxy;->switchToSubscription(ILjava/lang/String;ZLandroid/service/euicc/ISwitchToSubscriptionCallback;)V
Landroid/service/euicc/IEuiccService$Stub$Proxy;->updateSubscriptionNickname(ILjava/lang/String;Ljava/lang/String;Landroid/service/euicc/IUpdateSubscriptionNicknameCallback;)V
-Landroid/service/euicc/IEuiccService$Stub;
Landroid/service/euicc/IEuiccService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/euicc/IEuiccService;
Landroid/service/euicc/IEuiccService$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/service/euicc/IEuiccService$Stub;->TRANSACTION_deleteSubscription:I
@@ -67740,7 +63260,6 @@
Landroid/service/euicc/IEuiccService$Stub;->TRANSACTION_startOtaIfNecessary:I
Landroid/service/euicc/IEuiccService$Stub;->TRANSACTION_switchToSubscription:I
Landroid/service/euicc/IEuiccService$Stub;->TRANSACTION_updateSubscriptionNickname:I
-Landroid/service/euicc/IEuiccService;
Landroid/service/euicc/IEuiccService;->deleteSubscription(ILjava/lang/String;Landroid/service/euicc/IDeleteSubscriptionCallback;)V
Landroid/service/euicc/IEuiccService;->downloadSubscription(ILandroid/telephony/euicc/DownloadableSubscription;ZZLandroid/service/euicc/IDownloadSubscriptionCallback;)V
Landroid/service/euicc/IEuiccService;->eraseSubscriptions(ILandroid/service/euicc/IEraseSubscriptionsCallback;)V
@@ -67754,123 +63273,92 @@
Landroid/service/euicc/IEuiccService;->startOtaIfNecessary(ILandroid/service/euicc/IOtaStatusChangedCallback;)V
Landroid/service/euicc/IEuiccService;->switchToSubscription(ILjava/lang/String;ZLandroid/service/euicc/ISwitchToSubscriptionCallback;)V
Landroid/service/euicc/IEuiccService;->updateSubscriptionNickname(ILjava/lang/String;Ljava/lang/String;Landroid/service/euicc/IUpdateSubscriptionNicknameCallback;)V
-Landroid/service/euicc/IGetDefaultDownloadableSubscriptionListCallback$Stub$Proxy;
Landroid/service/euicc/IGetDefaultDownloadableSubscriptionListCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/euicc/IGetDefaultDownloadableSubscriptionListCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/service/euicc/IGetDefaultDownloadableSubscriptionListCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/service/euicc/IGetDefaultDownloadableSubscriptionListCallback$Stub$Proxy;->onComplete(Landroid/service/euicc/GetDefaultDownloadableSubscriptionListResult;)V
-Landroid/service/euicc/IGetDefaultDownloadableSubscriptionListCallback$Stub;
Landroid/service/euicc/IGetDefaultDownloadableSubscriptionListCallback$Stub;-><init>()V
Landroid/service/euicc/IGetDefaultDownloadableSubscriptionListCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/euicc/IGetDefaultDownloadableSubscriptionListCallback;
Landroid/service/euicc/IGetDefaultDownloadableSubscriptionListCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/service/euicc/IGetDefaultDownloadableSubscriptionListCallback$Stub;->TRANSACTION_onComplete:I
-Landroid/service/euicc/IGetDefaultDownloadableSubscriptionListCallback;
-Landroid/service/euicc/IGetDownloadableSubscriptionMetadataCallback$Stub$Proxy;
Landroid/service/euicc/IGetDownloadableSubscriptionMetadataCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/euicc/IGetDownloadableSubscriptionMetadataCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/service/euicc/IGetDownloadableSubscriptionMetadataCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/service/euicc/IGetDownloadableSubscriptionMetadataCallback$Stub$Proxy;->onComplete(Landroid/service/euicc/GetDownloadableSubscriptionMetadataResult;)V
-Landroid/service/euicc/IGetDownloadableSubscriptionMetadataCallback$Stub;
Landroid/service/euicc/IGetDownloadableSubscriptionMetadataCallback$Stub;-><init>()V
Landroid/service/euicc/IGetDownloadableSubscriptionMetadataCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/euicc/IGetDownloadableSubscriptionMetadataCallback;
Landroid/service/euicc/IGetDownloadableSubscriptionMetadataCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/service/euicc/IGetDownloadableSubscriptionMetadataCallback$Stub;->TRANSACTION_onComplete:I
-Landroid/service/euicc/IGetDownloadableSubscriptionMetadataCallback;
-Landroid/service/euicc/IGetEidCallback$Stub$Proxy;
Landroid/service/euicc/IGetEidCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/euicc/IGetEidCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/service/euicc/IGetEidCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/service/euicc/IGetEidCallback$Stub$Proxy;->onSuccess(Ljava/lang/String;)V
-Landroid/service/euicc/IGetEidCallback$Stub;
Landroid/service/euicc/IGetEidCallback$Stub;-><init>()V
Landroid/service/euicc/IGetEidCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/euicc/IGetEidCallback;
Landroid/service/euicc/IGetEidCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/service/euicc/IGetEidCallback$Stub;->TRANSACTION_onSuccess:I
-Landroid/service/euicc/IGetEidCallback;
-Landroid/service/euicc/IGetEuiccInfoCallback$Stub$Proxy;
Landroid/service/euicc/IGetEuiccInfoCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/euicc/IGetEuiccInfoCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/service/euicc/IGetEuiccInfoCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/service/euicc/IGetEuiccInfoCallback$Stub$Proxy;->onSuccess(Landroid/telephony/euicc/EuiccInfo;)V
-Landroid/service/euicc/IGetEuiccInfoCallback$Stub;
Landroid/service/euicc/IGetEuiccInfoCallback$Stub;-><init>()V
Landroid/service/euicc/IGetEuiccInfoCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/euicc/IGetEuiccInfoCallback;
Landroid/service/euicc/IGetEuiccInfoCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/service/euicc/IGetEuiccInfoCallback$Stub;->TRANSACTION_onSuccess:I
-Landroid/service/euicc/IGetEuiccInfoCallback;
-Landroid/service/euicc/IGetEuiccProfileInfoListCallback$Stub$Proxy;
Landroid/service/euicc/IGetEuiccProfileInfoListCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/euicc/IGetEuiccProfileInfoListCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/service/euicc/IGetEuiccProfileInfoListCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/service/euicc/IGetEuiccProfileInfoListCallback$Stub$Proxy;->onComplete(Landroid/service/euicc/GetEuiccProfileInfoListResult;)V
-Landroid/service/euicc/IGetEuiccProfileInfoListCallback$Stub;
Landroid/service/euicc/IGetEuiccProfileInfoListCallback$Stub;-><init>()V
Landroid/service/euicc/IGetEuiccProfileInfoListCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/euicc/IGetEuiccProfileInfoListCallback;
Landroid/service/euicc/IGetEuiccProfileInfoListCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/service/euicc/IGetEuiccProfileInfoListCallback$Stub;->TRANSACTION_onComplete:I
-Landroid/service/euicc/IGetEuiccProfileInfoListCallback;
-Landroid/service/euicc/IGetOtaStatusCallback$Stub$Proxy;
Landroid/service/euicc/IGetOtaStatusCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/euicc/IGetOtaStatusCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/service/euicc/IGetOtaStatusCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/service/euicc/IGetOtaStatusCallback$Stub$Proxy;->onSuccess(I)V
-Landroid/service/euicc/IGetOtaStatusCallback$Stub;
Landroid/service/euicc/IGetOtaStatusCallback$Stub;-><init>()V
Landroid/service/euicc/IGetOtaStatusCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/euicc/IGetOtaStatusCallback;
Landroid/service/euicc/IGetOtaStatusCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/service/euicc/IGetOtaStatusCallback$Stub;->TRANSACTION_onSuccess:I
-Landroid/service/euicc/IGetOtaStatusCallback;
Landroid/service/euicc/IGetOtaStatusCallback;->onSuccess(I)V
-Landroid/service/euicc/IOtaStatusChangedCallback$Stub$Proxy;
Landroid/service/euicc/IOtaStatusChangedCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/euicc/IOtaStatusChangedCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/service/euicc/IOtaStatusChangedCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/service/euicc/IOtaStatusChangedCallback$Stub$Proxy;->onOtaStatusChanged(I)V
-Landroid/service/euicc/IOtaStatusChangedCallback$Stub;
Landroid/service/euicc/IOtaStatusChangedCallback$Stub;-><init>()V
Landroid/service/euicc/IOtaStatusChangedCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/euicc/IOtaStatusChangedCallback;
Landroid/service/euicc/IOtaStatusChangedCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/service/euicc/IOtaStatusChangedCallback$Stub;->TRANSACTION_onOtaStatusChanged:I
-Landroid/service/euicc/IOtaStatusChangedCallback;
Landroid/service/euicc/IOtaStatusChangedCallback;->onOtaStatusChanged(I)V
-Landroid/service/euicc/IRetainSubscriptionsForFactoryResetCallback$Stub$Proxy;
Landroid/service/euicc/IRetainSubscriptionsForFactoryResetCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/euicc/IRetainSubscriptionsForFactoryResetCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/service/euicc/IRetainSubscriptionsForFactoryResetCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/service/euicc/IRetainSubscriptionsForFactoryResetCallback$Stub$Proxy;->onComplete(I)V
-Landroid/service/euicc/IRetainSubscriptionsForFactoryResetCallback$Stub;
Landroid/service/euicc/IRetainSubscriptionsForFactoryResetCallback$Stub;-><init>()V
Landroid/service/euicc/IRetainSubscriptionsForFactoryResetCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/euicc/IRetainSubscriptionsForFactoryResetCallback;
Landroid/service/euicc/IRetainSubscriptionsForFactoryResetCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/service/euicc/IRetainSubscriptionsForFactoryResetCallback$Stub;->TRANSACTION_onComplete:I
-Landroid/service/euicc/IRetainSubscriptionsForFactoryResetCallback;
-Landroid/service/euicc/ISwitchToSubscriptionCallback$Stub$Proxy;
Landroid/service/euicc/ISwitchToSubscriptionCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/euicc/ISwitchToSubscriptionCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/service/euicc/ISwitchToSubscriptionCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/service/euicc/ISwitchToSubscriptionCallback$Stub$Proxy;->onComplete(I)V
-Landroid/service/euicc/ISwitchToSubscriptionCallback$Stub;
Landroid/service/euicc/ISwitchToSubscriptionCallback$Stub;-><init>()V
Landroid/service/euicc/ISwitchToSubscriptionCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/euicc/ISwitchToSubscriptionCallback;
Landroid/service/euicc/ISwitchToSubscriptionCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/service/euicc/ISwitchToSubscriptionCallback$Stub;->TRANSACTION_onComplete:I
-Landroid/service/euicc/ISwitchToSubscriptionCallback;
-Landroid/service/euicc/IUpdateSubscriptionNicknameCallback$Stub$Proxy;
Landroid/service/euicc/IUpdateSubscriptionNicknameCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/euicc/IUpdateSubscriptionNicknameCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/service/euicc/IUpdateSubscriptionNicknameCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/service/euicc/IUpdateSubscriptionNicknameCallback$Stub$Proxy;->onComplete(I)V
-Landroid/service/euicc/IUpdateSubscriptionNicknameCallback$Stub;
Landroid/service/euicc/IUpdateSubscriptionNicknameCallback$Stub;-><init>()V
Landroid/service/euicc/IUpdateSubscriptionNicknameCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/euicc/IUpdateSubscriptionNicknameCallback;
Landroid/service/euicc/IUpdateSubscriptionNicknameCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/service/euicc/IUpdateSubscriptionNicknameCallback$Stub;->TRANSACTION_onComplete:I
-Landroid/service/euicc/IUpdateSubscriptionNicknameCallback;
Landroid/service/media/CameraPrewarmService;->ACTION_PREWARM:Ljava/lang/String;
Landroid/service/media/CameraPrewarmService;->mCameraIntentFired:Z
Landroid/service/media/CameraPrewarmService;->mHandler:Landroid/os/Handler;
Landroid/service/media/CameraPrewarmService;->MSG_CAMERA_FIRED:I
-Landroid/service/media/IMediaBrowserService$Stub$Proxy;
Landroid/service/media/IMediaBrowserService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/media/IMediaBrowserService$Stub$Proxy;->addSubscription(Ljava/lang/String;Landroid/os/IBinder;Landroid/os/Bundle;Landroid/service/media/IMediaBrowserServiceCallbacks;)V
Landroid/service/media/IMediaBrowserService$Stub$Proxy;->addSubscriptionDeprecated(Ljava/lang/String;Landroid/service/media/IMediaBrowserServiceCallbacks;)V
@@ -67881,7 +63369,6 @@
Landroid/service/media/IMediaBrowserService$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/service/media/IMediaBrowserService$Stub$Proxy;->removeSubscription(Ljava/lang/String;Landroid/os/IBinder;Landroid/service/media/IMediaBrowserServiceCallbacks;)V
Landroid/service/media/IMediaBrowserService$Stub$Proxy;->removeSubscriptionDeprecated(Ljava/lang/String;Landroid/service/media/IMediaBrowserServiceCallbacks;)V
-Landroid/service/media/IMediaBrowserService$Stub;
Landroid/service/media/IMediaBrowserService$Stub;-><init>()V
Landroid/service/media/IMediaBrowserService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/media/IMediaBrowserService;
Landroid/service/media/IMediaBrowserService$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -67892,7 +63379,6 @@
Landroid/service/media/IMediaBrowserService$Stub;->TRANSACTION_getMediaItem:I
Landroid/service/media/IMediaBrowserService$Stub;->TRANSACTION_removeSubscription:I
Landroid/service/media/IMediaBrowserService$Stub;->TRANSACTION_removeSubscriptionDeprecated:I
-Landroid/service/media/IMediaBrowserService;
Landroid/service/media/IMediaBrowserService;->addSubscription(Ljava/lang/String;Landroid/os/IBinder;Landroid/os/Bundle;Landroid/service/media/IMediaBrowserServiceCallbacks;)V
Landroid/service/media/IMediaBrowserService;->addSubscriptionDeprecated(Ljava/lang/String;Landroid/service/media/IMediaBrowserServiceCallbacks;)V
Landroid/service/media/IMediaBrowserService;->connect(Ljava/lang/String;Landroid/os/Bundle;Landroid/service/media/IMediaBrowserServiceCallbacks;)V
@@ -67900,7 +63386,6 @@
Landroid/service/media/IMediaBrowserService;->getMediaItem(Ljava/lang/String;Landroid/os/ResultReceiver;Landroid/service/media/IMediaBrowserServiceCallbacks;)V
Landroid/service/media/IMediaBrowserService;->removeSubscription(Ljava/lang/String;Landroid/os/IBinder;Landroid/service/media/IMediaBrowserServiceCallbacks;)V
Landroid/service/media/IMediaBrowserService;->removeSubscriptionDeprecated(Ljava/lang/String;Landroid/service/media/IMediaBrowserServiceCallbacks;)V
-Landroid/service/media/IMediaBrowserServiceCallbacks$Stub$Proxy;
Landroid/service/media/IMediaBrowserServiceCallbacks$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/media/IMediaBrowserServiceCallbacks$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/service/media/IMediaBrowserServiceCallbacks$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -67908,18 +63393,14 @@
Landroid/service/media/IMediaBrowserServiceCallbacks$Stub$Proxy;->onConnectFailed()V
Landroid/service/media/IMediaBrowserServiceCallbacks$Stub$Proxy;->onLoadChildren(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V
Landroid/service/media/IMediaBrowserServiceCallbacks$Stub$Proxy;->onLoadChildrenWithOptions(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;Landroid/os/Bundle;)V
-Landroid/service/media/IMediaBrowserServiceCallbacks$Stub;
Landroid/service/media/IMediaBrowserServiceCallbacks$Stub;-><init>()V
Landroid/service/media/IMediaBrowserServiceCallbacks$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/service/media/IMediaBrowserServiceCallbacks$Stub;->TRANSACTION_onConnect:I
Landroid/service/media/IMediaBrowserServiceCallbacks$Stub;->TRANSACTION_onConnectFailed:I
Landroid/service/media/IMediaBrowserServiceCallbacks$Stub;->TRANSACTION_onLoadChildren:I
Landroid/service/media/IMediaBrowserServiceCallbacks$Stub;->TRANSACTION_onLoadChildrenWithOptions:I
-Landroid/service/media/IMediaBrowserServiceCallbacks;
Landroid/service/media/MediaBrowserService$BrowserRoot;->mExtras:Landroid/os/Bundle;
Landroid/service/media/MediaBrowserService$BrowserRoot;->mRootId:Ljava/lang/String;
-Landroid/service/media/MediaBrowserService$ConnectionRecord;
-Landroid/service/media/MediaBrowserService$ConnectionRecord;-><init>()V
Landroid/service/media/MediaBrowserService$ConnectionRecord;->callbacks:Landroid/service/media/IMediaBrowserServiceCallbacks;
Landroid/service/media/MediaBrowserService$ConnectionRecord;->pid:I
Landroid/service/media/MediaBrowserService$ConnectionRecord;->pkg:Ljava/lang/String;
@@ -67927,16 +63408,12 @@
Landroid/service/media/MediaBrowserService$ConnectionRecord;->rootHints:Landroid/os/Bundle;
Landroid/service/media/MediaBrowserService$ConnectionRecord;->subscriptions:Ljava/util/HashMap;
Landroid/service/media/MediaBrowserService$ConnectionRecord;->uid:I
-Landroid/service/media/MediaBrowserService$Result;-><init>(Ljava/lang/Object;)V
Landroid/service/media/MediaBrowserService$Result;->isDone()Z
Landroid/service/media/MediaBrowserService$Result;->mDebug:Ljava/lang/Object;
Landroid/service/media/MediaBrowserService$Result;->mDetachCalled:Z
Landroid/service/media/MediaBrowserService$Result;->mSendResultCalled:Z
Landroid/service/media/MediaBrowserService$Result;->onResultSent(Ljava/lang/Object;I)V
Landroid/service/media/MediaBrowserService$Result;->setFlags(I)V
-Landroid/service/media/MediaBrowserService$ResultFlags;
-Landroid/service/media/MediaBrowserService$ServiceBinder;
-Landroid/service/media/MediaBrowserService$ServiceBinder;-><init>()V
Landroid/service/media/MediaBrowserService$ServiceBinder;->addSubscription(Ljava/lang/String;Landroid/os/IBinder;Landroid/os/Bundle;Landroid/service/media/IMediaBrowserServiceCallbacks;)V
Landroid/service/media/MediaBrowserService$ServiceBinder;->addSubscriptionDeprecated(Ljava/lang/String;Landroid/service/media/IMediaBrowserServiceCallbacks;)V
Landroid/service/media/MediaBrowserService$ServiceBinder;->connect(Ljava/lang/String;Landroid/os/Bundle;Landroid/service/media/IMediaBrowserServiceCallbacks;)V
@@ -67968,10 +63445,8 @@
Landroid/service/notification/Adjustment;->mPackage:Ljava/lang/String;
Landroid/service/notification/Adjustment;->mSignals:Landroid/os/Bundle;
Landroid/service/notification/Adjustment;->mUser:I
-Landroid/service/notification/Condition$State;
Landroid/service/notification/Condition;->isValidState(I)Z
Landroid/service/notification/Condition;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-Landroid/service/notification/ConditionProto;
Landroid/service/notification/ConditionProto;-><init>()V
Landroid/service/notification/ConditionProto;->FLAGS:J
Landroid/service/notification/ConditionProto;->ICON:J
@@ -67984,13 +63459,9 @@
Landroid/service/notification/ConditionProto;->STATE_TRUE:I
Landroid/service/notification/ConditionProto;->STATE_UNKNOWN:I
Landroid/service/notification/ConditionProto;->SUMMARY:J
-Landroid/service/notification/ConditionProviderService$H;
-Landroid/service/notification/ConditionProviderService$H;-><init>()V
Landroid/service/notification/ConditionProviderService$H;->ON_CONNECTED:I
Landroid/service/notification/ConditionProviderService$H;->ON_SUBSCRIBE:I
Landroid/service/notification/ConditionProviderService$H;->ON_UNSUBSCRIBE:I
-Landroid/service/notification/ConditionProviderService$Provider;
-Landroid/service/notification/ConditionProviderService$Provider;-><init>()V
Landroid/service/notification/ConditionProviderService$Provider;->onConnected()V
Landroid/service/notification/ConditionProviderService$Provider;->onSubscribe(Landroid/net/Uri;)V
Landroid/service/notification/ConditionProviderService$Provider;->onUnsubscribe(Landroid/net/Uri;)V
@@ -67999,37 +63470,30 @@
Landroid/service/notification/ConditionProviderService;->mNoMan:Landroid/app/INotificationManager;
Landroid/service/notification/ConditionProviderService;->mProvider:Landroid/service/notification/ConditionProviderService$Provider;
Landroid/service/notification/ConditionProviderService;->TAG:Ljava/lang/String;
-Landroid/service/notification/IConditionListener$Stub$Proxy;
Landroid/service/notification/IConditionListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/notification/IConditionListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/service/notification/IConditionListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/service/notification/IConditionListener$Stub$Proxy;->onConditionsReceived([Landroid/service/notification/Condition;)V
-Landroid/service/notification/IConditionListener$Stub;
Landroid/service/notification/IConditionListener$Stub;-><init>()V
Landroid/service/notification/IConditionListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/notification/IConditionListener;
Landroid/service/notification/IConditionListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/service/notification/IConditionListener$Stub;->TRANSACTION_onConditionsReceived:I
-Landroid/service/notification/IConditionListener;
Landroid/service/notification/IConditionListener;->onConditionsReceived([Landroid/service/notification/Condition;)V
-Landroid/service/notification/IConditionProvider$Stub$Proxy;
Landroid/service/notification/IConditionProvider$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/notification/IConditionProvider$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/service/notification/IConditionProvider$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/service/notification/IConditionProvider$Stub$Proxy;->onConnected()V
Landroid/service/notification/IConditionProvider$Stub$Proxy;->onSubscribe(Landroid/net/Uri;)V
Landroid/service/notification/IConditionProvider$Stub$Proxy;->onUnsubscribe(Landroid/net/Uri;)V
-Landroid/service/notification/IConditionProvider$Stub;
Landroid/service/notification/IConditionProvider$Stub;-><init>()V
Landroid/service/notification/IConditionProvider$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/notification/IConditionProvider;
Landroid/service/notification/IConditionProvider$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/service/notification/IConditionProvider$Stub;->TRANSACTION_onConnected:I
Landroid/service/notification/IConditionProvider$Stub;->TRANSACTION_onSubscribe:I
Landroid/service/notification/IConditionProvider$Stub;->TRANSACTION_onUnsubscribe:I
-Landroid/service/notification/IConditionProvider;
Landroid/service/notification/IConditionProvider;->onConnected()V
Landroid/service/notification/IConditionProvider;->onSubscribe(Landroid/net/Uri;)V
Landroid/service/notification/IConditionProvider;->onUnsubscribe(Landroid/net/Uri;)V
-Landroid/service/notification/INotificationListener$Stub$Proxy;
Landroid/service/notification/INotificationListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/notification/INotificationListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/service/notification/INotificationListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -68043,7 +63507,6 @@
Landroid/service/notification/INotificationListener$Stub$Proxy;->onNotificationRankingUpdate(Landroid/service/notification/NotificationRankingUpdate;)V
Landroid/service/notification/INotificationListener$Stub$Proxy;->onNotificationRemoved(Landroid/service/notification/IStatusBarNotificationHolder;Landroid/service/notification/NotificationRankingUpdate;Landroid/service/notification/NotificationStats;I)V
Landroid/service/notification/INotificationListener$Stub$Proxy;->onNotificationSnoozedUntilContext(Landroid/service/notification/IStatusBarNotificationHolder;Ljava/lang/String;)V
-Landroid/service/notification/INotificationListener$Stub;
Landroid/service/notification/INotificationListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/notification/INotificationListener;
Landroid/service/notification/INotificationListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/service/notification/INotificationListener$Stub;->TRANSACTION_onInterruptionFilterChanged:I
@@ -68056,7 +63519,6 @@
Landroid/service/notification/INotificationListener$Stub;->TRANSACTION_onNotificationRankingUpdate:I
Landroid/service/notification/INotificationListener$Stub;->TRANSACTION_onNotificationRemoved:I
Landroid/service/notification/INotificationListener$Stub;->TRANSACTION_onNotificationSnoozedUntilContext:I
-Landroid/service/notification/INotificationListener;
Landroid/service/notification/INotificationListener;->onInterruptionFilterChanged(I)V
Landroid/service/notification/INotificationListener;->onListenerConnected(Landroid/service/notification/NotificationRankingUpdate;)V
Landroid/service/notification/INotificationListener;->onListenerHintsChanged(I)V
@@ -68067,54 +63529,39 @@
Landroid/service/notification/INotificationListener;->onNotificationRankingUpdate(Landroid/service/notification/NotificationRankingUpdate;)V
Landroid/service/notification/INotificationListener;->onNotificationRemoved(Landroid/service/notification/IStatusBarNotificationHolder;Landroid/service/notification/NotificationRankingUpdate;Landroid/service/notification/NotificationStats;I)V
Landroid/service/notification/INotificationListener;->onNotificationSnoozedUntilContext(Landroid/service/notification/IStatusBarNotificationHolder;Ljava/lang/String;)V
-Landroid/service/notification/IStatusBarNotificationHolder$Stub$Proxy;
Landroid/service/notification/IStatusBarNotificationHolder$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/notification/IStatusBarNotificationHolder$Stub$Proxy;->get()Landroid/service/notification/StatusBarNotification;
Landroid/service/notification/IStatusBarNotificationHolder$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/service/notification/IStatusBarNotificationHolder$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/service/notification/IStatusBarNotificationHolder$Stub;
Landroid/service/notification/IStatusBarNotificationHolder$Stub;-><init>()V
Landroid/service/notification/IStatusBarNotificationHolder$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/notification/IStatusBarNotificationHolder;
Landroid/service/notification/IStatusBarNotificationHolder$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/service/notification/IStatusBarNotificationHolder$Stub;->TRANSACTION_get:I
-Landroid/service/notification/IStatusBarNotificationHolder;
Landroid/service/notification/IStatusBarNotificationHolder;->get()Landroid/service/notification/StatusBarNotification;
-Landroid/service/notification/ListenersDisablingEffectsProto;
Landroid/service/notification/ListenersDisablingEffectsProto;-><init>()V
Landroid/service/notification/ListenersDisablingEffectsProto;->HINT:J
Landroid/service/notification/ListenersDisablingEffectsProto;->LISTENERS:J
-Landroid/service/notification/ManagedServiceInfoProto;
Landroid/service/notification/ManagedServiceInfoProto;-><init>()V
Landroid/service/notification/ManagedServiceInfoProto;->COMPONENT:J
Landroid/service/notification/ManagedServiceInfoProto;->IS_GUEST:J
Landroid/service/notification/ManagedServiceInfoProto;->IS_SYSTEM:J
Landroid/service/notification/ManagedServiceInfoProto;->SERVICE:J
Landroid/service/notification/ManagedServiceInfoProto;->USER_ID:J
-Landroid/service/notification/ManagedServicesProto$ServiceProto;
-Landroid/service/notification/ManagedServicesProto$ServiceProto;-><init>()V
Landroid/service/notification/ManagedServicesProto$ServiceProto;->IS_PRIMARY:J
Landroid/service/notification/ManagedServicesProto$ServiceProto;->NAME:J
Landroid/service/notification/ManagedServicesProto$ServiceProto;->USER_ID:J
-Landroid/service/notification/ManagedServicesProto;
Landroid/service/notification/ManagedServicesProto;-><init>()V
Landroid/service/notification/ManagedServicesProto;->APPROVED:J
Landroid/service/notification/ManagedServicesProto;->CAPTION:J
Landroid/service/notification/ManagedServicesProto;->ENABLED:J
Landroid/service/notification/ManagedServicesProto;->LIVE_SERVICES:J
Landroid/service/notification/ManagedServicesProto;->SNOOZED:J
-Landroid/service/notification/NotificationAssistantService$MyHandler;
-Landroid/service/notification/NotificationAssistantService$MyHandler;-><init>(Landroid/os/Looper;)V
Landroid/service/notification/NotificationAssistantService$MyHandler;->MSG_ON_NOTIFICATION_ENQUEUED:I
Landroid/service/notification/NotificationAssistantService$MyHandler;->MSG_ON_NOTIFICATION_SNOOZED:I
-Landroid/service/notification/NotificationAssistantService$NotificationAssistantServiceWrapper;
-Landroid/service/notification/NotificationAssistantService$NotificationAssistantServiceWrapper;-><init>()V
Landroid/service/notification/NotificationAssistantService$NotificationAssistantServiceWrapper;->onNotificationEnqueued(Landroid/service/notification/IStatusBarNotificationHolder;)V
Landroid/service/notification/NotificationAssistantService$NotificationAssistantServiceWrapper;->onNotificationSnoozedUntilContext(Landroid/service/notification/IStatusBarNotificationHolder;Ljava/lang/String;)V
Landroid/service/notification/NotificationAssistantService;->mHandler:Landroid/os/Handler;
Landroid/service/notification/NotificationAssistantService;->TAG:Ljava/lang/String;
-Landroid/service/notification/NotificationListenerService$ChannelOrGroupModificationTypes;
-Landroid/service/notification/NotificationListenerService$MyHandler;
-Landroid/service/notification/NotificationListenerService$MyHandler;-><init>(Landroid/os/Looper;)V
Landroid/service/notification/NotificationListenerService$MyHandler;->MSG_ON_INTERRUPTION_FILTER_CHANGED:I
Landroid/service/notification/NotificationListenerService$MyHandler;->MSG_ON_LISTENER_CONNECTED:I
Landroid/service/notification/NotificationListenerService$MyHandler;->MSG_ON_LISTENER_HINTS_CHANGED:I
@@ -68123,8 +63570,6 @@
Landroid/service/notification/NotificationListenerService$MyHandler;->MSG_ON_NOTIFICATION_POSTED:I
Landroid/service/notification/NotificationListenerService$MyHandler;->MSG_ON_NOTIFICATION_RANKING_UPDATE:I
Landroid/service/notification/NotificationListenerService$MyHandler;->MSG_ON_NOTIFICATION_REMOVED:I
-Landroid/service/notification/NotificationListenerService$NotificationListenerWrapper;
-Landroid/service/notification/NotificationListenerService$NotificationListenerWrapper;-><init>()V
Landroid/service/notification/NotificationListenerService$NotificationListenerWrapper;->onInterruptionFilterChanged(I)V
Landroid/service/notification/NotificationListenerService$NotificationListenerWrapper;->onListenerConnected(Landroid/service/notification/NotificationRankingUpdate;)V
Landroid/service/notification/NotificationListenerService$NotificationListenerWrapper;->onListenerHintsChanged(I)V
@@ -68135,7 +63580,6 @@
Landroid/service/notification/NotificationListenerService$NotificationListenerWrapper;->onNotificationRankingUpdate(Landroid/service/notification/NotificationRankingUpdate;)V
Landroid/service/notification/NotificationListenerService$NotificationListenerWrapper;->onNotificationRemoved(Landroid/service/notification/IStatusBarNotificationHolder;Landroid/service/notification/NotificationRankingUpdate;Landroid/service/notification/NotificationStats;I)V
Landroid/service/notification/NotificationListenerService$NotificationListenerWrapper;->onNotificationSnoozedUntilContext(Landroid/service/notification/IStatusBarNotificationHolder;Ljava/lang/String;)V
-Landroid/service/notification/NotificationListenerService$Ranking$UserSentiment;
Landroid/service/notification/NotificationListenerService$Ranking;->importanceToString(I)Ljava/lang/String;
Landroid/service/notification/NotificationListenerService$Ranking;->mChannel:Landroid/app/NotificationChannel;
Landroid/service/notification/NotificationListenerService$Ranking;->mHidden:Z
@@ -68206,7 +63650,6 @@
Landroid/service/notification/NotificationListenerService;->mLock:Ljava/lang/Object;
Landroid/service/notification/NotificationListenerService;->mRankingMap:Landroid/service/notification/NotificationListenerService$RankingMap;
Landroid/service/notification/NotificationListenerService;->mSystemContext:Landroid/content/Context;
-Landroid/service/notification/NotificationRankingUpdate;
Landroid/service/notification/NotificationRankingUpdate;-><init>(Landroid/os/Parcel;)V
Landroid/service/notification/NotificationRankingUpdate;-><init>([Ljava/lang/String;[Ljava/lang/String;Landroid/os/Bundle;Landroid/os/Bundle;[ILandroid/os/Bundle;Landroid/os/Bundle;Landroid/os/Bundle;Landroid/os/Bundle;Landroid/os/Bundle;Landroid/os/Bundle;Landroid/os/Bundle;Landroid/os/Bundle;)V
Landroid/service/notification/NotificationRankingUpdate;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -68236,7 +63679,6 @@
Landroid/service/notification/NotificationRankingUpdate;->mSuppressedVisualEffects:Landroid/os/Bundle;
Landroid/service/notification/NotificationRankingUpdate;->mUserSentiment:Landroid/os/Bundle;
Landroid/service/notification/NotificationRankingUpdate;->mVisibilityOverrides:Landroid/os/Bundle;
-Landroid/service/notification/NotificationRecordProto;
Landroid/service/notification/NotificationRecordProto;-><init>()V
Landroid/service/notification/NotificationRecordProto;->AUDIO_ATTRIBUTES:J
Landroid/service/notification/NotificationRecordProto;->CAN_SHOW_LIGHT:J
@@ -68251,7 +63693,6 @@
Landroid/service/notification/NotificationRecordProto;->SNOOZED:I
Landroid/service/notification/NotificationRecordProto;->SOUND:J
Landroid/service/notification/NotificationRecordProto;->STATE:J
-Landroid/service/notification/NotificationServiceDumpProto;
Landroid/service/notification/NotificationServiceDumpProto;-><init>()V
Landroid/service/notification/NotificationServiceDumpProto;->CONDITION_PROVIDERS:J
Landroid/service/notification/NotificationServiceDumpProto;->LISTENERS_DISABLING_EFFECTS:J
@@ -68261,13 +63702,11 @@
Landroid/service/notification/NotificationServiceDumpProto;->RANKING_CONFIG:J
Landroid/service/notification/NotificationServiceDumpProto;->RECORDS:J
Landroid/service/notification/NotificationServiceDumpProto;->ZEN:J
-Landroid/service/notification/NotificationServiceProto;
Landroid/service/notification/NotificationServiceProto;-><init>()V
Landroid/service/notification/NotificationServiceProto;->ZEN_MODE_ALARMS:I
Landroid/service/notification/NotificationServiceProto;->ZEN_MODE_IMPORTANT_INTERRUPTIONS:I
Landroid/service/notification/NotificationServiceProto;->ZEN_MODE_NO_INTERRUPTIONS:I
Landroid/service/notification/NotificationServiceProto;->ZEN_MODE_OFF:I
-Landroid/service/notification/NotificationStats$DismissalSurface;
Landroid/service/notification/NotificationStats;->mDirectReplied:Z
Landroid/service/notification/NotificationStats;->mDismissalSurface:I
Landroid/service/notification/NotificationStats;->mExpanded:Z
@@ -68275,7 +63714,6 @@
Landroid/service/notification/NotificationStats;->mSeen:Z
Landroid/service/notification/NotificationStats;->mSnoozed:Z
Landroid/service/notification/NotificationStats;->mViewedSettings:Z
-Landroid/service/notification/NotifyingApp;
Landroid/service/notification/NotifyingApp;-><init>()V
Landroid/service/notification/NotifyingApp;-><init>(Landroid/os/Parcel;)V
Landroid/service/notification/NotifyingApp;->compareTo(Landroid/service/notification/NotifyingApp;)I
@@ -68289,8 +63727,6 @@
Landroid/service/notification/NotifyingApp;->setLastNotified(J)Landroid/service/notification/NotifyingApp;
Landroid/service/notification/NotifyingApp;->setPackage(Ljava/lang/String;)Landroid/service/notification/NotifyingApp;
Landroid/service/notification/NotifyingApp;->setUid(I)Landroid/service/notification/NotifyingApp;
-Landroid/service/notification/RankingHelperProto$RecordProto;
-Landroid/service/notification/RankingHelperProto$RecordProto;-><init>()V
Landroid/service/notification/RankingHelperProto$RecordProto;->CHANNELS:J
Landroid/service/notification/RankingHelperProto$RecordProto;->CHANNEL_GROUPS:J
Landroid/service/notification/RankingHelperProto$RecordProto;->IMPORTANCE:J
@@ -68299,12 +63735,10 @@
Landroid/service/notification/RankingHelperProto$RecordProto;->SHOW_BADGE:J
Landroid/service/notification/RankingHelperProto$RecordProto;->UID:J
Landroid/service/notification/RankingHelperProto$RecordProto;->VISIBILITY:J
-Landroid/service/notification/RankingHelperProto;
Landroid/service/notification/RankingHelperProto;-><init>()V
Landroid/service/notification/RankingHelperProto;->NOTIFICATION_SIGNAL_EXTRACTORS:J
Landroid/service/notification/RankingHelperProto;->RECORDS:J
Landroid/service/notification/RankingHelperProto;->RECORDS_RESTORED_WITHOUT_UID:J
-Landroid/service/notification/ScheduleCalendar;
Landroid/service/notification/ScheduleCalendar;-><init>()V
Landroid/service/notification/ScheduleCalendar;->addDays(JI)J
Landroid/service/notification/ScheduleCalendar;->DEBUG:Z
@@ -68339,13 +63773,11 @@
Landroid/service/notification/StatusBarNotification;->mContext:Landroid/content/Context;
Landroid/service/notification/StatusBarNotification;->opPkg:Ljava/lang/String;
Landroid/service/notification/StatusBarNotification;->overrideGroupKey:Ljava/lang/String;
-Landroid/service/notification/ZenModeConfig$Diff;
Landroid/service/notification/ZenModeConfig$Diff;-><init>()V
Landroid/service/notification/ZenModeConfig$Diff;->addLine(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Landroid/service/notification/ZenModeConfig$Diff;
Landroid/service/notification/ZenModeConfig$Diff;->addLine(Ljava/lang/String;Ljava/lang/String;)Landroid/service/notification/ZenModeConfig$Diff;
Landroid/service/notification/ZenModeConfig$Diff;->addLine(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Landroid/service/notification/ZenModeConfig$Diff;
Landroid/service/notification/ZenModeConfig$Diff;->lines:Ljava/util/ArrayList;
-Landroid/service/notification/ZenModeConfig$EventInfo;
Landroid/service/notification/ZenModeConfig$EventInfo;-><init>()V
Landroid/service/notification/ZenModeConfig$EventInfo;->calendar:Ljava/lang/String;
Landroid/service/notification/ZenModeConfig$EventInfo;->copy()Landroid/service/notification/ZenModeConfig$EventInfo;
@@ -68355,13 +63787,11 @@
Landroid/service/notification/ZenModeConfig$EventInfo;->REPLY_YES_OR_MAYBE:I
Landroid/service/notification/ZenModeConfig$EventInfo;->resolveUserId(I)I
Landroid/service/notification/ZenModeConfig$EventInfo;->userId:I
-Landroid/service/notification/ZenModeConfig$ScheduleInfo;
Landroid/service/notification/ZenModeConfig$ScheduleInfo;-><init>()V
Landroid/service/notification/ZenModeConfig$ScheduleInfo;->copy()Landroid/service/notification/ZenModeConfig$ScheduleInfo;
Landroid/service/notification/ZenModeConfig$ScheduleInfo;->exitAtAlarm:Z
Landroid/service/notification/ZenModeConfig$ScheduleInfo;->nextAlarm:J
Landroid/service/notification/ZenModeConfig$ScheduleInfo;->ts(J)Ljava/lang/String;
-Landroid/service/notification/ZenModeConfig$ZenRule;
Landroid/service/notification/ZenModeConfig$ZenRule;-><init>()V
Landroid/service/notification/ZenModeConfig$ZenRule;-><init>(Landroid/os/Parcel;)V
Landroid/service/notification/ZenModeConfig$ZenRule;->appendDiff(Landroid/service/notification/ZenModeConfig$Diff;Ljava/lang/String;Landroid/service/notification/ZenModeConfig$ZenRule;)V
@@ -68374,7 +63804,6 @@
Landroid/service/notification/ZenModeConfig$ZenRule;->isAutomaticActive()Z
Landroid/service/notification/ZenModeConfig$ZenRule;->isTrueOrUnknown()Z
Landroid/service/notification/ZenModeConfig$ZenRule;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-Landroid/service/notification/ZenModeConfig;
Landroid/service/notification/ZenModeConfig;-><init>(Landroid/os/Parcel;)V
Landroid/service/notification/ZenModeConfig;->addKeys(Landroid/util/ArraySet;Landroid/util/ArrayMap;)V
Landroid/service/notification/ZenModeConfig;->allowCalls:Z
@@ -68527,14 +63956,12 @@
Landroid/service/notification/ZenModeConfig;->ZEN_ATT_VERSION:Ljava/lang/String;
Landroid/service/notification/ZenModeConfig;->ZEN_TAG:Ljava/lang/String;
Landroid/service/notification/ZenModeConfig;->ZERO_VALUE_MS:I
-Landroid/service/notification/ZenModeProto;
Landroid/service/notification/ZenModeProto;-><init>()V
Landroid/service/notification/ZenModeProto;->ENABLED_ACTIVE_CONDITIONS:J
Landroid/service/notification/ZenModeProto;->POLICY:J
Landroid/service/notification/ZenModeProto;->SUPPRESSED_EFFECTS:J
Landroid/service/notification/ZenModeProto;->SUPPRESSORS:J
Landroid/service/notification/ZenModeProto;->ZEN_MODE:J
-Landroid/service/notification/ZenRuleProto;
Landroid/service/notification/ZenRuleProto;-><init>()V
Landroid/service/notification/ZenRuleProto;->COMPONENT:J
Landroid/service/notification/ZenRuleProto;->CONDITION:J
@@ -68546,7 +63973,6 @@
Landroid/service/notification/ZenRuleProto;->IS_SNOOZING:J
Landroid/service/notification/ZenRuleProto;->NAME:J
Landroid/service/notification/ZenRuleProto;->ZEN_MODE:J
-Landroid/service/oemlock/IOemLockService$Stub$Proxy;
Landroid/service/oemlock/IOemLockService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/oemlock/IOemLockService$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/service/oemlock/IOemLockService$Stub$Proxy;->isDeviceOemUnlocked()Z
@@ -68556,7 +63982,6 @@
Landroid/service/oemlock/IOemLockService$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/service/oemlock/IOemLockService$Stub$Proxy;->setOemUnlockAllowedByCarrier(Z[B)V
Landroid/service/oemlock/IOemLockService$Stub$Proxy;->setOemUnlockAllowedByUser(Z)V
-Landroid/service/oemlock/IOemLockService$Stub;
Landroid/service/oemlock/IOemLockService$Stub;-><init>()V
Landroid/service/oemlock/IOemLockService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/oemlock/IOemLockService;
Landroid/service/oemlock/IOemLockService$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -68566,7 +63991,6 @@
Landroid/service/oemlock/IOemLockService$Stub;->TRANSACTION_isOemUnlockAllowedByUser:I
Landroid/service/oemlock/IOemLockService$Stub;->TRANSACTION_setOemUnlockAllowedByCarrier:I
Landroid/service/oemlock/IOemLockService$Stub;->TRANSACTION_setOemUnlockAllowedByUser:I
-Landroid/service/oemlock/IOemLockService;
Landroid/service/oemlock/IOemLockService;->isDeviceOemUnlocked()Z
Landroid/service/oemlock/IOemLockService;->isOemUnlockAllowed()Z
Landroid/service/oemlock/IOemLockService;->isOemUnlockAllowedByCarrier()Z
@@ -68577,7 +64001,6 @@
Landroid/service/oemlock/OemLockManager;->isDeviceOemUnlocked()Z
Landroid/service/oemlock/OemLockManager;->isOemUnlockAllowed()Z
Landroid/service/oemlock/OemLockManager;->mService:Landroid/service/oemlock/IOemLockService;
-Landroid/service/persistentdata/IPersistentDataBlockService$Stub$Proxy;
Landroid/service/persistentdata/IPersistentDataBlockService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/persistentdata/IPersistentDataBlockService$Stub$Proxy;->getDataBlockSize()I
Landroid/service/persistentdata/IPersistentDataBlockService$Stub$Proxy;->getFlashLockState()I
@@ -68590,7 +64013,6 @@
Landroid/service/persistentdata/IPersistentDataBlockService$Stub$Proxy;->setOemUnlockEnabled(Z)V
Landroid/service/persistentdata/IPersistentDataBlockService$Stub$Proxy;->wipe()V
Landroid/service/persistentdata/IPersistentDataBlockService$Stub$Proxy;->write([B)I
-Landroid/service/persistentdata/IPersistentDataBlockService$Stub;
Landroid/service/persistentdata/IPersistentDataBlockService$Stub;-><init>()V
Landroid/service/persistentdata/IPersistentDataBlockService$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/service/persistentdata/IPersistentDataBlockService$Stub;->TRANSACTION_getDataBlockSize:I
@@ -68602,7 +64024,6 @@
Landroid/service/persistentdata/IPersistentDataBlockService$Stub;->TRANSACTION_setOemUnlockEnabled:I
Landroid/service/persistentdata/IPersistentDataBlockService$Stub;->TRANSACTION_wipe:I
Landroid/service/persistentdata/IPersistentDataBlockService$Stub;->TRANSACTION_write:I
-Landroid/service/persistentdata/IPersistentDataBlockService;
Landroid/service/persistentdata/IPersistentDataBlockService;->getDataBlockSize()I
Landroid/service/persistentdata/IPersistentDataBlockService;->getFlashLockState()I
Landroid/service/persistentdata/IPersistentDataBlockService;->getMaximumDataBlockSize()J
@@ -68615,7 +64036,6 @@
Landroid/service/persistentdata/PersistentDataBlockManager;-><init>(Landroid/service/persistentdata/IPersistentDataBlockService;)V
Landroid/service/persistentdata/PersistentDataBlockManager;->sService:Landroid/service/persistentdata/IPersistentDataBlockService;
Landroid/service/persistentdata/PersistentDataBlockManager;->TAG:Ljava/lang/String;
-Landroid/service/quicksettings/IQSService$Stub$Proxy;
Landroid/service/quicksettings/IQSService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/quicksettings/IQSService$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/service/quicksettings/IQSService$Stub$Proxy;->getTile(Landroid/os/IBinder;)Landroid/service/quicksettings/Tile;
@@ -68629,7 +64049,6 @@
Landroid/service/quicksettings/IQSService$Stub$Proxy;->startUnlockAndRun(Landroid/os/IBinder;)V
Landroid/service/quicksettings/IQSService$Stub$Proxy;->updateQsTile(Landroid/service/quicksettings/Tile;Landroid/os/IBinder;)V
Landroid/service/quicksettings/IQSService$Stub$Proxy;->updateStatusIcon(Landroid/os/IBinder;Landroid/graphics/drawable/Icon;Ljava/lang/String;)V
-Landroid/service/quicksettings/IQSService$Stub;
Landroid/service/quicksettings/IQSService$Stub;-><init>()V
Landroid/service/quicksettings/IQSService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/quicksettings/IQSService;
Landroid/service/quicksettings/IQSService$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -68643,7 +64062,6 @@
Landroid/service/quicksettings/IQSService$Stub;->TRANSACTION_startUnlockAndRun:I
Landroid/service/quicksettings/IQSService$Stub;->TRANSACTION_updateQsTile:I
Landroid/service/quicksettings/IQSService$Stub;->TRANSACTION_updateStatusIcon:I
-Landroid/service/quicksettings/IQSService;
Landroid/service/quicksettings/IQSService;->getTile(Landroid/os/IBinder;)Landroid/service/quicksettings/Tile;
Landroid/service/quicksettings/IQSService;->isLocked()Z
Landroid/service/quicksettings/IQSService;->isSecure()Z
@@ -68654,7 +64072,6 @@
Landroid/service/quicksettings/IQSService;->startUnlockAndRun(Landroid/os/IBinder;)V
Landroid/service/quicksettings/IQSService;->updateQsTile(Landroid/service/quicksettings/Tile;Landroid/os/IBinder;)V
Landroid/service/quicksettings/IQSService;->updateStatusIcon(Landroid/os/IBinder;Landroid/graphics/drawable/Icon;Ljava/lang/String;)V
-Landroid/service/quicksettings/IQSTileService$Stub$Proxy;
Landroid/service/quicksettings/IQSTileService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/quicksettings/IQSTileService$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/service/quicksettings/IQSTileService$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -68664,7 +64081,6 @@
Landroid/service/quicksettings/IQSTileService$Stub$Proxy;->onTileAdded()V
Landroid/service/quicksettings/IQSTileService$Stub$Proxy;->onTileRemoved()V
Landroid/service/quicksettings/IQSTileService$Stub$Proxy;->onUnlockComplete()V
-Landroid/service/quicksettings/IQSTileService$Stub;
Landroid/service/quicksettings/IQSTileService$Stub;-><init>()V
Landroid/service/quicksettings/IQSTileService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/quicksettings/IQSTileService;
Landroid/service/quicksettings/IQSTileService$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -68674,7 +64090,6 @@
Landroid/service/quicksettings/IQSTileService$Stub;->TRANSACTION_onTileAdded:I
Landroid/service/quicksettings/IQSTileService$Stub;->TRANSACTION_onTileRemoved:I
Landroid/service/quicksettings/IQSTileService$Stub;->TRANSACTION_onUnlockComplete:I
-Landroid/service/quicksettings/IQSTileService;
Landroid/service/quicksettings/IQSTileService;->onClick(Landroid/os/IBinder;)V
Landroid/service/quicksettings/IQSTileService;->onStartListening()V
Landroid/service/quicksettings/IQSTileService;->onStopListening()V
@@ -68692,8 +64107,6 @@
Landroid/service/quicksettings/Tile;->readFromParcel(Landroid/os/Parcel;)V
Landroid/service/quicksettings/Tile;->setService(Landroid/service/quicksettings/IQSService;Landroid/os/IBinder;)V
Landroid/service/quicksettings/Tile;->TAG:Ljava/lang/String;
-Landroid/service/quicksettings/TileService$H;
-Landroid/service/quicksettings/TileService$H;-><init>(Landroid/os/Looper;)V
Landroid/service/quicksettings/TileService$H;->MSG_START_LISTENING:I
Landroid/service/quicksettings/TileService$H;->MSG_START_SUCCESS:I
Landroid/service/quicksettings/TileService$H;->MSG_STOP_LISTENING:I
@@ -68712,35 +64125,27 @@
Landroid/service/quicksettings/TileService;->mTileToken:Landroid/os/IBinder;
Landroid/service/quicksettings/TileService;->mToken:Landroid/os/IBinder;
Landroid/service/quicksettings/TileService;->mUnlockRunnable:Ljava/lang/Runnable;
-Landroid/service/resolver/IResolverRankerResult$Stub$Proxy;
Landroid/service/resolver/IResolverRankerResult$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/resolver/IResolverRankerResult$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/service/resolver/IResolverRankerResult$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/service/resolver/IResolverRankerResult$Stub$Proxy;->sendResult(Ljava/util/List;)V
-Landroid/service/resolver/IResolverRankerResult$Stub;
Landroid/service/resolver/IResolverRankerResult$Stub;-><init>()V
Landroid/service/resolver/IResolverRankerResult$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/resolver/IResolverRankerResult;
Landroid/service/resolver/IResolverRankerResult$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/service/resolver/IResolverRankerResult$Stub;->TRANSACTION_sendResult:I
-Landroid/service/resolver/IResolverRankerResult;
Landroid/service/resolver/IResolverRankerResult;->sendResult(Ljava/util/List;)V
-Landroid/service/resolver/IResolverRankerService$Stub$Proxy;
Landroid/service/resolver/IResolverRankerService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/resolver/IResolverRankerService$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/service/resolver/IResolverRankerService$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/service/resolver/IResolverRankerService$Stub$Proxy;->predict(Ljava/util/List;Landroid/service/resolver/IResolverRankerResult;)V
Landroid/service/resolver/IResolverRankerService$Stub$Proxy;->train(Ljava/util/List;I)V
-Landroid/service/resolver/IResolverRankerService$Stub;
Landroid/service/resolver/IResolverRankerService$Stub;-><init>()V
Landroid/service/resolver/IResolverRankerService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/resolver/IResolverRankerService;
Landroid/service/resolver/IResolverRankerService$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/service/resolver/IResolverRankerService$Stub;->TRANSACTION_predict:I
Landroid/service/resolver/IResolverRankerService$Stub;->TRANSACTION_train:I
-Landroid/service/resolver/IResolverRankerService;
Landroid/service/resolver/IResolverRankerService;->predict(Ljava/util/List;Landroid/service/resolver/IResolverRankerResult;)V
Landroid/service/resolver/IResolverRankerService;->train(Ljava/util/List;I)V
-Landroid/service/resolver/ResolverRankerService$ResolverRankerServiceWrapper;
-Landroid/service/resolver/ResolverRankerService$ResolverRankerServiceWrapper;-><init>()V
Landroid/service/resolver/ResolverRankerService$ResolverRankerServiceWrapper;->predict(Ljava/util/List;Landroid/service/resolver/IResolverRankerResult;)V
Landroid/service/resolver/ResolverRankerService$ResolverRankerServiceWrapper;->train(Ljava/util/List;I)V
Landroid/service/resolver/ResolverRankerService;->DEBUG:Z
@@ -68758,21 +64163,18 @@
Landroid/service/resolver/ResolverTarget;->mTimeSpentScore:F
Landroid/service/resolver/ResolverTarget;->TAG:Ljava/lang/String;
Landroid/service/restrictions/RestrictionsReceiver;->TAG:Ljava/lang/String;
-Landroid/service/settings/suggestions/ISuggestionService$Stub$Proxy;
Landroid/service/settings/suggestions/ISuggestionService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/settings/suggestions/ISuggestionService$Stub$Proxy;->dismissSuggestion(Landroid/service/settings/suggestions/Suggestion;)V
Landroid/service/settings/suggestions/ISuggestionService$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/service/settings/suggestions/ISuggestionService$Stub$Proxy;->getSuggestions()Ljava/util/List;
Landroid/service/settings/suggestions/ISuggestionService$Stub$Proxy;->launchSuggestion(Landroid/service/settings/suggestions/Suggestion;)V
Landroid/service/settings/suggestions/ISuggestionService$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/service/settings/suggestions/ISuggestionService$Stub;
Landroid/service/settings/suggestions/ISuggestionService$Stub;-><init>()V
Landroid/service/settings/suggestions/ISuggestionService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/settings/suggestions/ISuggestionService;
Landroid/service/settings/suggestions/ISuggestionService$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/service/settings/suggestions/ISuggestionService$Stub;->TRANSACTION_dismissSuggestion:I
Landroid/service/settings/suggestions/ISuggestionService$Stub;->TRANSACTION_getSuggestions:I
Landroid/service/settings/suggestions/ISuggestionService$Stub;->TRANSACTION_launchSuggestion:I
-Landroid/service/settings/suggestions/ISuggestionService;
Landroid/service/settings/suggestions/ISuggestionService;->dismissSuggestion(Landroid/service/settings/suggestions/Suggestion;)V
Landroid/service/settings/suggestions/ISuggestionService;->getSuggestions()Ljava/util/List;
Landroid/service/settings/suggestions/ISuggestionService;->launchSuggestion(Landroid/service/settings/suggestions/Suggestion;)V
@@ -68782,7 +64184,6 @@
Landroid/service/settings/suggestions/Suggestion$Builder;->mPendingIntent:Landroid/app/PendingIntent;
Landroid/service/settings/suggestions/Suggestion$Builder;->mSummary:Ljava/lang/CharSequence;
Landroid/service/settings/suggestions/Suggestion$Builder;->mTitle:Ljava/lang/CharSequence;
-Landroid/service/settings/suggestions/Suggestion$Flags;
Landroid/service/settings/suggestions/Suggestion;-><init>(Landroid/os/Parcel;)V
Landroid/service/settings/suggestions/Suggestion;-><init>(Landroid/service/settings/suggestions/Suggestion$Builder;)V
Landroid/service/settings/suggestions/Suggestion;->FLAG_ICON_TINTABLE:I
@@ -68794,22 +64195,18 @@
Landroid/service/settings/suggestions/Suggestion;->mTitle:Ljava/lang/CharSequence;
Landroid/service/settings/suggestions/SuggestionService;->DEBUG:Z
Landroid/service/settings/suggestions/SuggestionService;->TAG:Ljava/lang/String;
-Landroid/service/textclassifier/ITextClassificationCallback$Stub$Proxy;
Landroid/service/textclassifier/ITextClassificationCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/textclassifier/ITextClassificationCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/service/textclassifier/ITextClassificationCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/service/textclassifier/ITextClassificationCallback$Stub$Proxy;->onFailure()V
Landroid/service/textclassifier/ITextClassificationCallback$Stub$Proxy;->onSuccess(Landroid/view/textclassifier/TextClassification;)V
-Landroid/service/textclassifier/ITextClassificationCallback$Stub;
Landroid/service/textclassifier/ITextClassificationCallback$Stub;-><init>()V
Landroid/service/textclassifier/ITextClassificationCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/textclassifier/ITextClassificationCallback;
Landroid/service/textclassifier/ITextClassificationCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/service/textclassifier/ITextClassificationCallback$Stub;->TRANSACTION_onFailure:I
Landroid/service/textclassifier/ITextClassificationCallback$Stub;->TRANSACTION_onSuccess:I
-Landroid/service/textclassifier/ITextClassificationCallback;
Landroid/service/textclassifier/ITextClassificationCallback;->onFailure()V
Landroid/service/textclassifier/ITextClassificationCallback;->onSuccess(Landroid/view/textclassifier/TextClassification;)V
-Landroid/service/textclassifier/ITextClassifierService$Stub$Proxy;
Landroid/service/textclassifier/ITextClassifierService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/textclassifier/ITextClassifierService$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/service/textclassifier/ITextClassifierService$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -68819,7 +64216,6 @@
Landroid/service/textclassifier/ITextClassifierService$Stub$Proxy;->onGenerateLinks(Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/TextLinks$Request;Landroid/service/textclassifier/ITextLinksCallback;)V
Landroid/service/textclassifier/ITextClassifierService$Stub$Proxy;->onSelectionEvent(Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/SelectionEvent;)V
Landroid/service/textclassifier/ITextClassifierService$Stub$Proxy;->onSuggestSelection(Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/TextSelection$Request;Landroid/service/textclassifier/ITextSelectionCallback;)V
-Landroid/service/textclassifier/ITextClassifierService$Stub;
Landroid/service/textclassifier/ITextClassifierService$Stub;-><init>()V
Landroid/service/textclassifier/ITextClassifierService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/textclassifier/ITextClassifierService;
Landroid/service/textclassifier/ITextClassifierService$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -68829,41 +64225,34 @@
Landroid/service/textclassifier/ITextClassifierService$Stub;->TRANSACTION_onGenerateLinks:I
Landroid/service/textclassifier/ITextClassifierService$Stub;->TRANSACTION_onSelectionEvent:I
Landroid/service/textclassifier/ITextClassifierService$Stub;->TRANSACTION_onSuggestSelection:I
-Landroid/service/textclassifier/ITextClassifierService;
Landroid/service/textclassifier/ITextClassifierService;->onClassifyText(Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/TextClassification$Request;Landroid/service/textclassifier/ITextClassificationCallback;)V
Landroid/service/textclassifier/ITextClassifierService;->onCreateTextClassificationSession(Landroid/view/textclassifier/TextClassificationContext;Landroid/view/textclassifier/TextClassificationSessionId;)V
Landroid/service/textclassifier/ITextClassifierService;->onDestroyTextClassificationSession(Landroid/view/textclassifier/TextClassificationSessionId;)V
Landroid/service/textclassifier/ITextClassifierService;->onGenerateLinks(Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/TextLinks$Request;Landroid/service/textclassifier/ITextLinksCallback;)V
Landroid/service/textclassifier/ITextClassifierService;->onSelectionEvent(Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/SelectionEvent;)V
Landroid/service/textclassifier/ITextClassifierService;->onSuggestSelection(Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/TextSelection$Request;Landroid/service/textclassifier/ITextSelectionCallback;)V
-Landroid/service/textclassifier/ITextLinksCallback$Stub$Proxy;
Landroid/service/textclassifier/ITextLinksCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/textclassifier/ITextLinksCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/service/textclassifier/ITextLinksCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/service/textclassifier/ITextLinksCallback$Stub$Proxy;->onFailure()V
Landroid/service/textclassifier/ITextLinksCallback$Stub$Proxy;->onSuccess(Landroid/view/textclassifier/TextLinks;)V
-Landroid/service/textclassifier/ITextLinksCallback$Stub;
Landroid/service/textclassifier/ITextLinksCallback$Stub;-><init>()V
Landroid/service/textclassifier/ITextLinksCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/textclassifier/ITextLinksCallback;
Landroid/service/textclassifier/ITextLinksCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/service/textclassifier/ITextLinksCallback$Stub;->TRANSACTION_onFailure:I
Landroid/service/textclassifier/ITextLinksCallback$Stub;->TRANSACTION_onSuccess:I
-Landroid/service/textclassifier/ITextLinksCallback;
Landroid/service/textclassifier/ITextLinksCallback;->onFailure()V
Landroid/service/textclassifier/ITextLinksCallback;->onSuccess(Landroid/view/textclassifier/TextLinks;)V
-Landroid/service/textclassifier/ITextSelectionCallback$Stub$Proxy;
Landroid/service/textclassifier/ITextSelectionCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/textclassifier/ITextSelectionCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/service/textclassifier/ITextSelectionCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/service/textclassifier/ITextSelectionCallback$Stub$Proxy;->onFailure()V
Landroid/service/textclassifier/ITextSelectionCallback$Stub$Proxy;->onSuccess(Landroid/view/textclassifier/TextSelection;)V
-Landroid/service/textclassifier/ITextSelectionCallback$Stub;
Landroid/service/textclassifier/ITextSelectionCallback$Stub;-><init>()V
Landroid/service/textclassifier/ITextSelectionCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/textclassifier/ITextSelectionCallback;
Landroid/service/textclassifier/ITextSelectionCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/service/textclassifier/ITextSelectionCallback$Stub;->TRANSACTION_onFailure:I
Landroid/service/textclassifier/ITextSelectionCallback$Stub;->TRANSACTION_onSuccess:I
-Landroid/service/textclassifier/ITextSelectionCallback;
Landroid/service/textclassifier/ITextSelectionCallback;->onFailure()V
Landroid/service/textclassifier/ITextSelectionCallback;->onSuccess(Landroid/view/textclassifier/TextSelection;)V
Landroid/service/textclassifier/TextClassifierService;->getServiceComponentName(Landroid/content/Context;)Landroid/content/ComponentName;
@@ -68872,7 +64261,6 @@
Landroid/service/textclassifier/TextClassifierService;->onClassifyText(Ljava/lang/CharSequence;IILandroid/view/textclassifier/TextClassification$Options;Landroid/os/CancellationSignal;Landroid/service/textclassifier/TextClassifierService$Callback;)V
Landroid/service/textclassifier/TextClassifierService;->onGenerateLinks(Ljava/lang/CharSequence;Landroid/view/textclassifier/TextLinks$Options;Landroid/os/CancellationSignal;Landroid/service/textclassifier/TextClassifierService$Callback;)V
Landroid/service/textclassifier/TextClassifierService;->onSuggestSelection(Ljava/lang/CharSequence;IILandroid/view/textclassifier/TextSelection$Options;Landroid/os/CancellationSignal;Landroid/service/textclassifier/TextClassifierService$Callback;)V
-Landroid/service/textservice/SpellCheckerService$InternalISpellCheckerSession;
Landroid/service/textservice/SpellCheckerService$InternalISpellCheckerSession;-><init>(Ljava/lang/String;Lcom/android/internal/textservice/ISpellCheckerSessionListener;Landroid/os/Bundle;Landroid/service/textservice/SpellCheckerService$Session;)V
Landroid/service/textservice/SpellCheckerService$InternalISpellCheckerSession;->getBundle()Landroid/os/Bundle;
Landroid/service/textservice/SpellCheckerService$InternalISpellCheckerSession;->getLocale()Ljava/lang/String;
@@ -68884,17 +64272,14 @@
Landroid/service/textservice/SpellCheckerService$InternalISpellCheckerSession;->onClose()V
Landroid/service/textservice/SpellCheckerService$InternalISpellCheckerSession;->onGetSentenceSuggestionsMultiple([Landroid/view/textservice/TextInfo;I)V
Landroid/service/textservice/SpellCheckerService$InternalISpellCheckerSession;->onGetSuggestionsMultiple([Landroid/view/textservice/TextInfo;IZ)V
-Landroid/service/textservice/SpellCheckerService$SentenceLevelAdapter$SentenceTextInfoParams;
Landroid/service/textservice/SpellCheckerService$SentenceLevelAdapter$SentenceTextInfoParams;-><init>(Landroid/view/textservice/TextInfo;Ljava/util/ArrayList;)V
Landroid/service/textservice/SpellCheckerService$SentenceLevelAdapter$SentenceTextInfoParams;->mItems:Ljava/util/ArrayList;
Landroid/service/textservice/SpellCheckerService$SentenceLevelAdapter$SentenceTextInfoParams;->mOriginalTextInfo:Landroid/view/textservice/TextInfo;
Landroid/service/textservice/SpellCheckerService$SentenceLevelAdapter$SentenceTextInfoParams;->mSize:I
-Landroid/service/textservice/SpellCheckerService$SentenceLevelAdapter$SentenceWordItem;
Landroid/service/textservice/SpellCheckerService$SentenceLevelAdapter$SentenceWordItem;-><init>(Landroid/view/textservice/TextInfo;II)V
Landroid/service/textservice/SpellCheckerService$SentenceLevelAdapter$SentenceWordItem;->mLength:I
Landroid/service/textservice/SpellCheckerService$SentenceLevelAdapter$SentenceWordItem;->mStart:I
Landroid/service/textservice/SpellCheckerService$SentenceLevelAdapter$SentenceWordItem;->mTextInfo:Landroid/view/textservice/TextInfo;
-Landroid/service/textservice/SpellCheckerService$SentenceLevelAdapter;
Landroid/service/textservice/SpellCheckerService$SentenceLevelAdapter;-><init>(Ljava/util/Locale;)V
Landroid/service/textservice/SpellCheckerService$SentenceLevelAdapter;->EMPTY_SENTENCE_SUGGESTIONS_INFOS:[Landroid/view/textservice/SentenceSuggestionsInfo;
Landroid/service/textservice/SpellCheckerService$SentenceLevelAdapter;->EMPTY_SUGGESTIONS_INFO:Landroid/view/textservice/SuggestionsInfo;
@@ -68904,14 +64289,12 @@
Landroid/service/textservice/SpellCheckerService$Session;->mInternalSession:Landroid/service/textservice/SpellCheckerService$InternalISpellCheckerSession;
Landroid/service/textservice/SpellCheckerService$Session;->mSentenceLevelAdapter:Landroid/service/textservice/SpellCheckerService$SentenceLevelAdapter;
Landroid/service/textservice/SpellCheckerService$Session;->setInternalISpellCheckerSession(Landroid/service/textservice/SpellCheckerService$InternalISpellCheckerSession;)V
-Landroid/service/textservice/SpellCheckerService$SpellCheckerServiceBinder;
Landroid/service/textservice/SpellCheckerService$SpellCheckerServiceBinder;-><init>(Landroid/service/textservice/SpellCheckerService;)V
Landroid/service/textservice/SpellCheckerService$SpellCheckerServiceBinder;->getISpellCheckerSession(Ljava/lang/String;Lcom/android/internal/textservice/ISpellCheckerSessionListener;Landroid/os/Bundle;Lcom/android/internal/textservice/ISpellCheckerServiceCallback;)V
Landroid/service/textservice/SpellCheckerService$SpellCheckerServiceBinder;->mInternalServiceRef:Ljava/lang/ref/WeakReference;
Landroid/service/textservice/SpellCheckerService;->DBG:Z
Landroid/service/textservice/SpellCheckerService;->mBinder:Landroid/service/textservice/SpellCheckerService$SpellCheckerServiceBinder;
Landroid/service/textservice/SpellCheckerService;->TAG:Ljava/lang/String;
-Landroid/service/trust/ITrustAgentService$Stub$Proxy;
Landroid/service/trust/ITrustAgentService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/trust/ITrustAgentService$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/service/trust/ITrustAgentService$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -68925,7 +64308,6 @@
Landroid/service/trust/ITrustAgentService$Stub$Proxy;->onUnlockAttempt(Z)V
Landroid/service/trust/ITrustAgentService$Stub$Proxy;->onUnlockLockout(I)V
Landroid/service/trust/ITrustAgentService$Stub$Proxy;->setCallback(Landroid/service/trust/ITrustAgentServiceCallback;)V
-Landroid/service/trust/ITrustAgentService$Stub;
Landroid/service/trust/ITrustAgentService$Stub;-><init>()V
Landroid/service/trust/ITrustAgentService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/trust/ITrustAgentService;
Landroid/service/trust/ITrustAgentService$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -68939,7 +64321,6 @@
Landroid/service/trust/ITrustAgentService$Stub;->TRANSACTION_onUnlockAttempt:I
Landroid/service/trust/ITrustAgentService$Stub;->TRANSACTION_onUnlockLockout:I
Landroid/service/trust/ITrustAgentService$Stub;->TRANSACTION_setCallback:I
-Landroid/service/trust/ITrustAgentService;
Landroid/service/trust/ITrustAgentService;->onConfigure(Ljava/util/List;Landroid/os/IBinder;)V
Landroid/service/trust/ITrustAgentService;->onDeviceLocked()V
Landroid/service/trust/ITrustAgentService;->onDeviceUnlocked()V
@@ -68950,7 +64331,6 @@
Landroid/service/trust/ITrustAgentService;->onUnlockAttempt(Z)V
Landroid/service/trust/ITrustAgentService;->onUnlockLockout(I)V
Landroid/service/trust/ITrustAgentService;->setCallback(Landroid/service/trust/ITrustAgentServiceCallback;)V
-Landroid/service/trust/ITrustAgentServiceCallback$Stub$Proxy;
Landroid/service/trust/ITrustAgentServiceCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/trust/ITrustAgentServiceCallback$Stub$Proxy;->addEscrowToken([BI)V
Landroid/service/trust/ITrustAgentServiceCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
@@ -68963,7 +64343,6 @@
Landroid/service/trust/ITrustAgentServiceCallback$Stub$Proxy;->setManagingTrust(Z)V
Landroid/service/trust/ITrustAgentServiceCallback$Stub$Proxy;->showKeyguardErrorMessage(Ljava/lang/CharSequence;)V
Landroid/service/trust/ITrustAgentServiceCallback$Stub$Proxy;->unlockUserWithToken(J[BI)V
-Landroid/service/trust/ITrustAgentServiceCallback$Stub;
Landroid/service/trust/ITrustAgentServiceCallback$Stub;-><init>()V
Landroid/service/trust/ITrustAgentServiceCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/trust/ITrustAgentServiceCallback;
Landroid/service/trust/ITrustAgentServiceCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -68976,7 +64355,6 @@
Landroid/service/trust/ITrustAgentServiceCallback$Stub;->TRANSACTION_setManagingTrust:I
Landroid/service/trust/ITrustAgentServiceCallback$Stub;->TRANSACTION_showKeyguardErrorMessage:I
Landroid/service/trust/ITrustAgentServiceCallback$Stub;->TRANSACTION_unlockUserWithToken:I
-Landroid/service/trust/ITrustAgentServiceCallback;
Landroid/service/trust/ITrustAgentServiceCallback;->addEscrowToken([BI)V
Landroid/service/trust/ITrustAgentServiceCallback;->grantTrust(Ljava/lang/CharSequence;JI)V
Landroid/service/trust/ITrustAgentServiceCallback;->isEscrowTokenActive(JI)V
@@ -68986,14 +64364,9 @@
Landroid/service/trust/ITrustAgentServiceCallback;->setManagingTrust(Z)V
Landroid/service/trust/ITrustAgentServiceCallback;->showKeyguardErrorMessage(Ljava/lang/CharSequence;)V
Landroid/service/trust/ITrustAgentServiceCallback;->unlockUserWithToken(J[BI)V
-Landroid/service/trust/TrustAgentService$ConfigurationData;
Landroid/service/trust/TrustAgentService$ConfigurationData;-><init>(Ljava/util/List;Landroid/os/IBinder;)V
Landroid/service/trust/TrustAgentService$ConfigurationData;->options:Ljava/util/List;
Landroid/service/trust/TrustAgentService$ConfigurationData;->token:Landroid/os/IBinder;
-Landroid/service/trust/TrustAgentService$GrantTrustFlags;
-Landroid/service/trust/TrustAgentService$TokenState;
-Landroid/service/trust/TrustAgentService$TrustAgentServiceWrapper;
-Landroid/service/trust/TrustAgentService$TrustAgentServiceWrapper;-><init>()V
Landroid/service/trust/TrustAgentService$TrustAgentServiceWrapper;->onConfigure(Ljava/util/List;Landroid/os/IBinder;)V
Landroid/service/trust/TrustAgentService$TrustAgentServiceWrapper;->onDeviceLocked()V
Landroid/service/trust/TrustAgentService$TrustAgentServiceWrapper;->onDeviceUnlocked()V
@@ -69032,17 +64405,8 @@
Landroid/service/voice/AlwaysOnHotwordDetector$EventPayload;->mCaptureSession:I
Landroid/service/voice/AlwaysOnHotwordDetector$EventPayload;->mData:[B
Landroid/service/voice/AlwaysOnHotwordDetector$EventPayload;->mTriggerAvailable:Z
-Landroid/service/voice/AlwaysOnHotwordDetector$ManageActions;
-Landroid/service/voice/AlwaysOnHotwordDetector$MyHandler;
-Landroid/service/voice/AlwaysOnHotwordDetector$MyHandler;-><init>()V
-Landroid/service/voice/AlwaysOnHotwordDetector$RecognitionFlags;
-Landroid/service/voice/AlwaysOnHotwordDetector$RecognitionModes;
-Landroid/service/voice/AlwaysOnHotwordDetector$RefreshAvailabiltyTask;
-Landroid/service/voice/AlwaysOnHotwordDetector$RefreshAvailabiltyTask;-><init>()V
-Landroid/service/voice/AlwaysOnHotwordDetector$RefreshAvailabiltyTask;->doInBackground([[Ljava/lang/Void;)Ljava/lang/Void;
Landroid/service/voice/AlwaysOnHotwordDetector$RefreshAvailabiltyTask;->internalGetInitialAvailability()I
Landroid/service/voice/AlwaysOnHotwordDetector$RefreshAvailabiltyTask;->internalGetIsEnrolled(ILjava/util/Locale;)Z
-Landroid/service/voice/AlwaysOnHotwordDetector$SoundTriggerListener;
Landroid/service/voice/AlwaysOnHotwordDetector$SoundTriggerListener;-><init>(Landroid/os/Handler;)V
Landroid/service/voice/AlwaysOnHotwordDetector$SoundTriggerListener;->mHandler:Landroid/os/Handler;
Landroid/service/voice/AlwaysOnHotwordDetector$SoundTriggerListener;->onError(I)V
@@ -69085,7 +64449,6 @@
Landroid/service/voice/AlwaysOnHotwordDetector;->STATUS_OK:I
Landroid/service/voice/AlwaysOnHotwordDetector;->stopRecognitionLocked()I
Landroid/service/voice/AlwaysOnHotwordDetector;->TAG:Ljava/lang/String;
-Landroid/service/voice/IVoiceInteractionService$Stub$Proxy;
Landroid/service/voice/IVoiceInteractionService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/voice/IVoiceInteractionService$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/service/voice/IVoiceInteractionService$Stub$Proxy;->launchVoiceAssistFromKeyguard()V
@@ -69093,7 +64456,6 @@
Landroid/service/voice/IVoiceInteractionService$Stub$Proxy;->ready()V
Landroid/service/voice/IVoiceInteractionService$Stub$Proxy;->shutdown()V
Landroid/service/voice/IVoiceInteractionService$Stub$Proxy;->soundModelsChanged()V
-Landroid/service/voice/IVoiceInteractionService$Stub;
Landroid/service/voice/IVoiceInteractionService$Stub;-><init>()V
Landroid/service/voice/IVoiceInteractionService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/voice/IVoiceInteractionService;
Landroid/service/voice/IVoiceInteractionService$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -69101,12 +64463,10 @@
Landroid/service/voice/IVoiceInteractionService$Stub;->TRANSACTION_ready:I
Landroid/service/voice/IVoiceInteractionService$Stub;->TRANSACTION_shutdown:I
Landroid/service/voice/IVoiceInteractionService$Stub;->TRANSACTION_soundModelsChanged:I
-Landroid/service/voice/IVoiceInteractionService;
Landroid/service/voice/IVoiceInteractionService;->launchVoiceAssistFromKeyguard()V
Landroid/service/voice/IVoiceInteractionService;->ready()V
Landroid/service/voice/IVoiceInteractionService;->shutdown()V
Landroid/service/voice/IVoiceInteractionService;->soundModelsChanged()V
-Landroid/service/voice/IVoiceInteractionSession$Stub$Proxy;
Landroid/service/voice/IVoiceInteractionSession$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/voice/IVoiceInteractionSession$Stub$Proxy;->closeSystemDialogs()V
Landroid/service/voice/IVoiceInteractionSession$Stub$Proxy;->destroy()V
@@ -69119,7 +64479,6 @@
Landroid/service/voice/IVoiceInteractionSession$Stub$Proxy;->show(Landroid/os/Bundle;ILcom/android/internal/app/IVoiceInteractionSessionShowCallback;)V
Landroid/service/voice/IVoiceInteractionSession$Stub$Proxy;->taskFinished(Landroid/content/Intent;I)V
Landroid/service/voice/IVoiceInteractionSession$Stub$Proxy;->taskStarted(Landroid/content/Intent;I)V
-Landroid/service/voice/IVoiceInteractionSession$Stub;
Landroid/service/voice/IVoiceInteractionSession$Stub;-><init>()V
Landroid/service/voice/IVoiceInteractionSession$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/voice/IVoiceInteractionSession;
Landroid/service/voice/IVoiceInteractionSession$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -69132,7 +64491,6 @@
Landroid/service/voice/IVoiceInteractionSession$Stub;->TRANSACTION_show:I
Landroid/service/voice/IVoiceInteractionSession$Stub;->TRANSACTION_taskFinished:I
Landroid/service/voice/IVoiceInteractionSession$Stub;->TRANSACTION_taskStarted:I
-Landroid/service/voice/IVoiceInteractionSession;
Landroid/service/voice/IVoiceInteractionSession;->closeSystemDialogs()V
Landroid/service/voice/IVoiceInteractionSession;->destroy()V
Landroid/service/voice/IVoiceInteractionSession;->handleAssist(Landroid/os/Bundle;Landroid/app/assist/AssistStructure;Landroid/app/assist/AssistContent;II)V
@@ -69142,25 +64500,19 @@
Landroid/service/voice/IVoiceInteractionSession;->show(Landroid/os/Bundle;ILcom/android/internal/app/IVoiceInteractionSessionShowCallback;)V
Landroid/service/voice/IVoiceInteractionSession;->taskFinished(Landroid/content/Intent;I)V
Landroid/service/voice/IVoiceInteractionSession;->taskStarted(Landroid/content/Intent;I)V
-Landroid/service/voice/IVoiceInteractionSessionService$Stub$Proxy;
Landroid/service/voice/IVoiceInteractionSessionService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/voice/IVoiceInteractionSessionService$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/service/voice/IVoiceInteractionSessionService$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/service/voice/IVoiceInteractionSessionService$Stub$Proxy;->newSession(Landroid/os/IBinder;Landroid/os/Bundle;I)V
-Landroid/service/voice/IVoiceInteractionSessionService$Stub;
Landroid/service/voice/IVoiceInteractionSessionService$Stub;-><init>()V
Landroid/service/voice/IVoiceInteractionSessionService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/voice/IVoiceInteractionSessionService;
Landroid/service/voice/IVoiceInteractionSessionService$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/service/voice/IVoiceInteractionSessionService$Stub;->TRANSACTION_newSession:I
-Landroid/service/voice/IVoiceInteractionSessionService;
Landroid/service/voice/IVoiceInteractionSessionService;->newSession(Landroid/os/IBinder;Landroid/os/Bundle;I)V
-Landroid/service/voice/VoiceInteractionManagerInternal;
Landroid/service/voice/VoiceInteractionManagerInternal;-><init>()V
Landroid/service/voice/VoiceInteractionManagerInternal;->startLocalVoiceInteraction(Landroid/os/IBinder;Landroid/os/Bundle;)V
Landroid/service/voice/VoiceInteractionManagerInternal;->stopLocalVoiceInteraction(Landroid/os/IBinder;)V
Landroid/service/voice/VoiceInteractionManagerInternal;->supportsLocalVoiceInteraction()Z
-Landroid/service/voice/VoiceInteractionService$MyHandler;
-Landroid/service/voice/VoiceInteractionService$MyHandler;-><init>()V
Landroid/service/voice/VoiceInteractionService;->getKeyphraseEnrollmentInfo()Landroid/hardware/soundtrigger/KeyphraseEnrollmentInfo;
Landroid/service/voice/VoiceInteractionService;->mHandler:Landroid/service/voice/VoiceInteractionService$MyHandler;
Landroid/service/voice/VoiceInteractionService;->mHotwordDetector:Landroid/service/voice/AlwaysOnHotwordDetector;
@@ -69175,7 +64527,6 @@
Landroid/service/voice/VoiceInteractionService;->onShutdownInternal()V
Landroid/service/voice/VoiceInteractionService;->onSoundModelsChangedInternal()V
Landroid/service/voice/VoiceInteractionService;->safelyShutdownHotwordDetector()V
-Landroid/service/voice/VoiceInteractionServiceInfo;
Landroid/service/voice/VoiceInteractionServiceInfo;-><init>(Landroid/content/pm/PackageManager;Landroid/content/ComponentName;)V
Landroid/service/voice/VoiceInteractionServiceInfo;-><init>(Landroid/content/pm/PackageManager;Landroid/content/ComponentName;I)V
Landroid/service/voice/VoiceInteractionServiceInfo;-><init>(Landroid/content/pm/PackageManager;Landroid/content/pm/ServiceInfo;)V
@@ -69210,8 +64561,6 @@
Landroid/service/voice/VoiceInteractionSession$ConfirmationRequest;-><init>(Ljava/lang/String;ILcom/android/internal/app/IVoiceInteractorCallback;Landroid/service/voice/VoiceInteractionSession;Landroid/app/VoiceInteractor$Prompt;Landroid/os/Bundle;)V
Landroid/service/voice/VoiceInteractionSession$ConfirmationRequest;->dump(Ljava/lang/String;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
Landroid/service/voice/VoiceInteractionSession$ConfirmationRequest;->mPrompt:Landroid/app/VoiceInteractor$Prompt;
-Landroid/service/voice/VoiceInteractionSession$MyCallbacks;
-Landroid/service/voice/VoiceInteractionSession$MyCallbacks;-><init>()V
Landroid/service/voice/VoiceInteractionSession$MyCallbacks;->executeMessage(Landroid/os/Message;)V
Landroid/service/voice/VoiceInteractionSession$MyCallbacks;->onBackPressed()V
Landroid/service/voice/VoiceInteractionSession$PickOptionRequest;-><init>(Ljava/lang/String;ILcom/android/internal/app/IVoiceInteractorCallback;Landroid/service/voice/VoiceInteractionSession;Landroid/app/VoiceInteractor$Prompt;[Landroid/app/VoiceInteractor$PickOptionRequest$Option;Landroid/os/Bundle;)V
@@ -69290,31 +64639,24 @@
Landroid/service/voice/VoiceInteractionSessionService;->mSession:Landroid/service/voice/VoiceInteractionSession;
Landroid/service/voice/VoiceInteractionSessionService;->MSG_NEW_SESSION:I
Landroid/service/voice/VoiceInteractionSessionService;->mSystemService:Lcom/android/internal/app/IVoiceInteractionManagerService;
-Landroid/service/vr/IPersistentVrStateCallbacks$Stub$Proxy;
Landroid/service/vr/IPersistentVrStateCallbacks$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/vr/IPersistentVrStateCallbacks$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/service/vr/IPersistentVrStateCallbacks$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/service/vr/IPersistentVrStateCallbacks$Stub$Proxy;->onPersistentVrStateChanged(Z)V
-Landroid/service/vr/IPersistentVrStateCallbacks$Stub;
Landroid/service/vr/IPersistentVrStateCallbacks$Stub;-><init>()V
Landroid/service/vr/IPersistentVrStateCallbacks$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/vr/IPersistentVrStateCallbacks;
Landroid/service/vr/IPersistentVrStateCallbacks$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/service/vr/IPersistentVrStateCallbacks$Stub;->TRANSACTION_onPersistentVrStateChanged:I
-Landroid/service/vr/IPersistentVrStateCallbacks;
Landroid/service/vr/IPersistentVrStateCallbacks;->onPersistentVrStateChanged(Z)V
-Landroid/service/vr/IVrListener$Stub$Proxy;
Landroid/service/vr/IVrListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/vr/IVrListener$Stub$Proxy;->focusedActivityChanged(Landroid/content/ComponentName;ZI)V
Landroid/service/vr/IVrListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/service/vr/IVrListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/service/vr/IVrListener$Stub;
Landroid/service/vr/IVrListener$Stub;-><init>()V
Landroid/service/vr/IVrListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/vr/IVrListener;
Landroid/service/vr/IVrListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/service/vr/IVrListener$Stub;->TRANSACTION_focusedActivityChanged:I
-Landroid/service/vr/IVrListener;
Landroid/service/vr/IVrListener;->focusedActivityChanged(Landroid/content/ComponentName;ZI)V
-Landroid/service/vr/IVrManager$Stub$Proxy;
Landroid/service/vr/IVrManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/vr/IVrManager$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/service/vr/IVrManager$Stub$Proxy;->getPersistentVrModeEnabled()Z
@@ -69330,7 +64672,6 @@
Landroid/service/vr/IVrManager$Stub$Proxy;->setVrInputMethod(Landroid/content/ComponentName;)V
Landroid/service/vr/IVrManager$Stub$Proxy;->unregisterListener(Landroid/service/vr/IVrStateCallbacks;)V
Landroid/service/vr/IVrManager$Stub$Proxy;->unregisterPersistentVrStateListener(Landroid/service/vr/IPersistentVrStateCallbacks;)V
-Landroid/service/vr/IVrManager$Stub;
Landroid/service/vr/IVrManager$Stub;-><init>()V
Landroid/service/vr/IVrManager$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/service/vr/IVrManager$Stub;->TRANSACTION_getPersistentVrModeEnabled:I
@@ -69345,7 +64686,6 @@
Landroid/service/vr/IVrManager$Stub;->TRANSACTION_setVrInputMethod:I
Landroid/service/vr/IVrManager$Stub;->TRANSACTION_unregisterListener:I
Landroid/service/vr/IVrManager$Stub;->TRANSACTION_unregisterPersistentVrStateListener:I
-Landroid/service/vr/IVrManager;
Landroid/service/vr/IVrManager;->getPersistentVrModeEnabled()Z
Landroid/service/vr/IVrManager;->registerListener(Landroid/service/vr/IVrStateCallbacks;)V
Landroid/service/vr/IVrManager;->registerPersistentVrStateListener(Landroid/service/vr/IPersistentVrStateCallbacks;)V
@@ -69356,24 +64696,18 @@
Landroid/service/vr/IVrManager;->setVrInputMethod(Landroid/content/ComponentName;)V
Landroid/service/vr/IVrManager;->unregisterListener(Landroid/service/vr/IVrStateCallbacks;)V
Landroid/service/vr/IVrManager;->unregisterPersistentVrStateListener(Landroid/service/vr/IPersistentVrStateCallbacks;)V
-Landroid/service/vr/IVrStateCallbacks$Stub$Proxy;
Landroid/service/vr/IVrStateCallbacks$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/vr/IVrStateCallbacks$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/service/vr/IVrStateCallbacks$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/service/vr/IVrStateCallbacks$Stub$Proxy;->onVrStateChanged(Z)V
-Landroid/service/vr/IVrStateCallbacks$Stub;
Landroid/service/vr/IVrStateCallbacks$Stub;-><init>()V
Landroid/service/vr/IVrStateCallbacks$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/vr/IVrStateCallbacks;
Landroid/service/vr/IVrStateCallbacks$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/service/vr/IVrStateCallbacks$Stub;->TRANSACTION_onVrStateChanged:I
-Landroid/service/vr/IVrStateCallbacks;
Landroid/service/vr/IVrStateCallbacks;->onVrStateChanged(Z)V
-Landroid/service/vr/VrListenerService$VrListenerHandler;
-Landroid/service/vr/VrListenerService$VrListenerHandler;-><init>(Landroid/os/Looper;)V
Landroid/service/vr/VrListenerService;->mBinder:Landroid/service/vr/IVrListener$Stub;
Landroid/service/vr/VrListenerService;->mHandler:Landroid/os/Handler;
Landroid/service/vr/VrListenerService;->MSG_ON_CURRENT_VR_ACTIVITY_CHANGED:I
-Landroid/service/wallpaper/IWallpaperConnection$Stub$Proxy;
Landroid/service/wallpaper/IWallpaperConnection$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/wallpaper/IWallpaperConnection$Stub$Proxy;->attachEngine(Landroid/service/wallpaper/IWallpaperEngine;)V
Landroid/service/wallpaper/IWallpaperConnection$Stub$Proxy;->engineShown(Landroid/service/wallpaper/IWallpaperEngine;)V
@@ -69381,19 +64715,16 @@
Landroid/service/wallpaper/IWallpaperConnection$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/service/wallpaper/IWallpaperConnection$Stub$Proxy;->onWallpaperColorsChanged(Landroid/app/WallpaperColors;)V
Landroid/service/wallpaper/IWallpaperConnection$Stub$Proxy;->setWallpaper(Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;
-Landroid/service/wallpaper/IWallpaperConnection$Stub;
Landroid/service/wallpaper/IWallpaperConnection$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/wallpaper/IWallpaperConnection;
Landroid/service/wallpaper/IWallpaperConnection$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/service/wallpaper/IWallpaperConnection$Stub;->TRANSACTION_attachEngine:I
Landroid/service/wallpaper/IWallpaperConnection$Stub;->TRANSACTION_engineShown:I
Landroid/service/wallpaper/IWallpaperConnection$Stub;->TRANSACTION_onWallpaperColorsChanged:I
Landroid/service/wallpaper/IWallpaperConnection$Stub;->TRANSACTION_setWallpaper:I
-Landroid/service/wallpaper/IWallpaperConnection;
Landroid/service/wallpaper/IWallpaperConnection;->attachEngine(Landroid/service/wallpaper/IWallpaperEngine;)V
Landroid/service/wallpaper/IWallpaperConnection;->engineShown(Landroid/service/wallpaper/IWallpaperEngine;)V
Landroid/service/wallpaper/IWallpaperConnection;->onWallpaperColorsChanged(Landroid/app/WallpaperColors;)V
Landroid/service/wallpaper/IWallpaperConnection;->setWallpaper(Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;
-Landroid/service/wallpaper/IWallpaperEngine$Stub$Proxy;
Landroid/service/wallpaper/IWallpaperEngine$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/wallpaper/IWallpaperEngine$Stub$Proxy;->destroy()V
Landroid/service/wallpaper/IWallpaperEngine$Stub$Proxy;->dispatchPointer(Landroid/view/MotionEvent;)V
@@ -69405,7 +64736,6 @@
Landroid/service/wallpaper/IWallpaperEngine$Stub$Proxy;->setDisplayPadding(Landroid/graphics/Rect;)V
Landroid/service/wallpaper/IWallpaperEngine$Stub$Proxy;->setInAmbientMode(ZZ)V
Landroid/service/wallpaper/IWallpaperEngine$Stub$Proxy;->setVisibility(Z)V
-Landroid/service/wallpaper/IWallpaperEngine$Stub;
Landroid/service/wallpaper/IWallpaperEngine$Stub;-><init>()V
Landroid/service/wallpaper/IWallpaperEngine$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/wallpaper/IWallpaperEngine;
Landroid/service/wallpaper/IWallpaperEngine$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -69417,25 +64747,18 @@
Landroid/service/wallpaper/IWallpaperEngine$Stub;->TRANSACTION_setDisplayPadding:I
Landroid/service/wallpaper/IWallpaperEngine$Stub;->TRANSACTION_setInAmbientMode:I
Landroid/service/wallpaper/IWallpaperEngine$Stub;->TRANSACTION_setVisibility:I
-Landroid/service/wallpaper/IWallpaperEngine;
Landroid/service/wallpaper/IWallpaperEngine;->requestWallpaperColors()V
Landroid/service/wallpaper/IWallpaperEngine;->setDisplayPadding(Landroid/graphics/Rect;)V
Landroid/service/wallpaper/IWallpaperEngine;->setInAmbientMode(ZZ)V
-Landroid/service/wallpaper/IWallpaperService$Stub$Proxy;
Landroid/service/wallpaper/IWallpaperService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/service/wallpaper/IWallpaperService$Stub$Proxy;->attach(Landroid/service/wallpaper/IWallpaperConnection;Landroid/os/IBinder;IZIILandroid/graphics/Rect;)V
Landroid/service/wallpaper/IWallpaperService$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/service/wallpaper/IWallpaperService$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/service/wallpaper/IWallpaperService$Stub;
Landroid/service/wallpaper/IWallpaperService$Stub;-><init>()V
Landroid/service/wallpaper/IWallpaperService$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/service/wallpaper/IWallpaperService$Stub;->TRANSACTION_attach:I
-Landroid/service/wallpaper/IWallpaperService;
Landroid/service/wallpaper/IWallpaperService;->attach(Landroid/service/wallpaper/IWallpaperConnection;Landroid/os/IBinder;IZIILandroid/graphics/Rect;)V
-Landroid/service/wallpaper/WallpaperService$Engine$WallpaperInputEventReceiver;
-Landroid/service/wallpaper/WallpaperService$Engine$WallpaperInputEventReceiver;-><init>(Landroid/view/InputChannel;Landroid/os/Looper;)V
Landroid/service/wallpaper/WallpaperService$Engine$WallpaperInputEventReceiver;->onInputEvent(Landroid/view/InputEvent;I)V
-Landroid/service/wallpaper/WallpaperService$Engine;-><init>(Ljava/util/function/Supplier;Landroid/os/Handler;)V
Landroid/service/wallpaper/WallpaperService$Engine;->attach(Landroid/service/wallpaper/WallpaperService$IWallpaperEngineWrapper;)V
Landroid/service/wallpaper/WallpaperService$Engine;->detach()V
Landroid/service/wallpaper/WallpaperService$Engine;->dispatchPointer(Landroid/view/MotionEvent;)V
@@ -69513,8 +64836,6 @@
Landroid/service/wallpaper/WallpaperService$Engine;->reportVisibility()V
Landroid/service/wallpaper/WallpaperService$Engine;->setCreated(Z)V
Landroid/service/wallpaper/WallpaperService$Engine;->updateSurface(ZZZ)V
-Landroid/service/wallpaper/WallpaperService$IWallpaperEngineWrapper;
-Landroid/service/wallpaper/WallpaperService$IWallpaperEngineWrapper;-><init>(Landroid/service/wallpaper/WallpaperService;Landroid/service/wallpaper/IWallpaperConnection;Landroid/os/IBinder;IZIILandroid/graphics/Rect;)V
Landroid/service/wallpaper/WallpaperService$IWallpaperEngineWrapper;->destroy()V
Landroid/service/wallpaper/WallpaperService$IWallpaperEngineWrapper;->dispatchPointer(Landroid/view/MotionEvent;)V
Landroid/service/wallpaper/WallpaperService$IWallpaperEngineWrapper;->dispatchWallpaperCommand(Ljava/lang/String;IIILandroid/os/Bundle;)V
@@ -69535,11 +64856,8 @@
Landroid/service/wallpaper/WallpaperService$IWallpaperEngineWrapper;->setDisplayPadding(Landroid/graphics/Rect;)V
Landroid/service/wallpaper/WallpaperService$IWallpaperEngineWrapper;->setInAmbientMode(ZZ)V
Landroid/service/wallpaper/WallpaperService$IWallpaperEngineWrapper;->setVisibility(Z)V
-Landroid/service/wallpaper/WallpaperService$IWallpaperServiceWrapper;
-Landroid/service/wallpaper/WallpaperService$IWallpaperServiceWrapper;-><init>(Landroid/service/wallpaper/WallpaperService;)V
Landroid/service/wallpaper/WallpaperService$IWallpaperServiceWrapper;->attach(Landroid/service/wallpaper/IWallpaperConnection;Landroid/os/IBinder;IZIILandroid/graphics/Rect;)V
Landroid/service/wallpaper/WallpaperService$IWallpaperServiceWrapper;->mTarget:Landroid/service/wallpaper/WallpaperService;
-Landroid/service/wallpaper/WallpaperService$WallpaperCommand;
Landroid/service/wallpaper/WallpaperService$WallpaperCommand;-><init>()V
Landroid/service/wallpaper/WallpaperService$WallpaperCommand;->action:Ljava/lang/String;
Landroid/service/wallpaper/WallpaperService$WallpaperCommand;->extras:Landroid/os/Bundle;
@@ -69563,10 +64881,8 @@
Landroid/service/wallpaper/WallpaperService;->MSG_WINDOW_MOVED:I
Landroid/service/wallpaper/WallpaperService;->NOTIFY_COLORS_RATE_LIMIT_MS:I
Landroid/service/wallpaper/WallpaperService;->TAG:Ljava/lang/String;
-Landroid/service/wallpaper/WallpaperSettingsActivity;
Landroid/service/wallpaper/WallpaperSettingsActivity;-><init>()V
Landroid/service/wallpaper/WallpaperSettingsActivity;->EXTRA_PREVIEW_MODE:Ljava/lang/String;
-Landroid/speech/IRecognitionListener$Stub$Proxy;
Landroid/speech/IRecognitionListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/speech/IRecognitionListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/speech/IRecognitionListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -69579,7 +64895,6 @@
Landroid/speech/IRecognitionListener$Stub$Proxy;->onReadyForSpeech(Landroid/os/Bundle;)V
Landroid/speech/IRecognitionListener$Stub$Proxy;->onResults(Landroid/os/Bundle;)V
Landroid/speech/IRecognitionListener$Stub$Proxy;->onRmsChanged(F)V
-Landroid/speech/IRecognitionListener$Stub;
Landroid/speech/IRecognitionListener$Stub;-><init>()V
Landroid/speech/IRecognitionListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/speech/IRecognitionListener;
Landroid/speech/IRecognitionListener$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -69592,7 +64907,6 @@
Landroid/speech/IRecognitionListener$Stub;->TRANSACTION_onReadyForSpeech:I
Landroid/speech/IRecognitionListener$Stub;->TRANSACTION_onResults:I
Landroid/speech/IRecognitionListener$Stub;->TRANSACTION_onRmsChanged:I
-Landroid/speech/IRecognitionListener;
Landroid/speech/IRecognitionListener;->onBeginningOfSpeech()V
Landroid/speech/IRecognitionListener;->onBufferReceived([B)V
Landroid/speech/IRecognitionListener;->onEndOfSpeech()V
@@ -69601,36 +64915,29 @@
Landroid/speech/IRecognitionListener;->onReadyForSpeech(Landroid/os/Bundle;)V
Landroid/speech/IRecognitionListener;->onResults(Landroid/os/Bundle;)V
Landroid/speech/IRecognitionListener;->onRmsChanged(F)V
-Landroid/speech/IRecognitionService$Stub$Proxy;
Landroid/speech/IRecognitionService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/speech/IRecognitionService$Stub$Proxy;->cancel(Landroid/speech/IRecognitionListener;)V
Landroid/speech/IRecognitionService$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/speech/IRecognitionService$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/speech/IRecognitionService$Stub$Proxy;->startListening(Landroid/content/Intent;Landroid/speech/IRecognitionListener;)V
Landroid/speech/IRecognitionService$Stub$Proxy;->stopListening(Landroid/speech/IRecognitionListener;)V
-Landroid/speech/IRecognitionService$Stub;
Landroid/speech/IRecognitionService$Stub;-><init>()V
Landroid/speech/IRecognitionService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/speech/IRecognitionService;
Landroid/speech/IRecognitionService$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/speech/IRecognitionService$Stub;->TRANSACTION_cancel:I
Landroid/speech/IRecognitionService$Stub;->TRANSACTION_startListening:I
Landroid/speech/IRecognitionService$Stub;->TRANSACTION_stopListening:I
-Landroid/speech/IRecognitionService;
Landroid/speech/IRecognitionService;->cancel(Landroid/speech/IRecognitionListener;)V
Landroid/speech/IRecognitionService;->startListening(Landroid/content/Intent;Landroid/speech/IRecognitionListener;)V
Landroid/speech/IRecognitionService;->stopListening(Landroid/speech/IRecognitionListener;)V
-Landroid/speech/RecognitionService$Callback;-><init>(Landroid/speech/IRecognitionListener;I)V
Landroid/speech/RecognitionService$Callback;->mCallingUid:I
Landroid/speech/RecognitionService$Callback;->mListener:Landroid/speech/IRecognitionListener;
-Landroid/speech/RecognitionService$RecognitionServiceBinder;
Landroid/speech/RecognitionService$RecognitionServiceBinder;-><init>(Landroid/speech/RecognitionService;)V
Landroid/speech/RecognitionService$RecognitionServiceBinder;->cancel(Landroid/speech/IRecognitionListener;)V
Landroid/speech/RecognitionService$RecognitionServiceBinder;->clearReference()V
Landroid/speech/RecognitionService$RecognitionServiceBinder;->mServiceRef:Ljava/lang/ref/WeakReference;
Landroid/speech/RecognitionService$RecognitionServiceBinder;->startListening(Landroid/content/Intent;Landroid/speech/IRecognitionListener;)V
Landroid/speech/RecognitionService$RecognitionServiceBinder;->stopListening(Landroid/speech/IRecognitionListener;)V
-Landroid/speech/RecognitionService$StartListeningArgs;
-Landroid/speech/RecognitionService$StartListeningArgs;-><init>(Landroid/content/Intent;Landroid/speech/IRecognitionListener;I)V
Landroid/speech/RecognitionService$StartListeningArgs;->mCallingUid:I
Landroid/speech/RecognitionService$StartListeningArgs;->mIntent:Landroid/content/Intent;
Landroid/speech/RecognitionService$StartListeningArgs;->mListener:Landroid/speech/IRecognitionListener;
@@ -69650,9 +64957,6 @@
Landroid/speech/RecognitionService;->TAG:Ljava/lang/String;
Landroid/speech/RecognizerIntent;-><init>()V
Landroid/speech/RecognizerResultsIntent;-><init>()V
-Landroid/speech/SpeechRecognizer$Connection;
-Landroid/speech/SpeechRecognizer$Connection;-><init>()V
-Landroid/speech/SpeechRecognizer$InternalListener;
Landroid/speech/SpeechRecognizer$InternalListener;-><init>()V
Landroid/speech/SpeechRecognizer$InternalListener;->mInternalHandler:Landroid/os/Handler;
Landroid/speech/SpeechRecognizer$InternalListener;->mInternalListener:Landroid/speech/RecognitionListener;
@@ -69695,7 +64999,6 @@
Landroid/speech/SpeechRecognizer;->MSG_STOP:I
Landroid/speech/SpeechRecognizer;->putMessage(Landroid/os/Message;)V
Landroid/speech/SpeechRecognizer;->TAG:Ljava/lang/String;
-Landroid/speech/tts/AbstractEventLogger;
Landroid/speech/tts/AbstractEventLogger;-><init>(IILjava/lang/String;)V
Landroid/speech/tts/AbstractEventLogger;->logFailure(I)V
Landroid/speech/tts/AbstractEventLogger;->logSuccess(JJJ)V
@@ -69713,14 +65016,10 @@
Landroid/speech/tts/AbstractEventLogger;->onEngineComplete()V
Landroid/speech/tts/AbstractEventLogger;->onEngineDataReceived()V
Landroid/speech/tts/AbstractEventLogger;->onRequestProcessingStart()V
-Landroid/speech/tts/AbstractSynthesisCallback;
Landroid/speech/tts/AbstractSynthesisCallback;-><init>(Z)V
Landroid/speech/tts/AbstractSynthesisCallback;->errorCodeOnStop()I
Landroid/speech/tts/AbstractSynthesisCallback;->mClientIsUsingV2:Z
Landroid/speech/tts/AbstractSynthesisCallback;->stop()V
-Landroid/speech/tts/AudioPlaybackHandler$MessageLoop;
-Landroid/speech/tts/AudioPlaybackHandler$MessageLoop;-><init>()V
-Landroid/speech/tts/AudioPlaybackHandler;
Landroid/speech/tts/AudioPlaybackHandler;-><init>()V
Landroid/speech/tts/AudioPlaybackHandler;->DBG:Z
Landroid/speech/tts/AudioPlaybackHandler;->enqueue(Landroid/speech/tts/PlaybackQueueItem;)V
@@ -69736,7 +65035,6 @@
Landroid/speech/tts/AudioPlaybackHandler;->stop(Landroid/speech/tts/PlaybackQueueItem;)V
Landroid/speech/tts/AudioPlaybackHandler;->stopForApp(Ljava/lang/Object;)V
Landroid/speech/tts/AudioPlaybackHandler;->TAG:Ljava/lang/String;
-Landroid/speech/tts/AudioPlaybackQueueItem;
Landroid/speech/tts/AudioPlaybackQueueItem;-><init>(Landroid/speech/tts/TextToSpeechService$UtteranceProgressDispatcher;Ljava/lang/Object;Landroid/content/Context;Landroid/net/Uri;Landroid/speech/tts/TextToSpeechService$AudioOutputParams;)V
Landroid/speech/tts/AudioPlaybackQueueItem;->clip(FFF)F
Landroid/speech/tts/AudioPlaybackQueueItem;->finish()V
@@ -69749,14 +65047,12 @@
Landroid/speech/tts/AudioPlaybackQueueItem;->setupVolume(Landroid/media/MediaPlayer;FF)V
Landroid/speech/tts/AudioPlaybackQueueItem;->stop(I)V
Landroid/speech/tts/AudioPlaybackQueueItem;->TAG:Ljava/lang/String;
-Landroid/speech/tts/EventLogger;
Landroid/speech/tts/EventLogger;-><init>(Landroid/speech/tts/SynthesisRequest;IILjava/lang/String;)V
Landroid/speech/tts/EventLogger;->getLocaleString()Ljava/lang/String;
Landroid/speech/tts/EventLogger;->getUtteranceLength()I
Landroid/speech/tts/EventLogger;->logFailure(I)V
Landroid/speech/tts/EventLogger;->logSuccess(JJJ)V
Landroid/speech/tts/EventLogger;->mRequest:Landroid/speech/tts/SynthesisRequest;
-Landroid/speech/tts/EventLogTags;
Landroid/speech/tts/EventLogTags;-><init>()V
Landroid/speech/tts/EventLogTags;->TTS_SPEAK_FAILURE:I
Landroid/speech/tts/EventLogTags;->TTS_SPEAK_SUCCESS:I
@@ -69766,7 +65062,6 @@
Landroid/speech/tts/EventLogTags;->writeTtsSpeakSuccess(Ljava/lang/String;IIILjava/lang/String;IIJJJ)V
Landroid/speech/tts/EventLogTags;->writeTtsV2SpeakFailure(Ljava/lang/String;IIILjava/lang/String;I)V
Landroid/speech/tts/EventLogTags;->writeTtsV2SpeakSuccess(Ljava/lang/String;IIILjava/lang/String;JJJ)V
-Landroid/speech/tts/ITextToSpeechCallback$Stub$Proxy;
Landroid/speech/tts/ITextToSpeechCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/speech/tts/ITextToSpeechCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/speech/tts/ITextToSpeechCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -69777,7 +65072,6 @@
Landroid/speech/tts/ITextToSpeechCallback$Stub$Proxy;->onStart(Ljava/lang/String;)V
Landroid/speech/tts/ITextToSpeechCallback$Stub$Proxy;->onStop(Ljava/lang/String;Z)V
Landroid/speech/tts/ITextToSpeechCallback$Stub$Proxy;->onSuccess(Ljava/lang/String;)V
-Landroid/speech/tts/ITextToSpeechCallback$Stub;
Landroid/speech/tts/ITextToSpeechCallback$Stub;-><init>()V
Landroid/speech/tts/ITextToSpeechCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/speech/tts/ITextToSpeechCallback;
Landroid/speech/tts/ITextToSpeechCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -69788,7 +65082,6 @@
Landroid/speech/tts/ITextToSpeechCallback$Stub;->TRANSACTION_onStart:I
Landroid/speech/tts/ITextToSpeechCallback$Stub;->TRANSACTION_onStop:I
Landroid/speech/tts/ITextToSpeechCallback$Stub;->TRANSACTION_onSuccess:I
-Landroid/speech/tts/ITextToSpeechCallback;
Landroid/speech/tts/ITextToSpeechCallback;->onAudioAvailable(Ljava/lang/String;[B)V
Landroid/speech/tts/ITextToSpeechCallback;->onBeginSynthesis(Ljava/lang/String;III)V
Landroid/speech/tts/ITextToSpeechCallback;->onError(Ljava/lang/String;I)V
@@ -69796,7 +65089,6 @@
Landroid/speech/tts/ITextToSpeechCallback;->onStart(Ljava/lang/String;)V
Landroid/speech/tts/ITextToSpeechCallback;->onStop(Ljava/lang/String;Z)V
Landroid/speech/tts/ITextToSpeechCallback;->onSuccess(Ljava/lang/String;)V
-Landroid/speech/tts/ITextToSpeechService$Stub$Proxy;
Landroid/speech/tts/ITextToSpeechService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/speech/tts/ITextToSpeechService$Stub$Proxy;->getClientDefaultLanguage()[Ljava/lang/String;
Landroid/speech/tts/ITextToSpeechService$Stub$Proxy;->getDefaultVoiceNameFor(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
@@ -69815,7 +65107,6 @@
Landroid/speech/tts/ITextToSpeechService$Stub$Proxy;->speak(Landroid/os/IBinder;Ljava/lang/CharSequence;ILandroid/os/Bundle;Ljava/lang/String;)I
Landroid/speech/tts/ITextToSpeechService$Stub$Proxy;->stop(Landroid/os/IBinder;)I
Landroid/speech/tts/ITextToSpeechService$Stub$Proxy;->synthesizeToFileDescriptor(Landroid/os/IBinder;Ljava/lang/CharSequence;Landroid/os/ParcelFileDescriptor;Landroid/os/Bundle;Ljava/lang/String;)I
-Landroid/speech/tts/ITextToSpeechService$Stub;
Landroid/speech/tts/ITextToSpeechService$Stub;-><init>()V
Landroid/speech/tts/ITextToSpeechService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/speech/tts/ITextToSpeechService;
Landroid/speech/tts/ITextToSpeechService$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -69834,7 +65125,6 @@
Landroid/speech/tts/ITextToSpeechService$Stub;->TRANSACTION_speak:I
Landroid/speech/tts/ITextToSpeechService$Stub;->TRANSACTION_stop:I
Landroid/speech/tts/ITextToSpeechService$Stub;->TRANSACTION_synthesizeToFileDescriptor:I
-Landroid/speech/tts/ITextToSpeechService;
Landroid/speech/tts/ITextToSpeechService;->getClientDefaultLanguage()[Ljava/lang/String;
Landroid/speech/tts/ITextToSpeechService;->getDefaultVoiceNameFor(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
Landroid/speech/tts/ITextToSpeechService;->getFeaturesForLanguage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;
@@ -69850,14 +65140,12 @@
Landroid/speech/tts/ITextToSpeechService;->speak(Landroid/os/IBinder;Ljava/lang/CharSequence;ILandroid/os/Bundle;Ljava/lang/String;)I
Landroid/speech/tts/ITextToSpeechService;->stop(Landroid/os/IBinder;)I
Landroid/speech/tts/ITextToSpeechService;->synthesizeToFileDescriptor(Landroid/os/IBinder;Ljava/lang/CharSequence;Landroid/os/ParcelFileDescriptor;Landroid/os/Bundle;Ljava/lang/String;)I
-Landroid/speech/tts/PlaybackQueueItem;
Landroid/speech/tts/PlaybackQueueItem;-><init>(Landroid/speech/tts/TextToSpeechService$UtteranceProgressDispatcher;Ljava/lang/Object;)V
Landroid/speech/tts/PlaybackQueueItem;->getCallerIdentity()Ljava/lang/Object;
Landroid/speech/tts/PlaybackQueueItem;->getDispatcher()Landroid/speech/tts/TextToSpeechService$UtteranceProgressDispatcher;
Landroid/speech/tts/PlaybackQueueItem;->mCallerIdentity:Ljava/lang/Object;
Landroid/speech/tts/PlaybackQueueItem;->mDispatcher:Landroid/speech/tts/TextToSpeechService$UtteranceProgressDispatcher;
Landroid/speech/tts/PlaybackQueueItem;->stop(I)V
-Landroid/speech/tts/SynthesisCallback$SupportedAudioFormat;
Landroid/speech/tts/SynthesisRequest;->mCallerUid:I
Landroid/speech/tts/SynthesisRequest;->mCountry:Ljava/lang/String;
Landroid/speech/tts/SynthesisRequest;->mLanguage:Ljava/lang/String;
@@ -69872,15 +65160,9 @@
Landroid/speech/tts/SynthesisRequest;->setPitch(I)V
Landroid/speech/tts/SynthesisRequest;->setSpeechRate(I)V
Landroid/speech/tts/SynthesisRequest;->setVoiceName(Ljava/lang/String;)V
-Landroid/speech/tts/TextToSpeech$Action;
Landroid/speech/tts/TextToSpeech$Action;->run(Landroid/speech/tts/ITextToSpeechService;)Ljava/lang/Object;
-Landroid/speech/tts/TextToSpeech$Connection$SetupConnectionAsyncTask;
-Landroid/speech/tts/TextToSpeech$Connection$SetupConnectionAsyncTask;-><init>(Landroid/content/ComponentName;)V
-Landroid/speech/tts/TextToSpeech$Connection$SetupConnectionAsyncTask;->doInBackground([[Ljava/lang/Void;)Ljava/lang/Integer;
Landroid/speech/tts/TextToSpeech$Connection$SetupConnectionAsyncTask;->mName:Landroid/content/ComponentName;
Landroid/speech/tts/TextToSpeech$Connection$SetupConnectionAsyncTask;->onPostExecute(Ljava/lang/Integer;)V
-Landroid/speech/tts/TextToSpeech$Connection;
-Landroid/speech/tts/TextToSpeech$Connection;-><init>()V
Landroid/speech/tts/TextToSpeech$Connection;->clearServiceConnection()Z
Landroid/speech/tts/TextToSpeech$Connection;->disconnect()V
Landroid/speech/tts/TextToSpeech$Connection;->getCallerIdentity()Landroid/os/IBinder;
@@ -69906,7 +65188,6 @@
Landroid/speech/tts/TextToSpeech$Engine;->USE_DEFAULTS:I
Landroid/speech/tts/TextToSpeech$EngineInfo;->priority:I
Landroid/speech/tts/TextToSpeech$EngineInfo;->system:Z
-Landroid/speech/tts/TextToSpeech$Error;
Landroid/speech/tts/TextToSpeech;-><init>(Landroid/content/Context;Landroid/speech/tts/TextToSpeech$OnInitListener;Ljava/lang/String;Ljava/lang/String;Z)V
Landroid/speech/tts/TextToSpeech;->connectToEngine(Ljava/lang/String;)Z
Landroid/speech/tts/TextToSpeech;->convertParamsHashMaptoBundle(Ljava/util/HashMap;)Landroid/os/Bundle;
@@ -69938,7 +65219,6 @@
Landroid/speech/tts/TextToSpeech;->verifyFloatBundleParam(Landroid/os/Bundle;Ljava/lang/String;)Z
Landroid/speech/tts/TextToSpeech;->verifyIntegerBundleParam(Landroid/os/Bundle;Ljava/lang/String;)Z
Landroid/speech/tts/TextToSpeech;->verifyStringBundleParam(Landroid/os/Bundle;Ljava/lang/String;)Z
-Landroid/speech/tts/TextToSpeechService$AudioOutputParams;
Landroid/speech/tts/TextToSpeechService$AudioOutputParams;-><init>()V
Landroid/speech/tts/TextToSpeechService$AudioOutputParams;-><init>(IFFLandroid/media/AudioAttributes;)V
Landroid/speech/tts/TextToSpeechService$AudioOutputParams;->createFromParamsBundle(Landroid/os/Bundle;Z)Landroid/speech/tts/TextToSpeechService$AudioOutputParams;
@@ -69946,16 +65226,12 @@
Landroid/speech/tts/TextToSpeechService$AudioOutputParams;->mPan:F
Landroid/speech/tts/TextToSpeechService$AudioOutputParams;->mSessionId:I
Landroid/speech/tts/TextToSpeechService$AudioOutputParams;->mVolume:F
-Landroid/speech/tts/TextToSpeechService$AudioSpeechItem;
-Landroid/speech/tts/TextToSpeechService$AudioSpeechItem;-><init>(Ljava/lang/Object;IILandroid/os/Bundle;Ljava/lang/String;Landroid/net/Uri;)V
Landroid/speech/tts/TextToSpeechService$AudioSpeechItem;->getAudioParams()Landroid/speech/tts/TextToSpeechService$AudioOutputParams;
Landroid/speech/tts/TextToSpeechService$AudioSpeechItem;->getUtteranceId()Ljava/lang/String;
Landroid/speech/tts/TextToSpeechService$AudioSpeechItem;->isValid()Z
Landroid/speech/tts/TextToSpeechService$AudioSpeechItem;->mItem:Landroid/speech/tts/AudioPlaybackQueueItem;
Landroid/speech/tts/TextToSpeechService$AudioSpeechItem;->playImpl()V
Landroid/speech/tts/TextToSpeechService$AudioSpeechItem;->stopImpl()V
-Landroid/speech/tts/TextToSpeechService$CallbackMap;
-Landroid/speech/tts/TextToSpeechService$CallbackMap;-><init>()V
Landroid/speech/tts/TextToSpeechService$CallbackMap;->dispatchOnAudioAvailable(Ljava/lang/Object;Ljava/lang/String;[B)V
Landroid/speech/tts/TextToSpeechService$CallbackMap;->dispatchOnBeginSynthesis(Ljava/lang/Object;Ljava/lang/String;III)V
Landroid/speech/tts/TextToSpeechService$CallbackMap;->dispatchOnError(Ljava/lang/Object;Ljava/lang/String;I)V
@@ -69967,30 +65243,22 @@
Landroid/speech/tts/TextToSpeechService$CallbackMap;->mCallerToCallback:Ljava/util/HashMap;
Landroid/speech/tts/TextToSpeechService$CallbackMap;->onCallbackDied(Landroid/speech/tts/ITextToSpeechCallback;Ljava/lang/Object;)V
Landroid/speech/tts/TextToSpeechService$CallbackMap;->setCallback(Landroid/os/IBinder;Landroid/speech/tts/ITextToSpeechCallback;)V
-Landroid/speech/tts/TextToSpeechService$LoadLanguageItem;
-Landroid/speech/tts/TextToSpeechService$LoadLanguageItem;-><init>(Ljava/lang/Object;IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
Landroid/speech/tts/TextToSpeechService$LoadLanguageItem;->isValid()Z
Landroid/speech/tts/TextToSpeechService$LoadLanguageItem;->mCountry:Ljava/lang/String;
Landroid/speech/tts/TextToSpeechService$LoadLanguageItem;->mLanguage:Ljava/lang/String;
Landroid/speech/tts/TextToSpeechService$LoadLanguageItem;->mVariant:Ljava/lang/String;
Landroid/speech/tts/TextToSpeechService$LoadLanguageItem;->playImpl()V
Landroid/speech/tts/TextToSpeechService$LoadLanguageItem;->stopImpl()V
-Landroid/speech/tts/TextToSpeechService$LoadVoiceItem;
-Landroid/speech/tts/TextToSpeechService$LoadVoiceItem;-><init>(Ljava/lang/Object;IILjava/lang/String;)V
Landroid/speech/tts/TextToSpeechService$LoadVoiceItem;->isValid()Z
Landroid/speech/tts/TextToSpeechService$LoadVoiceItem;->mVoiceName:Ljava/lang/String;
Landroid/speech/tts/TextToSpeechService$LoadVoiceItem;->playImpl()V
Landroid/speech/tts/TextToSpeechService$LoadVoiceItem;->stopImpl()V
-Landroid/speech/tts/TextToSpeechService$SilenceSpeechItem;
-Landroid/speech/tts/TextToSpeechService$SilenceSpeechItem;-><init>(Ljava/lang/Object;IILjava/lang/String;J)V
Landroid/speech/tts/TextToSpeechService$SilenceSpeechItem;->getUtteranceId()Ljava/lang/String;
Landroid/speech/tts/TextToSpeechService$SilenceSpeechItem;->isValid()Z
Landroid/speech/tts/TextToSpeechService$SilenceSpeechItem;->mDuration:J
Landroid/speech/tts/TextToSpeechService$SilenceSpeechItem;->mUtteranceId:Ljava/lang/String;
Landroid/speech/tts/TextToSpeechService$SilenceSpeechItem;->playImpl()V
Landroid/speech/tts/TextToSpeechService$SilenceSpeechItem;->stopImpl()V
-Landroid/speech/tts/TextToSpeechService$SpeechItem;
-Landroid/speech/tts/TextToSpeechService$SpeechItem;-><init>(Ljava/lang/Object;II)V
Landroid/speech/tts/TextToSpeechService$SpeechItem;->getCallerIdentity()Ljava/lang/Object;
Landroid/speech/tts/TextToSpeechService$SpeechItem;->getCallerPid()I
Landroid/speech/tts/TextToSpeechService$SpeechItem;->getCallerUid()I
@@ -70006,8 +65274,6 @@
Landroid/speech/tts/TextToSpeechService$SpeechItem;->playImpl()V
Landroid/speech/tts/TextToSpeechService$SpeechItem;->stop()V
Landroid/speech/tts/TextToSpeechService$SpeechItem;->stopImpl()V
-Landroid/speech/tts/TextToSpeechService$SynthesisSpeechItem;
-Landroid/speech/tts/TextToSpeechService$SynthesisSpeechItem;-><init>(Ljava/lang/Object;IILandroid/os/Bundle;Ljava/lang/String;Ljava/lang/CharSequence;)V
Landroid/speech/tts/TextToSpeechService$SynthesisSpeechItem;->createSynthesisCallback()Landroid/speech/tts/AbstractSynthesisCallback;
Landroid/speech/tts/TextToSpeechService$SynthesisSpeechItem;->getCountry()Ljava/lang/String;
Landroid/speech/tts/TextToSpeechService$SynthesisSpeechItem;->getLanguage()Ljava/lang/String;
@@ -70024,13 +65290,9 @@
Landroid/speech/tts/TextToSpeechService$SynthesisSpeechItem;->playImpl()V
Landroid/speech/tts/TextToSpeechService$SynthesisSpeechItem;->setRequestParams(Landroid/speech/tts/SynthesisRequest;)V
Landroid/speech/tts/TextToSpeechService$SynthesisSpeechItem;->stopImpl()V
-Landroid/speech/tts/TextToSpeechService$SynthesisToFileOutputStreamSpeechItem;
-Landroid/speech/tts/TextToSpeechService$SynthesisToFileOutputStreamSpeechItem;-><init>(Ljava/lang/Object;IILandroid/os/Bundle;Ljava/lang/String;Ljava/lang/CharSequence;Ljava/io/FileOutputStream;)V
Landroid/speech/tts/TextToSpeechService$SynthesisToFileOutputStreamSpeechItem;->createSynthesisCallback()Landroid/speech/tts/AbstractSynthesisCallback;
Landroid/speech/tts/TextToSpeechService$SynthesisToFileOutputStreamSpeechItem;->mFileOutputStream:Ljava/io/FileOutputStream;
Landroid/speech/tts/TextToSpeechService$SynthesisToFileOutputStreamSpeechItem;->playImpl()V
-Landroid/speech/tts/TextToSpeechService$SynthHandler;
-Landroid/speech/tts/TextToSpeechService$SynthHandler;-><init>(Landroid/os/Looper;)V
Landroid/speech/tts/TextToSpeechService$SynthHandler;->endFlushingSpeechItems(Ljava/lang/Object;)V
Landroid/speech/tts/TextToSpeechService$SynthHandler;->enqueueSpeechItem(ILandroid/speech/tts/TextToSpeechService$SpeechItem;)I
Landroid/speech/tts/TextToSpeechService$SynthHandler;->getCurrentSpeechItem()Landroid/speech/tts/TextToSpeechService$SpeechItem;
@@ -70046,11 +65308,8 @@
Landroid/speech/tts/TextToSpeechService$SynthHandler;->startFlushingSpeechItems(Ljava/lang/Object;)V
Landroid/speech/tts/TextToSpeechService$SynthHandler;->stopAll()I
Landroid/speech/tts/TextToSpeechService$SynthHandler;->stopForApp(Ljava/lang/Object;)I
-Landroid/speech/tts/TextToSpeechService$SynthThread;
-Landroid/speech/tts/TextToSpeechService$SynthThread;-><init>()V
Landroid/speech/tts/TextToSpeechService$SynthThread;->broadcastTtsQueueProcessingCompleted()V
Landroid/speech/tts/TextToSpeechService$SynthThread;->mFirstIdle:Z
-Landroid/speech/tts/TextToSpeechService$UtteranceProgressDispatcher;
Landroid/speech/tts/TextToSpeechService$UtteranceProgressDispatcher;->dispatchOnAudioAvailable([B)V
Landroid/speech/tts/TextToSpeechService$UtteranceProgressDispatcher;->dispatchOnBeginSynthesis(III)V
Landroid/speech/tts/TextToSpeechService$UtteranceProgressDispatcher;->dispatchOnError(I)V
@@ -70058,8 +65317,6 @@
Landroid/speech/tts/TextToSpeechService$UtteranceProgressDispatcher;->dispatchOnStart()V
Landroid/speech/tts/TextToSpeechService$UtteranceProgressDispatcher;->dispatchOnStop()V
Landroid/speech/tts/TextToSpeechService$UtteranceProgressDispatcher;->dispatchOnSuccess()V
-Landroid/speech/tts/TextToSpeechService$UtteranceSpeechItem;
-Landroid/speech/tts/TextToSpeechService$UtteranceSpeechItem;-><init>(Ljava/lang/Object;II)V
Landroid/speech/tts/TextToSpeechService$UtteranceSpeechItem;->dispatchOnAudioAvailable([B)V
Landroid/speech/tts/TextToSpeechService$UtteranceSpeechItem;->dispatchOnBeginSynthesis(III)V
Landroid/speech/tts/TextToSpeechService$UtteranceSpeechItem;->dispatchOnError(I)V
@@ -70071,8 +65328,6 @@
Landroid/speech/tts/TextToSpeechService$UtteranceSpeechItem;->getIntParam(Landroid/os/Bundle;Ljava/lang/String;I)I
Landroid/speech/tts/TextToSpeechService$UtteranceSpeechItem;->getStringParam(Landroid/os/Bundle;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
Landroid/speech/tts/TextToSpeechService$UtteranceSpeechItem;->getUtteranceId()Ljava/lang/String;
-Landroid/speech/tts/TextToSpeechService$UtteranceSpeechItemWithParams;
-Landroid/speech/tts/TextToSpeechService$UtteranceSpeechItemWithParams;-><init>(Ljava/lang/Object;IILandroid/os/Bundle;Ljava/lang/String;)V
Landroid/speech/tts/TextToSpeechService$UtteranceSpeechItemWithParams;->getAudioParams()Landroid/speech/tts/TextToSpeechService$AudioOutputParams;
Landroid/speech/tts/TextToSpeechService$UtteranceSpeechItemWithParams;->getPitch()I
Landroid/speech/tts/TextToSpeechService$UtteranceSpeechItemWithParams;->getSpeechRate()I
@@ -70095,11 +65350,9 @@
Landroid/speech/tts/TextToSpeechService;->mVoicesInfoLock:Ljava/lang/Object;
Landroid/speech/tts/TextToSpeechService;->SYNTH_THREAD_NAME:Ljava/lang/String;
Landroid/speech/tts/TextToSpeechService;->TAG:Ljava/lang/String;
-Landroid/speech/tts/TtsEngines$EngineInfoComparator;
Landroid/speech/tts/TtsEngines$EngineInfoComparator;-><init>()V
Landroid/speech/tts/TtsEngines$EngineInfoComparator;->compare(Landroid/speech/tts/TextToSpeech$EngineInfo;Landroid/speech/tts/TextToSpeech$EngineInfo;)I
Landroid/speech/tts/TtsEngines$EngineInfoComparator;->INSTANCE:Landroid/speech/tts/TtsEngines$EngineInfoComparator;
-Landroid/speech/tts/TtsEngines;
Landroid/speech/tts/TtsEngines;->DBG:Z
Landroid/speech/tts/TtsEngines;->getDefaultEngine()Ljava/lang/String;
Landroid/speech/tts/TtsEngines;->getEngineInfo(Landroid/content/pm/ResolveInfo;Landroid/content/pm/PackageManager;)Landroid/speech/tts/TextToSpeech$EngineInfo;
@@ -70131,16 +65384,13 @@
Landroid/system/ErrnoException;->functionName:Ljava/lang/String;
Landroid/system/ErrnoException;->rethrowAsIOException()Ljava/io/IOException;
Landroid/system/ErrnoException;->rethrowAsSocketException()Ljava/net/SocketException;
-Landroid/system/GaiException;
Landroid/system/GaiException;-><init>(Ljava/lang/String;I)V
Landroid/system/GaiException;-><init>(Ljava/lang/String;ILjava/lang/Throwable;)V
Landroid/system/GaiException;->error:I
Landroid/system/GaiException;->functionName:Ljava/lang/String;
Landroid/system/GaiException;->rethrowAsUnknownHostException()Ljava/net/UnknownHostException;
Landroid/system/GaiException;->rethrowAsUnknownHostException(Ljava/lang/String;)Ljava/net/UnknownHostException;
-Landroid/system/Int32Ref;
Landroid/system/Int32Ref;-><init>(I)V
-Landroid/system/NetlinkSocketAddress;
Landroid/system/NetlinkSocketAddress;-><init>()V
Landroid/system/NetlinkSocketAddress;-><init>(I)V
Landroid/system/NetlinkSocketAddress;->getGroupsMask()I
@@ -70181,14 +65431,12 @@
Landroid/system/Os;->splice(Ljava/io/FileDescriptor;Landroid/system/Int64Ref;Ljava/io/FileDescriptor;Landroid/system/Int64Ref;JI)J
Landroid/system/Os;->unlink(Ljava/lang/String;)V
Landroid/system/Os;->waitpid(ILandroid/system/Int32Ref;I)I
-Landroid/system/PacketSocketAddress;
Landroid/system/PacketSocketAddress;-><init>(SISB[B)V
Landroid/system/PacketSocketAddress;->sll_addr:[B
Landroid/system/PacketSocketAddress;->sll_hatype:S
Landroid/system/PacketSocketAddress;->sll_ifindex:I
Landroid/system/PacketSocketAddress;->sll_pkttype:B
Landroid/system/PacketSocketAddress;->sll_protocol:S
-Landroid/system/StructAddrinfo;
Landroid/system/StructAddrinfo;-><init>()V
Landroid/system/StructAddrinfo;->ai_addr:Ljava/net/InetAddress;
Landroid/system/StructAddrinfo;->ai_family:I
@@ -70196,32 +65444,26 @@
Landroid/system/StructAddrinfo;->ai_next:Landroid/system/StructAddrinfo;
Landroid/system/StructAddrinfo;->ai_protocol:I
Landroid/system/StructAddrinfo;->ai_socktype:I
-Landroid/system/StructCapUserData;
Landroid/system/StructCapUserData;-><init>(III)V
Landroid/system/StructCapUserData;->effective:I
Landroid/system/StructCapUserData;->inheritable:I
Landroid/system/StructCapUserData;->permitted:I
-Landroid/system/StructCapUserHeader;
Landroid/system/StructCapUserHeader;-><init>(II)V
Landroid/system/StructCapUserHeader;->pid:I
Landroid/system/StructCapUserHeader;->version:I
-Landroid/system/StructFlock;
Landroid/system/StructFlock;-><init>()V
Landroid/system/StructFlock;->l_len:J
Landroid/system/StructFlock;->l_pid:I
Landroid/system/StructFlock;->l_start:J
Landroid/system/StructFlock;->l_type:S
Landroid/system/StructFlock;->l_whence:S
-Landroid/system/StructGroupReq;
Landroid/system/StructGroupReq;-><init>(ILjava/net/InetAddress;)V
Landroid/system/StructGroupReq;->gr_group:Ljava/net/InetAddress;
Landroid/system/StructGroupReq;->gr_interface:I
-Landroid/system/StructIcmpHdr;
Landroid/system/StructIcmpHdr;-><init>()V
Landroid/system/StructIcmpHdr;->getBytes()[B
Landroid/system/StructIcmpHdr;->IcmpEchoHdr(ZI)Landroid/system/StructIcmpHdr;
Landroid/system/StructIcmpHdr;->packet:[B
-Landroid/system/StructIfaddrs;
Landroid/system/StructIfaddrs;-><init>(Ljava/lang/String;ILjava/net/InetAddress;Ljava/net/InetAddress;Ljava/net/InetAddress;[B)V
Landroid/system/StructIfaddrs;->hwaddr:[B
Landroid/system/StructIfaddrs;->ifa_addr:Ljava/net/InetAddress;
@@ -70229,40 +65471,31 @@
Landroid/system/StructIfaddrs;->ifa_flags:I
Landroid/system/StructIfaddrs;->ifa_name:Ljava/lang/String;
Landroid/system/StructIfaddrs;->ifa_netmask:Ljava/net/InetAddress;
-Landroid/system/StructLinger;
Landroid/system/StructLinger;-><init>(II)V
Landroid/system/StructLinger;->isOn()Z
Landroid/system/StructLinger;->l_linger:I
Landroid/system/StructLinger;->l_onoff:I
-Landroid/system/StructPasswd;
Landroid/system/StructPasswd;-><init>(Ljava/lang/String;IILjava/lang/String;Ljava/lang/String;)V
Landroid/system/StructPasswd;->pw_dir:Ljava/lang/String;
Landroid/system/StructPasswd;->pw_gid:I
Landroid/system/StructPasswd;->pw_name:Ljava/lang/String;
Landroid/system/StructPasswd;->pw_shell:Ljava/lang/String;
Landroid/system/StructPasswd;->pw_uid:I
-Landroid/system/StructRlimit;
Landroid/system/StructRlimit;-><init>(JJ)V
Landroid/system/StructRlimit;->rlim_cur:J
Landroid/system/StructRlimit;->rlim_max:J
-Landroid/system/StructTimeval;
Landroid/system/StructTimeval;-><init>(JJ)V
Landroid/system/StructTimeval;->toMillis()J
Landroid/system/StructTimeval;->tv_sec:J
Landroid/system/StructTimeval;->tv_usec:J
-Landroid/system/StructUcred;
Landroid/system/StructUcred;-><init>(III)V
Landroid/system/StructUcred;->gid:I
Landroid/system/StructUcred;->pid:I
Landroid/system/StructUcred;->uid:I
Landroid/telecom/AudioState;->listAppend(Ljava/lang/StringBuffer;Ljava/lang/String;)V
Landroid/telecom/AudioState;->ROUTE_ALL:I
-Landroid/telecom/AuthenticatorService$Authenticator;
-Landroid/telecom/AuthenticatorService$Authenticator;-><init>(Landroid/content/Context;)V
-Landroid/telecom/AuthenticatorService;
Landroid/telecom/AuthenticatorService;-><init>()V
Landroid/telecom/AuthenticatorService;->mAuthenticator:Landroid/telecom/AuthenticatorService$Authenticator;
-Landroid/telecom/Call$Callback$HandoverFailureErrors;
Landroid/telecom/Call$Details;-><init>(Ljava/lang/String;Landroid/net/Uri;ILjava/lang/String;ILandroid/telecom/PhoneAccountHandle;IILandroid/telecom/DisconnectCause;JLandroid/telecom/GatewayInfo;ILandroid/telecom/StatusHints;Landroid/os/Bundle;Landroid/os/Bundle;J)V
Landroid/telecom/Call$Details;->CAPABILITY_CAN_SEND_RESPONSE_VIA_CONNECTION:I
Landroid/telecom/Call$Details;->CAPABILITY_SPEED_UP_MT_AUDIO:I
@@ -70288,7 +65521,6 @@
Landroid/telecom/Call$Details;->mTelecomCallId:Ljava/lang/String;
Landroid/telecom/Call$Details;->mVideoState:I
Landroid/telecom/Call$Details;->PROPERTY_ASSISTED_DIALING_USED:I
-Landroid/telecom/Call$RttCall$RttAudioMode;
Landroid/telecom/Call$RttCall;-><init>(Ljava/lang/String;Ljava/io/InputStreamReader;Ljava/io/OutputStreamWriter;ILandroid/telecom/InCallAdapter;)V
Landroid/telecom/Call$RttCall;->close()V
Landroid/telecom/Call$RttCall;->mInCallAdapter:Landroid/telecom/InCallAdapter;
@@ -70354,7 +65586,6 @@
Landroid/telecom/Call;->putExtra(Ljava/lang/String;Ljava/lang/String;)V
Landroid/telecom/Call;->putExtra(Ljava/lang/String;Z)V
Landroid/telecom/Call;->stateToString(I)Ljava/lang/String;
-Landroid/telecom/CallAudioState$CallAudioRoute;
Landroid/telecom/CallAudioState;-><init>(Landroid/telecom/AudioState;)V
Landroid/telecom/CallAudioState;-><init>(Landroid/telecom/CallAudioState;)V
Landroid/telecom/CallAudioState;->activeBluetoothDevice:Landroid/bluetooth/BluetoothDevice;
@@ -70364,7 +65595,6 @@
Landroid/telecom/CallAudioState;->ROUTE_ALL:I
Landroid/telecom/CallAudioState;->supportedBluetoothDevices:Ljava/util/Collection;
Landroid/telecom/CallAudioState;->supportedRouteMask:I
-Landroid/telecom/CallbackRecord;
Landroid/telecom/CallbackRecord;-><init>(Ljava/lang/Object;Landroid/os/Handler;)V
Landroid/telecom/CallbackRecord;->getCallback()Ljava/lang/Object;
Landroid/telecom/CallbackRecord;->getHandler()Landroid/os/Handler;
@@ -70379,13 +65609,10 @@
Landroid/telecom/CallScreeningService$CallResponse;->mShouldRejectCall:Z
Landroid/telecom/CallScreeningService$CallResponse;->mShouldSkipCallLog:Z
Landroid/telecom/CallScreeningService$CallResponse;->mShouldSkipNotification:Z
-Landroid/telecom/CallScreeningService$CallScreeningBinder;
-Landroid/telecom/CallScreeningService$CallScreeningBinder;-><init>()V
Landroid/telecom/CallScreeningService$CallScreeningBinder;->screenCall(Lcom/android/internal/telecom/ICallScreeningAdapter;Landroid/telecom/ParcelableCall;)V
Landroid/telecom/CallScreeningService;->mCallScreeningAdapter:Lcom/android/internal/telecom/ICallScreeningAdapter;
Landroid/telecom/CallScreeningService;->mHandler:Landroid/os/Handler;
Landroid/telecom/CallScreeningService;->MSG_SCREEN_CALL:I
-Landroid/telecom/Conference$Listener;
Landroid/telecom/Conference$Listener;-><init>()V
Landroid/telecom/Conference$Listener;->onConferenceableConnectionsChanged(Landroid/telecom/Conference;Ljava/util/List;)V
Landroid/telecom/Conference$Listener;->onConnectionAdded(Landroid/telecom/Conference;Landroid/telecom/Connection;)V
@@ -70438,7 +65665,6 @@
Landroid/telecom/Conference;->setState(I)V
Landroid/telecom/Conference;->setTelecomCallId(Ljava/lang/String;)V
Landroid/telecom/Conferenceable;-><init>()V
-Landroid/telecom/ConferenceParticipant;
Landroid/telecom/ConferenceParticipant;-><init>(Landroid/net/Uri;Ljava/lang/String;Landroid/net/Uri;I)V
Landroid/telecom/ConferenceParticipant;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/telecom/ConferenceParticipant;->getDisplayName()Ljava/lang/String;
@@ -70449,11 +65675,9 @@
Landroid/telecom/ConferenceParticipant;->mEndpoint:Landroid/net/Uri;
Landroid/telecom/ConferenceParticipant;->mHandle:Landroid/net/Uri;
Landroid/telecom/ConferenceParticipant;->mState:I
-Landroid/telecom/Connection$FailureSignalingConnection;
Landroid/telecom/Connection$FailureSignalingConnection;-><init>(Landroid/telecom/DisconnectCause;)V
Landroid/telecom/Connection$FailureSignalingConnection;->checkImmutable()V
Landroid/telecom/Connection$FailureSignalingConnection;->mImmutable:Z
-Landroid/telecom/Connection$Listener;
Landroid/telecom/Connection$Listener;-><init>()V
Landroid/telecom/Connection$Listener;->onAddressChanged(Landroid/telecom/Connection;Landroid/net/Uri;I)V
Landroid/telecom/Connection$Listener;->onAudioModeIsVoipChanged(Landroid/telecom/Connection;Z)V
@@ -70495,8 +65719,6 @@
Landroid/telecom/Connection$RttTextStream;->mPipeToInCall:Ljava/io/OutputStreamWriter;
Landroid/telecom/Connection$RttTextStream;->mReadBuffer:[C
Landroid/telecom/Connection$RttTextStream;->READ_BUFFER_SIZE:I
-Landroid/telecom/Connection$VideoProvider$VideoProviderBinder;
-Landroid/telecom/Connection$VideoProvider$VideoProviderBinder;-><init>()V
Landroid/telecom/Connection$VideoProvider$VideoProviderBinder;->addVideoCallback(Landroid/os/IBinder;)V
Landroid/telecom/Connection$VideoProvider$VideoProviderBinder;->removeVideoCallback(Landroid/os/IBinder;)V
Landroid/telecom/Connection$VideoProvider$VideoProviderBinder;->requestCallDataUsage()V
@@ -70509,9 +65731,6 @@
Landroid/telecom/Connection$VideoProvider$VideoProviderBinder;->setPauseImage(Landroid/net/Uri;)V
Landroid/telecom/Connection$VideoProvider$VideoProviderBinder;->setPreviewSurface(Landroid/view/Surface;)V
Landroid/telecom/Connection$VideoProvider$VideoProviderBinder;->setZoom(F)V
-Landroid/telecom/Connection$VideoProvider$VideoProviderHandler;
-Landroid/telecom/Connection$VideoProvider$VideoProviderHandler;-><init>()V
-Landroid/telecom/Connection$VideoProvider$VideoProviderHandler;-><init>(Landroid/os/Looper;)V
Landroid/telecom/Connection$VideoProvider;->changeCallDataUsage(J)V
Landroid/telecom/Connection$VideoProvider;->getInterface()Lcom/android/internal/telecom/IVideoProvider;
Landroid/telecom/Connection$VideoProvider;->mBinder:Landroid/telecom/Connection$VideoProvider$VideoProviderBinder;
@@ -70636,7 +65855,6 @@
Landroid/telecom/Connection;->toLogSafePhoneNumber(Ljava/lang/String;)Ljava/lang/String;
Landroid/telecom/Connection;->unsetConnectionService(Landroid/telecom/ConnectionService;)V
Landroid/telecom/Connection;->updateConferenceParticipants(Ljava/util/List;)V
-Landroid/telecom/ConnectionRequest$Builder;
Landroid/telecom/ConnectionRequest$Builder;-><init>()V
Landroid/telecom/ConnectionRequest$Builder;->build()Landroid/telecom/ConnectionRequest;
Landroid/telecom/ConnectionRequest$Builder;->mAccountHandle:Landroid/telecom/PhoneAccountHandle;
@@ -70812,7 +66030,6 @@
Landroid/telecom/ConnectionService;->swapConference(Ljava/lang/String;)V
Landroid/telecom/ConnectionService;->triggerConferenceRecalculate()V
Landroid/telecom/ConnectionService;->unhold(Ljava/lang/String;)V
-Landroid/telecom/ConnectionServiceAdapter;
Landroid/telecom/ConnectionServiceAdapter;-><init>()V
Landroid/telecom/ConnectionServiceAdapter;->addAdapter(Lcom/android/internal/telecom/IConnectionServiceAdapter;)V
Landroid/telecom/ConnectionServiceAdapter;->addConferenceCall(Ljava/lang/String;Landroid/telecom/ParcelableConference;)V
@@ -70855,7 +66072,6 @@
Landroid/telecom/ConnectionServiceAdapter;->setStatusHints(Ljava/lang/String;Landroid/telecom/StatusHints;)V
Landroid/telecom/ConnectionServiceAdapter;->setVideoProvider(Ljava/lang/String;Landroid/telecom/Connection$VideoProvider;)V
Landroid/telecom/ConnectionServiceAdapter;->setVideoState(Ljava/lang/String;I)V
-Landroid/telecom/ConnectionServiceAdapterServant;
Landroid/telecom/ConnectionServiceAdapterServant;-><init>(Lcom/android/internal/telecom/IConnectionServiceAdapter;)V
Landroid/telecom/ConnectionServiceAdapterServant;->getStub()Lcom/android/internal/telecom/IConnectionServiceAdapter;
Landroid/telecom/ConnectionServiceAdapterServant;->mDelegate:Lcom/android/internal/telecom/IConnectionServiceAdapter;
@@ -70896,7 +66112,6 @@
Landroid/telecom/ConnectionServiceAdapterServant;->MSG_SET_VIDEO_CALL_PROVIDER:I
Landroid/telecom/ConnectionServiceAdapterServant;->MSG_SET_VIDEO_STATE:I
Landroid/telecom/ConnectionServiceAdapterServant;->mStub:Lcom/android/internal/telecom/IConnectionServiceAdapter;
-Landroid/telecom/DefaultDialerManager;
Landroid/telecom/DefaultDialerManager;-><init>()V
Landroid/telecom/DefaultDialerManager;->filterByIntent(Landroid/content/Context;Ljava/util/List;Landroid/content/Intent;I)Ljava/util/List;
Landroid/telecom/DefaultDialerManager;->getDefaultDialerApplication(Landroid/content/Context;)Ljava/lang/String;
@@ -70918,7 +66133,6 @@
Landroid/telecom/GatewayInfo;->mGatewayAddress:Landroid/net/Uri;
Landroid/telecom/GatewayInfo;->mGatewayProviderPackageName:Ljava/lang/String;
Landroid/telecom/GatewayInfo;->mOriginalAddress:Landroid/net/Uri;
-Landroid/telecom/InCallAdapter;
Landroid/telecom/InCallAdapter;-><init>(Lcom/android/internal/telecom/IInCallAdapter;)V
Landroid/telecom/InCallAdapter;->answerCall(Ljava/lang/String;I)V
Landroid/telecom/InCallAdapter;->conference(Ljava/lang/String;Ljava/lang/String;)V
@@ -70952,8 +66166,6 @@
Landroid/telecom/InCallAdapter;->turnProximitySensorOff(Z)V
Landroid/telecom/InCallAdapter;->turnProximitySensorOn()V
Landroid/telecom/InCallAdapter;->unholdCall(Ljava/lang/String;)V
-Landroid/telecom/InCallService$InCallServiceBinder;
-Landroid/telecom/InCallService$InCallServiceBinder;-><init>()V
Landroid/telecom/InCallService$InCallServiceBinder;->addCall(Landroid/telecom/ParcelableCall;)V
Landroid/telecom/InCallService$InCallServiceBinder;->bringToForeground(Z)V
Landroid/telecom/InCallService$InCallServiceBinder;->onCallAudioStateChanged(Landroid/telecom/CallAudioState;)V
@@ -70987,23 +66199,16 @@
Landroid/telecom/InCallService;->MSG_SILENCE_RINGER:I
Landroid/telecom/InCallService;->MSG_UPDATE_CALL:I
Landroid/telecom/InCallService;->onAudioStateChanged(Landroid/telecom/AudioState;)V
-Landroid/telecom/Log;
Landroid/telecom/Log;-><init>()V
Landroid/telecom/Log;->addEvent(Landroid/telecom/Logging/EventManager$Loggable;Ljava/lang/String;)V
Landroid/telecom/Log;->addEvent(Landroid/telecom/Logging/EventManager$Loggable;Ljava/lang/String;Ljava/lang/Object;)V
-Landroid/telecom/Log;->addEvent(Landroid/telecom/Logging/EventManager$Loggable;Ljava/lang/String;Ljava/lang/String;[[Ljava/lang/Object;)V
Landroid/telecom/Log;->addRequestResponsePair(Landroid/telecom/Logging/EventManager$TimedEventPair;)V
-Landroid/telecom/Log;->buildMessage(Ljava/lang/String;Ljava/lang/String;[[Ljava/lang/Object;)Ljava/lang/String;
Landroid/telecom/Log;->cancelSubsession(Landroid/telecom/Logging/Session;)V
Landroid/telecom/Log;->continueSession(Landroid/telecom/Logging/Session;Ljava/lang/String;)V
Landroid/telecom/Log;->createSubsession()Landroid/telecom/Logging/Session;
-Landroid/telecom/Log;->d(Ljava/lang/Object;Ljava/lang/String;[[Ljava/lang/Object;)V
-Landroid/telecom/Log;->d(Ljava/lang/String;Ljava/lang/String;[[Ljava/lang/Object;)V
Landroid/telecom/Log;->DEBUG:Z
Landroid/telecom/Log;->dumpEvents(Lcom/android/internal/util/IndentingPrintWriter;)V
Landroid/telecom/Log;->dumpEventsTimeline(Lcom/android/internal/util/IndentingPrintWriter;)V
-Landroid/telecom/Log;->e(Ljava/lang/Object;Ljava/lang/Throwable;Ljava/lang/String;[[Ljava/lang/Object;)V
-Landroid/telecom/Log;->e(Ljava/lang/String;Ljava/lang/Throwable;Ljava/lang/String;[[Ljava/lang/Object;)V
Landroid/telecom/Log;->endSession()V
Landroid/telecom/Log;->ERROR:Z
Landroid/telecom/Log;->EVENTS_TO_CACHE:I
@@ -71015,8 +66220,6 @@
Landroid/telecom/Log;->getPrefixFromObject(Ljava/lang/Object;)Ljava/lang/String;
Landroid/telecom/Log;->getSessionId()Ljava/lang/String;
Landroid/telecom/Log;->getSessionManager()Landroid/telecom/Logging/SessionManager;
-Landroid/telecom/Log;->i(Ljava/lang/Object;Ljava/lang/String;[[Ljava/lang/Object;)V
-Landroid/telecom/Log;->i(Ljava/lang/String;Ljava/lang/String;[[Ljava/lang/Object;)V
Landroid/telecom/Log;->INFO:Z
Landroid/telecom/Log;->isLoggable(I)Z
Landroid/telecom/Log;->maybeDisableLogging()V
@@ -71038,17 +66241,8 @@
Landroid/telecom/Log;->sUserExtendedLoggingStopTime:J
Landroid/telecom/Log;->TAG:Ljava/lang/String;
Landroid/telecom/Log;->USER_BUILD:Z
-Landroid/telecom/Log;->v(Ljava/lang/Object;Ljava/lang/String;[[Ljava/lang/Object;)V
-Landroid/telecom/Log;->v(Ljava/lang/String;Ljava/lang/String;[[Ljava/lang/Object;)V
Landroid/telecom/Log;->VERBOSE:Z
-Landroid/telecom/Log;->w(Ljava/lang/Object;Ljava/lang/String;[[Ljava/lang/Object;)V
-Landroid/telecom/Log;->w(Ljava/lang/String;Ljava/lang/String;[[Ljava/lang/Object;)V
Landroid/telecom/Log;->WARN:Z
-Landroid/telecom/Log;->wtf(Ljava/lang/Object;Ljava/lang/String;[[Ljava/lang/Object;)V
-Landroid/telecom/Log;->wtf(Ljava/lang/Object;Ljava/lang/Throwable;Ljava/lang/String;[[Ljava/lang/Object;)V
-Landroid/telecom/Log;->wtf(Ljava/lang/String;Ljava/lang/String;[[Ljava/lang/Object;)V
-Landroid/telecom/Log;->wtf(Ljava/lang/String;Ljava/lang/Throwable;Ljava/lang/String;[[Ljava/lang/Object;)V
-Landroid/telecom/ParcelableCall;
Landroid/telecom/ParcelableCall;-><init>(Ljava/lang/String;ILandroid/telecom/DisconnectCause;Ljava/util/List;IIIJLandroid/net/Uri;ILjava/lang/String;ILandroid/telecom/GatewayInfo;Landroid/telecom/PhoneAccountHandle;ZLcom/android/internal/telecom/IVideoProvider;ZLandroid/telecom/ParcelableRttCall;Ljava/lang/String;Ljava/util/List;Landroid/telecom/StatusHints;ILjava/util/List;Landroid/os/Bundle;Landroid/os/Bundle;J)V
Landroid/telecom/ParcelableCall;->getAccountHandle()Landroid/telecom/PhoneAccountHandle;
Landroid/telecom/ParcelableCall;->getCallerDisplayName()Ljava/lang/String;
@@ -71105,7 +66299,6 @@
Landroid/telecom/ParcelableCallAnalytics$EventTiming;-><init>(Landroid/os/Parcel;)V
Landroid/telecom/ParcelableCallAnalytics$EventTiming;->mName:I
Landroid/telecom/ParcelableCallAnalytics$EventTiming;->mTime:J
-Landroid/telecom/ParcelableCallAnalytics$VideoEvent;
Landroid/telecom/ParcelableCallAnalytics$VideoEvent;-><init>(IJI)V
Landroid/telecom/ParcelableCallAnalytics$VideoEvent;-><init>(Landroid/os/Parcel;)V
Landroid/telecom/ParcelableCallAnalytics$VideoEvent;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -71139,7 +66332,6 @@
Landroid/telecom/ParcelableCallAnalytics;->startTimeMillis:J
Landroid/telecom/ParcelableCallAnalytics;->videoEvents:Ljava/util/List;
Landroid/telecom/ParcelableCallAnalytics;->writeBooleanAsByte(Landroid/os/Parcel;Z)V
-Landroid/telecom/ParcelableConference;
Landroid/telecom/ParcelableConference;-><init>(Landroid/telecom/PhoneAccountHandle;IIILjava/util/List;Lcom/android/internal/telecom/IVideoProvider;IJJLandroid/telecom/StatusHints;Landroid/os/Bundle;)V
Landroid/telecom/ParcelableConference;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/telecom/ParcelableConference;->getConnectElapsedTimeMillis()J
@@ -71164,7 +66356,6 @@
Landroid/telecom/ParcelableConference;->mStatusHints:Landroid/telecom/StatusHints;
Landroid/telecom/ParcelableConference;->mVideoProvider:Lcom/android/internal/telecom/IVideoProvider;
Landroid/telecom/ParcelableConference;->mVideoState:I
-Landroid/telecom/ParcelableConnection;
Landroid/telecom/ParcelableConnection;-><init>(Landroid/telecom/PhoneAccountHandle;IIIILandroid/net/Uri;ILjava/lang/String;ILcom/android/internal/telecom/IVideoProvider;IZZJJLandroid/telecom/StatusHints;Landroid/telecom/DisconnectCause;Ljava/util/List;Landroid/os/Bundle;)V
Landroid/telecom/ParcelableConnection;-><init>(Landroid/telecom/PhoneAccountHandle;IIIILandroid/net/Uri;ILjava/lang/String;ILcom/android/internal/telecom/IVideoProvider;IZZJJLandroid/telecom/StatusHints;Landroid/telecom/DisconnectCause;Ljava/util/List;Landroid/os/Bundle;Ljava/lang/String;)V
Landroid/telecom/ParcelableConnection;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -71208,7 +66399,6 @@
Landroid/telecom/ParcelableConnection;->mSupportedAudioRoutes:I
Landroid/telecom/ParcelableConnection;->mVideoProvider:Lcom/android/internal/telecom/IVideoProvider;
Landroid/telecom/ParcelableConnection;->mVideoState:I
-Landroid/telecom/ParcelableRttCall;
Landroid/telecom/ParcelableRttCall;-><init>(ILandroid/os/ParcelFileDescriptor;Landroid/os/ParcelFileDescriptor;)V
Landroid/telecom/ParcelableRttCall;-><init>(Landroid/os/Parcel;)V
Landroid/telecom/ParcelableRttCall;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -71327,7 +66517,6 @@
Landroid/telecom/RemoteConnection$Callback;->onRttInitiationFailure(Landroid/telecom/RemoteConnection;I)V
Landroid/telecom/RemoteConnection$Callback;->onRttInitiationSuccess(Landroid/telecom/RemoteConnection;)V
Landroid/telecom/RemoteConnection$Callback;->onRttSessionRemotelyTerminated(Landroid/telecom/RemoteConnection;)V
-Landroid/telecom/RemoteConnection$CallbackRecord;
Landroid/telecom/RemoteConnection$CallbackRecord;-><init>(Landroid/telecom/RemoteConnection$Callback;Landroid/os/Handler;)V
Landroid/telecom/RemoteConnection$CallbackRecord;->getCallback()Landroid/telecom/RemoteConnection$Callback;
Landroid/telecom/RemoteConnection$CallbackRecord;->getHandler()Landroid/os/Handler;
@@ -71395,14 +66584,12 @@
Landroid/telecom/RemoteConnection;->setVideoState(I)V
Landroid/telecom/RemoteConnection;->startRtt(Landroid/telecom/Connection$RttTextStream;)V
Landroid/telecom/RemoteConnection;->stopRtt()V
-Landroid/telecom/RemoteConnectionManager;
Landroid/telecom/RemoteConnectionManager;-><init>(Landroid/telecom/ConnectionService;)V
Landroid/telecom/RemoteConnectionManager;->addConnectionService(Landroid/content/ComponentName;Lcom/android/internal/telecom/IConnectionService;)V
Landroid/telecom/RemoteConnectionManager;->conferenceRemoteConnections(Landroid/telecom/RemoteConnection;Landroid/telecom/RemoteConnection;)V
Landroid/telecom/RemoteConnectionManager;->createRemoteConnection(Landroid/telecom/PhoneAccountHandle;Landroid/telecom/ConnectionRequest;Z)Landroid/telecom/RemoteConnection;
Landroid/telecom/RemoteConnectionManager;->mOurConnectionServiceImpl:Landroid/telecom/ConnectionService;
Landroid/telecom/RemoteConnectionManager;->mRemoteConnectionServices:Ljava/util/Map;
-Landroid/telecom/RemoteConnectionService;
Landroid/telecom/RemoteConnectionService;-><init>(Lcom/android/internal/telecom/IConnectionService;Landroid/telecom/ConnectionService;)V
Landroid/telecom/RemoteConnectionService;->createRemoteConnection(Landroid/telecom/PhoneAccountHandle;Landroid/telecom/ConnectionRequest;Z)Landroid/telecom/RemoteConnection;
Landroid/telecom/RemoteConnectionService;->findConferenceForAction(Ljava/lang/String;Ljava/lang/String;)Landroid/telecom/RemoteConference;
@@ -71419,9 +66606,7 @@
Landroid/telecom/RemoteConnectionService;->mServantDelegate:Lcom/android/internal/telecom/IConnectionServiceAdapter;
Landroid/telecom/RemoteConnectionService;->NULL_CONFERENCE:Landroid/telecom/RemoteConference;
Landroid/telecom/RemoteConnectionService;->NULL_CONNECTION:Landroid/telecom/RemoteConnection;
-Landroid/telecom/Response;
Landroid/telecom/Response;->onError(Ljava/lang/Object;ILjava/lang/String;)V
-Landroid/telecom/Response;->onResult(Ljava/lang/Object;[[Ljava/lang/Object;)V
Landroid/telecom/StatusHints;-><init>(Landroid/os/Parcel;)V
Landroid/telecom/StatusHints;->mExtras:Landroid/os/Bundle;
Landroid/telecom/StatusHints;->mIcon:Landroid/graphics/drawable/Icon;
@@ -71461,7 +66646,6 @@
Landroid/telecom/TelecomManager;->TTY_MODE_FULL:I
Landroid/telecom/TelecomManager;->TTY_MODE_HCO:I
Landroid/telecom/TelecomManager;->TTY_MODE_VCO:I
-Landroid/telecom/TelecomProtoEnums;
Landroid/telecom/TelecomProtoEnums;-><init>()V
Landroid/telecom/TelecomProtoEnums;->ABORTED:I
Landroid/telecom/TelecomProtoEnums;->ACTIVE:I
@@ -71487,12 +66671,10 @@
Landroid/telecom/TelecomProtoEnums;->RINGING:I
Landroid/telecom/TelecomProtoEnums;->SELECT_PHONE_ACCOUNT:I
Landroid/telecom/TelecomProtoEnums;->UNKNOWN:I
-Landroid/telecom/TimedEvent;
Landroid/telecom/TimedEvent;-><init>()V
Landroid/telecom/TimedEvent;->averageTimings(Ljava/util/Collection;)Ljava/util/Map;
Landroid/telecom/TimedEvent;->getKey()Ljava/lang/Object;
Landroid/telecom/TimedEvent;->getTime()J
-Landroid/telecom/VideoCallbackServant;
Landroid/telecom/VideoCallbackServant;-><init>(Lcom/android/internal/telecom/IVideoCallback;)V
Landroid/telecom/VideoCallbackServant;->getStub()Lcom/android/internal/telecom/IVideoCallback;
Landroid/telecom/VideoCallbackServant;->mDelegate:Lcom/android/internal/telecom/IVideoCallback;
@@ -71505,8 +66687,6 @@
Landroid/telecom/VideoCallbackServant;->MSG_RECEIVE_SESSION_MODIFY_REQUEST:I
Landroid/telecom/VideoCallbackServant;->MSG_RECEIVE_SESSION_MODIFY_RESPONSE:I
Landroid/telecom/VideoCallbackServant;->mStub:Lcom/android/internal/telecom/IVideoCallback;
-Landroid/telecom/VideoCallImpl$MessageHandler;
-Landroid/telecom/VideoCallImpl$MessageHandler;-><init>(Landroid/os/Looper;)V
Landroid/telecom/VideoCallImpl$MessageHandler;->MSG_CHANGE_CALL_DATA_USAGE:I
Landroid/telecom/VideoCallImpl$MessageHandler;->MSG_CHANGE_CAMERA_CAPABILITIES:I
Landroid/telecom/VideoCallImpl$MessageHandler;->MSG_CHANGE_PEER_DIMENSIONS:I
@@ -71514,8 +66694,6 @@
Landroid/telecom/VideoCallImpl$MessageHandler;->MSG_HANDLE_CALL_SESSION_EVENT:I
Landroid/telecom/VideoCallImpl$MessageHandler;->MSG_RECEIVE_SESSION_MODIFY_REQUEST:I
Landroid/telecom/VideoCallImpl$MessageHandler;->MSG_RECEIVE_SESSION_MODIFY_RESPONSE:I
-Landroid/telecom/VideoCallImpl$VideoCallListenerBinder;
-Landroid/telecom/VideoCallImpl$VideoCallListenerBinder;-><init>()V
Landroid/telecom/VideoCallImpl$VideoCallListenerBinder;->changeCallDataUsage(J)V
Landroid/telecom/VideoCallImpl$VideoCallListenerBinder;->changeCameraCapabilities(Landroid/telecom/VideoProfile$CameraCapabilities;)V
Landroid/telecom/VideoCallImpl$VideoCallListenerBinder;->changePeerDimensions(II)V
@@ -71523,7 +66701,6 @@
Landroid/telecom/VideoCallImpl$VideoCallListenerBinder;->handleCallSessionEvent(I)V
Landroid/telecom/VideoCallImpl$VideoCallListenerBinder;->receiveSessionModifyRequest(Landroid/telecom/VideoProfile;)V
Landroid/telecom/VideoCallImpl$VideoCallListenerBinder;->receiveSessionModifyResponse(ILandroid/telecom/VideoProfile;Landroid/telecom/VideoProfile;)V
-Landroid/telecom/VideoCallImpl;
Landroid/telecom/VideoCallImpl;-><init>(Lcom/android/internal/telecom/IVideoProvider;Ljava/lang/String;I)V
Landroid/telecom/VideoCallImpl;->mBinder:Landroid/telecom/VideoCallImpl$VideoCallListenerBinder;
Landroid/telecom/VideoCallImpl;->mCallback:Landroid/telecom/InCallService$VideoCall$Callback;
@@ -71542,13 +66719,10 @@
Landroid/telecom/VideoProfile$CameraCapabilities;->mMaxZoom:F
Landroid/telecom/VideoProfile$CameraCapabilities;->mWidth:I
Landroid/telecom/VideoProfile$CameraCapabilities;->mZoomSupported:Z
-Landroid/telecom/VideoProfile$VideoQuality;
-Landroid/telecom/VideoProfile$VideoState;
Landroid/telecom/VideoProfile;->hasState(II)Z
Landroid/telecom/VideoProfile;->mQuality:I
Landroid/telecom/VideoProfile;->mVideoState:I
Landroid/telecom/VideoProfile;->QUALITY_UNKNOWN:I
-Landroid/telecom/Voicemail$Builder;
Landroid/telecom/Voicemail$Builder;-><init>()V
Landroid/telecom/Voicemail$Builder;->build()Landroid/telecom/Voicemail;
Landroid/telecom/Voicemail$Builder;->mBuilderDuration:Ljava/lang/Long;
@@ -71573,7 +66747,6 @@
Landroid/telecom/Voicemail$Builder;->setTimestamp(J)Landroid/telecom/Voicemail$Builder;
Landroid/telecom/Voicemail$Builder;->setTranscription(Ljava/lang/String;)Landroid/telecom/Voicemail$Builder;
Landroid/telecom/Voicemail$Builder;->setUri(Landroid/net/Uri;)Landroid/telecom/Voicemail$Builder;
-Landroid/telecom/Voicemail;
Landroid/telecom/Voicemail;-><init>(Landroid/os/Parcel;)V
Landroid/telecom/Voicemail;-><init>(Ljava/lang/Long;Ljava/lang/String;Landroid/telecom/PhoneAccountHandle;Ljava/lang/Long;Ljava/lang/Long;Ljava/lang/String;Ljava/lang/String;Landroid/net/Uri;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/lang/String;)V
Landroid/telecom/Voicemail;->createForInsertion(JLjava/lang/String;)Landroid/telecom/Voicemail$Builder;
@@ -71602,7 +66775,6 @@
Landroid/telecom/Voicemail;->mTranscription:Ljava/lang/String;
Landroid/telecom/Voicemail;->mUri:Landroid/net/Uri;
Landroid/telephony/AccessNetworkConstants$AccessNetworkType;-><init>()V
-Landroid/telephony/AccessNetworkConstants$CdmaBands;
Landroid/telephony/AccessNetworkConstants$CdmaBands;-><init>()V
Landroid/telephony/AccessNetworkConstants$CdmaBands;->BAND_0:I
Landroid/telephony/AccessNetworkConstants$CdmaBands;->BAND_10:I
@@ -71628,13 +66800,11 @@
Landroid/telephony/AccessNetworkConstants$CdmaBands;->BAND_9:I
Landroid/telephony/AccessNetworkConstants$EutranBand;-><init>()V
Landroid/telephony/AccessNetworkConstants$GeranBand;-><init>()V
-Landroid/telephony/AccessNetworkConstants$TransportType;
Landroid/telephony/AccessNetworkConstants$TransportType;-><init>()V
Landroid/telephony/AccessNetworkConstants$TransportType;->WLAN:I
Landroid/telephony/AccessNetworkConstants$TransportType;->WWAN:I
Landroid/telephony/AccessNetworkConstants$UtranBand;-><init>()V
Landroid/telephony/AccessNetworkConstants;-><init>()V
-Landroid/telephony/AccessNetworkUtils;
Landroid/telephony/AccessNetworkUtils;-><init>()V
Landroid/telephony/AccessNetworkUtils;->getDuplexModeForEutranBand(I)I
Landroid/telephony/AccessNetworkUtils;->getOperatingBandForEarfcn(I)I
@@ -71747,16 +66917,12 @@
Landroid/telephony/CarrierConfigManager;->KEY_WIFI_CALLS_CAN_BE_HD_AUDIO:Ljava/lang/String;
Landroid/telephony/CarrierConfigManager;->sDefaults:Landroid/os/PersistableBundle;
Landroid/telephony/CarrierConfigManager;->TAG:Ljava/lang/String;
-Landroid/telephony/CarrierMessagingServiceManager$CarrierMessagingServiceConnection;
-Landroid/telephony/CarrierMessagingServiceManager$CarrierMessagingServiceConnection;-><init>()V
-Landroid/telephony/CarrierMessagingServiceManager;
Landroid/telephony/CarrierMessagingServiceManager;->bindToCarrierMessagingService(Landroid/content/Context;Ljava/lang/String;)Z
Landroid/telephony/CarrierMessagingServiceManager;->disposeConnection(Landroid/content/Context;)V
Landroid/telephony/CarrierMessagingServiceManager;->mCarrierMessagingServiceConnection:Landroid/telephony/CarrierMessagingServiceManager$CarrierMessagingServiceConnection;
Landroid/telephony/CarrierMessagingServiceManager;->onServiceReady(Landroid/service/carrier/ICarrierMessagingService;)V
Landroid/telephony/cdma/CdmaCellLocation;->INVALID_LAT_LONG:I
Landroid/telephony/cdma/CdmaCellLocation;->isEmpty()Z
-Landroid/telephony/cdma/CdmaSmsCbProgramData;
Landroid/telephony/cdma/CdmaSmsCbProgramData;-><init>(IIIIILjava/lang/String;)V
Landroid/telephony/cdma/CdmaSmsCbProgramData;-><init>(Landroid/os/Parcel;)V
Landroid/telephony/cdma/CdmaSmsCbProgramData;->ALERT_OPTION_DEFAULT_ALERT:I
@@ -71787,7 +66953,6 @@
Landroid/telephony/cdma/CdmaSmsCbProgramData;->OPERATION_ADD_CATEGORY:I
Landroid/telephony/cdma/CdmaSmsCbProgramData;->OPERATION_CLEAR_CATEGORIES:I
Landroid/telephony/cdma/CdmaSmsCbProgramData;->OPERATION_DELETE_CATEGORY:I
-Landroid/telephony/cdma/CdmaSmsCbProgramResults;
Landroid/telephony/cdma/CdmaSmsCbProgramResults;-><init>(III)V
Landroid/telephony/cdma/CdmaSmsCbProgramResults;-><init>(Landroid/os/Parcel;)V
Landroid/telephony/cdma/CdmaSmsCbProgramResults;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -71806,7 +66971,6 @@
Landroid/telephony/cdma/CdmaSmsCbProgramResults;->RESULT_MEMORY_LIMIT_EXCEEDED:I
Landroid/telephony/cdma/CdmaSmsCbProgramResults;->RESULT_SUCCESS:I
Landroid/telephony/cdma/CdmaSmsCbProgramResults;->RESULT_UNSPECIFIED_FAILURE:I
-Landroid/telephony/CellBroadcastMessage;
Landroid/telephony/CellBroadcastMessage;-><init>(Landroid/os/Parcel;)V
Landroid/telephony/CellBroadcastMessage;-><init>(Landroid/telephony/SmsCbMessage;JZ)V
Landroid/telephony/CellBroadcastMessage;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -71825,7 +66989,6 @@
Landroid/telephony/CellBroadcastMessage;->setIsRead(Z)V
Landroid/telephony/CellBroadcastMessage;->setSubId(I)V
Landroid/telephony/CellBroadcastMessage;->SMS_CB_MESSAGE_EXTRA:Ljava/lang/String;
-Landroid/telephony/CellIdentity$Type;
Landroid/telephony/CellIdentity;-><init>(Ljava/lang/String;ILandroid/os/Parcel;)V
Landroid/telephony/CellIdentity;-><init>(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
Landroid/telephony/CellIdentity;->getChannelNumber()I
@@ -71910,7 +67073,6 @@
Landroid/telephony/CellIdentityWcdma;->mLac:I
Landroid/telephony/CellIdentityWcdma;->mPsc:I
Landroid/telephony/CellIdentityWcdma;->TAG:Ljava/lang/String;
-Landroid/telephony/CellInfo$CellConnectionStatus;
Landroid/telephony/CellInfo;-><init>()V
Landroid/telephony/CellInfo;-><init>(Landroid/os/Parcel;)V
Landroid/telephony/CellInfo;-><init>(Landroid/telephony/CellInfo;)V
@@ -72025,7 +67187,6 @@
Landroid/telephony/CellSignalStrengthWcdma;->WCDMA_SIGNAL_STRENGTH_GOOD:I
Landroid/telephony/CellSignalStrengthWcdma;->WCDMA_SIGNAL_STRENGTH_GREAT:I
Landroid/telephony/CellSignalStrengthWcdma;->WCDMA_SIGNAL_STRENGTH_MODERATE:I
-Landroid/telephony/ClientRequestStats;
Landroid/telephony/ClientRequestStats;-><init>()V
Landroid/telephony/ClientRequestStats;-><init>(Landroid/os/Parcel;)V
Landroid/telephony/ClientRequestStats;-><init>(Landroid/telephony/ClientRequestStats;)V
@@ -72050,8 +67211,6 @@
Landroid/telephony/ClientRequestStats;->setPendingRequestsCount(J)V
Landroid/telephony/ClientRequestStats;->setPendingRequestsWakelockTime(J)V
Landroid/telephony/ClientRequestStats;->updateRequestHistograms(II)V
-Landroid/telephony/data/ApnSetting$ApnType;
-Landroid/telephony/data/ApnSetting$AuthType;
Landroid/telephony/data/ApnSetting$Builder;->mApnName:Ljava/lang/String;
Landroid/telephony/data/ApnSetting$Builder;->mApnTypeBitmask:I
Landroid/telephony/data/ApnSetting$Builder;->mAuthType:I
@@ -72085,8 +67244,6 @@
Landroid/telephony/data/ApnSetting$Builder;->setMvnoMatchData(Ljava/lang/String;)Landroid/telephony/data/ApnSetting$Builder;
Landroid/telephony/data/ApnSetting$Builder;->setProfileId(I)Landroid/telephony/data/ApnSetting$Builder;
Landroid/telephony/data/ApnSetting$Builder;->setWaitTime(I)Landroid/telephony/data/ApnSetting$Builder;
-Landroid/telephony/data/ApnSetting$MvnoType;
-Landroid/telephony/data/ApnSetting$ProtocolType;
Landroid/telephony/data/ApnSetting;-><init>(Landroid/telephony/data/ApnSetting$Builder;)V
Landroid/telephony/data/ApnSetting;->APN_TYPE_INT_MAP:Ljava/util/Map;
Landroid/telephony/data/ApnSetting;->APN_TYPE_STRING_MAP:Ljava/util/Map;
@@ -72157,7 +67314,6 @@
Landroid/telephony/data/ApnSetting;->xorEquals(Ljava/lang/Object;Ljava/lang/Object;)Z
Landroid/telephony/data/ApnSetting;->xorEquals(Ljava/lang/String;Ljava/lang/String;)Z
Landroid/telephony/data/ApnSetting;->xorEqualsPort(II)Z
-Landroid/telephony/data/DataCallResponse;
Landroid/telephony/data/DataCallResponse;-><init>(IIIILjava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/List;I)V
Landroid/telephony/data/DataCallResponse;-><init>(Landroid/os/Parcel;)V
Landroid/telephony/data/DataCallResponse;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -72183,7 +67339,6 @@
Landroid/telephony/data/DataCallResponse;->mStatus:I
Landroid/telephony/data/DataCallResponse;->mSuggestedRetryTime:I
Landroid/telephony/data/DataCallResponse;->mType:Ljava/lang/String;
-Landroid/telephony/data/DataProfile;
Landroid/telephony/data/DataProfile;-><init>(ILjava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;IIIIZILjava/lang/String;IILjava/lang/String;Ljava/lang/String;Z)V
Landroid/telephony/data/DataProfile;-><init>(Landroid/os/Parcel;)V
Landroid/telephony/data/DataProfile;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -72226,14 +67381,9 @@
Landroid/telephony/data/DataProfile;->TYPE_3GPP2:I
Landroid/telephony/data/DataProfile;->TYPE_3GPP:I
Landroid/telephony/data/DataProfile;->TYPE_COMMON:I
-Landroid/telephony/data/DataService$DataCallListChangedIndication;
Landroid/telephony/data/DataService$DataCallListChangedIndication;-><init>(Ljava/util/List;Landroid/telephony/data/IDataServiceCallback;)V
Landroid/telephony/data/DataService$DataCallListChangedIndication;->callback:Landroid/telephony/data/IDataServiceCallback;
Landroid/telephony/data/DataService$DataCallListChangedIndication;->dataCallList:Ljava/util/List;
-Landroid/telephony/data/DataService$DataServiceHandler;
-Landroid/telephony/data/DataService$DataServiceHandler;-><init>(Landroid/os/Looper;)V
-Landroid/telephony/data/DataService$DataServiceProvider;
-Landroid/telephony/data/DataService$DataServiceProvider;-><init>(I)V
Landroid/telephony/data/DataService$DataServiceProvider;->deactivateDataCall(IILandroid/telephony/data/DataServiceCallback;)V
Landroid/telephony/data/DataService$DataServiceProvider;->getDataCallList(Landroid/telephony/data/DataServiceCallback;)V
Landroid/telephony/data/DataService$DataServiceProvider;->getSlotId()I
@@ -72246,14 +67396,10 @@
Landroid/telephony/data/DataService$DataServiceProvider;->setInitialAttachApn(Landroid/telephony/data/DataProfile;ZLandroid/telephony/data/DataServiceCallback;)V
Landroid/telephony/data/DataService$DataServiceProvider;->setupDataCall(ILandroid/telephony/data/DataProfile;ZZILandroid/net/LinkProperties;Landroid/telephony/data/DataServiceCallback;)V
Landroid/telephony/data/DataService$DataServiceProvider;->unregisterForDataCallListChanged(Landroid/telephony/data/IDataServiceCallback;)V
-Landroid/telephony/data/DataService$DeactivateDataCallRequest;
Landroid/telephony/data/DataService$DeactivateDataCallRequest;-><init>(IILandroid/telephony/data/IDataServiceCallback;)V
Landroid/telephony/data/DataService$DeactivateDataCallRequest;->callback:Landroid/telephony/data/IDataServiceCallback;
Landroid/telephony/data/DataService$DeactivateDataCallRequest;->cid:I
Landroid/telephony/data/DataService$DeactivateDataCallRequest;->reason:I
-Landroid/telephony/data/DataService$DeactivateDataReason;
-Landroid/telephony/data/DataService$IDataServiceWrapper;
-Landroid/telephony/data/DataService$IDataServiceWrapper;-><init>()V
Landroid/telephony/data/DataService$IDataServiceWrapper;->createDataServiceProvider(I)V
Landroid/telephony/data/DataService$IDataServiceWrapper;->deactivateDataCall(IIILandroid/telephony/data/IDataServiceCallback;)V
Landroid/telephony/data/DataService$IDataServiceWrapper;->getDataCallList(ILandroid/telephony/data/IDataServiceCallback;)V
@@ -72263,17 +67409,14 @@
Landroid/telephony/data/DataService$IDataServiceWrapper;->setInitialAttachApn(ILandroid/telephony/data/DataProfile;ZLandroid/telephony/data/IDataServiceCallback;)V
Landroid/telephony/data/DataService$IDataServiceWrapper;->setupDataCall(IILandroid/telephony/data/DataProfile;ZZILandroid/net/LinkProperties;Landroid/telephony/data/IDataServiceCallback;)V
Landroid/telephony/data/DataService$IDataServiceWrapper;->unregisterForDataCallListChanged(ILandroid/telephony/data/IDataServiceCallback;)V
-Landroid/telephony/data/DataService$SetDataProfileRequest;
Landroid/telephony/data/DataService$SetDataProfileRequest;-><init>(Ljava/util/List;ZLandroid/telephony/data/IDataServiceCallback;)V
Landroid/telephony/data/DataService$SetDataProfileRequest;->callback:Landroid/telephony/data/IDataServiceCallback;
Landroid/telephony/data/DataService$SetDataProfileRequest;->dps:Ljava/util/List;
Landroid/telephony/data/DataService$SetDataProfileRequest;->isRoaming:Z
-Landroid/telephony/data/DataService$SetInitialAttachApnRequest;
Landroid/telephony/data/DataService$SetInitialAttachApnRequest;-><init>(Landroid/telephony/data/DataProfile;ZLandroid/telephony/data/IDataServiceCallback;)V
Landroid/telephony/data/DataService$SetInitialAttachApnRequest;->callback:Landroid/telephony/data/IDataServiceCallback;
Landroid/telephony/data/DataService$SetInitialAttachApnRequest;->dataProfile:Landroid/telephony/data/DataProfile;
Landroid/telephony/data/DataService$SetInitialAttachApnRequest;->isRoaming:Z
-Landroid/telephony/data/DataService$SetupDataCallRequest;
Landroid/telephony/data/DataService$SetupDataCallRequest;-><init>(ILandroid/telephony/data/DataProfile;ZZILandroid/net/LinkProperties;Landroid/telephony/data/IDataServiceCallback;)V
Landroid/telephony/data/DataService$SetupDataCallRequest;->accessNetworkType:I
Landroid/telephony/data/DataService$SetupDataCallRequest;->allowRoaming:Z
@@ -72282,8 +67425,6 @@
Landroid/telephony/data/DataService$SetupDataCallRequest;->isRoaming:Z
Landroid/telephony/data/DataService$SetupDataCallRequest;->linkProperties:Landroid/net/LinkProperties;
Landroid/telephony/data/DataService$SetupDataCallRequest;->reason:I
-Landroid/telephony/data/DataService$SetupDataReason;
-Landroid/telephony/data/DataService;
Landroid/telephony/data/DataService;-><init>()V
Landroid/telephony/data/DataService;->createDataServiceProvider(I)Landroid/telephony/data/DataService$DataServiceProvider;
Landroid/telephony/data/DataService;->DATA_SERVICE_CREATE_DATA_SERVICE_PROVIDER:I
@@ -72309,8 +67450,6 @@
Landroid/telephony/data/DataService;->REQUEST_REASON_NORMAL:I
Landroid/telephony/data/DataService;->REQUEST_REASON_SHUTDOWN:I
Landroid/telephony/data/DataService;->TAG:Ljava/lang/String;
-Landroid/telephony/data/DataServiceCallback$ResultCode;
-Landroid/telephony/data/DataServiceCallback;
Landroid/telephony/data/DataServiceCallback;-><init>(Landroid/telephony/data/IDataServiceCallback;)V
Landroid/telephony/data/DataServiceCallback;->mCallback:Ljava/lang/ref/WeakReference;
Landroid/telephony/data/DataServiceCallback;->onDataCallListChanged(Ljava/util/List;)V
@@ -72325,7 +67464,6 @@
Landroid/telephony/data/DataServiceCallback;->RESULT_ERROR_UNSUPPORTED:I
Landroid/telephony/data/DataServiceCallback;->RESULT_SUCCESS:I
Landroid/telephony/data/DataServiceCallback;->TAG:Ljava/lang/String;
-Landroid/telephony/data/IDataService$Stub$Proxy;
Landroid/telephony/data/IDataService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/telephony/data/IDataService$Stub$Proxy;->createDataServiceProvider(I)V
Landroid/telephony/data/IDataService$Stub$Proxy;->deactivateDataCall(IIILandroid/telephony/data/IDataServiceCallback;)V
@@ -72338,7 +67476,6 @@
Landroid/telephony/data/IDataService$Stub$Proxy;->setInitialAttachApn(ILandroid/telephony/data/DataProfile;ZLandroid/telephony/data/IDataServiceCallback;)V
Landroid/telephony/data/IDataService$Stub$Proxy;->setupDataCall(IILandroid/telephony/data/DataProfile;ZZILandroid/net/LinkProperties;Landroid/telephony/data/IDataServiceCallback;)V
Landroid/telephony/data/IDataService$Stub$Proxy;->unregisterForDataCallListChanged(ILandroid/telephony/data/IDataServiceCallback;)V
-Landroid/telephony/data/IDataService$Stub;
Landroid/telephony/data/IDataService$Stub;-><init>()V
Landroid/telephony/data/IDataService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/telephony/data/IDataService;
Landroid/telephony/data/IDataService$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -72351,7 +67488,6 @@
Landroid/telephony/data/IDataService$Stub;->TRANSACTION_setInitialAttachApn:I
Landroid/telephony/data/IDataService$Stub;->TRANSACTION_setupDataCall:I
Landroid/telephony/data/IDataService$Stub;->TRANSACTION_unregisterForDataCallListChanged:I
-Landroid/telephony/data/IDataService;
Landroid/telephony/data/IDataService;->createDataServiceProvider(I)V
Landroid/telephony/data/IDataService;->deactivateDataCall(IIILandroid/telephony/data/IDataServiceCallback;)V
Landroid/telephony/data/IDataService;->getDataCallList(ILandroid/telephony/data/IDataServiceCallback;)V
@@ -72361,7 +67497,6 @@
Landroid/telephony/data/IDataService;->setInitialAttachApn(ILandroid/telephony/data/DataProfile;ZLandroid/telephony/data/IDataServiceCallback;)V
Landroid/telephony/data/IDataService;->setupDataCall(IILandroid/telephony/data/DataProfile;ZZILandroid/net/LinkProperties;Landroid/telephony/data/IDataServiceCallback;)V
Landroid/telephony/data/IDataService;->unregisterForDataCallListChanged(ILandroid/telephony/data/IDataServiceCallback;)V
-Landroid/telephony/data/IDataServiceCallback$Stub$Proxy;
Landroid/telephony/data/IDataServiceCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/telephony/data/IDataServiceCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/telephony/data/IDataServiceCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -72371,7 +67506,6 @@
Landroid/telephony/data/IDataServiceCallback$Stub$Proxy;->onSetDataProfileComplete(I)V
Landroid/telephony/data/IDataServiceCallback$Stub$Proxy;->onSetInitialAttachApnComplete(I)V
Landroid/telephony/data/IDataServiceCallback$Stub$Proxy;->onSetupDataCallComplete(ILandroid/telephony/data/DataCallResponse;)V
-Landroid/telephony/data/IDataServiceCallback$Stub;
Landroid/telephony/data/IDataServiceCallback$Stub;-><init>()V
Landroid/telephony/data/IDataServiceCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/telephony/data/IDataServiceCallback;
Landroid/telephony/data/IDataServiceCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -72381,14 +67515,12 @@
Landroid/telephony/data/IDataServiceCallback$Stub;->TRANSACTION_onSetDataProfileComplete:I
Landroid/telephony/data/IDataServiceCallback$Stub;->TRANSACTION_onSetInitialAttachApnComplete:I
Landroid/telephony/data/IDataServiceCallback$Stub;->TRANSACTION_onSetupDataCallComplete:I
-Landroid/telephony/data/IDataServiceCallback;
Landroid/telephony/data/IDataServiceCallback;->onDataCallListChanged(Ljava/util/List;)V
Landroid/telephony/data/IDataServiceCallback;->onDeactivateDataCallComplete(I)V
Landroid/telephony/data/IDataServiceCallback;->onGetDataCallListComplete(ILjava/util/List;)V
Landroid/telephony/data/IDataServiceCallback;->onSetDataProfileComplete(I)V
Landroid/telephony/data/IDataServiceCallback;->onSetInitialAttachApnComplete(I)V
Landroid/telephony/data/IDataServiceCallback;->onSetupDataCallComplete(ILandroid/telephony/data/DataCallResponse;)V
-Landroid/telephony/DataConnectionRealTimeInfo;
Landroid/telephony/DataConnectionRealTimeInfo;-><init>()V
Landroid/telephony/DataConnectionRealTimeInfo;-><init>(JI)V
Landroid/telephony/DataConnectionRealTimeInfo;-><init>(Landroid/os/Parcel;)V
@@ -72401,12 +67533,10 @@
Landroid/telephony/DataConnectionRealTimeInfo;->getTime()J
Landroid/telephony/DataConnectionRealTimeInfo;->mDcPowerState:I
Landroid/telephony/DataConnectionRealTimeInfo;->mTime:J
-Landroid/telephony/DataSpecificRegistrationStates;
Landroid/telephony/DataSpecificRegistrationStates;-><init>(I)V
Landroid/telephony/DataSpecificRegistrationStates;-><init>(Landroid/os/Parcel;)V
Landroid/telephony/DataSpecificRegistrationStates;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/telephony/DataSpecificRegistrationStates;->maxDataCalls:I
-Landroid/telephony/DisconnectCause;
Landroid/telephony/DisconnectCause;-><init>()V
Landroid/telephony/DisconnectCause;->ANSWERED_ELSEWHERE:I
Landroid/telephony/DisconnectCause;->BUSY:I
@@ -72535,7 +67665,6 @@
Landroid/telephony/gsm/SmsManager;->mSmsMgrProxy:Landroid/telephony/SmsManager;
Landroid/telephony/gsm/SmsManager;->sInstance:Landroid/telephony/gsm/SmsManager;
Landroid/telephony/gsm/SmsManager;->updateMessageOnSim(II[B)Z
-Landroid/telephony/gsm/SmsMessage$MessageClass;-><init>()V
Landroid/telephony/gsm/SmsMessage$SubmitPdu;-><init>(Lcom/android/internal/telephony/SmsMessageBase$SubmitPduBase;)V
Landroid/telephony/gsm/SmsMessage;-><init>(Lcom/android/internal/telephony/SmsMessageBase;)V
Landroid/telephony/gsm/SmsMessage;->getIndexOnIcc()I
@@ -72549,8 +67678,6 @@
Landroid/telephony/IccOpenLogicalChannelResponse;->mChannel:I
Landroid/telephony/IccOpenLogicalChannelResponse;->mSelectResponse:[B
Landroid/telephony/IccOpenLogicalChannelResponse;->mStatus:I
-Landroid/telephony/ims/compat/feature/ImsFeature$ImsState;
-Landroid/telephony/ims/compat/feature/ImsFeature;
Landroid/telephony/ims/compat/feature/ImsFeature;-><init>()V
Landroid/telephony/ims/compat/feature/ImsFeature;->ACTION_IMS_SERVICE_DOWN:Ljava/lang/String;
Landroid/telephony/ims/compat/feature/ImsFeature;->ACTION_IMS_SERVICE_UP:Ljava/lang/String;
@@ -72577,7 +67704,6 @@
Landroid/telephony/ims/compat/feature/ImsFeature;->STATE_INITIALIZING:I
Landroid/telephony/ims/compat/feature/ImsFeature;->STATE_NOT_AVAILABLE:I
Landroid/telephony/ims/compat/feature/ImsFeature;->STATE_READY:I
-Landroid/telephony/ims/compat/feature/MMTelFeature;
Landroid/telephony/ims/compat/feature/MMTelFeature;->addRegistrationListener(Lcom/android/ims/internal/IImsRegistrationListener;)V
Landroid/telephony/ims/compat/feature/MMTelFeature;->createCallProfile(III)Landroid/telephony/ims/ImsCallProfile;
Landroid/telephony/ims/compat/feature/MMTelFeature;->createCallSession(ILandroid/telephony/ims/ImsCallProfile;Lcom/android/ims/internal/IImsCallSessionListener;)Lcom/android/ims/internal/IImsCallSession;
@@ -72599,13 +67725,11 @@
Landroid/telephony/ims/compat/feature/MMTelFeature;->startSession(Landroid/app/PendingIntent;Lcom/android/ims/internal/IImsRegistrationListener;)I
Landroid/telephony/ims/compat/feature/MMTelFeature;->turnOffIms()V
Landroid/telephony/ims/compat/feature/MMTelFeature;->turnOnIms()V
-Landroid/telephony/ims/compat/feature/RcsFeature;
Landroid/telephony/ims/compat/feature/RcsFeature;-><init>()V
Landroid/telephony/ims/compat/feature/RcsFeature;->getBinder()Lcom/android/ims/internal/IImsRcsFeature;
Landroid/telephony/ims/compat/feature/RcsFeature;->mImsRcsBinder:Lcom/android/ims/internal/IImsRcsFeature;
Landroid/telephony/ims/compat/feature/RcsFeature;->onFeatureReady()V
Landroid/telephony/ims/compat/feature/RcsFeature;->onFeatureRemoved()V
-Landroid/telephony/ims/compat/ImsService;
Landroid/telephony/ims/compat/ImsService;->addImsFeature(IILandroid/telephony/ims/compat/feature/ImsFeature;)V
Landroid/telephony/ims/compat/ImsService;->createEmergencyMMTelFeatureInternal(ILcom/android/ims/internal/IImsFeatureStatusCallback;)Lcom/android/ims/internal/IImsMMTelFeature;
Landroid/telephony/ims/compat/ImsService;->createMMTelFeatureInternal(ILcom/android/ims/internal/IImsFeatureStatusCallback;)Lcom/android/ims/internal/IImsMMTelFeature;
@@ -72619,8 +67743,6 @@
Landroid/telephony/ims/compat/ImsService;->removeImsFeature(IILcom/android/ims/internal/IImsFeatureStatusCallback;)V
Landroid/telephony/ims/compat/ImsService;->SERVICE_INTERFACE:Ljava/lang/String;
Landroid/telephony/ims/compat/ImsService;->setupFeature(Landroid/telephony/ims/compat/feature/ImsFeature;IILcom/android/ims/internal/IImsFeatureStatusCallback;)V
-Landroid/telephony/ims/compat/stub/ImsCallSessionImplBase$ImsCallSessionListenerConverter;
-Landroid/telephony/ims/compat/stub/ImsCallSessionImplBase$ImsCallSessionListenerConverter;-><init>(Landroid/telephony/ims/aidl/IImsCallSessionListener;)V
Landroid/telephony/ims/compat/stub/ImsCallSessionImplBase$ImsCallSessionListenerConverter;->callSessionConferenceExtended(Lcom/android/ims/internal/IImsCallSession;Lcom/android/ims/internal/IImsCallSession;Landroid/telephony/ims/ImsCallProfile;)V
Landroid/telephony/ims/compat/stub/ImsCallSessionImplBase$ImsCallSessionListenerConverter;->callSessionConferenceExtendFailed(Lcom/android/ims/internal/IImsCallSession;Landroid/telephony/ims/ImsReasonInfo;)V
Landroid/telephony/ims/compat/stub/ImsCallSessionImplBase$ImsCallSessionListenerConverter;->callSessionConferenceExtendReceived(Lcom/android/ims/internal/IImsCallSession;Lcom/android/ims/internal/IImsCallSession;Landroid/telephony/ims/ImsCallProfile;)V
@@ -72656,7 +67778,6 @@
Landroid/telephony/ims/compat/stub/ImsCallSessionImplBase$ImsCallSessionListenerConverter;->callSessionUpdateReceived(Lcom/android/ims/internal/IImsCallSession;Landroid/telephony/ims/ImsCallProfile;)V
Landroid/telephony/ims/compat/stub/ImsCallSessionImplBase$ImsCallSessionListenerConverter;->callSessionUssdMessageReceived(Lcom/android/ims/internal/IImsCallSession;ILjava/lang/String;)V
Landroid/telephony/ims/compat/stub/ImsCallSessionImplBase$ImsCallSessionListenerConverter;->mNewListener:Landroid/telephony/ims/aidl/IImsCallSessionListener;
-Landroid/telephony/ims/compat/stub/ImsCallSessionImplBase;
Landroid/telephony/ims/compat/stub/ImsCallSessionImplBase;->accept(ILandroid/telephony/ims/ImsStreamMediaProfile;)V
Landroid/telephony/ims/compat/stub/ImsCallSessionImplBase;->close()V
Landroid/telephony/ims/compat/stub/ImsCallSessionImplBase;->deflect(Ljava/lang/String;)V
@@ -72690,7 +67811,6 @@
Landroid/telephony/ims/compat/stub/ImsCallSessionImplBase;->stopDtmf()V
Landroid/telephony/ims/compat/stub/ImsCallSessionImplBase;->terminate(I)V
Landroid/telephony/ims/compat/stub/ImsCallSessionImplBase;->update(ILandroid/telephony/ims/ImsStreamMediaProfile;)V
-Landroid/telephony/ims/compat/stub/ImsConfigImplBase$ImsConfigStub;
Landroid/telephony/ims/compat/stub/ImsConfigImplBase$ImsConfigStub;-><init>(Landroid/telephony/ims/compat/stub/ImsConfigImplBase;Landroid/content/Context;)V
Landroid/telephony/ims/compat/stub/ImsConfigImplBase$ImsConfigStub;->getFeatureValue(IILcom/android/ims/ImsConfigListener;)V
Landroid/telephony/ims/compat/stub/ImsConfigImplBase$ImsConfigStub;->getImsConfigImpl()Landroid/telephony/ims/compat/stub/ImsConfigImplBase;
@@ -72710,7 +67830,6 @@
Landroid/telephony/ims/compat/stub/ImsConfigImplBase$ImsConfigStub;->setVideoQuality(ILcom/android/ims/ImsConfigListener;)V
Landroid/telephony/ims/compat/stub/ImsConfigImplBase$ImsConfigStub;->updateCachedValue(IIZ)V
Landroid/telephony/ims/compat/stub/ImsConfigImplBase$ImsConfigStub;->updateCachedValue(ILjava/lang/String;Z)V
-Landroid/telephony/ims/compat/stub/ImsConfigImplBase;
Landroid/telephony/ims/compat/stub/ImsConfigImplBase;->getFeatureValue(IILcom/android/ims/ImsConfigListener;)V
Landroid/telephony/ims/compat/stub/ImsConfigImplBase;->getProvisionedStringValue(I)Ljava/lang/String;
Landroid/telephony/ims/compat/stub/ImsConfigImplBase;->getProvisionedValue(I)I
@@ -72724,7 +67843,6 @@
Landroid/telephony/ims/compat/stub/ImsConfigImplBase;->setProvisionedValue(II)I
Landroid/telephony/ims/compat/stub/ImsConfigImplBase;->setVideoQuality(ILcom/android/ims/ImsConfigListener;)V
Landroid/telephony/ims/compat/stub/ImsConfigImplBase;->TAG:Ljava/lang/String;
-Landroid/telephony/ims/compat/stub/ImsUtListenerImplBase;
Landroid/telephony/ims/compat/stub/ImsUtListenerImplBase;->onSupplementaryServiceIndication(Landroid/telephony/ims/ImsSsData;)V
Landroid/telephony/ims/compat/stub/ImsUtListenerImplBase;->utConfigurationCallBarringQueried(Lcom/android/ims/internal/IImsUt;I[Landroid/telephony/ims/ImsSsInfo;)V
Landroid/telephony/ims/compat/stub/ImsUtListenerImplBase;->utConfigurationCallForwardQueried(Lcom/android/ims/internal/IImsUt;I[Landroid/telephony/ims/ImsCallForwardInfo;)V
@@ -72740,7 +67858,6 @@
Landroid/telephony/ims/feature/CapabilityChangeRequest;->addAllCapabilities(Ljava/util/Set;II)V
Landroid/telephony/ims/feature/CapabilityChangeRequest;->mCapabilitiesToDisable:Ljava/util/Set;
Landroid/telephony/ims/feature/CapabilityChangeRequest;->mCapabilitiesToEnable:Ljava/util/Set;
-Landroid/telephony/ims/feature/ImsFeature$Capabilities;
Landroid/telephony/ims/feature/ImsFeature$Capabilities;-><init>()V
Landroid/telephony/ims/feature/ImsFeature$Capabilities;-><init>(I)V
Landroid/telephony/ims/feature/ImsFeature$Capabilities;->addCapabilities(I)V
@@ -72749,7 +67866,6 @@
Landroid/telephony/ims/feature/ImsFeature$Capabilities;->isCapable(I)Z
Landroid/telephony/ims/feature/ImsFeature$Capabilities;->mCapabilities:I
Landroid/telephony/ims/feature/ImsFeature$Capabilities;->removeCapabilities(I)V
-Landroid/telephony/ims/feature/ImsFeature$CapabilityCallback;
Landroid/telephony/ims/feature/ImsFeature$CapabilityCallback;-><init>()V
Landroid/telephony/ims/feature/ImsFeature$CapabilityCallback;->onCapabilitiesStatusChanged(I)V
Landroid/telephony/ims/feature/ImsFeature$CapabilityCallback;->onCapabilitiesStatusChanged(Landroid/telephony/ims/feature/ImsFeature$Capabilities;)V
@@ -72757,9 +67873,6 @@
Landroid/telephony/ims/feature/ImsFeature$CapabilityCallback;->onQueryCapabilityConfiguration(IIZ)V
Landroid/telephony/ims/feature/ImsFeature$CapabilityCallbackProxy;-><init>(Landroid/telephony/ims/aidl/IImsCapabilityCallback;)V
Landroid/telephony/ims/feature/ImsFeature$CapabilityCallbackProxy;->mCallback:Landroid/telephony/ims/aidl/IImsCapabilityCallback;
-Landroid/telephony/ims/feature/ImsFeature$FeatureType;
-Landroid/telephony/ims/feature/ImsFeature$ImsCapabilityError;
-Landroid/telephony/ims/feature/ImsFeature$ImsState;
Landroid/telephony/ims/feature/ImsFeature;->ACTION_IMS_SERVICE_DOWN:Ljava/lang/String;
Landroid/telephony/ims/feature/ImsFeature;->ACTION_IMS_SERVICE_UP:Ljava/lang/String;
Landroid/telephony/ims/feature/ImsFeature;->addCapabilityCallback(Landroid/telephony/ims/aidl/IImsCapabilityCallback;)V
@@ -72785,7 +67898,6 @@
Landroid/telephony/ims/feature/ImsFeature;->removeImsFeatureStatusCallback(Lcom/android/ims/internal/IImsFeatureStatusCallback;)V
Landroid/telephony/ims/feature/ImsFeature;->requestChangeEnabledCapabilities(Landroid/telephony/ims/feature/CapabilityChangeRequest;Landroid/telephony/ims/aidl/IImsCapabilityCallback;)V
Landroid/telephony/ims/feature/ImsFeature;->sendImsServiceIntent(I)V
-Landroid/telephony/ims/feature/MmTelFeature$Listener;
Landroid/telephony/ims/feature/MmTelFeature$Listener;-><init>()V
Landroid/telephony/ims/feature/MmTelFeature$Listener;->onIncomingCall(Lcom/android/ims/internal/IImsCallSession;Landroid/os/Bundle;)V
Landroid/telephony/ims/feature/MmTelFeature$Listener;->onVoiceMessageCountUpdate(I)V
@@ -72826,8 +67938,6 @@
Landroid/telephony/ims/ImsCallProfile;->OIRToPresentation(I)I
Landroid/telephony/ims/ImsCallProfile;->readFromParcel(Landroid/os/Parcel;)V
Landroid/telephony/ims/ImsCallProfile;->TAG:Ljava/lang/String;
-Landroid/telephony/ims/ImsCallSession$IImsCallSessionListenerProxy;
-Landroid/telephony/ims/ImsCallSession$IImsCallSessionListenerProxy;-><init>()V
Landroid/telephony/ims/ImsCallSession$IImsCallSessionListenerProxy;->callSessionConferenceExtended(Lcom/android/ims/internal/IImsCallSession;Landroid/telephony/ims/ImsCallProfile;)V
Landroid/telephony/ims/ImsCallSession$IImsCallSessionListenerProxy;->callSessionConferenceExtendFailed(Landroid/telephony/ims/ImsReasonInfo;)V
Landroid/telephony/ims/ImsCallSession$IImsCallSessionListenerProxy;->callSessionConferenceExtendReceived(Lcom/android/ims/internal/IImsCallSession;Landroid/telephony/ims/ImsCallProfile;)V
@@ -72862,7 +67972,6 @@
Landroid/telephony/ims/ImsCallSession$IImsCallSessionListenerProxy;->callSessionUpdateFailed(Landroid/telephony/ims/ImsReasonInfo;)V
Landroid/telephony/ims/ImsCallSession$IImsCallSessionListenerProxy;->callSessionUpdateReceived(Landroid/telephony/ims/ImsCallProfile;)V
Landroid/telephony/ims/ImsCallSession$IImsCallSessionListenerProxy;->callSessionUssdMessageReceived(ILjava/lang/String;)V
-Landroid/telephony/ims/ImsCallSession$Listener;
Landroid/telephony/ims/ImsCallSession$Listener;-><init>()V
Landroid/telephony/ims/ImsCallSession$Listener;->callSessionConferenceExtended(Landroid/telephony/ims/ImsCallSession;Landroid/telephony/ims/ImsCallSession;Landroid/telephony/ims/ImsCallProfile;)V
Landroid/telephony/ims/ImsCallSession$Listener;->callSessionConferenceExtendFailed(Landroid/telephony/ims/ImsCallSession;Landroid/telephony/ims/ImsReasonInfo;)V
@@ -72898,7 +68007,6 @@
Landroid/telephony/ims/ImsCallSession$Listener;->callSessionUpdateFailed(Landroid/telephony/ims/ImsCallSession;Landroid/telephony/ims/ImsReasonInfo;)V
Landroid/telephony/ims/ImsCallSession$Listener;->callSessionUpdateReceived(Landroid/telephony/ims/ImsCallSession;Landroid/telephony/ims/ImsCallProfile;)V
Landroid/telephony/ims/ImsCallSession$Listener;->callSessionUssdMessageReceived(Landroid/telephony/ims/ImsCallSession;ILjava/lang/String;)V
-Landroid/telephony/ims/ImsCallSession$State;
Landroid/telephony/ims/ImsCallSession$State;-><init>()V
Landroid/telephony/ims/ImsCallSession$State;->ESTABLISHED:I
Landroid/telephony/ims/ImsCallSession$State;->ESTABLISHING:I
@@ -72911,7 +68019,6 @@
Landroid/telephony/ims/ImsCallSession$State;->TERMINATED:I
Landroid/telephony/ims/ImsCallSession$State;->TERMINATING:I
Landroid/telephony/ims/ImsCallSession$State;->toString(I)Ljava/lang/String;
-Landroid/telephony/ims/ImsCallSession;
Landroid/telephony/ims/ImsCallSession;-><init>(Lcom/android/ims/internal/IImsCallSession;)V
Landroid/telephony/ims/ImsCallSession;-><init>(Lcom/android/ims/internal/IImsCallSession;Landroid/telephony/ims/ImsCallSession$Listener;)V
Landroid/telephony/ims/ImsCallSession;->accept(ILandroid/telephony/ims/ImsStreamMediaProfile;)V
@@ -72973,7 +68080,6 @@
Landroid/telephony/ims/ImsReasonInfo;-><init>()V
Landroid/telephony/ims/ImsReasonInfo;-><init>(Landroid/os/Parcel;)V
Landroid/telephony/ims/ImsReasonInfo;->CODE_UNOBTAINABLE_NUMBER:I
-Landroid/telephony/ims/ImsService$Listener;
Landroid/telephony/ims/ImsService$Listener;-><init>()V
Landroid/telephony/ims/ImsService$Listener;->onUpdateSupportedImsFeatures(Landroid/telephony/ims/stub/ImsFeatureConfiguration;)V
Landroid/telephony/ims/ImsService;->addImsFeature(IILandroid/telephony/ims/feature/ImsFeature;)V
@@ -72987,8 +68093,6 @@
Landroid/telephony/ims/ImsService;->removeImsFeature(IILcom/android/ims/internal/IImsFeatureStatusCallback;)V
Landroid/telephony/ims/ImsService;->SERVICE_INTERFACE:Ljava/lang/String;
Landroid/telephony/ims/ImsService;->setupFeature(Landroid/telephony/ims/feature/ImsFeature;IILcom/android/ims/internal/IImsFeatureStatusCallback;)V
-Landroid/telephony/ims/ImsSsData$ServiceClass;
-Landroid/telephony/ims/ImsSsData$ServiceType;
Landroid/telephony/ims/ImsSsData;-><init>(Landroid/os/Parcel;)V
Landroid/telephony/ims/ImsSsData;->getCallForwardInfo()[Landroid/telephony/ims/ImsCallForwardInfo;
Landroid/telephony/ims/ImsSsData;->getImsSpecificSuppServiceInfo()[Landroid/telephony/ims/ImsSsInfo;
@@ -73030,8 +68134,6 @@
Landroid/telephony/ims/ImsUtListener;-><init>(Lcom/android/ims/internal/IImsUtListener;)V
Landroid/telephony/ims/ImsUtListener;->LOG_TAG:Ljava/lang/String;
Landroid/telephony/ims/ImsUtListener;->mServiceInterface:Lcom/android/ims/internal/IImsUtListener;
-Landroid/telephony/ims/ImsVideoCallProvider$ImsVideoCallProviderBinder;
-Landroid/telephony/ims/ImsVideoCallProvider$ImsVideoCallProviderBinder;-><init>()V
Landroid/telephony/ims/ImsVideoCallProvider$ImsVideoCallProviderBinder;->requestCallDataUsage()V
Landroid/telephony/ims/ImsVideoCallProvider$ImsVideoCallProviderBinder;->requestCameraCapabilities()V
Landroid/telephony/ims/ImsVideoCallProvider$ImsVideoCallProviderBinder;->sendSessionModifyRequest(Landroid/telecom/VideoProfile;Landroid/telecom/VideoProfile;)V
@@ -73063,13 +68165,11 @@
Landroid/telephony/ims/stub/ImsCallSessionImplBase;->mServiceImpl:Lcom/android/ims/internal/IImsCallSession;
Landroid/telephony/ims/stub/ImsCallSessionImplBase;->setListener(Landroid/telephony/ims/aidl/IImsCallSessionListener;)V
Landroid/telephony/ims/stub/ImsCallSessionImplBase;->setServiceImpl(Lcom/android/ims/internal/IImsCallSession;)V
-Landroid/telephony/ims/stub/ImsConfigImplBase$Callback;
Landroid/telephony/ims/stub/ImsConfigImplBase$Callback;-><init>()V
Landroid/telephony/ims/stub/ImsConfigImplBase$Callback;->onConfigChanged(II)V
Landroid/telephony/ims/stub/ImsConfigImplBase$Callback;->onConfigChanged(ILjava/lang/String;)V
Landroid/telephony/ims/stub/ImsConfigImplBase$Callback;->onIntConfigChanged(II)V
Landroid/telephony/ims/stub/ImsConfigImplBase$Callback;->onStringConfigChanged(ILjava/lang/String;)V
-Landroid/telephony/ims/stub/ImsConfigImplBase$ImsConfigStub;
Landroid/telephony/ims/stub/ImsConfigImplBase$ImsConfigStub;-><init>(Landroid/telephony/ims/stub/ImsConfigImplBase;)V
Landroid/telephony/ims/stub/ImsConfigImplBase$ImsConfigStub;->addImsConfigCallback(Landroid/telephony/ims/aidl/IImsConfigCallback;)V
Landroid/telephony/ims/stub/ImsConfigImplBase$ImsConfigStub;->getConfigInt(I)I
@@ -73108,14 +68208,12 @@
Landroid/telephony/ims/stub/ImsMultiEndpointImplBase;->mImsMultiEndpoint:Lcom/android/ims/internal/IImsMultiEndpoint;
Landroid/telephony/ims/stub/ImsMultiEndpointImplBase;->mListener:Lcom/android/ims/internal/IImsExternalCallStateListener;
Landroid/telephony/ims/stub/ImsMultiEndpointImplBase;->TAG:Ljava/lang/String;
-Landroid/telephony/ims/stub/ImsRegistrationImplBase$Callback;
Landroid/telephony/ims/stub/ImsRegistrationImplBase$Callback;-><init>()V
Landroid/telephony/ims/stub/ImsRegistrationImplBase$Callback;->onDeregistered(Landroid/telephony/ims/ImsReasonInfo;)V
Landroid/telephony/ims/stub/ImsRegistrationImplBase$Callback;->onRegistered(I)V
Landroid/telephony/ims/stub/ImsRegistrationImplBase$Callback;->onRegistering(I)V
Landroid/telephony/ims/stub/ImsRegistrationImplBase$Callback;->onSubscriberAssociatedUriChanged([Landroid/net/Uri;)V
Landroid/telephony/ims/stub/ImsRegistrationImplBase$Callback;->onTechnologyChangeFailed(ILandroid/telephony/ims/ImsReasonInfo;)V
-Landroid/telephony/ims/stub/ImsRegistrationImplBase$ImsRegistrationTech;
Landroid/telephony/ims/stub/ImsRegistrationImplBase;->addRegistrationCallback(Landroid/telephony/ims/aidl/IImsRegistrationCallback;)V
Landroid/telephony/ims/stub/ImsRegistrationImplBase;->getBinder()Landroid/telephony/ims/aidl/IImsRegistration;
Landroid/telephony/ims/stub/ImsRegistrationImplBase;->getConnectionType()I
@@ -73134,14 +68232,10 @@
Landroid/telephony/ims/stub/ImsRegistrationImplBase;->updateNewCallbackWithState(Landroid/telephony/ims/aidl/IImsRegistrationCallback;)V
Landroid/telephony/ims/stub/ImsRegistrationImplBase;->updateToDisconnectedState(Landroid/telephony/ims/ImsReasonInfo;)V
Landroid/telephony/ims/stub/ImsRegistrationImplBase;->updateToState(II)V
-Landroid/telephony/ims/stub/ImsSmsImplBase$DeliverStatusResult;
-Landroid/telephony/ims/stub/ImsSmsImplBase$SendStatusResult;
-Landroid/telephony/ims/stub/ImsSmsImplBase$StatusReportResult;
Landroid/telephony/ims/stub/ImsSmsImplBase;->LOG_TAG:Ljava/lang/String;
Landroid/telephony/ims/stub/ImsSmsImplBase;->mListener:Landroid/telephony/ims/aidl/IImsSmsListener;
Landroid/telephony/ims/stub/ImsSmsImplBase;->mLock:Ljava/lang/Object;
Landroid/telephony/ims/stub/ImsSmsImplBase;->registerSmsListener(Landroid/telephony/ims/aidl/IImsSmsListener;)V
-Landroid/telephony/ims/stub/ImsStreamMediaSessionImplBase;
Landroid/telephony/ims/stub/ImsStreamMediaSessionImplBase;-><init>()V
Landroid/telephony/ims/stub/ImsStreamMediaSessionImplBase;->close()V
Landroid/telephony/ims/stub/ImsUtImplBase;->getInterface()Lcom/android/ims/internal/IImsUt;
@@ -73154,7 +68248,6 @@
Landroid/telephony/ims/stub/ImsUtImplBase;->updateCLIR(I)I
Landroid/telephony/ims/stub/ImsUtImplBase;->updateCOLP(Z)I
Landroid/telephony/ims/stub/ImsUtImplBase;->updateCOLR(I)I
-Landroid/telephony/ImsiEncryptionInfo;
Landroid/telephony/ImsiEncryptionInfo;-><init>(Landroid/os/Parcel;)V
Landroid/telephony/ImsiEncryptionInfo;-><init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/security/PublicKey;Ljava/util/Date;)V
Landroid/telephony/ImsiEncryptionInfo;-><init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;[BLjava/util/Date;)V
@@ -73173,7 +68266,6 @@
Landroid/telephony/ImsiEncryptionInfo;->mcc:Ljava/lang/String;
Landroid/telephony/ImsiEncryptionInfo;->mnc:Ljava/lang/String;
Landroid/telephony/ImsiEncryptionInfo;->publicKey:Ljava/security/PublicKey;
-Landroid/telephony/INetworkService$Stub$Proxy;
Landroid/telephony/INetworkService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/telephony/INetworkService$Stub$Proxy;->createNetworkServiceProvider(I)V
Landroid/telephony/INetworkService$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
@@ -73182,7 +68274,6 @@
Landroid/telephony/INetworkService$Stub$Proxy;->registerForNetworkRegistrationStateChanged(ILandroid/telephony/INetworkServiceCallback;)V
Landroid/telephony/INetworkService$Stub$Proxy;->removeNetworkServiceProvider(I)V
Landroid/telephony/INetworkService$Stub$Proxy;->unregisterForNetworkRegistrationStateChanged(ILandroid/telephony/INetworkServiceCallback;)V
-Landroid/telephony/INetworkService$Stub;
Landroid/telephony/INetworkService$Stub;-><init>()V
Landroid/telephony/INetworkService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/telephony/INetworkService;
Landroid/telephony/INetworkService$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -73191,28 +68282,23 @@
Landroid/telephony/INetworkService$Stub;->TRANSACTION_registerForNetworkRegistrationStateChanged:I
Landroid/telephony/INetworkService$Stub;->TRANSACTION_removeNetworkServiceProvider:I
Landroid/telephony/INetworkService$Stub;->TRANSACTION_unregisterForNetworkRegistrationStateChanged:I
-Landroid/telephony/INetworkService;
Landroid/telephony/INetworkService;->createNetworkServiceProvider(I)V
Landroid/telephony/INetworkService;->getNetworkRegistrationState(IILandroid/telephony/INetworkServiceCallback;)V
Landroid/telephony/INetworkService;->registerForNetworkRegistrationStateChanged(ILandroid/telephony/INetworkServiceCallback;)V
Landroid/telephony/INetworkService;->removeNetworkServiceProvider(I)V
Landroid/telephony/INetworkService;->unregisterForNetworkRegistrationStateChanged(ILandroid/telephony/INetworkServiceCallback;)V
-Landroid/telephony/INetworkServiceCallback$Stub$Proxy;
Landroid/telephony/INetworkServiceCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/telephony/INetworkServiceCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/telephony/INetworkServiceCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/telephony/INetworkServiceCallback$Stub$Proxy;->onGetNetworkRegistrationStateComplete(ILandroid/telephony/NetworkRegistrationState;)V
Landroid/telephony/INetworkServiceCallback$Stub$Proxy;->onNetworkStateChanged()V
-Landroid/telephony/INetworkServiceCallback$Stub;
Landroid/telephony/INetworkServiceCallback$Stub;-><init>()V
Landroid/telephony/INetworkServiceCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/telephony/INetworkServiceCallback;
Landroid/telephony/INetworkServiceCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/telephony/INetworkServiceCallback$Stub;->TRANSACTION_onGetNetworkRegistrationStateComplete:I
Landroid/telephony/INetworkServiceCallback$Stub;->TRANSACTION_onNetworkStateChanged:I
-Landroid/telephony/INetworkServiceCallback;
Landroid/telephony/INetworkServiceCallback;->onGetNetworkRegistrationStateComplete(ILandroid/telephony/NetworkRegistrationState;)V
Landroid/telephony/INetworkServiceCallback;->onNetworkStateChanged()V
-Landroid/telephony/LocationAccessPolicy;
Landroid/telephony/LocationAccessPolicy;-><init>()V
Landroid/telephony/LocationAccessPolicy;->canAccessCellLocation(Landroid/content/Context;Ljava/lang/String;IIZ)Z
Landroid/telephony/LocationAccessPolicy;->checkInteractAcrossUsersFull(Landroid/content/Context;)Z
@@ -73225,7 +68311,6 @@
Landroid/telephony/mbms/DownloadRequest$Builder;->source:Landroid/net/Uri;
Landroid/telephony/mbms/DownloadRequest$Builder;->subscriptionId:I
Landroid/telephony/mbms/DownloadRequest$Builder;->version:I
-Landroid/telephony/mbms/DownloadRequest$SerializationDataContainer;
Landroid/telephony/mbms/DownloadRequest$SerializationDataContainer;-><init>()V
Landroid/telephony/mbms/DownloadRequest$SerializationDataContainer;-><init>(Landroid/telephony/mbms/DownloadRequest;)V
Landroid/telephony/mbms/DownloadRequest$SerializationDataContainer;->appIntent:Ljava/lang/String;
@@ -73254,73 +68339,59 @@
Landroid/telephony/mbms/FileInfo;->uri:Landroid/net/Uri;
Landroid/telephony/mbms/FileServiceInfo;-><init>(Landroid/os/Parcel;)V
Landroid/telephony/mbms/FileServiceInfo;->files:Ljava/util/List;
-Landroid/telephony/mbms/IDownloadProgressListener$Stub$Proxy;
Landroid/telephony/mbms/IDownloadProgressListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/telephony/mbms/IDownloadProgressListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/telephony/mbms/IDownloadProgressListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/telephony/mbms/IDownloadProgressListener$Stub$Proxy;->onProgressUpdated(Landroid/telephony/mbms/DownloadRequest;Landroid/telephony/mbms/FileInfo;IIII)V
-Landroid/telephony/mbms/IDownloadProgressListener$Stub;
Landroid/telephony/mbms/IDownloadProgressListener$Stub;-><init>()V
Landroid/telephony/mbms/IDownloadProgressListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/telephony/mbms/IDownloadProgressListener;
Landroid/telephony/mbms/IDownloadProgressListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/telephony/mbms/IDownloadProgressListener$Stub;->TRANSACTION_onProgressUpdated:I
-Landroid/telephony/mbms/IDownloadProgressListener;
Landroid/telephony/mbms/IDownloadProgressListener;->onProgressUpdated(Landroid/telephony/mbms/DownloadRequest;Landroid/telephony/mbms/FileInfo;IIII)V
-Landroid/telephony/mbms/IDownloadStatusListener$Stub$Proxy;
Landroid/telephony/mbms/IDownloadStatusListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/telephony/mbms/IDownloadStatusListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/telephony/mbms/IDownloadStatusListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/telephony/mbms/IDownloadStatusListener$Stub$Proxy;->onStatusUpdated(Landroid/telephony/mbms/DownloadRequest;Landroid/telephony/mbms/FileInfo;I)V
-Landroid/telephony/mbms/IDownloadStatusListener$Stub;
Landroid/telephony/mbms/IDownloadStatusListener$Stub;-><init>()V
Landroid/telephony/mbms/IDownloadStatusListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/telephony/mbms/IDownloadStatusListener;
Landroid/telephony/mbms/IDownloadStatusListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/telephony/mbms/IDownloadStatusListener$Stub;->TRANSACTION_onStatusUpdated:I
-Landroid/telephony/mbms/IDownloadStatusListener;
Landroid/telephony/mbms/IDownloadStatusListener;->onStatusUpdated(Landroid/telephony/mbms/DownloadRequest;Landroid/telephony/mbms/FileInfo;I)V
-Landroid/telephony/mbms/IMbmsDownloadSessionCallback$Stub$Proxy;
Landroid/telephony/mbms/IMbmsDownloadSessionCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/telephony/mbms/IMbmsDownloadSessionCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/telephony/mbms/IMbmsDownloadSessionCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/telephony/mbms/IMbmsDownloadSessionCallback$Stub$Proxy;->onError(ILjava/lang/String;)V
Landroid/telephony/mbms/IMbmsDownloadSessionCallback$Stub$Proxy;->onFileServicesUpdated(Ljava/util/List;)V
Landroid/telephony/mbms/IMbmsDownloadSessionCallback$Stub$Proxy;->onMiddlewareReady()V
-Landroid/telephony/mbms/IMbmsDownloadSessionCallback$Stub;
Landroid/telephony/mbms/IMbmsDownloadSessionCallback$Stub;-><init>()V
Landroid/telephony/mbms/IMbmsDownloadSessionCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/telephony/mbms/IMbmsDownloadSessionCallback;
Landroid/telephony/mbms/IMbmsDownloadSessionCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/telephony/mbms/IMbmsDownloadSessionCallback$Stub;->TRANSACTION_onError:I
Landroid/telephony/mbms/IMbmsDownloadSessionCallback$Stub;->TRANSACTION_onFileServicesUpdated:I
Landroid/telephony/mbms/IMbmsDownloadSessionCallback$Stub;->TRANSACTION_onMiddlewareReady:I
-Landroid/telephony/mbms/IMbmsDownloadSessionCallback;
Landroid/telephony/mbms/IMbmsDownloadSessionCallback;->onError(ILjava/lang/String;)V
Landroid/telephony/mbms/IMbmsDownloadSessionCallback;->onFileServicesUpdated(Ljava/util/List;)V
Landroid/telephony/mbms/IMbmsDownloadSessionCallback;->onMiddlewareReady()V
-Landroid/telephony/mbms/IMbmsStreamingSessionCallback$Stub$Proxy;
Landroid/telephony/mbms/IMbmsStreamingSessionCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/telephony/mbms/IMbmsStreamingSessionCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/telephony/mbms/IMbmsStreamingSessionCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/telephony/mbms/IMbmsStreamingSessionCallback$Stub$Proxy;->onError(ILjava/lang/String;)V
Landroid/telephony/mbms/IMbmsStreamingSessionCallback$Stub$Proxy;->onMiddlewareReady()V
Landroid/telephony/mbms/IMbmsStreamingSessionCallback$Stub$Proxy;->onStreamingServicesUpdated(Ljava/util/List;)V
-Landroid/telephony/mbms/IMbmsStreamingSessionCallback$Stub;
Landroid/telephony/mbms/IMbmsStreamingSessionCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/telephony/mbms/IMbmsStreamingSessionCallback;
Landroid/telephony/mbms/IMbmsStreamingSessionCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/telephony/mbms/IMbmsStreamingSessionCallback$Stub;->TRANSACTION_onError:I
Landroid/telephony/mbms/IMbmsStreamingSessionCallback$Stub;->TRANSACTION_onMiddlewareReady:I
Landroid/telephony/mbms/IMbmsStreamingSessionCallback$Stub;->TRANSACTION_onStreamingServicesUpdated:I
-Landroid/telephony/mbms/IMbmsStreamingSessionCallback;
Landroid/telephony/mbms/IMbmsStreamingSessionCallback;->onError(ILjava/lang/String;)V
Landroid/telephony/mbms/IMbmsStreamingSessionCallback;->onMiddlewareReady()V
Landroid/telephony/mbms/IMbmsStreamingSessionCallback;->onStreamingServicesUpdated(Ljava/util/List;)V
-Landroid/telephony/mbms/InternalDownloadProgressListener;
Landroid/telephony/mbms/InternalDownloadProgressListener;-><init>(Landroid/telephony/mbms/DownloadProgressListener;Ljava/util/concurrent/Executor;)V
Landroid/telephony/mbms/InternalDownloadProgressListener;->mAppListener:Landroid/telephony/mbms/DownloadProgressListener;
Landroid/telephony/mbms/InternalDownloadProgressListener;->mExecutor:Ljava/util/concurrent/Executor;
Landroid/telephony/mbms/InternalDownloadProgressListener;->mIsStopped:Z
Landroid/telephony/mbms/InternalDownloadProgressListener;->onProgressUpdated(Landroid/telephony/mbms/DownloadRequest;Landroid/telephony/mbms/FileInfo;IIII)V
Landroid/telephony/mbms/InternalDownloadProgressListener;->stop()V
-Landroid/telephony/mbms/InternalDownloadSessionCallback;
Landroid/telephony/mbms/InternalDownloadSessionCallback;-><init>(Landroid/telephony/mbms/MbmsDownloadSessionCallback;Ljava/util/concurrent/Executor;)V
Landroid/telephony/mbms/InternalDownloadSessionCallback;->mAppCallback:Landroid/telephony/mbms/MbmsDownloadSessionCallback;
Landroid/telephony/mbms/InternalDownloadSessionCallback;->mExecutor:Ljava/util/concurrent/Executor;
@@ -73329,14 +68400,12 @@
Landroid/telephony/mbms/InternalDownloadSessionCallback;->onFileServicesUpdated(Ljava/util/List;)V
Landroid/telephony/mbms/InternalDownloadSessionCallback;->onMiddlewareReady()V
Landroid/telephony/mbms/InternalDownloadSessionCallback;->stop()V
-Landroid/telephony/mbms/InternalDownloadStatusListener;
Landroid/telephony/mbms/InternalDownloadStatusListener;-><init>(Landroid/telephony/mbms/DownloadStatusListener;Ljava/util/concurrent/Executor;)V
Landroid/telephony/mbms/InternalDownloadStatusListener;->mAppListener:Landroid/telephony/mbms/DownloadStatusListener;
Landroid/telephony/mbms/InternalDownloadStatusListener;->mExecutor:Ljava/util/concurrent/Executor;
Landroid/telephony/mbms/InternalDownloadStatusListener;->mIsStopped:Z
Landroid/telephony/mbms/InternalDownloadStatusListener;->onStatusUpdated(Landroid/telephony/mbms/DownloadRequest;Landroid/telephony/mbms/FileInfo;I)V
Landroid/telephony/mbms/InternalDownloadStatusListener;->stop()V
-Landroid/telephony/mbms/InternalStreamingServiceCallback;
Landroid/telephony/mbms/InternalStreamingServiceCallback;-><init>(Landroid/telephony/mbms/StreamingServiceCallback;Ljava/util/concurrent/Executor;)V
Landroid/telephony/mbms/InternalStreamingServiceCallback;->mAppCallback:Landroid/telephony/mbms/StreamingServiceCallback;
Landroid/telephony/mbms/InternalStreamingServiceCallback;->mExecutor:Ljava/util/concurrent/Executor;
@@ -73347,7 +68416,6 @@
Landroid/telephony/mbms/InternalStreamingServiceCallback;->onStreamMethodUpdated(I)V
Landroid/telephony/mbms/InternalStreamingServiceCallback;->onStreamStateUpdated(II)V
Landroid/telephony/mbms/InternalStreamingServiceCallback;->stop()V
-Landroid/telephony/mbms/InternalStreamingSessionCallback;
Landroid/telephony/mbms/InternalStreamingSessionCallback;-><init>(Landroid/telephony/mbms/MbmsStreamingSessionCallback;Ljava/util/concurrent/Executor;)V
Landroid/telephony/mbms/InternalStreamingSessionCallback;->mAppCallback:Landroid/telephony/mbms/MbmsStreamingSessionCallback;
Landroid/telephony/mbms/InternalStreamingSessionCallback;->mExecutor:Ljava/util/concurrent/Executor;
@@ -73356,7 +68424,6 @@
Landroid/telephony/mbms/InternalStreamingSessionCallback;->onMiddlewareReady()V
Landroid/telephony/mbms/InternalStreamingSessionCallback;->onStreamingServicesUpdated(Ljava/util/List;)V
Landroid/telephony/mbms/InternalStreamingSessionCallback;->stop()V
-Landroid/telephony/mbms/IStreamingServiceCallback$Stub$Proxy;
Landroid/telephony/mbms/IStreamingServiceCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/telephony/mbms/IStreamingServiceCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/telephony/mbms/IStreamingServiceCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -73365,7 +68432,6 @@
Landroid/telephony/mbms/IStreamingServiceCallback$Stub$Proxy;->onMediaDescriptionUpdated()V
Landroid/telephony/mbms/IStreamingServiceCallback$Stub$Proxy;->onStreamMethodUpdated(I)V
Landroid/telephony/mbms/IStreamingServiceCallback$Stub$Proxy;->onStreamStateUpdated(II)V
-Landroid/telephony/mbms/IStreamingServiceCallback$Stub;
Landroid/telephony/mbms/IStreamingServiceCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/telephony/mbms/IStreamingServiceCallback;
Landroid/telephony/mbms/IStreamingServiceCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/telephony/mbms/IStreamingServiceCallback$Stub;->TRANSACTION_onBroadcastSignalStrengthUpdated:I
@@ -73373,7 +68439,6 @@
Landroid/telephony/mbms/IStreamingServiceCallback$Stub;->TRANSACTION_onMediaDescriptionUpdated:I
Landroid/telephony/mbms/IStreamingServiceCallback$Stub;->TRANSACTION_onStreamMethodUpdated:I
Landroid/telephony/mbms/IStreamingServiceCallback$Stub;->TRANSACTION_onStreamStateUpdated:I
-Landroid/telephony/mbms/IStreamingServiceCallback;
Landroid/telephony/mbms/IStreamingServiceCallback;->onBroadcastSignalStrengthUpdated(I)V
Landroid/telephony/mbms/IStreamingServiceCallback;->onError(ILjava/lang/String;)V
Landroid/telephony/mbms/IStreamingServiceCallback;->onMediaDescriptionUpdated()V
@@ -73403,14 +68468,11 @@
Landroid/telephony/mbms/MbmsDownloadReceiver;->verifyIntentContents(Landroid/content/Context;Landroid/content/Intent;)Z
Landroid/telephony/mbms/MbmsDownloadReceiver;->verifyPermissionIntegrity(Landroid/content/Context;)V
Landroid/telephony/mbms/MbmsDownloadReceiver;->verifyTempFilePath(Landroid/content/Context;Ljava/lang/String;Landroid/net/Uri;)Z
-Landroid/telephony/mbms/MbmsDownloadSessionCallback$DownloadError;
Landroid/telephony/mbms/MbmsErrors$DownloadErrors;-><init>()V
Landroid/telephony/mbms/MbmsErrors$GeneralErrors;-><init>()V
Landroid/telephony/mbms/MbmsErrors$InitializationErrors;-><init>()V
Landroid/telephony/mbms/MbmsErrors$StreamingErrors;-><init>()V
Landroid/telephony/mbms/MbmsErrors;-><init>()V
-Landroid/telephony/mbms/MbmsStreamingSessionCallback$StreamingError;
-Landroid/telephony/mbms/MbmsTempFileProvider;
Landroid/telephony/mbms/MbmsTempFileProvider;-><init>()V
Landroid/telephony/mbms/MbmsTempFileProvider;->getEmbmsTempFileDir(Landroid/content/Context;)Ljava/io/File;
Landroid/telephony/mbms/MbmsTempFileProvider;->getFileForUri(Landroid/content/Context;Ljava/lang/String;Landroid/net/Uri;)Ljava/io/File;
@@ -73419,7 +68481,6 @@
Landroid/telephony/mbms/MbmsTempFileProvider;->mContext:Landroid/content/Context;
Landroid/telephony/mbms/MbmsTempFileProvider;->TEMP_FILE_ROOT_PREF_FILE_NAME:Ljava/lang/String;
Landroid/telephony/mbms/MbmsTempFileProvider;->TEMP_FILE_ROOT_PREF_NAME:Ljava/lang/String;
-Landroid/telephony/mbms/MbmsUtils;
Landroid/telephony/mbms/MbmsUtils;-><init>()V
Landroid/telephony/mbms/MbmsUtils;->getEmbmsTempFileDirForService(Landroid/content/Context;Ljava/lang/String;)Ljava/io/File;
Landroid/telephony/mbms/MbmsUtils;->getMiddlewareServiceInfo(Landroid/content/Context;Ljava/lang/String;)Landroid/content/pm/ServiceInfo;
@@ -73438,8 +68499,6 @@
Landroid/telephony/mbms/ServiceInfo;->sessionEndTime:Ljava/util/Date;
Landroid/telephony/mbms/ServiceInfo;->sessionStartTime:Ljava/util/Date;
Landroid/telephony/mbms/ServiceInfo;->writeToParcel(Landroid/os/Parcel;I)V
-Landroid/telephony/mbms/StreamingService$StreamingState;
-Landroid/telephony/mbms/StreamingService$StreamingStateChangeReason;
Landroid/telephony/mbms/StreamingService;-><init>(ILandroid/telephony/mbms/vendor/IMbmsStreamingService;Landroid/telephony/MbmsStreamingSession;Landroid/telephony/mbms/StreamingServiceInfo;Landroid/telephony/mbms/InternalStreamingServiceCallback;)V
Landroid/telephony/mbms/StreamingService;->getCallback()Landroid/telephony/mbms/InternalStreamingServiceCallback;
Landroid/telephony/mbms/StreamingService;->LOG_TAG:Ljava/lang/String;
@@ -73449,13 +68508,11 @@
Landroid/telephony/mbms/StreamingService;->mServiceInfo:Landroid/telephony/mbms/StreamingServiceInfo;
Landroid/telephony/mbms/StreamingService;->mSubscriptionId:I
Landroid/telephony/mbms/StreamingService;->sendErrorToApp(ILjava/lang/String;)V
-Landroid/telephony/mbms/StreamingServiceCallback$StreamingServiceError;
Landroid/telephony/mbms/StreamingServiceInfo;-><init>(Landroid/os/Parcel;)V
Landroid/telephony/mbms/UriPathPair;-><init>(Landroid/net/Uri;Landroid/net/Uri;)V
Landroid/telephony/mbms/UriPathPair;-><init>(Landroid/os/Parcel;)V
Landroid/telephony/mbms/UriPathPair;->mContentUri:Landroid/net/Uri;
Landroid/telephony/mbms/UriPathPair;->mFilePathUri:Landroid/net/Uri;
-Landroid/telephony/mbms/vendor/IMbmsDownloadService$Stub$Proxy;
Landroid/telephony/mbms/vendor/IMbmsDownloadService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/telephony/mbms/vendor/IMbmsDownloadService$Stub$Proxy;->addProgressListener(Landroid/telephony/mbms/DownloadRequest;Landroid/telephony/mbms/IDownloadProgressListener;)I
Landroid/telephony/mbms/vendor/IMbmsDownloadService$Stub$Proxy;->addStatusListener(Landroid/telephony/mbms/DownloadRequest;Landroid/telephony/mbms/IDownloadStatusListener;)I
@@ -73472,7 +68529,6 @@
Landroid/telephony/mbms/vendor/IMbmsDownloadService$Stub$Proxy;->requestUpdateFileServices(ILjava/util/List;)I
Landroid/telephony/mbms/vendor/IMbmsDownloadService$Stub$Proxy;->resetDownloadKnowledge(Landroid/telephony/mbms/DownloadRequest;)I
Landroid/telephony/mbms/vendor/IMbmsDownloadService$Stub$Proxy;->setTempFileRootDirectory(ILjava/lang/String;)I
-Landroid/telephony/mbms/vendor/IMbmsDownloadService$Stub;
Landroid/telephony/mbms/vendor/IMbmsDownloadService$Stub;-><init>()V
Landroid/telephony/mbms/vendor/IMbmsDownloadService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/telephony/mbms/vendor/IMbmsDownloadService;
Landroid/telephony/mbms/vendor/IMbmsDownloadService$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -73489,7 +68545,6 @@
Landroid/telephony/mbms/vendor/IMbmsDownloadService$Stub;->TRANSACTION_requestUpdateFileServices:I
Landroid/telephony/mbms/vendor/IMbmsDownloadService$Stub;->TRANSACTION_resetDownloadKnowledge:I
Landroid/telephony/mbms/vendor/IMbmsDownloadService$Stub;->TRANSACTION_setTempFileRootDirectory:I
-Landroid/telephony/mbms/vendor/IMbmsDownloadService;
Landroid/telephony/mbms/vendor/IMbmsDownloadService;->addProgressListener(Landroid/telephony/mbms/DownloadRequest;Landroid/telephony/mbms/IDownloadProgressListener;)I
Landroid/telephony/mbms/vendor/IMbmsDownloadService;->addStatusListener(Landroid/telephony/mbms/DownloadRequest;Landroid/telephony/mbms/IDownloadStatusListener;)I
Landroid/telephony/mbms/vendor/IMbmsDownloadService;->cancelDownload(Landroid/telephony/mbms/DownloadRequest;)I
@@ -73503,7 +68558,6 @@
Landroid/telephony/mbms/vendor/IMbmsDownloadService;->requestUpdateFileServices(ILjava/util/List;)I
Landroid/telephony/mbms/vendor/IMbmsDownloadService;->resetDownloadKnowledge(Landroid/telephony/mbms/DownloadRequest;)I
Landroid/telephony/mbms/vendor/IMbmsDownloadService;->setTempFileRootDirectory(ILjava/lang/String;)I
-Landroid/telephony/mbms/vendor/IMbmsStreamingService$Stub$Proxy;
Landroid/telephony/mbms/vendor/IMbmsStreamingService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/telephony/mbms/vendor/IMbmsStreamingService$Stub$Proxy;->dispose(I)V
Landroid/telephony/mbms/vendor/IMbmsStreamingService$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
@@ -73513,7 +68567,6 @@
Landroid/telephony/mbms/vendor/IMbmsStreamingService$Stub$Proxy;->requestUpdateStreamingServices(ILjava/util/List;)I
Landroid/telephony/mbms/vendor/IMbmsStreamingService$Stub$Proxy;->startStreaming(ILjava/lang/String;Landroid/telephony/mbms/IStreamingServiceCallback;)I
Landroid/telephony/mbms/vendor/IMbmsStreamingService$Stub$Proxy;->stopStreaming(ILjava/lang/String;)V
-Landroid/telephony/mbms/vendor/IMbmsStreamingService$Stub;
Landroid/telephony/mbms/vendor/IMbmsStreamingService$Stub;-><init>()V
Landroid/telephony/mbms/vendor/IMbmsStreamingService$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/telephony/mbms/vendor/IMbmsStreamingService$Stub;->TRANSACTION_dispose:I
@@ -73522,14 +68575,11 @@
Landroid/telephony/mbms/vendor/IMbmsStreamingService$Stub;->TRANSACTION_requestUpdateStreamingServices:I
Landroid/telephony/mbms/vendor/IMbmsStreamingService$Stub;->TRANSACTION_startStreaming:I
Landroid/telephony/mbms/vendor/IMbmsStreamingService$Stub;->TRANSACTION_stopStreaming:I
-Landroid/telephony/mbms/vendor/IMbmsStreamingService;
Landroid/telephony/mbms/vendor/IMbmsStreamingService;->dispose(I)V
Landroid/telephony/mbms/vendor/IMbmsStreamingService;->stopStreaming(ILjava/lang/String;)V
-Landroid/telephony/mbms/vendor/MbmsDownloadServiceBase$VendorDownloadProgressListener;
Landroid/telephony/mbms/vendor/MbmsDownloadServiceBase$VendorDownloadProgressListener;-><init>(Landroid/telephony/mbms/IDownloadProgressListener;)V
Landroid/telephony/mbms/vendor/MbmsDownloadServiceBase$VendorDownloadProgressListener;->mListener:Landroid/telephony/mbms/IDownloadProgressListener;
Landroid/telephony/mbms/vendor/MbmsDownloadServiceBase$VendorDownloadProgressListener;->onRemoteException(Landroid/os/RemoteException;)V
-Landroid/telephony/mbms/vendor/MbmsDownloadServiceBase$VendorDownloadStatusListener;
Landroid/telephony/mbms/vendor/MbmsDownloadServiceBase$VendorDownloadStatusListener;-><init>(Landroid/telephony/mbms/IDownloadStatusListener;)V
Landroid/telephony/mbms/vendor/MbmsDownloadServiceBase$VendorDownloadStatusListener;->mListener:Landroid/telephony/mbms/IDownloadStatusListener;
Landroid/telephony/mbms/vendor/MbmsDownloadServiceBase$VendorDownloadStatusListener;->onRemoteException(Landroid/os/RemoteException;)V
@@ -73543,8 +68593,6 @@
Landroid/telephony/mbms/vendor/MbmsDownloadServiceBase;->removeStatusListener(Landroid/telephony/mbms/DownloadRequest;Landroid/telephony/mbms/IDownloadStatusListener;)I
Landroid/telephony/mbms/vendor/MbmsStreamingServiceBase;->initialize(Landroid/telephony/mbms/IMbmsStreamingSessionCallback;I)I
Landroid/telephony/mbms/vendor/MbmsStreamingServiceBase;->startStreaming(ILjava/lang/String;Landroid/telephony/mbms/IStreamingServiceCallback;)I
-Landroid/telephony/MbmsDownloadSession$DownloadResultCode;
-Landroid/telephony/MbmsDownloadSession$DownloadStatus;
Landroid/telephony/MbmsDownloadSession;-><init>(Landroid/content/Context;Ljava/util/concurrent/Executor;ILandroid/telephony/mbms/MbmsDownloadSessionCallback;)V
Landroid/telephony/MbmsDownloadSession;->bindAndInitialize()I
Landroid/telephony/MbmsDownloadSession;->checkDownloadRequestDestination(Landroid/telephony/mbms/DownloadRequest;)V
@@ -73575,7 +68623,6 @@
Landroid/telephony/MbmsStreamingSession;->onStreamingServiceStopped(Landroid/telephony/mbms/StreamingService;)V
Landroid/telephony/MbmsStreamingSession;->sendErrorToApp(ILjava/lang/String;)V
Landroid/telephony/MbmsStreamingSession;->sIsInitialized:Ljava/util/concurrent/atomic/AtomicBoolean;
-Landroid/telephony/ModemActivityInfo;
Landroid/telephony/ModemActivityInfo;-><init>(JII[III)V
Landroid/telephony/ModemActivityInfo;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/telephony/ModemActivityInfo;->getEnergyUsed()I
@@ -73599,10 +68646,6 @@
Landroid/telephony/ModemActivityInfo;->setTimestamp(J)V
Landroid/telephony/ModemActivityInfo;->setTxTimeMillis([I)V
Landroid/telephony/ModemActivityInfo;->TX_POWER_LEVELS:I
-Landroid/telephony/NetworkRegistrationState$Domain;
-Landroid/telephony/NetworkRegistrationState$RegState;
-Landroid/telephony/NetworkRegistrationState$ServiceType;
-Landroid/telephony/NetworkRegistrationState;
Landroid/telephony/NetworkRegistrationState;-><init>(IIIIIZ[ILandroid/telephony/CellIdentity;)V
Landroid/telephony/NetworkRegistrationState;-><init>(IIIIIZ[ILandroid/telephony/CellIdentity;I)V
Landroid/telephony/NetworkRegistrationState;-><init>(IIIIIZ[ILandroid/telephony/CellIdentity;ZIII)V
@@ -73643,13 +68686,11 @@
Landroid/telephony/NetworkRegistrationState;->SERVICE_TYPE_SMS:I
Landroid/telephony/NetworkRegistrationState;->SERVICE_TYPE_VIDEO:I
Landroid/telephony/NetworkRegistrationState;->SERVICE_TYPE_VOICE:I
-Landroid/telephony/NetworkScan$ScanErrorCode;
Landroid/telephony/NetworkScan;-><init>(II)V
Landroid/telephony/NetworkScan;->getITelephony()Lcom/android/internal/telephony/ITelephony;
Landroid/telephony/NetworkScan;->mScanId:I
Landroid/telephony/NetworkScan;->mSubId:I
Landroid/telephony/NetworkScan;->TAG:Ljava/lang/String;
-Landroid/telephony/NetworkScanRequest$ScanType;
Landroid/telephony/NetworkScanRequest;-><init>(Landroid/os/Parcel;)V
Landroid/telephony/NetworkScanRequest;->MAX_BANDS:I
Landroid/telephony/NetworkScanRequest;->MAX_CHANNELS:I
@@ -73668,17 +68709,11 @@
Landroid/telephony/NetworkScanRequest;->mScanType:I
Landroid/telephony/NetworkScanRequest;->mSearchPeriodicity:I
Landroid/telephony/NetworkScanRequest;->mSpecifiers:[Landroid/telephony/RadioAccessSpecifier;
-Landroid/telephony/NetworkService$INetworkServiceWrapper;
-Landroid/telephony/NetworkService$INetworkServiceWrapper;-><init>()V
Landroid/telephony/NetworkService$INetworkServiceWrapper;->createNetworkServiceProvider(I)V
Landroid/telephony/NetworkService$INetworkServiceWrapper;->getNetworkRegistrationState(IILandroid/telephony/INetworkServiceCallback;)V
Landroid/telephony/NetworkService$INetworkServiceWrapper;->registerForNetworkRegistrationStateChanged(ILandroid/telephony/INetworkServiceCallback;)V
Landroid/telephony/NetworkService$INetworkServiceWrapper;->removeNetworkServiceProvider(I)V
Landroid/telephony/NetworkService$INetworkServiceWrapper;->unregisterForNetworkRegistrationStateChanged(ILandroid/telephony/INetworkServiceCallback;)V
-Landroid/telephony/NetworkService$NetworkServiceHandler;
-Landroid/telephony/NetworkService$NetworkServiceHandler;-><init>(Landroid/os/Looper;)V
-Landroid/telephony/NetworkService$NetworkServiceProvider;
-Landroid/telephony/NetworkService$NetworkServiceProvider;-><init>(I)V
Landroid/telephony/NetworkService$NetworkServiceProvider;->getNetworkRegistrationState(ILandroid/telephony/NetworkServiceCallback;)V
Landroid/telephony/NetworkService$NetworkServiceProvider;->getSlotId()I
Landroid/telephony/NetworkService$NetworkServiceProvider;->mNetworkRegistrationStateChangedCallbacks:Ljava/util/List;
@@ -73688,7 +68723,6 @@
Landroid/telephony/NetworkService$NetworkServiceProvider;->onDestroy()V
Landroid/telephony/NetworkService$NetworkServiceProvider;->registerForStateChanged(Landroid/telephony/INetworkServiceCallback;)V
Landroid/telephony/NetworkService$NetworkServiceProvider;->unregisterForStateChanged(Landroid/telephony/INetworkServiceCallback;)V
-Landroid/telephony/NetworkService;
Landroid/telephony/NetworkService;-><init>()V
Landroid/telephony/NetworkService;->createNetworkServiceProvider(I)Landroid/telephony/NetworkService$NetworkServiceProvider;
Landroid/telephony/NetworkService;->log(Ljava/lang/String;)V
@@ -73707,8 +68741,6 @@
Landroid/telephony/NetworkService;->NETWORK_SERVICE_REMOVE_NETWORK_SERVICE_PROVIDER:I
Landroid/telephony/NetworkService;->NETWORK_SERVICE_UNREGISTER_FOR_STATE_CHANGE:I
Landroid/telephony/NetworkService;->TAG:Ljava/lang/String;
-Landroid/telephony/NetworkServiceCallback$Result;
-Landroid/telephony/NetworkServiceCallback;
Landroid/telephony/NetworkServiceCallback;-><init>(Landroid/telephony/INetworkServiceCallback;)V
Landroid/telephony/NetworkServiceCallback;->mCallback:Ljava/lang/ref/WeakReference;
Landroid/telephony/NetworkServiceCallback;->mTag:Ljava/lang/String;
@@ -73719,7 +68751,6 @@
Landroid/telephony/NetworkServiceCallback;->RESULT_ERROR_INVALID_ARG:I
Landroid/telephony/NetworkServiceCallback;->RESULT_ERROR_UNSUPPORTED:I
Landroid/telephony/NetworkServiceCallback;->RESULT_SUCCESS:I
-Landroid/telephony/PcoData;
Landroid/telephony/PcoData;-><init>(ILjava/lang/String;I[B)V
Landroid/telephony/PcoData;-><init>(Landroid/os/Parcel;)V
Landroid/telephony/PcoData;->bearerProto:Ljava/lang/String;
@@ -73733,8 +68764,6 @@
Landroid/telephony/PhoneNumberFormattingTextWatcher;->mStopFormatting:Z
Landroid/telephony/PhoneNumberFormattingTextWatcher;->reformat(Ljava/lang/CharSequence;I)Ljava/lang/String;
Landroid/telephony/PhoneNumberFormattingTextWatcher;->stopFormatting()V
-Landroid/telephony/PhoneNumberUtils$BcdExtendType;
-Landroid/telephony/PhoneNumberUtils$CountryCallingCodeAndNewIndex;
Landroid/telephony/PhoneNumberUtils$CountryCallingCodeAndNewIndex;-><init>(II)V
Landroid/telephony/PhoneNumberUtils$CountryCallingCodeAndNewIndex;->countryCallingCode:I
Landroid/telephony/PhoneNumberUtils$CountryCallingCodeAndNewIndex;->newIndex:I
@@ -73810,7 +68839,6 @@
Landroid/telephony/PhoneNumberUtils;->tryGetISODigit(C)I
Landroid/telephony/PhoneNumberUtils;->tryGetTrunkPrefixOmittedIndex(Ljava/lang/String;I)I
Landroid/telephony/PhoneNumberUtils;->ttsSpanAsPhoneNumber(Landroid/text/Spannable;II)V
-Landroid/telephony/PhoneStateListener$IPhoneStateListenerStub;
Landroid/telephony/PhoneStateListener$IPhoneStateListenerStub;-><init>(Landroid/telephony/PhoneStateListener;)V
Landroid/telephony/PhoneStateListener$IPhoneStateListenerStub;->mPhoneStateListenerWeakRef:Ljava/lang/ref/WeakReference;
Landroid/telephony/PhoneStateListener$IPhoneStateListenerStub;->onCallForwardingIndicatorChanged(Z)V
@@ -73852,8 +68880,6 @@
Landroid/telephony/PhoneStateListener;->onDataActivationStateChanged(I)V
Landroid/telephony/PhoneStateListener;->onPhysicalChannelConfigurationChanged(Ljava/util/List;)V
Landroid/telephony/PhoneStateListener;->onVoiceActivationStateChanged(I)V
-Landroid/telephony/PhysicalChannelConfig$ConnectionStatus;
-Landroid/telephony/PhysicalChannelConfig;
Landroid/telephony/PhysicalChannelConfig;-><init>(II)V
Landroid/telephony/PhysicalChannelConfig;-><init>(Landroid/os/Parcel;)V
Landroid/telephony/PhysicalChannelConfig;->CONNECTION_PRIMARY_SERVING:I
@@ -73865,7 +68891,6 @@
Landroid/telephony/PhysicalChannelConfig;->getConnectionStatusString()Ljava/lang/String;
Landroid/telephony/PhysicalChannelConfig;->mCellBandwidthDownlinkKhz:I
Landroid/telephony/PhysicalChannelConfig;->mCellConnectionStatus:I
-Landroid/telephony/PreciseCallState;
Landroid/telephony/PreciseCallState;-><init>()V
Landroid/telephony/PreciseCallState;-><init>(Landroid/os/Parcel;)V
Landroid/telephony/PreciseCallState;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -73884,7 +68909,6 @@
Landroid/telephony/PreciseCallState;->PRECISE_CALL_STATE_INCOMING:I
Landroid/telephony/PreciseCallState;->PRECISE_CALL_STATE_NOT_VALID:I
Landroid/telephony/PreciseCallState;->PRECISE_CALL_STATE_WAITING:I
-Landroid/telephony/PreciseDataConnectionState;
Landroid/telephony/PreciseDataConnectionState;-><init>()V
Landroid/telephony/PreciseDataConnectionState;-><init>(Landroid/os/Parcel;)V
Landroid/telephony/PreciseDataConnectionState;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -73895,7 +68919,6 @@
Landroid/telephony/PreciseDataConnectionState;->mNetworkType:I
Landroid/telephony/PreciseDataConnectionState;->mReason:Ljava/lang/String;
Landroid/telephony/PreciseDataConnectionState;->mState:I
-Landroid/telephony/PreciseDisconnectCause;
Landroid/telephony/PreciseDisconnectCause;-><init>()V
Landroid/telephony/PreciseDisconnectCause;->ACCESS_CLASS_BLOCKED:I
Landroid/telephony/PreciseDisconnectCause;->ACCESS_INFORMATION_DISCARDED:I
@@ -74070,7 +69093,6 @@
Landroid/telephony/PreciseDisconnectCause;->UT_OPERATION_NOT_ALLOWED:I
Landroid/telephony/PreciseDisconnectCause;->UT_SERVICE_UNAVAILABLE:I
Landroid/telephony/PreciseDisconnectCause;->WIFI_LOST:I
-Landroid/telephony/RadioAccessFamily;
Landroid/telephony/RadioAccessFamily;->CDMA:I
Landroid/telephony/RadioAccessFamily;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/telephony/RadioAccessFamily;->EVDO:I
@@ -74107,7 +69129,6 @@
Landroid/telephony/RadioAccessSpecifier;->mBands:[I
Landroid/telephony/RadioAccessSpecifier;->mChannels:[I
Landroid/telephony/RadioAccessSpecifier;->mRadioAccessNetwork:I
-Landroid/telephony/Rlog;
Landroid/telephony/Rlog;-><init>()V
Landroid/telephony/Rlog;->isLoggable(Ljava/lang/String;I)Z
Landroid/telephony/Rlog;->pii(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/String;
@@ -74117,8 +69138,6 @@
Landroid/telephony/Rlog;->USER_BUILD:Z
Landroid/telephony/Rlog;->v(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
Landroid/telephony/Rlog;->w(Ljava/lang/String;Ljava/lang/Throwable;)I
-Landroid/telephony/ServiceState$DuplexMode;
-Landroid/telephony/ServiceState$RilRadioTechnology;
Landroid/telephony/ServiceState;->addNetworkRegistrationState(Landroid/telephony/NetworkRegistrationState;)V
Landroid/telephony/ServiceState;->convertBearerBitmaskToNetworkTypeBitmask(I)I
Landroid/telephony/ServiceState;->convertNetworkTypeBitmaskToBearerBitmask(I)I
@@ -74302,9 +69321,6 @@
Landroid/telephony/SmsManager;->sSubInstances:Ljava/util/Map;
Landroid/telephony/SmsManager;->TAG:Ljava/lang/String;
Landroid/telephony/SmsManager;->updateStoredMessageStatus(Landroid/net/Uri;Landroid/content/ContentValues;)Z
-Landroid/telephony/SmsMessage$Format;
-Landroid/telephony/SmsMessage$MessageClass;-><init>()V
-Landroid/telephony/SmsMessage$NoEmsSupportConfig;
Landroid/telephony/SmsMessage$NoEmsSupportConfig;-><init>([Ljava/lang/String;)V
Landroid/telephony/SmsMessage$NoEmsSupportConfig;->mGid1:Ljava/lang/String;
Landroid/telephony/SmsMessage$NoEmsSupportConfig;->mIsPrefix:Z
@@ -74349,9 +69365,6 @@
Landroid/telephony/SubscriptionInfo;->mSimSlotIndex:I
Landroid/telephony/SubscriptionInfo;->setCarrierName(Ljava/lang/CharSequence;)V
Landroid/telephony/SubscriptionInfo;->TEXT_SIZE:I
-Landroid/telephony/SubscriptionManager$OnSubscriptionsChangedListener$OnSubscriptionsChangedListenerHandler;
-Landroid/telephony/SubscriptionManager$OnSubscriptionsChangedListener$OnSubscriptionsChangedListenerHandler;-><init>()V
-Landroid/telephony/SubscriptionManager$OnSubscriptionsChangedListener$OnSubscriptionsChangedListenerHandler;-><init>(Landroid/os/Looper;)V
Landroid/telephony/SubscriptionManager$OnSubscriptionsChangedListener;-><init>(Landroid/os/Looper;)V
Landroid/telephony/SubscriptionManager$OnSubscriptionsChangedListener;->callback:Lcom/android/internal/telephony/IOnSubscriptionsChangedListener;
Landroid/telephony/SubscriptionManager$OnSubscriptionsChangedListener;->log(Ljava/lang/String;)V
@@ -74443,7 +69456,6 @@
Landroid/telephony/SubscriptionManager;->WFC_IMS_ROAMING_MODE:Ljava/lang/String;
Landroid/telephony/SubscriptionPlan$Builder;-><init>(Ljava/time/ZonedDateTime;Ljava/time/ZonedDateTime;Ljava/time/Period;)V
Landroid/telephony/SubscriptionPlan$Builder;->plan:Landroid/telephony/SubscriptionPlan;
-Landroid/telephony/SubscriptionPlan$LimitBehavior;
Landroid/telephony/SubscriptionPlan;-><init>(Landroid/os/Parcel;)V
Landroid/telephony/SubscriptionPlan;-><init>(Landroid/util/RecurrenceRule;)V
Landroid/telephony/SubscriptionPlan;->cycleRule:Landroid/util/RecurrenceRule;
@@ -74471,13 +69483,7 @@
Landroid/telephony/TelephonyHistogram;->mSampleCount:I
Landroid/telephony/TelephonyHistogram;->PRESENT:I
Landroid/telephony/TelephonyHistogram;->RANGE_CALCULATION_COUNT:I
-Landroid/telephony/TelephonyManager$IndicationFilters;
-Landroid/telephony/TelephonyManager$IndicationUpdateMode;
-Landroid/telephony/TelephonyManager$MultiSimVariants;
-Landroid/telephony/TelephonyManager$MultiSimVariants;-><init>()V
Landroid/telephony/TelephonyManager$MultiSimVariants;->valueOf(Ljava/lang/String;)Landroid/telephony/TelephonyManager$MultiSimVariants;
-Landroid/telephony/TelephonyManager$SimActivationState;
-Landroid/telephony/TelephonyManager$WifiCallingChoices;
Landroid/telephony/TelephonyManager$WifiCallingChoices;->ALWAYS_USE:I
Landroid/telephony/TelephonyManager$WifiCallingChoices;->ASK_EVERY_TIME:I
Landroid/telephony/TelephonyManager$WifiCallingChoices;->NEVER_USE:I
@@ -74643,7 +69649,6 @@
Landroid/telephony/TelephonyManager;->TAG:Ljava/lang/String;
Landroid/telephony/TelephonyManager;->USSD_RESPONSE:Ljava/lang/String;
Landroid/telephony/TelephonyManager;->USSD_RETURN_SUCCESS:I
-Landroid/telephony/TelephonyProtoEnums;
Landroid/telephony/TelephonyProtoEnums;-><init>()V
Landroid/telephony/TelephonyProtoEnums;->DATA_CONNECTION_POWER_STATE_HIGH:I
Landroid/telephony/TelephonyProtoEnums;->DATA_CONNECTION_POWER_STATE_LOW:I
@@ -74674,7 +69679,6 @@
Landroid/telephony/TelephonyProtoEnums;->SIGNAL_STRENGTH_MODERATE:I
Landroid/telephony/TelephonyProtoEnums;->SIGNAL_STRENGTH_NONE_OR_UNKNOWN:I
Landroid/telephony/TelephonyProtoEnums;->SIGNAL_STRENGTH_POOR:I
-Landroid/telephony/TelephonyScanManager$NetworkScanInfo;
Landroid/telephony/TelephonyScanManager$NetworkScanInfo;-><init>(Landroid/telephony/NetworkScanRequest;Ljava/util/concurrent/Executor;Landroid/telephony/TelephonyScanManager$NetworkScanCallback;)V
Landroid/telephony/TelephonyScanManager$NetworkScanInfo;->mCallback:Landroid/telephony/TelephonyScanManager$NetworkScanCallback;
Landroid/telephony/TelephonyScanManager$NetworkScanInfo;->mExecutor:Ljava/util/concurrent/Executor;
@@ -74700,7 +69704,6 @@
Landroid/telephony/UiccAccessRule;->mCertificateHash:[B
Landroid/telephony/UiccAccessRule;->mPackageName:Ljava/lang/String;
Landroid/telephony/UiccAccessRule;->TAG:Ljava/lang/String;
-Landroid/telephony/UiccSlotInfo$CardStateInfo;
Landroid/telephony/UiccSlotInfo;-><init>(Landroid/os/Parcel;)V
Landroid/telephony/UiccSlotInfo;->mCardId:Ljava/lang/String;
Landroid/telephony/UiccSlotInfo;->mCardStateInfo:I
@@ -74708,7 +69711,6 @@
Landroid/telephony/UiccSlotInfo;->mIsEuicc:Z
Landroid/telephony/UiccSlotInfo;->mIsExtendedApduSupported:Z
Landroid/telephony/UiccSlotInfo;->mLogicalSlotIdx:I
-Landroid/telephony/UssdResponse;
Landroid/telephony/UssdResponse;-><init>(Ljava/lang/String;Ljava/lang/CharSequence;)V
Landroid/telephony/UssdResponse;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/telephony/UssdResponse;->getReturnMessage()Ljava/lang/CharSequence;
@@ -74728,7 +69730,6 @@
Landroid/telephony/VisualVoicemailService;->MSG_TASK_ENDED:I
Landroid/telephony/VisualVoicemailService;->MSG_TASK_STOPPED:I
Landroid/telephony/VisualVoicemailService;->TAG:Ljava/lang/String;
-Landroid/telephony/VisualVoicemailSms$Builder;
Landroid/telephony/VisualVoicemailSms$Builder;-><init>()V
Landroid/telephony/VisualVoicemailSms$Builder;->build()Landroid/telephony/VisualVoicemailSms;
Landroid/telephony/VisualVoicemailSms$Builder;->mFields:Landroid/os/Bundle;
@@ -74754,7 +69755,6 @@
Landroid/telephony/VisualVoicemailSmsFilterSettings;->DEFAULT_DESTINATION_PORT:I
Landroid/telephony/VisualVoicemailSmsFilterSettings;->DEFAULT_ORIGINATING_NUMBERS:Ljava/util/List;
Landroid/telephony/VisualVoicemailSmsFilterSettings;->packageName:Ljava/lang/String;
-Landroid/telephony/VoiceSpecificRegistrationStates;
Landroid/telephony/VoiceSpecificRegistrationStates;-><init>(Landroid/os/Parcel;)V
Landroid/telephony/VoiceSpecificRegistrationStates;-><init>(ZIII)V
Landroid/telephony/VoiceSpecificRegistrationStates;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -74762,7 +69762,6 @@
Landroid/telephony/VoiceSpecificRegistrationStates;->defaultRoamingIndicator:I
Landroid/telephony/VoiceSpecificRegistrationStates;->roamingIndicator:I
Landroid/telephony/VoiceSpecificRegistrationStates;->systemIsInPrl:I
-Landroid/telephony/VoLteServiceState;
Landroid/telephony/VoLteServiceState;-><init>()V
Landroid/telephony/VoLteServiceState;-><init>(Landroid/os/Parcel;)V
Landroid/telephony/VoLteServiceState;-><init>(Landroid/telephony/VoLteServiceState;)V
@@ -74785,7 +69784,6 @@
Landroid/telephony/VoLteServiceState;->setFromNotifierBundle(Landroid/os/Bundle;)V
Landroid/telephony/VoLteServiceState;->SUPPORTED:I
Landroid/telephony/VoLteServiceState;->validateInput()V
-Landroid/text/AlteredCharSequence$AlteredSpanned;
Landroid/text/AlteredCharSequence$AlteredSpanned;-><init>(Ljava/lang/CharSequence;[CII)V
Landroid/text/AlteredCharSequence$AlteredSpanned;->mSpanned:Landroid/text/Spanned;
Landroid/text/AlteredCharSequence;-><init>(Ljava/lang/CharSequence;[CII)V
@@ -74794,11 +69792,9 @@
Landroid/text/AlteredCharSequence;->mSource:Ljava/lang/CharSequence;
Landroid/text/AlteredCharSequence;->mStart:I
Landroid/text/AlteredCharSequence;->update([CII)V
-Landroid/text/AndroidBidi$EmojiBidiOverride;
Landroid/text/AndroidBidi$EmojiBidiOverride;-><init>()V
Landroid/text/AndroidBidi$EmojiBidiOverride;->classify(I)I
Landroid/text/AndroidBidi$EmojiBidiOverride;->NO_OVERRIDE:I
-Landroid/text/AndroidBidi;
Landroid/text/AndroidBidi;-><init>()V
Landroid/text/AndroidBidi;->directions(I[BI[CII)Landroid/text/Layout$Directions;
Landroid/text/AndroidBidi;->sEmojiBidiOverride:Landroid/text/AndroidBidi$EmojiBidiOverride;
@@ -74806,7 +69802,6 @@
Landroid/text/Annotation;->mKey:Ljava/lang/String;
Landroid/text/Annotation;->mValue:Ljava/lang/String;
Landroid/text/Annotation;->writeToParcelInternal(Landroid/os/Parcel;I)V
-Landroid/text/AutoGrowArray$ByteArray;
Landroid/text/AutoGrowArray$ByteArray;-><init>()V
Landroid/text/AutoGrowArray$ByteArray;-><init>(I)V
Landroid/text/AutoGrowArray$ByteArray;->append(B)V
@@ -74820,7 +69815,6 @@
Landroid/text/AutoGrowArray$ByteArray;->resize(I)V
Landroid/text/AutoGrowArray$ByteArray;->set(IB)V
Landroid/text/AutoGrowArray$ByteArray;->size()I
-Landroid/text/AutoGrowArray$FloatArray;
Landroid/text/AutoGrowArray$FloatArray;-><init>()V
Landroid/text/AutoGrowArray$FloatArray;-><init>(I)V
Landroid/text/AutoGrowArray$FloatArray;->append(F)V
@@ -74834,7 +69828,6 @@
Landroid/text/AutoGrowArray$FloatArray;->resize(I)V
Landroid/text/AutoGrowArray$FloatArray;->set(IF)V
Landroid/text/AutoGrowArray$FloatArray;->size()I
-Landroid/text/AutoGrowArray$IntArray;
Landroid/text/AutoGrowArray$IntArray;-><init>()V
Landroid/text/AutoGrowArray$IntArray;-><init>(I)V
Landroid/text/AutoGrowArray$IntArray;->append(I)V
@@ -74848,7 +69841,6 @@
Landroid/text/AutoGrowArray$IntArray;->resize(I)V
Landroid/text/AutoGrowArray$IntArray;->set(II)V
Landroid/text/AutoGrowArray$IntArray;->size()I
-Landroid/text/AutoGrowArray;
Landroid/text/AutoGrowArray;-><init>()V
Landroid/text/AutoGrowArray;->computeNewCapacity(II)I
Landroid/text/AutoGrowArray;->MAX_CAPACITY_TO_BE_KEPT:I
@@ -74881,7 +69873,6 @@
Landroid/text/BidiFormatter$Builder;->mFlags:I
Landroid/text/BidiFormatter$Builder;->mIsRtlContext:Z
Landroid/text/BidiFormatter$Builder;->mTextDirectionHeuristic:Landroid/text/TextDirectionHeuristic;
-Landroid/text/BidiFormatter$DirectionalityEstimator;
Landroid/text/BidiFormatter$DirectionalityEstimator;-><init>(Ljava/lang/CharSequence;Z)V
Landroid/text/BidiFormatter$DirectionalityEstimator;->charIndex:I
Landroid/text/BidiFormatter$DirectionalityEstimator;->dirTypeBackward()B
@@ -74939,7 +69930,6 @@
Landroid/text/BoringLayout;->mMax:F
Landroid/text/BoringLayout;->mPaint:Landroid/graphics/Paint;
Landroid/text/BoringLayout;->mTopPadding:I
-Landroid/text/CharSequenceCharacterIterator;
Landroid/text/CharSequenceCharacterIterator;-><init>(Ljava/lang/CharSequence;II)V
Landroid/text/CharSequenceCharacterIterator;->mBeginIndex:I
Landroid/text/CharSequenceCharacterIterator;->mCharSeq:Ljava/lang/CharSequence;
@@ -74964,7 +69954,6 @@
Landroid/text/DynamicLayout$Builder;->mWidth:I
Landroid/text/DynamicLayout$Builder;->recycle(Landroid/text/DynamicLayout$Builder;)V
Landroid/text/DynamicLayout$Builder;->sPool:Landroid/util/Pools$SynchronizedPool;
-Landroid/text/DynamicLayout$ChangeWatcher;
Landroid/text/DynamicLayout$ChangeWatcher;-><init>(Landroid/text/DynamicLayout;)V
Landroid/text/DynamicLayout$ChangeWatcher;->mLayout:Ljava/lang/ref/WeakReference;
Landroid/text/DynamicLayout$ChangeWatcher;->reflow(Ljava/lang/CharSequence;III)V
@@ -75029,7 +70018,6 @@
Landroid/text/DynamicLayout;->updateAlwaysNeedsToBeRedrawn(I)V
Landroid/text/DynamicLayout;->updateBlocks(III)V
Landroid/text/Editable$Factory;->sInstance:Landroid/text/Editable$Factory;
-Landroid/text/Emoji;
Landroid/text/Emoji;-><init>()V
Landroid/text/Emoji;->CANCEL_TAG:I
Landroid/text/Emoji;->COMBINING_ENCLOSING_KEYCAP:I
@@ -75042,7 +70030,6 @@
Landroid/text/Emoji;->isTagSpecChar(I)Z
Landroid/text/Emoji;->VARIATION_SELECTOR_16:I
Landroid/text/Emoji;->ZERO_WIDTH_JOINER:I
-Landroid/text/FontConfig$Alias;
Landroid/text/FontConfig$Alias;-><init>(Ljava/lang/String;Ljava/lang/String;I)V
Landroid/text/FontConfig$Alias;->getName()Ljava/lang/String;
Landroid/text/FontConfig$Alias;->getToName()Ljava/lang/String;
@@ -75050,8 +70037,6 @@
Landroid/text/FontConfig$Alias;->mName:Ljava/lang/String;
Landroid/text/FontConfig$Alias;->mToName:Ljava/lang/String;
Landroid/text/FontConfig$Alias;->mWeight:I
-Landroid/text/FontConfig$Family$Variant;
-Landroid/text/FontConfig$Family;
Landroid/text/FontConfig$Family;-><init>(Ljava/lang/String;[Landroid/text/FontConfig$Font;[Ljava/lang/String;I)V
Landroid/text/FontConfig$Family;->getLanguages()[Ljava/lang/String;
Landroid/text/FontConfig$Family;->mFonts:[Landroid/text/FontConfig$Font;
@@ -75061,7 +70046,6 @@
Landroid/text/FontConfig$Family;->VARIANT_COMPACT:I
Landroid/text/FontConfig$Family;->VARIANT_DEFAULT:I
Landroid/text/FontConfig$Family;->VARIANT_ELEGANT:I
-Landroid/text/FontConfig$Font;
Landroid/text/FontConfig$Font;-><init>(Ljava/lang/String;I[Landroid/graphics/fonts/FontVariationAxis;IZLjava/lang/String;)V
Landroid/text/FontConfig$Font;->getFallbackFor()Ljava/lang/String;
Landroid/text/FontConfig$Font;->getFontName()Ljava/lang/String;
@@ -75074,7 +70058,6 @@
Landroid/text/FontConfig$Font;->mUri:Landroid/net/Uri;
Landroid/text/FontConfig$Font;->mWeight:I
Landroid/text/FontConfig$Font;->setUri(Landroid/net/Uri;)V
-Landroid/text/FontConfig;
Landroid/text/FontConfig;-><init>([Landroid/text/FontConfig$Family;[Landroid/text/FontConfig$Alias;)V
Landroid/text/FontConfig;->getAliases()[Landroid/text/FontConfig$Alias;
Landroid/text/FontConfig;->mAliases:[Landroid/text/FontConfig$Alias;
@@ -75099,7 +70082,6 @@
Landroid/text/format/DateUtils;->sLock:Ljava/lang/Object;
Landroid/text/format/DateUtils;->sNowTime:Landroid/text/format/Time;
Landroid/text/format/DateUtils;->sThenTime:Landroid/text/format/Time;
-Landroid/text/format/Formatter$BytesResult;
Landroid/text/format/Formatter$BytesResult;-><init>(Ljava/lang/String;Ljava/lang/String;J)V
Landroid/text/format/Formatter$BytesResult;->roundedBytes:J
Landroid/text/format/Formatter$BytesResult;->units:Ljava/lang/String;
@@ -75114,7 +70096,6 @@
Landroid/text/format/Formatter;->SECONDS_PER_DAY:I
Landroid/text/format/Formatter;->SECONDS_PER_HOUR:I
Landroid/text/format/Formatter;->SECONDS_PER_MINUTE:I
-Landroid/text/format/Time$TimeCalculator;
Landroid/text/format/Time$TimeCalculator;-><init>(Ljava/lang/String;)V
Landroid/text/format/Time$TimeCalculator;->compare(Landroid/text/format/Time$TimeCalculator;Landroid/text/format/Time$TimeCalculator;)I
Landroid/text/format/Time$TimeCalculator;->copyFieldsFromTime(Landroid/text/format/Time;)V
@@ -75142,14 +70123,12 @@
Landroid/text/format/Time;->Y_M_D:Ljava/lang/String;
Landroid/text/format/Time;->Y_M_D_T_H_M_S_000:Ljava/lang/String;
Landroid/text/format/Time;->Y_M_D_T_H_M_S_000_Z:Ljava/lang/String;
-Landroid/text/GraphicsOperations;
Landroid/text/GraphicsOperations;->drawText(Landroid/graphics/BaseCanvas;IIFFLandroid/graphics/Paint;)V
Landroid/text/GraphicsOperations;->drawTextRun(Landroid/graphics/BaseCanvas;IIIIFFZLandroid/graphics/Paint;)V
Landroid/text/GraphicsOperations;->getTextRunAdvances(IIIIZ[FILandroid/graphics/Paint;)F
Landroid/text/GraphicsOperations;->getTextRunCursor(IIIIILandroid/graphics/Paint;)I
Landroid/text/GraphicsOperations;->getTextWidths(II[FLandroid/graphics/Paint;)I
Landroid/text/GraphicsOperations;->measureText(IILandroid/graphics/Paint;)F
-Landroid/text/Html$HtmlParser;
Landroid/text/Html$HtmlParser;-><init>()V
Landroid/text/Html$HtmlParser;->schema:Lorg/ccil/cowan/tagsoup/HTMLSchema;
Landroid/text/Html;-><init>()V
@@ -75163,44 +70142,31 @@
Landroid/text/Html;->withinDiv(Ljava/lang/StringBuilder;Landroid/text/Spanned;III)V
Landroid/text/Html;->withinHtml(Ljava/lang/StringBuilder;Landroid/text/Spanned;I)V
Landroid/text/Html;->withinParagraph(Ljava/lang/StringBuilder;Landroid/text/Spanned;II)V
-Landroid/text/Hyphenator;
Landroid/text/Hyphenator;-><init>()V
Landroid/text/Hyphenator;->init()V
Landroid/text/Hyphenator;->nInit()V
-Landroid/text/InputFilter$AllCaps$CharSequenceWrapper;
Landroid/text/InputFilter$AllCaps$CharSequenceWrapper;-><init>(Ljava/lang/CharSequence;II)V
Landroid/text/InputFilter$AllCaps$CharSequenceWrapper;->mEnd:I
Landroid/text/InputFilter$AllCaps$CharSequenceWrapper;->mLength:I
Landroid/text/InputFilter$AllCaps$CharSequenceWrapper;->mSource:Ljava/lang/CharSequence;
Landroid/text/InputFilter$AllCaps$CharSequenceWrapper;->mStart:I
Landroid/text/InputFilter$AllCaps;->mLocale:Ljava/util/Locale;
-Landroid/text/Layout$Alignment;-><init>()V
-Landroid/text/Layout$BreakStrategy;
-Landroid/text/Layout$Direction;
Landroid/text/Layout$Directions;-><init>([I)V
Landroid/text/Layout$Directions;->mDirections:[I
-Landroid/text/Layout$Ellipsizer;
Landroid/text/Layout$Ellipsizer;-><init>(Ljava/lang/CharSequence;)V
Landroid/text/Layout$Ellipsizer;->mLayout:Landroid/text/Layout;
Landroid/text/Layout$Ellipsizer;->mMethod:Landroid/text/TextUtils$TruncateAt;
Landroid/text/Layout$Ellipsizer;->mText:Ljava/lang/CharSequence;
Landroid/text/Layout$Ellipsizer;->mWidth:I
-Landroid/text/Layout$HorizontalMeasurementProvider;
-Landroid/text/Layout$HorizontalMeasurementProvider;-><init>(IZ)V
Landroid/text/Layout$HorizontalMeasurementProvider;->get(I)F
Landroid/text/Layout$HorizontalMeasurementProvider;->init()V
Landroid/text/Layout$HorizontalMeasurementProvider;->mHorizontals:[F
Landroid/text/Layout$HorizontalMeasurementProvider;->mLine:I
Landroid/text/Layout$HorizontalMeasurementProvider;->mLineStartOffset:I
Landroid/text/Layout$HorizontalMeasurementProvider;->mPrimary:Z
-Landroid/text/Layout$HyphenationFrequency;
-Landroid/text/Layout$JustificationMode;
-Landroid/text/Layout$SelectionRectangleConsumer;
Landroid/text/Layout$SelectionRectangleConsumer;->accept(FFFFI)V
-Landroid/text/Layout$SpannedEllipsizer;
Landroid/text/Layout$SpannedEllipsizer;-><init>(Ljava/lang/CharSequence;)V
Landroid/text/Layout$SpannedEllipsizer;->mSpanned:Landroid/text/Spanned;
-Landroid/text/Layout$TabStops;
Landroid/text/Layout$TabStops;-><init>(I[Ljava/lang/Object;)V
Landroid/text/Layout$TabStops;->mIncrement:I
Landroid/text/Layout$TabStops;->mNumStops:I
@@ -75208,7 +70174,6 @@
Landroid/text/Layout$TabStops;->nextDefaultStop(FI)F
Landroid/text/Layout$TabStops;->nextTab(F)F
Landroid/text/Layout$TabStops;->reset(I[Ljava/lang/Object;)V
-Landroid/text/Layout$TextSelectionLayout;
Landroid/text/Layout;-><init>(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;Landroid/text/TextDirectionHeuristic;FF)V
Landroid/text/Layout;->addSelection(IIIIILandroid/text/Layout$SelectionRectangleConsumer;)V
Landroid/text/Layout;->DIR_REQUEST_DEFAULT_RTL:I
@@ -75269,7 +70234,6 @@
Landroid/text/LoginFilter;-><init>()V
Landroid/text/LoginFilter;-><init>(Z)V
Landroid/text/LoginFilter;->mAppendInvalid:Z
-Landroid/text/MeasuredParagraph;
Landroid/text/MeasuredParagraph;-><init>()V
Landroid/text/MeasuredParagraph;->applyMetricsAffectingSpan(Landroid/text/TextPaint;[Landroid/text/style/MetricAffectingSpan;IIJ)V
Landroid/text/MeasuredParagraph;->applyReplacementRun(Landroid/text/style/ReplacementSpan;IIJ)V
@@ -75325,7 +70289,6 @@
Landroid/text/MeasuredParagraph;->sPool:Landroid/util/Pools$SynchronizedPool;
Landroid/text/MeasuredParagraph;->sRegistry:Llibcore/util/NativeAllocationRegistry;
Landroid/text/MeasuredParagraph;->unbindNativeObject()V
-Landroid/text/method/AllCapsTransformationMethod;
Landroid/text/method/AllCapsTransformationMethod;->mEnabled:Z
Landroid/text/method/AllCapsTransformationMethod;->mLocale:Ljava/util/Locale;
Landroid/text/method/AllCapsTransformationMethod;->setLengthChangesAllowed(Z)V
@@ -75370,8 +70333,6 @@
Landroid/text/method/BaseMovementMethod;->scrollRight(Landroid/widget/TextView;Landroid/text/Spannable;I)Z
Landroid/text/method/BaseMovementMethod;->scrollTop(Landroid/widget/TextView;Landroid/text/Spannable;)Z
Landroid/text/method/BaseMovementMethod;->scrollUp(Landroid/widget/TextView;Landroid/text/Spannable;I)Z
-Landroid/text/method/CharacterPickerDialog$OptionsAdapter;
-Landroid/text/method/CharacterPickerDialog$OptionsAdapter;-><init>(Landroid/content/Context;)V
Landroid/text/method/CharacterPickerDialog;->mCancelButton:Landroid/widget/Button;
Landroid/text/method/CharacterPickerDialog;->mInflater:Landroid/view/LayoutInflater;
Landroid/text/method/CharacterPickerDialog;->mInsert:Z
@@ -75458,8 +70419,6 @@
Landroid/text/method/MetaKeyKeyListener;->SELECTING:Ljava/lang/Object;
Landroid/text/method/MetaKeyKeyListener;->SYM:Ljava/lang/Object;
Landroid/text/method/MetaKeyKeyListener;->USED:I
-Landroid/text/method/MultiTapKeyListener$Timeout;
-Landroid/text/method/MultiTapKeyListener$Timeout;-><init>(Landroid/text/Editable;)V
Landroid/text/method/MultiTapKeyListener$Timeout;->mBuffer:Landroid/text/Editable;
Landroid/text/method/MultiTapKeyListener;->mAutoText:Z
Landroid/text/method/MultiTapKeyListener;->mCapitalize:Landroid/text/method/TextKeyListener$Capitalize;
@@ -75473,17 +70432,13 @@
Landroid/text/method/NumberKeyListener;->collectionToArray(Ljava/util/Collection;)[C
Landroid/text/method/NumberKeyListener;->DATE_TIME_FORMAT_SYMBOLS:Ljava/lang/String;
Landroid/text/method/NumberKeyListener;->SINGLE_QUOTE:C
-Landroid/text/method/PasswordTransformationMethod$PasswordCharSequence;
Landroid/text/method/PasswordTransformationMethod$PasswordCharSequence;-><init>(Ljava/lang/CharSequence;)V
Landroid/text/method/PasswordTransformationMethod$PasswordCharSequence;->mSource:Ljava/lang/CharSequence;
-Landroid/text/method/PasswordTransformationMethod$ViewReference;
Landroid/text/method/PasswordTransformationMethod$ViewReference;-><init>(Landroid/view/View;)V
-Landroid/text/method/PasswordTransformationMethod$Visible;
Landroid/text/method/PasswordTransformationMethod$Visible;-><init>(Landroid/text/Spannable;Landroid/text/method/PasswordTransformationMethod;)V
Landroid/text/method/PasswordTransformationMethod$Visible;->mText:Landroid/text/Spannable;
Landroid/text/method/PasswordTransformationMethod$Visible;->mTransformer:Landroid/text/method/PasswordTransformationMethod;
Landroid/text/method/PasswordTransformationMethod;->removeVisibleSpans(Landroid/text/Spannable;)V
-Landroid/text/method/QwertyKeyListener$Replaced;
Landroid/text/method/QwertyKeyListener$Replaced;-><init>([C)V
Landroid/text/method/QwertyKeyListener$Replaced;->mText:[C
Landroid/text/method/QwertyKeyListener;-><init>(Landroid/text/method/TextKeyListener$Capitalize;ZZ)V
@@ -75496,25 +70451,19 @@
Landroid/text/method/QwertyKeyListener;->showCharacterPicker(Landroid/view/View;Landroid/text/Editable;CZI)Z
Landroid/text/method/QwertyKeyListener;->sInstance:[Landroid/text/method/QwertyKeyListener;
Landroid/text/method/QwertyKeyListener;->toTitleCase(Ljava/lang/String;)Ljava/lang/String;
-Landroid/text/method/ReplacementTransformationMethod$ReplacementCharSequence;
Landroid/text/method/ReplacementTransformationMethod$ReplacementCharSequence;-><init>(Ljava/lang/CharSequence;[C[C)V
Landroid/text/method/ReplacementTransformationMethod$ReplacementCharSequence;->mOriginal:[C
Landroid/text/method/ReplacementTransformationMethod$ReplacementCharSequence;->mReplacement:[C
Landroid/text/method/ReplacementTransformationMethod$ReplacementCharSequence;->mSource:Ljava/lang/CharSequence;
-Landroid/text/method/ReplacementTransformationMethod$SpannedReplacementCharSequence;
Landroid/text/method/ReplacementTransformationMethod$SpannedReplacementCharSequence;-><init>(Landroid/text/Spanned;[C[C)V
Landroid/text/method/ReplacementTransformationMethod$SpannedReplacementCharSequence;->mSpanned:Landroid/text/Spanned;
Landroid/text/method/ScrollingMovementMethod;->sInstance:Landroid/text/method/ScrollingMovementMethod;
Landroid/text/method/SingleLineTransformationMethod;->ORIGINAL:[C
Landroid/text/method/SingleLineTransformationMethod;->REPLACEMENT:[C
Landroid/text/method/SingleLineTransformationMethod;->sInstance:Landroid/text/method/SingleLineTransformationMethod;
-Landroid/text/method/TextKeyListener$Capitalize;-><init>()V
-Landroid/text/method/TextKeyListener$NullKeyListener;
Landroid/text/method/TextKeyListener$NullKeyListener;-><init>()V
Landroid/text/method/TextKeyListener$NullKeyListener;->getInstance()Landroid/text/method/TextKeyListener$NullKeyListener;
Landroid/text/method/TextKeyListener$NullKeyListener;->sInstance:Landroid/text/method/TextKeyListener$NullKeyListener;
-Landroid/text/method/TextKeyListener$SettingsObserver;
-Landroid/text/method/TextKeyListener$SettingsObserver;-><init>()V
Landroid/text/method/TextKeyListener;->ACTIVE:Ljava/lang/Object;
Landroid/text/method/TextKeyListener;->AUTO_CAP:I
Landroid/text/method/TextKeyListener;->AUTO_PERIOD:I
@@ -75541,7 +70490,6 @@
Landroid/text/method/TimeKeyListener;->SKELETON_24HOUR:Ljava/lang/String;
Landroid/text/method/TimeKeyListener;->sLock:Ljava/lang/Object;
Landroid/text/method/TimeKeyListener;->SYMBOLS_TO_IGNORE:Ljava/lang/String;
-Landroid/text/method/Touch$DragState;
Landroid/text/method/Touch$DragState;-><init>(FFII)V
Landroid/text/method/Touch$DragState;->mFarEnough:Z
Landroid/text/method/Touch$DragState;->mScrollX:I
@@ -75550,8 +70498,6 @@
Landroid/text/method/Touch$DragState;->mX:F
Landroid/text/method/Touch$DragState;->mY:F
Landroid/text/method/Touch;-><init>()V
-Landroid/text/method/TransformationMethod2;
-Landroid/text/method/WordIterator;
Landroid/text/method/WordIterator;-><init>()V
Landroid/text/method/WordIterator;->checkOffsetIsValid(I)V
Landroid/text/method/WordIterator;->getBeginning(IZ)I
@@ -75567,7 +70513,6 @@
Landroid/text/method/WordIterator;->mIterator:Landroid/icu/text/BreakIterator;
Landroid/text/method/WordIterator;->mStart:I
Landroid/text/method/WordIterator;->WINDOW_WIDTH:I
-Landroid/text/PackedIntVector;
Landroid/text/PackedIntVector;-><init>(I)V
Landroid/text/PackedIntVector;->adjustValuesBelow(III)V
Landroid/text/PackedIntVector;->deleteAt(II)V
@@ -75586,7 +70531,6 @@
Landroid/text/PackedIntVector;->setValueInternal(III)V
Landroid/text/PackedIntVector;->size()I
Landroid/text/PackedIntVector;->width()I
-Landroid/text/PackedObjectVector;
Landroid/text/PackedObjectVector;-><init>(I)V
Landroid/text/PackedObjectVector;->deleteAt(II)V
Landroid/text/PackedObjectVector;->dump()V
@@ -75604,7 +70548,6 @@
Landroid/text/PackedObjectVector;->width()I
Landroid/text/ParcelableSpan;->getSpanTypeIdInternal()I
Landroid/text/ParcelableSpan;->writeToParcelInternal(Landroid/os/Parcel;I)V
-Landroid/text/PrecomputedText$ParagraphInfo;
Landroid/text/PrecomputedText$ParagraphInfo;-><init>(ILandroid/text/MeasuredParagraph;)V
Landroid/text/PrecomputedText$ParagraphInfo;->measured:Landroid/text/MeasuredParagraph;
Landroid/text/PrecomputedText$ParagraphInfo;->paragraphEnd:I
@@ -75634,15 +70577,11 @@
Landroid/text/PrecomputedText;->mParams:Landroid/text/PrecomputedText$Params;
Landroid/text/PrecomputedText;->mStart:I
Landroid/text/PrecomputedText;->mText:Landroid/text/SpannableString;
-Landroid/text/Selection$END;
Landroid/text/Selection$END;-><init>()V
-Landroid/text/Selection$MEMORY;
Landroid/text/Selection$MEMORY;-><init>()V
-Landroid/text/Selection$PositionIterator;
Landroid/text/Selection$PositionIterator;->DONE:I
Landroid/text/Selection$PositionIterator;->following(I)I
Landroid/text/Selection$PositionIterator;->preceding(I)I
-Landroid/text/Selection$START;
Landroid/text/Selection$START;-><init>()V
Landroid/text/Selection;-><init>()V
Landroid/text/Selection;->chooseHorizontal(Landroid/text/Layout;III)I
@@ -75719,14 +70658,12 @@
Landroid/text/SpannableStringBuilder;->TAG:Ljava/lang/String;
Landroid/text/SpannableStringBuilder;->treeRoot()I
Landroid/text/SpannableStringBuilder;->updatedIntervalBound(IIIIZZ)I
-Landroid/text/SpannableStringInternal;
Landroid/text/SpannableStringInternal;-><init>(Ljava/lang/CharSequence;IIZ)V
Landroid/text/SpannableStringInternal;->copySpans(Landroid/text/SpannableStringInternal;IIZ)V
Landroid/text/SpannableStringInternal;->copySpans(Landroid/text/Spanned;IIZ)V
Landroid/text/SpannableStringInternal;->removeSpan(Ljava/lang/Object;I)V
Landroid/text/SpannedString;-><init>(Ljava/lang/CharSequence;II)V
Landroid/text/SpannedString;-><init>(Ljava/lang/CharSequence;Z)V
-Landroid/text/SpanSet;
Landroid/text/SpanSet;-><init>(Ljava/lang/Class;)V
Landroid/text/SpanSet;->classType:Ljava/lang/Class;
Landroid/text/SpanSet;->getNextTransition(II)I
@@ -75769,7 +70706,6 @@
Landroid/text/StaticLayout$Builder;->setText(Ljava/lang/CharSequence;II)Landroid/text/StaticLayout$Builder;
Landroid/text/StaticLayout$Builder;->setWidth(I)Landroid/text/StaticLayout$Builder;
Landroid/text/StaticLayout$Builder;->sPool:Landroid/util/Pools$SynchronizedPool;
-Landroid/text/StaticLayout$LineBreaks;
Landroid/text/StaticLayout$LineBreaks;-><init>()V
Landroid/text/StaticLayout$LineBreaks;->INITIAL_SIZE:I
Landroid/text/StaticLayout;-><init>(Landroid/text/StaticLayout$Builder;)V
@@ -75816,7 +70752,6 @@
Landroid/text/style/AbsoluteSizeSpan;->mDip:Z
Landroid/text/style/AbsoluteSizeSpan;->mSize:I
Landroid/text/style/AbsoluteSizeSpan;->writeToParcelInternal(Landroid/os/Parcel;I)V
-Landroid/text/style/AccessibilityClickableSpan;
Landroid/text/style/AccessibilityClickableSpan;-><init>(I)V
Landroid/text/style/AccessibilityClickableSpan;-><init>(Landroid/os/Parcel;)V
Landroid/text/style/AccessibilityClickableSpan;->copyConnectionDataFrom(Landroid/view/accessibility/AccessibilityNodeInfo;)V
@@ -75828,7 +70763,6 @@
Landroid/text/style/AccessibilityClickableSpan;->mSourceNodeId:J
Landroid/text/style/AccessibilityClickableSpan;->mWindowId:I
Landroid/text/style/AccessibilityClickableSpan;->writeToParcelInternal(Landroid/os/Parcel;I)V
-Landroid/text/style/AccessibilityURLSpan;
Landroid/text/style/AccessibilityURLSpan;-><init>(Landroid/os/Parcel;)V
Landroid/text/style/AccessibilityURLSpan;-><init>(Landroid/text/style/URLSpan;)V
Landroid/text/style/AccessibilityURLSpan;->copyConnectionDataFrom(Landroid/view/accessibility/AccessibilityNodeInfo;)V
@@ -75848,7 +70782,6 @@
Landroid/text/style/BulletSpan;->STANDARD_BULLET_RADIUS:I
Landroid/text/style/BulletSpan;->STANDARD_COLOR:I
Landroid/text/style/BulletSpan;->writeToParcelInternal(Landroid/os/Parcel;I)V
-Landroid/text/style/CharacterStyle$Passthrough;
Landroid/text/style/CharacterStyle$Passthrough;-><init>(Landroid/text/style/CharacterStyle;)V
Landroid/text/style/CharacterStyle$Passthrough;->mStyle:Landroid/text/style/CharacterStyle;
Landroid/text/style/ClickableSpan;->getId()I
@@ -75880,7 +70813,6 @@
Landroid/text/style/LocaleSpan;->mLocales:Landroid/os/LocaleList;
Landroid/text/style/LocaleSpan;->writeToParcelInternal(Landroid/os/Parcel;I)V
Landroid/text/style/MaskFilterSpan;->mFilter:Landroid/graphics/MaskFilter;
-Landroid/text/style/MetricAffectingSpan$Passthrough;
Landroid/text/style/MetricAffectingSpan$Passthrough;-><init>(Landroid/text/style/MetricAffectingSpan;)V
Landroid/text/style/MetricAffectingSpan$Passthrough;->mStyle:Landroid/text/style/MetricAffectingSpan;
Landroid/text/style/QuoteSpan;->getSpanTypeIdInternal()I
@@ -75895,7 +70827,6 @@
Landroid/text/style/ScaleXSpan;->getSpanTypeIdInternal()I
Landroid/text/style/ScaleXSpan;->mProportion:F
Landroid/text/style/ScaleXSpan;->writeToParcelInternal(Landroid/os/Parcel;I)V
-Landroid/text/style/SpellCheckSpan;
Landroid/text/style/SpellCheckSpan;->getSpanTypeIdInternal()I
Landroid/text/style/SpellCheckSpan;->mSpellCheckInProgress:Z
Landroid/text/style/SpellCheckSpan;->writeToParcelInternal(Landroid/os/Parcel;I)V
@@ -75907,7 +70838,6 @@
Landroid/text/style/StyleSpan;->writeToParcelInternal(Landroid/os/Parcel;I)V
Landroid/text/style/SubscriptSpan;->getSpanTypeIdInternal()I
Landroid/text/style/SubscriptSpan;->writeToParcelInternal(Landroid/os/Parcel;I)V
-Landroid/text/style/SuggestionRangeSpan;
Landroid/text/style/SuggestionRangeSpan;->getSpanTypeIdInternal()I
Landroid/text/style/SuggestionRangeSpan;->mBackgroundColor:I
Landroid/text/style/SuggestionRangeSpan;->writeToParcelInternal(Landroid/os/Parcel;I)V
@@ -75956,28 +70886,22 @@
Landroid/text/style/URLSpan;->getSpanTypeIdInternal()I
Landroid/text/style/URLSpan;->mURL:Ljava/lang/String;
Landroid/text/style/URLSpan;->writeToParcelInternal(Landroid/os/Parcel;I)V
-Landroid/text/TextDirectionHeuristics$AnyStrong;
Landroid/text/TextDirectionHeuristics$AnyStrong;-><init>(Z)V
Landroid/text/TextDirectionHeuristics$AnyStrong;->checkRtl(Ljava/lang/CharSequence;II)I
Landroid/text/TextDirectionHeuristics$AnyStrong;->INSTANCE_LTR:Landroid/text/TextDirectionHeuristics$AnyStrong;
Landroid/text/TextDirectionHeuristics$AnyStrong;->INSTANCE_RTL:Landroid/text/TextDirectionHeuristics$AnyStrong;
Landroid/text/TextDirectionHeuristics$AnyStrong;->mLookForRtl:Z
-Landroid/text/TextDirectionHeuristics$FirstStrong;
Landroid/text/TextDirectionHeuristics$FirstStrong;-><init>()V
Landroid/text/TextDirectionHeuristics$FirstStrong;->checkRtl(Ljava/lang/CharSequence;II)I
Landroid/text/TextDirectionHeuristics$FirstStrong;->INSTANCE:Landroid/text/TextDirectionHeuristics$FirstStrong;
-Landroid/text/TextDirectionHeuristics$TextDirectionAlgorithm;
Landroid/text/TextDirectionHeuristics$TextDirectionAlgorithm;->checkRtl(Ljava/lang/CharSequence;II)I
-Landroid/text/TextDirectionHeuristics$TextDirectionHeuristicImpl;
Landroid/text/TextDirectionHeuristics$TextDirectionHeuristicImpl;-><init>(Landroid/text/TextDirectionHeuristics$TextDirectionAlgorithm;)V
Landroid/text/TextDirectionHeuristics$TextDirectionHeuristicImpl;->defaultIsRtl()Z
Landroid/text/TextDirectionHeuristics$TextDirectionHeuristicImpl;->doCheck(Ljava/lang/CharSequence;II)Z
Landroid/text/TextDirectionHeuristics$TextDirectionHeuristicImpl;->mAlgorithm:Landroid/text/TextDirectionHeuristics$TextDirectionAlgorithm;
-Landroid/text/TextDirectionHeuristics$TextDirectionHeuristicInternal;
Landroid/text/TextDirectionHeuristics$TextDirectionHeuristicInternal;-><init>(Landroid/text/TextDirectionHeuristics$TextDirectionAlgorithm;Z)V
Landroid/text/TextDirectionHeuristics$TextDirectionHeuristicInternal;->defaultIsRtl()Z
Landroid/text/TextDirectionHeuristics$TextDirectionHeuristicInternal;->mDefaultIsRtl:Z
-Landroid/text/TextDirectionHeuristics$TextDirectionHeuristicLocale;
Landroid/text/TextDirectionHeuristics$TextDirectionHeuristicLocale;-><init>()V
Landroid/text/TextDirectionHeuristics$TextDirectionHeuristicLocale;->defaultIsRtl()Z
Landroid/text/TextDirectionHeuristics$TextDirectionHeuristicLocale;->INSTANCE:Landroid/text/TextDirectionHeuristics$TextDirectionHeuristicLocale;
@@ -75985,7 +70909,6 @@
Landroid/text/TextDirectionHeuristics;->STATE_FALSE:I
Landroid/text/TextDirectionHeuristics;->STATE_TRUE:I
Landroid/text/TextDirectionHeuristics;->STATE_UNKNOWN:I
-Landroid/text/TextLine$DecorationInfo;
Landroid/text/TextLine$DecorationInfo;-><init>()V
Landroid/text/TextLine$DecorationInfo;->copyInfo()Landroid/text/TextLine$DecorationInfo;
Landroid/text/TextLine$DecorationInfo;->end:I
@@ -75995,7 +70918,6 @@
Landroid/text/TextLine$DecorationInfo;->start:I
Landroid/text/TextLine$DecorationInfo;->underlineColor:I
Landroid/text/TextLine$DecorationInfo;->underlineThickness:F
-Landroid/text/TextLine;
Landroid/text/TextLine;-><init>()V
Landroid/text/TextLine;->adjustHyphenEdit(III)I
Landroid/text/TextLine;->countStretchableSpaces(II)I
@@ -76041,7 +70963,6 @@
Landroid/text/TextLine;->updateMetrics(Landroid/graphics/Paint$FontMetricsInt;IIIII)V
Landroid/text/TextPaint;->getUnderlineThickness()F
Landroid/text/TextPaint;->hasEqualAttributes(Landroid/text/TextPaint;)Z
-Landroid/text/TextUtils$Reverser;
Landroid/text/TextUtils$Reverser;-><init>(Ljava/lang/CharSequence;II)V
Landroid/text/TextUtils$Reverser;->mEnd:I
Landroid/text/TextUtils$Reverser;->mSource:Ljava/lang/CharSequence;
@@ -76050,7 +70971,6 @@
Landroid/text/TextUtils$SimpleStringSplitter;->mLength:I
Landroid/text/TextUtils$SimpleStringSplitter;->mPosition:I
Landroid/text/TextUtils$SimpleStringSplitter;->mString:Ljava/lang/String;
-Landroid/text/TextUtils$TruncateAt;-><init>()V
Landroid/text/TextUtils;-><init>()V
Landroid/text/TextUtils;->ABSOLUTE_SIZE_SPAN:I
Landroid/text/TextUtils;->ACCESSIBILITY_CLICKABLE_SPAN:I
@@ -76113,7 +71033,6 @@
Landroid/text/TextUtils;->URL_SPAN:I
Landroid/text/TextUtils;->wrap(Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/lang/String;)V
Landroid/text/TextUtils;->writeWhere(Landroid/os/Parcel;Landroid/text/Spanned;Ljava/lang/Object;)V
-Landroid/text/util/Linkify$LinkifyMask;
Landroid/text/util/Linkify;->addLinkMovementMethod(Landroid/widget/TextView;)V
Landroid/text/util/Linkify;->addLinks(Landroid/text/Spannable;ILandroid/content/Context;)Z
Landroid/text/util/Linkify;->addLinksAsync(Landroid/text/Spannable;Landroid/view/textclassifier/TextClassifier;I)Ljava/util/concurrent/Future;
@@ -76129,7 +71048,6 @@
Landroid/text/util/Linkify;->makeUrl(Ljava/lang/String;[Ljava/lang/String;Ljava/util/regex/Matcher;Landroid/text/util/Linkify$TransformFilter;)Ljava/lang/String;
Landroid/text/util/Linkify;->PHONE_NUMBER_MINIMUM_DIGITS:I
Landroid/text/util/Linkify;->pruneOverlaps(Ljava/util/ArrayList;)V
-Landroid/text/util/LinkSpec;
Landroid/text/util/LinkSpec;-><init>()V
Landroid/text/util/LinkSpec;->end:I
Landroid/text/util/LinkSpec;->start:I
@@ -76150,7 +71068,6 @@
Landroid/transition/ArcMotion;->mMinimumVerticalTangent:F
Landroid/transition/ArcMotion;->toTangent(F)F
Landroid/transition/AutoTransition;->init()V
-Landroid/transition/ChangeBounds$ViewBounds;
Landroid/transition/ChangeBounds$ViewBounds;-><init>(Landroid/view/View;)V
Landroid/transition/ChangeBounds$ViewBounds;->mBottom:I
Landroid/transition/ChangeBounds$ViewBounds;->mBottomRightCalls:I
@@ -76197,7 +71114,6 @@
Landroid/transition/ChangeScroll;->PROPERTIES:[Ljava/lang/String;
Landroid/transition/ChangeScroll;->PROPNAME_SCROLL_X:Ljava/lang/String;
Landroid/transition/ChangeScroll;->PROPNAME_SCROLL_Y:Ljava/lang/String;
-Landroid/transition/ChangeText;
Landroid/transition/ChangeText;-><init>()V
Landroid/transition/ChangeText;->captureValues(Landroid/transition/TransitionValues;)V
Landroid/transition/ChangeText;->CHANGE_BEHAVIOR_IN:I
@@ -76214,12 +71130,10 @@
Landroid/transition/ChangeText;->setChangeBehavior(I)Landroid/transition/ChangeText;
Landroid/transition/ChangeText;->setSelection(Landroid/widget/EditText;II)V
Landroid/transition/ChangeText;->sTransitionProperties:[Ljava/lang/String;
-Landroid/transition/ChangeTransform$GhostListener;
Landroid/transition/ChangeTransform$GhostListener;-><init>(Landroid/view/View;Landroid/view/View;Landroid/view/GhostView;)V
Landroid/transition/ChangeTransform$GhostListener;->mGhostView:Landroid/view/GhostView;
Landroid/transition/ChangeTransform$GhostListener;->mStartView:Landroid/view/View;
Landroid/transition/ChangeTransform$GhostListener;->mView:Landroid/view/View;
-Landroid/transition/ChangeTransform$PathAnimatorMatrix;
Landroid/transition/ChangeTransform$PathAnimatorMatrix;-><init>(Landroid/view/View;[F)V
Landroid/transition/ChangeTransform$PathAnimatorMatrix;->getMatrix()Landroid/graphics/Matrix;
Landroid/transition/ChangeTransform$PathAnimatorMatrix;->mMatrix:Landroid/graphics/Matrix;
@@ -76230,7 +71144,6 @@
Landroid/transition/ChangeTransform$PathAnimatorMatrix;->setAnimationMatrix()V
Landroid/transition/ChangeTransform$PathAnimatorMatrix;->setTranslation(Landroid/graphics/PointF;)V
Landroid/transition/ChangeTransform$PathAnimatorMatrix;->setValues([F)V
-Landroid/transition/ChangeTransform$Transforms;
Landroid/transition/ChangeTransform$Transforms;-><init>(Landroid/view/View;)V
Landroid/transition/ChangeTransform$Transforms;->restore(Landroid/view/View;)V
Landroid/transition/ChangeTransform$Transforms;->rotationX:F
@@ -76264,7 +71177,6 @@
Landroid/transition/CircularPropagation;->distance(FFFF)D
Landroid/transition/CircularPropagation;->mPropagationSpeed:F
Landroid/transition/CircularPropagation;->TAG:Ljava/lang/String;
-Landroid/transition/Crossfade;
Landroid/transition/Crossfade;-><init>()V
Landroid/transition/Crossfade;->captureValues(Landroid/transition/TransitionValues;)V
Landroid/transition/Crossfade;->FADE_BEHAVIOR_CROSSFADE:I
@@ -76291,7 +71203,6 @@
Landroid/transition/Explode;->sAccelerate:Landroid/animation/TimeInterpolator;
Landroid/transition/Explode;->sDecelerate:Landroid/animation/TimeInterpolator;
Landroid/transition/Explode;->TAG:Ljava/lang/String;
-Landroid/transition/Fade$FadeAnimatorListener;
Landroid/transition/Fade$FadeAnimatorListener;-><init>(Landroid/view/View;)V
Landroid/transition/Fade$FadeAnimatorListener;->mLayerTypeChanged:Z
Landroid/transition/Fade$FadeAnimatorListener;->mView:Landroid/view/View;
@@ -76303,13 +71214,11 @@
Landroid/transition/PatternPathMotion;->mOriginalPatternPath:Landroid/graphics/Path;
Landroid/transition/PatternPathMotion;->mPatternPath:Landroid/graphics/Path;
Landroid/transition/PatternPathMotion;->mTempMatrix:Landroid/graphics/Matrix;
-Landroid/transition/Recolor;
Landroid/transition/Recolor;-><init>()V
Landroid/transition/Recolor;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
Landroid/transition/Recolor;->captureValues(Landroid/transition/TransitionValues;)V
Landroid/transition/Recolor;->PROPNAME_BACKGROUND:Ljava/lang/String;
Landroid/transition/Recolor;->PROPNAME_TEXT_COLOR:Ljava/lang/String;
-Landroid/transition/Rotate;
Landroid/transition/Rotate;-><init>()V
Landroid/transition/Rotate;->PROPNAME_ROTATION:Ljava/lang/String;
Landroid/transition/Scene;-><init>(Landroid/view/ViewGroup;ILandroid/content/Context;)V
@@ -76324,16 +71233,12 @@
Landroid/transition/SidePropagation;->mPropagationSpeed:F
Landroid/transition/SidePropagation;->mSide:I
Landroid/transition/SidePropagation;->TAG:Ljava/lang/String;
-Landroid/transition/Slide$CalculateSlide;
Landroid/transition/Slide$CalculateSlide;->getGoneX(Landroid/view/ViewGroup;Landroid/view/View;F)F
Landroid/transition/Slide$CalculateSlide;->getGoneY(Landroid/view/ViewGroup;Landroid/view/View;F)F
-Landroid/transition/Slide$CalculateSlideHorizontal;
Landroid/transition/Slide$CalculateSlideHorizontal;-><init>()V
Landroid/transition/Slide$CalculateSlideHorizontal;->getGoneY(Landroid/view/ViewGroup;Landroid/view/View;F)F
-Landroid/transition/Slide$CalculateSlideVertical;
Landroid/transition/Slide$CalculateSlideVertical;-><init>()V
Landroid/transition/Slide$CalculateSlideVertical;->getGoneX(Landroid/view/ViewGroup;Landroid/view/View;F)F
-Landroid/transition/Slide$GravityFlag;
Landroid/transition/Slide;->captureValues(Landroid/transition/TransitionValues;)V
Landroid/transition/Slide;->mSlideCalculator:Landroid/transition/Slide$CalculateSlide;
Landroid/transition/Slide;->mSlideEdge:I
@@ -76349,14 +71254,12 @@
Landroid/transition/Slide;->sDecelerate:Landroid/animation/TimeInterpolator;
Landroid/transition/Slide;->setSlideFraction(F)V
Landroid/transition/Slide;->TAG:Ljava/lang/String;
-Landroid/transition/Transition$AnimationInfo;
Landroid/transition/Transition$AnimationInfo;-><init>(Landroid/view/View;Ljava/lang/String;Landroid/transition/Transition;Landroid/view/WindowId;Landroid/transition/TransitionValues;)V
Landroid/transition/Transition$AnimationInfo;->name:Ljava/lang/String;
Landroid/transition/Transition$AnimationInfo;->transition:Landroid/transition/Transition;
Landroid/transition/Transition$AnimationInfo;->values:Landroid/transition/TransitionValues;
Landroid/transition/Transition$AnimationInfo;->view:Landroid/view/View;
Landroid/transition/Transition$AnimationInfo;->windowId:Landroid/view/WindowId;
-Landroid/transition/Transition$ArrayListManager;
Landroid/transition/Transition$ArrayListManager;-><init>()V
Landroid/transition/Transition$ArrayListManager;->add(Ljava/util/ArrayList;Ljava/lang/Object;)Ljava/util/ArrayList;
Landroid/transition/Transition$ArrayListManager;->remove(Ljava/util/ArrayList;Ljava/lang/Object;)Ljava/util/ArrayList;
@@ -76447,7 +71350,6 @@
Landroid/transition/TransitionInflater;->mContext:Landroid/content/Context;
Landroid/transition/TransitionInflater;->sConstructors:Landroid/util/ArrayMap;
Landroid/transition/TransitionInflater;->sConstructorSignature:[Ljava/lang/Class;
-Landroid/transition/TransitionManager$MultiListener;
Landroid/transition/TransitionManager$MultiListener;-><init>(Landroid/transition/Transition;Landroid/view/ViewGroup;)V
Landroid/transition/TransitionManager$MultiListener;->mSceneRoot:Landroid/view/ViewGroup;
Landroid/transition/TransitionManager$MultiListener;->mTransition:Landroid/transition/Transition;
@@ -76463,7 +71365,6 @@
Landroid/transition/TransitionManager;->sceneChangeSetup(Landroid/view/ViewGroup;Landroid/transition/Transition;)V
Landroid/transition/TransitionManager;->sDefaultTransition:Landroid/transition/Transition;
Landroid/transition/TransitionManager;->setDefaultTransition(Landroid/transition/Transition;)V
-Landroid/transition/TransitionSet$TransitionSetListener;
Landroid/transition/TransitionSet$TransitionSetListener;-><init>(Landroid/transition/TransitionSet;)V
Landroid/transition/TransitionSet$TransitionSetListener;->mTransitionSet:Landroid/transition/TransitionSet;
Landroid/transition/TransitionSet;->cancel()V
@@ -76481,28 +71382,23 @@
Landroid/transition/TransitionSet;->setSceneRoot(Landroid/view/ViewGroup;)Landroid/transition/TransitionSet;
Landroid/transition/TransitionSet;->setupStartEndListeners()V
Landroid/transition/TransitionSet;->toString(Ljava/lang/String;)Ljava/lang/String;
-Landroid/transition/TransitionUtils$MatrixEvaluator;
Landroid/transition/TransitionUtils$MatrixEvaluator;-><init>()V
Landroid/transition/TransitionUtils$MatrixEvaluator;->evaluate(FLandroid/graphics/Matrix;Landroid/graphics/Matrix;)Landroid/graphics/Matrix;
Landroid/transition/TransitionUtils$MatrixEvaluator;->mTempEndValues:[F
Landroid/transition/TransitionUtils$MatrixEvaluator;->mTempMatrix:Landroid/graphics/Matrix;
Landroid/transition/TransitionUtils$MatrixEvaluator;->mTempStartValues:[F
-Landroid/transition/TransitionUtils;
Landroid/transition/TransitionUtils;-><init>()V
Landroid/transition/TransitionUtils;->copyViewImage(Landroid/view/ViewGroup;Landroid/view/View;Landroid/view/View;)Landroid/view/View;
Landroid/transition/TransitionUtils;->createDrawableBitmap(Landroid/graphics/drawable/Drawable;Landroid/view/View;)Landroid/graphics/Bitmap;
Landroid/transition/TransitionUtils;->createViewBitmap(Landroid/view/View;Landroid/graphics/Matrix;Landroid/graphics/RectF;Landroid/view/ViewGroup;)Landroid/graphics/Bitmap;
Landroid/transition/TransitionUtils;->MAX_IMAGE_SIZE:I
Landroid/transition/TransitionUtils;->mergeAnimators(Landroid/animation/Animator;Landroid/animation/Animator;)Landroid/animation/Animator;
-Landroid/transition/TransitionUtils;->mergeTransitions([[Landroid/transition/Transition;)Landroid/transition/Transition;
Landroid/transition/TransitionValues;->targetedTransitions:Ljava/util/ArrayList;
-Landroid/transition/TransitionValuesMaps;
Landroid/transition/TransitionValuesMaps;-><init>()V
Landroid/transition/TransitionValuesMaps;->idValues:Landroid/util/SparseArray;
Landroid/transition/TransitionValuesMaps;->itemIdValues:Landroid/util/LongSparseArray;
Landroid/transition/TransitionValuesMaps;->nameValues:Landroid/util/ArrayMap;
Landroid/transition/TransitionValuesMaps;->viewValues:Landroid/util/ArrayMap;
-Landroid/transition/Visibility$DisappearListener;
Landroid/transition/Visibility$DisappearListener;-><init>(Landroid/view/View;IZ)V
Landroid/transition/Visibility$DisappearListener;->hideViewWhenNotCanceled()V
Landroid/transition/Visibility$DisappearListener;->mCanceled:Z
@@ -76512,7 +71408,6 @@
Landroid/transition/Visibility$DisappearListener;->mSuppressLayout:Z
Landroid/transition/Visibility$DisappearListener;->mView:Landroid/view/View;
Landroid/transition/Visibility$DisappearListener;->suppressLayout(Z)V
-Landroid/transition/Visibility$VisibilityInfo;
Landroid/transition/Visibility$VisibilityInfo;-><init>()V
Landroid/transition/Visibility$VisibilityInfo;->endParent:Landroid/view/ViewGroup;
Landroid/transition/Visibility$VisibilityInfo;->endVisibility:I
@@ -76520,7 +71415,6 @@
Landroid/transition/Visibility$VisibilityInfo;->startParent:Landroid/view/ViewGroup;
Landroid/transition/Visibility$VisibilityInfo;->startVisibility:I
Landroid/transition/Visibility$VisibilityInfo;->visibilityChange:Z
-Landroid/transition/Visibility$VisibilityMode;
Landroid/transition/Visibility;->captureValues(Landroid/transition/TransitionValues;)V
Landroid/transition/Visibility;->getVisibilityChangeInfo(Landroid/transition/TransitionValues;Landroid/transition/TransitionValues;)Landroid/transition/Visibility$VisibilityInfo;
Landroid/transition/Visibility;->mMode:I
@@ -76534,17 +71428,14 @@
Landroid/transition/VisibilityPropagation;->PROPNAME_VIEW_CENTER:Ljava/lang/String;
Landroid/transition/VisibilityPropagation;->PROPNAME_VISIBILITY:Ljava/lang/String;
Landroid/transition/VisibilityPropagation;->VISIBILITY_PROPAGATION_VALUES:[Ljava/lang/String;
-Landroid/util/AggStats;
Landroid/util/AggStats;-><init>()V
Landroid/util/AggStats;->AVERAGE:J
Landroid/util/AggStats;->MAX:J
Landroid/util/AggStats;->MIN:J
Landroid/util/AndroidException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;ZZ)V
-Landroid/util/apk/ApkSignatureSchemeV2Verifier$VerifiedSigner;
Landroid/util/apk/ApkSignatureSchemeV2Verifier$VerifiedSigner;-><init>([[Ljava/security/cert/X509Certificate;[B)V
Landroid/util/apk/ApkSignatureSchemeV2Verifier$VerifiedSigner;->certs:[[Ljava/security/cert/X509Certificate;
Landroid/util/apk/ApkSignatureSchemeV2Verifier$VerifiedSigner;->verityRootHash:[B
-Landroid/util/apk/ApkSignatureSchemeV2Verifier;
Landroid/util/apk/ApkSignatureSchemeV2Verifier;-><init>()V
Landroid/util/apk/ApkSignatureSchemeV2Verifier;->APK_SIGNATURE_SCHEME_V2_BLOCK_ID:I
Landroid/util/apk/ApkSignatureSchemeV2Verifier;->findSignature(Ljava/io/RandomAccessFile;)Landroid/util/apk/SignatureInfo;
@@ -76562,18 +71453,14 @@
Landroid/util/apk/ApkSignatureSchemeV2Verifier;->verify(Ljava/lang/String;Z)Landroid/util/apk/ApkSignatureSchemeV2Verifier$VerifiedSigner;
Landroid/util/apk/ApkSignatureSchemeV2Verifier;->verifyAdditionalAttributes(Ljava/nio/ByteBuffer;)V
Landroid/util/apk/ApkSignatureSchemeV2Verifier;->verifySigner(Ljava/nio/ByteBuffer;Ljava/util/Map;Ljava/security/cert/CertificateFactory;)[Ljava/security/cert/X509Certificate;
-Landroid/util/apk/ApkSignatureSchemeV3Verifier$PlatformNotSupportedException;
Landroid/util/apk/ApkSignatureSchemeV3Verifier$PlatformNotSupportedException;-><init>(Ljava/lang/String;)V
-Landroid/util/apk/ApkSignatureSchemeV3Verifier$VerifiedProofOfRotation;
Landroid/util/apk/ApkSignatureSchemeV3Verifier$VerifiedProofOfRotation;-><init>(Ljava/util/List;Ljava/util/List;)V
Landroid/util/apk/ApkSignatureSchemeV3Verifier$VerifiedProofOfRotation;->certs:Ljava/util/List;
Landroid/util/apk/ApkSignatureSchemeV3Verifier$VerifiedProofOfRotation;->flagsList:Ljava/util/List;
-Landroid/util/apk/ApkSignatureSchemeV3Verifier$VerifiedSigner;
Landroid/util/apk/ApkSignatureSchemeV3Verifier$VerifiedSigner;-><init>([Ljava/security/cert/X509Certificate;Landroid/util/apk/ApkSignatureSchemeV3Verifier$VerifiedProofOfRotation;)V
Landroid/util/apk/ApkSignatureSchemeV3Verifier$VerifiedSigner;->certs:[Ljava/security/cert/X509Certificate;
Landroid/util/apk/ApkSignatureSchemeV3Verifier$VerifiedSigner;->por:Landroid/util/apk/ApkSignatureSchemeV3Verifier$VerifiedProofOfRotation;
Landroid/util/apk/ApkSignatureSchemeV3Verifier$VerifiedSigner;->verityRootHash:[B
-Landroid/util/apk/ApkSignatureSchemeV3Verifier;
Landroid/util/apk/ApkSignatureSchemeV3Verifier;-><init>()V
Landroid/util/apk/ApkSignatureSchemeV3Verifier;->APK_SIGNATURE_SCHEME_V3_BLOCK_ID:I
Landroid/util/apk/ApkSignatureSchemeV3Verifier;->findSignature(Ljava/io/RandomAccessFile;)Landroid/util/apk/SignatureInfo;
@@ -76592,12 +71479,10 @@
Landroid/util/apk/ApkSignatureSchemeV3Verifier;->verifyAdditionalAttributes(Ljava/nio/ByteBuffer;Ljava/util/List;Ljava/security/cert/CertificateFactory;)Landroid/util/apk/ApkSignatureSchemeV3Verifier$VerifiedSigner;
Landroid/util/apk/ApkSignatureSchemeV3Verifier;->verifyProofOfRotationStruct(Ljava/nio/ByteBuffer;Ljava/security/cert/CertificateFactory;)Landroid/util/apk/ApkSignatureSchemeV3Verifier$VerifiedProofOfRotation;
Landroid/util/apk/ApkSignatureSchemeV3Verifier;->verifySigner(Ljava/nio/ByteBuffer;Ljava/util/Map;Ljava/security/cert/CertificateFactory;)Landroid/util/apk/ApkSignatureSchemeV3Verifier$VerifiedSigner;
-Landroid/util/apk/ApkSignatureVerifier$Result;
Landroid/util/apk/ApkSignatureVerifier$Result;-><init>([[Ljava/security/cert/Certificate;[Landroid/content/pm/Signature;I)V
Landroid/util/apk/ApkSignatureVerifier$Result;->certs:[[Ljava/security/cert/Certificate;
Landroid/util/apk/ApkSignatureVerifier$Result;->signatureSchemeVersion:I
Landroid/util/apk/ApkSignatureVerifier$Result;->sigs:[Landroid/content/pm/Signature;
-Landroid/util/apk/ApkSignatureVerifier;
Landroid/util/apk/ApkSignatureVerifier;-><init>()V
Landroid/util/apk/ApkSignatureVerifier;->closeQuietly(Landroid/util/jar/StrictJarFile;)V
Landroid/util/apk/ApkSignatureVerifier;->convertToSignatures([[Ljava/security/cert/Certificate;)[Landroid/content/pm/Signature;
@@ -76610,16 +71495,13 @@
Landroid/util/apk/ApkSignatureVerifier;->sBuffer:Ljava/util/concurrent/atomic/AtomicReference;
Landroid/util/apk/ApkSignatureVerifier;->verify(Ljava/lang/String;I)Landroid/content/pm/PackageParser$SigningDetails;
Landroid/util/apk/ApkSignatureVerifier;->verifyV1Signature(Ljava/lang/String;Z)Landroid/content/pm/PackageParser$SigningDetails;
-Landroid/util/apk/ByteBufferFactory;
Landroid/util/apk/ByteBufferFactory;->create(I)Ljava/nio/ByteBuffer;
-Landroid/util/apk/SignatureInfo;
Landroid/util/apk/SignatureInfo;-><init>(Ljava/nio/ByteBuffer;JJJLjava/nio/ByteBuffer;)V
Landroid/util/apk/SignatureInfo;->apkSigningBlockOffset:J
Landroid/util/apk/SignatureInfo;->centralDirOffset:J
Landroid/util/apk/SignatureInfo;->eocd:Ljava/nio/ByteBuffer;
Landroid/util/apk/SignatureInfo;->eocdOffset:J
Landroid/util/apk/SignatureInfo;->signatureBlock:Ljava/nio/ByteBuffer;
-Landroid/util/apk/SignatureNotFoundException;
Landroid/util/apk/SignatureNotFoundException;-><init>(Ljava/lang/String;)V
Landroid/util/apk/SignatureNotFoundException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
Landroid/util/ArrayMap;-><init>(IZ)V
@@ -76657,21 +71539,17 @@
Landroid/util/AtomicFile;->startWrite(J)Ljava/io/FileOutputStream;
Landroid/util/AtomicFile;->truncate()V
Landroid/util/AtomicFile;->write(Ljava/util/function/Consumer;)V
-Landroid/util/BackupUtils$BadVersionException;
Landroid/util/BackupUtils$BadVersionException;-><init>(Ljava/lang/String;)V
-Landroid/util/BackupUtils;
Landroid/util/BackupUtils;-><init>()V
Landroid/util/BackupUtils;->NOT_NULL:I
Landroid/util/BackupUtils;->NULL:I
Landroid/util/BackupUtils;->readString(Ljava/io/DataInputStream;)Ljava/lang/String;
Landroid/util/BackupUtils;->writeString(Ljava/io/DataOutputStream;Ljava/lang/String;)V
-Landroid/util/Base64$Coder;
Landroid/util/Base64$Coder;-><init>()V
Landroid/util/Base64$Coder;->maxOutputSize(I)I
Landroid/util/Base64$Coder;->op:I
Landroid/util/Base64$Coder;->output:[B
Landroid/util/Base64$Coder;->process([BIIZ)Z
-Landroid/util/Base64$Decoder;
Landroid/util/Base64$Decoder;-><init>(I[B)V
Landroid/util/Base64$Decoder;->alphabet:[I
Landroid/util/Base64$Decoder;->DECODE:[I
@@ -76682,7 +71560,6 @@
Landroid/util/Base64$Decoder;->SKIP:I
Landroid/util/Base64$Decoder;->state:I
Landroid/util/Base64$Decoder;->value:I
-Landroid/util/Base64$Encoder;
Landroid/util/Base64$Encoder;-><init>(I[B)V
Landroid/util/Base64$Encoder;->alphabet:[B
Landroid/util/Base64$Encoder;->count:I
@@ -76713,8 +71590,6 @@
Landroid/util/Base64OutputStream;->flags:I
Landroid/util/Base64OutputStream;->flushBuffer()V
Landroid/util/Base64OutputStream;->internalWrite([BIIZ)V
-Landroid/util/BinaryLogEntry$Elem;
-Landroid/util/BinaryLogEntry$Elem;-><init>()V
Landroid/util/BinaryLogEntry$Elem;->EVENT_TYPE_FLOAT:I
Landroid/util/BinaryLogEntry$Elem;->EVENT_TYPE_INT:I
Landroid/util/BinaryLogEntry$Elem;->EVENT_TYPE_LIST:I
@@ -76727,7 +71602,6 @@
Landroid/util/BinaryLogEntry$Elem;->VAL_INT32:J
Landroid/util/BinaryLogEntry$Elem;->VAL_INT64:J
Landroid/util/BinaryLogEntry$Elem;->VAL_STRING:J
-Landroid/util/BinaryLogEntry;
Landroid/util/BinaryLogEntry;-><init>()V
Landroid/util/BinaryLogEntry;->ELEMS:J
Landroid/util/BinaryLogEntry;->NANOSEC:J
@@ -76736,7 +71610,6 @@
Landroid/util/BinaryLogEntry;->TAG_INDEX:J
Landroid/util/BinaryLogEntry;->TID:J
Landroid/util/BinaryLogEntry;->UID:J
-Landroid/util/ByteStringUtils;
Landroid/util/ByteStringUtils;-><init>()V
Landroid/util/ByteStringUtils;->fromHexToByteArray(Ljava/lang/String;)[B
Landroid/util/ByteStringUtils;->getIndex(C)I
@@ -76744,8 +71617,6 @@
Landroid/util/ByteStringUtils;->HEX_UPPERCASE_ARRAY:[C
Landroid/util/ByteStringUtils;->toHexString([B)Ljava/lang/String;
Landroid/util/Config;-><init>()V
-Landroid/util/DataUnit;
-Landroid/util/DataUnit;-><init>()V
Landroid/util/DataUnit;->GIBIBYTES:Landroid/util/DataUnit;
Landroid/util/DataUnit;->GIGABYTES:Landroid/util/DataUnit;
Landroid/util/DataUnit;->KIBIBYTES:Landroid/util/DataUnit;
@@ -76755,7 +71626,6 @@
Landroid/util/DataUnit;->toBytes(J)J
Landroid/util/DataUnit;->valueOf(Ljava/lang/String;)Landroid/util/DataUnit;
Landroid/util/DataUnit;->values()[Landroid/util/DataUnit;
-Landroid/util/DayOfMonthCursor;
Landroid/util/DayOfMonthCursor;-><init>(IIII)V
Landroid/util/DayOfMonthCursor;->down()Z
Landroid/util/DayOfMonthCursor;->getSelectedColumn()I
@@ -76783,7 +71653,6 @@
Landroid/util/DisplayMetrics;->noncompatScaledDensity:F
Landroid/util/DisplayMetrics;->noncompatXdpi:F
Landroid/util/DisplayMetrics;->noncompatYdpi:F
-Landroid/util/Duration;
Landroid/util/Duration;-><init>()V
Landroid/util/Duration;->END_MS:J
Landroid/util/Duration;->START_MS:J
@@ -76816,8 +71685,6 @@
Landroid/util/EventLog;->TAG:Ljava/lang/String;
Landroid/util/EventLog;->TAGS_FILE:Ljava/lang/String;
Landroid/util/EventLog;->TAG_PATTERN:Ljava/lang/String;
-Landroid/util/EventLogTag$ValueDescriptor;
-Landroid/util/EventLogTag$ValueDescriptor;-><init>()V
Landroid/util/EventLogTag$ValueDescriptor;->ALLOCATIONS:I
Landroid/util/EventLogTag$ValueDescriptor;->BYTES:I
Landroid/util/EventLogTag$ValueDescriptor;->FLOAT:I
@@ -76835,16 +71702,13 @@
Landroid/util/EventLogTag$ValueDescriptor;->UNIT:J
Landroid/util/EventLogTag$ValueDescriptor;->UNKNOWN:I
Landroid/util/EventLogTag$ValueDescriptor;->UNSET:I
-Landroid/util/EventLogTag;
Landroid/util/EventLogTag;-><init>()V
Landroid/util/EventLogTag;->TAG_NAME:J
Landroid/util/EventLogTag;->TAG_NUMBER:J
Landroid/util/EventLogTag;->VALUE_DESCRIPTORS:J
-Landroid/util/EventLogTagMapProto;
Landroid/util/EventLogTagMapProto;-><init>()V
Landroid/util/EventLogTagMapProto;->EVENT_LOG_TAGS:J
Landroid/util/EventLogTags$Description;-><init>(ILjava/lang/String;)V
-Landroid/util/ExceptionUtils;
Landroid/util/ExceptionUtils;-><init>()V
Landroid/util/ExceptionUtils;->appendCause(Ljava/lang/Throwable;Ljava/lang/Throwable;)Ljava/lang/Throwable;
Landroid/util/ExceptionUtils;->getCompleteMessage(Ljava/lang/String;Ljava/lang/Throwable;)Ljava/lang/String;
@@ -76855,15 +71719,12 @@
Landroid/util/ExceptionUtils;->propagate(Ljava/lang/Throwable;Ljava/lang/Class;)Ljava/lang/RuntimeException;
Landroid/util/ExceptionUtils;->propagateIfInstanceOf(Ljava/lang/Throwable;Ljava/lang/Class;)V
Landroid/util/ExceptionUtils;->wrap(Ljava/io/IOException;)Ljava/lang/RuntimeException;
-Landroid/util/FastImmutableArraySet$FastIterator;
Landroid/util/FastImmutableArraySet$FastIterator;-><init>([Ljava/lang/Object;)V
Landroid/util/FastImmutableArraySet$FastIterator;->mContents:[Ljava/lang/Object;
Landroid/util/FastImmutableArraySet$FastIterator;->mIndex:I
-Landroid/util/FastImmutableArraySet;
Landroid/util/FastImmutableArraySet;-><init>([Ljava/lang/Object;)V
Landroid/util/FastImmutableArraySet;->mContents:[Ljava/lang/Object;
Landroid/util/FastImmutableArraySet;->mIterator:Landroid/util/FastImmutableArraySet$FastIterator;
-Landroid/util/FeatureFlagUtils;
Landroid/util/FeatureFlagUtils;-><init>()V
Landroid/util/FeatureFlagUtils;->DEFAULT_FLAGS:Ljava/util/Map;
Landroid/util/FeatureFlagUtils;->FFLAG_OVERRIDE_PREFIX:Ljava/lang/String;
@@ -76888,7 +71749,6 @@
Landroid/util/Half;->FP32_SIGNIFICAND_MASK:I
Landroid/util/Half;->FP32_SIGN_SHIFT:I
Landroid/util/Half;->mValue:S
-Landroid/util/IconDrawableFactory;
Landroid/util/IconDrawableFactory;-><init>(Landroid/content/Context;Z)V
Landroid/util/IconDrawableFactory;->CORP_BADGE_COLORS:[I
Landroid/util/IconDrawableFactory;->getBadgedIcon(Landroid/content/pm/ApplicationInfo;I)Landroid/graphics/drawable/Drawable;
@@ -76901,7 +71761,6 @@
Landroid/util/IconDrawableFactory;->mUm:Landroid/os/UserManager;
Landroid/util/IconDrawableFactory;->needsBadging(Landroid/content/pm/ApplicationInfo;I)Z
Landroid/util/IconDrawableFactory;->newInstance(Landroid/content/Context;Z)Landroid/util/IconDrawableFactory;
-Landroid/util/IntArray;
Landroid/util/IntArray;-><init>()V
Landroid/util/IntArray;-><init>(I)V
Landroid/util/IntArray;-><init>([II)V
@@ -76966,8 +71825,6 @@
Landroid/util/JsonReader;->value:Ljava/lang/String;
Landroid/util/JsonReader;->valueLength:I
Landroid/util/JsonReader;->valuePos:I
-Landroid/util/JsonScope;
-Landroid/util/JsonScope;-><init>()V
Landroid/util/JsonScope;->CLOSED:Landroid/util/JsonScope;
Landroid/util/JsonScope;->DANGLING_NAME:Landroid/util/JsonScope;
Landroid/util/JsonScope;->EMPTY_ARRAY:Landroid/util/JsonScope;
@@ -76978,7 +71835,6 @@
Landroid/util/JsonScope;->NONEMPTY_OBJECT:Landroid/util/JsonScope;
Landroid/util/JsonScope;->valueOf(Ljava/lang/String;)Landroid/util/JsonScope;
Landroid/util/JsonScope;->values()[Landroid/util/JsonScope;
-Landroid/util/JsonToken;-><init>()V
Landroid/util/JsonWriter;->beforeName()V
Landroid/util/JsonWriter;->beforeValue(Z)V
Landroid/util/JsonWriter;->close(Landroid/util/JsonScope;Landroid/util/JsonScope;Ljava/lang/String;)Landroid/util/JsonWriter;
@@ -76992,7 +71848,6 @@
Landroid/util/JsonWriter;->separator:Ljava/lang/String;
Landroid/util/JsonWriter;->stack:Ljava/util/List;
Landroid/util/JsonWriter;->string(Ljava/lang/String;)V
-Landroid/util/KeyValueListParser;
Landroid/util/KeyValueListParser;-><init>(C)V
Landroid/util/KeyValueListParser;->getBoolean(Ljava/lang/String;Z)Z
Landroid/util/KeyValueListParser;->getDurationMillis(Ljava/lang/String;J)J
@@ -77006,9 +71861,6 @@
Landroid/util/KeyValueListParser;->mValues:Landroid/util/ArrayMap;
Landroid/util/KeyValueListParser;->setString(Ljava/lang/String;)V
Landroid/util/KeyValueListParser;->size()I
-Landroid/util/KeyValueSettingObserver$SettingObserver;
-Landroid/util/KeyValueSettingObserver$SettingObserver;-><init>(Landroid/os/Handler;)V
-Landroid/util/KeyValueSettingObserver;
Landroid/util/KeyValueSettingObserver;-><init>(Landroid/os/Handler;Landroid/content/ContentResolver;Landroid/net/Uri;)V
Landroid/util/KeyValueSettingObserver;->getSettingValue(Landroid/content/ContentResolver;)Ljava/lang/String;
Landroid/util/KeyValueSettingObserver;->mObserver:Landroid/database/ContentObserver;
@@ -77020,16 +71872,13 @@
Landroid/util/KeyValueSettingObserver;->stop()V
Landroid/util/KeyValueSettingObserver;->TAG:Ljava/lang/String;
Landroid/util/KeyValueSettingObserver;->update(Landroid/util/KeyValueListParser;)V
-Landroid/util/LauncherIcons$ShadowDrawable$MyConstantState;
Landroid/util/LauncherIcons$ShadowDrawable$MyConstantState;-><init>(Landroid/graphics/Bitmap;Landroid/graphics/drawable/Drawable$ConstantState;)V
Landroid/util/LauncherIcons$ShadowDrawable$MyConstantState;->mChildState:Landroid/graphics/drawable/Drawable$ConstantState;
Landroid/util/LauncherIcons$ShadowDrawable$MyConstantState;->mPaint:Landroid/graphics/Paint;
Landroid/util/LauncherIcons$ShadowDrawable$MyConstantState;->mShadow:Landroid/graphics/Bitmap;
-Landroid/util/LauncherIcons$ShadowDrawable;
Landroid/util/LauncherIcons$ShadowDrawable;-><init>(Landroid/graphics/Bitmap;Landroid/graphics/drawable/Drawable;)V
Landroid/util/LauncherIcons$ShadowDrawable;-><init>(Landroid/util/LauncherIcons$ShadowDrawable$MyConstantState;)V
Landroid/util/LauncherIcons$ShadowDrawable;->mState:Landroid/util/LauncherIcons$ShadowDrawable$MyConstantState;
-Landroid/util/LauncherIcons;
Landroid/util/LauncherIcons;-><init>(Landroid/content/Context;)V
Landroid/util/LauncherIcons;->AMBIENT_SHADOW_ALPHA:I
Landroid/util/LauncherIcons;->getBadgedDrawable(Landroid/graphics/drawable/Drawable;II)Landroid/graphics/drawable/Drawable;
@@ -77044,28 +71893,22 @@
Landroid/util/LauncherIcons;->wrapIconDrawableWithShadow(Landroid/graphics/drawable/Drawable;)Landroid/graphics/drawable/Drawable;
Landroid/util/LayoutDirection;-><init>()V
Landroid/util/LayoutDirection;->UNDEFINED:I
-Landroid/util/LocalLog$ReadOnlyLocalLog;
Landroid/util/LocalLog$ReadOnlyLocalLog;-><init>(Landroid/util/LocalLog;)V
Landroid/util/LocalLog$ReadOnlyLocalLog;->mLog:Landroid/util/LocalLog;
Landroid/util/LocalLog$ReadOnlyLocalLog;->reverseDump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-Landroid/util/LocalLog;
Landroid/util/LocalLog;->append(Ljava/lang/String;)V
Landroid/util/LocalLog;->mLog:Ljava/util/Deque;
Landroid/util/LocalLog;->mMaxLines:I
Landroid/util/LocalLog;->reverseDump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-Landroid/util/Log$ImmediateLogWriter;
Landroid/util/Log$ImmediateLogWriter;-><init>(IILjava/lang/String;)V
Landroid/util/Log$ImmediateLogWriter;->bufID:I
Landroid/util/Log$ImmediateLogWriter;->getWritten()I
Landroid/util/Log$ImmediateLogWriter;->priority:I
Landroid/util/Log$ImmediateLogWriter;->tag:Ljava/lang/String;
Landroid/util/Log$ImmediateLogWriter;->written:I
-Landroid/util/Log$PreloadHolder;
Landroid/util/Log$PreloadHolder;-><init>()V
Landroid/util/Log$PreloadHolder;->LOGGER_ENTRY_MAX_PAYLOAD:I
-Landroid/util/Log$TerribleFailure;
Landroid/util/Log$TerribleFailure;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
-Landroid/util/Log$TerribleFailureHandler;
Landroid/util/Log$TerribleFailureHandler;->onTerribleFailure(Ljava/lang/String;Landroid/util/Log$TerribleFailure;Z)V
Landroid/util/Log;-><init>()V
Landroid/util/Log;->logger_entry_max_payload_native()I
@@ -77083,18 +71926,15 @@
Landroid/util/LogPrinter;->mBuffer:I
Landroid/util/LogPrinter;->mPriority:I
Landroid/util/LogPrinter;->mTag:Ljava/lang/String;
-Landroid/util/LogProto;
Landroid/util/LogProto;-><init>()V
Landroid/util/LogProto;->BINARY_LOGS:J
Landroid/util/LogProto;->TEXT_LOGS:J
-Landroid/util/LogWriter;
Landroid/util/LogWriter;-><init>(ILjava/lang/String;I)V
Landroid/util/LogWriter;->flushBuilder()V
Landroid/util/LogWriter;->mBuffer:I
Landroid/util/LogWriter;->mBuilder:Ljava/lang/StringBuilder;
Landroid/util/LogWriter;->mPriority:I
Landroid/util/LogWriter;->mTag:Ljava/lang/String;
-Landroid/util/LongArray;
Landroid/util/LongArray;-><init>(I)V
Landroid/util/LongArray;-><init>([JI)V
Landroid/util/LongArray;->add(J)V
@@ -77120,7 +71960,6 @@
Landroid/util/LongSparseArray;->mKeys:[J
Landroid/util/LongSparseArray;->mSize:I
Landroid/util/LongSparseArray;->mValues:[Ljava/lang/Object;
-Landroid/util/LongSparseLongArray;
Landroid/util/LongSparseLongArray;-><init>()V
Landroid/util/LongSparseLongArray;-><init>(I)V
Landroid/util/LongSparseLongArray;->append(JJ)V
@@ -77143,30 +71982,19 @@
Landroid/util/LruCache;->putCount:I
Landroid/util/LruCache;->safeSizeOf(Ljava/lang/Object;Ljava/lang/Object;)I
Landroid/util/LruCache;->size:I
-Landroid/util/MapCollections$ArrayIterator;
-Landroid/util/MapCollections$ArrayIterator;-><init>(I)V
Landroid/util/MapCollections$ArrayIterator;->mCanRemove:Z
Landroid/util/MapCollections$ArrayIterator;->mIndex:I
Landroid/util/MapCollections$ArrayIterator;->mOffset:I
Landroid/util/MapCollections$ArrayIterator;->mSize:I
-Landroid/util/MapCollections$EntrySet;
-Landroid/util/MapCollections$EntrySet;-><init>()V
Landroid/util/MapCollections$EntrySet;->add(Ljava/util/Map$Entry;)Z
Landroid/util/MapCollections$EntrySet;->addAll(Ljava/util/Collection;)Z
-Landroid/util/MapCollections$KeySet;
-Landroid/util/MapCollections$KeySet;-><init>()V
Landroid/util/MapCollections$KeySet;->add(Ljava/lang/Object;)Z
Landroid/util/MapCollections$KeySet;->addAll(Ljava/util/Collection;)Z
-Landroid/util/MapCollections$MapIterator;
-Landroid/util/MapCollections$MapIterator;-><init>()V
Landroid/util/MapCollections$MapIterator;->mEnd:I
Landroid/util/MapCollections$MapIterator;->mEntryValid:Z
Landroid/util/MapCollections$MapIterator;->mIndex:I
-Landroid/util/MapCollections$ValuesCollection;
-Landroid/util/MapCollections$ValuesCollection;-><init>()V
Landroid/util/MapCollections$ValuesCollection;->add(Ljava/lang/Object;)Z
Landroid/util/MapCollections$ValuesCollection;->addAll(Ljava/util/Collection;)Z
-Landroid/util/MapCollections;
Landroid/util/MapCollections;-><init>()V
Landroid/util/MapCollections;->colClear()V
Landroid/util/MapCollections;->colGetEntry(II)Ljava/lang/Object;
@@ -77189,7 +72017,6 @@
Landroid/util/MapCollections;->retainAllHelper(Ljava/util/Map;Ljava/util/Collection;)Z
Landroid/util/MapCollections;->toArrayHelper(I)[Ljava/lang/Object;
Landroid/util/MapCollections;->toArrayHelper([Ljava/lang/Object;I)[Ljava/lang/Object;
-Landroid/util/MathUtils;
Landroid/util/MathUtils;-><init>()V
Landroid/util/MathUtils;->acos(F)F
Landroid/util/MathUtils;->addOrThrow(II)I
@@ -77223,7 +72050,6 @@
Landroid/util/MathUtils;->sq(F)F
Landroid/util/MathUtils;->sqrt(F)F
Landroid/util/MathUtils;->tan(F)F
-Landroid/util/MemoryIntArray;
Landroid/util/MemoryIntArray;-><init>(I)V
Landroid/util/MemoryIntArray;-><init>(Landroid/os/Parcel;)V
Landroid/util/MemoryIntArray;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -77248,7 +72074,6 @@
Landroid/util/MemoryIntArray;->set(II)V
Landroid/util/MemoryIntArray;->size()I
Landroid/util/MemoryIntArray;->TAG:Ljava/lang/String;
-Landroid/util/MergedConfiguration;
Landroid/util/MergedConfiguration;-><init>()V
Landroid/util/MergedConfiguration;-><init>(Landroid/content/res/Configuration;)V
Landroid/util/MergedConfiguration;-><init>(Landroid/content/res/Configuration;Landroid/content/res/Configuration;)V
@@ -77275,7 +72100,6 @@
Landroid/util/MonthDisplayHelper;->mOffset:I
Landroid/util/MonthDisplayHelper;->mWeekStartDay:I
Landroid/util/MonthDisplayHelper;->recalculate()V
-Landroid/util/NtpTrustedTime;
Landroid/util/NtpTrustedTime;-><init>(Ljava/lang/String;J)V
Landroid/util/NtpTrustedTime;->forceRefresh(Landroid/net/Network;)Z
Landroid/util/NtpTrustedTime;->getCacheAge()J
@@ -77291,21 +72115,18 @@
Landroid/util/NtpTrustedTime;->sContext:Landroid/content/Context;
Landroid/util/NtpTrustedTime;->sSingleton:Landroid/util/NtpTrustedTime;
Landroid/util/NtpTrustedTime;->TAG:Ljava/lang/String;
-Landroid/util/PackageUtils;
Landroid/util/PackageUtils;-><init>()V
Landroid/util/PackageUtils;->computeSha256Digest([B)Ljava/lang/String;
Landroid/util/PackageUtils;->computeSha256DigestBytes([B)[B
Landroid/util/PackageUtils;->computeSignaturesSha256Digest([Landroid/content/pm/Signature;)Ljava/lang/String;
Landroid/util/PackageUtils;->computeSignaturesSha256Digest([Ljava/lang/String;)Ljava/lang/String;
Landroid/util/PackageUtils;->computeSignaturesSha256Digests([Landroid/content/pm/Signature;)[Ljava/lang/String;
-Landroid/util/PathParser$PathData;
Landroid/util/PathParser$PathData;-><init>()V
Landroid/util/PathParser$PathData;-><init>(Landroid/util/PathParser$PathData;)V
Landroid/util/PathParser$PathData;-><init>(Ljava/lang/String;)V
Landroid/util/PathParser$PathData;->getNativePtr()J
Landroid/util/PathParser$PathData;->mNativePathData:J
Landroid/util/PathParser$PathData;->setPathData(Landroid/util/PathParser$PathData;)V
-Landroid/util/PathParser;
Landroid/util/PathParser;-><init>()V
Landroid/util/PathParser;->canMorph(Landroid/util/PathParser$PathData;Landroid/util/PathParser$PathData;)Z
Landroid/util/PathParser;->createPathFromPathData(Landroid/graphics/Path;Landroid/util/PathParser$PathData;)V
@@ -77347,16 +72168,11 @@
Landroid/util/Patterns;->WEB_URL_WITHOUT_PROTOCOL:Ljava/lang/String;
Landroid/util/Patterns;->WEB_URL_WITH_PROTOCOL:Ljava/lang/String;
Landroid/util/Patterns;->WORD_BOUNDARY:Ljava/lang/String;
-Landroid/util/Pools$Pool;
-Landroid/util/Pools$SimplePool;
Landroid/util/Pools$SimplePool;->isInPool(Ljava/lang/Object;)Z
Landroid/util/Pools$SimplePool;->mPoolSize:I
-Landroid/util/Pools$SynchronizedPool;
Landroid/util/Pools$SynchronizedPool;-><init>(ILjava/lang/Object;)V
Landroid/util/Pools$SynchronizedPool;->mLock:Ljava/lang/Object;
-Landroid/util/Pools;
Landroid/util/Pools;-><init>()V
-Landroid/util/PrefixPrinter;
Landroid/util/PrefixPrinter;-><init>(Landroid/util/Printer;Ljava/lang/String;)V
Landroid/util/PrefixPrinter;->create(Landroid/util/Printer;Ljava/lang/String;)Landroid/util/Printer;
Landroid/util/PrefixPrinter;->mPrefix:Ljava/lang/String;
@@ -77437,7 +72253,6 @@
Landroid/util/proto/ProtoOutputStream;->writeUInt64Impl(IJ)V
Landroid/util/proto/ProtoOutputStream;->writeUnsignedVarintFromSignedInt(I)V
Landroid/util/proto/ProtoOutputStream;->writeUtf8String(ILjava/lang/String;)V
-Landroid/util/proto/ProtoUtils;
Landroid/util/proto/ProtoUtils;-><init>()V
Landroid/util/proto/ProtoUtils;->toAggStatsProto(Landroid/util/proto/ProtoOutputStream;JJJJ)V
Landroid/util/proto/ProtoUtils;->toDuration(Landroid/util/proto/ProtoOutputStream;JJJ)V
@@ -77450,17 +72265,12 @@
Landroid/util/Rational;->isNegInf()Z
Landroid/util/Rational;->isPosInf()Z
Landroid/util/Rational;->toFloat()F
-Landroid/util/RecurrenceRule$NonrecurringIterator;
-Landroid/util/RecurrenceRule$NonrecurringIterator;-><init>()V
Landroid/util/RecurrenceRule$NonrecurringIterator;->hasNext:Z
-Landroid/util/RecurrenceRule$RecurringIterator;
-Landroid/util/RecurrenceRule$RecurringIterator;-><init>()V
Landroid/util/RecurrenceRule$RecurringIterator;->cycleEnd:Ljava/time/ZonedDateTime;
Landroid/util/RecurrenceRule$RecurringIterator;->cycleStart:Ljava/time/ZonedDateTime;
Landroid/util/RecurrenceRule$RecurringIterator;->i:I
Landroid/util/RecurrenceRule$RecurringIterator;->roundBoundaryTime(Ljava/time/ZonedDateTime;)Ljava/time/ZonedDateTime;
Landroid/util/RecurrenceRule$RecurringIterator;->updateCycle()V
-Landroid/util/RecurrenceRule;
Landroid/util/RecurrenceRule;-><init>(Landroid/os/Parcel;)V
Landroid/util/RecurrenceRule;-><init>(Ljava/io/DataInputStream;)V
Landroid/util/RecurrenceRule;-><init>(Ljava/time/ZonedDateTime;Ljava/time/ZonedDateTime;Ljava/time/Period;)V
@@ -77480,7 +72290,6 @@
Landroid/util/RecurrenceRule;->TAG:Ljava/lang/String;
Landroid/util/RecurrenceRule;->VERSION_INIT:I
Landroid/util/RecurrenceRule;->writeToStream(Ljava/io/DataOutputStream;)V
-Landroid/util/Singleton;
Landroid/util/Singleton;->create()Ljava/lang/Object;
Landroid/util/Size;->invalidSize(Ljava/lang/String;)Ljava/lang/NumberFormatException;
Landroid/util/Size;->mHeight:I
@@ -77488,7 +72297,6 @@
Landroid/util/SizeF;->invalidSizeF(Ljava/lang/String;)Ljava/lang/NumberFormatException;
Landroid/util/SizeF;->mHeight:F
Landroid/util/SizeF;->mWidth:F
-Landroid/util/Slog;
Landroid/util/Slog;-><init>()V
Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
Landroid/util/Slog;->v(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
@@ -77508,7 +72316,6 @@
Landroid/util/SparseLongArray;->mSize:I
Landroid/util/SparseLongArray;->mValues:[J
Landroid/util/SparseLongArray;->removeAtRange(II)V
-Landroid/util/SparseSetArray;
Landroid/util/SparseSetArray;-><init>()V
Landroid/util/SparseSetArray;->add(ILjava/lang/Object;)Z
Landroid/util/SparseSetArray;->contains(ILjava/lang/Object;)Z
@@ -77519,19 +72326,16 @@
Landroid/util/SparseSetArray;->size()I
Landroid/util/SparseSetArray;->sizeAt(I)I
Landroid/util/SparseSetArray;->valueAt(II)Ljava/lang/Object;
-Landroid/util/Spline$LinearSpline;
Landroid/util/Spline$LinearSpline;-><init>([F[F)V
Landroid/util/Spline$LinearSpline;->interpolate(F)F
Landroid/util/Spline$LinearSpline;->mM:[F
Landroid/util/Spline$LinearSpline;->mX:[F
Landroid/util/Spline$LinearSpline;->mY:[F
-Landroid/util/Spline$MonotoneCubicSpline;
Landroid/util/Spline$MonotoneCubicSpline;-><init>([F[F)V
Landroid/util/Spline$MonotoneCubicSpline;->interpolate(F)F
Landroid/util/Spline$MonotoneCubicSpline;->mM:[F
Landroid/util/Spline$MonotoneCubicSpline;->mX:[F
Landroid/util/Spline$MonotoneCubicSpline;->mY:[F
-Landroid/util/Spline;
Landroid/util/Spline;-><init>()V
Landroid/util/Spline;->createLinearSpline([F[F)Landroid/util/Spline;
Landroid/util/Spline;->createMonotoneCubicSpline([F[F)Landroid/util/Spline;
@@ -77559,7 +72363,6 @@
Landroid/util/StatsLog;->getIStatsManagerLocked()Landroid/os/IStatsManager;
Landroid/util/StatsLog;->sService:Landroid/os/IStatsManager;
Landroid/util/StatsLog;->TAG:Ljava/lang/String;
-Landroid/util/StatsLogInternal;
Landroid/util/StatsLogInternal;-><init>()V
Landroid/util/StatsLogInternal;->ACTIVITY_FOREGROUND_STATE_CHANGED:I
Landroid/util/StatsLogInternal;->ACTIVITY_FOREGROUND_STATE_CHANGED__STATE__BACKGROUND:I
@@ -77962,9 +72765,7 @@
Landroid/util/StatsLogInternal;->write_non_chained(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;I)I
Landroid/util/StatsLogInternal;->WTF_OCCURRED:I
Landroid/util/StringBuilderPrinter;->mBuilder:Ljava/lang/StringBuilder;
-Landroid/util/SuperNotCalledException;
Landroid/util/SuperNotCalledException;-><init>(Ljava/lang/String;)V
-Landroid/util/TextLogEntry;
Landroid/util/TextLogEntry;-><init>()V
Landroid/util/TextLogEntry;->LOG:J
Landroid/util/TextLogEntry;->LOG_DEBUG:I
@@ -77983,7 +72784,6 @@
Landroid/util/TextLogEntry;->TAG:J
Landroid/util/TextLogEntry;->TID:J
Landroid/util/TextLogEntry;->UID:J
-Landroid/util/TimedRemoteCaller;
Landroid/util/TimedRemoteCaller;-><init>(J)V
Landroid/util/TimedRemoteCaller;->DEFAULT_CALL_TIMEOUT_MILLIS:J
Landroid/util/TimedRemoteCaller;->getResultTimed(I)Ljava/lang/Object;
@@ -78020,7 +72820,6 @@
Landroid/util/TimingLogger;->mSplitLabels:Ljava/util/ArrayList;
Landroid/util/TimingLogger;->mSplits:Ljava/util/ArrayList;
Landroid/util/TimingLogger;->mTag:Ljava/lang/String;
-Landroid/util/TimingsTraceLog;
Landroid/util/TimingsTraceLog;-><init>(Ljava/lang/String;J)V
Landroid/util/TimingsTraceLog;->assertSameThread()V
Landroid/util/TimingsTraceLog;->DEBUG_BOOT_TIME:Z
@@ -78031,26 +72830,21 @@
Landroid/util/TimingsTraceLog;->mTraceTag:J
Landroid/util/TimingsTraceLog;->traceBegin(Ljava/lang/String;)V
Landroid/util/TimingsTraceLog;->traceEnd()V
-Landroid/util/TrustedTime;
Landroid/util/TrustedTime;->getCacheCertainty()J
Landroid/util/TypedValue;->complexToDimensionNoisy(ILandroid/util/DisplayMetrics;)F
Landroid/util/TypedValue;->DIMENSION_UNIT_STRS:[Ljava/lang/String;
Landroid/util/TypedValue;->FRACTION_UNIT_STRS:[Ljava/lang/String;
Landroid/util/TypedValue;->MANTISSA_MULT:F
Landroid/util/TypedValue;->RADIX_MULTS:[F
-Landroid/util/Xml$Encoding;-><init>(Ljava/lang/String;)V
Landroid/util/Xml$Encoding;->expatName:Ljava/lang/String;
-Landroid/util/Xml$XmlSerializerFactory;
Landroid/util/Xml$XmlSerializerFactory;-><init>()V
Landroid/util/Xml$XmlSerializerFactory;->instance:Lorg/xmlpull/v1/XmlPullParserFactory;
Landroid/util/Xml$XmlSerializerFactory;->TYPE:Ljava/lang/String;
Landroid/util/Xml;-><init>()V
Landroid/view/AbsSavedState;-><init>()V
Landroid/view/AbsSavedState;->mSuperState:Landroid/os/Parcelable;
-Landroid/view/accessibility/AccessibilityCache$AccessibilityNodeRefresher;
Landroid/view/accessibility/AccessibilityCache$AccessibilityNodeRefresher;-><init>()V
Landroid/view/accessibility/AccessibilityCache$AccessibilityNodeRefresher;->refreshNode(Landroid/view/accessibility/AccessibilityNodeInfo;Z)Z
-Landroid/view/accessibility/AccessibilityCache;
Landroid/view/accessibility/AccessibilityCache;-><init>(Landroid/view/accessibility/AccessibilityCache$AccessibilityNodeRefresher;)V
Landroid/view/accessibility/AccessibilityCache;->add(Landroid/view/accessibility/AccessibilityNodeInfo;)V
Landroid/view/accessibility/AccessibilityCache;->addWindow(Landroid/view/accessibility/AccessibilityWindowInfo;)V
@@ -78078,9 +72872,6 @@
Landroid/view/accessibility/AccessibilityCache;->onAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)V
Landroid/view/accessibility/AccessibilityCache;->refreshCachedNodeLocked(IJ)V
Landroid/view/accessibility/AccessibilityCache;->setWindows(Ljava/util/List;)V
-Landroid/view/accessibility/AccessibilityEvent$ContentChangeTypes;
-Landroid/view/accessibility/AccessibilityEvent$EventType;
-Landroid/view/accessibility/AccessibilityEvent$WindowsChangeTypes;
Landroid/view/accessibility/AccessibilityEvent;-><init>()V
Landroid/view/accessibility/AccessibilityEvent;->clear()V
Landroid/view/accessibility/AccessibilityEvent;->contentChangeTypesToString(I)Ljava/lang/String;
@@ -78105,7 +72896,6 @@
Landroid/view/accessibility/AccessibilityEvent;->sPool:Landroid/util/Pools$SynchronizedPool;
Landroid/view/accessibility/AccessibilityEvent;->windowChangeTypesToString(I)Ljava/lang/String;
Landroid/view/accessibility/AccessibilityEvent;->writeAccessibilityRecordToParcel(Landroid/view/accessibility/AccessibilityRecord;Landroid/os/Parcel;I)V
-Landroid/view/accessibility/AccessibilityInteractionClient;
Landroid/view/accessibility/AccessibilityInteractionClient;-><init>()V
Landroid/view/accessibility/AccessibilityInteractionClient;->addConnection(ILandroid/accessibilityservice/IAccessibilityServiceConnection;)V
Landroid/view/accessibility/AccessibilityInteractionClient;->checkFindAccessibilityNodeInfoResultIntegrity(Ljava/util/List;)V
@@ -78151,18 +72941,13 @@
Landroid/view/accessibility/AccessibilityInteractionClient;->sStaticLock:Ljava/lang/Object;
Landroid/view/accessibility/AccessibilityInteractionClient;->TIMEOUT_INTERACTION_MILLIS:J
Landroid/view/accessibility/AccessibilityInteractionClient;->waitForResultTimedLocked(I)Z
-Landroid/view/accessibility/AccessibilityManager$AccessibilityPolicy;
Landroid/view/accessibility/AccessibilityManager$AccessibilityPolicy;->getEnabledAccessibilityServiceList(ILjava/util/List;)Ljava/util/List;
Landroid/view/accessibility/AccessibilityManager$AccessibilityPolicy;->getInstalledAccessibilityServiceList(Ljava/util/List;)Ljava/util/List;
Landroid/view/accessibility/AccessibilityManager$AccessibilityPolicy;->getRelevantEventTypes(I)I
Landroid/view/accessibility/AccessibilityManager$AccessibilityPolicy;->isEnabled(Z)Z
Landroid/view/accessibility/AccessibilityManager$AccessibilityPolicy;->onAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;ZI)Landroid/view/accessibility/AccessibilityEvent;
-Landroid/view/accessibility/AccessibilityManager$AccessibilityServicesStateChangeListener;
Landroid/view/accessibility/AccessibilityManager$AccessibilityServicesStateChangeListener;->onAccessibilityServicesStateChanged(Landroid/view/accessibility/AccessibilityManager;)V
-Landroid/view/accessibility/AccessibilityManager$HighTextContrastChangeListener;
Landroid/view/accessibility/AccessibilityManager$HighTextContrastChangeListener;->onHighTextContrastStateChanged(Z)V
-Landroid/view/accessibility/AccessibilityManager$MyCallback;
-Landroid/view/accessibility/AccessibilityManager$MyCallback;-><init>()V
Landroid/view/accessibility/AccessibilityManager$MyCallback;->MSG_SET_STATE:I
Landroid/view/accessibility/AccessibilityManager;-><init>(Landroid/content/Context;Landroid/view/accessibility/IAccessibilityManager;I)V
Landroid/view/accessibility/AccessibilityManager;-><init>(Landroid/os/Handler;Landroid/view/accessibility/IAccessibilityManager;I)V
@@ -78409,9 +73194,6 @@
Landroid/view/accessibility/AccessibilityRecord;->sPoolLock:Ljava/lang/Object;
Landroid/view/accessibility/AccessibilityRecord;->sPoolSize:I
Landroid/view/accessibility/AccessibilityRecord;->UNDEFINED:I
-Landroid/view/accessibility/AccessibilityRequestPreparer$RequestTypes;
-Landroid/view/accessibility/AccessibilityRequestPreparer$ViewAttachStateListener;
-Landroid/view/accessibility/AccessibilityRequestPreparer$ViewAttachStateListener;-><init>()V
Landroid/view/accessibility/AccessibilityRequestPreparer;->mRequestTypes:I
Landroid/view/accessibility/AccessibilityRequestPreparer;->mViewRef:Ljava/lang/ref/WeakReference;
Landroid/view/accessibility/AccessibilityWindowInfo;-><init>()V
@@ -78478,8 +73260,6 @@
Landroid/view/accessibility/CaptioningManager$CaptionStyle;->WHITE_ON_BLACK:Landroid/view/accessibility/CaptioningManager$CaptionStyle;
Landroid/view/accessibility/CaptioningManager$CaptionStyle;->YELLOW_ON_BLACK:Landroid/view/accessibility/CaptioningManager$CaptionStyle;
Landroid/view/accessibility/CaptioningManager$CaptionStyle;->YELLOW_ON_BLUE:Landroid/view/accessibility/CaptioningManager$CaptionStyle;
-Landroid/view/accessibility/CaptioningManager$MyContentObserver;
-Landroid/view/accessibility/CaptioningManager$MyContentObserver;-><init>(Landroid/os/Handler;)V
Landroid/view/accessibility/CaptioningManager$MyContentObserver;->mHandler:Landroid/os/Handler;
Landroid/view/accessibility/CaptioningManager;-><init>(Landroid/content/Context;)V
Landroid/view/accessibility/CaptioningManager;->DEFAULT_ENABLED:I
@@ -78496,7 +73276,6 @@
Landroid/view/accessibility/CaptioningManager;->notifyLocaleChanged()V
Landroid/view/accessibility/CaptioningManager;->notifyUserStyleChanged()V
Landroid/view/accessibility/CaptioningManager;->registerObserver(Ljava/lang/String;)V
-Landroid/view/accessibility/IAccessibilityInteractionConnection$Stub$Proxy;
Landroid/view/accessibility/IAccessibilityInteractionConnection$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/view/accessibility/IAccessibilityInteractionConnection$Stub$Proxy;->findAccessibilityNodeInfoByAccessibilityId(JLandroid/graphics/Region;ILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;IIJLandroid/view/MagnificationSpec;Landroid/os/Bundle;)V
Landroid/view/accessibility/IAccessibilityInteractionConnection$Stub$Proxy;->findAccessibilityNodeInfosByText(JLjava/lang/String;Landroid/graphics/Region;ILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;IIJLandroid/view/MagnificationSpec;)V
@@ -78506,7 +73285,6 @@
Landroid/view/accessibility/IAccessibilityInteractionConnection$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/view/accessibility/IAccessibilityInteractionConnection$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/view/accessibility/IAccessibilityInteractionConnection$Stub$Proxy;->performAccessibilityAction(JILandroid/os/Bundle;ILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;IIJ)V
-Landroid/view/accessibility/IAccessibilityInteractionConnection$Stub;
Landroid/view/accessibility/IAccessibilityInteractionConnection$Stub;-><init>()V
Landroid/view/accessibility/IAccessibilityInteractionConnection$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/accessibility/IAccessibilityInteractionConnection;
Landroid/view/accessibility/IAccessibilityInteractionConnection$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -78516,29 +73294,24 @@
Landroid/view/accessibility/IAccessibilityInteractionConnection$Stub;->TRANSACTION_findFocus:I
Landroid/view/accessibility/IAccessibilityInteractionConnection$Stub;->TRANSACTION_focusSearch:I
Landroid/view/accessibility/IAccessibilityInteractionConnection$Stub;->TRANSACTION_performAccessibilityAction:I
-Landroid/view/accessibility/IAccessibilityInteractionConnection;
Landroid/view/accessibility/IAccessibilityInteractionConnection;->findAccessibilityNodeInfoByAccessibilityId(JLandroid/graphics/Region;ILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;IIJLandroid/view/MagnificationSpec;Landroid/os/Bundle;)V
Landroid/view/accessibility/IAccessibilityInteractionConnection;->findAccessibilityNodeInfosByText(JLjava/lang/String;Landroid/graphics/Region;ILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;IIJLandroid/view/MagnificationSpec;)V
Landroid/view/accessibility/IAccessibilityInteractionConnection;->findAccessibilityNodeInfosByViewId(JLjava/lang/String;Landroid/graphics/Region;ILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;IIJLandroid/view/MagnificationSpec;)V
Landroid/view/accessibility/IAccessibilityInteractionConnection;->findFocus(JILandroid/graphics/Region;ILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;IIJLandroid/view/MagnificationSpec;)V
Landroid/view/accessibility/IAccessibilityInteractionConnection;->focusSearch(JILandroid/graphics/Region;ILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;IIJLandroid/view/MagnificationSpec;)V
Landroid/view/accessibility/IAccessibilityInteractionConnection;->performAccessibilityAction(JILandroid/os/Bundle;ILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;IIJ)V
-Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback$Stub$Proxy;
Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback$Stub$Proxy;->setFindAccessibilityNodeInfoResult(Landroid/view/accessibility/AccessibilityNodeInfo;I)V
Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback$Stub$Proxy;->setFindAccessibilityNodeInfosResult(Ljava/util/List;I)V
Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback$Stub$Proxy;->setPerformAccessibilityActionResult(ZI)V
-Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback$Stub;
Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback$Stub;-><init>()V
Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback;
Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback$Stub;->TRANSACTION_setFindAccessibilityNodeInfoResult:I
Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback$Stub;->TRANSACTION_setFindAccessibilityNodeInfosResult:I
Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback$Stub;->TRANSACTION_setPerformAccessibilityActionResult:I
-Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback;
-Landroid/view/accessibility/IAccessibilityManager$Stub$Proxy;
Landroid/view/accessibility/IAccessibilityManager$Stub$Proxy;->addAccessibilityInteractionConnection(Landroid/view/IWindow;Landroid/view/accessibility/IAccessibilityInteractionConnection;Ljava/lang/String;I)I
Landroid/view/accessibility/IAccessibilityManager$Stub$Proxy;->addClient(Landroid/view/accessibility/IAccessibilityManagerClient;I)J
Landroid/view/accessibility/IAccessibilityManager$Stub$Proxy;->getEnabledAccessibilityServiceList(II)Ljava/util/List;
@@ -78557,7 +73330,6 @@
Landroid/view/accessibility/IAccessibilityManager$Stub$Proxy;->setPictureInPictureActionReplacingConnection(Landroid/view/accessibility/IAccessibilityInteractionConnection;)V
Landroid/view/accessibility/IAccessibilityManager$Stub$Proxy;->temporaryEnableAccessibilityStateUntilKeyguardRemoved(Landroid/content/ComponentName;Z)V
Landroid/view/accessibility/IAccessibilityManager$Stub$Proxy;->unregisterUiTestAutomationService(Landroid/accessibilityservice/IAccessibilityServiceClient;)V
-Landroid/view/accessibility/IAccessibilityManager$Stub;
Landroid/view/accessibility/IAccessibilityManager$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/view/accessibility/IAccessibilityManager$Stub;->TRANSACTION_addAccessibilityInteractionConnection:I
Landroid/view/accessibility/IAccessibilityManager$Stub;->TRANSACTION_addClient:I
@@ -78575,7 +73347,6 @@
Landroid/view/accessibility/IAccessibilityManager$Stub;->TRANSACTION_setPictureInPictureActionReplacingConnection:I
Landroid/view/accessibility/IAccessibilityManager$Stub;->TRANSACTION_temporaryEnableAccessibilityStateUntilKeyguardRemoved:I
Landroid/view/accessibility/IAccessibilityManager$Stub;->TRANSACTION_unregisterUiTestAutomationService:I
-Landroid/view/accessibility/IAccessibilityManager;
Landroid/view/accessibility/IAccessibilityManager;->addAccessibilityInteractionConnection(Landroid/view/IWindow;Landroid/view/accessibility/IAccessibilityInteractionConnection;Ljava/lang/String;I)I
Landroid/view/accessibility/IAccessibilityManager;->addClient(Landroid/view/accessibility/IAccessibilityManagerClient;I)J
Landroid/view/accessibility/IAccessibilityManager;->getInstalledAccessibilityServiceList(I)Ljava/util/List;
@@ -78591,26 +73362,21 @@
Landroid/view/accessibility/IAccessibilityManager;->setPictureInPictureActionReplacingConnection(Landroid/view/accessibility/IAccessibilityInteractionConnection;)V
Landroid/view/accessibility/IAccessibilityManager;->temporaryEnableAccessibilityStateUntilKeyguardRemoved(Landroid/content/ComponentName;Z)V
Landroid/view/accessibility/IAccessibilityManager;->unregisterUiTestAutomationService(Landroid/accessibilityservice/IAccessibilityServiceClient;)V
-Landroid/view/accessibility/IAccessibilityManagerClient$Stub$Proxy;
Landroid/view/accessibility/IAccessibilityManagerClient$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/view/accessibility/IAccessibilityManagerClient$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/view/accessibility/IAccessibilityManagerClient$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/view/accessibility/IAccessibilityManagerClient$Stub$Proxy;->notifyServicesStateChanged()V
Landroid/view/accessibility/IAccessibilityManagerClient$Stub$Proxy;->setRelevantEventTypes(I)V
Landroid/view/accessibility/IAccessibilityManagerClient$Stub$Proxy;->setState(I)V
-Landroid/view/accessibility/IAccessibilityManagerClient$Stub;
Landroid/view/accessibility/IAccessibilityManagerClient$Stub;-><init>()V
Landroid/view/accessibility/IAccessibilityManagerClient$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/accessibility/IAccessibilityManagerClient;
Landroid/view/accessibility/IAccessibilityManagerClient$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/view/accessibility/IAccessibilityManagerClient$Stub;->TRANSACTION_notifyServicesStateChanged:I
Landroid/view/accessibility/IAccessibilityManagerClient$Stub;->TRANSACTION_setRelevantEventTypes:I
Landroid/view/accessibility/IAccessibilityManagerClient$Stub;->TRANSACTION_setState:I
-Landroid/view/accessibility/IAccessibilityManagerClient;
Landroid/view/accessibility/IAccessibilityManagerClient;->notifyServicesStateChanged()V
Landroid/view/accessibility/IAccessibilityManagerClient;->setRelevantEventTypes(I)V
Landroid/view/accessibility/IAccessibilityManagerClient;->setState(I)V
-Landroid/view/AccessibilityInteractionController$AccessibilityNodePrefetcher;
-Landroid/view/AccessibilityInteractionController$AccessibilityNodePrefetcher;-><init>()V
Landroid/view/AccessibilityInteractionController$AccessibilityNodePrefetcher;->enforceNodeTreeConsistent(Ljava/util/List;)V
Landroid/view/AccessibilityInteractionController$AccessibilityNodePrefetcher;->MAX_ACCESSIBILITY_NODE_INFO_BATCH_SIZE:I
Landroid/view/AccessibilityInteractionController$AccessibilityNodePrefetcher;->mTempViewList:Ljava/util/ArrayList;
@@ -78621,20 +73387,15 @@
Landroid/view/AccessibilityInteractionController$AccessibilityNodePrefetcher;->prefetchPredecessorsOfVirtualNode(Landroid/view/accessibility/AccessibilityNodeInfo;Landroid/view/View;Landroid/view/accessibility/AccessibilityNodeProvider;Ljava/util/List;)V
Landroid/view/AccessibilityInteractionController$AccessibilityNodePrefetcher;->prefetchSiblingsOfRealNode(Landroid/view/View;Ljava/util/List;)V
Landroid/view/AccessibilityInteractionController$AccessibilityNodePrefetcher;->prefetchSiblingsOfVirtualNode(Landroid/view/accessibility/AccessibilityNodeInfo;Landroid/view/View;Landroid/view/accessibility/AccessibilityNodeProvider;Ljava/util/List;)V
-Landroid/view/AccessibilityInteractionController$AddNodeInfosForViewId;
-Landroid/view/AccessibilityInteractionController$AddNodeInfosForViewId;-><init>()V
Landroid/view/AccessibilityInteractionController$AddNodeInfosForViewId;->init(ILjava/util/List;)V
Landroid/view/AccessibilityInteractionController$AddNodeInfosForViewId;->mInfos:Ljava/util/List;
Landroid/view/AccessibilityInteractionController$AddNodeInfosForViewId;->mViewId:I
Landroid/view/AccessibilityInteractionController$AddNodeInfosForViewId;->reset()V
Landroid/view/AccessibilityInteractionController$AddNodeInfosForViewId;->test(Landroid/view/View;)Z
-Landroid/view/AccessibilityInteractionController$MessageHolder;
Landroid/view/AccessibilityInteractionController$MessageHolder;-><init>(Landroid/os/Message;IJ)V
Landroid/view/AccessibilityInteractionController$MessageHolder;->mInterrogatingPid:I
Landroid/view/AccessibilityInteractionController$MessageHolder;->mInterrogatingTid:J
Landroid/view/AccessibilityInteractionController$MessageHolder;->mMessage:Landroid/os/Message;
-Landroid/view/AccessibilityInteractionController$PrivateHandler;
-Landroid/view/AccessibilityInteractionController$PrivateHandler;-><init>(Landroid/os/Looper;)V
Landroid/view/AccessibilityInteractionController$PrivateHandler;->MSG_APP_PREPARATION_FINISHED:I
Landroid/view/AccessibilityInteractionController$PrivateHandler;->MSG_APP_PREPARATION_TIMEOUT:I
Landroid/view/AccessibilityInteractionController$PrivateHandler;->MSG_FIND_ACCESSIBILITY_NODE_INFOS_BY_VIEW_ID:I
@@ -78644,7 +73405,6 @@
Landroid/view/AccessibilityInteractionController$PrivateHandler;->MSG_FOCUS_SEARCH:I
Landroid/view/AccessibilityInteractionController$PrivateHandler;->MSG_PERFORM_ACCESSIBILITY_ACTION:I
Landroid/view/AccessibilityInteractionController$PrivateHandler;->MSG_PREPARE_FOR_EXTRA_DATA_REQUEST:I
-Landroid/view/AccessibilityInteractionController;
Landroid/view/AccessibilityInteractionController;-><init>(Landroid/view/ViewRootImpl;)V
Landroid/view/AccessibilityInteractionController;->adjustIsVisibleToUserIfNeeded(Landroid/view/accessibility/AccessibilityNodeInfo;Landroid/graphics/Region;)V
Landroid/view/AccessibilityInteractionController;->adjustIsVisibleToUserIfNeeded(Ljava/util/List;Landroid/graphics/Region;)V
@@ -78698,11 +73458,9 @@
Landroid/view/AccessibilityInteractionController;->shouldApplyAppScaleAndMagnificationSpec(FLandroid/view/MagnificationSpec;)Z
Landroid/view/AccessibilityInteractionController;->updateInfoForViewportAndReturnFindNodeResult(Landroid/view/accessibility/AccessibilityNodeInfo;Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback;ILandroid/view/MagnificationSpec;Landroid/graphics/Region;)V
Landroid/view/AccessibilityInteractionController;->updateInfosForViewportAndReturnFindNodeResult(Ljava/util/List;Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback;ILandroid/view/MagnificationSpec;Landroid/graphics/Region;)V
-Landroid/view/AccessibilityIterators$AbstractTextSegmentIterator;
Landroid/view/AccessibilityIterators$AbstractTextSegmentIterator;->getRange(II)[I
Landroid/view/AccessibilityIterators$AbstractTextSegmentIterator;->initialize(Ljava/lang/String;)V
Landroid/view/AccessibilityIterators$AbstractTextSegmentIterator;->mSegment:[I
-Landroid/view/AccessibilityIterators$CharacterTextSegmentIterator;
Landroid/view/AccessibilityIterators$CharacterTextSegmentIterator;-><init>(Ljava/util/Locale;)V
Landroid/view/AccessibilityIterators$CharacterTextSegmentIterator;->following(I)[I
Landroid/view/AccessibilityIterators$CharacterTextSegmentIterator;->getInstance(Ljava/util/Locale;)Landroid/view/AccessibilityIterators$CharacterTextSegmentIterator;
@@ -78713,7 +73471,6 @@
Landroid/view/AccessibilityIterators$CharacterTextSegmentIterator;->onLocaleChanged(Ljava/util/Locale;)V
Landroid/view/AccessibilityIterators$CharacterTextSegmentIterator;->preceding(I)[I
Landroid/view/AccessibilityIterators$CharacterTextSegmentIterator;->sInstance:Landroid/view/AccessibilityIterators$CharacterTextSegmentIterator;
-Landroid/view/AccessibilityIterators$ParagraphTextSegmentIterator;
Landroid/view/AccessibilityIterators$ParagraphTextSegmentIterator;-><init>()V
Landroid/view/AccessibilityIterators$ParagraphTextSegmentIterator;->following(I)[I
Landroid/view/AccessibilityIterators$ParagraphTextSegmentIterator;->getInstance()Landroid/view/AccessibilityIterators$ParagraphTextSegmentIterator;
@@ -78721,10 +73478,8 @@
Landroid/view/AccessibilityIterators$ParagraphTextSegmentIterator;->isStartBoundary(I)Z
Landroid/view/AccessibilityIterators$ParagraphTextSegmentIterator;->preceding(I)[I
Landroid/view/AccessibilityIterators$ParagraphTextSegmentIterator;->sInstance:Landroid/view/AccessibilityIterators$ParagraphTextSegmentIterator;
-Landroid/view/AccessibilityIterators$TextSegmentIterator;
Landroid/view/AccessibilityIterators$TextSegmentIterator;->following(I)[I
Landroid/view/AccessibilityIterators$TextSegmentIterator;->preceding(I)[I
-Landroid/view/AccessibilityIterators$WordTextSegmentIterator;
Landroid/view/AccessibilityIterators$WordTextSegmentIterator;-><init>(Ljava/util/Locale;)V
Landroid/view/AccessibilityIterators$WordTextSegmentIterator;->following(I)[I
Landroid/view/AccessibilityIterators$WordTextSegmentIterator;->getInstance(Ljava/util/Locale;)Landroid/view/AccessibilityIterators$WordTextSegmentIterator;
@@ -78734,12 +73489,10 @@
Landroid/view/AccessibilityIterators$WordTextSegmentIterator;->onLocaleChanged(Ljava/util/Locale;)V
Landroid/view/AccessibilityIterators$WordTextSegmentIterator;->preceding(I)[I
Landroid/view/AccessibilityIterators$WordTextSegmentIterator;->sInstance:Landroid/view/AccessibilityIterators$WordTextSegmentIterator;
-Landroid/view/AccessibilityIterators;
Landroid/view/AccessibilityIterators;-><init>()V
Landroid/view/ActionMode;->mTag:Ljava/lang/Object;
Landroid/view/ActionMode;->mTitleOptionalHint:Z
Landroid/view/ActionMode;->mType:I
-Landroid/view/ActionProvider$SubUiVisibilityListener;
Landroid/view/ActionProvider$SubUiVisibilityListener;->onSubUiVisibilityChanged(Z)V
Landroid/view/ActionProvider;->mSubUiVisibilityListener:Landroid/view/ActionProvider$SubUiVisibilityListener;
Landroid/view/ActionProvider;->mVisibilityListener:Landroid/view/ActionProvider$VisibilityListener;
@@ -78754,7 +73507,6 @@
Landroid/view/animation/AlphaAnimation;->mFromAlpha:F
Landroid/view/animation/AlphaAnimation;->mToAlpha:F
Landroid/view/animation/Animation$Description;->parseValue(Landroid/util/TypedValue;)Landroid/view/animation/Animation$Description;
-Landroid/view/animation/Animation$NoImagePreloadHolder;
Landroid/view/animation/Animation$NoImagePreloadHolder;-><init>()V
Landroid/view/animation/Animation$NoImagePreloadHolder;->USE_CLOSEGUARD:Z
Landroid/view/animation/Animation;->fireAnimationEnd()V
@@ -78811,7 +73563,6 @@
Landroid/view/animation/AnimationSet;->PROPERTY_START_OFFSET_MASK:I
Landroid/view/animation/AnimationSet;->restoreChildrenStartOffset()V
Landroid/view/animation/AnimationSet;->setFlag(IZ)V
-Landroid/view/animation/AnimationUtils$AnimationState;
Landroid/view/animation/AnimationUtils$AnimationState;-><init>()V
Landroid/view/animation/AnimationUtils$AnimationState;->animationClockLocked:Z
Landroid/view/animation/AnimationUtils$AnimationState;->currentVsyncTimeMillis:J
@@ -78837,7 +73588,6 @@
Landroid/view/animation/BaseInterpolator;->setChangingConfiguration(I)V
Landroid/view/animation/BounceInterpolator;->bounce(F)F
Landroid/view/animation/BounceInterpolator;->createNativeInterpolator()J
-Landroid/view/animation/ClipRectAnimation;
Landroid/view/animation/ClipRectAnimation;-><init>(IIIIIIII)V
Landroid/view/animation/ClipRectAnimation;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
Landroid/view/animation/ClipRectAnimation;-><init>(Landroid/graphics/Rect;Landroid/graphics/Rect;)V
@@ -78934,14 +73684,11 @@
Landroid/view/animation/TranslateAnimation;->mToXType:I
Landroid/view/animation/TranslateAnimation;->mToYDelta:F
Landroid/view/animation/TranslateAnimation;->mToYType:I
-Landroid/view/animation/TranslateXAnimation;
Landroid/view/animation/TranslateXAnimation;-><init>(FF)V
Landroid/view/animation/TranslateXAnimation;-><init>(IFIF)V
Landroid/view/animation/TranslateXAnimation;->mTmpValues:[F
-Landroid/view/animation/TranslateYAnimation;
Landroid/view/animation/TranslateYAnimation;-><init>(FF)V
Landroid/view/animation/TranslateYAnimation;->mTmpValues:[F
-Landroid/view/AppTransitionAnimationSpec;
Landroid/view/AppTransitionAnimationSpec;-><init>(Landroid/os/Parcel;)V
Landroid/view/AppTransitionAnimationSpec;->buffer:Landroid/graphics/GraphicBuffer;
Landroid/view/AppTransitionAnimationSpec;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -78955,8 +73702,6 @@
Landroid/view/autofill/AutofillId;->mViewId:I
Landroid/view/autofill/AutofillId;->mVirtual:Z
Landroid/view/autofill/AutofillId;->mVirtualId:I
-Landroid/view/autofill/AutofillManager$AutofillCallback$AutofillEventType;
-Landroid/view/autofill/AutofillManager$AutofillClient;
Landroid/view/autofill/AutofillManager$AutofillClient;->autofillClientAuthenticate(ILandroid/content/IntentSender;Landroid/content/Intent;)V
Landroid/view/autofill/AutofillManager$AutofillClient;->autofillClientDispatchUnhandledKey(Landroid/view/View;Landroid/view/KeyEvent;)V
Landroid/view/autofill/AutofillManager$AutofillClient;->autofillClientFindViewByAccessibilityIdTraversal(II)Landroid/view/View;
@@ -78974,7 +73719,6 @@
Landroid/view/autofill/AutofillManager$AutofillClient;->autofillClientResetableStateAvailable()V
Landroid/view/autofill/AutofillManager$AutofillClient;->autofillClientRunOnUiThread(Ljava/lang/Runnable;)V
Landroid/view/autofill/AutofillManager$AutofillClient;->isDisablingEnterExitEventForAutofill()Z
-Landroid/view/autofill/AutofillManager$AutofillManagerClient;
Landroid/view/autofill/AutofillManager$AutofillManagerClient;-><init>(Landroid/view/autofill/AutofillManager;)V
Landroid/view/autofill/AutofillManager$AutofillManagerClient;->authenticate(IILandroid/content/IntentSender;Landroid/content/Intent;)V
Landroid/view/autofill/AutofillManager$AutofillManagerClient;->autofill(ILjava/util/List;Ljava/util/List;)V
@@ -78988,8 +73732,6 @@
Landroid/view/autofill/AutofillManager$AutofillManagerClient;->setState(I)V
Landroid/view/autofill/AutofillManager$AutofillManagerClient;->setTrackedViews(I[Landroid/view/autofill/AutofillId;ZZ[Landroid/view/autofill/AutofillId;Landroid/view/autofill/AutofillId;)V
Landroid/view/autofill/AutofillManager$AutofillManagerClient;->startIntentSender(Landroid/content/IntentSender;Landroid/content/Intent;)V
-Landroid/view/autofill/AutofillManager$CompatibilityBridge;
-Landroid/view/autofill/AutofillManager$CompatibilityBridge;-><init>()V
Landroid/view/autofill/AutofillManager$CompatibilityBridge;->findViewByAccessibilityId(IJ)Landroid/view/View;
Landroid/view/autofill/AutofillManager$CompatibilityBridge;->findVirtualNodeByAccessibilityId(Landroid/view/View;I)Landroid/view/accessibility/AccessibilityNodeInfo;
Landroid/view/autofill/AutofillManager$CompatibilityBridge;->getCompatServiceInfo()Landroid/accessibilityservice/AccessibilityServiceInfo;
@@ -79009,8 +73751,6 @@
Landroid/view/autofill/AutofillManager$CompatibilityBridge;->notifyViewExited(IJ)V
Landroid/view/autofill/AutofillManager$CompatibilityBridge;->onAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;ZI)Landroid/view/accessibility/AccessibilityEvent;
Landroid/view/autofill/AutofillManager$CompatibilityBridge;->updateTrackedViewsLocked()V
-Landroid/view/autofill/AutofillManager$TrackedViews;
-Landroid/view/autofill/AutofillManager$TrackedViews;-><init>([Landroid/view/autofill/AutofillId;)V
Landroid/view/autofill/AutofillManager$TrackedViews;->addToSet(Landroid/util/ArraySet;Ljava/lang/Object;)Landroid/util/ArraySet;
Landroid/view/autofill/AutofillManager$TrackedViews;->isInSet(Landroid/util/ArraySet;Ljava/lang/Object;)Z
Landroid/view/autofill/AutofillManager$TrackedViews;->mInvisibleTrackedIds:Landroid/util/ArraySet;
@@ -79129,16 +73869,12 @@
Landroid/view/autofill/AutofillManager;->STATE_UNKNOWN_COMPAT_MODE:I
Landroid/view/autofill/AutofillManager;->TAG:Ljava/lang/String;
Landroid/view/autofill/AutofillManager;->updateSessionLocked(Landroid/view/autofill/AutofillId;Landroid/graphics/Rect;Landroid/view/autofill/AutofillValue;II)V
-Landroid/view/autofill/AutofillManagerInternal;
Landroid/view/autofill/AutofillManagerInternal;-><init>()V
Landroid/view/autofill/AutofillManagerInternal;->isCompatibilityModeRequested(Ljava/lang/String;JI)Z
Landroid/view/autofill/AutofillManagerInternal;->onBackKeyPressed()V
-Landroid/view/autofill/AutofillPopupWindow$WindowPresenter;
-Landroid/view/autofill/AutofillPopupWindow$WindowPresenter;-><init>(Landroid/view/autofill/IAutofillWindowPresenter;)V
Landroid/view/autofill/AutofillPopupWindow$WindowPresenter;->hide(Landroid/graphics/Rect;)V
Landroid/view/autofill/AutofillPopupWindow$WindowPresenter;->mPresenter:Landroid/view/autofill/IAutofillWindowPresenter;
Landroid/view/autofill/AutofillPopupWindow$WindowPresenter;->show(Landroid/view/WindowManager$LayoutParams;Landroid/graphics/Rect;ZI)V
-Landroid/view/autofill/AutofillPopupWindow;
Landroid/view/autofill/AutofillPopupWindow;-><init>(Landroid/view/autofill/IAutofillWindowPresenter;)V
Landroid/view/autofill/AutofillPopupWindow;->attachToAnchor(Landroid/view/View;III)V
Landroid/view/autofill/AutofillPopupWindow;->detachFromAnchor()V
@@ -79158,7 +73894,6 @@
Landroid/view/autofill/AutofillValue;->isEmpty()Z
Landroid/view/autofill/AutofillValue;->mType:I
Landroid/view/autofill/AutofillValue;->mValue:Ljava/lang/Object;
-Landroid/view/autofill/Helper;
Landroid/view/autofill/Helper;-><init>()V
Landroid/view/autofill/Helper;->appendRedacted(Ljava/lang/StringBuilder;Ljava/lang/CharSequence;)V
Landroid/view/autofill/Helper;->appendRedacted(Ljava/lang/StringBuilder;[Ljava/lang/String;)V
@@ -79166,7 +73901,6 @@
Landroid/view/autofill/Helper;->sDebug:Z
Landroid/view/autofill/Helper;->sVerbose:Z
Landroid/view/autofill/Helper;->toArray(Ljava/util/Collection;)[Landroid/view/autofill/AutofillId;
-Landroid/view/autofill/IAutoFillManager$Stub$Proxy;
Landroid/view/autofill/IAutoFillManager$Stub$Proxy;->addClient(Landroid/view/autofill/IAutoFillManagerClient;I)I
Landroid/view/autofill/IAutoFillManager$Stub$Proxy;->cancelSession(II)V
Landroid/view/autofill/IAutoFillManager$Stub$Proxy;->disableOwnedAutofillServices(I)V
@@ -79192,7 +73926,6 @@
Landroid/view/autofill/IAutoFillManager$Stub$Proxy;->startSession(Landroid/os/IBinder;Landroid/os/IBinder;Landroid/view/autofill/AutofillId;Landroid/graphics/Rect;Landroid/view/autofill/AutofillValue;IZILandroid/content/ComponentName;Z)I
Landroid/view/autofill/IAutoFillManager$Stub$Proxy;->updateOrRestartSession(Landroid/os/IBinder;Landroid/os/IBinder;Landroid/view/autofill/AutofillId;Landroid/graphics/Rect;Landroid/view/autofill/AutofillValue;IZILandroid/content/ComponentName;IIZ)I
Landroid/view/autofill/IAutoFillManager$Stub$Proxy;->updateSession(ILandroid/view/autofill/AutofillId;Landroid/graphics/Rect;Landroid/view/autofill/AutofillValue;III)V
-Landroid/view/autofill/IAutoFillManager$Stub;
Landroid/view/autofill/IAutoFillManager$Stub;-><init>()V
Landroid/view/autofill/IAutoFillManager$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/view/autofill/IAutoFillManager$Stub;->TRANSACTION_addClient:I
@@ -79218,7 +73951,6 @@
Landroid/view/autofill/IAutoFillManager$Stub;->TRANSACTION_startSession:I
Landroid/view/autofill/IAutoFillManager$Stub;->TRANSACTION_updateOrRestartSession:I
Landroid/view/autofill/IAutoFillManager$Stub;->TRANSACTION_updateSession:I
-Landroid/view/autofill/IAutoFillManager;
Landroid/view/autofill/IAutoFillManager;->addClient(Landroid/view/autofill/IAutoFillManagerClient;I)I
Landroid/view/autofill/IAutoFillManager;->cancelSession(II)V
Landroid/view/autofill/IAutoFillManager;->disableOwnedAutofillServices(I)V
@@ -79242,7 +73974,6 @@
Landroid/view/autofill/IAutoFillManager;->startSession(Landroid/os/IBinder;Landroid/os/IBinder;Landroid/view/autofill/AutofillId;Landroid/graphics/Rect;Landroid/view/autofill/AutofillValue;IZILandroid/content/ComponentName;Z)I
Landroid/view/autofill/IAutoFillManager;->updateOrRestartSession(Landroid/os/IBinder;Landroid/os/IBinder;Landroid/view/autofill/AutofillId;Landroid/graphics/Rect;Landroid/view/autofill/AutofillValue;IZILandroid/content/ComponentName;IIZ)I
Landroid/view/autofill/IAutoFillManager;->updateSession(ILandroid/view/autofill/AutofillId;Landroid/graphics/Rect;Landroid/view/autofill/AutofillValue;III)V
-Landroid/view/autofill/IAutoFillManagerClient$Stub$Proxy;
Landroid/view/autofill/IAutoFillManagerClient$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/view/autofill/IAutoFillManagerClient$Stub$Proxy;->authenticate(IILandroid/content/IntentSender;Landroid/content/Intent;)V
Landroid/view/autofill/IAutoFillManagerClient$Stub$Proxy;->autofill(ILjava/util/List;Ljava/util/List;)V
@@ -79257,7 +73988,6 @@
Landroid/view/autofill/IAutoFillManagerClient$Stub$Proxy;->setState(I)V
Landroid/view/autofill/IAutoFillManagerClient$Stub$Proxy;->setTrackedViews(I[Landroid/view/autofill/AutofillId;ZZ[Landroid/view/autofill/AutofillId;Landroid/view/autofill/AutofillId;)V
Landroid/view/autofill/IAutoFillManagerClient$Stub$Proxy;->startIntentSender(Landroid/content/IntentSender;Landroid/content/Intent;)V
-Landroid/view/autofill/IAutoFillManagerClient$Stub;
Landroid/view/autofill/IAutoFillManagerClient$Stub;-><init>()V
Landroid/view/autofill/IAutoFillManagerClient$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/autofill/IAutoFillManagerClient;
Landroid/view/autofill/IAutoFillManagerClient$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -79272,7 +74002,6 @@
Landroid/view/autofill/IAutoFillManagerClient$Stub;->TRANSACTION_setState:I
Landroid/view/autofill/IAutoFillManagerClient$Stub;->TRANSACTION_setTrackedViews:I
Landroid/view/autofill/IAutoFillManagerClient$Stub;->TRANSACTION_startIntentSender:I
-Landroid/view/autofill/IAutoFillManagerClient;
Landroid/view/autofill/IAutoFillManagerClient;->authenticate(IILandroid/content/IntentSender;Landroid/content/Intent;)V
Landroid/view/autofill/IAutoFillManagerClient;->autofill(ILjava/util/List;Ljava/util/List;)V
Landroid/view/autofill/IAutoFillManagerClient;->dispatchUnhandledKey(ILandroid/view/autofill/AutofillId;Landroid/view/KeyEvent;)V
@@ -79284,27 +74013,20 @@
Landroid/view/autofill/IAutoFillManagerClient;->setState(I)V
Landroid/view/autofill/IAutoFillManagerClient;->setTrackedViews(I[Landroid/view/autofill/AutofillId;ZZ[Landroid/view/autofill/AutofillId;Landroid/view/autofill/AutofillId;)V
Landroid/view/autofill/IAutoFillManagerClient;->startIntentSender(Landroid/content/IntentSender;Landroid/content/Intent;)V
-Landroid/view/autofill/IAutofillWindowPresenter$Stub$Proxy;
Landroid/view/autofill/IAutofillWindowPresenter$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/view/autofill/IAutofillWindowPresenter$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/view/autofill/IAutofillWindowPresenter$Stub$Proxy;->hide(Landroid/graphics/Rect;)V
Landroid/view/autofill/IAutofillWindowPresenter$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/view/autofill/IAutofillWindowPresenter$Stub$Proxy;->show(Landroid/view/WindowManager$LayoutParams;Landroid/graphics/Rect;ZI)V
-Landroid/view/autofill/IAutofillWindowPresenter$Stub;
Landroid/view/autofill/IAutofillWindowPresenter$Stub;-><init>()V
Landroid/view/autofill/IAutofillWindowPresenter$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/autofill/IAutofillWindowPresenter;
Landroid/view/autofill/IAutofillWindowPresenter$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/view/autofill/IAutofillWindowPresenter$Stub;->TRANSACTION_hide:I
Landroid/view/autofill/IAutofillWindowPresenter$Stub;->TRANSACTION_show:I
-Landroid/view/autofill/IAutofillWindowPresenter;
Landroid/view/autofill/IAutofillWindowPresenter;->hide(Landroid/graphics/Rect;)V
Landroid/view/autofill/IAutofillWindowPresenter;->show(Landroid/view/WindowManager$LayoutParams;Landroid/graphics/Rect;ZI)V
-Landroid/view/autofill/ParcelableMap;
Landroid/view/autofill/ParcelableMap;-><init>(I)V
Landroid/view/autofill/ParcelableMap;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/view/BatchedInputEventReceiver$BatchedInputRunnable;
-Landroid/view/BatchedInputEventReceiver$BatchedInputRunnable;-><init>()V
-Landroid/view/BatchedInputEventReceiver;
Landroid/view/BatchedInputEventReceiver;->dispose()V
Landroid/view/BatchedInputEventReceiver;->doConsumeBatchedInput(J)V
Landroid/view/BatchedInputEventReceiver;->mBatchedInputRunnable:Landroid/view/BatchedInputEventReceiver$BatchedInputRunnable;
@@ -79313,26 +74035,19 @@
Landroid/view/BatchedInputEventReceiver;->onBatchedInputEventPending()V
Landroid/view/BatchedInputEventReceiver;->scheduleBatchedInput()V
Landroid/view/BatchedInputEventReceiver;->unscheduleBatchedInput()V
-Landroid/view/Choreographer$CallbackQueue;
-Landroid/view/Choreographer$CallbackQueue;-><init>()V
Landroid/view/Choreographer$CallbackQueue;->extractDueCallbacksLocked(J)Landroid/view/Choreographer$CallbackRecord;
Landroid/view/Choreographer$CallbackQueue;->hasDueCallbacksLocked(J)Z
Landroid/view/Choreographer$CallbackQueue;->mHead:Landroid/view/Choreographer$CallbackRecord;
Landroid/view/Choreographer$CallbackQueue;->removeCallbacksLocked(Ljava/lang/Object;Ljava/lang/Object;)V
-Landroid/view/Choreographer$CallbackRecord;
Landroid/view/Choreographer$CallbackRecord;-><init>()V
Landroid/view/Choreographer$CallbackRecord;->action:Ljava/lang/Object;
Landroid/view/Choreographer$CallbackRecord;->dueTime:J
Landroid/view/Choreographer$CallbackRecord;->next:Landroid/view/Choreographer$CallbackRecord;
Landroid/view/Choreographer$CallbackRecord;->token:Ljava/lang/Object;
-Landroid/view/Choreographer$FrameDisplayEventReceiver;
-Landroid/view/Choreographer$FrameDisplayEventReceiver;-><init>(Landroid/os/Looper;I)V
Landroid/view/Choreographer$FrameDisplayEventReceiver;->mFrame:I
Landroid/view/Choreographer$FrameDisplayEventReceiver;->mHavePendingVsync:Z
Landroid/view/Choreographer$FrameDisplayEventReceiver;->mTimestampNanos:J
Landroid/view/Choreographer$FrameDisplayEventReceiver;->onVsync(JII)V
-Landroid/view/Choreographer$FrameHandler;
-Landroid/view/Choreographer$FrameHandler;-><init>(Landroid/os/Looper;)V
Landroid/view/Choreographer;-><init>(Landroid/os/Looper;I)V
Landroid/view/Choreographer;->CALLBACK_COMMIT:I
Landroid/view/Choreographer;->CALLBACK_INPUT:I
@@ -79382,7 +74097,6 @@
Landroid/view/ContextThemeWrapper;->getOverrideConfiguration()Landroid/content/res/Configuration;
Landroid/view/ContextThemeWrapper;->getResourcesInternal()Landroid/content/res/Resources;
Landroid/view/ContextThemeWrapper;->mOverrideConfiguration:Landroid/content/res/Configuration;
-Landroid/view/Display$HdrCapabilities$HdrType;
Landroid/view/Display$HdrCapabilities;-><init>()V
Landroid/view/Display$HdrCapabilities;-><init>(Landroid/os/Parcel;)V
Landroid/view/Display$HdrCapabilities;->mMaxAverageLuminance:F
@@ -79451,7 +74165,6 @@
Landroid/view/Display;->TYPE_OVERLAY:I
Landroid/view/Display;->updateCachedAppSizeIfNeededLocked()V
Landroid/view/Display;->updateDisplayInfoLocked()V
-Landroid/view/DisplayAdjustments;
Landroid/view/DisplayAdjustments;-><init>(Landroid/content/res/Configuration;)V
Landroid/view/DisplayAdjustments;-><init>(Landroid/view/DisplayAdjustments;)V
Landroid/view/DisplayAdjustments;->DEFAULT_DISPLAY_ADJUSTMENTS:Landroid/view/DisplayAdjustments;
@@ -79459,7 +74172,6 @@
Landroid/view/DisplayAdjustments;->mCompatInfo:Landroid/content/res/CompatibilityInfo;
Landroid/view/DisplayAdjustments;->mConfiguration:Landroid/content/res/Configuration;
Landroid/view/DisplayAdjustments;->setConfiguration(Landroid/content/res/Configuration;)V
-Landroid/view/DisplayCutout$ParcelableWrapper;
Landroid/view/DisplayCutout$ParcelableWrapper;-><init>()V
Landroid/view/DisplayCutout$ParcelableWrapper;-><init>(Landroid/view/DisplayCutout;)V
Landroid/view/DisplayCutout$ParcelableWrapper;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -79503,11 +74215,9 @@
Landroid/view/DisplayCutout;->TAG:Ljava/lang/String;
Landroid/view/DisplayCutout;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
Landroid/view/DisplayCutout;->ZERO_RECT:Landroid/graphics/Rect;
-Landroid/view/DisplayCutoutProto;
Landroid/view/DisplayCutoutProto;-><init>()V
Landroid/view/DisplayCutoutProto;->BOUNDS:J
Landroid/view/DisplayCutoutProto;->INSETS:J
-Landroid/view/DisplayEventReceiver;
Landroid/view/DisplayEventReceiver;-><init>(Landroid/os/Looper;I)V
Landroid/view/DisplayEventReceiver;->dispose()V
Landroid/view/DisplayEventReceiver;->dispose(Z)V
@@ -79519,7 +74229,6 @@
Landroid/view/DisplayEventReceiver;->TAG:Ljava/lang/String;
Landroid/view/DisplayEventReceiver;->VSYNC_SOURCE_APP:I
Landroid/view/DisplayEventReceiver;->VSYNC_SOURCE_SURFACE_FLINGER:I
-Landroid/view/DisplayInfo;
Landroid/view/DisplayInfo;-><init>(Landroid/os/Parcel;)V
Landroid/view/DisplayInfo;-><init>(Landroid/view/DisplayInfo;)V
Landroid/view/DisplayInfo;->address:Ljava/lang/String;
@@ -79574,14 +74283,12 @@
Landroid/view/DisplayInfo;->type:I
Landroid/view/DisplayInfo;->uniqueId:Ljava/lang/String;
Landroid/view/DisplayInfo;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-Landroid/view/DisplayInfoProto;
Landroid/view/DisplayInfoProto;-><init>()V
Landroid/view/DisplayInfoProto;->APP_HEIGHT:J
Landroid/view/DisplayInfoProto;->APP_WIDTH:J
Landroid/view/DisplayInfoProto;->LOGICAL_HEIGHT:J
Landroid/view/DisplayInfoProto;->LOGICAL_WIDTH:J
Landroid/view/DisplayInfoProto;->NAME:J
-Landroid/view/DisplayListCanvas;
Landroid/view/DisplayListCanvas;-><init>(Landroid/view/RenderNode;II)V
Landroid/view/DisplayListCanvas;->drawRoundRect(Landroid/graphics/CanvasProperty;Landroid/graphics/CanvasProperty;Landroid/graphics/CanvasProperty;Landroid/graphics/CanvasProperty;Landroid/graphics/CanvasProperty;Landroid/graphics/CanvasProperty;Landroid/graphics/CanvasProperty;)V
Landroid/view/DisplayListCanvas;->drawTextureLayer(Landroid/view/TextureLayer;)V
@@ -79609,7 +74316,6 @@
Landroid/view/DisplayListCanvas;->recycle()V
Landroid/view/DisplayListCanvas;->sPool:Landroid/util/Pools$SynchronizedPool;
Landroid/view/DisplayListCanvas;->throwIfCannotDraw(Landroid/graphics/Bitmap;)V
-Landroid/view/DisplayProto;
Landroid/view/DisplayProto;-><init>()V
Landroid/view/DisplayProto;->COLOR_MODE_ADOBE_RGB:I
Landroid/view/DisplayProto;->COLOR_MODE_BT601_525:I
@@ -79649,11 +74355,9 @@
Landroid/view/DragEvent;->obtain(IFFLjava/lang/Object;Landroid/content/ClipDescription;Landroid/content/ClipData;Lcom/android/internal/view/IDragAndDropPermissions;Z)Landroid/view/DragEvent;
Landroid/view/DragEvent;->recycle()V
Landroid/view/DragEvent;->TRACK_RECYCLED_LOCATION:Z
-Landroid/view/FallbackEventHandler;
Landroid/view/FallbackEventHandler;->dispatchKeyEvent(Landroid/view/KeyEvent;)Z
Landroid/view/FallbackEventHandler;->preDispatchKeyEvent(Landroid/view/KeyEvent;)V
Landroid/view/FallbackEventHandler;->setView(Landroid/view/View;)V
-Landroid/view/FocusFinder$FocusSorter;
Landroid/view/FocusFinder$FocusSorter;-><init>()V
Landroid/view/FocusFinder$FocusSorter;->mLastPoolRect:I
Landroid/view/FocusFinder$FocusSorter;->mRectByView:Ljava/util/HashMap;
@@ -79662,9 +74366,7 @@
Landroid/view/FocusFinder$FocusSorter;->mSidesComparator:Ljava/util/Comparator;
Landroid/view/FocusFinder$FocusSorter;->mTopsComparator:Ljava/util/Comparator;
Landroid/view/FocusFinder$FocusSorter;->sort([Landroid/view/View;IILandroid/view/ViewGroup;Z)V
-Landroid/view/FocusFinder$UserSpecifiedFocusComparator$NextFocusGetter;
Landroid/view/FocusFinder$UserSpecifiedFocusComparator$NextFocusGetter;->get(Landroid/view/View;Landroid/view/View;)Landroid/view/View;
-Landroid/view/FocusFinder$UserSpecifiedFocusComparator;
Landroid/view/FocusFinder$UserSpecifiedFocusComparator;-><init>(Landroid/view/FocusFinder$UserSpecifiedFocusComparator$NextFocusGetter;)V
Landroid/view/FocusFinder$UserSpecifiedFocusComparator;->compare(Landroid/view/View;Landroid/view/View;)I
Landroid/view/FocusFinder$UserSpecifiedFocusComparator;->mHeadsOfChains:Landroid/util/ArrayMap;
@@ -79712,7 +74414,6 @@
Landroid/view/FocusFinder;->setFocusBottomRight(Landroid/view/ViewGroup;Landroid/graphics/Rect;)V
Landroid/view/FocusFinder;->setFocusTopLeft(Landroid/view/ViewGroup;Landroid/graphics/Rect;)V
Landroid/view/FocusFinder;->tlFocusFinder:Ljava/lang/ThreadLocal;
-Landroid/view/FocusFinderHelper;
Landroid/view/FocusFinderHelper;-><init>(Landroid/view/FocusFinder;)V
Landroid/view/FocusFinderHelper;->beamBeats(ILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)Z
Landroid/view/FocusFinderHelper;->beamsOverlap(ILandroid/graphics/Rect;Landroid/graphics/Rect;)Z
@@ -79721,8 +74422,6 @@
Landroid/view/FocusFinderHelper;->majorAxisDistance(ILandroid/graphics/Rect;Landroid/graphics/Rect;)I
Landroid/view/FocusFinderHelper;->majorAxisDistanceToFarEdge(ILandroid/graphics/Rect;Landroid/graphics/Rect;)I
Landroid/view/FocusFinderHelper;->mFocusFinder:Landroid/view/FocusFinder;
-Landroid/view/FrameInfo$FrameInfoFlags;
-Landroid/view/FrameInfo;
Landroid/view/FrameInfo;-><init>()V
Landroid/view/FrameInfo;->addFlags(J)V
Landroid/view/FrameInfo;->ANIMATION_START:I
@@ -79742,7 +74441,6 @@
Landroid/view/FrameInfo;->setVsync(JJ)V
Landroid/view/FrameInfo;->updateInputEventTime(JJ)V
Landroid/view/FrameInfo;->VSYNC:I
-Landroid/view/FrameMetrics$Index;
Landroid/view/FrameMetrics$Index;->ANIMATION_START:I
Landroid/view/FrameMetrics$Index;->DRAW_START:I
Landroid/view/FrameMetrics$Index;->FLAGS:I
@@ -79758,20 +74456,15 @@
Landroid/view/FrameMetrics$Index;->SYNC_QUEUED:I
Landroid/view/FrameMetrics$Index;->SYNC_START:I
Landroid/view/FrameMetrics$Index;->VSYNC:I
-Landroid/view/FrameMetrics$Metric;
Landroid/view/FrameMetrics;-><init>()V
Landroid/view/FrameMetrics;->DURATIONS:[I
Landroid/view/FrameMetrics;->FRAME_INFO_FLAG_FIRST_DRAW:I
-Landroid/view/FrameMetricsObserver;
Landroid/view/FrameMetricsObserver;-><init>(Landroid/view/Window;Landroid/os/Looper;Landroid/view/Window$OnFrameMetricsAvailableListener;)V
Landroid/view/FrameMetricsObserver;->mListener:Landroid/view/Window$OnFrameMetricsAvailableListener;
Landroid/view/FrameMetricsObserver;->mNative:Lcom/android/internal/util/VirtualRefBasePtr;
Landroid/view/FrameMetricsObserver;->mWindow:Ljava/lang/ref/WeakReference;
Landroid/view/FrameStats;->mFramesPresentedTimeNano:[J
Landroid/view/FrameStats;->mRefreshPeriodNano:J
-Landroid/view/GestureDetector$GestureHandler;
-Landroid/view/GestureDetector$GestureHandler;-><init>()V
-Landroid/view/GestureDetector$GestureHandler;-><init>(Landroid/os/Handler;)V
Landroid/view/GestureDetector;->cancel()V
Landroid/view/GestureDetector;->cancelTaps()V
Landroid/view/GestureDetector;->dispatchLongPress()V
@@ -79805,7 +74498,6 @@
Landroid/view/GestureDetector;->SHOW_PRESS:I
Landroid/view/GestureDetector;->TAP:I
Landroid/view/GestureDetector;->TAP_TIMEOUT:I
-Landroid/view/GhostView;
Landroid/view/GhostView;-><init>(Landroid/view/View;)V
Landroid/view/GhostView;->calculateMatrix(Landroid/view/View;Landroid/view/ViewGroup;Landroid/graphics/Matrix;)V
Landroid/view/GhostView;->copySize(Landroid/view/View;Landroid/view/View;)V
@@ -79822,12 +74514,10 @@
Landroid/view/GhostView;->mView:Landroid/view/View;
Landroid/view/GhostView;->setMatrix(Landroid/graphics/Matrix;)V
Landroid/view/Gravity;->toString(I)Ljava/lang/String;
-Landroid/view/HandlerActionQueue$HandlerAction;
Landroid/view/HandlerActionQueue$HandlerAction;-><init>(Ljava/lang/Runnable;J)V
Landroid/view/HandlerActionQueue$HandlerAction;->action:Ljava/lang/Runnable;
Landroid/view/HandlerActionQueue$HandlerAction;->delay:J
Landroid/view/HandlerActionQueue$HandlerAction;->matches(Ljava/lang/Runnable;)Z
-Landroid/view/HandlerActionQueue;
Landroid/view/HandlerActionQueue;-><init>()V
Landroid/view/HandlerActionQueue;->executeActions(Landroid/os/Handler;)V
Landroid/view/HandlerActionQueue;->getDelay(I)J
@@ -79849,29 +74539,22 @@
Landroid/view/HapticFeedbackConstants;->GESTURE_START:I
Landroid/view/HapticFeedbackConstants;->REJECT:I
Landroid/view/HapticFeedbackConstants;->SAFE_MODE_ENABLED:I
-Landroid/view/IApplicationToken$Stub$Proxy;
Landroid/view/IApplicationToken$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/view/IApplicationToken$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/view/IApplicationToken$Stub$Proxy;->getName()Ljava/lang/String;
Landroid/view/IApplicationToken$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/view/IApplicationToken$Stub;
Landroid/view/IApplicationToken$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/IApplicationToken;
Landroid/view/IApplicationToken$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/view/IApplicationToken$Stub;->TRANSACTION_getName:I
-Landroid/view/IApplicationToken;
Landroid/view/IApplicationToken;->getName()Ljava/lang/String;
-Landroid/view/IAppTransitionAnimationSpecsFuture$Stub$Proxy;
Landroid/view/IAppTransitionAnimationSpecsFuture$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/view/IAppTransitionAnimationSpecsFuture$Stub$Proxy;->get()[Landroid/view/AppTransitionAnimationSpec;
Landroid/view/IAppTransitionAnimationSpecsFuture$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/view/IAppTransitionAnimationSpecsFuture$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/view/IAppTransitionAnimationSpecsFuture$Stub;
Landroid/view/IAppTransitionAnimationSpecsFuture$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/IAppTransitionAnimationSpecsFuture;
Landroid/view/IAppTransitionAnimationSpecsFuture$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/view/IAppTransitionAnimationSpecsFuture$Stub;->TRANSACTION_get:I
-Landroid/view/IAppTransitionAnimationSpecsFuture;
Landroid/view/IAppTransitionAnimationSpecsFuture;->get()[Landroid/view/AppTransitionAnimationSpec;
-Landroid/view/IDockedStackListener$Stub$Proxy;
Landroid/view/IDockedStackListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/view/IDockedStackListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/view/IDockedStackListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -79880,7 +74563,6 @@
Landroid/view/IDockedStackListener$Stub$Proxy;->onDockedStackExistsChanged(Z)V
Landroid/view/IDockedStackListener$Stub$Proxy;->onDockedStackMinimizedChanged(ZJZ)V
Landroid/view/IDockedStackListener$Stub$Proxy;->onDockSideChanged(I)V
-Landroid/view/IDockedStackListener$Stub;
Landroid/view/IDockedStackListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/IDockedStackListener;
Landroid/view/IDockedStackListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/view/IDockedStackListener$Stub;->TRANSACTION_onAdjustedForImeChanged:I
@@ -79888,65 +74570,51 @@
Landroid/view/IDockedStackListener$Stub;->TRANSACTION_onDockedStackExistsChanged:I
Landroid/view/IDockedStackListener$Stub;->TRANSACTION_onDockedStackMinimizedChanged:I
Landroid/view/IDockedStackListener$Stub;->TRANSACTION_onDockSideChanged:I
-Landroid/view/IDockedStackListener;
Landroid/view/IDockedStackListener;->onAdjustedForImeChanged(ZJ)V
Landroid/view/IDockedStackListener;->onDividerVisibilityChanged(Z)V
Landroid/view/IDockedStackListener;->onDockedStackExistsChanged(Z)V
Landroid/view/IDockedStackListener;->onDockedStackMinimizedChanged(ZJZ)V
Landroid/view/IDockedStackListener;->onDockSideChanged(I)V
-Landroid/view/IGraphicsStats$Stub$Proxy;
Landroid/view/IGraphicsStats$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/view/IGraphicsStats$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/view/IGraphicsStats$Stub$Proxy;->requestBufferForProcess(Ljava/lang/String;Landroid/view/IGraphicsStatsCallback;)Landroid/os/ParcelFileDescriptor;
-Landroid/view/IGraphicsStats$Stub;
Landroid/view/IGraphicsStats$Stub;-><init>()V
Landroid/view/IGraphicsStats$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/view/IGraphicsStats$Stub;->TRANSACTION_requestBufferForProcess:I
-Landroid/view/IGraphicsStats;
Landroid/view/IGraphicsStats;->requestBufferForProcess(Ljava/lang/String;Landroid/view/IGraphicsStatsCallback;)Landroid/os/ParcelFileDescriptor;
-Landroid/view/IGraphicsStatsCallback$Stub$Proxy;
Landroid/view/IGraphicsStatsCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/view/IGraphicsStatsCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/view/IGraphicsStatsCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/view/IGraphicsStatsCallback$Stub$Proxy;->onRotateGraphicsStatsBuffer()V
-Landroid/view/IGraphicsStatsCallback$Stub;
Landroid/view/IGraphicsStatsCallback$Stub;-><init>()V
Landroid/view/IGraphicsStatsCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/IGraphicsStatsCallback;
Landroid/view/IGraphicsStatsCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/view/IGraphicsStatsCallback$Stub;->TRANSACTION_onRotateGraphicsStatsBuffer:I
-Landroid/view/IGraphicsStatsCallback;
Landroid/view/IGraphicsStatsCallback;->onRotateGraphicsStatsBuffer()V
-Landroid/view/IInputFilter$Stub$Proxy;
Landroid/view/IInputFilter$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/view/IInputFilter$Stub$Proxy;->filterInputEvent(Landroid/view/InputEvent;I)V
Landroid/view/IInputFilter$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/view/IInputFilter$Stub$Proxy;->install(Landroid/view/IInputFilterHost;)V
Landroid/view/IInputFilter$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/view/IInputFilter$Stub$Proxy;->uninstall()V
-Landroid/view/IInputFilter$Stub;
Landroid/view/IInputFilter$Stub;-><init>()V
Landroid/view/IInputFilter$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/IInputFilter;
Landroid/view/IInputFilter$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/view/IInputFilter$Stub;->TRANSACTION_filterInputEvent:I
Landroid/view/IInputFilter$Stub;->TRANSACTION_install:I
Landroid/view/IInputFilter$Stub;->TRANSACTION_uninstall:I
-Landroid/view/IInputFilter;
Landroid/view/IInputFilter;->filterInputEvent(Landroid/view/InputEvent;I)V
Landroid/view/IInputFilter;->install(Landroid/view/IInputFilterHost;)V
Landroid/view/IInputFilter;->uninstall()V
-Landroid/view/IInputFilterHost$Stub$Proxy;
Landroid/view/IInputFilterHost$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/view/IInputFilterHost$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/view/IInputFilterHost$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/view/IInputFilterHost$Stub$Proxy;->sendInputEvent(Landroid/view/InputEvent;I)V
-Landroid/view/IInputFilterHost$Stub;
Landroid/view/IInputFilterHost$Stub;-><init>()V
Landroid/view/IInputFilterHost$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/IInputFilterHost;
Landroid/view/IInputFilterHost$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/view/IInputFilterHost$Stub;->TRANSACTION_sendInputEvent:I
-Landroid/view/IInputFilterHost;
Landroid/view/IInputFilterHost;->sendInputEvent(Landroid/view/InputEvent;I)V
-Landroid/view/InputChannel;
Landroid/view/InputChannel;->DEBUG:Z
Landroid/view/InputChannel;->dispose()V
Landroid/view/InputChannel;->dup()Landroid/view/InputChannel;
@@ -80012,7 +74680,6 @@
Landroid/view/InputEvent;->setSource(I)V
Landroid/view/InputEvent;->setTainted(Z)V
Landroid/view/InputEvent;->TRACK_RECYCLED_LOCATION:Z
-Landroid/view/InputEventConsistencyVerifier$KeyState;
Landroid/view/InputEventConsistencyVerifier$KeyState;-><init>()V
Landroid/view/InputEventConsistencyVerifier$KeyState;->deviceId:I
Landroid/view/InputEventConsistencyVerifier$KeyState;->keyCode:I
@@ -80023,7 +74690,6 @@
Landroid/view/InputEventConsistencyVerifier$KeyState;->recycle()V
Landroid/view/InputEventConsistencyVerifier$KeyState;->source:I
Landroid/view/InputEventConsistencyVerifier$KeyState;->unhandled:Z
-Landroid/view/InputEventConsistencyVerifier;
Landroid/view/InputEventConsistencyVerifier;-><init>(Ljava/lang/Object;ILjava/lang/String;)V
Landroid/view/InputEventConsistencyVerifier;->addKeyState(III)V
Landroid/view/InputEventConsistencyVerifier;->appendEvent(Ljava/lang/StringBuilder;ILandroid/view/InputEvent;Z)V
@@ -80069,9 +74735,7 @@
Landroid/view/InputEventConsistencyVerifier;->RECENT_EVENTS_TO_LOG:I
Landroid/view/InputEventConsistencyVerifier;->reset()V
Landroid/view/InputEventConsistencyVerifier;->startEvent(Landroid/view/InputEvent;ILjava/lang/String;)Z
-Landroid/view/InputEventReceiver$Factory;
Landroid/view/InputEventReceiver$Factory;->createInputEventReceiver(Landroid/view/InputChannel;Landroid/os/Looper;)Landroid/view/InputEventReceiver;
-Landroid/view/InputEventReceiver;
Landroid/view/InputEventReceiver;-><init>(Landroid/view/InputChannel;Landroid/os/Looper;)V
Landroid/view/InputEventReceiver;->consumeBatchedInputEvents(J)Z
Landroid/view/InputEventReceiver;->dispose()V
@@ -80088,7 +74752,6 @@
Landroid/view/InputEventReceiver;->nativeInit(Ljava/lang/ref/WeakReference;Landroid/view/InputChannel;Landroid/os/MessageQueue;)J
Landroid/view/InputEventReceiver;->onBatchedInputEventPending()V
Landroid/view/InputEventReceiver;->TAG:Ljava/lang/String;
-Landroid/view/InputEventSender;
Landroid/view/InputEventSender;-><init>(Landroid/view/InputChannel;Landroid/os/Looper;)V
Landroid/view/InputEventSender;->dispose()V
Landroid/view/InputEventSender;->dispose(Z)V
@@ -80103,9 +74766,6 @@
Landroid/view/InputEventSender;->onInputEventFinished(IZ)V
Landroid/view/InputEventSender;->sendInputEvent(ILandroid/view/InputEvent;)Z
Landroid/view/InputEventSender;->TAG:Ljava/lang/String;
-Landroid/view/InputFilter$H;
-Landroid/view/InputFilter$H;-><init>(Landroid/os/Looper;)V
-Landroid/view/InputFilter;
Landroid/view/InputFilter;->filterInputEvent(Landroid/view/InputEvent;I)V
Landroid/view/InputFilter;->install(Landroid/view/IInputFilterHost;)V
Landroid/view/InputFilter;->mH:Landroid/view/InputFilter$H;
@@ -80177,7 +74837,6 @@
Landroid/view/inputmethod/InputBinding;->mPid:I
Landroid/view/inputmethod/InputBinding;->mUid:I
Landroid/view/inputmethod/InputBinding;->TAG:Ljava/lang/String;
-Landroid/view/inputmethod/InputConnectionInspector$MissingMethodFlags;
Landroid/view/inputmethod/InputConnectionInspector$MissingMethodFlags;->CLOSE_CONNECTION:I
Landroid/view/inputmethod/InputConnectionInspector$MissingMethodFlags;->COMMIT_CONTENT:I
Landroid/view/inputmethod/InputConnectionInspector$MissingMethodFlags;->COMMIT_CORRECTION:I
@@ -80186,7 +74845,6 @@
Landroid/view/inputmethod/InputConnectionInspector$MissingMethodFlags;->GET_SELECTED_TEXT:I
Landroid/view/inputmethod/InputConnectionInspector$MissingMethodFlags;->REQUEST_CURSOR_UPDATES:I
Landroid/view/inputmethod/InputConnectionInspector$MissingMethodFlags;->SET_COMPOSING_REGION:I
-Landroid/view/inputmethod/InputConnectionInspector;
Landroid/view/inputmethod/InputConnectionInspector;-><init>()V
Landroid/view/inputmethod/InputConnectionInspector;->getMissingMethodFlags(Landroid/view/inputmethod/InputConnection;)I
Landroid/view/inputmethod/InputConnectionInspector;->getMissingMethodFlagsAsString(I)Ljava/lang/String;
@@ -80232,21 +74890,13 @@
Landroid/view/inputmethod/InputMethodInfo;->mSupportsSwitchingToNextInputMethod:Z
Landroid/view/inputmethod/InputMethodInfo;->supportsSwitchingToNextInputMethod()Z
Landroid/view/inputmethod/InputMethodInfo;->TAG:Ljava/lang/String;
-Landroid/view/inputmethod/InputMethodManager$ControlledInputConnectionWrapper;
Landroid/view/inputmethod/InputMethodManager$ControlledInputConnectionWrapper;-><init>(Landroid/os/Looper;Landroid/view/inputmethod/InputConnection;Landroid/view/inputmethod/InputMethodManager;)V
Landroid/view/inputmethod/InputMethodManager$ControlledInputConnectionWrapper;->deactivate()V
Landroid/view/inputmethod/InputMethodManager$ControlledInputConnectionWrapper;->isActive()Z
Landroid/view/inputmethod/InputMethodManager$ControlledInputConnectionWrapper;->mParentInputMethodManager:Landroid/view/inputmethod/InputMethodManager;
Landroid/view/inputmethod/InputMethodManager$ControlledInputConnectionWrapper;->onUserAction()V
-Landroid/view/inputmethod/InputMethodManager$FinishedInputEventCallback;
Landroid/view/inputmethod/InputMethodManager$FinishedInputEventCallback;->onFinishedInputEvent(Ljava/lang/Object;Z)V
-Landroid/view/inputmethod/InputMethodManager$H;
-Landroid/view/inputmethod/InputMethodManager$H;-><init>(Landroid/os/Looper;)V
-Landroid/view/inputmethod/InputMethodManager$ImeInputEventSender;
-Landroid/view/inputmethod/InputMethodManager$ImeInputEventSender;-><init>(Landroid/view/InputChannel;Landroid/os/Looper;)V
Landroid/view/inputmethod/InputMethodManager$ImeInputEventSender;->onInputEventFinished(IZ)V
-Landroid/view/inputmethod/InputMethodManager$PendingEvent;
-Landroid/view/inputmethod/InputMethodManager$PendingEvent;-><init>()V
Landroid/view/inputmethod/InputMethodManager$PendingEvent;->mCallback:Landroid/view/inputmethod/InputMethodManager$FinishedInputEventCallback;
Landroid/view/inputmethod/InputMethodManager$PendingEvent;->mEvent:Landroid/view/InputEvent;
Landroid/view/inputmethod/InputMethodManager$PendingEvent;->mHandled:Z
@@ -80341,7 +74991,6 @@
Landroid/view/inputmethod/InputMethodManager;->switchToNextInputMethodInternal(Landroid/os/IBinder;Z)Z
Landroid/view/inputmethod/InputMethodManager;->switchToPreviousInputMethodInternal(Landroid/os/IBinder;)Z
Landroid/view/inputmethod/InputMethodManager;->TAG:Ljava/lang/String;
-Landroid/view/inputmethod/InputMethodManagerInternal;
Landroid/view/inputmethod/InputMethodManagerInternal;->hideCurrentInputMethod()V
Landroid/view/inputmethod/InputMethodManagerInternal;->setInteractive(Z)V
Landroid/view/inputmethod/InputMethodManagerInternal;->startVrInputMethodNoCheck(Landroid/content/ComponentName;)V
@@ -80387,7 +75036,6 @@
Landroid/view/inputmethod/InputMethodSubtype;->sort(Landroid/content/Context;ILandroid/view/inputmethod/InputMethodInfo;Ljava/util/List;)Ljava/util/List;
Landroid/view/inputmethod/InputMethodSubtype;->SUBTYPE_ID_NONE:I
Landroid/view/inputmethod/InputMethodSubtype;->TAG:Ljava/lang/String;
-Landroid/view/inputmethod/InputMethodSubtypeArray;
Landroid/view/inputmethod/InputMethodSubtypeArray;-><init>(Landroid/os/Parcel;)V
Landroid/view/inputmethod/InputMethodSubtypeArray;->compress([B)[B
Landroid/view/inputmethod/InputMethodSubtypeArray;->decompress([BI)[B
@@ -80402,7 +75050,6 @@
Landroid/view/inputmethod/InputMethodSubtypeArray;->TAG:Ljava/lang/String;
Landroid/view/inputmethod/InputMethodSubtypeArray;->unmarshall([B)[Landroid/view/inputmethod/InputMethodSubtype;
Landroid/view/inputmethod/InputMethodSubtypeArray;->writeToParcel(Landroid/os/Parcel;)V
-Landroid/view/inputmethod/SparseRectFArray$SparseRectFArrayBuilder;
Landroid/view/inputmethod/SparseRectFArray$SparseRectFArrayBuilder;-><init>()V
Landroid/view/inputmethod/SparseRectFArray$SparseRectFArrayBuilder;->append(IFFFFI)Landroid/view/inputmethod/SparseRectFArray$SparseRectFArrayBuilder;
Landroid/view/inputmethod/SparseRectFArray$SparseRectFArrayBuilder;->build()Landroid/view/inputmethod/SparseRectFArray;
@@ -80415,7 +75062,6 @@
Landroid/view/inputmethod/SparseRectFArray$SparseRectFArrayBuilder;->mFlagsArray:[I
Landroid/view/inputmethod/SparseRectFArray$SparseRectFArrayBuilder;->mKeys:[I
Landroid/view/inputmethod/SparseRectFArray$SparseRectFArrayBuilder;->reset()V
-Landroid/view/inputmethod/SparseRectFArray;
Landroid/view/inputmethod/SparseRectFArray;-><init>(Landroid/os/Parcel;)V
Landroid/view/inputmethod/SparseRectFArray;-><init>(Landroid/view/inputmethod/SparseRectFArray$SparseRectFArrayBuilder;)V
Landroid/view/inputmethod/SparseRectFArray;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -80424,12 +75070,9 @@
Landroid/view/inputmethod/SparseRectFArray;->mCoordinates:[F
Landroid/view/inputmethod/SparseRectFArray;->mFlagsArray:[I
Landroid/view/inputmethod/SparseRectFArray;->mKeys:[I
-Landroid/view/InputQueue$ActiveInputEvent;
-Landroid/view/InputQueue$ActiveInputEvent;-><init>()V
Landroid/view/InputQueue$ActiveInputEvent;->mCallback:Landroid/view/InputQueue$FinishedInputEventCallback;
Landroid/view/InputQueue$ActiveInputEvent;->mToken:Ljava/lang/Object;
Landroid/view/InputQueue$ActiveInputEvent;->recycle()V
-Landroid/view/InputQueue$FinishedInputEventCallback;
Landroid/view/InputQueue$FinishedInputEventCallback;->onFinishedInputEvent(Ljava/lang/Object;Z)V
Landroid/view/InputQueue;-><init>()V
Landroid/view/InputQueue;->dispose()V
@@ -80446,36 +75089,29 @@
Landroid/view/InputQueue;->obtainActiveInputEvent(Ljava/lang/Object;Landroid/view/InputQueue$FinishedInputEventCallback;)Landroid/view/InputQueue$ActiveInputEvent;
Landroid/view/InputQueue;->recycleActiveInputEvent(Landroid/view/InputQueue$ActiveInputEvent;)V
Landroid/view/InputQueue;->sendInputEvent(Landroid/view/InputEvent;Ljava/lang/Object;ZLandroid/view/InputQueue$FinishedInputEventCallback;)V
-Landroid/view/IOnKeyguardExitResult$Stub$Proxy;
Landroid/view/IOnKeyguardExitResult$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/view/IOnKeyguardExitResult$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/view/IOnKeyguardExitResult$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/view/IOnKeyguardExitResult$Stub$Proxy;->onKeyguardExitResult(Z)V
-Landroid/view/IOnKeyguardExitResult$Stub;
Landroid/view/IOnKeyguardExitResult$Stub;-><init>()V
Landroid/view/IOnKeyguardExitResult$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/IOnKeyguardExitResult;
Landroid/view/IOnKeyguardExitResult$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/view/IOnKeyguardExitResult$Stub;->TRANSACTION_onKeyguardExitResult:I
-Landroid/view/IOnKeyguardExitResult;
-Landroid/view/IPinnedStackController$Stub$Proxy;
Landroid/view/IPinnedStackController$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/view/IPinnedStackController$Stub$Proxy;->getDisplayRotation()I
Landroid/view/IPinnedStackController$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/view/IPinnedStackController$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/view/IPinnedStackController$Stub$Proxy;->setIsMinimized(Z)V
Landroid/view/IPinnedStackController$Stub$Proxy;->setMinEdgeSize(I)V
-Landroid/view/IPinnedStackController$Stub;
Landroid/view/IPinnedStackController$Stub;-><init>()V
Landroid/view/IPinnedStackController$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/IPinnedStackController;
Landroid/view/IPinnedStackController$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/view/IPinnedStackController$Stub;->TRANSACTION_getDisplayRotation:I
Landroid/view/IPinnedStackController$Stub;->TRANSACTION_setIsMinimized:I
Landroid/view/IPinnedStackController$Stub;->TRANSACTION_setMinEdgeSize:I
-Landroid/view/IPinnedStackController;
Landroid/view/IPinnedStackController;->getDisplayRotation()I
Landroid/view/IPinnedStackController;->setIsMinimized(Z)V
Landroid/view/IPinnedStackController;->setMinEdgeSize(I)V
-Landroid/view/IPinnedStackListener$Stub$Proxy;
Landroid/view/IPinnedStackListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/view/IPinnedStackListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/view/IPinnedStackListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -80485,7 +75121,6 @@
Landroid/view/IPinnedStackListener$Stub$Proxy;->onMinimizedStateChanged(Z)V
Landroid/view/IPinnedStackListener$Stub$Proxy;->onMovementBoundsChanged(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;ZZI)V
Landroid/view/IPinnedStackListener$Stub$Proxy;->onShelfVisibilityChanged(ZI)V
-Landroid/view/IPinnedStackListener$Stub;
Landroid/view/IPinnedStackListener$Stub;-><init>()V
Landroid/view/IPinnedStackListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/IPinnedStackListener;
Landroid/view/IPinnedStackListener$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -80495,14 +75130,12 @@
Landroid/view/IPinnedStackListener$Stub;->TRANSACTION_onMinimizedStateChanged:I
Landroid/view/IPinnedStackListener$Stub;->TRANSACTION_onMovementBoundsChanged:I
Landroid/view/IPinnedStackListener$Stub;->TRANSACTION_onShelfVisibilityChanged:I
-Landroid/view/IPinnedStackListener;
Landroid/view/IPinnedStackListener;->onActionsChanged(Landroid/content/pm/ParceledListSlice;)V
Landroid/view/IPinnedStackListener;->onImeVisibilityChanged(ZI)V
Landroid/view/IPinnedStackListener;->onListenerRegistered(Landroid/view/IPinnedStackController;)V
Landroid/view/IPinnedStackListener;->onMinimizedStateChanged(Z)V
Landroid/view/IPinnedStackListener;->onMovementBoundsChanged(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;ZZI)V
Landroid/view/IPinnedStackListener;->onShelfVisibilityChanged(ZI)V
-Landroid/view/IRecentsAnimationController$Stub$Proxy;
Landroid/view/IRecentsAnimationController$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/view/IRecentsAnimationController$Stub$Proxy;->finish(Z)V
Landroid/view/IRecentsAnimationController$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
@@ -80512,7 +75145,6 @@
Landroid/view/IRecentsAnimationController$Stub$Proxy;->setAnimationTargetsBehindSystemBars(Z)V
Landroid/view/IRecentsAnimationController$Stub$Proxy;->setInputConsumerEnabled(Z)V
Landroid/view/IRecentsAnimationController$Stub$Proxy;->setSplitScreenMinimized(Z)V
-Landroid/view/IRecentsAnimationController$Stub;
Landroid/view/IRecentsAnimationController$Stub;-><init>()V
Landroid/view/IRecentsAnimationController$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/IRecentsAnimationController;
Landroid/view/IRecentsAnimationController$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -80522,67 +75154,50 @@
Landroid/view/IRecentsAnimationController$Stub;->TRANSACTION_setAnimationTargetsBehindSystemBars:I
Landroid/view/IRecentsAnimationController$Stub;->TRANSACTION_setInputConsumerEnabled:I
Landroid/view/IRecentsAnimationController$Stub;->TRANSACTION_setSplitScreenMinimized:I
-Landroid/view/IRecentsAnimationController;
Landroid/view/IRecentsAnimationController;->hideCurrentInputMethod()V
Landroid/view/IRecentsAnimationController;->setSplitScreenMinimized(Z)V
-Landroid/view/IRecentsAnimationRunner$Stub$Proxy;
Landroid/view/IRecentsAnimationRunner$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/view/IRecentsAnimationRunner$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/view/IRecentsAnimationRunner$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/view/IRecentsAnimationRunner$Stub$Proxy;->onAnimationCanceled()V
Landroid/view/IRecentsAnimationRunner$Stub$Proxy;->onAnimationStart(Landroid/view/IRecentsAnimationController;[Landroid/view/RemoteAnimationTarget;Landroid/graphics/Rect;Landroid/graphics/Rect;)V
-Landroid/view/IRecentsAnimationRunner$Stub;
Landroid/view/IRecentsAnimationRunner$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/IRecentsAnimationRunner;
Landroid/view/IRecentsAnimationRunner$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/view/IRecentsAnimationRunner$Stub;->TRANSACTION_onAnimationCanceled:I
Landroid/view/IRecentsAnimationRunner$Stub;->TRANSACTION_onAnimationStart:I
-Landroid/view/IRecentsAnimationRunner;
-Landroid/view/IRemoteAnimationFinishedCallback$Stub$Proxy;
Landroid/view/IRemoteAnimationFinishedCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/view/IRemoteAnimationFinishedCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/view/IRemoteAnimationFinishedCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/view/IRemoteAnimationFinishedCallback$Stub$Proxy;->onAnimationFinished()V
-Landroid/view/IRemoteAnimationFinishedCallback$Stub;
Landroid/view/IRemoteAnimationFinishedCallback$Stub;-><init>()V
Landroid/view/IRemoteAnimationFinishedCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/IRemoteAnimationFinishedCallback;
Landroid/view/IRemoteAnimationFinishedCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/view/IRemoteAnimationFinishedCallback$Stub;->TRANSACTION_onAnimationFinished:I
-Landroid/view/IRemoteAnimationFinishedCallback;
-Landroid/view/IRemoteAnimationRunner$Stub$Proxy;
Landroid/view/IRemoteAnimationRunner$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/view/IRemoteAnimationRunner$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/view/IRemoteAnimationRunner$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/view/IRemoteAnimationRunner$Stub$Proxy;->onAnimationCancelled()V
Landroid/view/IRemoteAnimationRunner$Stub$Proxy;->onAnimationStart([Landroid/view/RemoteAnimationTarget;Landroid/view/IRemoteAnimationFinishedCallback;)V
-Landroid/view/IRemoteAnimationRunner$Stub;
Landroid/view/IRemoteAnimationRunner$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/IRemoteAnimationRunner;
Landroid/view/IRemoteAnimationRunner$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/view/IRemoteAnimationRunner$Stub;->TRANSACTION_onAnimationCancelled:I
Landroid/view/IRemoteAnimationRunner$Stub;->TRANSACTION_onAnimationStart:I
-Landroid/view/IRemoteAnimationRunner;
-Landroid/view/IRotationWatcher$Stub$Proxy;
Landroid/view/IRotationWatcher$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/view/IRotationWatcher$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/view/IRotationWatcher$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/view/IRotationWatcher$Stub$Proxy;->onRotationChanged(I)V
-Landroid/view/IRotationWatcher$Stub;
Landroid/view/IRotationWatcher$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/IRotationWatcher;
Landroid/view/IRotationWatcher$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/view/IRotationWatcher$Stub;->TRANSACTION_onRotationChanged:I
-Landroid/view/IRotationWatcher;
-Landroid/view/IWallpaperVisibilityListener$Stub$Proxy;
Landroid/view/IWallpaperVisibilityListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/view/IWallpaperVisibilityListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/view/IWallpaperVisibilityListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/view/IWallpaperVisibilityListener$Stub$Proxy;->onWallpaperVisibilityChanged(ZI)V
-Landroid/view/IWallpaperVisibilityListener$Stub;
Landroid/view/IWallpaperVisibilityListener$Stub;-><init>()V
Landroid/view/IWallpaperVisibilityListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/IWallpaperVisibilityListener;
Landroid/view/IWallpaperVisibilityListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/view/IWallpaperVisibilityListener$Stub;->TRANSACTION_onWallpaperVisibilityChanged:I
-Landroid/view/IWallpaperVisibilityListener;
Landroid/view/IWallpaperVisibilityListener;->onWallpaperVisibilityChanged(ZI)V
-Landroid/view/IWindow$Stub$Proxy;
Landroid/view/IWindow$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/view/IWindow$Stub$Proxy;->closeSystemDialogs(Ljava/lang/String;)V
Landroid/view/IWindow$Stub$Proxy;->dispatchAppVisibility(Z)V
@@ -80601,7 +75216,6 @@
Landroid/view/IWindow$Stub$Proxy;->resized(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;ZLandroid/util/MergedConfiguration;Landroid/graphics/Rect;ZZILandroid/view/DisplayCutout$ParcelableWrapper;)V
Landroid/view/IWindow$Stub$Proxy;->updatePointerIcon(FF)V
Landroid/view/IWindow$Stub$Proxy;->windowFocusChanged(ZZ)V
-Landroid/view/IWindow$Stub;
Landroid/view/IWindow$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/view/IWindow$Stub;->TRANSACTION_closeSystemDialogs:I
Landroid/view/IWindow$Stub;->TRANSACTION_dispatchAppVisibility:I
@@ -80618,7 +75232,6 @@
Landroid/view/IWindow$Stub;->TRANSACTION_resized:I
Landroid/view/IWindow$Stub;->TRANSACTION_updatePointerIcon:I
Landroid/view/IWindow$Stub;->TRANSACTION_windowFocusChanged:I
-Landroid/view/IWindow;
Landroid/view/IWindow;->dispatchDragEvent(Landroid/view/DragEvent;)V
Landroid/view/IWindow;->dispatchPointerCaptureChanged(Z)V
Landroid/view/IWindow;->dispatchSystemUiVisibilityChanged(IIII)V
@@ -80628,40 +75241,33 @@
Landroid/view/IWindow;->requestAppKeyboardShortcuts(Lcom/android/internal/os/IResultReceiver;I)V
Landroid/view/IWindow;->resized(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;ZLandroid/util/MergedConfiguration;Landroid/graphics/Rect;ZZILandroid/view/DisplayCutout$ParcelableWrapper;)V
Landroid/view/IWindow;->updatePointerIcon(FF)V
-Landroid/view/IWindowFocusObserver$Stub$Proxy;
Landroid/view/IWindowFocusObserver$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/view/IWindowFocusObserver$Stub$Proxy;->focusGained(Landroid/os/IBinder;)V
Landroid/view/IWindowFocusObserver$Stub$Proxy;->focusLost(Landroid/os/IBinder;)V
Landroid/view/IWindowFocusObserver$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/view/IWindowFocusObserver$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/view/IWindowFocusObserver$Stub;
Landroid/view/IWindowFocusObserver$Stub;-><init>()V
Landroid/view/IWindowFocusObserver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/IWindowFocusObserver;
Landroid/view/IWindowFocusObserver$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/view/IWindowFocusObserver$Stub;->TRANSACTION_focusGained:I
Landroid/view/IWindowFocusObserver$Stub;->TRANSACTION_focusLost:I
-Landroid/view/IWindowFocusObserver;
Landroid/view/IWindowFocusObserver;->focusGained(Landroid/os/IBinder;)V
Landroid/view/IWindowFocusObserver;->focusLost(Landroid/os/IBinder;)V
-Landroid/view/IWindowId$Stub$Proxy;
Landroid/view/IWindowId$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/view/IWindowId$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/view/IWindowId$Stub$Proxy;->isFocused()Z
Landroid/view/IWindowId$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/view/IWindowId$Stub$Proxy;->registerFocusObserver(Landroid/view/IWindowFocusObserver;)V
Landroid/view/IWindowId$Stub$Proxy;->unregisterFocusObserver(Landroid/view/IWindowFocusObserver;)V
-Landroid/view/IWindowId$Stub;
Landroid/view/IWindowId$Stub;-><init>()V
Landroid/view/IWindowId$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/IWindowId;
Landroid/view/IWindowId$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/view/IWindowId$Stub;->TRANSACTION_isFocused:I
Landroid/view/IWindowId$Stub;->TRANSACTION_registerFocusObserver:I
Landroid/view/IWindowId$Stub;->TRANSACTION_unregisterFocusObserver:I
-Landroid/view/IWindowId;
Landroid/view/IWindowId;->isFocused()Z
Landroid/view/IWindowId;->registerFocusObserver(Landroid/view/IWindowFocusObserver;)V
Landroid/view/IWindowId;->unregisterFocusObserver(Landroid/view/IWindowFocusObserver;)V
-Landroid/view/IWindowManager$Stub$Proxy;
Landroid/view/IWindowManager$Stub$Proxy;->addWindowToken(Landroid/os/IBinder;II)V
Landroid/view/IWindowManager$Stub$Proxy;->clearForcedDisplayDensityForUser(II)V
Landroid/view/IWindowManager$Stub$Proxy;->clearForcedDisplaySize(I)V
@@ -80752,7 +75358,6 @@
Landroid/view/IWindowManager$Stub$Proxy;->unregisterWallpaperVisibilityListener(Landroid/view/IWallpaperVisibilityListener;I)V
Landroid/view/IWindowManager$Stub$Proxy;->updateOrientationFromAppTokens(Landroid/content/res/Configuration;Landroid/os/IBinder;I)Landroid/content/res/Configuration;
Landroid/view/IWindowManager$Stub$Proxy;->updateRotation(ZZ)V
-Landroid/view/IWindowManager$Stub;
Landroid/view/IWindowManager$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/view/IWindowManager$Stub;->TRANSACTION_addWindowToken:I
Landroid/view/IWindowManager$Stub;->TRANSACTION_clearForcedDisplayDensityForUser:I
@@ -80847,7 +75452,6 @@
Landroid/view/IWindowManager$Stub;->TRANSACTION_updateOrientationFromAppTokens:I
Landroid/view/IWindowManager$Stub;->TRANSACTION_updateRotation:I
Landroid/view/IWindowManager$Stub;->TRANSACTION_watchRotation:I
-Landroid/view/IWindowManager;
Landroid/view/IWindowManager;->addWindowToken(Landroid/os/IBinder;II)V
Landroid/view/IWindowManager;->clearForcedDisplayDensityForUser(II)V
Landroid/view/IWindowManager;->clearForcedDisplaySize(I)V
@@ -80910,7 +75514,6 @@
Landroid/view/IWindowManager;->updateOrientationFromAppTokens(Landroid/content/res/Configuration;Landroid/os/IBinder;I)Landroid/content/res/Configuration;
Landroid/view/IWindowManager;->updateRotation(ZZ)V
Landroid/view/IWindowManager;->watchRotation(Landroid/view/IRotationWatcher;I)I
-Landroid/view/IWindowSession$Stub$Proxy;
Landroid/view/IWindowSession$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/view/IWindowSession$Stub$Proxy;->add(Landroid/view/IWindow;ILandroid/view/WindowManager$LayoutParams;ILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/view/InputChannel;)I
Landroid/view/IWindowSession$Stub$Proxy;->addToDisplay(Landroid/view/IWindow;ILandroid/view/WindowManager$LayoutParams;IILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/view/DisplayCutout$ParcelableWrapper;Landroid/view/InputChannel;)I
@@ -80944,7 +75547,6 @@
Landroid/view/IWindowSession$Stub$Proxy;->updateTapExcludeRegion(Landroid/view/IWindow;IIIII)V
Landroid/view/IWindowSession$Stub$Proxy;->wallpaperCommandComplete(Landroid/os/IBinder;Landroid/os/Bundle;)V
Landroid/view/IWindowSession$Stub$Proxy;->wallpaperOffsetsComplete(Landroid/os/IBinder;)V
-Landroid/view/IWindowSession$Stub;
Landroid/view/IWindowSession$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/view/IWindowSession$Stub;->TRANSACTION_add:I
Landroid/view/IWindowSession$Stub;->TRANSACTION_addToDisplay:I
@@ -80977,7 +75579,6 @@
Landroid/view/IWindowSession$Stub;->TRANSACTION_updateTapExcludeRegion:I
Landroid/view/IWindowSession$Stub;->TRANSACTION_wallpaperCommandComplete:I
Landroid/view/IWindowSession$Stub;->TRANSACTION_wallpaperOffsetsComplete:I
-Landroid/view/IWindowSession;
Landroid/view/IWindowSession;->add(Landroid/view/IWindow;ILandroid/view/WindowManager$LayoutParams;ILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/view/InputChannel;)I
Landroid/view/IWindowSession;->addToDisplay(Landroid/view/IWindow;ILandroid/view/WindowManager$LayoutParams;IILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/view/DisplayCutout$ParcelableWrapper;Landroid/view/InputChannel;)I
Landroid/view/IWindowSession;->addToDisplayWithoutInputChannel(Landroid/view/IWindow;ILandroid/view/WindowManager$LayoutParams;IILandroid/graphics/Rect;Landroid/graphics/Rect;)I
@@ -81000,17 +75601,14 @@
Landroid/view/IWindowSession;->startMovingTask(Landroid/view/IWindow;FF)Z
Landroid/view/IWindowSession;->updatePointerIcon(Landroid/view/IWindow;)V
Landroid/view/IWindowSession;->updateTapExcludeRegion(Landroid/view/IWindow;IIIII)V
-Landroid/view/IWindowSessionCallback$Stub$Proxy;
Landroid/view/IWindowSessionCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/view/IWindowSessionCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Landroid/view/IWindowSessionCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/view/IWindowSessionCallback$Stub$Proxy;->onAnimatorScaleChanged(F)V
-Landroid/view/IWindowSessionCallback$Stub;
Landroid/view/IWindowSessionCallback$Stub;-><init>()V
Landroid/view/IWindowSessionCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/IWindowSessionCallback;
Landroid/view/IWindowSessionCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/view/IWindowSessionCallback$Stub;->TRANSACTION_onAnimatorScaleChanged:I
-Landroid/view/IWindowSessionCallback;
Landroid/view/IWindowSessionCallback;->onAnimatorScaleChanged(F)V
Landroid/view/KeyboardShortcutGroup;-><init>(Landroid/os/Parcel;)V
Landroid/view/KeyboardShortcutGroup;->mItems:Ljava/util/List;
@@ -81024,7 +75622,6 @@
Landroid/view/KeyboardShortcutInfo;->mKeycode:I
Landroid/view/KeyboardShortcutInfo;->mLabel:Ljava/lang/CharSequence;
Landroid/view/KeyboardShortcutInfo;->mModifiers:I
-Landroid/view/KeyCharacterMap$FallbackAction;
Landroid/view/KeyCharacterMap$FallbackAction;-><init>()V
Landroid/view/KeyCharacterMap$FallbackAction;->MAX_RECYCLED:I
Landroid/view/KeyCharacterMap$FallbackAction;->next:Landroid/view/KeyCharacterMap$FallbackAction;
@@ -81118,7 +75715,6 @@
Landroid/view/KeyEvent;->recycleIfNeededAfterDispatch()V
Landroid/view/KeyEvent;->setTainted(Z)V
Landroid/view/KeyEvent;->TAG:Ljava/lang/String;
-Landroid/view/LayoutInflater$BlinkLayout;
Landroid/view/LayoutInflater$BlinkLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
Landroid/view/LayoutInflater$BlinkLayout;->BLINK_DELAY:I
Landroid/view/LayoutInflater$BlinkLayout;->makeBlink()V
@@ -81126,7 +75722,6 @@
Landroid/view/LayoutInflater$BlinkLayout;->mBlinkState:Z
Landroid/view/LayoutInflater$BlinkLayout;->MESSAGE_BLINK:I
Landroid/view/LayoutInflater$BlinkLayout;->mHandler:Landroid/os/Handler;
-Landroid/view/LayoutInflater$FactoryMerger;
Landroid/view/LayoutInflater$FactoryMerger;-><init>(Landroid/view/LayoutInflater$Factory;Landroid/view/LayoutInflater$Factory2;Landroid/view/LayoutInflater$Factory;Landroid/view/LayoutInflater$Factory2;)V
Landroid/view/LayoutInflater$FactoryMerger;->mF12:Landroid/view/LayoutInflater$Factory2;
Landroid/view/LayoutInflater$FactoryMerger;->mF1:Landroid/view/LayoutInflater$Factory;
@@ -81151,7 +75746,6 @@
Landroid/view/LayoutInflater;->TAG_REQUEST_FOCUS:Ljava/lang/String;
Landroid/view/LayoutInflater;->TAG_TAG:Ljava/lang/String;
Landroid/view/LayoutInflater;->verifyClassLoader(Ljava/lang/reflect/Constructor;)Z
-Landroid/view/MagnificationSpec;
Landroid/view/MagnificationSpec;-><init>()V
Landroid/view/MagnificationSpec;->clear()V
Landroid/view/MagnificationSpec;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -81171,13 +75765,10 @@
Landroid/view/Menu;->CATEGORY_SHIFT:I
Landroid/view/Menu;->USER_MASK:I
Landroid/view/Menu;->USER_SHIFT:I
-Landroid/view/MenuInflater$InflatedOnMenuItemClickListener;
Landroid/view/MenuInflater$InflatedOnMenuItemClickListener;-><init>(Ljava/lang/Object;Ljava/lang/String;)V
Landroid/view/MenuInflater$InflatedOnMenuItemClickListener;->mMethod:Ljava/lang/reflect/Method;
Landroid/view/MenuInflater$InflatedOnMenuItemClickListener;->mRealOwner:Ljava/lang/Object;
Landroid/view/MenuInflater$InflatedOnMenuItemClickListener;->PARAM_TYPES:[Ljava/lang/Class;
-Landroid/view/MenuInflater$MenuState;
-Landroid/view/MenuInflater$MenuState;-><init>(Landroid/view/Menu;)V
Landroid/view/MenuInflater$MenuState;->addItem()Landroid/view/MenuItem;
Landroid/view/MenuInflater$MenuState;->addSubMenuItem()Landroid/view/SubMenu;
Landroid/view/MenuInflater$MenuState;->defaultGroupId:I
@@ -81327,8 +75918,6 @@
Landroid/view/MotionEvent;->setTargetAccessibilityFocus(Z)V
Landroid/view/MotionEvent;->toolTypeToString(I)Ljava/lang/String;
Landroid/view/MotionEvent;->TOOL_TYPE_SYMBOLIC_NAMES:Landroid/util/SparseArray;
-Landroid/view/NotificationHeaderView$HeaderTouchListener;
-Landroid/view/NotificationHeaderView$HeaderTouchListener;-><init>()V
Landroid/view/NotificationHeaderView$HeaderTouchListener;->addRectAroundView(Landroid/view/View;)Landroid/graphics/Rect;
Landroid/view/NotificationHeaderView$HeaderTouchListener;->addWidthRect()V
Landroid/view/NotificationHeaderView$HeaderTouchListener;->bindTouchRects()V
@@ -81341,7 +75930,6 @@
Landroid/view/NotificationHeaderView$HeaderTouchListener;->mTouchRects:Ljava/util/ArrayList;
Landroid/view/NotificationHeaderView$HeaderTouchListener;->mTouchSlop:I
Landroid/view/NotificationHeaderView$HeaderTouchListener;->mTrackGesture:Z
-Landroid/view/NotificationHeaderView;
Landroid/view/NotificationHeaderView;-><init>(Landroid/content/Context;)V
Landroid/view/NotificationHeaderView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
Landroid/view/NotificationHeaderView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V
@@ -81393,8 +75981,6 @@
Landroid/view/NotificationHeaderView;->shrinkViewForOverflow(IILandroid/view/View;I)I
Landroid/view/NotificationHeaderView;->updateExpandButton()V
Landroid/view/NotificationHeaderView;->updateTouchListener()V
-Landroid/view/OrientationEventListener$SensorEventListenerImpl;
-Landroid/view/OrientationEventListener$SensorEventListenerImpl;-><init>()V
Landroid/view/OrientationEventListener$SensorEventListenerImpl;->_DATA_X:I
Landroid/view/OrientationEventListener$SensorEventListenerImpl;->_DATA_Y:I
Landroid/view/OrientationEventListener$SensorEventListenerImpl;->_DATA_Z:I
@@ -81409,11 +75995,7 @@
Landroid/view/OrientationEventListener;->mSensorManager:Landroid/hardware/SensorManager;
Landroid/view/OrientationEventListener;->registerListener(Landroid/view/OrientationListener;)V
Landroid/view/OrientationEventListener;->TAG:Ljava/lang/String;
-Landroid/view/OrientationListener$OrientationEventListenerInternal;
-Landroid/view/OrientationListener$OrientationEventListenerInternal;-><init>(Landroid/content/Context;)V
-Landroid/view/OrientationListener$OrientationEventListenerInternal;-><init>(Landroid/content/Context;I)V
Landroid/view/OrientationListener;->mOrientationEventLis:Landroid/view/OrientationEventListener;
-Landroid/view/PixelCopy$CopyResultStatus;
Landroid/view/PixelCopy;-><init>()V
Landroid/view/PixelCopy;->validateBitmapDest(Landroid/graphics/Bitmap;)V
Landroid/view/PointerIcon;-><init>(I)V
@@ -81436,7 +76018,6 @@
Landroid/view/PointerIcon;->TYPE_SPOT_HOVER:I
Landroid/view/PointerIcon;->TYPE_SPOT_TOUCH:I
Landroid/view/PointerIcon;->validateHotSpot(Landroid/graphics/Bitmap;FF)V
-Landroid/view/RecordingCanvas;
Landroid/view/RecordingCanvas;-><init>(J)V
Landroid/view/RecordingCanvas;->drawPatch(Landroid/graphics/NinePatch;Landroid/graphics/Rect;Landroid/graphics/Paint;)V
Landroid/view/RecordingCanvas;->drawPatch(Landroid/graphics/NinePatch;Landroid/graphics/RectF;Landroid/graphics/Paint;)V
@@ -81466,8 +76047,6 @@
Landroid/view/RecordingCanvas;->nDrawTextRun(JLjava/lang/String;IIIIFFZJ)V
Landroid/view/RecordingCanvas;->nDrawTextRun(J[CIIIIFFZJJ)V
Landroid/view/RecordingCanvas;->nDrawVertices(JII[FI[FI[II[SIIJ)V
-Landroid/view/RemotableViewMethod;
-Landroid/view/RemoteAnimationAdapter;
Landroid/view/RemoteAnimationAdapter;-><init>(Landroid/os/Parcel;)V
Landroid/view/RemoteAnimationAdapter;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/view/RemoteAnimationAdapter;->getCallingPid()I
@@ -81479,21 +76058,17 @@
Landroid/view/RemoteAnimationAdapter;->mRunner:Landroid/view/IRemoteAnimationRunner;
Landroid/view/RemoteAnimationAdapter;->mStatusBarTransitionDelay:J
Landroid/view/RemoteAnimationAdapter;->setCallingPid(I)V
-Landroid/view/RemoteAnimationDefinition$RemoteAnimationAdapterEntry;
Landroid/view/RemoteAnimationDefinition$RemoteAnimationAdapterEntry;-><init>(Landroid/os/Parcel;)V
Landroid/view/RemoteAnimationDefinition$RemoteAnimationAdapterEntry;-><init>(Landroid/view/RemoteAnimationAdapter;I)V
Landroid/view/RemoteAnimationDefinition$RemoteAnimationAdapterEntry;->activityTypeFilter:I
Landroid/view/RemoteAnimationDefinition$RemoteAnimationAdapterEntry;->adapter:Landroid/view/RemoteAnimationAdapter;
Landroid/view/RemoteAnimationDefinition$RemoteAnimationAdapterEntry;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/view/RemoteAnimationDefinition;
Landroid/view/RemoteAnimationDefinition;-><init>(Landroid/os/Parcel;)V
Landroid/view/RemoteAnimationDefinition;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/view/RemoteAnimationDefinition;->getAdapter(ILandroid/util/ArraySet;)Landroid/view/RemoteAnimationAdapter;
Landroid/view/RemoteAnimationDefinition;->hasTransition(ILandroid/util/ArraySet;)Z
Landroid/view/RemoteAnimationDefinition;->mTransitionAnimationMap:Landroid/util/SparseArray;
Landroid/view/RemoteAnimationDefinition;->setCallingPid(I)V
-Landroid/view/RemoteAnimationTarget$Mode;
-Landroid/view/RemoteAnimationTarget;
Landroid/view/RemoteAnimationTarget;-><init>(IILandroid/view/SurfaceControl;ZLandroid/graphics/Rect;Landroid/graphics/Rect;ILandroid/graphics/Point;Landroid/graphics/Rect;Landroid/app/WindowConfiguration;Z)V
Landroid/view/RemoteAnimationTarget;-><init>(Landroid/os/Parcel;)V
Landroid/view/RemoteAnimationTarget;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -81501,10 +76076,8 @@
Landroid/view/RemoteAnimationTarget;->MODE_CLOSING:I
Landroid/view/RemoteAnimationTarget;->MODE_OPENING:I
Landroid/view/RemoteAnimationTarget;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-Landroid/view/RenderNode$NoImagePreloadHolder;
Landroid/view/RenderNode$NoImagePreloadHolder;-><init>()V
Landroid/view/RenderNode$NoImagePreloadHolder;->sRegistry:Llibcore/util/NativeAllocationRegistry;
-Landroid/view/RenderNode;
Landroid/view/RenderNode;-><init>(J)V
Landroid/view/RenderNode;-><init>(Ljava/lang/String;Landroid/view/View;)V
Landroid/view/RenderNode;->addAnimator(Landroid/view/RenderNodeAnimator;)V
@@ -81640,7 +76213,6 @@
Landroid/view/RenderNode;->setTranslationX(F)Z
Landroid/view/RenderNode;->setTranslationY(F)Z
Landroid/view/RenderNode;->setTranslationZ(F)Z
-Landroid/view/RenderNodeAnimator$DelayedAnimationHelper;
Landroid/view/RenderNodeAnimator$DelayedAnimationHelper;-><init>()V
Landroid/view/RenderNodeAnimator$DelayedAnimationHelper;->addDelayedAnimation(Landroid/view/RenderNodeAnimator;)V
Landroid/view/RenderNodeAnimator$DelayedAnimationHelper;->mCallbackScheduled:Z
@@ -81648,7 +76220,6 @@
Landroid/view/RenderNodeAnimator$DelayedAnimationHelper;->mDelayedAnims:Ljava/util/ArrayList;
Landroid/view/RenderNodeAnimator$DelayedAnimationHelper;->removeDelayedAnimation(Landroid/view/RenderNodeAnimator;)V
Landroid/view/RenderNodeAnimator$DelayedAnimationHelper;->scheduleCallback()V
-Landroid/view/RenderNodeAnimator;
Landroid/view/RenderNodeAnimator;-><init>(IIFF)V
Landroid/view/RenderNodeAnimator;->ALPHA:I
Landroid/view/RenderNodeAnimator;->applyInterpolator()V
@@ -81712,11 +76283,9 @@
Landroid/view/RenderNodeAnimator;->X:I
Landroid/view/RenderNodeAnimator;->Y:I
Landroid/view/RenderNodeAnimator;->Z:I
-Landroid/view/RenderNodeAnimatorSetHelper;
Landroid/view/RenderNodeAnimatorSetHelper;-><init>()V
Landroid/view/RenderNodeAnimatorSetHelper;->createNativeInterpolator(Landroid/animation/TimeInterpolator;J)J
Landroid/view/RenderNodeAnimatorSetHelper;->getTarget(Landroid/view/DisplayListCanvas;)Landroid/view/RenderNode;
-Landroid/view/RoundScrollbarRenderer;
Landroid/view/RoundScrollbarRenderer;-><init>(Landroid/view/View;)V
Landroid/view/RoundScrollbarRenderer;->applyAlpha(IF)I
Landroid/view/RoundScrollbarRenderer;->clamp(FFF)F
@@ -81764,11 +76333,7 @@
Landroid/view/ScaleGestureDetector;->TOUCH_STABILIZE_TIME:J
Landroid/view/SearchEvent;->mInputDevice:Landroid/view/InputDevice;
Landroid/view/SoundEffectConstants;-><init>()V
-Landroid/view/Surface$CompatibleCanvas;
-Landroid/view/Surface$CompatibleCanvas;-><init>()V
Landroid/view/Surface$CompatibleCanvas;->mOrigMatrix:Landroid/graphics/Matrix;
-Landroid/view/Surface$HwuiContext;
-Landroid/view/Surface$HwuiContext;-><init>(Z)V
Landroid/view/Surface$HwuiContext;->destroy()V
Landroid/view/Surface$HwuiContext;->isWideColorGamut()Z
Landroid/view/Surface$HwuiContext;->lockCanvas(II)Landroid/graphics/Canvas;
@@ -81778,8 +76343,6 @@
Landroid/view/Surface$HwuiContext;->mRenderNode:Landroid/view/RenderNode;
Landroid/view/Surface$HwuiContext;->unlockAndPost(Landroid/graphics/Canvas;)V
Landroid/view/Surface$HwuiContext;->updateSurface()V
-Landroid/view/Surface$Rotation;
-Landroid/view/Surface$ScalingMode;
Landroid/view/Surface;->allocateBuffers()V
Landroid/view/Surface;->attachAndQueueBuffer(Landroid/graphics/GraphicBuffer;)V
Landroid/view/Surface;->checkNotReleasedLocked()V
@@ -81834,7 +76397,6 @@
Landroid/view/Surface;->setSharedBufferModeEnabled(Z)V
Landroid/view/Surface;->TAG:Ljava/lang/String;
Landroid/view/Surface;->unlockSwCanvasAndPost(Landroid/graphics/Canvas;)V
-Landroid/view/SurfaceControl$Builder;
Landroid/view/SurfaceControl$Builder;-><init>(Landroid/view/SurfaceSession;)V
Landroid/view/SurfaceControl$Builder;->build()Landroid/view/SurfaceControl;
Landroid/view/SurfaceControl$Builder;->mFlags:I
@@ -81856,11 +76418,9 @@
Landroid/view/SurfaceControl$Builder;->setProtected(Z)Landroid/view/SurfaceControl$Builder;
Landroid/view/SurfaceControl$Builder;->setSecure(Z)Landroid/view/SurfaceControl$Builder;
Landroid/view/SurfaceControl$Builder;->setSize(II)Landroid/view/SurfaceControl$Builder;
-Landroid/view/SurfaceControl$PhysicalDisplayInfo;
Landroid/view/SurfaceControl$PhysicalDisplayInfo;-><init>(Landroid/view/SurfaceControl$PhysicalDisplayInfo;)V
Landroid/view/SurfaceControl$PhysicalDisplayInfo;->copyFrom(Landroid/view/SurfaceControl$PhysicalDisplayInfo;)V
Landroid/view/SurfaceControl$PhysicalDisplayInfo;->equals(Landroid/view/SurfaceControl$PhysicalDisplayInfo;)Z
-Landroid/view/SurfaceControl$Transaction;
Landroid/view/SurfaceControl$Transaction;->apply(Z)V
Landroid/view/SurfaceControl$Transaction;->applyResizedSurfaces()V
Landroid/view/SurfaceControl$Transaction;->destroy(Landroid/view/SurfaceControl;)Landroid/view/SurfaceControl$Transaction;
@@ -81885,7 +76445,6 @@
Landroid/view/SurfaceControl$Transaction;->setSecure(Landroid/view/SurfaceControl;Z)Landroid/view/SurfaceControl$Transaction;
Landroid/view/SurfaceControl$Transaction;->setTransparentRegionHint(Landroid/view/SurfaceControl;Landroid/graphics/Region;)Landroid/view/SurfaceControl$Transaction;
Landroid/view/SurfaceControl$Transaction;->sRegistry:Llibcore/util/NativeAllocationRegistry;
-Landroid/view/SurfaceControl;
Landroid/view/SurfaceControl;-><init>(Landroid/os/Parcel;)V
Landroid/view/SurfaceControl;-><init>(Landroid/view/SurfaceControl;)V
Landroid/view/SurfaceControl;-><init>(Landroid/view/SurfaceSession;Ljava/lang/String;IIIILandroid/view/SurfaceControl;II)V
@@ -82023,24 +76582,19 @@
Landroid/view/SurfaceControl;->TAG:Ljava/lang/String;
Landroid/view/SurfaceControl;->WINDOW_TYPE_DONT_SCREENSHOT:I
Landroid/view/SurfaceControl;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-Landroid/view/SurfaceControlProto;
Landroid/view/SurfaceControlProto;-><init>()V
Landroid/view/SurfaceControlProto;->HASH_CODE:J
Landroid/view/SurfaceControlProto;->NAME:J
-Landroid/view/SurfaceProto;
Landroid/view/SurfaceProto;-><init>()V
Landroid/view/SurfaceProto;->ROTATION_0:I
Landroid/view/SurfaceProto;->ROTATION_180:I
Landroid/view/SurfaceProto;->ROTATION_270:I
Landroid/view/SurfaceProto;->ROTATION_90:I
-Landroid/view/SurfaceSession;
Landroid/view/SurfaceSession;-><init>(Landroid/view/Surface;)V
Landroid/view/SurfaceSession;->nativeCreate()J
Landroid/view/SurfaceSession;->nativeCreateScoped(J)J
Landroid/view/SurfaceSession;->nativeDestroy(J)V
Landroid/view/SurfaceSession;->nativeKill(J)V
-Landroid/view/SurfaceView$SurfaceControlWithBackground;
-Landroid/view/SurfaceView$SurfaceControlWithBackground;-><init>(Ljava/lang/String;ZLandroid/view/SurfaceControl$Builder;)V
Landroid/view/SurfaceView$SurfaceControlWithBackground;->deferTransactionUntil(Landroid/os/IBinder;J)V
Landroid/view/SurfaceView$SurfaceControlWithBackground;->deferTransactionUntil(Landroid/view/Surface;J)V
Landroid/view/SurfaceView$SurfaceControlWithBackground;->destroy()V
@@ -82111,7 +76665,6 @@
Landroid/view/SurfaceView;->updateRequestedVisibility()V
Landroid/view/SurfaceView;->updateSurface()V
Landroid/view/SurfaceView;->windowStopped(Z)V
-Landroid/view/textclassifier/EntityConfidence;
Landroid/view/textclassifier/EntityConfidence;-><init>()V
Landroid/view/textclassifier/EntityConfidence;-><init>(Landroid/os/Parcel;)V
Landroid/view/textclassifier/EntityConfidence;-><init>(Landroid/view/textclassifier/EntityConfidence;)V
@@ -82122,12 +76675,10 @@
Landroid/view/textclassifier/EntityConfidence;->mEntityConfidence:Landroid/util/ArrayMap;
Landroid/view/textclassifier/EntityConfidence;->mSortedEntities:Ljava/util/ArrayList;
Landroid/view/textclassifier/EntityConfidence;->resetSortedEntitiesFromMap()V
-Landroid/view/textclassifier/GenerateLinksLogger$LinkifyStats;
Landroid/view/textclassifier/GenerateLinksLogger$LinkifyStats;-><init>()V
Landroid/view/textclassifier/GenerateLinksLogger$LinkifyStats;->countLink(Landroid/view/textclassifier/TextLinks$TextLink;)V
Landroid/view/textclassifier/GenerateLinksLogger$LinkifyStats;->mNumLinks:I
Landroid/view/textclassifier/GenerateLinksLogger$LinkifyStats;->mNumLinksTextLength:I
-Landroid/view/textclassifier/GenerateLinksLogger;
Landroid/view/textclassifier/GenerateLinksLogger;-><init>(I)V
Landroid/view/textclassifier/GenerateLinksLogger;-><init>(ILcom/android/internal/logging/MetricsLogger;)V
Landroid/view/textclassifier/GenerateLinksLogger;->debugLog(Landroid/metrics/LogMaker;)V
@@ -82140,7 +76691,6 @@
Landroid/view/textclassifier/GenerateLinksLogger;->shouldLog()Z
Landroid/view/textclassifier/GenerateLinksLogger;->writeStats(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/view/textclassifier/GenerateLinksLogger$LinkifyStats;Ljava/lang/CharSequence;J)V
Landroid/view/textclassifier/GenerateLinksLogger;->ZERO:Ljava/lang/String;
-Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent$ActionType;
Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent$ActionType;->ABANDON:I
Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent$ActionType;->COPY:I
Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent$ActionType;->CUT:I
@@ -82152,13 +76702,11 @@
Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent$ActionType;->SELECT_ALL:I
Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent$ActionType;->SHARE:I
Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent$ActionType;->SMART_SHARE:I
-Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent$EventType;
Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent$EventType;->AUTO_SELECTION:I
Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent$EventType;->SELECTION_MODIFIED:I
Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent$EventType;->SELECTION_STARTED:I
Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent$EventType;->SMART_SELECTION_MULTI:I
Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent$EventType;->SMART_SELECTION_SINGLE:I
-Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;
Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;-><init>(IIILjava/lang/String;Ljava/lang/String;)V
Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;->getSourceClassifier(Ljava/lang/String;)Ljava/lang/String;
Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;->getVersionInfo(Ljava/lang/String;)Ljava/lang/String;
@@ -82171,7 +76719,6 @@
Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;->NO_VERSION_TAG:Ljava/lang/String;
Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;->OUT_OF_BOUNDS:I
Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;->OUT_OF_BOUNDS_NEGATIVE:I
-Landroid/view/textclassifier/logging/SmartSelectionEventTracker$WidgetType;
Landroid/view/textclassifier/logging/SmartSelectionEventTracker$WidgetType;->CUSTOM_EDITTEXT:I
Landroid/view/textclassifier/logging/SmartSelectionEventTracker$WidgetType;->CUSTOM_TEXTVIEW:I
Landroid/view/textclassifier/logging/SmartSelectionEventTracker$WidgetType;->CUSTOM_UNSELECTABLE_TEXTVIEW:I
@@ -82181,7 +76728,6 @@
Landroid/view/textclassifier/logging/SmartSelectionEventTracker$WidgetType;->UNSELECTABLE_TEXTVIEW:I
Landroid/view/textclassifier/logging/SmartSelectionEventTracker$WidgetType;->UNSPECIFIED:I
Landroid/view/textclassifier/logging/SmartSelectionEventTracker$WidgetType;->WEBVIEW:I
-Landroid/view/textclassifier/logging/SmartSelectionEventTracker;
Landroid/view/textclassifier/logging/SmartSelectionEventTracker;-><init>(Landroid/content/Context;ILjava/lang/String;)V
Landroid/view/textclassifier/logging/SmartSelectionEventTracker;->createSessionId()Ljava/lang/String;
Landroid/view/textclassifier/logging/SmartSelectionEventTracker;->CUSTOM_EDITTEXT:Ljava/lang/String;
@@ -82231,9 +76777,6 @@
Landroid/view/textclassifier/logging/SmartSelectionEventTracker;->WIDGET_VERSION:I
Landroid/view/textclassifier/logging/SmartSelectionEventTracker;->writeEvent(Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;J)V
Landroid/view/textclassifier/logging/SmartSelectionEventTracker;->ZERO:Ljava/lang/String;
-Landroid/view/textclassifier/SelectionEvent$ActionType;
-Landroid/view/textclassifier/SelectionEvent$EventType;
-Landroid/view/textclassifier/SelectionEvent$InvocationMethod;
Landroid/view/textclassifier/SelectionEvent;-><init>(IIILjava/lang/String;ILjava/lang/String;)V
Landroid/view/textclassifier/SelectionEvent;-><init>(Landroid/os/Parcel;)V
Landroid/view/textclassifier/SelectionEvent;->checkActionType(I)V
@@ -82272,13 +76815,11 @@
Landroid/view/textclassifier/SelectionEvent;->setSmartStart(I)Landroid/view/textclassifier/SelectionEvent;
Landroid/view/textclassifier/SelectionEvent;->setStart(I)Landroid/view/textclassifier/SelectionEvent;
Landroid/view/textclassifier/SelectionEvent;->setTextClassificationSessionContext(Landroid/view/textclassifier/TextClassificationContext;)V
-Landroid/view/textclassifier/SelectionSessionLogger$SignatureParser;
Landroid/view/textclassifier/SelectionSessionLogger$SignatureParser;-><init>()V
Landroid/view/textclassifier/SelectionSessionLogger$SignatureParser;->createSignature(Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String;
Landroid/view/textclassifier/SelectionSessionLogger$SignatureParser;->getClassifierId(Ljava/lang/String;)Ljava/lang/String;
Landroid/view/textclassifier/SelectionSessionLogger$SignatureParser;->getHash(Ljava/lang/String;)I
Landroid/view/textclassifier/SelectionSessionLogger$SignatureParser;->getModelName(Ljava/lang/String;)Ljava/lang/String;
-Landroid/view/textclassifier/SelectionSessionLogger;
Landroid/view/textclassifier/SelectionSessionLogger;-><init>()V
Landroid/view/textclassifier/SelectionSessionLogger;-><init>(Lcom/android/internal/logging/MetricsLogger;)V
Landroid/view/textclassifier/SelectionSessionLogger;->CLASSIFIER_ID:Ljava/lang/String;
@@ -82307,29 +76848,24 @@
Landroid/view/textclassifier/SelectionSessionLogger;->WIDGET_VERSION:I
Landroid/view/textclassifier/SelectionSessionLogger;->writeEvent(Landroid/view/textclassifier/SelectionEvent;)V
Landroid/view/textclassifier/SelectionSessionLogger;->ZERO:Ljava/lang/String;
-Landroid/view/textclassifier/SystemTextClassifier$ResponseReceiver;
Landroid/view/textclassifier/SystemTextClassifier$ResponseReceiver;-><init>()V
Landroid/view/textclassifier/SystemTextClassifier$ResponseReceiver;->get()Ljava/lang/Object;
Landroid/view/textclassifier/SystemTextClassifier$ResponseReceiver;->mLatch:Ljava/util/concurrent/CountDownLatch;
Landroid/view/textclassifier/SystemTextClassifier$ResponseReceiver;->mResponse:Ljava/lang/Object;
Landroid/view/textclassifier/SystemTextClassifier$ResponseReceiver;->onFailure()V
Landroid/view/textclassifier/SystemTextClassifier$ResponseReceiver;->onSuccess(Ljava/lang/Object;)V
-Landroid/view/textclassifier/SystemTextClassifier$TextClassificationCallback;
Landroid/view/textclassifier/SystemTextClassifier$TextClassificationCallback;-><init>()V
Landroid/view/textclassifier/SystemTextClassifier$TextClassificationCallback;->mReceiver:Landroid/view/textclassifier/SystemTextClassifier$ResponseReceiver;
Landroid/view/textclassifier/SystemTextClassifier$TextClassificationCallback;->onFailure()V
Landroid/view/textclassifier/SystemTextClassifier$TextClassificationCallback;->onSuccess(Landroid/view/textclassifier/TextClassification;)V
-Landroid/view/textclassifier/SystemTextClassifier$TextLinksCallback;
Landroid/view/textclassifier/SystemTextClassifier$TextLinksCallback;-><init>()V
Landroid/view/textclassifier/SystemTextClassifier$TextLinksCallback;->mReceiver:Landroid/view/textclassifier/SystemTextClassifier$ResponseReceiver;
Landroid/view/textclassifier/SystemTextClassifier$TextLinksCallback;->onFailure()V
Landroid/view/textclassifier/SystemTextClassifier$TextLinksCallback;->onSuccess(Landroid/view/textclassifier/TextLinks;)V
-Landroid/view/textclassifier/SystemTextClassifier$TextSelectionCallback;
Landroid/view/textclassifier/SystemTextClassifier$TextSelectionCallback;-><init>()V
Landroid/view/textclassifier/SystemTextClassifier$TextSelectionCallback;->mReceiver:Landroid/view/textclassifier/SystemTextClassifier$ResponseReceiver;
Landroid/view/textclassifier/SystemTextClassifier$TextSelectionCallback;->onFailure()V
Landroid/view/textclassifier/SystemTextClassifier$TextSelectionCallback;->onSuccess(Landroid/view/textclassifier/TextSelection;)V
-Landroid/view/textclassifier/SystemTextClassifier;
Landroid/view/textclassifier/SystemTextClassifier;-><init>(Landroid/content/Context;Landroid/view/textclassifier/TextClassificationConstants;)V
Landroid/view/textclassifier/SystemTextClassifier;->initializeRemoteSession(Landroid/view/textclassifier/TextClassificationContext;Landroid/view/textclassifier/TextClassificationSessionId;)V
Landroid/view/textclassifier/SystemTextClassifier;->LOG_TAG:Ljava/lang/String;
@@ -82346,11 +76882,9 @@
Landroid/view/textclassifier/TextClassification$Builder;->mLegacyLabel:Ljava/lang/String;
Landroid/view/textclassifier/TextClassification$Builder;->mLegacyOnClickListener:Landroid/view/View$OnClickListener;
Landroid/view/textclassifier/TextClassification$Builder;->mText:Ljava/lang/String;
-Landroid/view/textclassifier/TextClassification$IntentType;
Landroid/view/textclassifier/TextClassification$IntentType;->ACTIVITY:I
Landroid/view/textclassifier/TextClassification$IntentType;->SERVICE:I
Landroid/view/textclassifier/TextClassification$IntentType;->UNSUPPORTED:I
-Landroid/view/textclassifier/TextClassification$Options;
Landroid/view/textclassifier/TextClassification$Options;-><init>()V
Landroid/view/textclassifier/TextClassification$Options;-><init>(Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/TextClassification$Request;)V
Landroid/view/textclassifier/TextClassification$Options;->from(Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/TextClassification$Request;)Landroid/view/textclassifier/TextClassification$Options;
@@ -82394,7 +76928,6 @@
Landroid/view/textclassifier/TextClassification;->mLegacyLabel:Ljava/lang/String;
Landroid/view/textclassifier/TextClassification;->mLegacyOnClickListener:Landroid/view/View$OnClickListener;
Landroid/view/textclassifier/TextClassification;->mText:Ljava/lang/String;
-Landroid/view/textclassifier/TextClassificationConstants;
Landroid/view/textclassifier/TextClassificationConstants;-><init>(Ljava/lang/String;)V
Landroid/view/textclassifier/TextClassificationConstants;->CLASSIFY_TEXT_MAX_RANGE_LENGTH:Ljava/lang/String;
Landroid/view/textclassifier/TextClassificationConstants;->CLASSIFY_TEXT_MAX_RANGE_LENGTH_DEFAULT:I
@@ -82462,7 +76995,6 @@
Landroid/view/textclassifier/TextClassificationContext;->mPackageName:Ljava/lang/String;
Landroid/view/textclassifier/TextClassificationContext;->mWidgetType:Ljava/lang/String;
Landroid/view/textclassifier/TextClassificationContext;->mWidgetVersion:Ljava/lang/String;
-Landroid/view/textclassifier/TextClassificationManager$SettingsObserver;
Landroid/view/textclassifier/TextClassificationManager$SettingsObserver;-><init>(Landroid/view/textclassifier/TextClassificationManager;)V
Landroid/view/textclassifier/TextClassificationManager$SettingsObserver;->mTcm:Ljava/lang/ref/WeakReference;
Landroid/view/textclassifier/TextClassificationManager;-><init>(Landroid/content/Context;)V
@@ -82497,10 +77029,6 @@
Landroid/view/textclassifier/TextClassifier$EntityConfig;->mHints:Ljava/util/Collection;
Landroid/view/textclassifier/TextClassifier$EntityConfig;->mIncludedEntityTypes:Ljava/util/Collection;
Landroid/view/textclassifier/TextClassifier$EntityConfig;->mUseHints:Z
-Landroid/view/textclassifier/TextClassifier$EntityType;
-Landroid/view/textclassifier/TextClassifier$Hints;
-Landroid/view/textclassifier/TextClassifier$TextClassifierType;
-Landroid/view/textclassifier/TextClassifier$Utils;
Landroid/view/textclassifier/TextClassifier$Utils;-><init>()V
Landroid/view/textclassifier/TextClassifier$Utils;->addLinks(Landroid/view/textclassifier/TextLinks$Builder;Ljava/lang/String;Ljava/lang/String;)V
Landroid/view/textclassifier/TextClassifier$Utils;->checkArgument(Ljava/lang/CharSequence;II)V
@@ -82509,11 +77037,9 @@
Landroid/view/textclassifier/TextClassifier$Utils;->entityScores(Ljava/lang/String;)Ljava/util/Map;
Landroid/view/textclassifier/TextClassifier$Utils;->generateLegacyLinks(Landroid/view/textclassifier/TextLinks$Request;)Landroid/view/textclassifier/TextLinks;
Landroid/view/textclassifier/TextClassifier$Utils;->linkMask(Ljava/lang/String;)I
-Landroid/view/textclassifier/TextClassifier$WidgetType;
Landroid/view/textclassifier/TextClassifier;->DEFAULT_LOG_TAG:Ljava/lang/String;
Landroid/view/textclassifier/TextClassifier;->LOCAL:I
Landroid/view/textclassifier/TextClassifier;->SYSTEM:I
-Landroid/view/textclassifier/TextClassifierImpl$IntentFactory;
Landroid/view/textclassifier/TextClassifierImpl$IntentFactory;-><init>()V
Landroid/view/textclassifier/TextClassifierImpl$IntentFactory;->create(Landroid/content/Context;Ljava/time/Instant;Landroid/view/textclassifier/TextClassifierImplNative$ClassificationResult;Ljava/lang/String;)Ljava/util/List;
Landroid/view/textclassifier/TextClassifierImpl$IntentFactory;->createCalendarCreateEventIntent(Landroid/content/Context;Ljava/time/Instant;Ljava/lang/String;)Landroid/view/textclassifier/TextClassifierImpl$LabeledIntent;
@@ -82526,7 +77052,6 @@
Landroid/view/textclassifier/TextClassifierImpl$IntentFactory;->createForUrl(Landroid/content/Context;Ljava/lang/String;)Ljava/util/List;
Landroid/view/textclassifier/TextClassifierImpl$IntentFactory;->DEFAULT_EVENT_DURATION:J
Landroid/view/textclassifier/TextClassifierImpl$IntentFactory;->MIN_EVENT_FUTURE_MILLIS:J
-Landroid/view/textclassifier/TextClassifierImpl$LabeledIntent;
Landroid/view/textclassifier/TextClassifierImpl$LabeledIntent;-><init>(Ljava/lang/String;Ljava/lang/String;Landroid/content/Intent;I)V
Landroid/view/textclassifier/TextClassifierImpl$LabeledIntent;->asRemoteAction(Landroid/content/Context;)Landroid/app/RemoteAction;
Landroid/view/textclassifier/TextClassifierImpl$LabeledIntent;->DEFAULT_REQUEST_CODE:I
@@ -82538,7 +77063,6 @@
Landroid/view/textclassifier/TextClassifierImpl$LabeledIntent;->mIntent:Landroid/content/Intent;
Landroid/view/textclassifier/TextClassifierImpl$LabeledIntent;->mRequestCode:I
Landroid/view/textclassifier/TextClassifierImpl$LabeledIntent;->mTitle:Ljava/lang/String;
-Landroid/view/textclassifier/TextClassifierImpl$ModelFile;
Landroid/view/textclassifier/TextClassifierImpl$ModelFile;-><init>(Ljava/lang/String;Ljava/lang/String;ILjava/util/List;Z)V
Landroid/view/textclassifier/TextClassifierImpl$ModelFile;->fromPath(Ljava/lang/String;)Landroid/view/textclassifier/TextClassifierImpl$ModelFile;
Landroid/view/textclassifier/TextClassifierImpl$ModelFile;->getName()Ljava/lang/String;
@@ -82552,7 +77076,6 @@
Landroid/view/textclassifier/TextClassifierImpl$ModelFile;->mPath:Ljava/lang/String;
Landroid/view/textclassifier/TextClassifierImpl$ModelFile;->mSupportedLocales:Ljava/util/List;
Landroid/view/textclassifier/TextClassifierImpl$ModelFile;->mVersion:I
-Landroid/view/textclassifier/TextClassifierImpl;
Landroid/view/textclassifier/TextClassifierImpl;-><init>(Landroid/content/Context;Landroid/view/textclassifier/TextClassificationConstants;)V
Landroid/view/textclassifier/TextClassifierImpl;-><init>(Landroid/content/Context;Landroid/view/textclassifier/TextClassificationConstants;Landroid/view/textclassifier/TextClassifier;)V
Landroid/view/textclassifier/TextClassifierImpl;->closeAndLogError(Landroid/os/ParcelFileDescriptor;)V
@@ -82578,7 +77101,6 @@
Landroid/view/textclassifier/TextClassifierImpl;->mSessionLogger:Landroid/view/textclassifier/SelectionSessionLogger;
Landroid/view/textclassifier/TextClassifierImpl;->mSettings:Landroid/view/textclassifier/TextClassificationConstants;
Landroid/view/textclassifier/TextClassifierImpl;->UPDATED_MODEL_FILE_PATH:Ljava/lang/String;
-Landroid/view/textclassifier/TextClassifierImplNative$AnnotatedSpan;
Landroid/view/textclassifier/TextClassifierImplNative$AnnotatedSpan;-><init>(II[Landroid/view/textclassifier/TextClassifierImplNative$ClassificationResult;)V
Landroid/view/textclassifier/TextClassifierImplNative$AnnotatedSpan;->getClassification()[Landroid/view/textclassifier/TextClassifierImplNative$ClassificationResult;
Landroid/view/textclassifier/TextClassifierImplNative$AnnotatedSpan;->getEndIndex()I
@@ -82586,7 +77108,6 @@
Landroid/view/textclassifier/TextClassifierImplNative$AnnotatedSpan;->mClassification:[Landroid/view/textclassifier/TextClassifierImplNative$ClassificationResult;
Landroid/view/textclassifier/TextClassifierImplNative$AnnotatedSpan;->mEndIndex:I
Landroid/view/textclassifier/TextClassifierImplNative$AnnotatedSpan;->mStartIndex:I
-Landroid/view/textclassifier/TextClassifierImplNative$AnnotationOptions;
Landroid/view/textclassifier/TextClassifierImplNative$AnnotationOptions;-><init>(JLjava/lang/String;Ljava/lang/String;)V
Landroid/view/textclassifier/TextClassifierImplNative$AnnotationOptions;->getLocale()Ljava/lang/String;
Landroid/view/textclassifier/TextClassifierImplNative$AnnotationOptions;->getReferenceTimeMsUtc()J
@@ -82594,7 +77115,6 @@
Landroid/view/textclassifier/TextClassifierImplNative$AnnotationOptions;->mLocales:Ljava/lang/String;
Landroid/view/textclassifier/TextClassifierImplNative$AnnotationOptions;->mReferenceTimeMsUtc:J
Landroid/view/textclassifier/TextClassifierImplNative$AnnotationOptions;->mReferenceTimezone:Ljava/lang/String;
-Landroid/view/textclassifier/TextClassifierImplNative$ClassificationOptions;
Landroid/view/textclassifier/TextClassifierImplNative$ClassificationOptions;-><init>(JLjava/lang/String;Ljava/lang/String;)V
Landroid/view/textclassifier/TextClassifierImplNative$ClassificationOptions;->getLocale()Ljava/lang/String;
Landroid/view/textclassifier/TextClassifierImplNative$ClassificationOptions;->getReferenceTimeMsUtc()J
@@ -82602,7 +77122,6 @@
Landroid/view/textclassifier/TextClassifierImplNative$ClassificationOptions;->mLocales:Ljava/lang/String;
Landroid/view/textclassifier/TextClassifierImplNative$ClassificationOptions;->mReferenceTimeMsUtc:J
Landroid/view/textclassifier/TextClassifierImplNative$ClassificationOptions;->mReferenceTimezone:Ljava/lang/String;
-Landroid/view/textclassifier/TextClassifierImplNative$ClassificationResult;
Landroid/view/textclassifier/TextClassifierImplNative$ClassificationResult;-><init>(Ljava/lang/String;FLandroid/view/textclassifier/TextClassifierImplNative$DatetimeResult;)V
Landroid/view/textclassifier/TextClassifierImplNative$ClassificationResult;->getCollection()Ljava/lang/String;
Landroid/view/textclassifier/TextClassifierImplNative$ClassificationResult;->getDatetimeResult()Landroid/view/textclassifier/TextClassifierImplNative$DatetimeResult;
@@ -82610,7 +77129,6 @@
Landroid/view/textclassifier/TextClassifierImplNative$ClassificationResult;->mCollection:Ljava/lang/String;
Landroid/view/textclassifier/TextClassifierImplNative$ClassificationResult;->mDatetimeResult:Landroid/view/textclassifier/TextClassifierImplNative$DatetimeResult;
Landroid/view/textclassifier/TextClassifierImplNative$ClassificationResult;->mScore:F
-Landroid/view/textclassifier/TextClassifierImplNative$DatetimeResult;
Landroid/view/textclassifier/TextClassifierImplNative$DatetimeResult;-><init>(JI)V
Landroid/view/textclassifier/TextClassifierImplNative$DatetimeResult;->getGranularity()I
Landroid/view/textclassifier/TextClassifierImplNative$DatetimeResult;->getTimeMsUtc()J
@@ -82623,11 +77141,9 @@
Landroid/view/textclassifier/TextClassifierImplNative$DatetimeResult;->GRANULARITY_YEAR:I
Landroid/view/textclassifier/TextClassifierImplNative$DatetimeResult;->mGranularity:I
Landroid/view/textclassifier/TextClassifierImplNative$DatetimeResult;->mTimeMsUtc:J
-Landroid/view/textclassifier/TextClassifierImplNative$SelectionOptions;
Landroid/view/textclassifier/TextClassifierImplNative$SelectionOptions;-><init>(Ljava/lang/String;)V
Landroid/view/textclassifier/TextClassifierImplNative$SelectionOptions;->getLocales()Ljava/lang/String;
Landroid/view/textclassifier/TextClassifierImplNative$SelectionOptions;->mLocales:Ljava/lang/String;
-Landroid/view/textclassifier/TextClassifierImplNative;
Landroid/view/textclassifier/TextClassifierImplNative;-><init>(I)V
Landroid/view/textclassifier/TextClassifierImplNative;-><init>(Landroid/content/res/AssetFileDescriptor;)V
Landroid/view/textclassifier/TextClassifierImplNative;-><init>(Ljava/lang/String;)V
@@ -82647,11 +77163,9 @@
Landroid/view/textclassifier/TextClassifierImplNative;->nativeNewFromPath(Ljava/lang/String;)J
Landroid/view/textclassifier/TextClassifierImplNative;->nativeSuggestSelection(JLjava/lang/String;IILandroid/view/textclassifier/TextClassifierImplNative$SelectionOptions;)[I
Landroid/view/textclassifier/TextClassifierImplNative;->suggestSelection(Ljava/lang/String;IILandroid/view/textclassifier/TextClassifierImplNative$SelectionOptions;)[I
-Landroid/view/textclassifier/TextLinks$ApplyStrategy;
Landroid/view/textclassifier/TextLinks$Builder;->addLink(IILjava/util/Map;Landroid/text/style/URLSpan;)Landroid/view/textclassifier/TextLinks$Builder;
Landroid/view/textclassifier/TextLinks$Builder;->mFullText:Ljava/lang/String;
Landroid/view/textclassifier/TextLinks$Builder;->mLinks:Ljava/util/ArrayList;
-Landroid/view/textclassifier/TextLinks$Options;
Landroid/view/textclassifier/TextLinks$Options;-><init>(Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/TextLinks$Request;)V
Landroid/view/textclassifier/TextLinks$Options;->checkValidApplyStrategy(I)V
Landroid/view/textclassifier/TextLinks$Options;->from(Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/TextLinks$Request;)Landroid/view/textclassifier/TextLinks$Options;
@@ -82691,14 +77205,12 @@
Landroid/view/textclassifier/TextLinks$Request;->mLegacyFallback:Z
Landroid/view/textclassifier/TextLinks$Request;->mText:Ljava/lang/CharSequence;
Landroid/view/textclassifier/TextLinks$Request;->setCallingPackageName(Ljava/lang/String;)V
-Landroid/view/textclassifier/TextLinks$Status;
Landroid/view/textclassifier/TextLinks$TextLink;-><init>(IILjava/util/Map;Landroid/text/style/URLSpan;)V
Landroid/view/textclassifier/TextLinks$TextLink;-><init>(Landroid/os/Parcel;)V
Landroid/view/textclassifier/TextLinks$TextLink;->mEnd:I
Landroid/view/textclassifier/TextLinks$TextLink;->mEntityScores:Landroid/view/textclassifier/EntityConfidence;
Landroid/view/textclassifier/TextLinks$TextLink;->mStart:I
Landroid/view/textclassifier/TextLinks$TextLink;->mUrlSpan:Landroid/text/style/URLSpan;
-Landroid/view/textclassifier/TextLinks$TextLinkSpan$InvocationMethod;
Landroid/view/textclassifier/TextLinks$TextLinkSpan;->getUrl()Ljava/lang/String;
Landroid/view/textclassifier/TextLinks$TextLinkSpan;->INVOCATION_METHOD_KEYBOARD:I
Landroid/view/textclassifier/TextLinks$TextLinkSpan;->INVOCATION_METHOD_TOUCH:I
@@ -82710,7 +77222,6 @@
Landroid/view/textclassifier/TextLinks;->getText()Ljava/lang/String;
Landroid/view/textclassifier/TextLinks;->mFullText:Ljava/lang/String;
Landroid/view/textclassifier/TextLinks;->mLinks:Ljava/util/List;
-Landroid/view/textclassifier/TextLinksParams$Builder;
Landroid/view/textclassifier/TextLinksParams$Builder;-><init>()V
Landroid/view/textclassifier/TextLinksParams$Builder;->build()Landroid/view/textclassifier/TextLinksParams;
Landroid/view/textclassifier/TextLinksParams$Builder;->mApplyStrategy:I
@@ -82718,7 +77229,6 @@
Landroid/view/textclassifier/TextLinksParams$Builder;->setApplyStrategy(I)Landroid/view/textclassifier/TextLinksParams$Builder;
Landroid/view/textclassifier/TextLinksParams$Builder;->setEntityConfig(Landroid/view/textclassifier/TextClassifier$EntityConfig;)Landroid/view/textclassifier/TextLinksParams$Builder;
Landroid/view/textclassifier/TextLinksParams$Builder;->setSpanFactory(Ljava/util/function/Function;)Landroid/view/textclassifier/TextLinksParams$Builder;
-Landroid/view/textclassifier/TextLinksParams;
Landroid/view/textclassifier/TextLinksParams;-><init>(ILjava/util/function/Function;)V
Landroid/view/textclassifier/TextLinksParams;->apply(Landroid/text/Spannable;Landroid/view/textclassifier/TextLinks;)I
Landroid/view/textclassifier/TextLinksParams;->checkApplyStrategy(I)I
@@ -82732,7 +77242,6 @@
Landroid/view/textclassifier/TextSelection$Builder;->mEntityConfidence:Ljava/util/Map;
Landroid/view/textclassifier/TextSelection$Builder;->mId:Ljava/lang/String;
Landroid/view/textclassifier/TextSelection$Builder;->mStartIndex:I
-Landroid/view/textclassifier/TextSelection$Options;
Landroid/view/textclassifier/TextSelection$Options;-><init>()V
Landroid/view/textclassifier/TextSelection$Options;-><init>(Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/TextSelection$Request;)V
Landroid/view/textclassifier/TextSelection$Options;->from(Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/TextSelection$Request;)Landroid/view/textclassifier/TextSelection$Options;
@@ -82776,18 +77285,15 @@
Landroid/view/textservice/SpellCheckerInfo;->mSettingsActivityName:Ljava/lang/String;
Landroid/view/textservice/SpellCheckerInfo;->mSubtypes:Ljava/util/ArrayList;
Landroid/view/textservice/SpellCheckerInfo;->TAG:Ljava/lang/String;
-Landroid/view/textservice/SpellCheckerSession$InternalListener;
Landroid/view/textservice/SpellCheckerSession$InternalListener;-><init>(Landroid/view/textservice/SpellCheckerSession$SpellCheckerSessionListenerImpl;)V
Landroid/view/textservice/SpellCheckerSession$InternalListener;->mParentSpellCheckerSessionListenerImpl:Landroid/view/textservice/SpellCheckerSession$SpellCheckerSessionListenerImpl;
Landroid/view/textservice/SpellCheckerSession$InternalListener;->onServiceConnected(Lcom/android/internal/textservice/ISpellCheckerSession;)V
-Landroid/view/textservice/SpellCheckerSession$SpellCheckerSessionListenerImpl$SpellCheckerParams;
Landroid/view/textservice/SpellCheckerSession$SpellCheckerSessionListenerImpl$SpellCheckerParams;-><init>(I[Landroid/view/textservice/TextInfo;IZ)V
Landroid/view/textservice/SpellCheckerSession$SpellCheckerSessionListenerImpl$SpellCheckerParams;->mSequentialWords:Z
Landroid/view/textservice/SpellCheckerSession$SpellCheckerSessionListenerImpl$SpellCheckerParams;->mSession:Lcom/android/internal/textservice/ISpellCheckerSession;
Landroid/view/textservice/SpellCheckerSession$SpellCheckerSessionListenerImpl$SpellCheckerParams;->mSuggestionsLimit:I
Landroid/view/textservice/SpellCheckerSession$SpellCheckerSessionListenerImpl$SpellCheckerParams;->mTextInfos:[Landroid/view/textservice/TextInfo;
Landroid/view/textservice/SpellCheckerSession$SpellCheckerSessionListenerImpl$SpellCheckerParams;->mWhat:I
-Landroid/view/textservice/SpellCheckerSession$SpellCheckerSessionListenerImpl;
Landroid/view/textservice/SpellCheckerSession$SpellCheckerSessionListenerImpl;-><init>(Landroid/os/Handler;)V
Landroid/view/textservice/SpellCheckerSession$SpellCheckerSessionListenerImpl;->cancel()V
Landroid/view/textservice/SpellCheckerSession$SpellCheckerSessionListenerImpl;->close()V
@@ -82868,7 +77374,6 @@
Landroid/view/textservice/TextServicesManager;->parseLanguageFromLocaleString(Ljava/lang/String;)Ljava/lang/String;
Landroid/view/textservice/TextServicesManager;->sInstance:Landroid/view/textservice/TextServicesManager;
Landroid/view/textservice/TextServicesManager;->TAG:Ljava/lang/String;
-Landroid/view/TextureLayer;
Landroid/view/TextureLayer;-><init>(Landroid/view/ThreadedRenderer;J)V
Landroid/view/TextureLayer;->adoptTextureLayer(Landroid/view/ThreadedRenderer;J)Landroid/view/TextureLayer;
Landroid/view/TextureLayer;->copyInto(Landroid/graphics/Bitmap;)Z
@@ -82907,15 +77412,10 @@
Landroid/view/TextureView;->releaseSurfaceTexture()V
Landroid/view/TextureView;->updateLayer()V
Landroid/view/TextureView;->updateLayerAndInvalidate()V
-Landroid/view/ThreadedRenderer$DrawCallbacks;
Landroid/view/ThreadedRenderer$DrawCallbacks;->onPostDraw(Landroid/view/DisplayListCanvas;)V
Landroid/view/ThreadedRenderer$DrawCallbacks;->onPreDraw(Landroid/view/DisplayListCanvas;)V
-Landroid/view/ThreadedRenderer$DumpFlags;
-Landroid/view/ThreadedRenderer$FrameCompleteCallback;
Landroid/view/ThreadedRenderer$FrameCompleteCallback;->onFrameComplete(J)V
-Landroid/view/ThreadedRenderer$FrameDrawingCallback;
Landroid/view/ThreadedRenderer$FrameDrawingCallback;->onFrameDraw(J)V
-Landroid/view/ThreadedRenderer$ProcessInitializer;
Landroid/view/ThreadedRenderer$ProcessInitializer;-><init>()V
Landroid/view/ThreadedRenderer$ProcessInitializer;->init(Landroid/content/Context;J)V
Landroid/view/ThreadedRenderer$ProcessInitializer;->initGraphicsStats()V
@@ -82927,7 +77427,6 @@
Landroid/view/ThreadedRenderer$ProcessInitializer;->requestBuffer()V
Landroid/view/ThreadedRenderer$ProcessInitializer;->rotateBuffer()V
Landroid/view/ThreadedRenderer$ProcessInitializer;->sInstance:Landroid/view/ThreadedRenderer$ProcessInitializer;
-Landroid/view/ThreadedRenderer$SimpleRenderer;
Landroid/view/ThreadedRenderer$SimpleRenderer;-><init>(Landroid/content/Context;Ljava/lang/String;Landroid/view/Surface;)V
Landroid/view/ThreadedRenderer$SimpleRenderer;->destroy()V
Landroid/view/ThreadedRenderer$SimpleRenderer;->draw(Landroid/view/ThreadedRenderer$FrameDrawingCallback;)V
@@ -82939,7 +77438,6 @@
Landroid/view/ThreadedRenderer$SimpleRenderer;->mRootNode:Landroid/view/RenderNode;
Landroid/view/ThreadedRenderer$SimpleRenderer;->mSurface:Landroid/view/Surface;
Landroid/view/ThreadedRenderer$SimpleRenderer;->setLightCenter(Landroid/view/Display;II)V
-Landroid/view/ThreadedRenderer;
Landroid/view/ThreadedRenderer;-><init>(Landroid/content/Context;ZLjava/lang/String;)V
Landroid/view/ThreadedRenderer;->addFrameMetricsObserver(Landroid/view/FrameMetricsObserver;)V
Landroid/view/ThreadedRenderer;->buildLayer(Landroid/view/RenderNode;)V
@@ -83099,7 +77597,6 @@
Landroid/view/TouchDelegate;->mDelegateView:Landroid/view/View;
Landroid/view/TouchDelegate;->mSlop:I
Landroid/view/TouchDelegate;->mSlopBounds:Landroid/graphics/Rect;
-Landroid/view/VelocityTracker$Estimator;
Landroid/view/VelocityTracker$Estimator;-><init>()V
Landroid/view/VelocityTracker$Estimator;->estimate(F[F)F
Landroid/view/VelocityTracker$Estimator;->estimateX(F)F
@@ -83121,15 +77618,12 @@
Landroid/view/VelocityTracker;->nativeGetYVelocity(JI)F
Landroid/view/VelocityTracker;->nativeInitialize(Ljava/lang/String;)J
Landroid/view/VelocityTracker;->sPool:Landroid/util/Pools$SynchronizedPool;
-Landroid/view/View$AttachInfo$Callbacks;
Landroid/view/View$AttachInfo$Callbacks;->performHapticFeedback(IZ)Z
Landroid/view/View$AttachInfo$Callbacks;->playSoundEffect(I)V
-Landroid/view/View$AttachInfo$InvalidateInfo;
Landroid/view/View$AttachInfo$InvalidateInfo;->obtain()Landroid/view/View$AttachInfo$InvalidateInfo;
Landroid/view/View$AttachInfo$InvalidateInfo;->POOL_LIMIT:I
Landroid/view/View$AttachInfo$InvalidateInfo;->recycle()V
Landroid/view/View$AttachInfo$InvalidateInfo;->sPool:Landroid/util/Pools$SynchronizedPool;
-Landroid/view/View$AttachInfo;
Landroid/view/View$AttachInfo;-><init>(Landroid/view/IWindowSession;Landroid/view/IWindow;Landroid/view/Display;Landroid/view/ViewRootImpl;Landroid/os/Handler;Landroid/view/View$AttachInfo$Callbacks;Landroid/content/Context;)V
Landroid/view/View$AttachInfo;->mAccessibilityFetchFlags:I
Landroid/view/View$AttachInfo;->mAccessibilityFocusDrawable:Landroid/graphics/drawable/Drawable;
@@ -83188,9 +77682,6 @@
Landroid/view/View$AttachInfo;->mWindowToken:Landroid/os/IBinder;
Landroid/view/View$AttachInfo;->mWindowTop:I
Landroid/view/View$AttachInfo;->mWindowVisibility:I
-Landroid/view/View$AutofillFlags;
-Landroid/view/View$AutofillImportance;
-Landroid/view/View$AutofillType;
Landroid/view/View$BaseSavedState;->AUTOFILL_ID:I
Landroid/view/View$BaseSavedState;->IS_AUTOFILLED:I
Landroid/view/View$BaseSavedState;->mAutofillViewId:I
@@ -83198,8 +77689,6 @@
Landroid/view/View$BaseSavedState;->mSavedData:I
Landroid/view/View$BaseSavedState;->mStartActivityRequestWhoSaved:Ljava/lang/String;
Landroid/view/View$BaseSavedState;->START_ACTIVITY_REQUESTED_WHO_SAVED:I
-Landroid/view/View$CheckForLongPress;
-Landroid/view/View$CheckForLongPress;-><init>()V
Landroid/view/View$CheckForLongPress;->mOriginalPressedState:Z
Landroid/view/View$CheckForLongPress;->mOriginalWindowAttachCount:I
Landroid/view/View$CheckForLongPress;->mX:F
@@ -83207,24 +77696,14 @@
Landroid/view/View$CheckForLongPress;->rememberPressedState()V
Landroid/view/View$CheckForLongPress;->rememberWindowAttachCount()V
Landroid/view/View$CheckForLongPress;->setAnchor(FF)V
-Landroid/view/View$CheckForTap;
-Landroid/view/View$CheckForTap;-><init>()V
Landroid/view/View$CheckForTap;->x:F
Landroid/view/View$CheckForTap;->y:F
-Landroid/view/View$DeclaredOnClickListener;
Landroid/view/View$DeclaredOnClickListener;-><init>(Landroid/view/View;Ljava/lang/String;)V
Landroid/view/View$DeclaredOnClickListener;->mHostView:Landroid/view/View;
Landroid/view/View$DeclaredOnClickListener;->mMethodName:Ljava/lang/String;
Landroid/view/View$DeclaredOnClickListener;->mResolvedContext:Landroid/content/Context;
Landroid/view/View$DeclaredOnClickListener;->mResolvedMethod:Ljava/lang/reflect/Method;
Landroid/view/View$DeclaredOnClickListener;->resolveMethod(Landroid/content/Context;Ljava/lang/String;)V
-Landroid/view/View$DrawingCacheQuality;
-Landroid/view/View$FindViewFlags;
-Landroid/view/View$Focusable;
-Landroid/view/View$FocusableMode;
-Landroid/view/View$FocusDirection;
-Landroid/view/View$FocusRealDirection;
-Landroid/view/View$ForegroundInfo;
Landroid/view/View$ForegroundInfo;-><init>()V
Landroid/view/View$ForegroundInfo;->mBoundsChanged:Z
Landroid/view/View$ForegroundInfo;->mDrawable:Landroid/graphics/drawable/Drawable;
@@ -83233,8 +77712,6 @@
Landroid/view/View$ForegroundInfo;->mOverlayBounds:Landroid/graphics/Rect;
Landroid/view/View$ForegroundInfo;->mSelfBounds:Landroid/graphics/Rect;
Landroid/view/View$ForegroundInfo;->mTintInfo:Landroid/view/View$TintInfo;
-Landroid/view/View$LayoutDir;
-Landroid/view/View$ListenerInfo;
Landroid/view/View$ListenerInfo;->mOnApplyWindowInsetsListener:Landroid/view/View$OnApplyWindowInsetsListener;
Landroid/view/View$ListenerInfo;->mOnAttachStateChangeListeners:Ljava/util/concurrent/CopyOnWriteArrayList;
Landroid/view/View$ListenerInfo;->mOnCapturedPointerListener:Landroid/view/View$OnCapturedPointerListener;
@@ -83243,22 +77720,15 @@
Landroid/view/View$ListenerInfo;->mOnScrollChangeListener:Landroid/view/View$OnScrollChangeListener;
Landroid/view/View$ListenerInfo;->mOnSystemUiVisibilityChangeListener:Landroid/view/View$OnSystemUiVisibilityChangeListener;
Landroid/view/View$ListenerInfo;->mUnhandledKeyListeners:Ljava/util/ArrayList;
-Landroid/view/View$MatchIdPredicate;
Landroid/view/View$MatchIdPredicate;-><init>()V
Landroid/view/View$MatchIdPredicate;->mId:I
Landroid/view/View$MatchIdPredicate;->test(Landroid/view/View;)Z
-Landroid/view/View$MatchLabelForPredicate;
Landroid/view/View$MatchLabelForPredicate;-><init>()V
Landroid/view/View$MatchLabelForPredicate;->mLabeledId:I
Landroid/view/View$MatchLabelForPredicate;->test(Landroid/view/View;)Z
-Landroid/view/View$MeasureSpec$MeasureSpecMode;
Landroid/view/View$MeasureSpec;->adjust(II)I
Landroid/view/View$MeasureSpec;->MODE_MASK:I
Landroid/view/View$MeasureSpec;->MODE_SHIFT:I
-Landroid/view/View$PerformClick;
-Landroid/view/View$PerformClick;-><init>()V
-Landroid/view/View$ResolvedLayoutDir;
-Landroid/view/View$ScrollabilityCache;
Landroid/view/View$ScrollabilityCache;-><init>(Landroid/view/ViewConfiguration;Landroid/view/View;)V
Landroid/view/View$ScrollabilityCache;->DRAGGING_HORIZONTAL_SCROLL_BAR:I
Landroid/view/View$ScrollabilityCache;->DRAGGING_VERTICAL_SCROLL_BAR:I
@@ -83286,23 +77756,16 @@
Landroid/view/View$ScrollabilityCache;->setFadeColor(I)V
Landroid/view/View$ScrollabilityCache;->shader:Landroid/graphics/Shader;
Landroid/view/View$ScrollabilityCache;->TRANSPARENT:[F
-Landroid/view/View$ScrollBarStyle;
-Landroid/view/View$ScrollIndicators;
-Landroid/view/View$SendViewScrolledAccessibilityEvent;
-Landroid/view/View$SendViewScrolledAccessibilityEvent;-><init>()V
Landroid/view/View$SendViewScrolledAccessibilityEvent;->mDeltaX:I
Landroid/view/View$SendViewScrolledAccessibilityEvent;->mDeltaY:I
Landroid/view/View$SendViewScrolledAccessibilityEvent;->mIsPending:Z
Landroid/view/View$SendViewScrolledAccessibilityEvent;->post(II)V
Landroid/view/View$SendViewScrolledAccessibilityEvent;->reset()V
-Landroid/view/View$TextAlignment;
-Landroid/view/View$TintInfo;
Landroid/view/View$TintInfo;-><init>()V
Landroid/view/View$TintInfo;->mHasTintList:Z
Landroid/view/View$TintInfo;->mHasTintMode:Z
Landroid/view/View$TintInfo;->mTintList:Landroid/content/res/ColorStateList;
Landroid/view/View$TintInfo;->mTintMode:Landroid/graphics/PorterDuff$Mode;
-Landroid/view/View$TooltipInfo;
Landroid/view/View$TooltipInfo;-><init>()V
Landroid/view/View$TooltipInfo;->clearAnchorPos()V
Landroid/view/View$TooltipInfo;->mAnchorX:I
@@ -83314,16 +77777,11 @@
Landroid/view/View$TooltipInfo;->mTooltipPopup:Lcom/android/internal/view/TooltipPopup;
Landroid/view/View$TooltipInfo;->mTooltipText:Ljava/lang/CharSequence;
Landroid/view/View$TooltipInfo;->updateAnchorPos(Landroid/view/MotionEvent;)Z
-Landroid/view/View$TransformationInfo;
Landroid/view/View$TransformationInfo;-><init>()V
Landroid/view/View$TransformationInfo;->mAlpha:F
Landroid/view/View$TransformationInfo;->mInverseMatrix:Landroid/graphics/Matrix;
Landroid/view/View$TransformationInfo;->mMatrix:Landroid/graphics/Matrix;
Landroid/view/View$TransformationInfo;->mTransitionAlpha:F
-Landroid/view/View$UnsetPressedState;
-Landroid/view/View$UnsetPressedState;-><init>()V
-Landroid/view/View$Visibility;
-Landroid/view/View$VisibilityChangeForAutofillHandler;
Landroid/view/View$VisibilityChangeForAutofillHandler;-><init>(Landroid/view/autofill/AutofillManager;Landroid/view/View;)V
Landroid/view/View$VisibilityChangeForAutofillHandler;->mAfm:Landroid/view/autofill/AutofillManager;
Landroid/view/View$VisibilityChangeForAutofillHandler;->mView:Landroid/view/View;
@@ -83887,27 +78345,20 @@
Landroid/view/ViewConfiguration;->VERTICAL_SCROLL_FACTOR:F
Landroid/view/ViewConfiguration;->WINDOW_TOUCH_SLOP:I
Landroid/view/ViewConfiguration;->ZOOM_CONTROLS_TIMEOUT:I
-Landroid/view/ViewDebug$CanvasProvider;
Landroid/view/ViewDebug$CanvasProvider;->createBitmap()Landroid/graphics/Bitmap;
Landroid/view/ViewDebug$CanvasProvider;->getCanvas(Landroid/view/View;II)Landroid/graphics/Canvas;
-Landroid/view/ViewDebug$HardwareCanvasProvider;
Landroid/view/ViewDebug$HardwareCanvasProvider;-><init>()V
Landroid/view/ViewDebug$HardwareCanvasProvider;->createBitmap()Landroid/graphics/Bitmap;
Landroid/view/ViewDebug$HardwareCanvasProvider;->getCanvas(Landroid/view/View;II)Landroid/graphics/Canvas;
Landroid/view/ViewDebug$HardwareCanvasProvider;->mPicture:Landroid/graphics/Picture;
-Landroid/view/ViewDebug$HierarchyHandler;
Landroid/view/ViewDebug$HierarchyHandler;->dumpViewHierarchyWithProperties(Ljava/io/BufferedWriter;I)V
Landroid/view/ViewDebug$HierarchyHandler;->findHierarchyView(Ljava/lang/String;I)Landroid/view/View;
-Landroid/view/ViewDebug$HierarchyTraceType;-><init>()V
-Landroid/view/ViewDebug$RecyclerTraceType;-><init>()V
-Landroid/view/ViewDebug$SoftwareCanvasProvider;
Landroid/view/ViewDebug$SoftwareCanvasProvider;-><init>()V
Landroid/view/ViewDebug$SoftwareCanvasProvider;->createBitmap()Landroid/graphics/Bitmap;
Landroid/view/ViewDebug$SoftwareCanvasProvider;->getCanvas(Landroid/view/View;II)Landroid/graphics/Canvas;
Landroid/view/ViewDebug$SoftwareCanvasProvider;->mBitmap:Landroid/graphics/Bitmap;
Landroid/view/ViewDebug$SoftwareCanvasProvider;->mCanvas:Landroid/graphics/Canvas;
Landroid/view/ViewDebug$SoftwareCanvasProvider;->mEnabledHwBitmapsInSwMode:Z
-Landroid/view/ViewDebug$ViewOperation;
Landroid/view/ViewDebug$ViewOperation;->pre()V
Landroid/view/ViewDebug$ViewOperation;->run()V
Landroid/view/ViewDebug;->callMethodOnAppropriateTheadBlocking(Ljava/lang/reflect/Method;Ljava/lang/Object;)Ljava/lang/Object;
@@ -83973,7 +78424,6 @@
Landroid/view/ViewDebug;->sMethodsForClasses:Ljava/util/HashMap;
Landroid/view/ViewDebug;->writeEntry(Ljava/io/BufferedWriter;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V
Landroid/view/ViewDebug;->writeValue(Ljava/io/BufferedWriter;Ljava/lang/Object;)V
-Landroid/view/ViewGroup$ChildListForAccessibility;
Landroid/view/ViewGroup$ChildListForAccessibility;-><init>()V
Landroid/view/ViewGroup$ChildListForAccessibility;->clear()V
Landroid/view/ViewGroup$ChildListForAccessibility;->getChildAt(I)Landroid/view/View;
@@ -83986,13 +78436,11 @@
Landroid/view/ViewGroup$ChildListForAccessibility;->recycle()V
Landroid/view/ViewGroup$ChildListForAccessibility;->sort(Ljava/util/ArrayList;)V
Landroid/view/ViewGroup$ChildListForAccessibility;->sPool:Landroid/util/Pools$SynchronizedPool;
-Landroid/view/ViewGroup$ChildListForAutoFill;
Landroid/view/ViewGroup$ChildListForAutoFill;-><init>()V
Landroid/view/ViewGroup$ChildListForAutoFill;->MAX_POOL_SIZE:I
Landroid/view/ViewGroup$ChildListForAutoFill;->obtain()Landroid/view/ViewGroup$ChildListForAutoFill;
Landroid/view/ViewGroup$ChildListForAutoFill;->recycle()V
Landroid/view/ViewGroup$ChildListForAutoFill;->sPool:Landroid/util/Pools$SimplePool;
-Landroid/view/ViewGroup$HoverTarget;
Landroid/view/ViewGroup$HoverTarget;-><init>()V
Landroid/view/ViewGroup$HoverTarget;->child:Landroid/view/View;
Landroid/view/ViewGroup$HoverTarget;->MAX_RECYCLED:I
@@ -84021,7 +78469,6 @@
Landroid/view/ViewGroup$MarginLayoutParams;->RIGHT_MARGIN_UNDEFINED_MASK:I
Landroid/view/ViewGroup$MarginLayoutParams;->RTL_COMPATIBILITY_MODE_MASK:I
Landroid/view/ViewGroup$MarginLayoutParams;->UNDEFINED_MARGIN:I
-Landroid/view/ViewGroup$TouchTarget;
Landroid/view/ViewGroup$TouchTarget;->ALL_POINTER_IDS:I
Landroid/view/ViewGroup$TouchTarget;->MAX_RECYCLED:I
Landroid/view/ViewGroup$TouchTarget;->next:Landroid/view/ViewGroup$TouchTarget;
@@ -84031,7 +78478,6 @@
Landroid/view/ViewGroup$TouchTarget;->sRecycleBin:Landroid/view/ViewGroup$TouchTarget;
Landroid/view/ViewGroup$TouchTarget;->sRecycledCount:I
Landroid/view/ViewGroup$TouchTarget;->sRecycleLock:Ljava/lang/Object;
-Landroid/view/ViewGroup$ViewLocationHolder;
Landroid/view/ViewGroup$ViewLocationHolder;-><init>()V
Landroid/view/ViewGroup$ViewLocationHolder;->clear()V
Landroid/view/ViewGroup$ViewLocationHolder;->compareBoundsOfTree(Landroid/view/ViewGroup$ViewLocationHolder;Landroid/view/ViewGroup$ViewLocationHolder;)I
@@ -84236,7 +78682,6 @@
Landroid/view/ViewGroup;->unFocus(Landroid/view/View;)V
Landroid/view/ViewGroup;->updateLocalSystemUiVisibility(II)Z
Landroid/view/ViewGroupOverlay;-><init>(Landroid/content/Context;Landroid/view/View;)V
-Landroid/view/ViewHierarchyEncoder;
Landroid/view/ViewHierarchyEncoder;-><init>(Ljava/io/ByteArrayOutputStream;)V
Landroid/view/ViewHierarchyEncoder;->addProperty(Ljava/lang/String;S)V
Landroid/view/ViewHierarchyEncoder;->addPropertyKey(Ljava/lang/String;)V
@@ -84265,7 +78710,6 @@
Landroid/view/ViewHierarchyEncoder;->writeInt(I)V
Landroid/view/ViewHierarchyEncoder;->writeShort(S)V
Landroid/view/ViewHierarchyEncoder;->writeString(Ljava/lang/String;)V
-Landroid/view/ViewOverlay$OverlayViewGroup;
Landroid/view/ViewOverlay$OverlayViewGroup;-><init>(Landroid/content/Context;Landroid/view/View;)V
Landroid/view/ViewOverlay$OverlayViewGroup;->add(Landroid/graphics/drawable/Drawable;)V
Landroid/view/ViewOverlay$OverlayViewGroup;->add(Landroid/view/View;)V
@@ -84281,14 +78725,10 @@
Landroid/view/ViewOverlay$OverlayViewGroup;->remove(Landroid/view/View;)V
Landroid/view/ViewOverlay;-><init>(Landroid/content/Context;Landroid/view/View;)V
Landroid/view/ViewOverlay;->mOverlayViewGroup:Landroid/view/ViewOverlay$OverlayViewGroup;
-Landroid/view/ViewPropertyAnimator$AnimatorEventListener;
-Landroid/view/ViewPropertyAnimator$AnimatorEventListener;-><init>()V
-Landroid/view/ViewPropertyAnimator$NameValuesHolder;
Landroid/view/ViewPropertyAnimator$NameValuesHolder;-><init>(IFF)V
Landroid/view/ViewPropertyAnimator$NameValuesHolder;->mDeltaValue:F
Landroid/view/ViewPropertyAnimator$NameValuesHolder;->mFromValue:F
Landroid/view/ViewPropertyAnimator$NameValuesHolder;->mNameConstant:I
-Landroid/view/ViewPropertyAnimator$PropertyBundle;
Landroid/view/ViewPropertyAnimator$PropertyBundle;-><init>(ILjava/util/ArrayList;)V
Landroid/view/ViewPropertyAnimator$PropertyBundle;->cancel(I)Z
Landroid/view/ViewPropertyAnimator$PropertyBundle;->mNameValuesHolder:Ljava/util/ArrayList;
@@ -84339,7 +78779,6 @@
Landroid/view/ViewPropertyAnimator;->X:I
Landroid/view/ViewPropertyAnimator;->Y:I
Landroid/view/ViewPropertyAnimator;->Z:I
-Landroid/view/ViewPropertyAnimatorRT;
Landroid/view/ViewPropertyAnimatorRT;-><init>(Landroid/view/View;)V
Landroid/view/ViewPropertyAnimatorRT;->cancelAll()V
Landroid/view/ViewPropertyAnimatorRT;->cancelAnimators(Ljava/util/ArrayList;)V
@@ -84349,7 +78788,6 @@
Landroid/view/ViewPropertyAnimatorRT;->mView:Landroid/view/View;
Landroid/view/ViewPropertyAnimatorRT;->sLinearInterpolator:Landroid/view/animation/Interpolator;
Landroid/view/ViewPropertyAnimatorRT;->startAnimation(Landroid/view/ViewPropertyAnimator;)Z
-Landroid/view/ViewProtoEnums;
Landroid/view/ViewProtoEnums;-><init>()V
Landroid/view/ViewProtoEnums;->DISPLAY_STATE_DOZE:I
Landroid/view/ViewProtoEnums;->DISPLAY_STATE_DOZE_SUSPEND:I
@@ -84358,7 +78796,6 @@
Landroid/view/ViewProtoEnums;->DISPLAY_STATE_ON_SUSPEND:I
Landroid/view/ViewProtoEnums;->DISPLAY_STATE_UNKNOWN:I
Landroid/view/ViewProtoEnums;->DISPLAY_STATE_VR:I
-Landroid/view/ViewRootImpl$AccessibilityInteractionConnection;
Landroid/view/ViewRootImpl$AccessibilityInteractionConnection;-><init>(Landroid/view/ViewRootImpl;)V
Landroid/view/ViewRootImpl$AccessibilityInteractionConnection;->findAccessibilityNodeInfoByAccessibilityId(JLandroid/graphics/Region;ILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;IIJLandroid/view/MagnificationSpec;Landroid/os/Bundle;)V
Landroid/view/ViewRootImpl$AccessibilityInteractionConnection;->findAccessibilityNodeInfosByText(JLjava/lang/String;Landroid/graphics/Region;ILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;IIJLandroid/view/MagnificationSpec;)V
@@ -84367,14 +78804,9 @@
Landroid/view/ViewRootImpl$AccessibilityInteractionConnection;->focusSearch(JILandroid/graphics/Region;ILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;IIJLandroid/view/MagnificationSpec;)V
Landroid/view/ViewRootImpl$AccessibilityInteractionConnection;->mViewRootImpl:Ljava/lang/ref/WeakReference;
Landroid/view/ViewRootImpl$AccessibilityInteractionConnection;->performAccessibilityAction(JILandroid/os/Bundle;ILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;IIJ)V
-Landroid/view/ViewRootImpl$AccessibilityInteractionConnectionManager;
-Landroid/view/ViewRootImpl$AccessibilityInteractionConnectionManager;-><init>()V
Landroid/view/ViewRootImpl$AccessibilityInteractionConnectionManager;->ensureConnection()V
Landroid/view/ViewRootImpl$AccessibilityInteractionConnectionManager;->ensureNoConnection()V
-Landroid/view/ViewRootImpl$ActivityConfigCallback;
Landroid/view/ViewRootImpl$ActivityConfigCallback;->onConfigurationChanged(Landroid/content/res/Configuration;I)V
-Landroid/view/ViewRootImpl$AsyncInputStage;
-Landroid/view/ViewRootImpl$AsyncInputStage;-><init>(Landroid/view/ViewRootImpl$InputStage;Ljava/lang/String;)V
Landroid/view/ViewRootImpl$AsyncInputStage;->apply(Landroid/view/ViewRootImpl$QueuedInputEvent;I)V
Landroid/view/ViewRootImpl$AsyncInputStage;->defer(Landroid/view/ViewRootImpl$QueuedInputEvent;)V
Landroid/view/ViewRootImpl$AsyncInputStage;->DEFER:I
@@ -84386,27 +78818,13 @@
Landroid/view/ViewRootImpl$AsyncInputStage;->mQueueLength:I
Landroid/view/ViewRootImpl$AsyncInputStage;->mQueueTail:Landroid/view/ViewRootImpl$QueuedInputEvent;
Landroid/view/ViewRootImpl$AsyncInputStage;->mTraceCounter:Ljava/lang/String;
-Landroid/view/ViewRootImpl$CalledFromWrongThreadException;
-Landroid/view/ViewRootImpl$ConfigChangedCallback;
Landroid/view/ViewRootImpl$ConfigChangedCallback;->onConfigurationChanged(Landroid/content/res/Configuration;)V
-Landroid/view/ViewRootImpl$ConsumeBatchedInputImmediatelyRunnable;
-Landroid/view/ViewRootImpl$ConsumeBatchedInputImmediatelyRunnable;-><init>()V
-Landroid/view/ViewRootImpl$ConsumeBatchedInputRunnable;
-Landroid/view/ViewRootImpl$ConsumeBatchedInputRunnable;-><init>()V
-Landroid/view/ViewRootImpl$EarlyPostImeInputStage;
-Landroid/view/ViewRootImpl$EarlyPostImeInputStage;-><init>(Landroid/view/ViewRootImpl$InputStage;)V
Landroid/view/ViewRootImpl$EarlyPostImeInputStage;->onProcess(Landroid/view/ViewRootImpl$QueuedInputEvent;)I
Landroid/view/ViewRootImpl$EarlyPostImeInputStage;->processKeyEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)I
Landroid/view/ViewRootImpl$EarlyPostImeInputStage;->processPointerEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)I
-Landroid/view/ViewRootImpl$HighContrastTextManager;
-Landroid/view/ViewRootImpl$HighContrastTextManager;-><init>()V
Landroid/view/ViewRootImpl$HighContrastTextManager;->onHighTextContrastStateChanged(Z)V
-Landroid/view/ViewRootImpl$ImeInputStage;
-Landroid/view/ViewRootImpl$ImeInputStage;-><init>(Landroid/view/ViewRootImpl$InputStage;Ljava/lang/String;)V
Landroid/view/ViewRootImpl$ImeInputStage;->onFinishedInputEvent(Ljava/lang/Object;Z)V
Landroid/view/ViewRootImpl$ImeInputStage;->onProcess(Landroid/view/ViewRootImpl$QueuedInputEvent;)I
-Landroid/view/ViewRootImpl$InputStage;
-Landroid/view/ViewRootImpl$InputStage;-><init>(Landroid/view/ViewRootImpl$InputStage;)V
Landroid/view/ViewRootImpl$InputStage;->apply(Landroid/view/ViewRootImpl$QueuedInputEvent;I)V
Landroid/view/ViewRootImpl$InputStage;->deliver(Landroid/view/ViewRootImpl$QueuedInputEvent;)V
Landroid/view/ViewRootImpl$InputStage;->dump(Ljava/lang/String;Ljava/io/PrintWriter;)V
@@ -84422,8 +78840,6 @@
Landroid/view/ViewRootImpl$InputStage;->onProcess(Landroid/view/ViewRootImpl$QueuedInputEvent;)I
Landroid/view/ViewRootImpl$InputStage;->onWindowFocusChanged(Z)V
Landroid/view/ViewRootImpl$InputStage;->shouldDropInputEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)Z
-Landroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;
-Landroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;-><init>()V
Landroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;->addView(Landroid/view/View;)V
Landroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;->addViewRect(Landroid/view/View$AttachInfo$InvalidateInfo;)V
Landroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;->mPosted:Z
@@ -84433,15 +78849,10 @@
Landroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;->mViews:Ljava/util/ArrayList;
Landroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;->postIfNeededLocked()V
Landroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;->removeView(Landroid/view/View;)V
-Landroid/view/ViewRootImpl$NativePostImeInputStage;
-Landroid/view/ViewRootImpl$NativePostImeInputStage;-><init>(Landroid/view/ViewRootImpl$InputStage;Ljava/lang/String;)V
Landroid/view/ViewRootImpl$NativePostImeInputStage;->onFinishedInputEvent(Ljava/lang/Object;Z)V
Landroid/view/ViewRootImpl$NativePostImeInputStage;->onProcess(Landroid/view/ViewRootImpl$QueuedInputEvent;)I
-Landroid/view/ViewRootImpl$NativePreImeInputStage;
-Landroid/view/ViewRootImpl$NativePreImeInputStage;-><init>(Landroid/view/ViewRootImpl$InputStage;Ljava/lang/String;)V
Landroid/view/ViewRootImpl$NativePreImeInputStage;->onFinishedInputEvent(Ljava/lang/Object;Z)V
Landroid/view/ViewRootImpl$NativePreImeInputStage;->onProcess(Landroid/view/ViewRootImpl$QueuedInputEvent;)I
-Landroid/view/ViewRootImpl$QueuedInputEvent;
Landroid/view/ViewRootImpl$QueuedInputEvent;-><init>()V
Landroid/view/ViewRootImpl$QueuedInputEvent;->flagToString(Ljava/lang/String;IZLjava/lang/StringBuilder;)Z
Landroid/view/ViewRootImpl$QueuedInputEvent;->FLAG_DEFERRED:I
@@ -84456,16 +78867,12 @@
Landroid/view/ViewRootImpl$QueuedInputEvent;->mReceiver:Landroid/view/InputEventReceiver;
Landroid/view/ViewRootImpl$QueuedInputEvent;->shouldSendToSynthesizer()Z
Landroid/view/ViewRootImpl$QueuedInputEvent;->shouldSkipIme()Z
-Landroid/view/ViewRootImpl$SendWindowContentChangedAccessibilityEvent;
-Landroid/view/ViewRootImpl$SendWindowContentChangedAccessibilityEvent;-><init>()V
Landroid/view/ViewRootImpl$SendWindowContentChangedAccessibilityEvent;->mChangeTypes:I
Landroid/view/ViewRootImpl$SendWindowContentChangedAccessibilityEvent;->mLastEventTimeMillis:J
Landroid/view/ViewRootImpl$SendWindowContentChangedAccessibilityEvent;->mOrigin:[Ljava/lang/StackTraceElement;
Landroid/view/ViewRootImpl$SendWindowContentChangedAccessibilityEvent;->mSource:Landroid/view/View;
Landroid/view/ViewRootImpl$SendWindowContentChangedAccessibilityEvent;->removeCallbacksAndRun()V
Landroid/view/ViewRootImpl$SendWindowContentChangedAccessibilityEvent;->runOrPost(Landroid/view/View;I)V
-Landroid/view/ViewRootImpl$SyntheticInputStage;
-Landroid/view/ViewRootImpl$SyntheticInputStage;-><init>()V
Landroid/view/ViewRootImpl$SyntheticInputStage;->mJoystick:Landroid/view/ViewRootImpl$SyntheticJoystickHandler;
Landroid/view/ViewRootImpl$SyntheticInputStage;->mKeyboard:Landroid/view/ViewRootImpl$SyntheticKeyboardHandler;
Landroid/view/ViewRootImpl$SyntheticInputStage;->mTouchNavigation:Landroid/view/ViewRootImpl$SyntheticTouchNavigationHandler;
@@ -84474,8 +78881,6 @@
Landroid/view/ViewRootImpl$SyntheticInputStage;->onDetachedFromWindow()V
Landroid/view/ViewRootImpl$SyntheticInputStage;->onProcess(Landroid/view/ViewRootImpl$QueuedInputEvent;)I
Landroid/view/ViewRootImpl$SyntheticInputStage;->onWindowFocusChanged(Z)V
-Landroid/view/ViewRootImpl$SyntheticJoystickHandler$JoystickAxesState;
-Landroid/view/ViewRootImpl$SyntheticJoystickHandler$JoystickAxesState;-><init>()V
Landroid/view/ViewRootImpl$SyntheticJoystickHandler$JoystickAxesState;->isXAxis(I)Z
Landroid/view/ViewRootImpl$SyntheticJoystickHandler$JoystickAxesState;->isYAxis(I)Z
Landroid/view/ViewRootImpl$SyntheticJoystickHandler$JoystickAxesState;->joystickAxisAndStateToKeycode(II)I
@@ -84487,8 +78892,6 @@
Landroid/view/ViewRootImpl$SyntheticJoystickHandler$JoystickAxesState;->STATE_NEUTRAL:I
Landroid/view/ViewRootImpl$SyntheticJoystickHandler$JoystickAxesState;->STATE_UP_OR_LEFT:I
Landroid/view/ViewRootImpl$SyntheticJoystickHandler$JoystickAxesState;->updateStateForAxis(Landroid/view/MotionEvent;JIF)V
-Landroid/view/ViewRootImpl$SyntheticJoystickHandler;
-Landroid/view/ViewRootImpl$SyntheticJoystickHandler;-><init>()V
Landroid/view/ViewRootImpl$SyntheticJoystickHandler;->cancel()V
Landroid/view/ViewRootImpl$SyntheticJoystickHandler;->mDeviceKeyEvents:Landroid/util/SparseArray;
Landroid/view/ViewRootImpl$SyntheticJoystickHandler;->mJoystickAxesState:Landroid/view/ViewRootImpl$SyntheticJoystickHandler$JoystickAxesState;
@@ -84496,11 +78899,7 @@
Landroid/view/ViewRootImpl$SyntheticJoystickHandler;->MSG_ENQUEUE_Y_AXIS_KEY_REPEAT:I
Landroid/view/ViewRootImpl$SyntheticJoystickHandler;->process(Landroid/view/MotionEvent;)V
Landroid/view/ViewRootImpl$SyntheticJoystickHandler;->update(Landroid/view/MotionEvent;)V
-Landroid/view/ViewRootImpl$SyntheticKeyboardHandler;
-Landroid/view/ViewRootImpl$SyntheticKeyboardHandler;-><init>()V
Landroid/view/ViewRootImpl$SyntheticKeyboardHandler;->process(Landroid/view/KeyEvent;)V
-Landroid/view/ViewRootImpl$SyntheticTouchNavigationHandler;
-Landroid/view/ViewRootImpl$SyntheticTouchNavigationHandler;-><init>()V
Landroid/view/ViewRootImpl$SyntheticTouchNavigationHandler;->cancel(Landroid/view/MotionEvent;)V
Landroid/view/ViewRootImpl$SyntheticTouchNavigationHandler;->cancelFling()V
Landroid/view/ViewRootImpl$SyntheticTouchNavigationHandler;->consumeAccumulatedMovement(JI)V
@@ -84542,25 +78941,19 @@
Landroid/view/ViewRootImpl$SyntheticTouchNavigationHandler;->sendKeyUp(J)V
Landroid/view/ViewRootImpl$SyntheticTouchNavigationHandler;->startFling(JFF)Z
Landroid/view/ViewRootImpl$SyntheticTouchNavigationHandler;->TICK_DISTANCE_MILLIMETERS:I
-Landroid/view/ViewRootImpl$SyntheticTrackballHandler;
-Landroid/view/ViewRootImpl$SyntheticTrackballHandler;-><init>()V
Landroid/view/ViewRootImpl$SyntheticTrackballHandler;->cancel()V
Landroid/view/ViewRootImpl$SyntheticTrackballHandler;->mLastTime:J
Landroid/view/ViewRootImpl$SyntheticTrackballHandler;->mX:Landroid/view/ViewRootImpl$TrackballAxis;
Landroid/view/ViewRootImpl$SyntheticTrackballHandler;->mY:Landroid/view/ViewRootImpl$TrackballAxis;
Landroid/view/ViewRootImpl$SyntheticTrackballHandler;->process(Landroid/view/MotionEvent;)V
-Landroid/view/ViewRootImpl$SystemUiVisibilityInfo;
Landroid/view/ViewRootImpl$SystemUiVisibilityInfo;-><init>()V
Landroid/view/ViewRootImpl$SystemUiVisibilityInfo;->globalVisibility:I
Landroid/view/ViewRootImpl$SystemUiVisibilityInfo;->localChanges:I
Landroid/view/ViewRootImpl$SystemUiVisibilityInfo;->localValue:I
Landroid/view/ViewRootImpl$SystemUiVisibilityInfo;->seq:I
-Landroid/view/ViewRootImpl$TakenSurfaceHolder;
-Landroid/view/ViewRootImpl$TakenSurfaceHolder;-><init>()V
Landroid/view/ViewRootImpl$TakenSurfaceHolder;->onAllowLockCanvas()Z
Landroid/view/ViewRootImpl$TakenSurfaceHolder;->onRelayoutContainer()V
Landroid/view/ViewRootImpl$TakenSurfaceHolder;->onUpdateSurface()V
-Landroid/view/ViewRootImpl$TrackballAxis;
Landroid/view/ViewRootImpl$TrackballAxis;-><init>()V
Landroid/view/ViewRootImpl$TrackballAxis;->acceleration:F
Landroid/view/ViewRootImpl$TrackballAxis;->ACCEL_MOVE_SCALING_FACTOR:F
@@ -84577,9 +78970,6 @@
Landroid/view/ViewRootImpl$TrackballAxis;->SECOND_CUMULATIVE_MOVEMENT_THRESHOLD:F
Landroid/view/ViewRootImpl$TrackballAxis;->step:I
Landroid/view/ViewRootImpl$TrackballAxis;->SUBSEQUENT_INCREMENTAL_MOVEMENT_THRESHOLD:F
-Landroid/view/ViewRootImpl$TraversalRunnable;
-Landroid/view/ViewRootImpl$TraversalRunnable;-><init>()V
-Landroid/view/ViewRootImpl$UnhandledKeyManager;
Landroid/view/ViewRootImpl$UnhandledKeyManager;-><init>()V
Landroid/view/ViewRootImpl$UnhandledKeyManager;->dispatch(Landroid/view/View;Landroid/view/KeyEvent;)Z
Landroid/view/ViewRootImpl$UnhandledKeyManager;->mCapturedKeys:Landroid/util/SparseArray;
@@ -84587,8 +78977,6 @@
Landroid/view/ViewRootImpl$UnhandledKeyManager;->mDispatched:Z
Landroid/view/ViewRootImpl$UnhandledKeyManager;->preDispatch(Landroid/view/KeyEvent;)V
Landroid/view/ViewRootImpl$UnhandledKeyManager;->preViewDispatch(Landroid/view/KeyEvent;)Z
-Landroid/view/ViewRootImpl$ViewPostImeInputStage;
-Landroid/view/ViewRootImpl$ViewPostImeInputStage;-><init>(Landroid/view/ViewRootImpl$InputStage;)V
Landroid/view/ViewRootImpl$ViewPostImeInputStage;->maybeUpdatePointerIcon(Landroid/view/MotionEvent;)V
Landroid/view/ViewRootImpl$ViewPostImeInputStage;->onDeliverToNext(Landroid/view/ViewRootImpl$QueuedInputEvent;)V
Landroid/view/ViewRootImpl$ViewPostImeInputStage;->onProcess(Landroid/view/ViewRootImpl$QueuedInputEvent;)I
@@ -84598,13 +78986,8 @@
Landroid/view/ViewRootImpl$ViewPostImeInputStage;->processKeyEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)I
Landroid/view/ViewRootImpl$ViewPostImeInputStage;->processPointerEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)I
Landroid/view/ViewRootImpl$ViewPostImeInputStage;->processTrackballEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)I
-Landroid/view/ViewRootImpl$ViewPreImeInputStage;
-Landroid/view/ViewRootImpl$ViewPreImeInputStage;-><init>(Landroid/view/ViewRootImpl$InputStage;)V
Landroid/view/ViewRootImpl$ViewPreImeInputStage;->onProcess(Landroid/view/ViewRootImpl$QueuedInputEvent;)I
Landroid/view/ViewRootImpl$ViewPreImeInputStage;->processKeyEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)I
-Landroid/view/ViewRootImpl$ViewRootHandler;
-Landroid/view/ViewRootImpl$ViewRootHandler;-><init>()V
-Landroid/view/ViewRootImpl$W;
Landroid/view/ViewRootImpl$W;-><init>(Landroid/view/ViewRootImpl;)V
Landroid/view/ViewRootImpl$W;->checkCallingPermission(Ljava/lang/String;)I
Landroid/view/ViewRootImpl$W;->closeSystemDialogs(Ljava/lang/String;)V
@@ -84624,14 +79007,10 @@
Landroid/view/ViewRootImpl$W;->resized(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;ZLandroid/util/MergedConfiguration;Landroid/graphics/Rect;ZZILandroid/view/DisplayCutout$ParcelableWrapper;)V
Landroid/view/ViewRootImpl$W;->updatePointerIcon(FF)V
Landroid/view/ViewRootImpl$W;->windowFocusChanged(ZZ)V
-Landroid/view/ViewRootImpl$WindowInputEventReceiver;
-Landroid/view/ViewRootImpl$WindowInputEventReceiver;-><init>(Landroid/view/InputChannel;Landroid/os/Looper;)V
Landroid/view/ViewRootImpl$WindowInputEventReceiver;->dispose()V
Landroid/view/ViewRootImpl$WindowInputEventReceiver;->onBatchedInputEventPending()V
Landroid/view/ViewRootImpl$WindowInputEventReceiver;->onInputEvent(Landroid/view/InputEvent;I)V
-Landroid/view/ViewRootImpl$WindowStoppedCallback;
Landroid/view/ViewRootImpl$WindowStoppedCallback;->windowStopped(Z)V
-Landroid/view/ViewRootImpl;
Landroid/view/ViewRootImpl;-><init>(Landroid/content/Context;Landroid/view/Display;)V
Landroid/view/ViewRootImpl;->addFirstDrawHandler(Ljava/lang/Runnable;)V
Landroid/view/ViewRootImpl;->addWindowCallbacks(Landroid/view/WindowCallbacks;)V
@@ -85006,8 +79385,6 @@
Landroid/view/ViewRootImpl;->windowFocusChanged(ZZ)V
Landroid/view/ViewStructure;->getTempRect()Landroid/graphics/Rect;
Landroid/view/ViewStructure;->setAssistBlocked(Z)V
-Landroid/view/ViewStub$ViewReplaceRunnable;
-Landroid/view/ViewStub$ViewReplaceRunnable;-><init>(Landroid/view/View;)V
Landroid/view/ViewStub$ViewReplaceRunnable;->view:Landroid/view/View;
Landroid/view/ViewStub;->inflateViewNoAdd(Landroid/view/ViewGroup;)Landroid/view/View;
Landroid/view/ViewStub;->mInflatedId:I
@@ -85019,13 +79396,11 @@
Landroid/view/ViewStub;->setInflatedIdAsync(I)Ljava/lang/Runnable;
Landroid/view/ViewStub;->setLayoutResourceAsync(I)Ljava/lang/Runnable;
Landroid/view/ViewStub;->setVisibilityAsync(I)Ljava/lang/Runnable;
-Landroid/view/ViewTreeObserver$CopyOnWriteArray$Access;
Landroid/view/ViewTreeObserver$CopyOnWriteArray$Access;-><init>()V
Landroid/view/ViewTreeObserver$CopyOnWriteArray$Access;->get(I)Ljava/lang/Object;
Landroid/view/ViewTreeObserver$CopyOnWriteArray$Access;->mData:Ljava/util/ArrayList;
Landroid/view/ViewTreeObserver$CopyOnWriteArray$Access;->mSize:I
Landroid/view/ViewTreeObserver$CopyOnWriteArray$Access;->size()I
-Landroid/view/ViewTreeObserver$CopyOnWriteArray;
Landroid/view/ViewTreeObserver$CopyOnWriteArray;-><init>()V
Landroid/view/ViewTreeObserver$CopyOnWriteArray;->add(Ljava/lang/Object;)V
Landroid/view/ViewTreeObserver$CopyOnWriteArray;->addAll(Landroid/view/ViewTreeObserver$CopyOnWriteArray;)V
@@ -85039,17 +79414,13 @@
Landroid/view/ViewTreeObserver$CopyOnWriteArray;->remove(Ljava/lang/Object;)V
Landroid/view/ViewTreeObserver$CopyOnWriteArray;->size()I
Landroid/view/ViewTreeObserver$CopyOnWriteArray;->start()Landroid/view/ViewTreeObserver$CopyOnWriteArray$Access;
-Landroid/view/ViewTreeObserver$InternalInsetsInfo;
Landroid/view/ViewTreeObserver$InternalInsetsInfo;->isEmpty()Z
Landroid/view/ViewTreeObserver$InternalInsetsInfo;->reset()V
Landroid/view/ViewTreeObserver$InternalInsetsInfo;->TOUCHABLE_INSETS_CONTENT:I
Landroid/view/ViewTreeObserver$InternalInsetsInfo;->TOUCHABLE_INSETS_FRAME:I
Landroid/view/ViewTreeObserver$InternalInsetsInfo;->TOUCHABLE_INSETS_VISIBLE:I
-Landroid/view/ViewTreeObserver$OnComputeInternalInsetsListener;
Landroid/view/ViewTreeObserver$OnComputeInternalInsetsListener;->onComputeInternalInsets(Landroid/view/ViewTreeObserver$InternalInsetsInfo;)V
-Landroid/view/ViewTreeObserver$OnEnterAnimationCompleteListener;
Landroid/view/ViewTreeObserver$OnEnterAnimationCompleteListener;->onEnterAnimationComplete()V
-Landroid/view/ViewTreeObserver$OnWindowShownListener;
Landroid/view/ViewTreeObserver$OnWindowShownListener;->onWindowShown()V
Landroid/view/ViewTreeObserver;-><init>(Landroid/content/Context;)V
Landroid/view/ViewTreeObserver;->addOnEnterAnimationCompleteListener(Landroid/view/ViewTreeObserver$OnEnterAnimationCompleteListener;)V
@@ -85075,11 +79446,8 @@
Landroid/view/ViewTreeObserver;->removeOnEnterAnimationCompleteListener(Landroid/view/ViewTreeObserver$OnEnterAnimationCompleteListener;)V
Landroid/view/ViewTreeObserver;->removeOnWindowShownListener(Landroid/view/ViewTreeObserver$OnWindowShownListener;)V
Landroid/view/ViewTreeObserver;->sIllegalOnDrawModificationIsFatal:Z
-Landroid/view/Window$OnWindowDismissedCallback;
Landroid/view/Window$OnWindowDismissedCallback;->onWindowDismissed(ZZ)V
-Landroid/view/Window$OnWindowSwipeDismissedCallback;
Landroid/view/Window$OnWindowSwipeDismissedCallback;->onWindowSwipeDismissed()V
-Landroid/view/Window$WindowControllerCallback;
Landroid/view/Window$WindowControllerCallback;->enterPictureInPictureModeIfPossible()V
Landroid/view/Window$WindowControllerCallback;->exitFreeformMode()V
Landroid/view/Window$WindowControllerCallback;->isTaskRoot()Z
@@ -85130,7 +79498,6 @@
Landroid/view/Window;->setWindowControllerCallback(Landroid/view/Window$WindowControllerCallback;)V
Landroid/view/WindowAnimationFrameStats;-><init>()V
Landroid/view/WindowAnimationFrameStats;-><init>(Landroid/os/Parcel;)V
-Landroid/view/WindowCallbacks;
Landroid/view/WindowCallbacks;->onContentDrawn(IIII)Z
Landroid/view/WindowCallbacks;->onPostDraw(Landroid/view/DisplayListCanvas;)V
Landroid/view/WindowCallbacks;->onRequestDraw(Z)V
@@ -85140,15 +79507,12 @@
Landroid/view/WindowCallbacks;->RESIZE_MODE_DOCKED_DIVIDER:I
Landroid/view/WindowCallbacks;->RESIZE_MODE_FREEFORM:I
Landroid/view/WindowCallbacks;->RESIZE_MODE_INVALID:I
-Landroid/view/WindowCallbackWrapper;
Landroid/view/WindowCallbackWrapper;-><init>(Landroid/view/Window$Callback;)V
Landroid/view/WindowCallbackWrapper;->mWrapped:Landroid/view/Window$Callback;
Landroid/view/WindowContentFrameStats;-><init>()V
Landroid/view/WindowContentFrameStats;-><init>(Landroid/os/Parcel;)V
Landroid/view/WindowContentFrameStats;->mFramesPostedTimeNano:[J
Landroid/view/WindowContentFrameStats;->mFramesReadyTimeNano:[J
-Landroid/view/WindowId$FocusObserver$H;
-Landroid/view/WindowId$FocusObserver$H;-><init>()V
Landroid/view/WindowId$FocusObserver;->mHandler:Landroid/os/Handler;
Landroid/view/WindowId$FocusObserver;->mIObserver:Landroid/view/IWindowFocusObserver$Stub;
Landroid/view/WindowId$FocusObserver;->mRegistrations:Ljava/util/HashMap;
@@ -85156,7 +79520,6 @@
Landroid/view/WindowId;-><init>(Landroid/view/IWindowId;)V
Landroid/view/WindowId;->getTarget()Landroid/view/IWindowId;
Landroid/view/WindowId;->mToken:Landroid/view/IWindowId;
-Landroid/view/WindowInfo;
Landroid/view/WindowInfo;-><init>()V
Landroid/view/WindowInfo;->accessibilityIdOfAnchor:J
Landroid/view/WindowInfo;->activityToken:Landroid/os/IBinder;
@@ -85203,7 +79566,6 @@
Landroid/view/WindowInsets;->mWindowDecorInsetsConsumed:Z
Landroid/view/WindowInsets;->replaceWindowDecorInsets(IIII)Landroid/view/WindowInsets;
Landroid/view/WindowInsets;->shouldAlwaysConsumeNavBar()Z
-Landroid/view/WindowLayoutParamsProto;
Landroid/view/WindowLayoutParamsProto;-><init>()V
Landroid/view/WindowLayoutParamsProto;->ALPHA:J
Landroid/view/WindowLayoutParamsProto;->BUTTON_BRIGHTNESS:J
@@ -85238,11 +79600,7 @@
Landroid/view/WindowLayoutParamsProto;->WINDOW_ANIMATIONS:J
Landroid/view/WindowLayoutParamsProto;->X:J
Landroid/view/WindowLayoutParamsProto;->Y:J
-Landroid/view/WindowLeaked;
-Landroid/view/WindowManager$KeyboardShortcutsReceiver;
Landroid/view/WindowManager$KeyboardShortcutsReceiver;->onKeyboardShortcutsReceived(Ljava/util/List;)V
-Landroid/view/WindowManager$LayoutParams$LayoutInDisplayCutoutMode;
-Landroid/view/WindowManager$LayoutParams$SoftInputModeFlags;
Landroid/view/WindowManager$LayoutParams;->accessibilityIdOfAnchor:J
Landroid/view/WindowManager$LayoutParams;->ACCESSIBILITY_ANCHOR_CHANGED:I
Landroid/view/WindowManager$LayoutParams;->BUTTON_BRIGHTNESS_CHANGED:I
@@ -85318,8 +79676,6 @@
Landroid/view/WindowManager$LayoutParams;->TYPE_VOLUME_OVERLAY:I
Landroid/view/WindowManager$LayoutParams;->USER_ACTIVITY_TIMEOUT_CHANGED:I
Landroid/view/WindowManager$LayoutParams;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-Landroid/view/WindowManager$TransitionFlags;
-Landroid/view/WindowManager$TransitionType;
Landroid/view/WindowManager;->DOCKED_BOTTOM:I
Landroid/view/WindowManager;->DOCKED_INVALID:I
Landroid/view/WindowManager;->DOCKED_LEFT:I
@@ -85359,7 +79715,6 @@
Landroid/view/WindowManager;->TRANSIT_WALLPAPER_INTRA_CLOSE:I
Landroid/view/WindowManager;->TRANSIT_WALLPAPER_INTRA_OPEN:I
Landroid/view/WindowManager;->TRANSIT_WALLPAPER_OPEN:I
-Landroid/view/WindowManagerGlobal;
Landroid/view/WindowManagerGlobal;-><init>()V
Landroid/view/WindowManagerGlobal;->addView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;Landroid/view/Display;Landroid/view/Window;)V
Landroid/view/WindowManagerGlobal;->ADD_APP_EXITING:I
@@ -85403,7 +79758,6 @@
Landroid/view/WindowManagerGlobal;->TAG:Ljava/lang/String;
Landroid/view/WindowManagerGlobal;->trimForeground()V
Landroid/view/WindowManagerGlobal;->updateViewLayout(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V
-Landroid/view/WindowManagerImpl;
Landroid/view/WindowManagerImpl;-><init>(Landroid/content/Context;)V
Landroid/view/WindowManagerImpl;-><init>(Landroid/content/Context;Landroid/view/Window;)V
Landroid/view/WindowManagerImpl;->applyDefaultToken(Landroid/view/ViewGroup$LayoutParams;)V
@@ -85414,10 +79768,8 @@
Landroid/view/WindowManagerImpl;->mParentWindow:Landroid/view/Window;
Landroid/view/WindowManagerImpl;->requestAppKeyboardShortcuts(Landroid/view/WindowManager$KeyboardShortcutsReceiver;I)V
Landroid/view/WindowManagerImpl;->setDefaultToken(Landroid/os/IBinder;)V
-Landroid/view/WindowManagerPolicyConstants$PointerEventListener;
Landroid/view/WindowManagerPolicyConstants$PointerEventListener;->onPointerEvent(Landroid/view/MotionEvent;)V
Landroid/view/WindowManagerPolicyConstants$PointerEventListener;->onPointerEvent(Landroid/view/MotionEvent;I)V
-Landroid/view/WindowManagerPolicyConstants;
Landroid/view/WindowManagerPolicyConstants;->ACTION_HDMI_PLUGGED:Ljava/lang/String;
Landroid/view/WindowManagerPolicyConstants;->ACTION_USER_ACTIVITY_NOTIFICATION:Ljava/lang/String;
Landroid/view/WindowManagerPolicyConstants;->APPLICATION_ABOVE_SUB_PANEL_SUBLAYER:I
@@ -85448,11 +79800,8 @@
Landroid/view/WindowManagerPolicyConstants;->OFF_BECAUSE_OF_USER:I
Landroid/view/WindowManagerPolicyConstants;->PRESENCE_EXTERNAL:I
Landroid/view/WindowManagerPolicyConstants;->PRESENCE_INTERNAL:I
-Landroid/webkit/CacheManager$CacheResult;
Landroid/webkit/CacheManager$CacheResult;->setContentLength(J)V
-Landroid/webkit/CacheManager;
Landroid/webkit/CacheManager;-><init>()V
-Landroid/webkit/ConsoleMessage$MessageLevel;-><init>()V
Landroid/webkit/CookieSyncManager;-><init>()V
Landroid/webkit/CookieSyncManager;->checkInstanceIsAllowed()V
Landroid/webkit/CookieSyncManager;->setGetInstanceIsAllowed()V
@@ -85464,7 +79813,6 @@
Landroid/webkit/DateSorter;->mBins:[J
Landroid/webkit/DateSorter;->mLabels:[Ljava/lang/String;
Landroid/webkit/DateSorter;->NUM_DAYS_AGO:I
-Landroid/webkit/EventLogTags;
Landroid/webkit/EventLogTags;-><init>()V
Landroid/webkit/EventLogTags;->BROWSER_DOUBLE_TAP_DURATION:I
Landroid/webkit/EventLogTags;->BROWSER_SNAP_CENTER:I
@@ -85488,7 +79836,6 @@
Landroid/webkit/FindActionModeCallback;->mResources:Landroid/content/res/Resources;
Landroid/webkit/FindActionModeCallback;->mWebView:Landroid/webkit/WebView;
Landroid/webkit/FindActionModeCallback;->updateMatchesString()V
-Landroid/webkit/IWebViewUpdateService$Stub$Proxy;
Landroid/webkit/IWebViewUpdateService$Stub$Proxy;->changeProviderAndSetting(Ljava/lang/String;)Ljava/lang/String;
Landroid/webkit/IWebViewUpdateService$Stub$Proxy;->enableFallbackLogic(Z)V
Landroid/webkit/IWebViewUpdateService$Stub$Proxy;->enableMultiProcess(Z)V
@@ -85501,7 +79848,6 @@
Landroid/webkit/IWebViewUpdateService$Stub$Proxy;->isMultiProcessEnabled()Z
Landroid/webkit/IWebViewUpdateService$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Landroid/webkit/IWebViewUpdateService$Stub$Proxy;->notifyRelroCreationCompleted()V
-Landroid/webkit/IWebViewUpdateService$Stub;
Landroid/webkit/IWebViewUpdateService$Stub;-><init>()V
Landroid/webkit/IWebViewUpdateService$Stub;->DESCRIPTOR:Ljava/lang/String;
Landroid/webkit/IWebViewUpdateService$Stub;->TRANSACTION_changeProviderAndSetting:I
@@ -85515,7 +79861,6 @@
Landroid/webkit/IWebViewUpdateService$Stub;->TRANSACTION_isMultiProcessEnabled:I
Landroid/webkit/IWebViewUpdateService$Stub;->TRANSACTION_notifyRelroCreationCompleted:I
Landroid/webkit/IWebViewUpdateService$Stub;->TRANSACTION_waitForAndGetProvider:I
-Landroid/webkit/IWebViewUpdateService;
Landroid/webkit/IWebViewUpdateService;->changeProviderAndSetting(Ljava/lang/String;)Ljava/lang/String;
Landroid/webkit/IWebViewUpdateService;->enableFallbackLogic(Z)V
Landroid/webkit/IWebViewUpdateService;->enableMultiProcess(Z)V
@@ -85524,10 +79869,6 @@
Landroid/webkit/IWebViewUpdateService;->isMultiProcessEnabled()Z
Landroid/webkit/IWebViewUpdateService;->notifyRelroCreationCompleted()V
Landroid/webkit/IWebViewUpdateService;->waitForAndGetProvider()Landroid/webkit/WebViewProviderResponse;
-Landroid/webkit/JsDialogHelper$CancelListener;
-Landroid/webkit/JsDialogHelper$CancelListener;-><init>()V
-Landroid/webkit/JsDialogHelper$PositiveListener;
-Landroid/webkit/JsDialogHelper$PositiveListener;-><init>(Landroid/widget/EditText;)V
Landroid/webkit/JsDialogHelper$PositiveListener;->mEdit:Landroid/widget/EditText;
Landroid/webkit/JsDialogHelper;->canShowAlertDialog(Landroid/content/Context;)Z
Landroid/webkit/JsDialogHelper;->getJsDialogTitle(Landroid/content/Context;)Ljava/lang/String;
@@ -85544,13 +79885,9 @@
Landroid/webkit/MimeTypeMap;->mimeTypeFromExtension(Ljava/lang/String;)Ljava/lang/String;
Landroid/webkit/MimeTypeMap;->remapGenericMimeType(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
Landroid/webkit/MimeTypeMap;->sMimeTypeMap:Landroid/webkit/MimeTypeMap;
-Landroid/webkit/Plugin$DefaultClickHandler;
-Landroid/webkit/Plugin$DefaultClickHandler;-><init>()V
Landroid/webkit/Plugin$DefaultClickHandler;->handleClickEvent(Landroid/content/Context;)V
Landroid/webkit/Plugin$DefaultClickHandler;->mDialog:Landroid/app/AlertDialog;
-Landroid/webkit/Plugin$PreferencesClickHandler;
Landroid/webkit/Plugin$PreferencesClickHandler;->handleClickEvent(Landroid/content/Context;)V
-Landroid/webkit/Plugin;
Landroid/webkit/Plugin;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
Landroid/webkit/Plugin;->dispatchClickEvent(Landroid/content/Context;)V
Landroid/webkit/Plugin;->getDescription()Ljava/lang/String;
@@ -85567,12 +79904,10 @@
Landroid/webkit/Plugin;->setFileName(Ljava/lang/String;)V
Landroid/webkit/Plugin;->setName(Ljava/lang/String;)V
Landroid/webkit/Plugin;->setPath(Ljava/lang/String;)V
-Landroid/webkit/PluginData;
Landroid/webkit/PluginData;->mContentLength:J
Landroid/webkit/PluginData;->mHeaders:Ljava/util/Map;
Landroid/webkit/PluginData;->mStatusCode:I
Landroid/webkit/PluginData;->mStream:Ljava/io/InputStream;
-Landroid/webkit/PluginList;
Landroid/webkit/PluginList;-><init>()V
Landroid/webkit/PluginList;->addPlugin(Landroid/webkit/Plugin;)V
Landroid/webkit/PluginList;->clear()V
@@ -85583,14 +79918,10 @@
Landroid/webkit/TracingConfig$Builder;->mCustomIncludedCategories:Ljava/util/List;
Landroid/webkit/TracingConfig$Builder;->mPredefinedCategories:I
Landroid/webkit/TracingConfig$Builder;->mTracingMode:I
-Landroid/webkit/TracingConfig$PredefinedCategories;
-Landroid/webkit/TracingConfig$TracingMode;
Landroid/webkit/TracingConfig;-><init>(ILjava/util/List;I)V
Landroid/webkit/TracingConfig;->mCustomIncludedCategories:Ljava/util/List;
Landroid/webkit/TracingConfig;->mPredefinedCategories:I
Landroid/webkit/TracingConfig;->mTracingMode:I
-Landroid/webkit/UrlInterceptHandler;
-Landroid/webkit/UrlInterceptRegistry;
Landroid/webkit/UrlInterceptRegistry;-><init>()V
Landroid/webkit/UrlInterceptRegistry;->getHandlers()Ljava/util/LinkedList;
Landroid/webkit/UrlInterceptRegistry;->getSurrogate(Ljava/lang/String;Ljava/util/Map;)Landroid/webkit/CacheManager$CacheResult;
@@ -85607,7 +79938,6 @@
Landroid/webkit/URLUtil;->PROXY_BASE:Ljava/lang/String;
Landroid/webkit/URLUtil;->RESOURCE_BASE:Ljava/lang/String;
Landroid/webkit/URLUtil;->TRACE:Z
-Landroid/webkit/UserPackage;
Landroid/webkit/UserPackage;-><init>(Landroid/content/pm/UserInfo;Landroid/content/pm/PackageInfo;)V
Landroid/webkit/UserPackage;->getAllUsers(Landroid/content/Context;)Ljava/util/List;
Landroid/webkit/UserPackage;->getPackageInfo()Landroid/content/pm/PackageInfo;
@@ -85628,19 +79958,11 @@
Landroid/webkit/WebResourceResponse;->mMimeType:Ljava/lang/String;
Landroid/webkit/WebResourceResponse;->mReasonPhrase:Ljava/lang/String;
Landroid/webkit/WebResourceResponse;->mResponseHeaders:Ljava/util/Map;
-Landroid/webkit/WebSettings$CacheMode;
-Landroid/webkit/WebSettings$LayoutAlgorithm;-><init>()V
-Landroid/webkit/WebSettings$MenuItemFlags;
-Landroid/webkit/WebSettings$PluginState;-><init>()V
-Landroid/webkit/WebSettings$RenderPriority;-><init>()V
-Landroid/webkit/WebSettings$TextSize;-><init>(I)V
-Landroid/webkit/WebSettings$ZoomDensity;-><init>(I)V
Landroid/webkit/WebSettings$ZoomDensity;->getValue()I
Landroid/webkit/WebSettings$ZoomDensity;->value:I
Landroid/webkit/WebStorage$Origin;->mOrigin:Ljava/lang/String;
Landroid/webkit/WebStorage$Origin;->mQuota:J
Landroid/webkit/WebStorage$Origin;->mUsage:J
-Landroid/webkit/WebSyncManager;
Landroid/webkit/WebSyncManager;-><init>(Landroid/content/Context;Ljava/lang/String;)V
Landroid/webkit/WebSyncManager;->LOGTAG:Ljava/lang/String;
Landroid/webkit/WebSyncManager;->mDataBase:Landroid/webkit/WebViewDatabase;
@@ -85649,13 +79971,10 @@
Landroid/webkit/WebSyncManager;->startSync()V
Landroid/webkit/WebSyncManager;->stopSync()V
Landroid/webkit/WebSyncManager;->sync()V
-Landroid/webkit/WebView$FindListenerDistributor;
-Landroid/webkit/WebView$FindListenerDistributor;-><init>()V
Landroid/webkit/WebView$FindListenerDistributor;->mFindDialogFindListener:Landroid/webkit/WebView$FindListener;
Landroid/webkit/WebView$FindListenerDistributor;->mUserFindListener:Landroid/webkit/WebView$FindListener;
Landroid/webkit/WebView$HitTestResult;->mExtra:Ljava/lang/String;
Landroid/webkit/WebView$HitTestResult;->mType:I
-Landroid/webkit/WebView$RendererPriority;
Landroid/webkit/WebView$WebViewTransport;->mWebview:Landroid/webkit/WebView;
Landroid/webkit/WebView;->dumpViewHierarchyWithProperties(Ljava/io/BufferedWriter;I)V
Landroid/webkit/WebView;->encodeProperties(Landroid/view/ViewHierarchyEncoder;)V
@@ -85671,10 +79990,8 @@
Landroid/webkit/WebView;->performAccessibilityActionInternal(ILandroid/os/Bundle;)Z
Landroid/webkit/WebView;->setFindDialogFindListener(Landroid/webkit/WebView$FindListener;)V
Landroid/webkit/WebView;->setupFindListenerIfNeeded()V
-Landroid/webkit/WebViewClient$SafeBrowsingThreat;
Landroid/webkit/WebViewClient;->onUnhandledInputEventInternal(Landroid/webkit/WebView;Landroid/view/InputEvent;)V
Landroid/webkit/WebViewDatabase;->LOGTAG:Ljava/lang/String;
-Landroid/webkit/WebViewFactory$MissingWebViewPackageException;
Landroid/webkit/WebViewFactory$MissingWebViewPackageException;-><init>(Ljava/lang/Exception;)V
Landroid/webkit/WebViewFactory$MissingWebViewPackageException;-><init>(Ljava/lang/String;)V
Landroid/webkit/WebViewFactory;->CHROMIUM_WEBVIEW_FACTORY:Ljava/lang/String;
@@ -85700,14 +80017,11 @@
Landroid/webkit/WebViewFactory;->WEBVIEW_UPDATE_SERVICE_NAME:Ljava/lang/String;
Landroid/webkit/WebViewFragment;->mIsWebViewAvailable:Z
Landroid/webkit/WebViewFragment;->mWebView:Landroid/webkit/WebView;
-Landroid/webkit/WebViewLibraryLoader$RelroFileCreator;
Landroid/webkit/WebViewLibraryLoader$RelroFileCreator;-><init>()V
Landroid/webkit/WebViewLibraryLoader$RelroFileCreator;->main([Ljava/lang/String;)V
-Landroid/webkit/WebViewLibraryLoader$WebViewNativeLibrary;
Landroid/webkit/WebViewLibraryLoader$WebViewNativeLibrary;-><init>(Ljava/lang/String;J)V
Landroid/webkit/WebViewLibraryLoader$WebViewNativeLibrary;->path:Ljava/lang/String;
Landroid/webkit/WebViewLibraryLoader$WebViewNativeLibrary;->size:J
-Landroid/webkit/WebViewLibraryLoader;
Landroid/webkit/WebViewLibraryLoader;-><init>()V
Landroid/webkit/WebViewLibraryLoader;->CHROMIUM_WEBVIEW_DEFAULT_VMSIZE_BYTES:J
Landroid/webkit/WebViewLibraryLoader;->CHROMIUM_WEBVIEW_NATIVE_RELRO_32:Ljava/lang/String;
@@ -85729,13 +80043,11 @@
Landroid/webkit/WebViewLibraryLoader;->sAddressSpaceReserved:Z
Landroid/webkit/WebViewLibraryLoader;->setWebViewZygoteVmSize(J)V
Landroid/webkit/WebViewLibraryLoader;->updateWebViewZygoteVmSize(Landroid/webkit/WebViewLibraryLoader$WebViewNativeLibrary;Landroid/webkit/WebViewLibraryLoader$WebViewNativeLibrary;)V
-Landroid/webkit/WebViewProviderResponse;
Landroid/webkit/WebViewProviderResponse;-><init>(Landroid/content/pm/PackageInfo;I)V
Landroid/webkit/WebViewProviderResponse;-><init>(Landroid/os/Parcel;)V
Landroid/webkit/WebViewProviderResponse;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/webkit/WebViewProviderResponse;->status:I
Landroid/webkit/WebViewUpdateService;->getUpdateService()Landroid/webkit/IWebViewUpdateService;
-Landroid/webkit/WebViewZygote;
Landroid/webkit/WebViewZygote;-><init>()V
Landroid/webkit/WebViewZygote;->connectToZygoteIfNeededLocked()V
Landroid/webkit/WebViewZygote;->getPackageName()Ljava/lang/String;
@@ -85750,29 +80062,18 @@
Landroid/webkit/WebViewZygote;->sPackageOriginalAppInfo:Landroid/content/pm/ApplicationInfo;
Landroid/webkit/WebViewZygote;->stopZygoteLocked()V
Landroid/webkit/WebViewZygote;->sZygote:Landroid/os/ChildZygoteProcess;
-Landroid/widget/AbsListView$AbsPositionScroller;
Landroid/widget/AbsListView$AbsPositionScroller;-><init>()V
Landroid/widget/AbsListView$AbsPositionScroller;->start(I)V
Landroid/widget/AbsListView$AbsPositionScroller;->start(II)V
Landroid/widget/AbsListView$AbsPositionScroller;->startWithOffset(II)V
Landroid/widget/AbsListView$AbsPositionScroller;->startWithOffset(III)V
Landroid/widget/AbsListView$AbsPositionScroller;->stop()V
-Landroid/widget/AbsListView$AdapterDataSetObserver;
-Landroid/widget/AbsListView$AdapterDataSetObserver;-><init>()V
-Landroid/widget/AbsListView$CheckForKeyLongPress;
-Landroid/widget/AbsListView$CheckForKeyLongPress;-><init>()V
-Landroid/widget/AbsListView$CheckForLongPress;
-Landroid/widget/AbsListView$CheckForLongPress;-><init>()V
Landroid/widget/AbsListView$CheckForLongPress;->INVALID_COORD:I
Landroid/widget/AbsListView$CheckForLongPress;->mX:F
Landroid/widget/AbsListView$CheckForLongPress;->mY:F
Landroid/widget/AbsListView$CheckForLongPress;->setCoords(FF)V
-Landroid/widget/AbsListView$CheckForTap;
-Landroid/widget/AbsListView$CheckForTap;-><init>()V
Landroid/widget/AbsListView$CheckForTap;->x:F
Landroid/widget/AbsListView$CheckForTap;->y:F
-Landroid/widget/AbsListView$FlingRunnable;
-Landroid/widget/AbsListView$FlingRunnable;-><init>()V
Landroid/widget/AbsListView$FlingRunnable;->edgeReached(I)V
Landroid/widget/AbsListView$FlingRunnable;->flywheelTouch()V
Landroid/widget/AbsListView$FlingRunnable;->FLYWHEEL_TIMEOUT:I
@@ -85782,8 +80083,6 @@
Landroid/widget/AbsListView$FlingRunnable;->startOverfling(I)V
Landroid/widget/AbsListView$FlingRunnable;->startScroll(IIZZ)V
Landroid/widget/AbsListView$FlingRunnable;->startSpringback()V
-Landroid/widget/AbsListView$InputConnectionWrapper;
-Landroid/widget/AbsListView$InputConnectionWrapper;-><init>(Landroid/view/inputmethod/EditorInfo;)V
Landroid/widget/AbsListView$InputConnectionWrapper;->getTarget()Landroid/view/inputmethod/InputConnection;
Landroid/widget/AbsListView$InputConnectionWrapper;->mOutAttrs:Landroid/view/inputmethod/EditorInfo;
Landroid/widget/AbsListView$InputConnectionWrapper;->mTarget:Landroid/view/inputmethod/InputConnection;
@@ -85792,18 +80091,10 @@
Landroid/widget/AbsListView$LayoutParams;->isEnabled:Z
Landroid/widget/AbsListView$LayoutParams;->itemId:J
Landroid/widget/AbsListView$LayoutParams;->recycledHeaderFooter:Z
-Landroid/widget/AbsListView$ListItemAccessibilityDelegate;
-Landroid/widget/AbsListView$ListItemAccessibilityDelegate;-><init>()V
-Landroid/widget/AbsListView$MultiChoiceModeWrapper;
-Landroid/widget/AbsListView$MultiChoiceModeWrapper;-><init>()V
Landroid/widget/AbsListView$MultiChoiceModeWrapper;->hasWrappedCallback()Z
Landroid/widget/AbsListView$MultiChoiceModeWrapper;->mWrapped:Landroid/widget/AbsListView$MultiChoiceModeListener;
Landroid/widget/AbsListView$MultiChoiceModeWrapper;->setWrapped(Landroid/widget/AbsListView$MultiChoiceModeListener;)V
-Landroid/widget/AbsListView$PerformClick;
-Landroid/widget/AbsListView$PerformClick;-><init>()V
Landroid/widget/AbsListView$PerformClick;->mClickMotionPosition:I
-Landroid/widget/AbsListView$PositionScroller;
-Landroid/widget/AbsListView$PositionScroller;-><init>()V
Landroid/widget/AbsListView$PositionScroller;->mBoundPos:I
Landroid/widget/AbsListView$PositionScroller;->mExtraScroll:I
Landroid/widget/AbsListView$PositionScroller;->mLastSeenPos:I
@@ -85823,8 +80114,6 @@
Landroid/widget/AbsListView$PositionScroller;->startWithOffset(II)V
Landroid/widget/AbsListView$PositionScroller;->startWithOffset(III)V
Landroid/widget/AbsListView$PositionScroller;->stop()V
-Landroid/widget/AbsListView$RecycleBin;
-Landroid/widget/AbsListView$RecycleBin;-><init>()V
Landroid/widget/AbsListView$RecycleBin;->addScrapView(Landroid/view/View;I)V
Landroid/widget/AbsListView$RecycleBin;->clearScrap(Ljava/util/ArrayList;)V
Landroid/widget/AbsListView$RecycleBin;->clearScrapForRebind(Landroid/view/View;)V
@@ -85853,7 +80142,6 @@
Landroid/widget/AbsListView$RecycleBin;->setCacheColorHint(I)V
Landroid/widget/AbsListView$RecycleBin;->setViewTypeCount(I)V
Landroid/widget/AbsListView$RecycleBin;->shouldRecycleViewType(I)Z
-Landroid/widget/AbsListView$SavedState;
Landroid/widget/AbsListView$SavedState;-><init>(Landroid/os/Parcel;)V
Landroid/widget/AbsListView$SavedState;-><init>(Landroid/os/Parcelable;)V
Landroid/widget/AbsListView$SavedState;->checkedItemCount:I
@@ -85865,8 +80153,6 @@
Landroid/widget/AbsListView$SavedState;->inActionMode:Z
Landroid/widget/AbsListView$SavedState;->position:I
Landroid/widget/AbsListView$SavedState;->selectedId:J
-Landroid/widget/AbsListView$WindowRunnnable;
-Landroid/widget/AbsListView$WindowRunnnable;-><init>()V
Landroid/widget/AbsListView$WindowRunnnable;->mOriginalAttachCount:I
Landroid/widget/AbsListView$WindowRunnnable;->rememberWindowAttachCount()V
Landroid/widget/AbsListView$WindowRunnnable;->sameWindow()Z
@@ -86076,13 +80362,10 @@
Landroid/widget/AbsSeekBar;->setThumbPos(ILandroid/graphics/drawable/Drawable;FI)V
Landroid/widget/AbsSeekBar;->startDrag(Landroid/view/MotionEvent;)V
Landroid/widget/AbsSeekBar;->updateThumbAndTrackPos(II)V
-Landroid/widget/AbsSpinner$RecycleBin;
-Landroid/widget/AbsSpinner$RecycleBin;-><init>()V
Landroid/widget/AbsSpinner$RecycleBin;->clear()V
Landroid/widget/AbsSpinner$RecycleBin;->get(I)Landroid/view/View;
Landroid/widget/AbsSpinner$RecycleBin;->mScrapHeap:Landroid/util/SparseArray;
Landroid/widget/AbsSpinner$RecycleBin;->put(ILandroid/view/View;)V
-Landroid/widget/AbsSpinner$SavedState;
Landroid/widget/AbsSpinner$SavedState;-><init>(Landroid/os/Parcel;)V
Landroid/widget/AbsSpinner$SavedState;-><init>(Landroid/os/Parcelable;)V
Landroid/widget/AbsSpinner$SavedState;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -86107,13 +80390,8 @@
Landroid/widget/AbsSpinner;->recycleAllViews()V
Landroid/widget/AbsSpinner;->resetList()V
Landroid/widget/AbsSpinner;->setSelectionInt(IZ)V
-Landroid/widget/ActionMenuPresenter$ActionButtonSubmenu;
-Landroid/widget/ActionMenuPresenter$ActionButtonSubmenu;-><init>(Landroid/content/Context;Lcom/android/internal/view/menu/SubMenuBuilder;Landroid/view/View;)V
Landroid/widget/ActionMenuPresenter$ActionButtonSubmenu;->onDismiss()V
-Landroid/widget/ActionMenuPresenter$ActionMenuPopupCallback;
-Landroid/widget/ActionMenuPresenter$ActionMenuPopupCallback;-><init>()V
Landroid/widget/ActionMenuPresenter$ActionMenuPopupCallback;->getPopup()Lcom/android/internal/view/menu/ShowableListMenu;
-Landroid/widget/ActionMenuPresenter$ItemAnimationInfo;
Landroid/widget/ActionMenuPresenter$ItemAnimationInfo;-><init>(ILandroid/widget/ActionMenuPresenter$MenuItemLayoutInfo;Landroid/animation/Animator;I)V
Landroid/widget/ActionMenuPresenter$ItemAnimationInfo;->animator:Landroid/animation/Animator;
Landroid/widget/ActionMenuPresenter$ItemAnimationInfo;->animType:I
@@ -86122,32 +80400,21 @@
Landroid/widget/ActionMenuPresenter$ItemAnimationInfo;->id:I
Landroid/widget/ActionMenuPresenter$ItemAnimationInfo;->menuItemLayoutInfo:Landroid/widget/ActionMenuPresenter$MenuItemLayoutInfo;
Landroid/widget/ActionMenuPresenter$ItemAnimationInfo;->MOVE:I
-Landroid/widget/ActionMenuPresenter$MenuItemLayoutInfo;
Landroid/widget/ActionMenuPresenter$MenuItemLayoutInfo;-><init>(Landroid/view/View;Z)V
Landroid/widget/ActionMenuPresenter$MenuItemLayoutInfo;->left:I
Landroid/widget/ActionMenuPresenter$MenuItemLayoutInfo;->top:I
Landroid/widget/ActionMenuPresenter$MenuItemLayoutInfo;->view:Landroid/view/View;
-Landroid/widget/ActionMenuPresenter$OpenOverflowRunnable;
-Landroid/widget/ActionMenuPresenter$OpenOverflowRunnable;-><init>(Landroid/widget/ActionMenuPresenter$OverflowPopup;)V
Landroid/widget/ActionMenuPresenter$OpenOverflowRunnable;->mPopup:Landroid/widget/ActionMenuPresenter$OverflowPopup;
-Landroid/widget/ActionMenuPresenter$OverflowMenuButton;
-Landroid/widget/ActionMenuPresenter$OverflowMenuButton;-><init>(Landroid/content/Context;)V
Landroid/widget/ActionMenuPresenter$OverflowMenuButton;->needsDividerAfter()Z
Landroid/widget/ActionMenuPresenter$OverflowMenuButton;->needsDividerBefore()Z
Landroid/widget/ActionMenuPresenter$OverflowMenuButton;->onInitializeAccessibilityNodeInfoInternal(Landroid/view/accessibility/AccessibilityNodeInfo;)V
-Landroid/widget/ActionMenuPresenter$OverflowPopup;
-Landroid/widget/ActionMenuPresenter$OverflowPopup;-><init>(Landroid/content/Context;Lcom/android/internal/view/menu/MenuBuilder;Landroid/view/View;Z)V
Landroid/widget/ActionMenuPresenter$OverflowPopup;->onDismiss()V
-Landroid/widget/ActionMenuPresenter$PopupPresenterCallback;
-Landroid/widget/ActionMenuPresenter$PopupPresenterCallback;-><init>()V
Landroid/widget/ActionMenuPresenter$PopupPresenterCallback;->onCloseMenu(Lcom/android/internal/view/menu/MenuBuilder;Z)V
Landroid/widget/ActionMenuPresenter$PopupPresenterCallback;->onOpenSubMenu(Lcom/android/internal/view/menu/MenuBuilder;)Z
-Landroid/widget/ActionMenuPresenter$SavedState;
Landroid/widget/ActionMenuPresenter$SavedState;-><init>()V
Landroid/widget/ActionMenuPresenter$SavedState;-><init>(Landroid/os/Parcel;)V
Landroid/widget/ActionMenuPresenter$SavedState;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/widget/ActionMenuPresenter$SavedState;->openSubMenuId:I
-Landroid/widget/ActionMenuPresenter;
Landroid/widget/ActionMenuPresenter;-><init>(Landroid/content/Context;)V
Landroid/widget/ActionMenuPresenter;->ACTIONBAR_ANIMATIONS_ENABLED:Z
Landroid/widget/ActionMenuPresenter;->bindItemView(Lcom/android/internal/view/menu/MenuItemImpl;Lcom/android/internal/view/menu/MenuView$ItemView;)V
@@ -86204,16 +80471,11 @@
Landroid/widget/ActionMenuPresenter;->shouldIncludeItem(ILcom/android/internal/view/menu/MenuItemImpl;)Z
Landroid/widget/ActionMenuPresenter;->showOverflowMenu()Z
Landroid/widget/ActionMenuPresenter;->updateMenuView(Z)V
-Landroid/widget/ActionMenuView$ActionMenuChildView;
Landroid/widget/ActionMenuView$ActionMenuChildView;->needsDividerAfter()Z
-Landroid/widget/ActionMenuView$ActionMenuPresenterCallback;
-Landroid/widget/ActionMenuView$ActionMenuPresenterCallback;-><init>()V
Landroid/widget/ActionMenuView$ActionMenuPresenterCallback;->onCloseMenu(Lcom/android/internal/view/menu/MenuBuilder;Z)V
Landroid/widget/ActionMenuView$ActionMenuPresenterCallback;->onOpenSubMenu(Lcom/android/internal/view/menu/MenuBuilder;)Z
Landroid/widget/ActionMenuView$LayoutParams;-><init>(IIZ)V
Landroid/widget/ActionMenuView$LayoutParams;->encodeProperties(Landroid/view/ViewHierarchyEncoder;)V
-Landroid/widget/ActionMenuView$MenuBuilderCallback;
-Landroid/widget/ActionMenuView$MenuBuilderCallback;-><init>()V
Landroid/widget/ActionMenuView$MenuBuilderCallback;->onMenuItemSelected(Lcom/android/internal/view/menu/MenuBuilder;Landroid/view/MenuItem;)Z
Landroid/widget/ActionMenuView$MenuBuilderCallback;->onMenuModeChange(Lcom/android/internal/view/menu/MenuBuilder;)V
Landroid/widget/ActionMenuView;->dispatchPopulateAccessibilityEventInternal(Landroid/view/accessibility/AccessibilityEvent;)Z
@@ -86240,35 +80502,21 @@
Landroid/widget/ActionMenuView;->setOverflowReserved(Z)V
Landroid/widget/ActionMenuView;->setPresenter(Landroid/widget/ActionMenuPresenter;)V
Landroid/widget/ActionMenuView;->TAG:Ljava/lang/String;
-Landroid/widget/ActivityChooserModel$ActivityChooserModelClient;
Landroid/widget/ActivityChooserModel$ActivityChooserModelClient;->setActivityChooserModel(Landroid/widget/ActivityChooserModel;)V
-Landroid/widget/ActivityChooserModel$ActivityResolveInfo;
-Landroid/widget/ActivityChooserModel$ActivityResolveInfo;-><init>(Landroid/content/pm/ResolveInfo;)V
Landroid/widget/ActivityChooserModel$ActivityResolveInfo;->compareTo(Landroid/widget/ActivityChooserModel$ActivityResolveInfo;)I
Landroid/widget/ActivityChooserModel$ActivityResolveInfo;->resolveInfo:Landroid/content/pm/ResolveInfo;
Landroid/widget/ActivityChooserModel$ActivityResolveInfo;->weight:F
-Landroid/widget/ActivityChooserModel$ActivitySorter;
Landroid/widget/ActivityChooserModel$ActivitySorter;->sort(Landroid/content/Intent;Ljava/util/List;Ljava/util/List;)V
-Landroid/widget/ActivityChooserModel$DataModelPackageMonitor;
-Landroid/widget/ActivityChooserModel$DataModelPackageMonitor;-><init>()V
Landroid/widget/ActivityChooserModel$DataModelPackageMonitor;->onSomePackagesChanged()V
-Landroid/widget/ActivityChooserModel$DefaultSorter;
-Landroid/widget/ActivityChooserModel$DefaultSorter;-><init>()V
Landroid/widget/ActivityChooserModel$DefaultSorter;->mPackageNameToActivityMap:Ljava/util/Map;
Landroid/widget/ActivityChooserModel$DefaultSorter;->sort(Landroid/content/Intent;Ljava/util/List;Ljava/util/List;)V
Landroid/widget/ActivityChooserModel$DefaultSorter;->WEIGHT_DECAY_COEFFICIENT:F
-Landroid/widget/ActivityChooserModel$HistoricalRecord;
Landroid/widget/ActivityChooserModel$HistoricalRecord;-><init>(Landroid/content/ComponentName;JF)V
Landroid/widget/ActivityChooserModel$HistoricalRecord;-><init>(Ljava/lang/String;JF)V
Landroid/widget/ActivityChooserModel$HistoricalRecord;->activity:Landroid/content/ComponentName;
Landroid/widget/ActivityChooserModel$HistoricalRecord;->time:J
Landroid/widget/ActivityChooserModel$HistoricalRecord;->weight:F
-Landroid/widget/ActivityChooserModel$OnChooseActivityListener;
Landroid/widget/ActivityChooserModel$OnChooseActivityListener;->onChooseActivity(Landroid/widget/ActivityChooserModel;Landroid/content/Intent;)Z
-Landroid/widget/ActivityChooserModel$PersistHistoryAsyncTask;
-Landroid/widget/ActivityChooserModel$PersistHistoryAsyncTask;-><init>()V
-Landroid/widget/ActivityChooserModel$PersistHistoryAsyncTask;->doInBackground([[Ljava/lang/Object;)Ljava/lang/Void;
-Landroid/widget/ActivityChooserModel;
Landroid/widget/ActivityChooserModel;-><init>(Landroid/content/Context;Ljava/lang/String;)V
Landroid/widget/ActivityChooserModel;->addHisoricalRecord(Landroid/widget/ActivityChooserModel$HistoricalRecord;)Z
Landroid/widget/ActivityChooserModel;->ATTRIBUTE_ACTIVITY:Ljava/lang/String;
@@ -86315,8 +80563,6 @@
Landroid/widget/ActivityChooserModel;->sRegistryLock:Ljava/lang/Object;
Landroid/widget/ActivityChooserModel;->TAG_HISTORICAL_RECORD:Ljava/lang/String;
Landroid/widget/ActivityChooserModel;->TAG_HISTORICAL_RECORDS:Ljava/lang/String;
-Landroid/widget/ActivityChooserView$ActivityChooserViewAdapter;
-Landroid/widget/ActivityChooserView$ActivityChooserViewAdapter;-><init>()V
Landroid/widget/ActivityChooserView$ActivityChooserViewAdapter;->getActivityCount()I
Landroid/widget/ActivityChooserView$ActivityChooserViewAdapter;->getDataModel()Landroid/widget/ActivityChooserModel;
Landroid/widget/ActivityChooserView$ActivityChooserViewAdapter;->getDefaultActivity()Landroid/content/pm/ResolveInfo;
@@ -86337,11 +80583,8 @@
Landroid/widget/ActivityChooserView$ActivityChooserViewAdapter;->setMaxActivityCount(I)V
Landroid/widget/ActivityChooserView$ActivityChooserViewAdapter;->setShowDefaultActivity(ZZ)V
Landroid/widget/ActivityChooserView$ActivityChooserViewAdapter;->setShowFooterView(Z)V
-Landroid/widget/ActivityChooserView$Callbacks;
-Landroid/widget/ActivityChooserView$Callbacks;-><init>()V
Landroid/widget/ActivityChooserView$Callbacks;->notifyOnDismissListener()V
Landroid/widget/ActivityChooserView$Callbacks;->startActivity(Landroid/content/Intent;Landroid/content/pm/ResolveInfo;)V
-Landroid/widget/ActivityChooserView;
Landroid/widget/ActivityChooserView;-><init>(Landroid/content/Context;)V
Landroid/widget/ActivityChooserView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
Landroid/widget/ActivityChooserView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
@@ -86378,12 +80621,8 @@
Landroid/widget/ActivityChooserView;->showPopup()Z
Landroid/widget/ActivityChooserView;->showPopupUnchecked(I)V
Landroid/widget/ActivityChooserView;->updateAppearance()V
-Landroid/widget/AdapterView$AdapterDataSetObserver;
-Landroid/widget/AdapterView$AdapterDataSetObserver;-><init>()V
Landroid/widget/AdapterView$AdapterDataSetObserver;->clearSavedState()V
Landroid/widget/AdapterView$AdapterDataSetObserver;->mInstanceState:Landroid/os/Parcelable;
-Landroid/widget/AdapterView$SelectionNotifier;
-Landroid/widget/AdapterView$SelectionNotifier;-><init>()V
Landroid/widget/AdapterView;->checkFocus()V
Landroid/widget/AdapterView;->checkSelectionChanged()V
Landroid/widget/AdapterView;->dispatchOnItemSelected()V
@@ -86421,15 +80660,10 @@
Landroid/widget/AdapterView;->SYNC_MAX_DURATION_MILLIS:I
Landroid/widget/AdapterView;->SYNC_SELECTED_POSITION:I
Landroid/widget/AdapterView;->updateEmptyStatus(Z)V
-Landroid/widget/AdapterViewAnimator$CheckForTap;
-Landroid/widget/AdapterViewAnimator$CheckForTap;-><init>()V
-Landroid/widget/AdapterViewAnimator$SavedState;
Landroid/widget/AdapterViewAnimator$SavedState;-><init>(Landroid/os/Parcel;)V
Landroid/widget/AdapterViewAnimator$SavedState;-><init>(Landroid/os/Parcelable;I)V
Landroid/widget/AdapterViewAnimator$SavedState;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/widget/AdapterViewAnimator$SavedState;->whichChild:I
-Landroid/widget/AdapterViewAnimator$ViewAndMetaData;
-Landroid/widget/AdapterViewAnimator$ViewAndMetaData;-><init>(Landroid/view/View;IIJ)V
Landroid/widget/AdapterViewAnimator$ViewAndMetaData;->adapterPosition:I
Landroid/widget/AdapterViewAnimator$ViewAndMetaData;->itemId:J
Landroid/widget/AdapterViewAnimator$ViewAndMetaData;->relativeIndex:I
@@ -86514,28 +80748,23 @@
Landroid/widget/AnalogClock;->mMinutes:F
Landroid/widget/AnalogClock;->onTimeChanged()V
Landroid/widget/AnalogClock;->updateContentDescription(Landroid/text/format/Time;)V
-Landroid/widget/AppSecurityPermissions$MyPermissionGroupInfo;
Landroid/widget/AppSecurityPermissions$MyPermissionGroupInfo;-><init>(Landroid/content/pm/PermissionGroupInfo;)V
Landroid/widget/AppSecurityPermissions$MyPermissionGroupInfo;-><init>(Landroid/content/pm/PermissionInfo;)V
Landroid/widget/AppSecurityPermissions$MyPermissionGroupInfo;->loadGroupIcon(Landroid/content/Context;Landroid/content/pm/PackageManager;)Landroid/graphics/drawable/Drawable;
Landroid/widget/AppSecurityPermissions$MyPermissionGroupInfo;->mAllPermissions:Ljava/util/ArrayList;
Landroid/widget/AppSecurityPermissions$MyPermissionGroupInfo;->mLabel:Ljava/lang/CharSequence;
Landroid/widget/AppSecurityPermissions$MyPermissionGroupInfo;->mNewPermissions:Ljava/util/ArrayList;
-Landroid/widget/AppSecurityPermissions$MyPermissionInfo;
Landroid/widget/AppSecurityPermissions$MyPermissionInfo;-><init>(Landroid/content/pm/PermissionInfo;)V
Landroid/widget/AppSecurityPermissions$MyPermissionInfo;->mExistingReqFlags:I
Landroid/widget/AppSecurityPermissions$MyPermissionInfo;->mLabel:Ljava/lang/CharSequence;
Landroid/widget/AppSecurityPermissions$MyPermissionInfo;->mNew:Z
Landroid/widget/AppSecurityPermissions$MyPermissionInfo;->mNewReqFlags:I
-Landroid/widget/AppSecurityPermissions$PermissionGroupInfoComparator;
Landroid/widget/AppSecurityPermissions$PermissionGroupInfoComparator;-><init>()V
Landroid/widget/AppSecurityPermissions$PermissionGroupInfoComparator;->compare(Landroid/widget/AppSecurityPermissions$MyPermissionGroupInfo;Landroid/widget/AppSecurityPermissions$MyPermissionGroupInfo;)I
Landroid/widget/AppSecurityPermissions$PermissionGroupInfoComparator;->sCollator:Ljava/text/Collator;
-Landroid/widget/AppSecurityPermissions$PermissionInfoComparator;
Landroid/widget/AppSecurityPermissions$PermissionInfoComparator;-><init>()V
Landroid/widget/AppSecurityPermissions$PermissionInfoComparator;->compare(Landroid/widget/AppSecurityPermissions$MyPermissionInfo;Landroid/widget/AppSecurityPermissions$MyPermissionInfo;)I
Landroid/widget/AppSecurityPermissions$PermissionInfoComparator;->sCollator:Ljava/text/Collator;
-Landroid/widget/AppSecurityPermissions$PermissionItemView;
Landroid/widget/AppSecurityPermissions$PermissionItemView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
Landroid/widget/AppSecurityPermissions$PermissionItemView;->addRevokeUIIfNecessary(Landroid/app/AlertDialog$Builder;)V
Landroid/widget/AppSecurityPermissions$PermissionItemView;->mDialog:Landroid/app/AlertDialog;
@@ -86544,7 +80773,6 @@
Landroid/widget/AppSecurityPermissions$PermissionItemView;->mPerm:Landroid/widget/AppSecurityPermissions$MyPermissionInfo;
Landroid/widget/AppSecurityPermissions$PermissionItemView;->mShowRevokeUI:Z
Landroid/widget/AppSecurityPermissions$PermissionItemView;->setPermission(Landroid/widget/AppSecurityPermissions$MyPermissionGroupInfo;Landroid/widget/AppSecurityPermissions$MyPermissionInfo;ZLjava/lang/CharSequence;Ljava/lang/String;Z)V
-Landroid/widget/AppSecurityPermissions;
Landroid/widget/AppSecurityPermissions;-><init>(Landroid/content/Context;)V
Landroid/widget/AppSecurityPermissions;-><init>(Landroid/content/Context;Landroid/content/pm/PackageInfo;)V
Landroid/widget/AppSecurityPermissions;->addPermToList(Ljava/util/List;Landroid/widget/AppSecurityPermissions$MyPermissionInfo;)V
@@ -86577,8 +80805,6 @@
Landroid/widget/AppSecurityPermissions;->TAG:Ljava/lang/String;
Landroid/widget/AppSecurityPermissions;->WHICH_ALL:I
Landroid/widget/AppSecurityPermissions;->WHICH_NEW:I
-Landroid/widget/ArrayAdapter$ArrayFilter;
-Landroid/widget/ArrayAdapter$ArrayFilter;-><init>()V
Landroid/widget/ArrayAdapter;-><init>(Landroid/content/Context;IILjava/util/List;Z)V
Landroid/widget/ArrayAdapter;->createViewFromResource(Landroid/view/LayoutInflater;ILandroid/view/View;Landroid/view/ViewGroup;I)Landroid/view/View;
Landroid/widget/ArrayAdapter;->mContext:Landroid/content/Context;
@@ -86590,15 +80816,8 @@
Landroid/widget/ArrayAdapter;->mNotifyOnChange:Z
Landroid/widget/ArrayAdapter;->mObjectsFromResources:Z
Landroid/widget/ArrayAdapter;->mResource:I
-Landroid/widget/AutoCompleteTextView$DropDownItemClickListener;
-Landroid/widget/AutoCompleteTextView$DropDownItemClickListener;-><init>()V
Landroid/widget/AutoCompleteTextView$DropDownItemClickListener;->onItemClick(Landroid/widget/AdapterView;Landroid/view/View;IJ)V
-Landroid/widget/AutoCompleteTextView$MyWatcher;
-Landroid/widget/AutoCompleteTextView$MyWatcher;-><init>()V
-Landroid/widget/AutoCompleteTextView$PassThroughClickListener;
-Landroid/widget/AutoCompleteTextView$PassThroughClickListener;-><init>()V
Landroid/widget/AutoCompleteTextView$PassThroughClickListener;->mWrapped:Landroid/view/View$OnClickListener;
-Landroid/widget/AutoCompleteTextView$PopupDataSetObserver;
Landroid/widget/AutoCompleteTextView$PopupDataSetObserver;-><init>(Landroid/widget/AutoCompleteTextView;)V
Landroid/widget/AutoCompleteTextView$PopupDataSetObserver;->mViewReference:Ljava/lang/ref/WeakReference;
Landroid/widget/AutoCompleteTextView$PopupDataSetObserver;->updateRunnable:Ljava/lang/Runnable;
@@ -86629,7 +80848,6 @@
Landroid/widget/AutoCompleteTextView;->updateDropDownForFilter(I)V
Landroid/widget/BaseAdapter;->mAutofillOptions:[Ljava/lang/CharSequence;
Landroid/widget/BaseExpandableListAdapter;->mDataSetObservable:Landroid/database/DataSetObservable;
-Landroid/widget/CalendarView$AbstractCalendarViewDelegate;
Landroid/widget/CalendarView$AbstractCalendarViewDelegate;-><init>(Landroid/widget/CalendarView;Landroid/content/Context;)V
Landroid/widget/CalendarView$AbstractCalendarViewDelegate;->DEFAULT_MAX_DATE:Ljava/lang/String;
Landroid/widget/CalendarView$AbstractCalendarViewDelegate;->DEFAULT_MIN_DATE:Ljava/lang/String;
@@ -86655,7 +80873,6 @@
Landroid/widget/CalendarView$AbstractCalendarViewDelegate;->setUnfocusedMonthDateColor(I)V
Landroid/widget/CalendarView$AbstractCalendarViewDelegate;->setWeekNumberColor(I)V
Landroid/widget/CalendarView$AbstractCalendarViewDelegate;->setWeekSeparatorLineColor(I)V
-Landroid/widget/CalendarView$CalendarViewDelegate;
Landroid/widget/CalendarView$CalendarViewDelegate;->getBoundsForDate(JLandroid/graphics/Rect;)Z
Landroid/widget/CalendarView$CalendarViewDelegate;->getDate()J
Landroid/widget/CalendarView$CalendarViewDelegate;->getDateTextAppearance()I
@@ -86695,7 +80912,6 @@
Landroid/widget/CalendarView;->MODE_HOLO:I
Landroid/widget/CalendarView;->MODE_MATERIAL:I
Landroid/widget/CalendarView;->parseDate(Ljava/lang/String;Landroid/icu/util/Calendar;)Z
-Landroid/widget/CheckedTextView$SavedState;
Landroid/widget/CheckedTextView$SavedState;-><init>(Landroid/os/Parcel;)V
Landroid/widget/CheckedTextView$SavedState;-><init>(Landroid/os/Parcelable;)V
Landroid/widget/CheckedTextView$SavedState;->checked:Z
@@ -86743,7 +80959,6 @@
Landroid/widget/Chronometer;->TAG:Ljava/lang/String;
Landroid/widget/Chronometer;->updateRunning()V
Landroid/widget/Chronometer;->updateText(J)V
-Landroid/widget/CompoundButton$SavedState;
Landroid/widget/CompoundButton$SavedState;-><init>(Landroid/os/Parcel;)V
Landroid/widget/CompoundButton$SavedState;-><init>(Landroid/os/Parcelable;)V
Landroid/widget/CompoundButton$SavedState;->checked:Z
@@ -86764,29 +80979,17 @@
Landroid/widget/CompoundButton;->onInitializeAccessibilityNodeInfoInternal(Landroid/view/accessibility/AccessibilityNodeInfo;)V
Landroid/widget/CompoundButton;->onResolveDrawables(I)V
Landroid/widget/CompoundButton;->setOnCheckedChangeWidgetListener(Landroid/widget/CompoundButton$OnCheckedChangeListener;)V
-Landroid/widget/CursorAdapter$ChangeObserver;
-Landroid/widget/CursorAdapter$ChangeObserver;-><init>()V
-Landroid/widget/CursorAdapter$MyDataSetObserver;
-Landroid/widget/CursorAdapter$MyDataSetObserver;-><init>()V
Landroid/widget/CursorAdapter;->init(Landroid/content/Context;Landroid/database/Cursor;I)V
Landroid/widget/CursorAdapter;->mAutoRequery:Z
Landroid/widget/CursorAdapter;->mCursorFilter:Landroid/widget/CursorFilter;
Landroid/widget/CursorAdapter;->mDropDownContext:Landroid/content/Context;
Landroid/widget/CursorAdapter;->mFilterQueryProvider:Landroid/widget/FilterQueryProvider;
-Landroid/widget/CursorFilter$CursorFilterClient;
Landroid/widget/CursorFilter$CursorFilterClient;->changeCursor(Landroid/database/Cursor;)V
Landroid/widget/CursorFilter$CursorFilterClient;->convertToString(Landroid/database/Cursor;)Ljava/lang/CharSequence;
Landroid/widget/CursorFilter$CursorFilterClient;->getCursor()Landroid/database/Cursor;
Landroid/widget/CursorFilter$CursorFilterClient;->runQueryOnBackgroundThread(Ljava/lang/CharSequence;)Landroid/database/Cursor;
-Landroid/widget/CursorFilter;
Landroid/widget/CursorFilter;-><init>(Landroid/widget/CursorFilter$CursorFilterClient;)V
Landroid/widget/CursorFilter;->mClient:Landroid/widget/CursorFilter$CursorFilterClient;
-Landroid/widget/CursorTreeAdapter$MyCursorHelper$MyContentObserver;
-Landroid/widget/CursorTreeAdapter$MyCursorHelper$MyContentObserver;-><init>()V
-Landroid/widget/CursorTreeAdapter$MyCursorHelper$MyDataSetObserver;
-Landroid/widget/CursorTreeAdapter$MyCursorHelper$MyDataSetObserver;-><init>()V
-Landroid/widget/CursorTreeAdapter$MyCursorHelper;
-Landroid/widget/CursorTreeAdapter$MyCursorHelper;-><init>(Landroid/database/Cursor;)V
Landroid/widget/CursorTreeAdapter$MyCursorHelper;->changeCursor(Landroid/database/Cursor;Z)V
Landroid/widget/CursorTreeAdapter$MyCursorHelper;->deactivate()V
Landroid/widget/CursorTreeAdapter$MyCursorHelper;->getCount()I
@@ -86810,7 +81013,6 @@
Landroid/widget/CursorTreeAdapter;->mGroupCursorHelper:Landroid/widget/CursorTreeAdapter$MyCursorHelper;
Landroid/widget/CursorTreeAdapter;->mHandler:Landroid/os/Handler;
Landroid/widget/CursorTreeAdapter;->releaseCursorHelpers()V
-Landroid/widget/DatePicker$AbstractDatePickerDelegate$SavedState;
Landroid/widget/DatePicker$AbstractDatePickerDelegate$SavedState;-><init>(Landroid/os/Parcel;)V
Landroid/widget/DatePicker$AbstractDatePickerDelegate$SavedState;-><init>(Landroid/os/Parcelable;IIIJJ)V
Landroid/widget/DatePicker$AbstractDatePickerDelegate$SavedState;-><init>(Landroid/os/Parcelable;IIIJJIII)V
@@ -86831,7 +81033,6 @@
Landroid/widget/DatePicker$AbstractDatePickerDelegate$SavedState;->mSelectedDay:I
Landroid/widget/DatePicker$AbstractDatePickerDelegate$SavedState;->mSelectedMonth:I
Landroid/widget/DatePicker$AbstractDatePickerDelegate$SavedState;->mSelectedYear:I
-Landroid/widget/DatePicker$AbstractDatePickerDelegate;
Landroid/widget/DatePicker$AbstractDatePickerDelegate;-><init>(Landroid/widget/DatePicker;Landroid/content/Context;)V
Landroid/widget/DatePicker$AbstractDatePickerDelegate;->autofill(Landroid/view/autofill/AutofillValue;)V
Landroid/widget/DatePicker$AbstractDatePickerDelegate;->getAutofillValue()Landroid/view/autofill/AutofillValue;
@@ -86852,7 +81053,6 @@
Landroid/widget/DatePicker$AbstractDatePickerDelegate;->setCurrentLocale(Ljava/util/Locale;)V
Landroid/widget/DatePicker$AbstractDatePickerDelegate;->setOnDateChangedListener(Landroid/widget/DatePicker$OnDateChangedListener;)V
Landroid/widget/DatePicker$AbstractDatePickerDelegate;->setValidationCallback(Landroid/widget/DatePicker$ValidationCallback;)V
-Landroid/widget/DatePicker$DatePickerDelegate;
Landroid/widget/DatePicker$DatePickerDelegate;->autofill(Landroid/view/autofill/AutofillValue;)V
Landroid/widget/DatePicker$DatePickerDelegate;->dispatchPopulateAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)Z
Landroid/widget/DatePicker$DatePickerDelegate;->getAutofillValue()Landroid/view/autofill/AutofillValue;
@@ -86881,8 +81081,6 @@
Landroid/widget/DatePicker$DatePickerDelegate;->setSpinnersShown(Z)V
Landroid/widget/DatePicker$DatePickerDelegate;->setValidationCallback(Landroid/widget/DatePicker$ValidationCallback;)V
Landroid/widget/DatePicker$DatePickerDelegate;->updateDate(III)V
-Landroid/widget/DatePicker$DatePickerMode;
-Landroid/widget/DatePicker$ValidationCallback;
Landroid/widget/DatePicker$ValidationCallback;->onValidationChanged(Z)V
Landroid/widget/DatePicker;->createCalendarUIDelegate(Landroid/content/Context;Landroid/util/AttributeSet;II)Landroid/widget/DatePicker$DatePickerDelegate;
Landroid/widget/DatePicker;->createSpinnerUIDelegate(Landroid/content/Context;Landroid/util/AttributeSet;II)Landroid/widget/DatePicker$DatePickerDelegate;
@@ -86890,7 +81088,6 @@
Landroid/widget/DatePicker;->LOG_TAG:Ljava/lang/String;
Landroid/widget/DatePicker;->mMode:I
Landroid/widget/DatePicker;->onPopulateAccessibilityEventInternal(Landroid/view/accessibility/AccessibilityEvent;)V
-Landroid/widget/DateTimeView$ReceiverInfo;
Landroid/widget/DateTimeView$ReceiverInfo;-><init>()V
Landroid/widget/DateTimeView$ReceiverInfo;->addView(Landroid/widget/DateTimeView;)V
Landroid/widget/DateTimeView$ReceiverInfo;->getApplicationContextIfAvailable(Landroid/content/Context;)Landroid/content/Context;
@@ -86904,7 +81101,6 @@
Landroid/widget/DateTimeView$ReceiverInfo;->setHandler(Landroid/os/Handler;)V
Landroid/widget/DateTimeView$ReceiverInfo;->unregister(Landroid/content/Context;)V
Landroid/widget/DateTimeView$ReceiverInfo;->updateAll()V
-Landroid/widget/DateTimeView;
Landroid/widget/DateTimeView;-><init>(Landroid/content/Context;)V
Landroid/widget/DateTimeView;->clearFormatAndUpdate()V
Landroid/widget/DateTimeView;->computeNextMidnight(Ljava/util/TimeZone;)J
@@ -86936,8 +81132,6 @@
Landroid/widget/DialerFilter;->mMode:I
Landroid/widget/DialerFilter;->mPrimary:Landroid/widget/EditText;
Landroid/widget/DialerFilter;->swapPrimaryAndHint(Z)V
-Landroid/widget/DigitalClock$FormatChangeObserver;
-Landroid/widget/DigitalClock$FormatChangeObserver;-><init>()V
Landroid/widget/DigitalClock;->initClock()V
Landroid/widget/DigitalClock;->mCalendar:Ljava/util/Calendar;
Landroid/widget/DigitalClock;->mFormat:Ljava/lang/String;
@@ -86946,11 +81140,8 @@
Landroid/widget/DigitalClock;->mTicker:Ljava/lang/Runnable;
Landroid/widget/DigitalClock;->mTickerStopped:Z
Landroid/widget/DigitalClock;->setFormat()V
-Landroid/widget/DropDownListView$ResolveHoverRunnable;
-Landroid/widget/DropDownListView$ResolveHoverRunnable;-><init>()V
Landroid/widget/DropDownListView$ResolveHoverRunnable;->cancel()V
Landroid/widget/DropDownListView$ResolveHoverRunnable;->post()V
-Landroid/widget/DropDownListView;
Landroid/widget/DropDownListView;-><init>(Landroid/content/Context;Z)V
Landroid/widget/DropDownListView;-><init>(Landroid/content/Context;ZI)V
Landroid/widget/DropDownListView;->clearPressedItem()V
@@ -87003,13 +81194,9 @@
Landroid/widget/EdgeEffect;->TAG:Ljava/lang/String;
Landroid/widget/EdgeEffect;->update()V
Landroid/widget/EdgeEffect;->VELOCITY_GLOW_FACTOR:I
-Landroid/widget/Editor$Blink;
-Landroid/widget/Editor$Blink;-><init>()V
Landroid/widget/Editor$Blink;->cancel()V
Landroid/widget/Editor$Blink;->mCancelled:Z
Landroid/widget/Editor$Blink;->uncancel()V
-Landroid/widget/Editor$CorrectionHighlighter;
-Landroid/widget/Editor$CorrectionHighlighter;-><init>()V
Landroid/widget/Editor$CorrectionHighlighter;->draw(Landroid/graphics/Canvas;I)V
Landroid/widget/Editor$CorrectionHighlighter;->FADE_OUT_DURATION:I
Landroid/widget/Editor$CorrectionHighlighter;->highlight(Landroid/view/inputmethod/CorrectionInfo;)V
@@ -87023,27 +81210,20 @@
Landroid/widget/Editor$CorrectionHighlighter;->stopAnimation()V
Landroid/widget/Editor$CorrectionHighlighter;->updatePaint()Z
Landroid/widget/Editor$CorrectionHighlighter;->updatePath()Z
-Landroid/widget/Editor$CursorAnchorInfoNotifier;
-Landroid/widget/Editor$CursorAnchorInfoNotifier;-><init>()V
Landroid/widget/Editor$CursorAnchorInfoNotifier;->mSelectionInfoBuilder:Landroid/view/inputmethod/CursorAnchorInfo$Builder;
Landroid/widget/Editor$CursorAnchorInfoNotifier;->mTmpIntOffset:[I
Landroid/widget/Editor$CursorAnchorInfoNotifier;->mViewToScreenMatrix:Landroid/graphics/Matrix;
Landroid/widget/Editor$CursorAnchorInfoNotifier;->updatePosition(IIZZ)V
-Landroid/widget/Editor$CursorController;
Landroid/widget/Editor$CursorController;->hide()V
Landroid/widget/Editor$CursorController;->isActive()Z
Landroid/widget/Editor$CursorController;->isCursorBeingModified()Z
Landroid/widget/Editor$CursorController;->onDetached()V
Landroid/widget/Editor$CursorController;->show()V
-Landroid/widget/Editor$DragLocalState;
Landroid/widget/Editor$DragLocalState;-><init>(Landroid/widget/TextView;II)V
Landroid/widget/Editor$DragLocalState;->end:I
Landroid/widget/Editor$DragLocalState;->sourceTextView:Landroid/widget/TextView;
Landroid/widget/Editor$DragLocalState;->start:I
-Landroid/widget/Editor$EasyEditDeleteListener;
Landroid/widget/Editor$EasyEditDeleteListener;->onDeleteClick(Landroid/text/style/EasyEditSpan;)V
-Landroid/widget/Editor$EasyEditPopupWindow;
-Landroid/widget/Editor$EasyEditPopupWindow;-><init>()V
Landroid/widget/Editor$EasyEditPopupWindow;->clipVertically(I)I
Landroid/widget/Editor$EasyEditPopupWindow;->createPopupWindow()V
Landroid/widget/Editor$EasyEditPopupWindow;->getTextOffset()I
@@ -87056,7 +81236,6 @@
Landroid/widget/Editor$EasyEditPopupWindow;->POPUP_TEXT_LAYOUT:I
Landroid/widget/Editor$EasyEditPopupWindow;->setEasyEditSpan(Landroid/text/style/EasyEditSpan;)V
Landroid/widget/Editor$EasyEditPopupWindow;->setOnDeleteListener(Landroid/widget/Editor$EasyEditDeleteListener;)V
-Landroid/widget/Editor$EditOperation;
Landroid/widget/Editor$EditOperation;-><init>(Landroid/os/Parcel;Ljava/lang/ClassLoader;)V
Landroid/widget/Editor$EditOperation;-><init>(Landroid/widget/Editor;Ljava/lang/String;ILjava/lang/String;Z)V
Landroid/widget/Editor$EditOperation;->commit()V
@@ -87083,7 +81262,6 @@
Landroid/widget/Editor$EditOperation;->TYPE_INSERT:I
Landroid/widget/Editor$EditOperation;->TYPE_REPLACE:I
Landroid/widget/Editor$EditOperation;->undo()V
-Landroid/widget/Editor$ErrorPopup;
Landroid/widget/Editor$ErrorPopup;-><init>(Landroid/widget/TextView;II)V
Landroid/widget/Editor$ErrorPopup;->fixDirection(Z)V
Landroid/widget/Editor$ErrorPopup;->getResourceId(II)I
@@ -87091,9 +81269,6 @@
Landroid/widget/Editor$ErrorPopup;->mPopupInlineErrorAboveBackgroundId:I
Landroid/widget/Editor$ErrorPopup;->mPopupInlineErrorBackgroundId:I
Landroid/widget/Editor$ErrorPopup;->mView:Landroid/widget/TextView;
-Landroid/widget/Editor$HandleType;
-Landroid/widget/Editor$HandleView;
-Landroid/widget/Editor$HandleView;-><init>(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;I)V
Landroid/widget/Editor$HandleView;->addPositionToTouchUpFilter(I)V
Landroid/widget/Editor$HandleView;->dismiss()V
Landroid/widget/Editor$HandleView;->dismissMagnifier()V
@@ -87161,7 +81336,6 @@
Landroid/widget/Editor$HandleView;->updatePosition(FFZ)V
Landroid/widget/Editor$HandleView;->updatePosition(IIZZ)V
Landroid/widget/Editor$HandleView;->updateSelection(I)V
-Landroid/widget/Editor$InputContentType;
Landroid/widget/Editor$InputContentType;-><init>()V
Landroid/widget/Editor$InputContentType;->enterDown:Z
Landroid/widget/Editor$InputContentType;->extras:Landroid/os/Bundle;
@@ -87170,7 +81344,6 @@
Landroid/widget/Editor$InputContentType;->imeHintLocales:Landroid/os/LocaleList;
Landroid/widget/Editor$InputContentType;->imeOptions:I
Landroid/widget/Editor$InputContentType;->onEditorActionListener:Landroid/widget/TextView$OnEditorActionListener;
-Landroid/widget/Editor$InputMethodState;
Landroid/widget/Editor$InputMethodState;-><init>()V
Landroid/widget/Editor$InputMethodState;->mBatchEditNesting:I
Landroid/widget/Editor$InputMethodState;->mChangedDelta:I
@@ -87181,8 +81354,6 @@
Landroid/widget/Editor$InputMethodState;->mExtractedText:Landroid/view/inputmethod/ExtractedText;
Landroid/widget/Editor$InputMethodState;->mExtractedTextRequest:Landroid/view/inputmethod/ExtractedTextRequest;
Landroid/widget/Editor$InputMethodState;->mSelectionModeChanged:Z
-Landroid/widget/Editor$InsertionHandleView;
-Landroid/widget/Editor$InsertionHandleView;-><init>(Landroid/graphics/drawable/Drawable;)V
Landroid/widget/Editor$InsertionHandleView;->DELAY_BEFORE_HANDLE_FADES_OUT:I
Landroid/widget/Editor$InsertionHandleView;->getCurrentCursorOffset()I
Landroid/widget/Editor$InsertionHandleView;->getCursorHorizontalPosition(Landroid/text/Layout;I)I
@@ -87201,8 +81372,6 @@
Landroid/widget/Editor$InsertionHandleView;->show()V
Landroid/widget/Editor$InsertionHandleView;->updatePosition(FFZ)V
Landroid/widget/Editor$InsertionHandleView;->updateSelection(I)V
-Landroid/widget/Editor$InsertionPointCursorController;
-Landroid/widget/Editor$InsertionPointCursorController;-><init>()V
Landroid/widget/Editor$InsertionPointCursorController;->getHandle()Landroid/widget/Editor$InsertionHandleView;
Landroid/widget/Editor$InsertionPointCursorController;->hide()V
Landroid/widget/Editor$InsertionPointCursorController;->invalidateHandle()V
@@ -87211,11 +81380,9 @@
Landroid/widget/Editor$InsertionPointCursorController;->mHandle:Landroid/widget/Editor$InsertionHandleView;
Landroid/widget/Editor$InsertionPointCursorController;->onDetached()V
Landroid/widget/Editor$InsertionPointCursorController;->show()V
-Landroid/widget/Editor$MagnifierHandleTrigger;
Landroid/widget/Editor$MagnifierHandleTrigger;->INSERTION:I
Landroid/widget/Editor$MagnifierHandleTrigger;->SELECTION_END:I
Landroid/widget/Editor$MagnifierHandleTrigger;->SELECTION_START:I
-Landroid/widget/Editor$MagnifierMotionAnimator;
Landroid/widget/Editor$MagnifierMotionAnimator;-><init>(Landroid/widget/Magnifier;)V
Landroid/widget/Editor$MagnifierMotionAnimator;->dismiss()V
Landroid/widget/Editor$MagnifierMotionAnimator;->DURATION:J
@@ -87230,8 +81397,6 @@
Landroid/widget/Editor$MagnifierMotionAnimator;->mMagnifierIsShowing:Z
Landroid/widget/Editor$MagnifierMotionAnimator;->show(FF)V
Landroid/widget/Editor$MagnifierMotionAnimator;->update()V
-Landroid/widget/Editor$PinnedPopupWindow;
-Landroid/widget/Editor$PinnedPopupWindow;-><init>()V
Landroid/widget/Editor$PinnedPopupWindow;->clipVertically(I)I
Landroid/widget/Editor$PinnedPopupWindow;->computeLocalPosition()V
Landroid/widget/Editor$PinnedPopupWindow;->createPopupWindow()V
@@ -87251,8 +81416,6 @@
Landroid/widget/Editor$PinnedPopupWindow;->show()V
Landroid/widget/Editor$PinnedPopupWindow;->updatePosition(II)V
Landroid/widget/Editor$PinnedPopupWindow;->updatePosition(IIZZ)V
-Landroid/widget/Editor$PositionListener;
-Landroid/widget/Editor$PositionListener;-><init>()V
Landroid/widget/Editor$PositionListener;->addSubscriber(Landroid/widget/Editor$TextViewPositionListener;Z)V
Landroid/widget/Editor$PositionListener;->getPositionX()I
Landroid/widget/Editor$PositionListener;->getPositionXOnScreen()I
@@ -87272,7 +81435,6 @@
Landroid/widget/Editor$PositionListener;->onScrollChanged()V
Landroid/widget/Editor$PositionListener;->removeSubscriber(Landroid/widget/Editor$TextViewPositionListener;)V
Landroid/widget/Editor$PositionListener;->updatePosition()V
-Landroid/widget/Editor$ProcessTextIntentActionsHandler;
Landroid/widget/Editor$ProcessTextIntentActionsHandler;-><init>(Landroid/widget/Editor;)V
Landroid/widget/Editor$ProcessTextIntentActionsHandler;->createProcessTextIntent()Landroid/content/Intent;
Landroid/widget/Editor$ProcessTextIntentActionsHandler;->createProcessTextIntentForResolveInfo(Landroid/content/pm/ResolveInfo;)Landroid/content/Intent;
@@ -87293,8 +81455,6 @@
Landroid/widget/Editor$ProcessTextIntentActionsHandler;->onInitializeMenu(Landroid/view/Menu;)V
Landroid/widget/Editor$ProcessTextIntentActionsHandler;->performAccessibilityAction(I)Z
Landroid/widget/Editor$ProcessTextIntentActionsHandler;->performMenuItemAction(Landroid/view/MenuItem;)Z
-Landroid/widget/Editor$SelectionHandleView;
-Landroid/widget/Editor$SelectionHandleView;-><init>(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;II)V
Landroid/widget/Editor$SelectionHandleView;->getCurrentCursorOffset()I
Landroid/widget/Editor$SelectionHandleView;->getHorizontal(Landroid/text/Layout;I)F
Landroid/widget/Editor$SelectionHandleView;->getHorizontal(Landroid/text/Layout;IZ)F
@@ -87316,8 +81476,6 @@
Landroid/widget/Editor$SelectionHandleView;->positionNearEdgeOfScrollingView(FZ)Z
Landroid/widget/Editor$SelectionHandleView;->updatePosition(FFZ)V
Landroid/widget/Editor$SelectionHandleView;->updateSelection(I)V
-Landroid/widget/Editor$SelectionModifierCursorController;
-Landroid/widget/Editor$SelectionModifierCursorController;-><init>()V
Landroid/widget/Editor$SelectionModifierCursorController;->DRAG_ACCELERATOR_MODE_CHARACTER:I
Landroid/widget/Editor$SelectionModifierCursorController;->DRAG_ACCELERATOR_MODE_INACTIVE:I
Landroid/widget/Editor$SelectionModifierCursorController;->DRAG_ACCELERATOR_MODE_PARAGRAPH:I
@@ -87357,24 +81515,17 @@
Landroid/widget/Editor$SelectionModifierCursorController;->updateSelection(Landroid/view/MotionEvent;)V
Landroid/widget/Editor$SelectionModifierCursorController;->updateSelectionInternal(IIZ)V
Landroid/widget/Editor$SelectionModifierCursorController;->updateWordBasedSelection(Landroid/view/MotionEvent;)V
-Landroid/widget/Editor$SpanController;
-Landroid/widget/Editor$SpanController;-><init>()V
Landroid/widget/Editor$SpanController;->DISPLAY_TIMEOUT_MS:I
Landroid/widget/Editor$SpanController;->hide()V
Landroid/widget/Editor$SpanController;->isNonIntermediateSelectionSpan(Landroid/text/Spannable;Ljava/lang/Object;)Z
Landroid/widget/Editor$SpanController;->mHidePopup:Ljava/lang/Runnable;
Landroid/widget/Editor$SpanController;->mPopupWindow:Landroid/widget/Editor$EasyEditPopupWindow;
Landroid/widget/Editor$SpanController;->sendEasySpanNotification(ILandroid/text/style/EasyEditSpan;)V
-Landroid/widget/Editor$SuggestionHelper$SuggestionSpanComparator;
-Landroid/widget/Editor$SuggestionHelper$SuggestionSpanComparator;-><init>()V
Landroid/widget/Editor$SuggestionHelper$SuggestionSpanComparator;->compare(Landroid/text/style/SuggestionSpan;Landroid/text/style/SuggestionSpan;)I
-Landroid/widget/Editor$SuggestionHelper;
-Landroid/widget/Editor$SuggestionHelper;-><init>()V
Landroid/widget/Editor$SuggestionHelper;->getSortedSuggestionSpans()[Landroid/text/style/SuggestionSpan;
Landroid/widget/Editor$SuggestionHelper;->getSuggestionInfo([Landroid/widget/Editor$SuggestionInfo;Landroid/widget/Editor$SuggestionSpanInfo;)I
Landroid/widget/Editor$SuggestionHelper;->mSpansLengths:Ljava/util/HashMap;
Landroid/widget/Editor$SuggestionHelper;->mSuggestionSpanComparator:Ljava/util/Comparator;
-Landroid/widget/Editor$SuggestionInfo;
Landroid/widget/Editor$SuggestionInfo;-><init>()V
Landroid/widget/Editor$SuggestionInfo;->clear()V
Landroid/widget/Editor$SuggestionInfo;->mSuggestionEnd:I
@@ -87383,19 +81534,12 @@
Landroid/widget/Editor$SuggestionInfo;->mSuggestionStart:I
Landroid/widget/Editor$SuggestionInfo;->mText:Landroid/text/SpannableStringBuilder;
Landroid/widget/Editor$SuggestionInfo;->setSpanInfo(Landroid/text/style/SuggestionSpan;II)V
-Landroid/widget/Editor$SuggestionSpanInfo;
Landroid/widget/Editor$SuggestionSpanInfo;-><init>()V
Landroid/widget/Editor$SuggestionSpanInfo;->clear()V
Landroid/widget/Editor$SuggestionSpanInfo;->mSpanEnd:I
Landroid/widget/Editor$SuggestionSpanInfo;->mSpanStart:I
Landroid/widget/Editor$SuggestionSpanInfo;->mSuggestionSpan:Landroid/text/style/SuggestionSpan;
-Landroid/widget/Editor$SuggestionsPopupWindow$CustomPopupWindow;
-Landroid/widget/Editor$SuggestionsPopupWindow$CustomPopupWindow;-><init>()V
-Landroid/widget/Editor$SuggestionsPopupWindow$SuggestionAdapter;
-Landroid/widget/Editor$SuggestionsPopupWindow$SuggestionAdapter;-><init>()V
Landroid/widget/Editor$SuggestionsPopupWindow$SuggestionAdapter;->mInflater:Landroid/view/LayoutInflater;
-Landroid/widget/Editor$SuggestionsPopupWindow;
-Landroid/widget/Editor$SuggestionsPopupWindow;-><init>()V
Landroid/widget/Editor$SuggestionsPopupWindow;->applyDefaultTheme(Landroid/content/Context;)Landroid/content/Context;
Landroid/widget/Editor$SuggestionsPopupWindow;->clipVertically(I)I
Landroid/widget/Editor$SuggestionsPopupWindow;->createPopupWindow()V
@@ -87428,12 +81572,9 @@
Landroid/widget/Editor$SuggestionsPopupWindow;->updateSuggestions()Z
Landroid/widget/Editor$SuggestionsPopupWindow;->USER_DICTIONARY_EXTRA_LOCALE:Ljava/lang/String;
Landroid/widget/Editor$SuggestionsPopupWindow;->USER_DICTIONARY_EXTRA_WORD:Ljava/lang/String;
-Landroid/widget/Editor$TextActionMode;
Landroid/widget/Editor$TextActionMode;->INSERTION:I
Landroid/widget/Editor$TextActionMode;->SELECTION:I
Landroid/widget/Editor$TextActionMode;->TEXT_LINK:I
-Landroid/widget/Editor$TextActionModeCallback;
-Landroid/widget/Editor$TextActionModeCallback;-><init>(I)V
Landroid/widget/Editor$TextActionModeCallback;->addAssistMenuItem(Landroid/view/Menu;Landroid/app/RemoteAction;III)Landroid/view/MenuItem;
Landroid/widget/Editor$TextActionModeCallback;->clearAssistMenuItems(Landroid/view/Menu;)V
Landroid/widget/Editor$TextActionModeCallback;->createAssistMenuItemPendingIntentRequestCode()I
@@ -87450,16 +81591,12 @@
Landroid/widget/Editor$TextActionModeCallback;->updateAssistMenuItems(Landroid/view/Menu;)V
Landroid/widget/Editor$TextActionModeCallback;->updateReplaceItem(Landroid/view/Menu;)V
Landroid/widget/Editor$TextActionModeCallback;->updateSelectAllItem(Landroid/view/Menu;)V
-Landroid/widget/Editor$TextRenderNode;
Landroid/widget/Editor$TextRenderNode;-><init>(Ljava/lang/String;)V
Landroid/widget/Editor$TextRenderNode;->isDirty:Z
Landroid/widget/Editor$TextRenderNode;->needsRecord()Z
Landroid/widget/Editor$TextRenderNode;->needsToBeShifted:Z
Landroid/widget/Editor$TextRenderNode;->renderNode:Landroid/view/RenderNode;
-Landroid/widget/Editor$TextViewPositionListener;
Landroid/widget/Editor$TextViewPositionListener;->updatePosition(IIZZ)V
-Landroid/widget/Editor$UndoInputFilter$MergeMode;
-Landroid/widget/Editor$UndoInputFilter;
Landroid/widget/Editor$UndoInputFilter;-><init>(Landroid/widget/Editor;)V
Landroid/widget/Editor$UndoInputFilter;->beginBatchEdit()V
Landroid/widget/Editor$UndoInputFilter;->canUndoEdit(Ljava/lang/CharSequence;IILandroid/text/Spanned;II)Z
@@ -87480,7 +81617,6 @@
Landroid/widget/Editor$UndoInputFilter;->recordEdit(Landroid/widget/Editor$EditOperation;I)V
Landroid/widget/Editor$UndoInputFilter;->restoreInstanceState(Landroid/os/Parcel;)V
Landroid/widget/Editor$UndoInputFilter;->saveInstanceState(Landroid/os/Parcel;)V
-Landroid/widget/Editor;
Landroid/widget/Editor;-><init>(Landroid/widget/TextView;)V
Landroid/widget/Editor;->addSpanWatchers(Landroid/text/Spannable;)V
Landroid/widget/Editor;->adjustInputType(ZZZZ)V
@@ -87703,7 +81839,6 @@
Landroid/widget/Editor;->updateTapState(Landroid/view/MotionEvent;)V
Landroid/widget/EditText;->onInitializeAccessibilityNodeInfoInternal(Landroid/view/accessibility/AccessibilityNodeInfo;)V
Landroid/widget/EditText;->supportsAutoSizeText()Z
-Landroid/widget/ExpandableListConnector$GroupMetadata;
Landroid/widget/ExpandableListConnector$GroupMetadata;-><init>()V
Landroid/widget/ExpandableListConnector$GroupMetadata;->compareTo(Landroid/widget/ExpandableListConnector$GroupMetadata;)I
Landroid/widget/ExpandableListConnector$GroupMetadata;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -87713,9 +81848,6 @@
Landroid/widget/ExpandableListConnector$GroupMetadata;->lastChildFlPos:I
Landroid/widget/ExpandableListConnector$GroupMetadata;->obtain(IIIJ)Landroid/widget/ExpandableListConnector$GroupMetadata;
Landroid/widget/ExpandableListConnector$GroupMetadata;->REFRESH:I
-Landroid/widget/ExpandableListConnector$MyDataSetObserver;
-Landroid/widget/ExpandableListConnector$MyDataSetObserver;-><init>()V
-Landroid/widget/ExpandableListConnector$PositionMetadata;
Landroid/widget/ExpandableListConnector$PositionMetadata;-><init>()V
Landroid/widget/ExpandableListConnector$PositionMetadata;->getRecycledOrCreate()Landroid/widget/ExpandableListConnector$PositionMetadata;
Landroid/widget/ExpandableListConnector$PositionMetadata;->groupInsertIndex:I
@@ -87727,7 +81859,6 @@
Landroid/widget/ExpandableListConnector$PositionMetadata;->recycle()V
Landroid/widget/ExpandableListConnector$PositionMetadata;->resetState()V
Landroid/widget/ExpandableListConnector$PositionMetadata;->sPool:Ljava/util/ArrayList;
-Landroid/widget/ExpandableListConnector;
Landroid/widget/ExpandableListConnector;-><init>(Landroid/widget/ExpandableListAdapter;)V
Landroid/widget/ExpandableListConnector;->collapseGroup(I)Z
Landroid/widget/ExpandableListConnector;->collapseGroup(Landroid/widget/ExpandableListConnector$PositionMetadata;)Z
@@ -87748,7 +81879,6 @@
Landroid/widget/ExpandableListConnector;->setExpandableListAdapter(Landroid/widget/ExpandableListAdapter;)V
Landroid/widget/ExpandableListConnector;->setExpandedGroupMetadataList(Ljava/util/ArrayList;)V
Landroid/widget/ExpandableListConnector;->setMaxExpGroupCount(I)V
-Landroid/widget/ExpandableListPosition;
Landroid/widget/ExpandableListPosition;-><init>()V
Landroid/widget/ExpandableListPosition;->CHILD:I
Landroid/widget/ExpandableListPosition;->childPos:I
@@ -87766,7 +81896,6 @@
Landroid/widget/ExpandableListPosition;->resetState()V
Landroid/widget/ExpandableListPosition;->sPool:Ljava/util/ArrayList;
Landroid/widget/ExpandableListPosition;->type:I
-Landroid/widget/ExpandableListView$SavedState;
Landroid/widget/ExpandableListView$SavedState;-><init>(Landroid/os/Parcel;)V
Landroid/widget/ExpandableListView$SavedState;-><init>(Landroid/os/Parcelable;Ljava/util/ArrayList;)V
Landroid/widget/ExpandableListView$SavedState;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -87805,7 +81934,6 @@
Landroid/widget/ExpandableListView;->PACKED_POSITION_SHIFT_TYPE:J
Landroid/widget/ExpandableListView;->resolveChildIndicator()V
Landroid/widget/ExpandableListView;->resolveIndicator()V
-Landroid/widget/FastScroller;
Landroid/widget/FastScroller;->animateAlpha(Landroid/view/View;F)Landroid/animation/Animator;
Landroid/widget/FastScroller;->animateBounds(Landroid/view/View;Landroid/graphics/Rect;)Landroid/animation/Animator;
Landroid/widget/FastScroller;->animateScaleX(Landroid/view/View;F)Landroid/animation/Animator;
@@ -87824,7 +81952,6 @@
Landroid/widget/FastScroller;->getPosFromMotionEvent(F)F
Landroid/widget/FastScroller;->getSectionsFromIndexer()V
Landroid/widget/FastScroller;->getWidth()I
-Landroid/widget/FastScroller;->groupAnimatorOfFloat(Landroid/util/Property;F[[Landroid/view/View;)Landroid/animation/Animator;
Landroid/widget/FastScroller;->isAlwaysShowEnabled()Z
Landroid/widget/FastScroller;->isEnabled()Z
Landroid/widget/FastScroller;->isPointInside(FF)Z
@@ -87922,17 +82049,11 @@
Landroid/widget/FastScroller;->updateLayout()V
Landroid/widget/FastScroller;->updateLongList(II)V
Landroid/widget/FastScroller;->updateOffsetAndRange()V
-Landroid/widget/Filter$Delayer;
Landroid/widget/Filter$Delayer;->getPostingDelay(Ljava/lang/CharSequence;)J
-Landroid/widget/Filter$RequestArguments;
Landroid/widget/Filter$RequestArguments;-><init>()V
Landroid/widget/Filter$RequestArguments;->constraint:Ljava/lang/CharSequence;
Landroid/widget/Filter$RequestArguments;->listener:Landroid/widget/Filter$FilterListener;
Landroid/widget/Filter$RequestArguments;->results:Landroid/widget/Filter$FilterResults;
-Landroid/widget/Filter$RequestHandler;
-Landroid/widget/Filter$RequestHandler;-><init>(Landroid/os/Looper;)V
-Landroid/widget/Filter$ResultsHandler;
-Landroid/widget/Filter$ResultsHandler;-><init>()V
Landroid/widget/Filter;->FILTER_TOKEN:I
Landroid/widget/Filter;->FINISH_TOKEN:I
Landroid/widget/Filter;->LOG_TAG:Ljava/lang/String;
@@ -87941,11 +82062,6 @@
Landroid/widget/Filter;->mResultHandler:Landroid/os/Handler;
Landroid/widget/Filter;->mThreadHandler:Landroid/os/Handler;
Landroid/widget/Filter;->THREAD_NAME:Ljava/lang/String;
-Landroid/widget/ForwardingListener$DisallowIntercept;
-Landroid/widget/ForwardingListener$DisallowIntercept;-><init>()V
-Landroid/widget/ForwardingListener$TriggerLongPress;
-Landroid/widget/ForwardingListener$TriggerLongPress;-><init>()V
-Landroid/widget/ForwardingListener;
Landroid/widget/ForwardingListener;-><init>(Landroid/view/View;)V
Landroid/widget/ForwardingListener;->clearCallbacks()V
Landroid/widget/ForwardingListener;->getPopup()Lcom/android/internal/view/menu/ShowableListMenu;
@@ -87970,8 +82086,6 @@
Landroid/widget/FrameLayout;->getPaddingTopWithForeground()I
Landroid/widget/FrameLayout;->layoutChildren(IIIIZ)V
Landroid/widget/FrameLayout;->mMatchParentChildren:Ljava/util/ArrayList;
-Landroid/widget/Gallery$FlingRunnable;
-Landroid/widget/Gallery$FlingRunnable;-><init>()V
Landroid/widget/Gallery$FlingRunnable;->endFling(Z)V
Landroid/widget/Gallery$FlingRunnable;->mLastFlingX:I
Landroid/widget/Gallery$FlingRunnable;->mScroller:Landroid/widget/Scroller;
@@ -88029,21 +82143,16 @@
Landroid/widget/GridLayout$Alignment;->getBounds()Landroid/widget/GridLayout$Bounds;
Landroid/widget/GridLayout$Alignment;->getGravityOffset(Landroid/view/View;I)I
Landroid/widget/GridLayout$Alignment;->getSizeInCell(Landroid/view/View;II)I
-Landroid/widget/GridLayout$AlignmentMode;
-Landroid/widget/GridLayout$Arc;
Landroid/widget/GridLayout$Arc;-><init>(Landroid/widget/GridLayout$Interval;Landroid/widget/GridLayout$MutableInt;)V
Landroid/widget/GridLayout$Arc;->span:Landroid/widget/GridLayout$Interval;
Landroid/widget/GridLayout$Arc;->valid:Z
Landroid/widget/GridLayout$Arc;->value:Landroid/widget/GridLayout$MutableInt;
-Landroid/widget/GridLayout$Assoc;
Landroid/widget/GridLayout$Assoc;-><init>(Ljava/lang/Class;Ljava/lang/Class;)V
Landroid/widget/GridLayout$Assoc;->keyType:Ljava/lang/Class;
Landroid/widget/GridLayout$Assoc;->of(Ljava/lang/Class;Ljava/lang/Class;)Landroid/widget/GridLayout$Assoc;
Landroid/widget/GridLayout$Assoc;->pack()Landroid/widget/GridLayout$PackedMap;
Landroid/widget/GridLayout$Assoc;->put(Ljava/lang/Object;Ljava/lang/Object;)V
Landroid/widget/GridLayout$Assoc;->valueType:Ljava/lang/Class;
-Landroid/widget/GridLayout$Axis;
-Landroid/widget/GridLayout$Axis;-><init>(Z)V
Landroid/widget/GridLayout$Axis;->addComponentSizes(Ljava/util/List;Landroid/widget/GridLayout$PackedMap;)V
Landroid/widget/GridLayout$Axis;->arcs:[Landroid/widget/GridLayout$Arc;
Landroid/widget/GridLayout$Axis;->arcsToString(Ljava/util/List;)Ljava/lang/String;
@@ -88117,7 +82226,6 @@
Landroid/widget/GridLayout$Axis;->topologicalSort([Landroid/widget/GridLayout$Arc;)[Landroid/widget/GridLayout$Arc;
Landroid/widget/GridLayout$Axis;->trailingMargins:[I
Landroid/widget/GridLayout$Axis;->trailingMarginsValid:Z
-Landroid/widget/GridLayout$Bounds;
Landroid/widget/GridLayout$Bounds;-><init>()V
Landroid/widget/GridLayout$Bounds;->after:I
Landroid/widget/GridLayout$Bounds;->before:I
@@ -88127,7 +82235,6 @@
Landroid/widget/GridLayout$Bounds;->include(Landroid/widget/GridLayout;Landroid/view/View;Landroid/widget/GridLayout$Spec;Landroid/widget/GridLayout$Axis;I)V
Landroid/widget/GridLayout$Bounds;->reset()V
Landroid/widget/GridLayout$Bounds;->size(Z)I
-Landroid/widget/GridLayout$Interval;
Landroid/widget/GridLayout$Interval;-><init>(II)V
Landroid/widget/GridLayout$Interval;->inverse()Landroid/widget/GridLayout$Interval;
Landroid/widget/GridLayout$Interval;->max:I
@@ -88157,13 +82264,10 @@
Landroid/widget/GridLayout$LayoutParams;->setColumnSpecSpan(Landroid/widget/GridLayout$Interval;)V
Landroid/widget/GridLayout$LayoutParams;->setRowSpecSpan(Landroid/widget/GridLayout$Interval;)V
Landroid/widget/GridLayout$LayoutParams;->TOP_MARGIN:I
-Landroid/widget/GridLayout$MutableInt;
Landroid/widget/GridLayout$MutableInt;-><init>()V
Landroid/widget/GridLayout$MutableInt;-><init>(I)V
Landroid/widget/GridLayout$MutableInt;->reset()V
Landroid/widget/GridLayout$MutableInt;->value:I
-Landroid/widget/GridLayout$Orientation;
-Landroid/widget/GridLayout$PackedMap;
Landroid/widget/GridLayout$PackedMap;-><init>([Ljava/lang/Object;[Ljava/lang/Object;)V
Landroid/widget/GridLayout$PackedMap;->compact([Ljava/lang/Object;[I)[Ljava/lang/Object;
Landroid/widget/GridLayout$PackedMap;->createIndex([Ljava/lang/Object;)[I
@@ -88247,7 +82351,6 @@
Landroid/widget/GridLayout;->UNINITIALIZED_HASH:I
Landroid/widget/GridLayout;->USE_DEFAULT_MARGINS:I
Landroid/widget/GridLayout;->validateLayoutParams()V
-Landroid/widget/GridView$StretchMode;
Landroid/widget/GridView;->adjustForBottomFadingEdge(Landroid/view/View;II)V
Landroid/widget/GridView;->adjustForTopFadingEdge(Landroid/view/View;II)V
Landroid/widget/GridView;->adjustViewsUpOrDown()V
@@ -88287,7 +82390,6 @@
Landroid/widget/HeaderViewListAdapter;->EMPTY_INFO_LIST:Ljava/util/ArrayList;
Landroid/widget/HeaderViewListAdapter;->mAreAllFixedViewsSelectable:Z
Landroid/widget/HeaderViewListAdapter;->mIsFilterable:Z
-Landroid/widget/HorizontalScrollView$SavedState;
Landroid/widget/HorizontalScrollView$SavedState;-><init>(Landroid/os/Parcel;)V
Landroid/widget/HorizontalScrollView$SavedState;-><init>(Landroid/os/Parcelable;)V
Landroid/widget/HorizontalScrollView$SavedState;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -88328,12 +82430,9 @@
Landroid/widget/HorizontalScrollView;->scrollToChild(Landroid/view/View;)V
Landroid/widget/HorizontalScrollView;->scrollToChildRect(Landroid/graphics/Rect;Z)Z
Landroid/widget/HorizontalScrollView;->TAG:Ljava/lang/String;
-Landroid/widget/ImageView$ImageDrawableCallback;
-Landroid/widget/ImageView$ImageDrawableCallback;-><init>(Landroid/graphics/drawable/Drawable;Landroid/net/Uri;I)V
Landroid/widget/ImageView$ImageDrawableCallback;->drawable:Landroid/graphics/drawable/Drawable;
Landroid/widget/ImageView$ImageDrawableCallback;->resource:I
Landroid/widget/ImageView$ImageDrawableCallback;->uri:Landroid/net/Uri;
-Landroid/widget/ImageView$ScaleType;-><init>(I)V
Landroid/widget/ImageView$ScaleType;->nativeInt:I
Landroid/widget/ImageView;->applyColorMod()V
Landroid/widget/ImageView;->applyImageTint()V
@@ -88372,8 +82471,6 @@
Landroid/widget/ImageView;->setXfermode(Landroid/graphics/Xfermode;)V
Landroid/widget/ImageView;->sS2FArray:[Landroid/graphics/Matrix$ScaleToFit;
Landroid/widget/ImageView;->sScaleTypeArray:[Landroid/widget/ImageView$ScaleType;
-Landroid/widget/LinearLayout$DividerMode;
-Landroid/widget/LinearLayout$OrientationMode;
Landroid/widget/LinearLayout;->allViewsAreGoneBefore(I)Z
Landroid/widget/LinearLayout;->drawDividersHorizontal(Landroid/graphics/Canvas;)V
Landroid/widget/LinearLayout;->drawDividersVertical(Landroid/graphics/Canvas;)V
@@ -88414,16 +82511,6 @@
Landroid/widget/LinearLayout;->setChildFrame(Landroid/view/View;IIII)V
Landroid/widget/LinearLayout;->sRemeasureWeightedChildren:Z
Landroid/widget/LinearLayout;->VERTICAL_GRAVITY_COUNT:I
-Landroid/widget/ListPopupWindow$ListSelectorHider;
-Landroid/widget/ListPopupWindow$ListSelectorHider;-><init>()V
-Landroid/widget/ListPopupWindow$PopupDataSetObserver;
-Landroid/widget/ListPopupWindow$PopupDataSetObserver;-><init>()V
-Landroid/widget/ListPopupWindow$PopupScrollListener;
-Landroid/widget/ListPopupWindow$PopupScrollListener;-><init>()V
-Landroid/widget/ListPopupWindow$PopupTouchInterceptor;
-Landroid/widget/ListPopupWindow$PopupTouchInterceptor;-><init>()V
-Landroid/widget/ListPopupWindow$ResizePopupRunnable;
-Landroid/widget/ListPopupWindow$ResizePopupRunnable;-><init>()V
Landroid/widget/ListPopupWindow;->createDropDownListView(Landroid/content/Context;Z)Landroid/widget/DropDownListView;
Landroid/widget/ListPopupWindow;->DEBUG:Z
Landroid/widget/ListPopupWindow;->EXPAND_LIST_TIMEOUT:I
@@ -88462,15 +82549,12 @@
Landroid/widget/ListPopupWindow;->setEpicenterBounds(Landroid/graphics/Rect;)V
Landroid/widget/ListPopupWindow;->setOverlapAnchor(Z)V
Landroid/widget/ListPopupWindow;->TAG:Ljava/lang/String;
-Landroid/widget/ListView$ArrowScrollFocusResult;
Landroid/widget/ListView$ArrowScrollFocusResult;-><init>()V
Landroid/widget/ListView$ArrowScrollFocusResult;->getAmountToScroll()I
Landroid/widget/ListView$ArrowScrollFocusResult;->getSelectedPosition()I
Landroid/widget/ListView$ArrowScrollFocusResult;->mAmountToScroll:I
Landroid/widget/ListView$ArrowScrollFocusResult;->mSelectedPosition:I
Landroid/widget/ListView$ArrowScrollFocusResult;->populate(II)V
-Landroid/widget/ListView$FocusSelector;
-Landroid/widget/ListView$FocusSelector;-><init>()V
Landroid/widget/ListView$FocusSelector;->mAction:I
Landroid/widget/ListView$FocusSelector;->mPosition:I
Landroid/widget/ListView$FocusSelector;->mPositionTop:I
@@ -88549,7 +82633,6 @@
Landroid/widget/ListView;->TAG:Ljava/lang/String;
Landroid/widget/ListView;->wrapHeaderListAdapterInternal()V
Landroid/widget/ListView;->wrapHeaderListAdapterInternal(Ljava/util/ArrayList;Ljava/util/ArrayList;Landroid/widget/ListAdapter;)Landroid/widget/HeaderViewListAdapter;
-Landroid/widget/Magnifier$InternalPopupWindow;
Landroid/widget/Magnifier$InternalPopupWindow;-><init>(Landroid/content/Context;Landroid/view/Display;Landroid/view/Surface;IIFFLandroid/os/Handler;Ljava/lang/Object;Landroid/widget/Magnifier$Callback;)V
Landroid/widget/Magnifier$InternalPopupWindow;->CONTENT_BITMAP_ALPHA:I
Landroid/widget/Magnifier$InternalPopupWindow;->createRenderNodeForBitmap(Ljava/lang/String;FF)Landroid/view/RenderNode;
@@ -88584,7 +82667,6 @@
Landroid/widget/Magnifier$InternalPopupWindow;->setContentPositionForNextDraw(II)V
Landroid/widget/Magnifier$InternalPopupWindow;->SURFACE_Z:I
Landroid/widget/Magnifier$InternalPopupWindow;->updateContent(Landroid/graphics/Bitmap;)V
-Landroid/widget/Magnifier$SurfaceInfo;
Landroid/widget/Magnifier$SurfaceInfo;-><init>(Landroid/view/Surface;IIZ)V
Landroid/widget/Magnifier$SurfaceInfo;->mHeight:I
Landroid/widget/Magnifier$SurfaceInfo;->mIsMainWindowSurface:Z
@@ -88646,10 +82728,7 @@
Landroid/widget/MediaController;->setProgress()I
Landroid/widget/MediaController;->stringForTime(I)Ljava/lang/String;
Landroid/widget/MediaController;->updateFloatingWindowLayout()V
-Landroid/widget/MediaControlView2$Button;
-Landroid/widget/MediaControlView2$OnFullScreenListener;
Landroid/widget/MediaControlView2$OnFullScreenListener;->onFullScreen(Landroid/view/View;Z)V
-Landroid/widget/MediaControlView2;
Landroid/widget/MediaControlView2;-><init>(Landroid/content/Context;)V
Landroid/widget/MediaControlView2;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
Landroid/widget/MediaControlView2;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
@@ -88670,10 +82749,8 @@
Landroid/widget/MediaControlView2;->setController(Landroid/media/session/MediaController;)V
Landroid/widget/MediaControlView2;->setMediaSessionToken(Landroid/media/SessionToken2;)V
Landroid/widget/MediaControlView2;->setOnFullScreenListener(Landroid/widget/MediaControlView2$OnFullScreenListener;)V
-Landroid/widget/MenuItemHoverListener;
Landroid/widget/MenuItemHoverListener;->onItemHoverEnter(Lcom/android/internal/view/menu/MenuBuilder;Landroid/view/MenuItem;)V
Landroid/widget/MenuItemHoverListener;->onItemHoverExit(Lcom/android/internal/view/menu/MenuBuilder;Landroid/view/MenuItem;)V
-Landroid/widget/MenuPopupWindow$MenuDropDownListView;
Landroid/widget/MenuPopupWindow$MenuDropDownListView;-><init>(Landroid/content/Context;Z)V
Landroid/widget/MenuPopupWindow$MenuDropDownListView;->clearSelection()V
Landroid/widget/MenuPopupWindow$MenuDropDownListView;->mAdvanceKey:I
@@ -88681,7 +82758,6 @@
Landroid/widget/MenuPopupWindow$MenuDropDownListView;->mHoverListener:Landroid/widget/MenuItemHoverListener;
Landroid/widget/MenuPopupWindow$MenuDropDownListView;->mRetreatKey:I
Landroid/widget/MenuPopupWindow$MenuDropDownListView;->setHoverListener(Landroid/widget/MenuItemHoverListener;)V
-Landroid/widget/MenuPopupWindow;
Landroid/widget/MenuPopupWindow;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V
Landroid/widget/MenuPopupWindow;->createDropDownListView(Landroid/content/Context;Z)Landroid/widget/DropDownListView;
Landroid/widget/MenuPopupWindow;->mHoverListener:Landroid/widget/MenuItemHoverListener;
@@ -88693,8 +82769,6 @@
Landroid/widget/MenuPopupWindow;->setTouchModal(Z)V
Landroid/widget/MultiAutoCompleteTextView;->finishInit()V
Landroid/widget/MultiAutoCompleteTextView;->mTokenizer:Landroid/widget/MultiAutoCompleteTextView$Tokenizer;
-Landroid/widget/NumberPicker$AccessibilityNodeProviderImpl;
-Landroid/widget/NumberPicker$AccessibilityNodeProviderImpl;-><init>()V
Landroid/widget/NumberPicker$AccessibilityNodeProviderImpl;->createAccessibilityNodeInfoForNumberPicker(IIII)Landroid/view/accessibility/AccessibilityNodeInfo;
Landroid/widget/NumberPicker$AccessibilityNodeProviderImpl;->createAccessibilityNodeInfoForVirtualButton(ILjava/lang/String;IIII)Landroid/view/accessibility/AccessibilityNodeInfo;
Landroid/widget/NumberPicker$AccessibilityNodeProviderImpl;->createAccessibiltyNodeInfoForInputText(IIII)Landroid/view/accessibility/AccessibilityNodeInfo;
@@ -88713,19 +82787,9 @@
Landroid/widget/NumberPicker$AccessibilityNodeProviderImpl;->VIRTUAL_VIEW_ID_DECREMENT:I
Landroid/widget/NumberPicker$AccessibilityNodeProviderImpl;->VIRTUAL_VIEW_ID_INCREMENT:I
Landroid/widget/NumberPicker$AccessibilityNodeProviderImpl;->VIRTUAL_VIEW_ID_INPUT:I
-Landroid/widget/NumberPicker$BeginSoftInputOnLongPressCommand;
-Landroid/widget/NumberPicker$BeginSoftInputOnLongPressCommand;-><init>()V
-Landroid/widget/NumberPicker$ChangeCurrentByOneFromLongPressCommand;
-Landroid/widget/NumberPicker$ChangeCurrentByOneFromLongPressCommand;-><init>()V
Landroid/widget/NumberPicker$ChangeCurrentByOneFromLongPressCommand;->mIncrement:Z
Landroid/widget/NumberPicker$ChangeCurrentByOneFromLongPressCommand;->setStep(Z)V
-Landroid/widget/NumberPicker$CustomEditText;
Landroid/widget/NumberPicker$CustomEditText;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
-Landroid/widget/NumberPicker$InputTextFilter;
-Landroid/widget/NumberPicker$InputTextFilter;-><init>()V
-Landroid/widget/NumberPicker$OnScrollListener$ScrollState;
-Landroid/widget/NumberPicker$PressedStateHelper;
-Landroid/widget/NumberPicker$PressedStateHelper;-><init>()V
Landroid/widget/NumberPicker$PressedStateHelper;->buttonPressDelayed(I)V
Landroid/widget/NumberPicker$PressedStateHelper;->buttonTapped(I)V
Landroid/widget/NumberPicker$PressedStateHelper;->BUTTON_DECREMENT:I
@@ -88735,7 +82799,6 @@
Landroid/widget/NumberPicker$PressedStateHelper;->mMode:I
Landroid/widget/NumberPicker$PressedStateHelper;->MODE_PRESS:I
Landroid/widget/NumberPicker$PressedStateHelper;->MODE_TAPPED:I
-Landroid/widget/NumberPicker$SetSelectionCommand;
Landroid/widget/NumberPicker$SetSelectionCommand;-><init>(Landroid/widget/EditText;)V
Landroid/widget/NumberPicker$SetSelectionCommand;->cancel()V
Landroid/widget/NumberPicker$SetSelectionCommand;->mInputText:Landroid/widget/EditText;
@@ -88743,7 +82806,6 @@
Landroid/widget/NumberPicker$SetSelectionCommand;->mSelectionEnd:I
Landroid/widget/NumberPicker$SetSelectionCommand;->mSelectionStart:I
Landroid/widget/NumberPicker$SetSelectionCommand;->post(II)V
-Landroid/widget/NumberPicker$TwoDigitFormatter;
Landroid/widget/NumberPicker$TwoDigitFormatter;-><init>()V
Landroid/widget/NumberPicker$TwoDigitFormatter;->createFormatter(Ljava/util/Locale;)Ljava/util/Formatter;
Landroid/widget/NumberPicker$TwoDigitFormatter;->getZeroDigit(Ljava/util/Locale;)C
@@ -88840,7 +82902,6 @@
Landroid/widget/NumberPicker;->updateInputTextView()Z
Landroid/widget/NumberPicker;->updateWrapSelectorWheel()V
Landroid/widget/NumberPicker;->validateInputTextView(Landroid/view/View;)V
-Landroid/widget/OverScroller$SplineOverScroller;
Landroid/widget/OverScroller$SplineOverScroller;-><init>(Landroid/content/Context;)V
Landroid/widget/OverScroller$SplineOverScroller;->adjustDuration(III)V
Landroid/widget/OverScroller$SplineOverScroller;->BALLISTIC:I
@@ -88905,10 +82966,6 @@
Landroid/widget/PopupMenu;->mMenu:Lcom/android/internal/view/menu/MenuBuilder;
Landroid/widget/PopupMenu;->mMenuItemClickListener:Landroid/widget/PopupMenu$OnMenuItemClickListener;
Landroid/widget/PopupMenu;->mOnDismissListener:Landroid/widget/PopupMenu$OnDismissListener;
-Landroid/widget/PopupWindow$PopupBackgroundView;
-Landroid/widget/PopupWindow$PopupBackgroundView;-><init>(Landroid/content/Context;)V
-Landroid/widget/PopupWindow$PopupDecorView;
-Landroid/widget/PopupWindow$PopupDecorView;-><init>(Landroid/content/Context;)V
Landroid/widget/PopupWindow$PopupDecorView;->cancelTransitions()V
Landroid/widget/PopupWindow$PopupDecorView;->mCleanupAfterExit:Ljava/lang/Runnable;
Landroid/widget/PopupWindow$PopupDecorView;->mOnAnchorRootDetachedListener:Landroid/view/View$OnAttachStateChangeListener;
@@ -88986,9 +83043,6 @@
Landroid/widget/PopupWindow;->tryFitVertical(Landroid/view/WindowManager$LayoutParams;IIIIIIIZ)Z
Landroid/widget/PopupWindow;->update(Landroid/view/View;Landroid/view/WindowManager$LayoutParams;)V
Landroid/widget/PopupWindow;->update(Landroid/view/View;ZIIII)V
-Landroid/widget/ProgressBar$AccessibilityEventSender;
-Landroid/widget/ProgressBar$AccessibilityEventSender;-><init>()V
-Landroid/widget/ProgressBar$ProgressTintInfo;
Landroid/widget/ProgressBar$ProgressTintInfo;-><init>()V
Landroid/widget/ProgressBar$ProgressTintInfo;->mHasIndeterminateTint:Z
Landroid/widget/ProgressBar$ProgressTintInfo;->mHasIndeterminateTintMode:Z
@@ -89006,7 +83060,6 @@
Landroid/widget/ProgressBar$ProgressTintInfo;->mProgressTintMode:Landroid/graphics/PorterDuff$Mode;
Landroid/widget/ProgressBar$ProgressTintInfo;->mSecondaryProgressTintList:Landroid/content/res/ColorStateList;
Landroid/widget/ProgressBar$ProgressTintInfo;->mSecondaryProgressTintMode:Landroid/graphics/PorterDuff$Mode;
-Landroid/widget/ProgressBar$RefreshData;
Landroid/widget/ProgressBar$RefreshData;-><init>()V
Landroid/widget/ProgressBar$RefreshData;->animate:Z
Landroid/widget/ProgressBar$RefreshData;->fromUser:Z
@@ -89016,9 +83069,6 @@
Landroid/widget/ProgressBar$RefreshData;->progress:I
Landroid/widget/ProgressBar$RefreshData;->recycle()V
Landroid/widget/ProgressBar$RefreshData;->sPool:Landroid/util/Pools$SynchronizedPool;
-Landroid/widget/ProgressBar$RefreshProgressRunnable;
-Landroid/widget/ProgressBar$RefreshProgressRunnable;-><init>()V
-Landroid/widget/ProgressBar$SavedState;
Landroid/widget/ProgressBar$SavedState;-><init>(Landroid/os/Parcel;)V
Landroid/widget/ProgressBar$SavedState;-><init>(Landroid/os/Parcelable;)V
Landroid/widget/ProgressBar$SavedState;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -89081,8 +83131,6 @@
Landroid/widget/ProgressBar;->updateDrawableBounds(II)V
Landroid/widget/ProgressBar;->updateDrawableState()V
Landroid/widget/ProgressBar;->VISUAL_PROGRESS:Landroid/util/FloatProperty;
-Landroid/widget/QuickContactBadge$QueryHandler;
-Landroid/widget/QuickContactBadge$QueryHandler;-><init>(Landroid/content/ContentResolver;)V
Landroid/widget/QuickContactBadge;->EMAIL_ID_COLUMN_INDEX:I
Landroid/widget/QuickContactBadge;->EMAIL_LOOKUP_PROJECTION:[Ljava/lang/String;
Landroid/widget/QuickContactBadge;->EMAIL_LOOKUP_STRING_COLUMN_INDEX:I
@@ -89103,11 +83151,7 @@
Landroid/widget/QuickContactBadge;->TOKEN_EMAIL_LOOKUP_AND_TRIGGER:I
Landroid/widget/QuickContactBadge;->TOKEN_PHONE_LOOKUP:I
Landroid/widget/QuickContactBadge;->TOKEN_PHONE_LOOKUP_AND_TRIGGER:I
-Landroid/widget/RadialTimePickerView$OnValueSelectedListener;
Landroid/widget/RadialTimePickerView$OnValueSelectedListener;->onValueSelected(IIZ)V
-Landroid/widget/RadialTimePickerView$PickerType;
-Landroid/widget/RadialTimePickerView$RadialPickerTouchHelper;
-Landroid/widget/RadialTimePickerView$RadialPickerTouchHelper;-><init>()V
Landroid/widget/RadialTimePickerView$RadialPickerTouchHelper;->adjustPicker(I)V
Landroid/widget/RadialTimePickerView$RadialPickerTouchHelper;->getBoundsForVirtualView(ILandroid/graphics/Rect;)V
Landroid/widget/RadialTimePickerView$RadialPickerTouchHelper;->getCircularDiff(III)I
@@ -89132,7 +83176,6 @@
Landroid/widget/RadialTimePickerView$RadialPickerTouchHelper;->SHIFT_VALUE:I
Landroid/widget/RadialTimePickerView$RadialPickerTouchHelper;->TYPE_HOUR:I
Landroid/widget/RadialTimePickerView$RadialPickerTouchHelper;->TYPE_MINUTE:I
-Landroid/widget/RadialTimePickerView;
Landroid/widget/RadialTimePickerView;-><init>(Landroid/content/Context;)V
Landroid/widget/RadialTimePickerView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
Landroid/widget/RadialTimePickerView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
@@ -89248,10 +83291,6 @@
Landroid/widget/RadialTimePickerView;->snapPrefer30s(I)I
Landroid/widget/RadialTimePickerView;->SNAP_PREFER_30S_MAP:[I
Landroid/widget/RadialTimePickerView;->TAG:Ljava/lang/String;
-Landroid/widget/RadioGroup$CheckedStateTracker;
-Landroid/widget/RadioGroup$CheckedStateTracker;-><init>()V
-Landroid/widget/RadioGroup$PassThroughHierarchyChangeListener;
-Landroid/widget/RadioGroup$PassThroughHierarchyChangeListener;-><init>()V
Landroid/widget/RadioGroup$PassThroughHierarchyChangeListener;->mOnHierarchyChangeListener:Landroid/view/ViewGroup$OnHierarchyChangeListener;
Landroid/widget/RadioGroup;->init()V
Landroid/widget/RadioGroup;->LOG_TAG:Ljava/lang/String;
@@ -89273,7 +83312,6 @@
Landroid/widget/RatingBar;->onStartTrackingTouch()V
Landroid/widget/RatingBar;->onStopTrackingTouch()V
Landroid/widget/RatingBar;->updateSecondaryProgress(I)V
-Landroid/widget/RelativeLayout$DependencyGraph$Node;
Landroid/widget/RelativeLayout$DependencyGraph$Node;->acquire(Landroid/view/View;)Landroid/widget/RelativeLayout$DependencyGraph$Node;
Landroid/widget/RelativeLayout$DependencyGraph$Node;->dependencies:Landroid/util/SparseArray;
Landroid/widget/RelativeLayout$DependencyGraph$Node;->dependents:Landroid/util/ArrayMap;
@@ -89281,12 +83319,10 @@
Landroid/widget/RelativeLayout$DependencyGraph$Node;->release()V
Landroid/widget/RelativeLayout$DependencyGraph$Node;->sPool:Landroid/util/Pools$SynchronizedPool;
Landroid/widget/RelativeLayout$DependencyGraph$Node;->view:Landroid/view/View;
-Landroid/widget/RelativeLayout$DependencyGraph;
Landroid/widget/RelativeLayout$DependencyGraph;-><init>()V
Landroid/widget/RelativeLayout$DependencyGraph;->add(Landroid/view/View;)V
Landroid/widget/RelativeLayout$DependencyGraph;->clear()V
Landroid/widget/RelativeLayout$DependencyGraph;->findRoots([I)Ljava/util/ArrayDeque;
-Landroid/widget/RelativeLayout$DependencyGraph;->getSortedViews([Landroid/view/View;[[I)V
Landroid/widget/RelativeLayout$DependencyGraph;->mKeyNodes:Landroid/util/SparseArray;
Landroid/widget/RelativeLayout$DependencyGraph;->mNodes:Ljava/util/ArrayList;
Landroid/widget/RelativeLayout$DependencyGraph;->mRoots:Ljava/util/ArrayDeque;
@@ -89301,8 +83337,6 @@
Landroid/widget/RelativeLayout$LayoutParams;->mRulesChanged:Z
Landroid/widget/RelativeLayout$LayoutParams;->resolveRules(I)V
Landroid/widget/RelativeLayout$LayoutParams;->shouldResolveLayoutDirection(I)Z
-Landroid/widget/RelativeLayout$TopToBottomLeftToRightComparator;
-Landroid/widget/RelativeLayout$TopToBottomLeftToRightComparator;-><init>()V
Landroid/widget/RelativeLayout$TopToBottomLeftToRightComparator;->compare(Landroid/view/View;Landroid/view/View;)I
Landroid/widget/RelativeLayout;->applyHorizontalSizeRules(Landroid/widget/RelativeLayout$LayoutParams;I[I)V
Landroid/widget/RelativeLayout;->applyVerticalSizeRules(Landroid/widget/RelativeLayout$LayoutParams;II)V
@@ -89338,7 +83372,6 @@
Landroid/widget/RelativeLayout;->sortChildren()V
Landroid/widget/RelativeLayout;->VALUE_NOT_SET:I
Landroid/widget/RelativeLayout;->VERB_COUNT:I
-Landroid/widget/RemoteViews$Action;
Landroid/widget/RemoteViews$Action;-><init>()V
Landroid/widget/RemoteViews$Action;->apply(Landroid/view/View;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnClickHandler;)V
Landroid/widget/RemoteViews$Action;->getActionTag()I
@@ -89352,9 +83385,6 @@
Landroid/widget/RemoteViews$Action;->setBitmapCache(Landroid/widget/RemoteViews$BitmapCache;)V
Landroid/widget/RemoteViews$Action;->visitUris(Ljava/util/function/Consumer;)V
Landroid/widget/RemoteViews$ActionException;-><init>(Ljava/lang/Throwable;)V
-Landroid/widget/RemoteViews$AsyncApplyTask;
-Landroid/widget/RemoteViews$AsyncApplyTask;-><init>(Landroid/widget/RemoteViews;Landroid/view/ViewGroup;Landroid/content/Context;Landroid/widget/RemoteViews$OnViewAppliedListener;Landroid/widget/RemoteViews$OnClickHandler;Landroid/view/View;)V
-Landroid/widget/RemoteViews$AsyncApplyTask;->doInBackground([[Ljava/lang/Void;)Landroid/widget/RemoteViews$ViewTree;
Landroid/widget/RemoteViews$AsyncApplyTask;->mActions:[Landroid/widget/RemoteViews$Action;
Landroid/widget/RemoteViews$AsyncApplyTask;->mContext:Landroid/content/Context;
Landroid/widget/RemoteViews$AsyncApplyTask;->mError:Ljava/lang/Exception;
@@ -89365,7 +83395,6 @@
Landroid/widget/RemoteViews$AsyncApplyTask;->mRV:Landroid/widget/RemoteViews;
Landroid/widget/RemoteViews$AsyncApplyTask;->mTree:Landroid/widget/RemoteViews$ViewTree;
Landroid/widget/RemoteViews$AsyncApplyTask;->onPostExecute(Landroid/widget/RemoteViews$ViewTree;)V
-Landroid/widget/RemoteViews$BitmapCache;
Landroid/widget/RemoteViews$BitmapCache;-><init>()V
Landroid/widget/RemoteViews$BitmapCache;-><init>(Landroid/os/Parcel;)V
Landroid/widget/RemoteViews$BitmapCache;->getBitmapForId(I)Landroid/graphics/Bitmap;
@@ -89373,14 +83402,10 @@
Landroid/widget/RemoteViews$BitmapCache;->getBitmapMemory()I
Landroid/widget/RemoteViews$BitmapCache;->mBitmapMemory:I
Landroid/widget/RemoteViews$BitmapCache;->writeBitmapsToParcel(Landroid/os/Parcel;I)V
-Landroid/widget/RemoteViews$BitmapReflectionAction;
-Landroid/widget/RemoteViews$BitmapReflectionAction;-><init>(ILjava/lang/String;Landroid/graphics/Bitmap;)V
-Landroid/widget/RemoteViews$BitmapReflectionAction;-><init>(Landroid/os/Parcel;)V
Landroid/widget/RemoteViews$BitmapReflectionAction;->apply(Landroid/view/View;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnClickHandler;)V
Landroid/widget/RemoteViews$BitmapReflectionAction;->bitmapId:I
Landroid/widget/RemoteViews$BitmapReflectionAction;->getActionTag()I
Landroid/widget/RemoteViews$BitmapReflectionAction;->setBitmapCache(Landroid/widget/RemoteViews$BitmapCache;)V
-Landroid/widget/RemoteViews$LayoutParamAction;
Landroid/widget/RemoteViews$LayoutParamAction;-><init>(III)V
Landroid/widget/RemoteViews$LayoutParamAction;-><init>(Landroid/os/Parcel;)V
Landroid/widget/RemoteViews$LayoutParamAction;->apply(Landroid/view/View;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnClickHandler;)V
@@ -89393,33 +83418,23 @@
Landroid/widget/RemoteViews$LayoutParamAction;->mProperty:I
Landroid/widget/RemoteViews$LayoutParamAction;->mValue:I
Landroid/widget/RemoteViews$LayoutParamAction;->resolveDimenPixelOffset(Landroid/view/View;I)I
-Landroid/widget/RemoteViews$MethodArgs;
Landroid/widget/RemoteViews$MethodArgs;-><init>()V
Landroid/widget/RemoteViews$MethodArgs;->asyncMethod:Ljava/lang/invoke/MethodHandle;
Landroid/widget/RemoteViews$MethodArgs;->asyncMethodName:Ljava/lang/String;
Landroid/widget/RemoteViews$MethodArgs;->syncMethod:Ljava/lang/invoke/MethodHandle;
-Landroid/widget/RemoteViews$MethodKey;
Landroid/widget/RemoteViews$MethodKey;-><init>()V
Landroid/widget/RemoteViews$MethodKey;->methodName:Ljava/lang/String;
Landroid/widget/RemoteViews$MethodKey;->paramClass:Ljava/lang/Class;
Landroid/widget/RemoteViews$MethodKey;->set(Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/String;)V
Landroid/widget/RemoteViews$MethodKey;->targetClass:Ljava/lang/Class;
-Landroid/widget/RemoteViews$OnClickHandler;
Landroid/widget/RemoteViews$OnClickHandler;->mEnterAnimationId:I
Landroid/widget/RemoteViews$OnClickHandler;->onClickHandler(Landroid/view/View;Landroid/app/PendingIntent;Landroid/content/Intent;I)Z
Landroid/widget/RemoteViews$OnClickHandler;->setEnterAnimationId(I)V
-Landroid/widget/RemoteViews$OnViewAppliedListener;
Landroid/widget/RemoteViews$OnViewAppliedListener;->onError(Ljava/lang/Exception;)V
Landroid/widget/RemoteViews$OnViewAppliedListener;->onViewApplied(Landroid/view/View;)V
-Landroid/widget/RemoteViews$OverrideTextColorsAction;
-Landroid/widget/RemoteViews$OverrideTextColorsAction;-><init>(I)V
-Landroid/widget/RemoteViews$OverrideTextColorsAction;-><init>(Landroid/os/Parcel;)V
Landroid/widget/RemoteViews$OverrideTextColorsAction;->apply(Landroid/view/View;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnClickHandler;)V
Landroid/widget/RemoteViews$OverrideTextColorsAction;->getActionTag()I
Landroid/widget/RemoteViews$OverrideTextColorsAction;->textColor:I
-Landroid/widget/RemoteViews$ReflectionAction;
-Landroid/widget/RemoteViews$ReflectionAction;-><init>(ILjava/lang/String;ILjava/lang/Object;)V
-Landroid/widget/RemoteViews$ReflectionAction;-><init>(Landroid/os/Parcel;)V
Landroid/widget/RemoteViews$ReflectionAction;->apply(Landroid/view/View;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnClickHandler;)V
Landroid/widget/RemoteViews$ReflectionAction;->BITMAP:I
Landroid/widget/RemoteViews$ReflectionAction;->BOOLEAN:I
@@ -89445,71 +83460,40 @@
Landroid/widget/RemoteViews$ReflectionAction;->type:I
Landroid/widget/RemoteViews$ReflectionAction;->URI:I
Landroid/widget/RemoteViews$ReflectionAction;->visitUris(Ljava/util/function/Consumer;)V
-Landroid/widget/RemoteViews$RemoteViewsContextWrapper;
Landroid/widget/RemoteViews$RemoteViewsContextWrapper;-><init>(Landroid/content/Context;Landroid/content/Context;)V
Landroid/widget/RemoteViews$RemoteViewsContextWrapper;->mContextForResources:Landroid/content/Context;
-Landroid/widget/RemoteViews$RunnableAction;
Landroid/widget/RemoteViews$RunnableAction;-><init>(Ljava/lang/Runnable;)V
Landroid/widget/RemoteViews$RunnableAction;->apply(Landroid/view/View;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnClickHandler;)V
Landroid/widget/RemoteViews$RunnableAction;->mRunnable:Ljava/lang/Runnable;
-Landroid/widget/RemoteViews$RuntimeAction;
Landroid/widget/RemoteViews$RuntimeAction;-><init>()V
Landroid/widget/RemoteViews$RuntimeAction;->getActionTag()I
-Landroid/widget/RemoteViews$SetDrawableTint;
-Landroid/widget/RemoteViews$SetDrawableTint;-><init>(IZILandroid/graphics/PorterDuff$Mode;)V
-Landroid/widget/RemoteViews$SetDrawableTint;-><init>(Landroid/os/Parcel;)V
Landroid/widget/RemoteViews$SetDrawableTint;->apply(Landroid/view/View;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnClickHandler;)V
Landroid/widget/RemoteViews$SetDrawableTint;->colorFilter:I
Landroid/widget/RemoteViews$SetDrawableTint;->filterMode:Landroid/graphics/PorterDuff$Mode;
Landroid/widget/RemoteViews$SetDrawableTint;->getActionTag()I
Landroid/widget/RemoteViews$SetDrawableTint;->targetBackground:Z
-Landroid/widget/RemoteViews$SetEmptyView;
-Landroid/widget/RemoteViews$SetEmptyView;-><init>(II)V
-Landroid/widget/RemoteViews$SetEmptyView;-><init>(Landroid/os/Parcel;)V
Landroid/widget/RemoteViews$SetEmptyView;->apply(Landroid/view/View;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnClickHandler;)V
Landroid/widget/RemoteViews$SetEmptyView;->emptyViewId:I
Landroid/widget/RemoteViews$SetEmptyView;->getActionTag()I
-Landroid/widget/RemoteViews$SetOnClickFillInIntent;
-Landroid/widget/RemoteViews$SetOnClickFillInIntent;-><init>(ILandroid/content/Intent;)V
-Landroid/widget/RemoteViews$SetOnClickFillInIntent;-><init>(Landroid/os/Parcel;)V
Landroid/widget/RemoteViews$SetOnClickFillInIntent;->apply(Landroid/view/View;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnClickHandler;)V
Landroid/widget/RemoteViews$SetOnClickFillInIntent;->fillInIntent:Landroid/content/Intent;
Landroid/widget/RemoteViews$SetOnClickFillInIntent;->getActionTag()I
-Landroid/widget/RemoteViews$SetOnClickPendingIntent;
-Landroid/widget/RemoteViews$SetOnClickPendingIntent;-><init>(ILandroid/app/PendingIntent;)V
-Landroid/widget/RemoteViews$SetOnClickPendingIntent;-><init>(Landroid/os/Parcel;)V
Landroid/widget/RemoteViews$SetOnClickPendingIntent;->apply(Landroid/view/View;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnClickHandler;)V
Landroid/widget/RemoteViews$SetOnClickPendingIntent;->getActionTag()I
-Landroid/widget/RemoteViews$SetPendingIntentTemplate;
-Landroid/widget/RemoteViews$SetPendingIntentTemplate;-><init>(ILandroid/app/PendingIntent;)V
-Landroid/widget/RemoteViews$SetPendingIntentTemplate;-><init>(Landroid/os/Parcel;)V
Landroid/widget/RemoteViews$SetPendingIntentTemplate;->apply(Landroid/view/View;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnClickHandler;)V
Landroid/widget/RemoteViews$SetPendingIntentTemplate;->getActionTag()I
-Landroid/widget/RemoteViews$SetRemoteInputsAction;
-Landroid/widget/RemoteViews$SetRemoteInputsAction;-><init>(I[Landroid/app/RemoteInput;)V
-Landroid/widget/RemoteViews$SetRemoteInputsAction;-><init>(Landroid/os/Parcel;)V
Landroid/widget/RemoteViews$SetRemoteInputsAction;->apply(Landroid/view/View;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnClickHandler;)V
Landroid/widget/RemoteViews$SetRemoteInputsAction;->getActionTag()I
Landroid/widget/RemoteViews$SetRemoteInputsAction;->remoteInputs:[Landroid/os/Parcelable;
-Landroid/widget/RemoteViews$SetRemoteViewsAdapterIntent;
-Landroid/widget/RemoteViews$SetRemoteViewsAdapterIntent;-><init>(ILandroid/content/Intent;)V
-Landroid/widget/RemoteViews$SetRemoteViewsAdapterIntent;-><init>(Landroid/os/Parcel;)V
Landroid/widget/RemoteViews$SetRemoteViewsAdapterIntent;->apply(Landroid/view/View;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnClickHandler;)V
Landroid/widget/RemoteViews$SetRemoteViewsAdapterIntent;->getActionTag()I
Landroid/widget/RemoteViews$SetRemoteViewsAdapterIntent;->initActionAsync(Landroid/widget/RemoteViews$ViewTree;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnClickHandler;)Landroid/widget/RemoteViews$Action;
Landroid/widget/RemoteViews$SetRemoteViewsAdapterIntent;->intent:Landroid/content/Intent;
Landroid/widget/RemoteViews$SetRemoteViewsAdapterIntent;->isAsync:Z
-Landroid/widget/RemoteViews$SetRemoteViewsAdapterList;
-Landroid/widget/RemoteViews$SetRemoteViewsAdapterList;-><init>(ILjava/util/ArrayList;I)V
-Landroid/widget/RemoteViews$SetRemoteViewsAdapterList;-><init>(Landroid/os/Parcel;)V
Landroid/widget/RemoteViews$SetRemoteViewsAdapterList;->apply(Landroid/view/View;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnClickHandler;)V
Landroid/widget/RemoteViews$SetRemoteViewsAdapterList;->getActionTag()I
Landroid/widget/RemoteViews$SetRemoteViewsAdapterList;->list:Ljava/util/ArrayList;
Landroid/widget/RemoteViews$SetRemoteViewsAdapterList;->viewTypeCount:I
-Landroid/widget/RemoteViews$TextViewDrawableAction;
-Landroid/widget/RemoteViews$TextViewDrawableAction;-><init>(IZIIII)V
-Landroid/widget/RemoteViews$TextViewDrawableAction;-><init>(IZLandroid/graphics/drawable/Icon;Landroid/graphics/drawable/Icon;Landroid/graphics/drawable/Icon;Landroid/graphics/drawable/Icon;)V
-Landroid/widget/RemoteViews$TextViewDrawableAction;-><init>(Landroid/os/Parcel;)V
Landroid/widget/RemoteViews$TextViewDrawableAction;->apply(Landroid/view/View;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnClickHandler;)V
Landroid/widget/RemoteViews$TextViewDrawableAction;->d1:I
Landroid/widget/RemoteViews$TextViewDrawableAction;->d2:I
@@ -89530,24 +83514,14 @@
Landroid/widget/RemoteViews$TextViewDrawableAction;->prefersAsyncApply()Z
Landroid/widget/RemoteViews$TextViewDrawableAction;->useIcons:Z
Landroid/widget/RemoteViews$TextViewDrawableAction;->visitUris(Ljava/util/function/Consumer;)V
-Landroid/widget/RemoteViews$TextViewSizeAction;
-Landroid/widget/RemoteViews$TextViewSizeAction;-><init>(IIF)V
-Landroid/widget/RemoteViews$TextViewSizeAction;-><init>(Landroid/os/Parcel;)V
Landroid/widget/RemoteViews$TextViewSizeAction;->apply(Landroid/view/View;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnClickHandler;)V
Landroid/widget/RemoteViews$TextViewSizeAction;->getActionTag()I
Landroid/widget/RemoteViews$TextViewSizeAction;->size:F
Landroid/widget/RemoteViews$TextViewSizeAction;->units:I
-Landroid/widget/RemoteViews$ViewContentNavigation;
-Landroid/widget/RemoteViews$ViewContentNavigation;-><init>(IZ)V
-Landroid/widget/RemoteViews$ViewContentNavigation;-><init>(Landroid/os/Parcel;)V
Landroid/widget/RemoteViews$ViewContentNavigation;->apply(Landroid/view/View;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnClickHandler;)V
Landroid/widget/RemoteViews$ViewContentNavigation;->getActionTag()I
Landroid/widget/RemoteViews$ViewContentNavigation;->mergeBehavior()I
Landroid/widget/RemoteViews$ViewContentNavigation;->mNext:Z
-Landroid/widget/RemoteViews$ViewGroupActionAdd;
-Landroid/widget/RemoteViews$ViewGroupActionAdd;-><init>(ILandroid/widget/RemoteViews;)V
-Landroid/widget/RemoteViews$ViewGroupActionAdd;-><init>(ILandroid/widget/RemoteViews;I)V
-Landroid/widget/RemoteViews$ViewGroupActionAdd;-><init>(Landroid/os/Parcel;Landroid/widget/RemoteViews$BitmapCache;Landroid/content/pm/ApplicationInfo;ILjava/util/Map;)V
Landroid/widget/RemoteViews$ViewGroupActionAdd;->apply(Landroid/view/View;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnClickHandler;)V
Landroid/widget/RemoteViews$ViewGroupActionAdd;->getActionTag()I
Landroid/widget/RemoteViews$ViewGroupActionAdd;->hasSameAppInfo(Landroid/content/pm/ApplicationInfo;)Z
@@ -89556,10 +83530,6 @@
Landroid/widget/RemoteViews$ViewGroupActionAdd;->mIndex:I
Landroid/widget/RemoteViews$ViewGroupActionAdd;->prefersAsyncApply()Z
Landroid/widget/RemoteViews$ViewGroupActionAdd;->setBitmapCache(Landroid/widget/RemoteViews$BitmapCache;)V
-Landroid/widget/RemoteViews$ViewGroupActionRemove;
-Landroid/widget/RemoteViews$ViewGroupActionRemove;-><init>(I)V
-Landroid/widget/RemoteViews$ViewGroupActionRemove;-><init>(II)V
-Landroid/widget/RemoteViews$ViewGroupActionRemove;-><init>(Landroid/os/Parcel;)V
Landroid/widget/RemoteViews$ViewGroupActionRemove;->apply(Landroid/view/View;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnClickHandler;)V
Landroid/widget/RemoteViews$ViewGroupActionRemove;->getActionTag()I
Landroid/widget/RemoteViews$ViewGroupActionRemove;->initActionAsync(Landroid/widget/RemoteViews$ViewTree;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnClickHandler;)Landroid/widget/RemoteViews$Action;
@@ -89567,16 +83537,12 @@
Landroid/widget/RemoteViews$ViewGroupActionRemove;->mViewIdToKeep:I
Landroid/widget/RemoteViews$ViewGroupActionRemove;->removeAllViewsExceptIdToKeep(Landroid/view/ViewGroup;)V
Landroid/widget/RemoteViews$ViewGroupActionRemove;->REMOVE_ALL_VIEWS_ID:I
-Landroid/widget/RemoteViews$ViewPaddingAction;
-Landroid/widget/RemoteViews$ViewPaddingAction;-><init>(IIIII)V
-Landroid/widget/RemoteViews$ViewPaddingAction;-><init>(Landroid/os/Parcel;)V
Landroid/widget/RemoteViews$ViewPaddingAction;->apply(Landroid/view/View;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnClickHandler;)V
Landroid/widget/RemoteViews$ViewPaddingAction;->bottom:I
Landroid/widget/RemoteViews$ViewPaddingAction;->getActionTag()I
Landroid/widget/RemoteViews$ViewPaddingAction;->left:I
Landroid/widget/RemoteViews$ViewPaddingAction;->right:I
Landroid/widget/RemoteViews$ViewPaddingAction;->top:I
-Landroid/widget/RemoteViews$ViewTree;
Landroid/widget/RemoteViews$ViewTree;-><init>(Landroid/view/View;)V
Landroid/widget/RemoteViews$ViewTree;->addChild(Landroid/widget/RemoteViews$ViewTree;)V
Landroid/widget/RemoteViews$ViewTree;->addChild(Landroid/widget/RemoteViews$ViewTree;I)V
@@ -89673,11 +83639,9 @@
Landroid/widget/RemoteViews;->visitIconUri(Landroid/graphics/drawable/Icon;Ljava/util/function/Consumer;)V
Landroid/widget/RemoteViews;->visitUris(Ljava/util/function/Consumer;)V
Landroid/widget/RemoteViews;->writeActionsToParcel(Landroid/os/Parcel;)V
-Landroid/widget/RemoteViewsAdapter$AsyncRemoteAdapterAction;
Landroid/widget/RemoteViewsAdapter$AsyncRemoteAdapterAction;-><init>(Landroid/widget/RemoteViewsAdapter$RemoteAdapterConnectionCallback;Landroid/content/Intent;)V
Landroid/widget/RemoteViewsAdapter$AsyncRemoteAdapterAction;->mCallback:Landroid/widget/RemoteViewsAdapter$RemoteAdapterConnectionCallback;
Landroid/widget/RemoteViewsAdapter$AsyncRemoteAdapterAction;->mIntent:Landroid/content/Intent;
-Landroid/widget/RemoteViewsAdapter$FixedSizeRemoteViewsCache;
Landroid/widget/RemoteViewsAdapter$FixedSizeRemoteViewsCache;-><init>(I)V
Landroid/widget/RemoteViewsAdapter$FixedSizeRemoteViewsCache;->commitTemporaryMetaData()V
Landroid/widget/RemoteViewsAdapter$FixedSizeRemoteViewsCache;->containsMetaDataAt(I)Z
@@ -89705,20 +83669,16 @@
Landroid/widget/RemoteViewsAdapter$FixedSizeRemoteViewsCache;->reset()V
Landroid/widget/RemoteViewsAdapter$FixedSizeRemoteViewsCache;->sMaxCountSlackPercent:F
Landroid/widget/RemoteViewsAdapter$FixedSizeRemoteViewsCache;->sMaxMemoryLimitInBytes:I
-Landroid/widget/RemoteViewsAdapter$HandlerThreadExecutor;
Landroid/widget/RemoteViewsAdapter$HandlerThreadExecutor;-><init>(Landroid/os/HandlerThread;)V
Landroid/widget/RemoteViewsAdapter$HandlerThreadExecutor;->mThread:Landroid/os/HandlerThread;
-Landroid/widget/RemoteViewsAdapter$LoadingViewTemplate;
Landroid/widget/RemoteViewsAdapter$LoadingViewTemplate;-><init>(Landroid/widget/RemoteViews;Landroid/content/Context;)V
Landroid/widget/RemoteViewsAdapter$LoadingViewTemplate;->defaultHeight:I
Landroid/widget/RemoteViewsAdapter$LoadingViewTemplate;->loadFirstViewHeight(Landroid/widget/RemoteViews;Landroid/content/Context;Ljava/util/concurrent/Executor;)V
Landroid/widget/RemoteViewsAdapter$LoadingViewTemplate;->remoteViews:Landroid/widget/RemoteViews;
-Landroid/widget/RemoteViewsAdapter$RemoteAdapterConnectionCallback;
Landroid/widget/RemoteViewsAdapter$RemoteAdapterConnectionCallback;->deferNotifyDataSetChanged()V
Landroid/widget/RemoteViewsAdapter$RemoteAdapterConnectionCallback;->onRemoteAdapterConnected()Z
Landroid/widget/RemoteViewsAdapter$RemoteAdapterConnectionCallback;->onRemoteAdapterDisconnected()V
Landroid/widget/RemoteViewsAdapter$RemoteAdapterConnectionCallback;->setRemoteViewsAdapter(Landroid/content/Intent;Z)V
-Landroid/widget/RemoteViewsAdapter$RemoteServiceHandler;
Landroid/widget/RemoteViewsAdapter$RemoteServiceHandler;-><init>(Landroid/os/Looper;Landroid/widget/RemoteViewsAdapter;Landroid/content/Context;)V
Landroid/widget/RemoteViewsAdapter$RemoteServiceHandler;->enqueueDeferredUnbindServiceMessage()V
Landroid/widget/RemoteViewsAdapter$RemoteServiceHandler;->mAdapter:Ljava/lang/ref/WeakReference;
@@ -89728,27 +83688,21 @@
Landroid/widget/RemoteViewsAdapter$RemoteServiceHandler;->mRemoteViewsFactory:Lcom/android/internal/widget/IRemoteViewsFactory;
Landroid/widget/RemoteViewsAdapter$RemoteServiceHandler;->sendNotifyDataSetChange(Z)Z
Landroid/widget/RemoteViewsAdapter$RemoteServiceHandler;->unbindNow()V
-Landroid/widget/RemoteViewsAdapter$RemoteViewsCacheKey;
Landroid/widget/RemoteViewsAdapter$RemoteViewsCacheKey;-><init>(Landroid/content/Intent$FilterComparison;I)V
Landroid/widget/RemoteViewsAdapter$RemoteViewsCacheKey;->filter:Landroid/content/Intent$FilterComparison;
Landroid/widget/RemoteViewsAdapter$RemoteViewsCacheKey;->widgetId:I
-Landroid/widget/RemoteViewsAdapter$RemoteViewsFrameLayout;
Landroid/widget/RemoteViewsAdapter$RemoteViewsFrameLayout;-><init>(Landroid/content/Context;Landroid/widget/RemoteViewsAdapter$FixedSizeRemoteViewsCache;)V
Landroid/widget/RemoteViewsAdapter$RemoteViewsFrameLayout;->cacheIndex:I
Landroid/widget/RemoteViewsAdapter$RemoteViewsFrameLayout;->getRemoteContext()Landroid/content/Context;
Landroid/widget/RemoteViewsAdapter$RemoteViewsFrameLayout;->mCache:Landroid/widget/RemoteViewsAdapter$FixedSizeRemoteViewsCache;
Landroid/widget/RemoteViewsAdapter$RemoteViewsFrameLayout;->onRemoteViewsLoaded(Landroid/widget/RemoteViews;Landroid/widget/RemoteViews$OnClickHandler;Z)V
-Landroid/widget/RemoteViewsAdapter$RemoteViewsFrameLayoutRefSet;
-Landroid/widget/RemoteViewsAdapter$RemoteViewsFrameLayoutRefSet;-><init>()V
Landroid/widget/RemoteViewsAdapter$RemoteViewsFrameLayoutRefSet;->add(ILandroid/widget/RemoteViewsAdapter$RemoteViewsFrameLayout;)V
Landroid/widget/RemoteViewsAdapter$RemoteViewsFrameLayoutRefSet;->notifyOnRemoteViewsLoaded(ILandroid/widget/RemoteViews;)V
Landroid/widget/RemoteViewsAdapter$RemoteViewsFrameLayoutRefSet;->removeView(Landroid/widget/RemoteViewsAdapter$RemoteViewsFrameLayout;)V
-Landroid/widget/RemoteViewsAdapter$RemoteViewsIndexMetaData;
Landroid/widget/RemoteViewsAdapter$RemoteViewsIndexMetaData;-><init>(Landroid/widget/RemoteViews;J)V
Landroid/widget/RemoteViewsAdapter$RemoteViewsIndexMetaData;->itemId:J
Landroid/widget/RemoteViewsAdapter$RemoteViewsIndexMetaData;->set(Landroid/widget/RemoteViews;J)V
Landroid/widget/RemoteViewsAdapter$RemoteViewsIndexMetaData;->typeId:I
-Landroid/widget/RemoteViewsAdapter$RemoteViewsMetaData;
Landroid/widget/RemoteViewsAdapter$RemoteViewsMetaData;-><init>()V
Landroid/widget/RemoteViewsAdapter$RemoteViewsMetaData;->count:I
Landroid/widget/RemoteViewsAdapter$RemoteViewsMetaData;->getLoadingTemplate(Landroid/content/Context;)Landroid/widget/RemoteViewsAdapter$LoadingViewTemplate;
@@ -89760,7 +83714,6 @@
Landroid/widget/RemoteViewsAdapter$RemoteViewsMetaData;->reset()V
Landroid/widget/RemoteViewsAdapter$RemoteViewsMetaData;->set(Landroid/widget/RemoteViewsAdapter$RemoteViewsMetaData;)V
Landroid/widget/RemoteViewsAdapter$RemoteViewsMetaData;->viewTypeCount:I
-Landroid/widget/RemoteViewsAdapter;
Landroid/widget/RemoteViewsAdapter;-><init>(Landroid/content/Context;Landroid/content/Intent;Landroid/widget/RemoteViewsAdapter$RemoteAdapterConnectionCallback;Z)V
Landroid/widget/RemoteViewsAdapter;->DEFAULT_CACHE_SIZE:I
Landroid/widget/RemoteViewsAdapter;->DEFAULT_LOADING_VIEW_HEIGHT:I
@@ -89798,7 +83751,6 @@
Landroid/widget/RemoteViewsAdapter;->UNBIND_SERVICE_DELAY:I
Landroid/widget/RemoteViewsAdapter;->updateRemoteViews(Lcom/android/internal/widget/IRemoteViewsFactory;IZ)V
Landroid/widget/RemoteViewsAdapter;->updateTemporaryMetaData(Lcom/android/internal/widget/IRemoteViewsFactory;)V
-Landroid/widget/RemoteViewsListAdapter;
Landroid/widget/RemoteViewsListAdapter;-><init>(Landroid/content/Context;Ljava/util/ArrayList;I)V
Landroid/widget/RemoteViewsListAdapter;->init()V
Landroid/widget/RemoteViewsListAdapter;->mContext:Landroid/content/Context;
@@ -89806,7 +83758,6 @@
Landroid/widget/RemoteViewsListAdapter;->mViewTypeCount:I
Landroid/widget/RemoteViewsListAdapter;->mViewTypes:Ljava/util/ArrayList;
Landroid/widget/RemoteViewsListAdapter;->setViewsList(Ljava/util/ArrayList;)V
-Landroid/widget/RemoteViewsService$RemoteViewsFactoryAdapter;
Landroid/widget/RemoteViewsService$RemoteViewsFactoryAdapter;-><init>(Landroid/widget/RemoteViewsService$RemoteViewsFactory;Z)V
Landroid/widget/RemoteViewsService$RemoteViewsFactoryAdapter;->getCount()I
Landroid/widget/RemoteViewsService$RemoteViewsFactoryAdapter;->getItemId(I)J
@@ -89832,7 +83783,6 @@
Landroid/widget/ResourceCursorTreeAdapter;->mExpandedGroupLayout:I
Landroid/widget/ResourceCursorTreeAdapter;->mInflater:Landroid/view/LayoutInflater;
Landroid/widget/ResourceCursorTreeAdapter;->mLastChildLayout:I
-Landroid/widget/RtlSpacingHelper;
Landroid/widget/RtlSpacingHelper;-><init>()V
Landroid/widget/RtlSpacingHelper;->getEnd()I
Landroid/widget/RtlSpacingHelper;->getLeft()I
@@ -89850,7 +83800,6 @@
Landroid/widget/RtlSpacingHelper;->setDirection(Z)V
Landroid/widget/RtlSpacingHelper;->setRelative(II)V
Landroid/widget/RtlSpacingHelper;->UNDEFINED:I
-Landroid/widget/ScrollBarDrawable;
Landroid/widget/ScrollBarDrawable;->drawThumb(Landroid/graphics/Canvas;Landroid/graphics/Rect;IIZ)V
Landroid/widget/ScrollBarDrawable;->drawTrack(Landroid/graphics/Canvas;Landroid/graphics/Rect;Z)V
Landroid/widget/ScrollBarDrawable;->getAlwaysDrawHorizontalTrack()Z
@@ -89878,7 +83827,6 @@
Landroid/widget/ScrollBarDrawable;->setHorizontalTrackDrawable(Landroid/graphics/drawable/Drawable;)V
Landroid/widget/ScrollBarDrawable;->setParameters(IIIZ)V
Landroid/widget/ScrollBarDrawable;->setVerticalTrackDrawable(Landroid/graphics/drawable/Drawable;)V
-Landroid/widget/Scroller$ViscousFluidInterpolator;
Landroid/widget/Scroller$ViscousFluidInterpolator;-><init>()V
Landroid/widget/Scroller$ViscousFluidInterpolator;->viscousFluid(F)F
Landroid/widget/Scroller$ViscousFluidInterpolator;->VISCOUS_FLUID_NORMALIZE:F
@@ -89921,7 +83869,6 @@
Landroid/widget/Scroller;->SPLINE_POSITION:[F
Landroid/widget/Scroller;->SPLINE_TIME:[F
Landroid/widget/Scroller;->START_TENSION:F
-Landroid/widget/ScrollView$SavedState;
Landroid/widget/ScrollView$SavedState;-><init>(Landroid/os/Parcel;)V
Landroid/widget/ScrollView$SavedState;-><init>(Landroid/os/Parcelable;)V
Landroid/widget/ScrollView$SavedState;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -89964,12 +83911,10 @@
Landroid/widget/ScrollView;->scrollToChild(Landroid/view/View;)V
Landroid/widget/ScrollView;->scrollToChildRect(Landroid/graphics/Rect;Z)Z
Landroid/widget/ScrollView;->TAG:Ljava/lang/String;
-Landroid/widget/SearchView$SavedState;
Landroid/widget/SearchView$SavedState;-><init>(Landroid/os/Parcel;)V
Landroid/widget/SearchView$SavedState;-><init>(Landroid/os/Parcelable;)V
Landroid/widget/SearchView$SavedState;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/widget/SearchView$SavedState;->isIconified:Z
-Landroid/widget/SearchView$SearchAutoComplete;
Landroid/widget/SearchView$SearchAutoComplete;-><init>(Landroid/content/Context;)V
Landroid/widget/SearchView$SearchAutoComplete;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
Landroid/widget/SearchView$SearchAutoComplete;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V
@@ -89982,7 +83927,6 @@
Landroid/widget/SearchView$SearchAutoComplete;->setImeVisibility(Z)V
Landroid/widget/SearchView$SearchAutoComplete;->setSearchView(Landroid/widget/SearchView;)V
Landroid/widget/SearchView$SearchAutoComplete;->showSoftInputIfNecessary()V
-Landroid/widget/SearchView$UpdatableTouchDelegate;
Landroid/widget/SearchView$UpdatableTouchDelegate;-><init>(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/view/View;)V
Landroid/widget/SearchView$UpdatableTouchDelegate;->mActualBounds:Landroid/graphics/Rect;
Landroid/widget/SearchView$UpdatableTouchDelegate;->mDelegateTargeted:Z
@@ -90065,7 +84009,6 @@
Landroid/widget/SeekBar;->onInitializeAccessibilityNodeInfoInternal(Landroid/view/accessibility/AccessibilityNodeInfo;)V
Landroid/widget/SeekBar;->onStartTrackingTouch()V
Landroid/widget/SeekBar;->onStopTrackingTouch()V
-Landroid/widget/SelectionActionModeHelper$SelectionMetricsLogger;
Landroid/widget/SelectionActionModeHelper$SelectionMetricsLogger;-><init>(Landroid/widget/TextView;)V
Landroid/widget/SelectionActionModeHelper$SelectionMetricsLogger;->countWordsBackward(I)I
Landroid/widget/SelectionActionModeHelper$SelectionMetricsLogger;->countWordsForward(I)I
@@ -90085,18 +84028,14 @@
Landroid/widget/SelectionActionModeHelper$SelectionMetricsLogger;->mText:Ljava/lang/String;
Landroid/widget/SelectionActionModeHelper$SelectionMetricsLogger;->mTokenIterator:Ljava/text/BreakIterator;
Landroid/widget/SelectionActionModeHelper$SelectionMetricsLogger;->PATTERN_WHITESPACE:Ljava/util/regex/Pattern;
-Landroid/widget/SelectionActionModeHelper$SelectionResult;
Landroid/widget/SelectionActionModeHelper$SelectionResult;-><init>(IILandroid/view/textclassifier/TextClassification;Landroid/view/textclassifier/TextSelection;)V
Landroid/widget/SelectionActionModeHelper$SelectionResult;->mClassification:Landroid/view/textclassifier/TextClassification;
Landroid/widget/SelectionActionModeHelper$SelectionResult;->mEnd:I
Landroid/widget/SelectionActionModeHelper$SelectionResult;->mSelection:Landroid/view/textclassifier/TextSelection;
Landroid/widget/SelectionActionModeHelper$SelectionResult;->mStart:I
-Landroid/widget/SelectionActionModeHelper$SelectionTracker$LogAbandonRunnable;
-Landroid/widget/SelectionActionModeHelper$SelectionTracker$LogAbandonRunnable;-><init>()V
Landroid/widget/SelectionActionModeHelper$SelectionTracker$LogAbandonRunnable;->flush()V
Landroid/widget/SelectionActionModeHelper$SelectionTracker$LogAbandonRunnable;->mIsPending:Z
Landroid/widget/SelectionActionModeHelper$SelectionTracker$LogAbandonRunnable;->schedule(I)V
-Landroid/widget/SelectionActionModeHelper$SelectionTracker;
Landroid/widget/SelectionActionModeHelper$SelectionTracker;-><init>(Landroid/widget/TextView;)V
Landroid/widget/SelectionActionModeHelper$SelectionTracker;->isSelectionStarted()Z
Landroid/widget/SelectionActionModeHelper$SelectionTracker;->mAllowReset:Z
@@ -90117,9 +84056,7 @@
Landroid/widget/SelectionActionModeHelper$SelectionTracker;->onSmartSelection(Landroid/widget/SelectionActionModeHelper$SelectionResult;)V
Landroid/widget/SelectionActionModeHelper$SelectionTracker;->onTextChanged(IILandroid/view/textclassifier/TextClassification;)V
Landroid/widget/SelectionActionModeHelper$SelectionTracker;->resetSelection(ILandroid/widget/Editor;)Z
-Landroid/widget/SelectionActionModeHelper$TextClassificationAsyncTask;
Landroid/widget/SelectionActionModeHelper$TextClassificationAsyncTask;-><init>(Landroid/widget/TextView;ILjava/util/function/Supplier;Ljava/util/function/Consumer;Ljava/util/function/Supplier;)V
-Landroid/widget/SelectionActionModeHelper$TextClassificationAsyncTask;->doInBackground([[Ljava/lang/Void;)Landroid/widget/SelectionActionModeHelper$SelectionResult;
Landroid/widget/SelectionActionModeHelper$TextClassificationAsyncTask;->mOriginalText:Ljava/lang/String;
Landroid/widget/SelectionActionModeHelper$TextClassificationAsyncTask;->mSelectionResultCallback:Ljava/util/function/Consumer;
Landroid/widget/SelectionActionModeHelper$TextClassificationAsyncTask;->mSelectionResultSupplier:Ljava/util/function/Supplier;
@@ -90128,7 +84065,6 @@
Landroid/widget/SelectionActionModeHelper$TextClassificationAsyncTask;->mTimeOutResultSupplier:Ljava/util/function/Supplier;
Landroid/widget/SelectionActionModeHelper$TextClassificationAsyncTask;->onPostExecute(Landroid/widget/SelectionActionModeHelper$SelectionResult;)V
Landroid/widget/SelectionActionModeHelper$TextClassificationAsyncTask;->onTimeOut()V
-Landroid/widget/SelectionActionModeHelper$TextClassificationHelper;
Landroid/widget/SelectionActionModeHelper$TextClassificationHelper;-><init>(Landroid/content/Context;Ljava/util/function/Supplier;Ljava/lang/CharSequence;IILandroid/os/LocaleList;)V
Landroid/widget/SelectionActionModeHelper$TextClassificationHelper;->classifyText()Landroid/widget/SelectionActionModeHelper$SelectionResult;
Landroid/widget/SelectionActionModeHelper$TextClassificationHelper;->getOriginalSelection()Landroid/widget/SelectionActionModeHelper$SelectionResult;
@@ -90155,7 +84091,6 @@
Landroid/widget/SelectionActionModeHelper$TextClassificationHelper;->suggestSelection()Landroid/widget/SelectionActionModeHelper$SelectionResult;
Landroid/widget/SelectionActionModeHelper$TextClassificationHelper;->trimText()V
Landroid/widget/SelectionActionModeHelper$TextClassificationHelper;->TRIM_DELTA:I
-Landroid/widget/SelectionActionModeHelper;
Landroid/widget/SelectionActionModeHelper;-><init>(Landroid/widget/Editor;)V
Landroid/widget/SelectionActionModeHelper;->cancelAsyncTask()V
Landroid/widget/SelectionActionModeHelper;->cancelSmartSelectAnimation()V
@@ -90192,11 +84127,7 @@
Landroid/widget/SelectionActionModeHelper;->startSelectionActionMode(Landroid/widget/SelectionActionModeHelper$SelectionResult;)V
Landroid/widget/SelectionActionModeHelper;->startSelectionActionModeAsync(Z)V
Landroid/widget/SelectionActionModeHelper;->startSelectionActionModeWithSmartSelectAnimation(Landroid/widget/SelectionActionModeHelper$SelectionResult;)V
-Landroid/widget/ShareActionProvider$ShareActivityChooserModelPolicy;
-Landroid/widget/ShareActionProvider$ShareActivityChooserModelPolicy;-><init>()V
Landroid/widget/ShareActionProvider$ShareActivityChooserModelPolicy;->onChooseActivity(Landroid/widget/ActivityChooserModel;Landroid/content/Intent;)Z
-Landroid/widget/ShareActionProvider$ShareMenuItemOnMenuItemClickListener;
-Landroid/widget/ShareActionProvider$ShareMenuItemOnMenuItemClickListener;-><init>()V
Landroid/widget/ShareActionProvider;->DEFAULT_INITIAL_ACTIVITY_COUNT:I
Landroid/widget/ShareActionProvider;->mContext:Landroid/content/Context;
Landroid/widget/ShareActionProvider;->mMaxShownActivityCount:I
@@ -90205,8 +84136,6 @@
Landroid/widget/ShareActionProvider;->mOnShareTargetSelectedListener:Landroid/widget/ShareActionProvider$OnShareTargetSelectedListener;
Landroid/widget/ShareActionProvider;->mShareHistoryFileName:Ljava/lang/String;
Landroid/widget/ShareActionProvider;->setActivityChooserPolicyIfNeeded()V
-Landroid/widget/SimpleAdapter$SimpleFilter;
-Landroid/widget/SimpleAdapter$SimpleFilter;-><init>()V
Landroid/widget/SimpleAdapter;->bindView(ILandroid/view/View;)V
Landroid/widget/SimpleAdapter;->createViewFromResource(Landroid/view/LayoutInflater;ILandroid/view/View;Landroid/view/ViewGroup;I)Landroid/view/View;
Landroid/widget/SimpleAdapter;->mDropDownInflater:Landroid/view/LayoutInflater;
@@ -90245,8 +84174,6 @@
Landroid/widget/SimpleExpandableListAdapter;->mGroupTo:[I
Landroid/widget/SimpleExpandableListAdapter;->mInflater:Landroid/view/LayoutInflater;
Landroid/widget/SimpleExpandableListAdapter;->mLastChildLayout:I
-Landroid/widget/SlidingDrawer$DrawerToggler;
-Landroid/widget/SlidingDrawer$DrawerToggler;-><init>()V
Landroid/widget/SlidingDrawer;->animateClose(IZ)V
Landroid/widget/SlidingDrawer;->animateOpen(IZ)V
Landroid/widget/SlidingDrawer;->ANIMATION_FRAME_DURATION:I
@@ -90295,10 +84222,8 @@
Landroid/widget/SlidingDrawer;->stopTracking(Z)V
Landroid/widget/SlidingDrawer;->TAP_THRESHOLD:I
Landroid/widget/SlidingDrawer;->VELOCITY_UNITS:I
-Landroid/widget/SmartSelectSprite$RectangleList$DisplayType;
Landroid/widget/SmartSelectSprite$RectangleList$DisplayType;->POLYGON:I
Landroid/widget/SmartSelectSprite$RectangleList$DisplayType;->RECTANGLES:I
-Landroid/widget/SmartSelectSprite$RectangleList;
Landroid/widget/SmartSelectSprite$RectangleList;-><init>(Ljava/util/List;)V
Landroid/widget/SmartSelectSprite$RectangleList;->drawPolygon(Landroid/graphics/Canvas;Landroid/graphics/Paint;)V
Landroid/widget/SmartSelectSprite$RectangleList;->drawRectangles(Landroid/graphics/Canvas;Landroid/graphics/Paint;)V
@@ -90313,17 +84238,14 @@
Landroid/widget/SmartSelectSprite$RectangleList;->setDisplayType(I)V
Landroid/widget/SmartSelectSprite$RectangleList;->setLeftBoundary(F)V
Landroid/widget/SmartSelectSprite$RectangleList;->setRightBoundary(F)V
-Landroid/widget/SmartSelectSprite$RectangleWithTextSelectionLayout;
Landroid/widget/SmartSelectSprite$RectangleWithTextSelectionLayout;-><init>(Landroid/graphics/RectF;I)V
Landroid/widget/SmartSelectSprite$RectangleWithTextSelectionLayout;->getRectangle()Landroid/graphics/RectF;
Landroid/widget/SmartSelectSprite$RectangleWithTextSelectionLayout;->getTextSelectionLayout()I
Landroid/widget/SmartSelectSprite$RectangleWithTextSelectionLayout;->mRectangle:Landroid/graphics/RectF;
Landroid/widget/SmartSelectSprite$RectangleWithTextSelectionLayout;->mTextSelectionLayout:I
-Landroid/widget/SmartSelectSprite$RoundedRectangleShape$ExpansionDirection;
Landroid/widget/SmartSelectSprite$RoundedRectangleShape$ExpansionDirection;->CENTER:I
Landroid/widget/SmartSelectSprite$RoundedRectangleShape$ExpansionDirection;->LEFT:I
Landroid/widget/SmartSelectSprite$RoundedRectangleShape$ExpansionDirection;->RIGHT:I
-Landroid/widget/SmartSelectSprite$RoundedRectangleShape;
Landroid/widget/SmartSelectSprite$RoundedRectangleShape;-><init>(Landroid/graphics/RectF;IZ)V
Landroid/widget/SmartSelectSprite$RoundedRectangleShape;->getAdjustedCornerRadius()F
Landroid/widget/SmartSelectSprite$RoundedRectangleShape;->getBoundingWidth()F
@@ -90343,7 +84265,6 @@
Landroid/widget/SmartSelectSprite$RoundedRectangleShape;->setEndBoundary(F)V
Landroid/widget/SmartSelectSprite$RoundedRectangleShape;->setRoundRatio(F)V
Landroid/widget/SmartSelectSprite$RoundedRectangleShape;->setStartBoundary(F)V
-Landroid/widget/SmartSelectSprite;
Landroid/widget/SmartSelectSprite;-><init>(Landroid/content/Context;ILjava/lang/Runnable;)V
Landroid/widget/SmartSelectSprite;->cancelAnimation()V
Landroid/widget/SmartSelectSprite;->contains(Landroid/graphics/RectF;Landroid/graphics/PointF;)Z
@@ -90366,8 +84287,6 @@
Landroid/widget/SmartSelectSprite;->setUpAnimatorListener(Landroid/animation/Animator;Ljava/lang/Runnable;)V
Landroid/widget/SmartSelectSprite;->startAnimation(Landroid/graphics/PointF;Ljava/util/List;Ljava/lang/Runnable;)V
Landroid/widget/Space;->getDefaultSize2(II)I
-Landroid/widget/SpellChecker$SpellParser;
-Landroid/widget/SpellChecker$SpellParser;-><init>()V
Landroid/widget/SpellChecker$SpellParser;->isFinished()Z
Landroid/widget/SpellChecker$SpellParser;->mRange:Ljava/lang/Object;
Landroid/widget/SpellChecker$SpellParser;->parse()V
@@ -90376,7 +84295,6 @@
Landroid/widget/SpellChecker$SpellParser;->removeSpansAt(Landroid/text/Editable;I[Ljava/lang/Object;)V
Landroid/widget/SpellChecker$SpellParser;->setRangeSpan(Landroid/text/Editable;II)V
Landroid/widget/SpellChecker$SpellParser;->stop()V
-Landroid/widget/SpellChecker;
Landroid/widget/SpellChecker;-><init>(Landroid/widget/TextView;)V
Landroid/widget/SpellChecker;->addSpellCheckSpan(Landroid/text/Editable;II)V
Landroid/widget/SpellChecker;->AVERAGE_WORD_LENGTH:I
@@ -90415,8 +84333,6 @@
Landroid/widget/SpellChecker;->TAG:Ljava/lang/String;
Landroid/widget/SpellChecker;->USE_SPAN_RANGE:I
Landroid/widget/SpellChecker;->WORD_ITERATOR_INTERVAL:I
-Landroid/widget/Spinner$DialogPopup;
-Landroid/widget/Spinner$DialogPopup;-><init>()V
Landroid/widget/Spinner$DialogPopup;->dismiss()V
Landroid/widget/Spinner$DialogPopup;->getBackground()Landroid/graphics/drawable/Drawable;
Landroid/widget/Spinner$DialogPopup;->getHintText()Ljava/lang/CharSequence;
@@ -90431,24 +84347,19 @@
Landroid/widget/Spinner$DialogPopup;->setPromptText(Ljava/lang/CharSequence;)V
Landroid/widget/Spinner$DialogPopup;->setVerticalOffset(I)V
Landroid/widget/Spinner$DialogPopup;->show(II)V
-Landroid/widget/Spinner$DropDownAdapter;
Landroid/widget/Spinner$DropDownAdapter;-><init>(Landroid/widget/SpinnerAdapter;Landroid/content/res/Resources$Theme;)V
Landroid/widget/Spinner$DropDownAdapter;->mAdapter:Landroid/widget/SpinnerAdapter;
Landroid/widget/Spinner$DropDownAdapter;->mListAdapter:Landroid/widget/ListAdapter;
-Landroid/widget/Spinner$DropdownPopup;
-Landroid/widget/Spinner$DropdownPopup;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V
Landroid/widget/Spinner$DropdownPopup;->computeContentWidth()V
Landroid/widget/Spinner$DropdownPopup;->getHintText()Ljava/lang/CharSequence;
Landroid/widget/Spinner$DropdownPopup;->mAdapter:Landroid/widget/ListAdapter;
Landroid/widget/Spinner$DropdownPopup;->mHintText:Ljava/lang/CharSequence;
Landroid/widget/Spinner$DropdownPopup;->setPromptText(Ljava/lang/CharSequence;)V
Landroid/widget/Spinner$DropdownPopup;->show(II)V
-Landroid/widget/Spinner$SavedState;
Landroid/widget/Spinner$SavedState;-><init>(Landroid/os/Parcel;)V
Landroid/widget/Spinner$SavedState;-><init>(Landroid/os/Parcelable;)V
Landroid/widget/Spinner$SavedState;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/widget/Spinner$SavedState;->showDropdown:Z
-Landroid/widget/Spinner$SpinnerPopup;
Landroid/widget/Spinner$SpinnerPopup;->dismiss()V
Landroid/widget/Spinner$SpinnerPopup;->getBackground()Landroid/graphics/drawable/Drawable;
Landroid/widget/Spinner$SpinnerPopup;->getHintText()Ljava/lang/CharSequence;
@@ -90474,7 +84385,6 @@
Landroid/widget/Spinner;->onInitializeAccessibilityNodeInfoInternal(Landroid/view/accessibility/AccessibilityNodeInfo;)V
Landroid/widget/Spinner;->setUpChild(Landroid/view/View;Z)V
Landroid/widget/Spinner;->TAG:Ljava/lang/String;
-Landroid/widget/StackView$HolographicHelper;
Landroid/widget/StackView$HolographicHelper;-><init>(Landroid/content/Context;)V
Landroid/widget/StackView$HolographicHelper;->CLICK_FEEDBACK:I
Landroid/widget/StackView$HolographicHelper;->createClickOutline(Landroid/view/View;I)Landroid/graphics/Bitmap;
@@ -90492,9 +84402,6 @@
Landroid/widget/StackView$HolographicHelper;->mSmallBlurMaskFilter:Landroid/graphics/BlurMaskFilter;
Landroid/widget/StackView$HolographicHelper;->mTmpXY:[I
Landroid/widget/StackView$HolographicHelper;->RES_OUT:I
-Landroid/widget/StackView$LayoutParams;
-Landroid/widget/StackView$LayoutParams;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
-Landroid/widget/StackView$LayoutParams;-><init>(Landroid/view/View;)V
Landroid/widget/StackView$LayoutParams;->getInvalidateRect()Landroid/graphics/Rect;
Landroid/widget/StackView$LayoutParams;->globalInvalidateRect:Landroid/graphics/Rect;
Landroid/widget/StackView$LayoutParams;->horizontalOffset:I
@@ -90508,7 +84415,6 @@
Landroid/widget/StackView$LayoutParams;->setOffsets(II)V
Landroid/widget/StackView$LayoutParams;->setVerticalOffset(I)V
Landroid/widget/StackView$LayoutParams;->verticalOffset:I
-Landroid/widget/StackView$StackFrame;
Landroid/widget/StackView$StackFrame;-><init>(Landroid/content/Context;)V
Landroid/widget/StackView$StackFrame;->cancelSliderAnimator()Z
Landroid/widget/StackView$StackFrame;->cancelTransformAnimator()Z
@@ -90516,9 +84422,6 @@
Landroid/widget/StackView$StackFrame;->setTransformAnimator(Landroid/animation/ObjectAnimator;)V
Landroid/widget/StackView$StackFrame;->sliderAnimator:Ljava/lang/ref/WeakReference;
Landroid/widget/StackView$StackFrame;->transformAnimator:Ljava/lang/ref/WeakReference;
-Landroid/widget/StackView$StackSlider;
-Landroid/widget/StackView$StackSlider;-><init>()V
-Landroid/widget/StackView$StackSlider;-><init>(Landroid/widget/StackView$StackSlider;)V
Landroid/widget/StackView$StackSlider;->BEGINNING_OF_STACK_MODE:I
Landroid/widget/StackView$StackSlider;->cubic(F)F
Landroid/widget/StackView$StackSlider;->END_OF_STACK_MODE:I
@@ -90663,41 +84566,26 @@
Landroid/widget/Switch;->TOUCH_MODE_DOWN:I
Landroid/widget/Switch;->TOUCH_MODE_DRAGGING:I
Landroid/widget/Switch;->TOUCH_MODE_IDLE:I
-Landroid/widget/TabHost$ContentStrategy;
Landroid/widget/TabHost$ContentStrategy;->getContentView()Landroid/view/View;
Landroid/widget/TabHost$ContentStrategy;->tabClosed()V
-Landroid/widget/TabHost$FactoryContentStrategy;
-Landroid/widget/TabHost$FactoryContentStrategy;-><init>(Ljava/lang/CharSequence;Landroid/widget/TabHost$TabContentFactory;)V
Landroid/widget/TabHost$FactoryContentStrategy;->getContentView()Landroid/view/View;
Landroid/widget/TabHost$FactoryContentStrategy;->mFactory:Landroid/widget/TabHost$TabContentFactory;
Landroid/widget/TabHost$FactoryContentStrategy;->mTabContent:Landroid/view/View;
Landroid/widget/TabHost$FactoryContentStrategy;->mTag:Ljava/lang/CharSequence;
Landroid/widget/TabHost$FactoryContentStrategy;->tabClosed()V
-Landroid/widget/TabHost$IndicatorStrategy;
Landroid/widget/TabHost$IndicatorStrategy;->createIndicatorView()Landroid/view/View;
-Landroid/widget/TabHost$IntentContentStrategy;
-Landroid/widget/TabHost$IntentContentStrategy;-><init>(Ljava/lang/String;Landroid/content/Intent;)V
Landroid/widget/TabHost$IntentContentStrategy;->mIntent:Landroid/content/Intent;
Landroid/widget/TabHost$IntentContentStrategy;->mLaunchedView:Landroid/view/View;
Landroid/widget/TabHost$IntentContentStrategy;->mTag:Ljava/lang/String;
-Landroid/widget/TabHost$LabelAndIconIndicatorStrategy;
-Landroid/widget/TabHost$LabelAndIconIndicatorStrategy;-><init>(Ljava/lang/CharSequence;Landroid/graphics/drawable/Drawable;)V
Landroid/widget/TabHost$LabelAndIconIndicatorStrategy;->createIndicatorView()Landroid/view/View;
Landroid/widget/TabHost$LabelAndIconIndicatorStrategy;->mIcon:Landroid/graphics/drawable/Drawable;
Landroid/widget/TabHost$LabelAndIconIndicatorStrategy;->mLabel:Ljava/lang/CharSequence;
-Landroid/widget/TabHost$LabelIndicatorStrategy;
-Landroid/widget/TabHost$LabelIndicatorStrategy;-><init>(Ljava/lang/CharSequence;)V
Landroid/widget/TabHost$LabelIndicatorStrategy;->createIndicatorView()Landroid/view/View;
Landroid/widget/TabHost$LabelIndicatorStrategy;->mLabel:Ljava/lang/CharSequence;
-Landroid/widget/TabHost$TabSpec;-><init>(Ljava/lang/String;)V
Landroid/widget/TabHost$TabSpec;->mTag:Ljava/lang/String;
-Landroid/widget/TabHost$ViewIdContentStrategy;
-Landroid/widget/TabHost$ViewIdContentStrategy;-><init>(I)V
Landroid/widget/TabHost$ViewIdContentStrategy;->getContentView()Landroid/view/View;
Landroid/widget/TabHost$ViewIdContentStrategy;->mView:Landroid/view/View;
Landroid/widget/TabHost$ViewIdContentStrategy;->tabClosed()V
-Landroid/widget/TabHost$ViewIndicatorStrategy;
-Landroid/widget/TabHost$ViewIndicatorStrategy;-><init>(Landroid/view/View;)V
Landroid/widget/TabHost$ViewIndicatorStrategy;->createIndicatorView()Landroid/view/View;
Landroid/widget/TabHost$ViewIndicatorStrategy;->mView:Landroid/view/View;
Landroid/widget/TabHost;->getTabWidgetLocation()I
@@ -90714,8 +84602,6 @@
Landroid/widget/TabHost;->TABWIDGET_LOCATION_LEFT:I
Landroid/widget/TabHost;->TABWIDGET_LOCATION_RIGHT:I
Landroid/widget/TabHost;->TABWIDGET_LOCATION_TOP:I
-Landroid/widget/TableLayout$PassThroughHierarchyChangeListener;
-Landroid/widget/TableLayout$PassThroughHierarchyChangeListener;-><init>()V
Landroid/widget/TableLayout$PassThroughHierarchyChangeListener;->mOnHierarchyChangeListener:Landroid/view/ViewGroup$OnHierarchyChangeListener;
Landroid/widget/TableLayout;->findLargestCells(II)V
Landroid/widget/TableLayout;->initTableLayout()V
@@ -90734,8 +84620,6 @@
Landroid/widget/TableLayout;->requestRowsLayout()V
Landroid/widget/TableLayout;->shrinkAndStretchColumns(I)V
Landroid/widget/TableLayout;->trackCollapsedColumns(Landroid/view/View;)V
-Landroid/widget/TableRow$ChildrenTracker;
-Landroid/widget/TableRow$ChildrenTracker;-><init>()V
Landroid/widget/TableRow$ChildrenTracker;->listener:Landroid/view/ViewGroup$OnHierarchyChangeListener;
Landroid/widget/TableRow$ChildrenTracker;->setOnHierarchyChangeListener(Landroid/view/ViewGroup$OnHierarchyChangeListener;)V
Landroid/widget/TableRow$LayoutParams;->encodeProperties(Landroid/view/ViewHierarchyEncoder;)V
@@ -90757,10 +84641,7 @@
Landroid/widget/TableRow;->mNumColumns:I
Landroid/widget/TableRow;->setColumnCollapsed(IZ)V
Landroid/widget/TableRow;->setColumnsWidthConstraints([I)V
-Landroid/widget/TabWidget$OnTabSelectionChanged;
Landroid/widget/TabWidget$OnTabSelectionChanged;->onTabSelectionChanged(IZ)V
-Landroid/widget/TabWidget$TabClickListener;
-Landroid/widget/TabWidget$TabClickListener;-><init>(I)V
Landroid/widget/TabWidget$TabClickListener;->mTabIndex:I
Landroid/widget/TabWidget;->mBounds:Landroid/graphics/Rect;
Landroid/widget/TabWidget;->measureChildBeforeLayout(Landroid/view/View;IIIII)V
@@ -90772,8 +84653,6 @@
Landroid/widget/TabWidget;->mSelectionChangedListener:Landroid/widget/TabWidget$OnTabSelectionChanged;
Landroid/widget/TabWidget;->mStripMoved:Z
Landroid/widget/TabWidget;->onInitializeAccessibilityEventInternal(Landroid/view/accessibility/AccessibilityEvent;)V
-Landroid/widget/TextClock$FormatChangeObserver;
-Landroid/widget/TextClock$FormatChangeObserver;-><init>(Landroid/os/Handler;)V
Landroid/widget/TextClock;->abc(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/CharSequence;
Landroid/widget/TextClock;->chooseFormat()V
Landroid/widget/TextClock;->createTime(Ljava/lang/String;)V
@@ -90803,9 +84682,7 @@
Landroid/widget/TextClock;->setShowCurrentUserTime(Z)V
Landroid/widget/TextClock;->unregisterObserver()V
Landroid/widget/TextClock;->unregisterReceiver()V
-Landroid/widget/TextInputTimePickerView$OnValueTypedListener;
Landroid/widget/TextInputTimePickerView$OnValueTypedListener;->onValueChanged(II)V
-Landroid/widget/TextInputTimePickerView;
Landroid/widget/TextInputTimePickerView;-><init>(Landroid/content/Context;)V
Landroid/widget/TextInputTimePickerView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
Landroid/widget/TextInputTimePickerView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
@@ -90836,12 +84713,7 @@
Landroid/widget/TextInputTimePickerView;->updateSeparator(Ljava/lang/String;)V
Landroid/widget/TextInputTimePickerView;->updateTextInputValues(IIIZZ)V
Landroid/widget/TextInputTimePickerView;->validateInput()Z
-Landroid/widget/TextView$AutoSizeTextType;
-Landroid/widget/TextView$BufferType;-><init>()V
-Landroid/widget/TextView$ChangeWatcher;
-Landroid/widget/TextView$ChangeWatcher;-><init>()V
Landroid/widget/TextView$ChangeWatcher;->mBeforeText:Ljava/lang/CharSequence;
-Landroid/widget/TextView$CharWrapper;
Landroid/widget/TextView$CharWrapper;-><init>([CII)V
Landroid/widget/TextView$CharWrapper;->drawText(Landroid/graphics/BaseCanvas;IIFFLandroid/graphics/Paint;)V
Landroid/widget/TextView$CharWrapper;->drawTextRun(Landroid/graphics/BaseCanvas;IIIIFFZLandroid/graphics/Paint;)V
@@ -90853,7 +84725,6 @@
Landroid/widget/TextView$CharWrapper;->mLength:I
Landroid/widget/TextView$CharWrapper;->mStart:I
Landroid/widget/TextView$CharWrapper;->set([CII)V
-Landroid/widget/TextView$Drawables;
Landroid/widget/TextView$Drawables;-><init>(Landroid/content/Context;)V
Landroid/widget/TextView$Drawables;->applyErrorDrawableIfNeeded(I)V
Landroid/widget/TextView$Drawables;->BOTTOM:I
@@ -90898,7 +84769,6 @@
Landroid/widget/TextView$Drawables;->RIGHT:I
Landroid/widget/TextView$Drawables;->setErrorDrawable(Landroid/graphics/drawable/Drawable;Landroid/widget/TextView;)V
Landroid/widget/TextView$Drawables;->TOP:I
-Landroid/widget/TextView$Marquee;
Landroid/widget/TextView$Marquee;-><init>(Landroid/widget/TextView;)V
Landroid/widget/TextView$Marquee;->getGhostOffset()F
Landroid/widget/TextView$Marquee;->getMaxFadeScroll()F
@@ -90939,7 +84809,6 @@
Landroid/widget/TextView$SavedState;->frozenWithFocus:Z
Landroid/widget/TextView$SavedState;->selEnd:I
Landroid/widget/TextView$SavedState;->selStart:I
-Landroid/widget/TextView$TextAppearanceAttributes;
Landroid/widget/TextView$TextAppearanceAttributes;-><init>()V
Landroid/widget/TextView$TextAppearanceAttributes;->mAllCaps:Z
Landroid/widget/TextView$TextAppearanceAttributes;->mElegant:Z
@@ -90964,7 +84833,6 @@
Landroid/widget/TextView$TextAppearanceAttributes;->mTextColorLink:Landroid/content/res/ColorStateList;
Landroid/widget/TextView$TextAppearanceAttributes;->mTextSize:I
Landroid/widget/TextView$TextAppearanceAttributes;->mTypefaceIndex:I
-Landroid/widget/TextView$XMLTypefaceAttr;
Landroid/widget/TextView;->ACCESSIBILITY_ACTION_PROCESS_TEXT_START_ID:I
Landroid/widget/TextView;->ACCESSIBILITY_ACTION_SHARE:I
Landroid/widget/TextView;->ANIMATED_SCROLL_GAP:I
@@ -91219,12 +85087,10 @@
Landroid/widget/TextView;->VERY_WIDE:I
Landroid/widget/TextView;->viewClicked(Landroid/view/inputmethod/InputMethodManager;)V
Landroid/widget/TextView;->viewportToContentHorizontalOffset()I
-Landroid/widget/TextViewMetrics;
Landroid/widget/TextViewMetrics;-><init>()V
Landroid/widget/TextViewMetrics;->SUBTYPE_LONG_PRESS_DRAG_AND_DROP:I
Landroid/widget/TextViewMetrics;->SUBTYPE_LONG_PRESS_OTHER:I
Landroid/widget/TextViewMetrics;->SUBTYPE_LONG_PRESS_SELECTION:I
-Landroid/widget/TimePicker$AbstractTimePickerDelegate$SavedState;
Landroid/widget/TimePicker$AbstractTimePickerDelegate$SavedState;-><init>(Landroid/os/Parcel;)V
Landroid/widget/TimePicker$AbstractTimePickerDelegate$SavedState;-><init>(Landroid/os/Parcelable;IIZ)V
Landroid/widget/TimePicker$AbstractTimePickerDelegate$SavedState;-><init>(Landroid/os/Parcelable;IIZI)V
@@ -91237,7 +85103,6 @@
Landroid/widget/TimePicker$AbstractTimePickerDelegate$SavedState;->mHour:I
Landroid/widget/TimePicker$AbstractTimePickerDelegate$SavedState;->mIs24HourMode:Z
Landroid/widget/TimePicker$AbstractTimePickerDelegate$SavedState;->mMinute:I
-Landroid/widget/TimePicker$AbstractTimePickerDelegate;
Landroid/widget/TimePicker$AbstractTimePickerDelegate;-><init>(Landroid/widget/TimePicker;Landroid/content/Context;)V
Landroid/widget/TimePicker$AbstractTimePickerDelegate;->autofill(Landroid/view/autofill/AutofillValue;)V
Landroid/widget/TimePicker$AbstractTimePickerDelegate;->getAutofillValue()Landroid/view/autofill/AutofillValue;
@@ -91250,7 +85115,6 @@
Landroid/widget/TimePicker$AbstractTimePickerDelegate;->resetAutofilledValue()V
Landroid/widget/TimePicker$AbstractTimePickerDelegate;->setAutoFillChangeListener(Landroid/widget/TimePicker$OnTimeChangedListener;)V
Landroid/widget/TimePicker$AbstractTimePickerDelegate;->setOnTimeChangedListener(Landroid/widget/TimePicker$OnTimeChangedListener;)V
-Landroid/widget/TimePicker$TimePickerDelegate;
Landroid/widget/TimePicker$TimePickerDelegate;->autofill(Landroid/view/autofill/AutofillValue;)V
Landroid/widget/TimePicker$TimePickerDelegate;->dispatchPopulateAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)Z
Landroid/widget/TimePicker$TimePickerDelegate;->getAmView()Landroid/view/View;
@@ -91274,13 +85138,10 @@
Landroid/widget/TimePicker$TimePickerDelegate;->setMinute(I)V
Landroid/widget/TimePicker$TimePickerDelegate;->setOnTimeChangedListener(Landroid/widget/TimePicker$OnTimeChangedListener;)V
Landroid/widget/TimePicker$TimePickerDelegate;->validateInput()Z
-Landroid/widget/TimePicker$TimePickerMode;
Landroid/widget/TimePicker;->dispatchPopulateAccessibilityEventInternal(Landroid/view/accessibility/AccessibilityEvent;)Z
Landroid/widget/TimePicker;->getAmPmStrings(Landroid/content/Context;)[Ljava/lang/String;
Landroid/widget/TimePicker;->LOG_TAG:Ljava/lang/String;
Landroid/widget/TimePicker;->mMode:I
-Landroid/widget/Toast$Duration;
-Landroid/widget/Toast$TN;
Landroid/widget/Toast$TN;-><init>(Ljava/lang/String;Landroid/os/Looper;)V
Landroid/widget/Toast$TN;->cancel()V
Landroid/widget/Toast$TN;->CANCEL:I
@@ -91311,8 +85172,6 @@
Landroid/widget/ToggleButton;->NO_ALPHA:I
Landroid/widget/ToggleButton;->syncTextState()V
Landroid/widget/ToggleButton;->updateReferenceToIndicatorDrawable(Landroid/graphics/drawable/Drawable;)V
-Landroid/widget/Toolbar$ExpandedActionViewMenuPresenter;
-Landroid/widget/Toolbar$ExpandedActionViewMenuPresenter;-><init>()V
Landroid/widget/Toolbar$ExpandedActionViewMenuPresenter;->collapseItemActionView(Lcom/android/internal/view/menu/MenuBuilder;Lcom/android/internal/view/menu/MenuItemImpl;)Z
Landroid/widget/Toolbar$ExpandedActionViewMenuPresenter;->expandItemActionView(Lcom/android/internal/view/menu/MenuBuilder;Lcom/android/internal/view/menu/MenuItemImpl;)Z
Landroid/widget/Toolbar$ExpandedActionViewMenuPresenter;->flagActionItems()Z
@@ -91331,7 +85190,6 @@
Landroid/widget/Toolbar$LayoutParams;->EXPANDED:I
Landroid/widget/Toolbar$LayoutParams;->mViewType:I
Landroid/widget/Toolbar$LayoutParams;->SYSTEM:I
-Landroid/widget/Toolbar$SavedState;
Landroid/widget/Toolbar$SavedState;-><init>(Landroid/os/Parcel;)V
Landroid/widget/Toolbar$SavedState;-><init>(Landroid/os/Parcelable;)V
Landroid/widget/Toolbar$SavedState;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -91411,13 +85269,8 @@
Landroid/widget/Toolbar;->TAG:Ljava/lang/String;
Landroid/widget/TwoLineListItem;->mText1:Landroid/widget/TextView;
Landroid/widget/TwoLineListItem;->mText2:Landroid/widget/TextView;
-Landroid/widget/VideoView2$OnCustomActionListener;
Landroid/widget/VideoView2$OnCustomActionListener;->onCustomAction(Ljava/lang/String;Landroid/os/Bundle;)V
-Landroid/widget/VideoView2$OnFullScreenRequestListener;
Landroid/widget/VideoView2$OnFullScreenRequestListener;->onFullScreenRequest(Landroid/view/View;Z)V
-Landroid/widget/VideoView2$OnViewTypeChangedListener;
-Landroid/widget/VideoView2$ViewType;
-Landroid/widget/VideoView2;
Landroid/widget/VideoView2;-><init>(Landroid/content/Context;)V
Landroid/widget/VideoView2;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
Landroid/widget/VideoView2;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
@@ -91498,8 +85351,6 @@
Landroid/widget/ZoomButton;->mIsInLongpress:Z
Landroid/widget/ZoomButton;->mRunnable:Ljava/lang/Runnable;
Landroid/widget/ZoomButton;->mZoomSpeed:J
-Landroid/widget/ZoomButtonsController$Container;
-Landroid/widget/ZoomButtonsController$Container;-><init>(Landroid/content/Context;)V
Landroid/widget/ZoomButtonsController;->createContainer()Landroid/widget/FrameLayout;
Landroid/widget/ZoomButtonsController;->dismissControlsDelayed(I)V
Landroid/widget/ZoomButtonsController;->findViewForTouch(II)Landroid/view/View;
@@ -91590,10 +85441,8 @@
Lcom/android/i18n/phonenumbers/AsYouTypeFormatter;->SEPARATOR_BEFORE_NATIONAL_NUMBER:C
Lcom/android/i18n/phonenumbers/AsYouTypeFormatter;->shouldAddSpaceAfterNationalPrefix:Z
Lcom/android/i18n/phonenumbers/AsYouTypeFormatter;->STANDALONE_DIGIT_PATTERN:Ljava/util/regex/Pattern;
-Lcom/android/i18n/phonenumbers/MetadataSource;
Lcom/android/i18n/phonenumbers/MetadataSource;->getMetadataForNonGeographicalRegion(I)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;
Lcom/android/i18n/phonenumbers/MetadataSource;->getMetadataForRegion(Ljava/lang/String;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;
-Lcom/android/i18n/phonenumbers/NumberParseException$ErrorType;-><init>()V
Lcom/android/i18n/phonenumbers/NumberParseException;->errorType:Lcom/android/i18n/phonenumbers/NumberParseException$ErrorType;
Lcom/android/i18n/phonenumbers/NumberParseException;->message:Ljava/lang/String;
Lcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat;->domesticCarrierCodeFormattingRule_:Ljava/lang/String;
@@ -91677,7 +85526,6 @@
Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;->possibleLengthLocalOnly_:Ljava/util/List;
Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;->possibleLength_:Ljava/util/List;
Lcom/android/i18n/phonenumbers/Phonemetadata;-><init>()V
-Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber$CountryCodeSource;-><init>()V
Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;->countryCodeSource_:Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber$CountryCodeSource;
Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;->countryCode_:I
Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;->extension_:Ljava/lang/String;
@@ -91699,12 +85547,7 @@
Lcom/android/i18n/phonenumbers/PhoneNumberMatch;->number:Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;
Lcom/android/i18n/phonenumbers/PhoneNumberMatch;->rawString:Ljava/lang/String;
Lcom/android/i18n/phonenumbers/PhoneNumberMatch;->start:I
-Lcom/android/i18n/phonenumbers/PhoneNumberUtil$Leniency;-><init>()V
Lcom/android/i18n/phonenumbers/PhoneNumberUtil$Leniency;->verify(Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;Ljava/lang/CharSequence;Lcom/android/i18n/phonenumbers/PhoneNumberUtil;)Z
-Lcom/android/i18n/phonenumbers/PhoneNumberUtil$MatchType;-><init>()V
-Lcom/android/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberFormat;-><init>()V
-Lcom/android/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberType;-><init>()V
-Lcom/android/i18n/phonenumbers/PhoneNumberUtil$ValidationResult;-><init>()V
Lcom/android/i18n/phonenumbers/PhoneNumberUtil;-><init>(Lcom/android/i18n/phonenumbers/MetadataSource;Ljava/util/Map;)V
Lcom/android/i18n/phonenumbers/PhoneNumberUtil;->ALL_PLUS_NUMBER_GROUPING_SYMBOLS:Ljava/util/Map;
Lcom/android/i18n/phonenumbers/PhoneNumberUtil;->ALPHA_MAPPINGS:Ljava/util/Map;
@@ -91809,7 +85652,6 @@
Lcom/android/i18n/phonenumbers/PhoneNumberUtil;->VALID_PUNCTUATION:Ljava/lang/String;
Lcom/android/i18n/phonenumbers/PhoneNumberUtil;->VALID_START_CHAR:Ljava/lang/String;
Lcom/android/i18n/phonenumbers/PhoneNumberUtil;->VALID_START_CHAR_PATTERN:Ljava/util/regex/Pattern;
-Lcom/android/ims/ImsConfigListener$Stub$Proxy;
Lcom/android/ims/ImsConfigListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/ims/ImsConfigListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Lcom/android/ims/ImsConfigListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -91817,18 +85659,15 @@
Lcom/android/ims/ImsConfigListener$Stub$Proxy;->onGetVideoQuality(II)V
Lcom/android/ims/ImsConfigListener$Stub$Proxy;->onSetFeatureResponse(IIII)V
Lcom/android/ims/ImsConfigListener$Stub$Proxy;->onSetVideoQuality(I)V
-Lcom/android/ims/ImsConfigListener$Stub;
Lcom/android/ims/ImsConfigListener$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/ims/ImsConfigListener;
Lcom/android/ims/ImsConfigListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/ims/ImsConfigListener$Stub;->TRANSACTION_onGetFeatureResponse:I
Lcom/android/ims/ImsConfigListener$Stub;->TRANSACTION_onGetVideoQuality:I
Lcom/android/ims/ImsConfigListener$Stub;->TRANSACTION_onSetFeatureResponse:I
Lcom/android/ims/ImsConfigListener$Stub;->TRANSACTION_onSetVideoQuality:I
-Lcom/android/ims/ImsConfigListener;
Lcom/android/ims/ImsConfigListener;->onGetFeatureResponse(IIII)V
Lcom/android/ims/ImsConfigListener;->onGetVideoQuality(II)V
Lcom/android/ims/ImsConfigListener;->onSetVideoQuality(I)V
-Lcom/android/ims/internal/IImsCallSession$Stub$Proxy;
Lcom/android/ims/internal/IImsCallSession$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/ims/internal/IImsCallSession$Stub$Proxy;->accept(ILandroid/telephony/ims/ImsStreamMediaProfile;)V
Lcom/android/ims/internal/IImsCallSession$Stub$Proxy;->close()V
@@ -91864,7 +85703,6 @@
Lcom/android/ims/internal/IImsCallSession$Stub$Proxy;->stopDtmf()V
Lcom/android/ims/internal/IImsCallSession$Stub$Proxy;->terminate(I)V
Lcom/android/ims/internal/IImsCallSession$Stub$Proxy;->update(ILandroid/telephony/ims/ImsStreamMediaProfile;)V
-Lcom/android/ims/internal/IImsCallSession$Stub;
Lcom/android/ims/internal/IImsCallSession$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/ims/internal/IImsCallSession$Stub;->TRANSACTION_accept:I
Lcom/android/ims/internal/IImsCallSession$Stub;->TRANSACTION_close:I
@@ -91898,7 +85736,6 @@
Lcom/android/ims/internal/IImsCallSession$Stub;->TRANSACTION_stopDtmf:I
Lcom/android/ims/internal/IImsCallSession$Stub;->TRANSACTION_terminate:I
Lcom/android/ims/internal/IImsCallSession$Stub;->TRANSACTION_update:I
-Lcom/android/ims/internal/IImsCallSession;
Lcom/android/ims/internal/IImsCallSession;->accept(ILandroid/telephony/ims/ImsStreamMediaProfile;)V
Lcom/android/ims/internal/IImsCallSession;->close()V
Lcom/android/ims/internal/IImsCallSession;->deflect(Ljava/lang/String;)V
@@ -91931,7 +85768,6 @@
Lcom/android/ims/internal/IImsCallSession;->stopDtmf()V
Lcom/android/ims/internal/IImsCallSession;->terminate(I)V
Lcom/android/ims/internal/IImsCallSession;->update(ILandroid/telephony/ims/ImsStreamMediaProfile;)V
-Lcom/android/ims/internal/IImsCallSessionListener$Stub$Proxy;
Lcom/android/ims/internal/IImsCallSessionListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/ims/internal/IImsCallSessionListener$Stub$Proxy;->callSessionConferenceExtended(Lcom/android/ims/internal/IImsCallSession;Lcom/android/ims/internal/IImsCallSession;Landroid/telephony/ims/ImsCallProfile;)V
Lcom/android/ims/internal/IImsCallSessionListener$Stub$Proxy;->callSessionConferenceExtendFailed(Lcom/android/ims/internal/IImsCallSession;Landroid/telephony/ims/ImsReasonInfo;)V
@@ -91969,7 +85805,6 @@
Lcom/android/ims/internal/IImsCallSessionListener$Stub$Proxy;->callSessionUssdMessageReceived(Lcom/android/ims/internal/IImsCallSession;ILjava/lang/String;)V
Lcom/android/ims/internal/IImsCallSessionListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Lcom/android/ims/internal/IImsCallSessionListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Lcom/android/ims/internal/IImsCallSessionListener$Stub;
Lcom/android/ims/internal/IImsCallSessionListener$Stub;-><init>()V
Lcom/android/ims/internal/IImsCallSessionListener$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/ims/internal/IImsCallSessionListener;
Lcom/android/ims/internal/IImsCallSessionListener$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -92007,7 +85842,6 @@
Lcom/android/ims/internal/IImsCallSessionListener$Stub;->TRANSACTION_callSessionUpdateFailed:I
Lcom/android/ims/internal/IImsCallSessionListener$Stub;->TRANSACTION_callSessionUpdateReceived:I
Lcom/android/ims/internal/IImsCallSessionListener$Stub;->TRANSACTION_callSessionUssdMessageReceived:I
-Lcom/android/ims/internal/IImsCallSessionListener;
Lcom/android/ims/internal/IImsCallSessionListener;->callSessionConferenceExtended(Lcom/android/ims/internal/IImsCallSession;Lcom/android/ims/internal/IImsCallSession;Landroid/telephony/ims/ImsCallProfile;)V
Lcom/android/ims/internal/IImsCallSessionListener;->callSessionConferenceExtendFailed(Lcom/android/ims/internal/IImsCallSession;Landroid/telephony/ims/ImsReasonInfo;)V
Lcom/android/ims/internal/IImsCallSessionListener;->callSessionConferenceExtendReceived(Lcom/android/ims/internal/IImsCallSession;Lcom/android/ims/internal/IImsCallSession;Landroid/telephony/ims/ImsCallProfile;)V
@@ -92020,7 +85854,6 @@
Lcom/android/ims/internal/IImsCallSessionListener;->callSessionUpdateFailed(Lcom/android/ims/internal/IImsCallSession;Landroid/telephony/ims/ImsReasonInfo;)V
Lcom/android/ims/internal/IImsCallSessionListener;->callSessionUpdateReceived(Lcom/android/ims/internal/IImsCallSession;Landroid/telephony/ims/ImsCallProfile;)V
Lcom/android/ims/internal/IImsCallSessionListener;->callSessionUssdMessageReceived(Lcom/android/ims/internal/IImsCallSession;ILjava/lang/String;)V
-Lcom/android/ims/internal/IImsConfig$Stub$Proxy;
Lcom/android/ims/internal/IImsConfig$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/ims/internal/IImsConfig$Stub$Proxy;->getFeatureValue(IILcom/android/ims/ImsConfigListener;)V
Lcom/android/ims/internal/IImsConfig$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
@@ -92033,7 +85866,6 @@
Lcom/android/ims/internal/IImsConfig$Stub$Proxy;->setProvisionedStringValue(ILjava/lang/String;)I
Lcom/android/ims/internal/IImsConfig$Stub$Proxy;->setProvisionedValue(II)I
Lcom/android/ims/internal/IImsConfig$Stub$Proxy;->setVideoQuality(ILcom/android/ims/ImsConfigListener;)V
-Lcom/android/ims/internal/IImsConfig$Stub;
Lcom/android/ims/internal/IImsConfig$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/ims/internal/IImsConfig;
Lcom/android/ims/internal/IImsConfig$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/ims/internal/IImsConfig$Stub;->TRANSACTION_getFeatureValue:I
@@ -92045,7 +85877,6 @@
Lcom/android/ims/internal/IImsConfig$Stub;->TRANSACTION_setProvisionedStringValue:I
Lcom/android/ims/internal/IImsConfig$Stub;->TRANSACTION_setProvisionedValue:I
Lcom/android/ims/internal/IImsConfig$Stub;->TRANSACTION_setVideoQuality:I
-Lcom/android/ims/internal/IImsConfig;
Lcom/android/ims/internal/IImsConfig;->getFeatureValue(IILcom/android/ims/ImsConfigListener;)V
Lcom/android/ims/internal/IImsConfig;->getProvisionedStringValue(I)Ljava/lang/String;
Lcom/android/ims/internal/IImsConfig;->getProvisionedValue(I)I
@@ -92055,60 +85886,47 @@
Lcom/android/ims/internal/IImsConfig;->setProvisionedStringValue(ILjava/lang/String;)I
Lcom/android/ims/internal/IImsConfig;->setProvisionedValue(II)I
Lcom/android/ims/internal/IImsConfig;->setVideoQuality(ILcom/android/ims/ImsConfigListener;)V
-Lcom/android/ims/internal/IImsEcbm$Stub$Proxy;
Lcom/android/ims/internal/IImsEcbm$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/ims/internal/IImsEcbm$Stub$Proxy;->exitEmergencyCallbackMode()V
Lcom/android/ims/internal/IImsEcbm$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Lcom/android/ims/internal/IImsEcbm$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Lcom/android/ims/internal/IImsEcbm$Stub$Proxy;->setListener(Lcom/android/ims/internal/IImsEcbmListener;)V
-Lcom/android/ims/internal/IImsEcbm$Stub;
Lcom/android/ims/internal/IImsEcbm$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/ims/internal/IImsEcbm;
Lcom/android/ims/internal/IImsEcbm$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/ims/internal/IImsEcbm$Stub;->TRANSACTION_exitEmergencyCallbackMode:I
Lcom/android/ims/internal/IImsEcbm$Stub;->TRANSACTION_setListener:I
-Lcom/android/ims/internal/IImsEcbm;
Lcom/android/ims/internal/IImsEcbm;->exitEmergencyCallbackMode()V
Lcom/android/ims/internal/IImsEcbm;->setListener(Lcom/android/ims/internal/IImsEcbmListener;)V
-Lcom/android/ims/internal/IImsEcbmListener$Stub$Proxy;
Lcom/android/ims/internal/IImsEcbmListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/ims/internal/IImsEcbmListener$Stub$Proxy;->enteredECBM()V
Lcom/android/ims/internal/IImsEcbmListener$Stub$Proxy;->exitedECBM()V
Lcom/android/ims/internal/IImsEcbmListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Lcom/android/ims/internal/IImsEcbmListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Lcom/android/ims/internal/IImsEcbmListener$Stub;
Lcom/android/ims/internal/IImsEcbmListener$Stub;-><init>()V
Lcom/android/ims/internal/IImsEcbmListener$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/ims/internal/IImsEcbmListener;
Lcom/android/ims/internal/IImsEcbmListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/ims/internal/IImsEcbmListener$Stub;->TRANSACTION_enteredECBM:I
Lcom/android/ims/internal/IImsEcbmListener$Stub;->TRANSACTION_exitedECBM:I
-Lcom/android/ims/internal/IImsEcbmListener;
Lcom/android/ims/internal/IImsEcbmListener;->enteredECBM()V
Lcom/android/ims/internal/IImsEcbmListener;->exitedECBM()V
-Lcom/android/ims/internal/IImsExternalCallStateListener$Stub$Proxy;
Lcom/android/ims/internal/IImsExternalCallStateListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/ims/internal/IImsExternalCallStateListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Lcom/android/ims/internal/IImsExternalCallStateListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Lcom/android/ims/internal/IImsExternalCallStateListener$Stub$Proxy;->onImsExternalCallStateUpdate(Ljava/util/List;)V
-Lcom/android/ims/internal/IImsExternalCallStateListener$Stub;
Lcom/android/ims/internal/IImsExternalCallStateListener$Stub;-><init>()V
Lcom/android/ims/internal/IImsExternalCallStateListener$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/ims/internal/IImsExternalCallStateListener;
Lcom/android/ims/internal/IImsExternalCallStateListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/ims/internal/IImsExternalCallStateListener$Stub;->TRANSACTION_onImsExternalCallStateUpdate:I
-Lcom/android/ims/internal/IImsExternalCallStateListener;
Lcom/android/ims/internal/IImsExternalCallStateListener;->onImsExternalCallStateUpdate(Ljava/util/List;)V
-Lcom/android/ims/internal/IImsFeatureStatusCallback$Stub$Proxy;
Lcom/android/ims/internal/IImsFeatureStatusCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/ims/internal/IImsFeatureStatusCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Lcom/android/ims/internal/IImsFeatureStatusCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Lcom/android/ims/internal/IImsFeatureStatusCallback$Stub$Proxy;->notifyImsFeatureStatus(I)V
-Lcom/android/ims/internal/IImsFeatureStatusCallback$Stub;
Lcom/android/ims/internal/IImsFeatureStatusCallback$Stub;-><init>()V
Lcom/android/ims/internal/IImsFeatureStatusCallback$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/ims/internal/IImsFeatureStatusCallback;
Lcom/android/ims/internal/IImsFeatureStatusCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/ims/internal/IImsFeatureStatusCallback$Stub;->TRANSACTION_notifyImsFeatureStatus:I
-Lcom/android/ims/internal/IImsFeatureStatusCallback;
Lcom/android/ims/internal/IImsFeatureStatusCallback;->notifyImsFeatureStatus(I)V
-Lcom/android/ims/internal/IImsMMTelFeature$Stub$Proxy;
Lcom/android/ims/internal/IImsMMTelFeature$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/ims/internal/IImsMMTelFeature$Stub$Proxy;->addRegistrationListener(Lcom/android/ims/internal/IImsRegistrationListener;)V
Lcom/android/ims/internal/IImsMMTelFeature$Stub$Proxy;->createCallProfile(III)Landroid/telephony/ims/ImsCallProfile;
@@ -92129,7 +85947,6 @@
Lcom/android/ims/internal/IImsMMTelFeature$Stub$Proxy;->startSession(Landroid/app/PendingIntent;Lcom/android/ims/internal/IImsRegistrationListener;)I
Lcom/android/ims/internal/IImsMMTelFeature$Stub$Proxy;->turnOffIms()V
Lcom/android/ims/internal/IImsMMTelFeature$Stub$Proxy;->turnOnIms()V
-Lcom/android/ims/internal/IImsMMTelFeature$Stub;
Lcom/android/ims/internal/IImsMMTelFeature$Stub;-><init>()V
Lcom/android/ims/internal/IImsMMTelFeature$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/ims/internal/IImsMMTelFeature;
Lcom/android/ims/internal/IImsMMTelFeature$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -92150,7 +85967,6 @@
Lcom/android/ims/internal/IImsMMTelFeature$Stub;->TRANSACTION_startSession:I
Lcom/android/ims/internal/IImsMMTelFeature$Stub;->TRANSACTION_turnOffIms:I
Lcom/android/ims/internal/IImsMMTelFeature$Stub;->TRANSACTION_turnOnIms:I
-Lcom/android/ims/internal/IImsMMTelFeature;
Lcom/android/ims/internal/IImsMMTelFeature;->addRegistrationListener(Lcom/android/ims/internal/IImsRegistrationListener;)V
Lcom/android/ims/internal/IImsMMTelFeature;->createCallProfile(III)Landroid/telephony/ims/ImsCallProfile;
Lcom/android/ims/internal/IImsMMTelFeature;->createCallSession(ILandroid/telephony/ims/ImsCallProfile;)Lcom/android/ims/internal/IImsCallSession;
@@ -92168,31 +85984,24 @@
Lcom/android/ims/internal/IImsMMTelFeature;->startSession(Landroid/app/PendingIntent;Lcom/android/ims/internal/IImsRegistrationListener;)I
Lcom/android/ims/internal/IImsMMTelFeature;->turnOffIms()V
Lcom/android/ims/internal/IImsMMTelFeature;->turnOnIms()V
-Lcom/android/ims/internal/IImsMultiEndpoint$Stub$Proxy;
Lcom/android/ims/internal/IImsMultiEndpoint$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/ims/internal/IImsMultiEndpoint$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Lcom/android/ims/internal/IImsMultiEndpoint$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Lcom/android/ims/internal/IImsMultiEndpoint$Stub$Proxy;->requestImsExternalCallStateInfo()V
Lcom/android/ims/internal/IImsMultiEndpoint$Stub$Proxy;->setListener(Lcom/android/ims/internal/IImsExternalCallStateListener;)V
-Lcom/android/ims/internal/IImsMultiEndpoint$Stub;
Lcom/android/ims/internal/IImsMultiEndpoint$Stub;-><init>()V
Lcom/android/ims/internal/IImsMultiEndpoint$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/ims/internal/IImsMultiEndpoint;
Lcom/android/ims/internal/IImsMultiEndpoint$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/ims/internal/IImsMultiEndpoint$Stub;->TRANSACTION_requestImsExternalCallStateInfo:I
Lcom/android/ims/internal/IImsMultiEndpoint$Stub;->TRANSACTION_setListener:I
-Lcom/android/ims/internal/IImsMultiEndpoint;
Lcom/android/ims/internal/IImsMultiEndpoint;->requestImsExternalCallStateInfo()V
Lcom/android/ims/internal/IImsMultiEndpoint;->setListener(Lcom/android/ims/internal/IImsExternalCallStateListener;)V
-Lcom/android/ims/internal/IImsRcsFeature$Stub$Proxy;
Lcom/android/ims/internal/IImsRcsFeature$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/ims/internal/IImsRcsFeature$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Lcom/android/ims/internal/IImsRcsFeature$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Lcom/android/ims/internal/IImsRcsFeature$Stub;
Lcom/android/ims/internal/IImsRcsFeature$Stub;-><init>()V
Lcom/android/ims/internal/IImsRcsFeature$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/ims/internal/IImsRcsFeature;
Lcom/android/ims/internal/IImsRcsFeature$Stub;->DESCRIPTOR:Ljava/lang/String;
-Lcom/android/ims/internal/IImsRcsFeature;
-Lcom/android/ims/internal/IImsRegistrationListener$Stub$Proxy;
Lcom/android/ims/internal/IImsRegistrationListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/ims/internal/IImsRegistrationListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Lcom/android/ims/internal/IImsRegistrationListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -92208,7 +86017,6 @@
Lcom/android/ims/internal/IImsRegistrationListener$Stub$Proxy;->registrationServiceCapabilityChanged(II)V
Lcom/android/ims/internal/IImsRegistrationListener$Stub$Proxy;->registrationSuspended()V
Lcom/android/ims/internal/IImsRegistrationListener$Stub$Proxy;->voiceMessageCountUpdate(I)V
-Lcom/android/ims/internal/IImsRegistrationListener$Stub;
Lcom/android/ims/internal/IImsRegistrationListener$Stub;-><init>()V
Lcom/android/ims/internal/IImsRegistrationListener$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/ims/internal/IImsRegistrationListener;
Lcom/android/ims/internal/IImsRegistrationListener$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -92224,12 +86032,10 @@
Lcom/android/ims/internal/IImsRegistrationListener$Stub;->TRANSACTION_registrationServiceCapabilityChanged:I
Lcom/android/ims/internal/IImsRegistrationListener$Stub;->TRANSACTION_registrationSuspended:I
Lcom/android/ims/internal/IImsRegistrationListener$Stub;->TRANSACTION_voiceMessageCountUpdate:I
-Lcom/android/ims/internal/IImsRegistrationListener;
Lcom/android/ims/internal/IImsRegistrationListener;->registrationProgressing()V
Lcom/android/ims/internal/IImsRegistrationListener;->registrationResumed()V
Lcom/android/ims/internal/IImsRegistrationListener;->registrationServiceCapabilityChanged(II)V
Lcom/android/ims/internal/IImsRegistrationListener;->registrationSuspended()V
-Lcom/android/ims/internal/IImsService$Stub$Proxy;
Lcom/android/ims/internal/IImsService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/ims/internal/IImsService$Stub$Proxy;->addRegistrationListener(IILcom/android/ims/internal/IImsRegistrationListener;)V
Lcom/android/ims/internal/IImsService$Stub$Proxy;->close(I)V
@@ -92249,7 +86055,6 @@
Lcom/android/ims/internal/IImsService$Stub$Proxy;->setUiTTYMode(IILandroid/os/Message;)V
Lcom/android/ims/internal/IImsService$Stub$Proxy;->turnOffIms(I)V
Lcom/android/ims/internal/IImsService$Stub$Proxy;->turnOnIms(I)V
-Lcom/android/ims/internal/IImsService$Stub;
Lcom/android/ims/internal/IImsService$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/ims/internal/IImsService$Stub;->TRANSACTION_addRegistrationListener:I
Lcom/android/ims/internal/IImsService$Stub;->TRANSACTION_close:I
@@ -92267,7 +86072,6 @@
Lcom/android/ims/internal/IImsService$Stub;->TRANSACTION_setUiTTYMode:I
Lcom/android/ims/internal/IImsService$Stub;->TRANSACTION_turnOffIms:I
Lcom/android/ims/internal/IImsService$Stub;->TRANSACTION_turnOnIms:I
-Lcom/android/ims/internal/IImsService;
Lcom/android/ims/internal/IImsService;->addRegistrationListener(IILcom/android/ims/internal/IImsRegistrationListener;)V
Lcom/android/ims/internal/IImsService;->close(I)V
Lcom/android/ims/internal/IImsService;->createCallProfile(III)Landroid/telephony/ims/ImsCallProfile;
@@ -92284,7 +86088,6 @@
Lcom/android/ims/internal/IImsService;->setUiTTYMode(IILandroid/os/Message;)V
Lcom/android/ims/internal/IImsService;->turnOffIms(I)V
Lcom/android/ims/internal/IImsService;->turnOnIms(I)V
-Lcom/android/ims/internal/IImsServiceController$Stub$Proxy;
Lcom/android/ims/internal/IImsServiceController$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/ims/internal/IImsServiceController$Stub$Proxy;->createEmergencyMMTelFeature(ILcom/android/ims/internal/IImsFeatureStatusCallback;)Lcom/android/ims/internal/IImsMMTelFeature;
Lcom/android/ims/internal/IImsServiceController$Stub$Proxy;->createMMTelFeature(ILcom/android/ims/internal/IImsFeatureStatusCallback;)Lcom/android/ims/internal/IImsMMTelFeature;
@@ -92292,7 +86095,6 @@
Lcom/android/ims/internal/IImsServiceController$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Lcom/android/ims/internal/IImsServiceController$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Lcom/android/ims/internal/IImsServiceController$Stub$Proxy;->removeImsFeature(IILcom/android/ims/internal/IImsFeatureStatusCallback;)V
-Lcom/android/ims/internal/IImsServiceController$Stub;
Lcom/android/ims/internal/IImsServiceController$Stub;-><init>()V
Lcom/android/ims/internal/IImsServiceController$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/ims/internal/IImsServiceController;
Lcom/android/ims/internal/IImsServiceController$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -92300,42 +86102,34 @@
Lcom/android/ims/internal/IImsServiceController$Stub;->TRANSACTION_createMMTelFeature:I
Lcom/android/ims/internal/IImsServiceController$Stub;->TRANSACTION_createRcsFeature:I
Lcom/android/ims/internal/IImsServiceController$Stub;->TRANSACTION_removeImsFeature:I
-Lcom/android/ims/internal/IImsServiceController;
Lcom/android/ims/internal/IImsServiceController;->createEmergencyMMTelFeature(ILcom/android/ims/internal/IImsFeatureStatusCallback;)Lcom/android/ims/internal/IImsMMTelFeature;
Lcom/android/ims/internal/IImsServiceController;->createMMTelFeature(ILcom/android/ims/internal/IImsFeatureStatusCallback;)Lcom/android/ims/internal/IImsMMTelFeature;
Lcom/android/ims/internal/IImsServiceController;->createRcsFeature(ILcom/android/ims/internal/IImsFeatureStatusCallback;)Lcom/android/ims/internal/IImsRcsFeature;
Lcom/android/ims/internal/IImsServiceController;->removeImsFeature(IILcom/android/ims/internal/IImsFeatureStatusCallback;)V
-Lcom/android/ims/internal/IImsServiceFeatureCallback$Stub$Proxy;
Lcom/android/ims/internal/IImsServiceFeatureCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/ims/internal/IImsServiceFeatureCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Lcom/android/ims/internal/IImsServiceFeatureCallback$Stub$Proxy;->imsFeatureCreated(II)V
Lcom/android/ims/internal/IImsServiceFeatureCallback$Stub$Proxy;->imsFeatureRemoved(II)V
Lcom/android/ims/internal/IImsServiceFeatureCallback$Stub$Proxy;->imsStatusChanged(III)V
Lcom/android/ims/internal/IImsServiceFeatureCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Lcom/android/ims/internal/IImsServiceFeatureCallback$Stub;
Lcom/android/ims/internal/IImsServiceFeatureCallback$Stub;-><init>()V
Lcom/android/ims/internal/IImsServiceFeatureCallback$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/ims/internal/IImsServiceFeatureCallback;
Lcom/android/ims/internal/IImsServiceFeatureCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/ims/internal/IImsServiceFeatureCallback$Stub;->TRANSACTION_imsFeatureCreated:I
Lcom/android/ims/internal/IImsServiceFeatureCallback$Stub;->TRANSACTION_imsFeatureRemoved:I
Lcom/android/ims/internal/IImsServiceFeatureCallback$Stub;->TRANSACTION_imsStatusChanged:I
-Lcom/android/ims/internal/IImsServiceFeatureCallback;
Lcom/android/ims/internal/IImsServiceFeatureCallback;->imsFeatureCreated(II)V
Lcom/android/ims/internal/IImsServiceFeatureCallback;->imsFeatureRemoved(II)V
Lcom/android/ims/internal/IImsServiceFeatureCallback;->imsStatusChanged(III)V
-Lcom/android/ims/internal/IImsStreamMediaSession$Stub$Proxy;
Lcom/android/ims/internal/IImsStreamMediaSession$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/ims/internal/IImsStreamMediaSession$Stub$Proxy;->close()V
Lcom/android/ims/internal/IImsStreamMediaSession$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Lcom/android/ims/internal/IImsStreamMediaSession$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Lcom/android/ims/internal/IImsStreamMediaSession$Stub;
Lcom/android/ims/internal/IImsStreamMediaSession$Stub;-><init>()V
Lcom/android/ims/internal/IImsStreamMediaSession$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/ims/internal/IImsStreamMediaSession;
Lcom/android/ims/internal/IImsStreamMediaSession$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/ims/internal/IImsStreamMediaSession$Stub;->TRANSACTION_close:I
-Lcom/android/ims/internal/IImsStreamMediaSession;
Lcom/android/ims/internal/IImsStreamMediaSession;->close()V
-Lcom/android/ims/internal/IImsUt$Stub$Proxy;
Lcom/android/ims/internal/IImsUt$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/ims/internal/IImsUt$Stub$Proxy;->close()V
Lcom/android/ims/internal/IImsUt$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
@@ -92358,7 +86152,6 @@
Lcom/android/ims/internal/IImsUt$Stub$Proxy;->updateCLIR(I)I
Lcom/android/ims/internal/IImsUt$Stub$Proxy;->updateCOLP(Z)I
Lcom/android/ims/internal/IImsUt$Stub$Proxy;->updateCOLR(I)I
-Lcom/android/ims/internal/IImsUt$Stub;
Lcom/android/ims/internal/IImsUt$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/ims/internal/IImsUt;
Lcom/android/ims/internal/IImsUt$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/ims/internal/IImsUt$Stub;->TRANSACTION_close:I
@@ -92380,7 +86173,6 @@
Lcom/android/ims/internal/IImsUt$Stub;->TRANSACTION_updateCLIR:I
Lcom/android/ims/internal/IImsUt$Stub;->TRANSACTION_updateCOLP:I
Lcom/android/ims/internal/IImsUt$Stub;->TRANSACTION_updateCOLR:I
-Lcom/android/ims/internal/IImsUt;
Lcom/android/ims/internal/IImsUt;->close()V
Lcom/android/ims/internal/IImsUt;->queryCallBarring(I)I
Lcom/android/ims/internal/IImsUt;->queryCallBarringForServiceClass(II)I
@@ -92400,7 +86192,6 @@
Lcom/android/ims/internal/IImsUt;->updateCLIR(I)I
Lcom/android/ims/internal/IImsUt;->updateCOLP(Z)I
Lcom/android/ims/internal/IImsUt;->updateCOLR(I)I
-Lcom/android/ims/internal/IImsUtListener$Stub$Proxy;
Lcom/android/ims/internal/IImsUtListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/ims/internal/IImsUtListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Lcom/android/ims/internal/IImsUtListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -92412,7 +86203,6 @@
Lcom/android/ims/internal/IImsUtListener$Stub$Proxy;->utConfigurationQueryFailed(Lcom/android/ims/internal/IImsUt;ILandroid/telephony/ims/ImsReasonInfo;)V
Lcom/android/ims/internal/IImsUtListener$Stub$Proxy;->utConfigurationUpdated(Lcom/android/ims/internal/IImsUt;I)V
Lcom/android/ims/internal/IImsUtListener$Stub$Proxy;->utConfigurationUpdateFailed(Lcom/android/ims/internal/IImsUt;ILandroid/telephony/ims/ImsReasonInfo;)V
-Lcom/android/ims/internal/IImsUtListener$Stub;
Lcom/android/ims/internal/IImsUtListener$Stub;-><init>()V
Lcom/android/ims/internal/IImsUtListener$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/ims/internal/IImsUtListener;
Lcom/android/ims/internal/IImsUtListener$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -92424,9 +86214,7 @@
Lcom/android/ims/internal/IImsUtListener$Stub;->TRANSACTION_utConfigurationQueryFailed:I
Lcom/android/ims/internal/IImsUtListener$Stub;->TRANSACTION_utConfigurationUpdated:I
Lcom/android/ims/internal/IImsUtListener$Stub;->TRANSACTION_utConfigurationUpdateFailed:I
-Lcom/android/ims/internal/IImsUtListener;
Lcom/android/ims/internal/IImsUtListener;->onSupplementaryServiceIndication(Landroid/telephony/ims/ImsSsData;)V
-Lcom/android/ims/internal/IImsVideoCallCallback$Stub$Proxy;
Lcom/android/ims/internal/IImsVideoCallCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/ims/internal/IImsVideoCallCallback$Stub$Proxy;->changeCallDataUsage(J)V
Lcom/android/ims/internal/IImsVideoCallCallback$Stub$Proxy;->changeCameraCapabilities(Landroid/telecom/VideoProfile$CameraCapabilities;)V
@@ -92437,7 +86225,6 @@
Lcom/android/ims/internal/IImsVideoCallCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Lcom/android/ims/internal/IImsVideoCallCallback$Stub$Proxy;->receiveSessionModifyRequest(Landroid/telecom/VideoProfile;)V
Lcom/android/ims/internal/IImsVideoCallCallback$Stub$Proxy;->receiveSessionModifyResponse(ILandroid/telecom/VideoProfile;Landroid/telecom/VideoProfile;)V
-Lcom/android/ims/internal/IImsVideoCallCallback$Stub;
Lcom/android/ims/internal/IImsVideoCallCallback$Stub;-><init>()V
Lcom/android/ims/internal/IImsVideoCallCallback$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/ims/internal/IImsVideoCallCallback;
Lcom/android/ims/internal/IImsVideoCallCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -92448,8 +86235,6 @@
Lcom/android/ims/internal/IImsVideoCallCallback$Stub;->TRANSACTION_handleCallSessionEvent:I
Lcom/android/ims/internal/IImsVideoCallCallback$Stub;->TRANSACTION_receiveSessionModifyRequest:I
Lcom/android/ims/internal/IImsVideoCallCallback$Stub;->TRANSACTION_receiveSessionModifyResponse:I
-Lcom/android/ims/internal/IImsVideoCallCallback;
-Lcom/android/ims/internal/IImsVideoCallProvider$Stub$Proxy;
Lcom/android/ims/internal/IImsVideoCallProvider$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/ims/internal/IImsVideoCallProvider$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Lcom/android/ims/internal/IImsVideoCallProvider$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -92464,7 +86249,6 @@
Lcom/android/ims/internal/IImsVideoCallProvider$Stub$Proxy;->setPauseImage(Landroid/net/Uri;)V
Lcom/android/ims/internal/IImsVideoCallProvider$Stub$Proxy;->setPreviewSurface(Landroid/view/Surface;)V
Lcom/android/ims/internal/IImsVideoCallProvider$Stub$Proxy;->setZoom(F)V
-Lcom/android/ims/internal/IImsVideoCallProvider$Stub;
Lcom/android/ims/internal/IImsVideoCallProvider$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/ims/internal/IImsVideoCallProvider;
Lcom/android/ims/internal/IImsVideoCallProvider$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/ims/internal/IImsVideoCallProvider$Stub;->TRANSACTION_requestCallDataUsage:I
@@ -92478,7 +86262,6 @@
Lcom/android/ims/internal/IImsVideoCallProvider$Stub;->TRANSACTION_setPauseImage:I
Lcom/android/ims/internal/IImsVideoCallProvider$Stub;->TRANSACTION_setPreviewSurface:I
Lcom/android/ims/internal/IImsVideoCallProvider$Stub;->TRANSACTION_setZoom:I
-Lcom/android/ims/internal/IImsVideoCallProvider;
Lcom/android/ims/internal/IImsVideoCallProvider;->requestCallDataUsage()V
Lcom/android/ims/internal/IImsVideoCallProvider;->requestCameraCapabilities()V
Lcom/android/ims/internal/IImsVideoCallProvider;->sendSessionModifyRequest(Landroid/telecom/VideoProfile;Landroid/telecom/VideoProfile;)V
@@ -92489,7 +86272,6 @@
Lcom/android/ims/internal/IImsVideoCallProvider;->setPauseImage(Landroid/net/Uri;)V
Lcom/android/ims/internal/IImsVideoCallProvider;->setPreviewSurface(Landroid/view/Surface;)V
Lcom/android/ims/internal/IImsVideoCallProvider;->setZoom(F)V
-Lcom/android/ims/internal/uce/common/CapInfo;
Lcom/android/ims/internal/uce/common/CapInfo;-><init>(Landroid/os/Parcel;)V
Lcom/android/ims/internal/uce/common/CapInfo;->CREATOR:Landroid/os/Parcelable$Creator;
Lcom/android/ims/internal/uce/common/CapInfo;->getExts()[Ljava/lang/String;
@@ -92516,7 +86298,6 @@
Lcom/android/ims/internal/uce/common/CapInfo;->mVsDuringCSSupported:Z
Lcom/android/ims/internal/uce/common/CapInfo;->mVsSupported:Z
Lcom/android/ims/internal/uce/common/CapInfo;->readFromParcel(Landroid/os/Parcel;)V
-Lcom/android/ims/internal/uce/common/StatusCode;
Lcom/android/ims/internal/uce/common/StatusCode;-><init>(Landroid/os/Parcel;)V
Lcom/android/ims/internal/uce/common/StatusCode;->CREATOR:Landroid/os/Parcelable$Creator;
Lcom/android/ims/internal/uce/common/StatusCode;->mStatusCode:I
@@ -92536,7 +86317,6 @@
Lcom/android/ims/internal/uce/common/StatusCode;->UCE_SERVICE_UNKNOWN:I
Lcom/android/ims/internal/uce/common/StatusCode;->UCE_SUCCESS:I
Lcom/android/ims/internal/uce/common/StatusCode;->UCE_SUCCESS_ASYC_UPDATE:I
-Lcom/android/ims/internal/uce/common/UceLong;
Lcom/android/ims/internal/uce/common/UceLong;-><init>(Landroid/os/Parcel;)V
Lcom/android/ims/internal/uce/common/UceLong;->CREATOR:Landroid/os/Parcelable$Creator;
Lcom/android/ims/internal/uce/common/UceLong;->getUceLongInstance()Lcom/android/ims/internal/uce/common/UceLong;
@@ -92544,7 +86324,6 @@
Lcom/android/ims/internal/uce/common/UceLong;->mUceLong:J
Lcom/android/ims/internal/uce/common/UceLong;->readFromParcel(Landroid/os/Parcel;)V
Lcom/android/ims/internal/uce/common/UceLong;->writeToParcel(Landroid/os/Parcel;)V
-Lcom/android/ims/internal/uce/options/IOptionsListener$Stub$Proxy;
Lcom/android/ims/internal/uce/options/IOptionsListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/ims/internal/uce/options/IOptionsListener$Stub$Proxy;->cmdStatus(Lcom/android/ims/internal/uce/options/OptionsCmdStatus;)V
Lcom/android/ims/internal/uce/options/IOptionsListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
@@ -92554,7 +86333,6 @@
Lcom/android/ims/internal/uce/options/IOptionsListener$Stub$Proxy;->serviceAvailable(Lcom/android/ims/internal/uce/common/StatusCode;)V
Lcom/android/ims/internal/uce/options/IOptionsListener$Stub$Proxy;->serviceUnavailable(Lcom/android/ims/internal/uce/common/StatusCode;)V
Lcom/android/ims/internal/uce/options/IOptionsListener$Stub$Proxy;->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/IOptionsListener$Stub;
Lcom/android/ims/internal/uce/options/IOptionsListener$Stub;-><init>()V
Lcom/android/ims/internal/uce/options/IOptionsListener$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/ims/internal/uce/options/IOptionsListener;
Lcom/android/ims/internal/uce/options/IOptionsListener$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -92564,8 +86342,6 @@
Lcom/android/ims/internal/uce/options/IOptionsListener$Stub;->TRANSACTION_serviceAvailable:I
Lcom/android/ims/internal/uce/options/IOptionsListener$Stub;->TRANSACTION_serviceUnavailable:I
Lcom/android/ims/internal/uce/options/IOptionsListener$Stub;->TRANSACTION_sipResponseReceived:I
-Lcom/android/ims/internal/uce/options/IOptionsListener;
-Lcom/android/ims/internal/uce/options/IOptionsService$Stub$Proxy;
Lcom/android/ims/internal/uce/options/IOptionsService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/ims/internal/uce/options/IOptionsService$Stub$Proxy;->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$Stub$Proxy;->getContactCap(ILjava/lang/String;I)Lcom/android/ims/internal/uce/common/StatusCode;
@@ -92577,7 +86353,6 @@
Lcom/android/ims/internal/uce/options/IOptionsService$Stub$Proxy;->removeListener(ILcom/android/ims/internal/uce/common/UceLong;)Lcom/android/ims/internal/uce/common/StatusCode;
Lcom/android/ims/internal/uce/options/IOptionsService$Stub$Proxy;->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$Stub$Proxy;->setMyInfo(ILcom/android/ims/internal/uce/common/CapInfo;I)Lcom/android/ims/internal/uce/common/StatusCode;
-Lcom/android/ims/internal/uce/options/IOptionsService$Stub;
Lcom/android/ims/internal/uce/options/IOptionsService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/ims/internal/uce/options/IOptionsService;
Lcom/android/ims/internal/uce/options/IOptionsService$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/ims/internal/uce/options/IOptionsService$Stub;->TRANSACTION_addListener:I
@@ -92588,15 +86363,12 @@
Lcom/android/ims/internal/uce/options/IOptionsService$Stub;->TRANSACTION_removeListener:I
Lcom/android/ims/internal/uce/options/IOptionsService$Stub;->TRANSACTION_responseIncomingOptions:I
Lcom/android/ims/internal/uce/options/IOptionsService$Stub;->TRANSACTION_setMyInfo:I
-Lcom/android/ims/internal/uce/options/IOptionsService;
-Lcom/android/ims/internal/uce/options/OptionsCapInfo;
Lcom/android/ims/internal/uce/options/OptionsCapInfo;-><init>(Landroid/os/Parcel;)V
Lcom/android/ims/internal/uce/options/OptionsCapInfo;->CREATOR:Landroid/os/Parcelable$Creator;
Lcom/android/ims/internal/uce/options/OptionsCapInfo;->getOptionsCapInfoInstance()Lcom/android/ims/internal/uce/options/OptionsCapInfo;
Lcom/android/ims/internal/uce/options/OptionsCapInfo;->mCapInfo:Lcom/android/ims/internal/uce/common/CapInfo;
Lcom/android/ims/internal/uce/options/OptionsCapInfo;->mSdp:Ljava/lang/String;
Lcom/android/ims/internal/uce/options/OptionsCapInfo;->readFromParcel(Landroid/os/Parcel;)V
-Lcom/android/ims/internal/uce/options/OptionsCmdId;
Lcom/android/ims/internal/uce/options/OptionsCmdId;-><init>(Landroid/os/Parcel;)V
Lcom/android/ims/internal/uce/options/OptionsCmdId;->CREATOR:Landroid/os/Parcelable$Creator;
Lcom/android/ims/internal/uce/options/OptionsCmdId;->getCmdId()I
@@ -92609,7 +86381,6 @@
Lcom/android/ims/internal/uce/options/OptionsCmdId;->UCE_OPTIONS_CMD_RESPONSEINCOMINGOPTIONS:I
Lcom/android/ims/internal/uce/options/OptionsCmdId;->UCE_OPTIONS_CMD_SETMYCDINFO:I
Lcom/android/ims/internal/uce/options/OptionsCmdId;->UCE_OPTIONS_CMD_UNKNOWN:I
-Lcom/android/ims/internal/uce/options/OptionsCmdStatus;
Lcom/android/ims/internal/uce/options/OptionsCmdStatus;-><init>(Landroid/os/Parcel;)V
Lcom/android/ims/internal/uce/options/OptionsCmdStatus;->CREATOR:Landroid/os/Parcelable$Creator;
Lcom/android/ims/internal/uce/options/OptionsCmdStatus;->getCapInfo()Lcom/android/ims/internal/uce/common/CapInfo;
@@ -92622,7 +86393,6 @@
Lcom/android/ims/internal/uce/options/OptionsCmdStatus;->mStatus:Lcom/android/ims/internal/uce/common/StatusCode;
Lcom/android/ims/internal/uce/options/OptionsCmdStatus;->mUserData:I
Lcom/android/ims/internal/uce/options/OptionsCmdStatus;->readFromParcel(Landroid/os/Parcel;)V
-Lcom/android/ims/internal/uce/options/OptionsSipResponse;
Lcom/android/ims/internal/uce/options/OptionsSipResponse;-><init>(Landroid/os/Parcel;)V
Lcom/android/ims/internal/uce/options/OptionsSipResponse;->CREATOR:Landroid/os/Parcelable$Creator;
Lcom/android/ims/internal/uce/options/OptionsSipResponse;->getCmdId()Lcom/android/ims/internal/uce/options/OptionsCmdId;
@@ -92636,7 +86406,6 @@
Lcom/android/ims/internal/uce/options/OptionsSipResponse;->mRetryAfter:I
Lcom/android/ims/internal/uce/options/OptionsSipResponse;->mSipResponseCode:I
Lcom/android/ims/internal/uce/options/OptionsSipResponse;->readFromParcel(Landroid/os/Parcel;)V
-Lcom/android/ims/internal/uce/presence/IPresenceListener$Stub$Proxy;
Lcom/android/ims/internal/uce/presence/IPresenceListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/ims/internal/uce/presence/IPresenceListener$Stub$Proxy;->capInfoReceived(Ljava/lang/String;[Lcom/android/ims/internal/uce/presence/PresTupleInfo;)V
Lcom/android/ims/internal/uce/presence/IPresenceListener$Stub$Proxy;->cmdStatus(Lcom/android/ims/internal/uce/presence/PresCmdStatus;)V
@@ -92649,7 +86418,6 @@
Lcom/android/ims/internal/uce/presence/IPresenceListener$Stub$Proxy;->serviceUnAvailable(Lcom/android/ims/internal/uce/common/StatusCode;)V
Lcom/android/ims/internal/uce/presence/IPresenceListener$Stub$Proxy;->sipResponseReceived(Lcom/android/ims/internal/uce/presence/PresSipResponse;)V
Lcom/android/ims/internal/uce/presence/IPresenceListener$Stub$Proxy;->unpublishMessageSent()V
-Lcom/android/ims/internal/uce/presence/IPresenceListener$Stub;
Lcom/android/ims/internal/uce/presence/IPresenceListener$Stub;-><init>()V
Lcom/android/ims/internal/uce/presence/IPresenceListener$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/ims/internal/uce/presence/IPresenceListener;
Lcom/android/ims/internal/uce/presence/IPresenceListener$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -92662,8 +86430,6 @@
Lcom/android/ims/internal/uce/presence/IPresenceListener$Stub;->TRANSACTION_serviceUnAvailable:I
Lcom/android/ims/internal/uce/presence/IPresenceListener$Stub;->TRANSACTION_sipResponseReceived:I
Lcom/android/ims/internal/uce/presence/IPresenceListener$Stub;->TRANSACTION_unpublishMessageSent:I
-Lcom/android/ims/internal/uce/presence/IPresenceListener;
-Lcom/android/ims/internal/uce/presence/IPresenceService$Stub$Proxy;
Lcom/android/ims/internal/uce/presence/IPresenceService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/ims/internal/uce/presence/IPresenceService$Stub$Proxy;->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$Stub$Proxy;->getContactCap(ILjava/lang/String;I)Lcom/android/ims/internal/uce/common/StatusCode;
@@ -92675,7 +86441,6 @@
Lcom/android/ims/internal/uce/presence/IPresenceService$Stub$Proxy;->reenableService(II)Lcom/android/ims/internal/uce/common/StatusCode;
Lcom/android/ims/internal/uce/presence/IPresenceService$Stub$Proxy;->removeListener(ILcom/android/ims/internal/uce/common/UceLong;)Lcom/android/ims/internal/uce/common/StatusCode;
Lcom/android/ims/internal/uce/presence/IPresenceService$Stub$Proxy;->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/IPresenceService$Stub;
Lcom/android/ims/internal/uce/presence/IPresenceService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/ims/internal/uce/presence/IPresenceService;
Lcom/android/ims/internal/uce/presence/IPresenceService$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/ims/internal/uce/presence/IPresenceService$Stub;->TRANSACTION_addListener:I
@@ -92686,8 +86451,6 @@
Lcom/android/ims/internal/uce/presence/IPresenceService$Stub;->TRANSACTION_reenableService:I
Lcom/android/ims/internal/uce/presence/IPresenceService$Stub;->TRANSACTION_removeListener:I
Lcom/android/ims/internal/uce/presence/IPresenceService$Stub;->TRANSACTION_setNewFeatureTag:I
-Lcom/android/ims/internal/uce/presence/IPresenceService;
-Lcom/android/ims/internal/uce/presence/PresCapInfo;
Lcom/android/ims/internal/uce/presence/PresCapInfo;-><init>()V
Lcom/android/ims/internal/uce/presence/PresCapInfo;-><init>(Landroid/os/Parcel;)V
Lcom/android/ims/internal/uce/presence/PresCapInfo;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -92695,7 +86458,6 @@
Lcom/android/ims/internal/uce/presence/PresCapInfo;->readFromParcel(Landroid/os/Parcel;)V
Lcom/android/ims/internal/uce/presence/PresCapInfo;->setCapInfo(Lcom/android/ims/internal/uce/common/CapInfo;)V
Lcom/android/ims/internal/uce/presence/PresCapInfo;->setContactUri(Ljava/lang/String;)V
-Lcom/android/ims/internal/uce/presence/PresCmdId;
Lcom/android/ims/internal/uce/presence/PresCmdId;-><init>(Landroid/os/Parcel;)V
Lcom/android/ims/internal/uce/presence/PresCmdId;->CREATOR:Landroid/os/Parcelable$Creator;
Lcom/android/ims/internal/uce/presence/PresCmdId;->getCmdId()I
@@ -92708,7 +86470,6 @@
Lcom/android/ims/internal/uce/presence/PresCmdId;->UCE_PRES_CMD_REENABLE_SERVICE:I
Lcom/android/ims/internal/uce/presence/PresCmdId;->UCE_PRES_CMD_SETNEWFEATURETAG:I
Lcom/android/ims/internal/uce/presence/PresCmdId;->UCE_PRES_CMD_UNKNOWN:I
-Lcom/android/ims/internal/uce/presence/PresCmdStatus;
Lcom/android/ims/internal/uce/presence/PresCmdStatus;-><init>(Landroid/os/Parcel;)V
Lcom/android/ims/internal/uce/presence/PresCmdStatus;->CREATOR:Landroid/os/Parcelable$Creator;
Lcom/android/ims/internal/uce/presence/PresCmdStatus;->getCmdId()Lcom/android/ims/internal/uce/presence/PresCmdId;
@@ -92720,7 +86481,6 @@
Lcom/android/ims/internal/uce/presence/PresCmdStatus;->mStatus:Lcom/android/ims/internal/uce/common/StatusCode;
Lcom/android/ims/internal/uce/presence/PresCmdStatus;->mUserData:I
Lcom/android/ims/internal/uce/presence/PresCmdStatus;->readFromParcel(Landroid/os/Parcel;)V
-Lcom/android/ims/internal/uce/presence/PresPublishTriggerType;
Lcom/android/ims/internal/uce/presence/PresPublishTriggerType;-><init>(Landroid/os/Parcel;)V
Lcom/android/ims/internal/uce/presence/PresPublishTriggerType;->CREATOR:Landroid/os/Parcelable$Creator;
Lcom/android/ims/internal/uce/presence/PresPublishTriggerType;->getPublishTrigeerType()I
@@ -92736,7 +86496,6 @@
Lcom/android/ims/internal/uce/presence/PresPublishTriggerType;->UCE_PRES_PUBLISH_TRIGGER_MOVE_TO_LTE_VOPS_ENABLED:I
Lcom/android/ims/internal/uce/presence/PresPublishTriggerType;->UCE_PRES_PUBLISH_TRIGGER_MOVE_TO_WLAN:I
Lcom/android/ims/internal/uce/presence/PresPublishTriggerType;->UCE_PRES_PUBLISH_TRIGGER_UNKNOWN:I
-Lcom/android/ims/internal/uce/presence/PresResInfo;
Lcom/android/ims/internal/uce/presence/PresResInfo;-><init>(Landroid/os/Parcel;)V
Lcom/android/ims/internal/uce/presence/PresResInfo;->CREATOR:Landroid/os/Parcelable$Creator;
Lcom/android/ims/internal/uce/presence/PresResInfo;->getDisplayName()Ljava/lang/String;
@@ -92746,7 +86505,6 @@
Lcom/android/ims/internal/uce/presence/PresResInfo;->mInstanceInfo:Lcom/android/ims/internal/uce/presence/PresResInstanceInfo;
Lcom/android/ims/internal/uce/presence/PresResInfo;->mResUri:Ljava/lang/String;
Lcom/android/ims/internal/uce/presence/PresResInfo;->readFromParcel(Landroid/os/Parcel;)V
-Lcom/android/ims/internal/uce/presence/PresResInstanceInfo;
Lcom/android/ims/internal/uce/presence/PresResInstanceInfo;-><init>(Landroid/os/Parcel;)V
Lcom/android/ims/internal/uce/presence/PresResInstanceInfo;->CREATOR:Landroid/os/Parcelable$Creator;
Lcom/android/ims/internal/uce/presence/PresResInstanceInfo;->getPresentityUri()Ljava/lang/String;
@@ -92765,7 +86523,6 @@
Lcom/android/ims/internal/uce/presence/PresResInstanceInfo;->UCE_PRES_RES_INSTANCE_STATE_TERMINATED:I
Lcom/android/ims/internal/uce/presence/PresResInstanceInfo;->UCE_PRES_RES_INSTANCE_STATE_UNKNOWN:I
Lcom/android/ims/internal/uce/presence/PresResInstanceInfo;->UCE_PRES_RES_INSTANCE_UNKNOWN:I
-Lcom/android/ims/internal/uce/presence/PresRlmiInfo;
Lcom/android/ims/internal/uce/presence/PresRlmiInfo;-><init>(Landroid/os/Parcel;)V
Lcom/android/ims/internal/uce/presence/PresRlmiInfo;->CREATOR:Landroid/os/Parcelable$Creator;
Lcom/android/ims/internal/uce/presence/PresRlmiInfo;->getListName()Ljava/lang/String;
@@ -92785,7 +86542,6 @@
Lcom/android/ims/internal/uce/presence/PresRlmiInfo;->mUri:Ljava/lang/String;
Lcom/android/ims/internal/uce/presence/PresRlmiInfo;->mVersion:I
Lcom/android/ims/internal/uce/presence/PresRlmiInfo;->readFromParcel(Landroid/os/Parcel;)V
-Lcom/android/ims/internal/uce/presence/PresServiceInfo;
Lcom/android/ims/internal/uce/presence/PresServiceInfo;-><init>()V
Lcom/android/ims/internal/uce/presence/PresServiceInfo;-><init>(Landroid/os/Parcel;)V
Lcom/android/ims/internal/uce/presence/PresServiceInfo;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -92802,7 +86558,6 @@
Lcom/android/ims/internal/uce/presence/PresServiceInfo;->UCE_PRES_MEDIA_CAP_FULL_AUDIO_ONLY:I
Lcom/android/ims/internal/uce/presence/PresServiceInfo;->UCE_PRES_MEDIA_CAP_NONE:I
Lcom/android/ims/internal/uce/presence/PresServiceInfo;->UCE_PRES_MEDIA_CAP_UNKNOWN:I
-Lcom/android/ims/internal/uce/presence/PresSipResponse;
Lcom/android/ims/internal/uce/presence/PresSipResponse;-><init>(Landroid/os/Parcel;)V
Lcom/android/ims/internal/uce/presence/PresSipResponse;->CREATOR:Landroid/os/Parcelable$Creator;
Lcom/android/ims/internal/uce/presence/PresSipResponse;->mCmdId:Lcom/android/ims/internal/uce/presence/PresCmdId;
@@ -92811,7 +86566,6 @@
Lcom/android/ims/internal/uce/presence/PresSipResponse;->mRetryAfter:I
Lcom/android/ims/internal/uce/presence/PresSipResponse;->mSipResponseCode:I
Lcom/android/ims/internal/uce/presence/PresSipResponse;->readFromParcel(Landroid/os/Parcel;)V
-Lcom/android/ims/internal/uce/presence/PresSubscriptionState;
Lcom/android/ims/internal/uce/presence/PresSubscriptionState;-><init>(Landroid/os/Parcel;)V
Lcom/android/ims/internal/uce/presence/PresSubscriptionState;->CREATOR:Landroid/os/Parcelable$Creator;
Lcom/android/ims/internal/uce/presence/PresSubscriptionState;->getPresSubscriptionStateValue()I
@@ -92821,7 +86575,6 @@
Lcom/android/ims/internal/uce/presence/PresSubscriptionState;->UCE_PRES_SUBSCRIPTION_STATE_PENDING:I
Lcom/android/ims/internal/uce/presence/PresSubscriptionState;->UCE_PRES_SUBSCRIPTION_STATE_TERMINATED:I
Lcom/android/ims/internal/uce/presence/PresSubscriptionState;->UCE_PRES_SUBSCRIPTION_STATE_UNKNOWN:I
-Lcom/android/ims/internal/uce/presence/PresTupleInfo;
Lcom/android/ims/internal/uce/presence/PresTupleInfo;-><init>(Landroid/os/Parcel;)V
Lcom/android/ims/internal/uce/presence/PresTupleInfo;->CREATOR:Landroid/os/Parcelable$Creator;
Lcom/android/ims/internal/uce/presence/PresTupleInfo;->getContactUri()Ljava/lang/String;
@@ -92831,17 +86584,13 @@
Lcom/android/ims/internal/uce/presence/PresTupleInfo;->mFeatureTag:Ljava/lang/String;
Lcom/android/ims/internal/uce/presence/PresTupleInfo;->mTimestamp:Ljava/lang/String;
Lcom/android/ims/internal/uce/presence/PresTupleInfo;->readFromParcel(Landroid/os/Parcel;)V
-Lcom/android/ims/internal/uce/uceservice/IUceListener$Stub$Proxy;
Lcom/android/ims/internal/uce/uceservice/IUceListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/ims/internal/uce/uceservice/IUceListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Lcom/android/ims/internal/uce/uceservice/IUceListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Lcom/android/ims/internal/uce/uceservice/IUceListener$Stub$Proxy;->setStatus(I)V
-Lcom/android/ims/internal/uce/uceservice/IUceListener$Stub;
Lcom/android/ims/internal/uce/uceservice/IUceListener$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/ims/internal/uce/uceservice/IUceListener;
Lcom/android/ims/internal/uce/uceservice/IUceListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/ims/internal/uce/uceservice/IUceListener$Stub;->TRANSACTION_setStatus:I
-Lcom/android/ims/internal/uce/uceservice/IUceListener;
-Lcom/android/ims/internal/uce/uceservice/IUceService$Stub$Proxy;
Lcom/android/ims/internal/uce/uceservice/IUceService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/ims/internal/uce/uceservice/IUceService$Stub$Proxy;->createOptionsService(Lcom/android/ims/internal/uce/options/IOptionsListener;Lcom/android/ims/internal/uce/common/UceLong;)I
Lcom/android/ims/internal/uce/uceservice/IUceService$Stub$Proxy;->createPresenceService(Lcom/android/ims/internal/uce/presence/IPresenceListener;Lcom/android/ims/internal/uce/common/UceLong;)I
@@ -92855,7 +86604,6 @@
Lcom/android/ims/internal/uce/uceservice/IUceService$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Lcom/android/ims/internal/uce/uceservice/IUceService$Stub$Proxy;->startService(Lcom/android/ims/internal/uce/uceservice/IUceListener;)Z
Lcom/android/ims/internal/uce/uceservice/IUceService$Stub$Proxy;->stopService()Z
-Lcom/android/ims/internal/uce/uceservice/IUceService$Stub;
Lcom/android/ims/internal/uce/uceservice/IUceService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/ims/internal/uce/uceservice/IUceService;
Lcom/android/ims/internal/uce/uceservice/IUceService$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/ims/internal/uce/uceservice/IUceService$Stub;->TRANSACTION_createOptionsService:I
@@ -92868,10 +86616,7 @@
Lcom/android/ims/internal/uce/uceservice/IUceService$Stub;->TRANSACTION_isServiceStarted:I
Lcom/android/ims/internal/uce/uceservice/IUceService$Stub;->TRANSACTION_startService:I
Lcom/android/ims/internal/uce/uceservice/IUceService$Stub;->TRANSACTION_stopService:I
-Lcom/android/ims/internal/uce/uceservice/IUceService;
-Lcom/android/internal/app/AlertController$AlertParams$OnPrepareListViewListener;
Lcom/android/internal/app/AlertController$AlertParams$OnPrepareListViewListener;->onPrepareListView(Landroid/widget/ListView;)V
-Lcom/android/internal/app/AlertController$AlertParams;
Lcom/android/internal/app/AlertController$AlertParams;->createListView(Lcom/android/internal/app/AlertController;)V
Lcom/android/internal/app/AlertController$AlertParams;->mForceInverseBackground:Z
Lcom/android/internal/app/AlertController$AlertParams;->mIconAttrId:I
@@ -92883,19 +86628,15 @@
Lcom/android/internal/app/AlertController$AlertParams;->mViewSpacingRight:I
Lcom/android/internal/app/AlertController$AlertParams;->mViewSpacingSpecified:Z
Lcom/android/internal/app/AlertController$AlertParams;->mViewSpacingTop:I
-Lcom/android/internal/app/AlertController$ButtonHandler;
Lcom/android/internal/app/AlertController$ButtonHandler;-><init>(Landroid/content/DialogInterface;)V
Lcom/android/internal/app/AlertController$ButtonHandler;->mDialog:Ljava/lang/ref/WeakReference;
Lcom/android/internal/app/AlertController$ButtonHandler;->MSG_DISMISS_DIALOG:I
-Lcom/android/internal/app/AlertController$CheckedItemAdapter;
Lcom/android/internal/app/AlertController$CheckedItemAdapter;-><init>(Landroid/content/Context;II[Ljava/lang/CharSequence;)V
-Lcom/android/internal/app/AlertController$RecycleListView;
Lcom/android/internal/app/AlertController$RecycleListView;->mPaddingBottomNoButtons:I
Lcom/android/internal/app/AlertController$RecycleListView;->mPaddingTopNoTitle:I
Lcom/android/internal/app/AlertController$RecycleListView;->mRecycleOnMeasure:Z
Lcom/android/internal/app/AlertController$RecycleListView;->recycleOnMeasure()Z
Lcom/android/internal/app/AlertController$RecycleListView;->setHasDecor(ZZ)V
-Lcom/android/internal/app/AlertController;
Lcom/android/internal/app/AlertController;->canTextInput(Landroid/view/View;)Z
Lcom/android/internal/app/AlertController;->centerButton(Landroid/widget/Button;)V
Lcom/android/internal/app/AlertController;->create(Landroid/content/Context;Landroid/content/DialogInterface;Landroid/view/Window;)Lcom/android/internal/app/AlertController;
@@ -92958,36 +86699,28 @@
Lcom/android/internal/app/AlertController;->setView(I)V
Lcom/android/internal/app/AlertController;->setView(Landroid/view/View;IIII)V
Lcom/android/internal/app/AlertController;->shouldCenterSingleButton(Landroid/content/Context;)Z
-Lcom/android/internal/app/EventLogTags;
Lcom/android/internal/app/EventLogTags;-><init>()V
Lcom/android/internal/app/EventLogTags;->HARMFUL_APP_WARNING_LAUNCH_ANYWAY:I
Lcom/android/internal/app/EventLogTags;->HARMFUL_APP_WARNING_UNINSTALL:I
Lcom/android/internal/app/EventLogTags;->writeHarmfulAppWarningLaunchAnyway(Ljava/lang/String;)V
Lcom/android/internal/app/EventLogTags;->writeHarmfulAppWarningUninstall(Ljava/lang/String;)V
-Lcom/android/internal/app/IAppOpsActiveCallback$Stub$Proxy;
Lcom/android/internal/app/IAppOpsActiveCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/app/IAppOpsActiveCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Lcom/android/internal/app/IAppOpsActiveCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Lcom/android/internal/app/IAppOpsActiveCallback$Stub$Proxy;->opActiveChanged(IILjava/lang/String;Z)V
-Lcom/android/internal/app/IAppOpsActiveCallback$Stub;
Lcom/android/internal/app/IAppOpsActiveCallback$Stub;-><init>()V
Lcom/android/internal/app/IAppOpsActiveCallback$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/app/IAppOpsActiveCallback;
Lcom/android/internal/app/IAppOpsActiveCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/internal/app/IAppOpsActiveCallback$Stub;->TRANSACTION_opActiveChanged:I
-Lcom/android/internal/app/IAppOpsActiveCallback;
Lcom/android/internal/app/IAppOpsActiveCallback;->opActiveChanged(IILjava/lang/String;Z)V
-Lcom/android/internal/app/IAppOpsCallback$Stub$Proxy;
Lcom/android/internal/app/IAppOpsCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/app/IAppOpsCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Lcom/android/internal/app/IAppOpsCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Lcom/android/internal/app/IAppOpsCallback$Stub$Proxy;->opChanged(IILjava/lang/String;)V
-Lcom/android/internal/app/IAppOpsCallback$Stub;
Lcom/android/internal/app/IAppOpsCallback$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/app/IAppOpsCallback;
Lcom/android/internal/app/IAppOpsCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/internal/app/IAppOpsCallback$Stub;->TRANSACTION_opChanged:I
-Lcom/android/internal/app/IAppOpsCallback;
Lcom/android/internal/app/IAppOpsCallback;->opChanged(IILjava/lang/String;)V
-Lcom/android/internal/app/IAppOpsService$Stub$Proxy;
Lcom/android/internal/app/IAppOpsService$Stub$Proxy;->checkAudioOperation(IIILjava/lang/String;)I
Lcom/android/internal/app/IAppOpsService$Stub$Proxy;->checkPackage(ILjava/lang/String;)I
Lcom/android/internal/app/IAppOpsService$Stub$Proxy;->finishOperation(Landroid/os/IBinder;IILjava/lang/String;)V
@@ -93013,7 +86746,6 @@
Lcom/android/internal/app/IAppOpsService$Stub$Proxy;->startWatchingModeWithFlags(ILjava/lang/String;ILcom/android/internal/app/IAppOpsCallback;)V
Lcom/android/internal/app/IAppOpsService$Stub$Proxy;->stopWatchingActive(Lcom/android/internal/app/IAppOpsActiveCallback;)V
Lcom/android/internal/app/IAppOpsService$Stub$Proxy;->stopWatchingMode(Lcom/android/internal/app/IAppOpsCallback;)V
-Lcom/android/internal/app/IAppOpsService$Stub;
Lcom/android/internal/app/IAppOpsService$Stub;-><init>()V
Lcom/android/internal/app/IAppOpsService$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/internal/app/IAppOpsService$Stub;->TRANSACTION_getToken:I
@@ -93023,7 +86755,6 @@
Lcom/android/internal/app/IAppOpsService$Stub;->TRANSACTION_startWatchingActive:I
Lcom/android/internal/app/IAppOpsService$Stub;->TRANSACTION_startWatchingModeWithFlags:I
Lcom/android/internal/app/IAppOpsService$Stub;->TRANSACTION_stopWatchingActive:I
-Lcom/android/internal/app/IAppOpsService;
Lcom/android/internal/app/IAppOpsService;->checkAudioOperation(IIILjava/lang/String;)I
Lcom/android/internal/app/IAppOpsService;->checkOperation(IILjava/lang/String;)I
Lcom/android/internal/app/IAppOpsService;->checkPackage(ILjava/lang/String;)I
@@ -93044,7 +86775,6 @@
Lcom/android/internal/app/IAppOpsService;->startWatchingModeWithFlags(ILjava/lang/String;ILcom/android/internal/app/IAppOpsCallback;)V
Lcom/android/internal/app/IAppOpsService;->stopWatchingActive(Lcom/android/internal/app/IAppOpsActiveCallback;)V
Lcom/android/internal/app/IAppOpsService;->stopWatchingMode(Lcom/android/internal/app/IAppOpsCallback;)V
-Lcom/android/internal/app/IBatteryStats$Stub$Proxy;
Lcom/android/internal/app/IBatteryStats$Stub$Proxy;->computeBatteryTimeRemaining()J
Lcom/android/internal/app/IBatteryStats$Stub$Proxy;->computeChargeTimeRemaining()J
Lcom/android/internal/app/IBatteryStats$Stub$Proxy;->getAwakeTimeBattery()J
@@ -93135,7 +86865,6 @@
Lcom/android/internal/app/IBatteryStats$Stub$Proxy;->setBatteryState(IIIIIIII)V
Lcom/android/internal/app/IBatteryStats$Stub$Proxy;->takeUidSnapshot(I)Landroid/os/health/HealthStatsParceler;
Lcom/android/internal/app/IBatteryStats$Stub$Proxy;->takeUidSnapshots([I)[Landroid/os/health/HealthStatsParceler;
-Lcom/android/internal/app/IBatteryStats$Stub;
Lcom/android/internal/app/IBatteryStats$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/internal/app/IBatteryStats$Stub;->TRANSACTION_computeBatteryTimeRemaining:I
Lcom/android/internal/app/IBatteryStats$Stub;->TRANSACTION_computeChargeTimeRemaining:I
@@ -93225,7 +86954,6 @@
Lcom/android/internal/app/IBatteryStats$Stub;->TRANSACTION_setBatteryState:I
Lcom/android/internal/app/IBatteryStats$Stub;->TRANSACTION_takeUidSnapshot:I
Lcom/android/internal/app/IBatteryStats$Stub;->TRANSACTION_takeUidSnapshots:I
-Lcom/android/internal/app/IBatteryStats;
Lcom/android/internal/app/IBatteryStats;->computeBatteryTimeRemaining()J
Lcom/android/internal/app/IBatteryStats;->getAwakeTimePlugged()J
Lcom/android/internal/app/IBatteryStats;->getCellularBatteryStats()Landroid/os/connectivity/CellularBatteryStats;
@@ -93297,7 +87025,6 @@
Lcom/android/internal/app/IBatteryStats;->setBatteryState(IIIIIIII)V
Lcom/android/internal/app/IBatteryStats;->takeUidSnapshot(I)Landroid/os/health/HealthStatsParceler;
Lcom/android/internal/app/IBatteryStats;->takeUidSnapshots([I)[Landroid/os/health/HealthStatsParceler;
-Lcom/android/internal/app/IMediaContainerService$Stub$Proxy;
Lcom/android/internal/app/IMediaContainerService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/app/IMediaContainerService$Stub$Proxy;->calculateInstalledSize(Ljava/lang/String;Ljava/lang/String;)J
Lcom/android/internal/app/IMediaContainerService$Stub$Proxy;->clearDirectory(Ljava/lang/String;)V
@@ -93306,7 +87033,6 @@
Lcom/android/internal/app/IMediaContainerService$Stub$Proxy;->getMinimalPackageInfo(Ljava/lang/String;ILjava/lang/String;)Landroid/content/pm/PackageInfoLite;
Lcom/android/internal/app/IMediaContainerService$Stub$Proxy;->getObbInfo(Ljava/lang/String;)Landroid/content/res/ObbInfo;
Lcom/android/internal/app/IMediaContainerService$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Lcom/android/internal/app/IMediaContainerService$Stub;
Lcom/android/internal/app/IMediaContainerService$Stub;-><init>()V
Lcom/android/internal/app/IMediaContainerService$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/internal/app/IMediaContainerService$Stub;->TRANSACTION_calculateInstalledSize:I
@@ -93314,13 +87040,11 @@
Lcom/android/internal/app/IMediaContainerService$Stub;->TRANSACTION_copyPackage:I
Lcom/android/internal/app/IMediaContainerService$Stub;->TRANSACTION_getMinimalPackageInfo:I
Lcom/android/internal/app/IMediaContainerService$Stub;->TRANSACTION_getObbInfo:I
-Lcom/android/internal/app/IMediaContainerService;
Lcom/android/internal/app/IMediaContainerService;->calculateInstalledSize(Ljava/lang/String;Ljava/lang/String;)J
Lcom/android/internal/app/IMediaContainerService;->clearDirectory(Ljava/lang/String;)V
Lcom/android/internal/app/IMediaContainerService;->copyPackage(Ljava/lang/String;Lcom/android/internal/os/IParcelFileDescriptorFactory;)I
Lcom/android/internal/app/IMediaContainerService;->getMinimalPackageInfo(Ljava/lang/String;ILjava/lang/String;)Landroid/content/pm/PackageInfoLite;
Lcom/android/internal/app/IMediaContainerService;->getObbInfo(Ljava/lang/String;)Landroid/content/res/ObbInfo;
-Lcom/android/internal/app/ISoundTriggerService$Stub$Proxy;
Lcom/android/internal/app/ISoundTriggerService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/app/ISoundTriggerService$Stub$Proxy;->deleteSoundModel(Landroid/os/ParcelUuid;)V
Lcom/android/internal/app/ISoundTriggerService$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
@@ -93336,7 +87060,6 @@
Lcom/android/internal/app/ISoundTriggerService$Stub$Proxy;->stopRecognitionForIntent(Landroid/os/ParcelUuid;)I
Lcom/android/internal/app/ISoundTriggerService$Stub$Proxy;->unloadSoundModel(Landroid/os/ParcelUuid;)I
Lcom/android/internal/app/ISoundTriggerService$Stub$Proxy;->updateSoundModel(Landroid/hardware/soundtrigger/SoundTrigger$GenericSoundModel;)V
-Lcom/android/internal/app/ISoundTriggerService$Stub;
Lcom/android/internal/app/ISoundTriggerService$Stub;-><init>()V
Lcom/android/internal/app/ISoundTriggerService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/app/ISoundTriggerService;
Lcom/android/internal/app/ISoundTriggerService$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -93352,7 +87075,6 @@
Lcom/android/internal/app/ISoundTriggerService$Stub;->TRANSACTION_stopRecognitionForIntent:I
Lcom/android/internal/app/ISoundTriggerService$Stub;->TRANSACTION_unloadSoundModel:I
Lcom/android/internal/app/ISoundTriggerService$Stub;->TRANSACTION_updateSoundModel:I
-Lcom/android/internal/app/ISoundTriggerService;
Lcom/android/internal/app/ISoundTriggerService;->deleteSoundModel(Landroid/os/ParcelUuid;)V
Lcom/android/internal/app/ISoundTriggerService;->getSoundModel(Landroid/os/ParcelUuid;)Landroid/hardware/soundtrigger/SoundTrigger$GenericSoundModel;
Lcom/android/internal/app/ISoundTriggerService;->isRecognitionActive(Landroid/os/ParcelUuid;)Z
@@ -93365,7 +87087,6 @@
Lcom/android/internal/app/ISoundTriggerService;->stopRecognitionForIntent(Landroid/os/ParcelUuid;)I
Lcom/android/internal/app/ISoundTriggerService;->unloadSoundModel(Landroid/os/ParcelUuid;)I
Lcom/android/internal/app/ISoundTriggerService;->updateSoundModel(Landroid/hardware/soundtrigger/SoundTrigger$GenericSoundModel;)V
-Lcom/android/internal/app/IVoiceInteractionManagerService$Stub$Proxy;
Lcom/android/internal/app/IVoiceInteractionManagerService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/app/IVoiceInteractionManagerService$Stub$Proxy;->activeServiceSupportsAssist()Z
Lcom/android/internal/app/IVoiceInteractionManagerService$Stub$Proxy;->activeServiceSupportsLaunchFromKeyguard()Z
@@ -93396,7 +87117,6 @@
Lcom/android/internal/app/IVoiceInteractionManagerService$Stub$Proxy;->startVoiceActivity(Landroid/os/IBinder;Landroid/content/Intent;Ljava/lang/String;)I
Lcom/android/internal/app/IVoiceInteractionManagerService$Stub$Proxy;->stopRecognition(Landroid/service/voice/IVoiceInteractionService;ILandroid/hardware/soundtrigger/IRecognitionStatusCallback;)I
Lcom/android/internal/app/IVoiceInteractionManagerService$Stub$Proxy;->updateKeyphraseSoundModel(Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseSoundModel;)I
-Lcom/android/internal/app/IVoiceInteractionManagerService$Stub;
Lcom/android/internal/app/IVoiceInteractionManagerService$Stub;-><init>()V
Lcom/android/internal/app/IVoiceInteractionManagerService$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/internal/app/IVoiceInteractionManagerService$Stub;->TRANSACTION_activeServiceSupportsAssist:I
@@ -93427,7 +87147,6 @@
Lcom/android/internal/app/IVoiceInteractionManagerService$Stub;->TRANSACTION_startVoiceActivity:I
Lcom/android/internal/app/IVoiceInteractionManagerService$Stub;->TRANSACTION_stopRecognition:I
Lcom/android/internal/app/IVoiceInteractionManagerService$Stub;->TRANSACTION_updateKeyphraseSoundModel:I
-Lcom/android/internal/app/IVoiceInteractionManagerService;
Lcom/android/internal/app/IVoiceInteractionManagerService;->activeServiceSupportsAssist()Z
Lcom/android/internal/app/IVoiceInteractionManagerService;->activeServiceSupportsLaunchFromKeyguard()Z
Lcom/android/internal/app/IVoiceInteractionManagerService;->closeSystemDialogs(Landroid/os/IBinder;)V
@@ -93455,37 +87174,30 @@
Lcom/android/internal/app/IVoiceInteractionManagerService;->startVoiceActivity(Landroid/os/IBinder;Landroid/content/Intent;Ljava/lang/String;)I
Lcom/android/internal/app/IVoiceInteractionManagerService;->stopRecognition(Landroid/service/voice/IVoiceInteractionService;ILandroid/hardware/soundtrigger/IRecognitionStatusCallback;)I
Lcom/android/internal/app/IVoiceInteractionManagerService;->updateKeyphraseSoundModel(Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseSoundModel;)I
-Lcom/android/internal/app/IVoiceInteractionSessionListener$Stub$Proxy;
Lcom/android/internal/app/IVoiceInteractionSessionListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/app/IVoiceInteractionSessionListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Lcom/android/internal/app/IVoiceInteractionSessionListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Lcom/android/internal/app/IVoiceInteractionSessionListener$Stub$Proxy;->onVoiceSessionHidden()V
Lcom/android/internal/app/IVoiceInteractionSessionListener$Stub$Proxy;->onVoiceSessionShown()V
-Lcom/android/internal/app/IVoiceInteractionSessionListener$Stub;
Lcom/android/internal/app/IVoiceInteractionSessionListener$Stub;-><init>()V
Lcom/android/internal/app/IVoiceInteractionSessionListener$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/app/IVoiceInteractionSessionListener;
Lcom/android/internal/app/IVoiceInteractionSessionListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/internal/app/IVoiceInteractionSessionListener$Stub;->TRANSACTION_onVoiceSessionHidden:I
Lcom/android/internal/app/IVoiceInteractionSessionListener$Stub;->TRANSACTION_onVoiceSessionShown:I
-Lcom/android/internal/app/IVoiceInteractionSessionListener;
Lcom/android/internal/app/IVoiceInteractionSessionListener;->onVoiceSessionHidden()V
Lcom/android/internal/app/IVoiceInteractionSessionListener;->onVoiceSessionShown()V
-Lcom/android/internal/app/IVoiceInteractionSessionShowCallback$Stub$Proxy;
Lcom/android/internal/app/IVoiceInteractionSessionShowCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/app/IVoiceInteractionSessionShowCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Lcom/android/internal/app/IVoiceInteractionSessionShowCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Lcom/android/internal/app/IVoiceInteractionSessionShowCallback$Stub$Proxy;->onFailed()V
Lcom/android/internal/app/IVoiceInteractionSessionShowCallback$Stub$Proxy;->onShown()V
-Lcom/android/internal/app/IVoiceInteractionSessionShowCallback$Stub;
Lcom/android/internal/app/IVoiceInteractionSessionShowCallback$Stub;-><init>()V
Lcom/android/internal/app/IVoiceInteractionSessionShowCallback$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/app/IVoiceInteractionSessionShowCallback;
Lcom/android/internal/app/IVoiceInteractionSessionShowCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/internal/app/IVoiceInteractionSessionShowCallback$Stub;->TRANSACTION_onFailed:I
Lcom/android/internal/app/IVoiceInteractionSessionShowCallback$Stub;->TRANSACTION_onShown:I
-Lcom/android/internal/app/IVoiceInteractionSessionShowCallback;
Lcom/android/internal/app/IVoiceInteractionSessionShowCallback;->onFailed()V
Lcom/android/internal/app/IVoiceInteractionSessionShowCallback;->onShown()V
-Lcom/android/internal/app/IVoiceInteractor$Stub$Proxy;
Lcom/android/internal/app/IVoiceInteractor$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/app/IVoiceInteractor$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Lcom/android/internal/app/IVoiceInteractor$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -93495,7 +87207,6 @@
Lcom/android/internal/app/IVoiceInteractor$Stub$Proxy;->startConfirmation(Ljava/lang/String;Lcom/android/internal/app/IVoiceInteractorCallback;Landroid/app/VoiceInteractor$Prompt;Landroid/os/Bundle;)Lcom/android/internal/app/IVoiceInteractorRequest;
Lcom/android/internal/app/IVoiceInteractor$Stub$Proxy;->startPickOption(Ljava/lang/String;Lcom/android/internal/app/IVoiceInteractorCallback;Landroid/app/VoiceInteractor$Prompt;[Landroid/app/VoiceInteractor$PickOptionRequest$Option;Landroid/os/Bundle;)Lcom/android/internal/app/IVoiceInteractorRequest;
Lcom/android/internal/app/IVoiceInteractor$Stub$Proxy;->supportsCommands(Ljava/lang/String;[Ljava/lang/String;)[Z
-Lcom/android/internal/app/IVoiceInteractor$Stub;
Lcom/android/internal/app/IVoiceInteractor$Stub;-><init>()V
Lcom/android/internal/app/IVoiceInteractor$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/app/IVoiceInteractor;
Lcom/android/internal/app/IVoiceInteractor$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -93505,14 +87216,12 @@
Lcom/android/internal/app/IVoiceInteractor$Stub;->TRANSACTION_startConfirmation:I
Lcom/android/internal/app/IVoiceInteractor$Stub;->TRANSACTION_startPickOption:I
Lcom/android/internal/app/IVoiceInteractor$Stub;->TRANSACTION_supportsCommands:I
-Lcom/android/internal/app/IVoiceInteractor;
Lcom/android/internal/app/IVoiceInteractor;->startAbortVoice(Ljava/lang/String;Lcom/android/internal/app/IVoiceInteractorCallback;Landroid/app/VoiceInteractor$Prompt;Landroid/os/Bundle;)Lcom/android/internal/app/IVoiceInteractorRequest;
Lcom/android/internal/app/IVoiceInteractor;->startCommand(Ljava/lang/String;Lcom/android/internal/app/IVoiceInteractorCallback;Ljava/lang/String;Landroid/os/Bundle;)Lcom/android/internal/app/IVoiceInteractorRequest;
Lcom/android/internal/app/IVoiceInteractor;->startCompleteVoice(Ljava/lang/String;Lcom/android/internal/app/IVoiceInteractorCallback;Landroid/app/VoiceInteractor$Prompt;Landroid/os/Bundle;)Lcom/android/internal/app/IVoiceInteractorRequest;
Lcom/android/internal/app/IVoiceInteractor;->startConfirmation(Ljava/lang/String;Lcom/android/internal/app/IVoiceInteractorCallback;Landroid/app/VoiceInteractor$Prompt;Landroid/os/Bundle;)Lcom/android/internal/app/IVoiceInteractorRequest;
Lcom/android/internal/app/IVoiceInteractor;->startPickOption(Ljava/lang/String;Lcom/android/internal/app/IVoiceInteractorCallback;Landroid/app/VoiceInteractor$Prompt;[Landroid/app/VoiceInteractor$PickOptionRequest$Option;Landroid/os/Bundle;)Lcom/android/internal/app/IVoiceInteractorRequest;
Lcom/android/internal/app/IVoiceInteractor;->supportsCommands(Ljava/lang/String;[Ljava/lang/String;)[Z
-Lcom/android/internal/app/IVoiceInteractorCallback$Stub$Proxy;
Lcom/android/internal/app/IVoiceInteractorCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/app/IVoiceInteractorCallback$Stub$Proxy;->deliverAbortVoiceResult(Lcom/android/internal/app/IVoiceInteractorRequest;Landroid/os/Bundle;)V
Lcom/android/internal/app/IVoiceInteractorCallback$Stub$Proxy;->deliverCancel(Lcom/android/internal/app/IVoiceInteractorRequest;)V
@@ -93522,7 +87231,6 @@
Lcom/android/internal/app/IVoiceInteractorCallback$Stub$Proxy;->deliverPickOptionResult(Lcom/android/internal/app/IVoiceInteractorRequest;Z[Landroid/app/VoiceInteractor$PickOptionRequest$Option;Landroid/os/Bundle;)V
Lcom/android/internal/app/IVoiceInteractorCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Lcom/android/internal/app/IVoiceInteractorCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Lcom/android/internal/app/IVoiceInteractorCallback$Stub;
Lcom/android/internal/app/IVoiceInteractorCallback$Stub;-><init>()V
Lcom/android/internal/app/IVoiceInteractorCallback$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/app/IVoiceInteractorCallback;
Lcom/android/internal/app/IVoiceInteractorCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -93532,26 +87240,21 @@
Lcom/android/internal/app/IVoiceInteractorCallback$Stub;->TRANSACTION_deliverCompleteVoiceResult:I
Lcom/android/internal/app/IVoiceInteractorCallback$Stub;->TRANSACTION_deliverConfirmationResult:I
Lcom/android/internal/app/IVoiceInteractorCallback$Stub;->TRANSACTION_deliverPickOptionResult:I
-Lcom/android/internal/app/IVoiceInteractorCallback;
Lcom/android/internal/app/IVoiceInteractorCallback;->deliverAbortVoiceResult(Lcom/android/internal/app/IVoiceInteractorRequest;Landroid/os/Bundle;)V
Lcom/android/internal/app/IVoiceInteractorCallback;->deliverCancel(Lcom/android/internal/app/IVoiceInteractorRequest;)V
Lcom/android/internal/app/IVoiceInteractorCallback;->deliverCommandResult(Lcom/android/internal/app/IVoiceInteractorRequest;ZLandroid/os/Bundle;)V
Lcom/android/internal/app/IVoiceInteractorCallback;->deliverCompleteVoiceResult(Lcom/android/internal/app/IVoiceInteractorRequest;Landroid/os/Bundle;)V
Lcom/android/internal/app/IVoiceInteractorCallback;->deliverConfirmationResult(Lcom/android/internal/app/IVoiceInteractorRequest;ZLandroid/os/Bundle;)V
Lcom/android/internal/app/IVoiceInteractorCallback;->deliverPickOptionResult(Lcom/android/internal/app/IVoiceInteractorRequest;Z[Landroid/app/VoiceInteractor$PickOptionRequest$Option;Landroid/os/Bundle;)V
-Lcom/android/internal/app/IVoiceInteractorRequest$Stub$Proxy;
Lcom/android/internal/app/IVoiceInteractorRequest$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/app/IVoiceInteractorRequest$Stub$Proxy;->cancel()V
Lcom/android/internal/app/IVoiceInteractorRequest$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Lcom/android/internal/app/IVoiceInteractorRequest$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Lcom/android/internal/app/IVoiceInteractorRequest$Stub;
Lcom/android/internal/app/IVoiceInteractorRequest$Stub;-><init>()V
Lcom/android/internal/app/IVoiceInteractorRequest$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/app/IVoiceInteractorRequest;
Lcom/android/internal/app/IVoiceInteractorRequest$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/internal/app/IVoiceInteractorRequest$Stub;->TRANSACTION_cancel:I
-Lcom/android/internal/app/IVoiceInteractorRequest;
Lcom/android/internal/app/IVoiceInteractorRequest;->cancel()V
-Lcom/android/internal/appwidget/IAppWidgetHost$Stub$Proxy;
Lcom/android/internal/appwidget/IAppWidgetHost$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/appwidget/IAppWidgetHost$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Lcom/android/internal/appwidget/IAppWidgetHost$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -93559,7 +87262,6 @@
Lcom/android/internal/appwidget/IAppWidgetHost$Stub$Proxy;->providersChanged()V
Lcom/android/internal/appwidget/IAppWidgetHost$Stub$Proxy;->updateAppWidget(ILandroid/widget/RemoteViews;)V
Lcom/android/internal/appwidget/IAppWidgetHost$Stub$Proxy;->viewDataChanged(II)V
-Lcom/android/internal/appwidget/IAppWidgetHost$Stub;
Lcom/android/internal/appwidget/IAppWidgetHost$Stub;-><init>()V
Lcom/android/internal/appwidget/IAppWidgetHost$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/appwidget/IAppWidgetHost;
Lcom/android/internal/appwidget/IAppWidgetHost$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -93567,10 +87269,8 @@
Lcom/android/internal/appwidget/IAppWidgetHost$Stub;->TRANSACTION_providersChanged:I
Lcom/android/internal/appwidget/IAppWidgetHost$Stub;->TRANSACTION_updateAppWidget:I
Lcom/android/internal/appwidget/IAppWidgetHost$Stub;->TRANSACTION_viewDataChanged:I
-Lcom/android/internal/appwidget/IAppWidgetHost;
Lcom/android/internal/appwidget/IAppWidgetHost;->providersChanged()V
Lcom/android/internal/appwidget/IAppWidgetHost;->viewDataChanged(II)V
-Lcom/android/internal/appwidget/IAppWidgetService$Stub$Proxy;
Lcom/android/internal/appwidget/IAppWidgetService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/appwidget/IAppWidgetService$Stub$Proxy;->allocateAppWidgetId(Ljava/lang/String;I)I
Lcom/android/internal/appwidget/IAppWidgetService$Stub$Proxy;->bindAppWidgetId(Ljava/lang/String;IILandroid/content/ComponentName;Landroid/os/Bundle;)Z
@@ -93600,7 +87300,6 @@
Lcom/android/internal/appwidget/IAppWidgetService$Stub$Proxy;->updateAppWidgetOptions(Ljava/lang/String;ILandroid/os/Bundle;)V
Lcom/android/internal/appwidget/IAppWidgetService$Stub$Proxy;->updateAppWidgetProvider(Landroid/content/ComponentName;Landroid/widget/RemoteViews;)V
Lcom/android/internal/appwidget/IAppWidgetService$Stub$Proxy;->updateAppWidgetProviderInfo(Landroid/content/ComponentName;Ljava/lang/String;)V
-Lcom/android/internal/appwidget/IAppWidgetService$Stub;
Lcom/android/internal/appwidget/IAppWidgetService$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/internal/appwidget/IAppWidgetService$Stub;->TRANSACTION_allocateAppWidgetId:I
Lcom/android/internal/appwidget/IAppWidgetService$Stub;->TRANSACTION_bindRemoteViewsService:I
@@ -93627,7 +87326,6 @@
Lcom/android/internal/appwidget/IAppWidgetService$Stub;->TRANSACTION_updateAppWidgetOptions:I
Lcom/android/internal/appwidget/IAppWidgetService$Stub;->TRANSACTION_updateAppWidgetProvider:I
Lcom/android/internal/appwidget/IAppWidgetService$Stub;->TRANSACTION_updateAppWidgetProviderInfo:I
-Lcom/android/internal/appwidget/IAppWidgetService;
Lcom/android/internal/appwidget/IAppWidgetService;->allocateAppWidgetId(Ljava/lang/String;I)I
Lcom/android/internal/appwidget/IAppWidgetService;->createAppWidgetConfigIntentSender(Ljava/lang/String;II)Landroid/content/IntentSender;
Lcom/android/internal/appwidget/IAppWidgetService;->deleteAllHosts()V
@@ -93650,7 +87348,6 @@
Lcom/android/internal/appwidget/IAppWidgetService;->updateAppWidgetOptions(Ljava/lang/String;ILandroid/os/Bundle;)V
Lcom/android/internal/appwidget/IAppWidgetService;->updateAppWidgetProvider(Landroid/content/ComponentName;Landroid/widget/RemoteViews;)V
Lcom/android/internal/appwidget/IAppWidgetService;->updateAppWidgetProviderInfo(Landroid/content/ComponentName;Ljava/lang/String;)V
-Lcom/android/internal/backup/IBackupTransport$Stub$Proxy;
Lcom/android/internal/backup/IBackupTransport$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/backup/IBackupTransport$Stub$Proxy;->abortFullRestore()I
Lcom/android/internal/backup/IBackupTransport$Stub$Proxy;->cancelFullBackup()V
@@ -93681,7 +87378,6 @@
Lcom/android/internal/backup/IBackupTransport$Stub$Proxy;->sendBackupData(I)I
Lcom/android/internal/backup/IBackupTransport$Stub$Proxy;->startRestore(J[Landroid/content/pm/PackageInfo;)I
Lcom/android/internal/backup/IBackupTransport$Stub$Proxy;->transportDirName()Ljava/lang/String;
-Lcom/android/internal/backup/IBackupTransport$Stub;
Lcom/android/internal/backup/IBackupTransport$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/internal/backup/IBackupTransport$Stub;->TRANSACTION_abortFullRestore:I
Lcom/android/internal/backup/IBackupTransport$Stub;->TRANSACTION_cancelFullBackup:I
@@ -93710,7 +87406,6 @@
Lcom/android/internal/backup/IBackupTransport$Stub;->TRANSACTION_sendBackupData:I
Lcom/android/internal/backup/IBackupTransport$Stub;->TRANSACTION_startRestore:I
Lcom/android/internal/backup/IBackupTransport$Stub;->TRANSACTION_transportDirName:I
-Lcom/android/internal/backup/IBackupTransport;
Lcom/android/internal/backup/IBackupTransport;->abortFullRestore()I
Lcom/android/internal/backup/IBackupTransport;->cancelFullBackup()V
Lcom/android/internal/backup/IBackupTransport;->checkFullBackupSize(J)I
@@ -93730,22 +87425,18 @@
Lcom/android/internal/backup/IBackupTransport;->performFullBackup(Landroid/content/pm/PackageInfo;Landroid/os/ParcelFileDescriptor;I)I
Lcom/android/internal/backup/IBackupTransport;->requestFullBackupTime()J
Lcom/android/internal/backup/IBackupTransport;->sendBackupData(I)I
-Lcom/android/internal/backup/IObbBackupService$Stub$Proxy;
Lcom/android/internal/backup/IObbBackupService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/backup/IObbBackupService$Stub$Proxy;->backupObbs(Ljava/lang/String;Landroid/os/ParcelFileDescriptor;ILandroid/app/backup/IBackupManager;)V
Lcom/android/internal/backup/IObbBackupService$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Lcom/android/internal/backup/IObbBackupService$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Lcom/android/internal/backup/IObbBackupService$Stub$Proxy;->restoreObbFile(Ljava/lang/String;Landroid/os/ParcelFileDescriptor;JILjava/lang/String;JJILandroid/app/backup/IBackupManager;)V
-Lcom/android/internal/backup/IObbBackupService$Stub;
Lcom/android/internal/backup/IObbBackupService$Stub;-><init>()V
Lcom/android/internal/backup/IObbBackupService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/backup/IObbBackupService;
Lcom/android/internal/backup/IObbBackupService$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/internal/backup/IObbBackupService$Stub;->TRANSACTION_backupObbs:I
Lcom/android/internal/backup/IObbBackupService$Stub;->TRANSACTION_restoreObbFile:I
-Lcom/android/internal/backup/IObbBackupService;
Lcom/android/internal/backup/IObbBackupService;->backupObbs(Ljava/lang/String;Landroid/os/ParcelFileDescriptor;ILandroid/app/backup/IBackupManager;)V
Lcom/android/internal/backup/IObbBackupService;->restoreObbFile(Ljava/lang/String;Landroid/os/ParcelFileDescriptor;JILjava/lang/String;JJILandroid/app/backup/IBackupManager;)V
-Lcom/android/internal/content/PackageMonitor;
Lcom/android/internal/content/PackageMonitor;->anyPackagesAppearing()Z
Lcom/android/internal/content/PackageMonitor;->anyPackagesDisappearing()Z
Lcom/android/internal/content/PackageMonitor;->didSomePackagesChange()Z
@@ -93794,10 +87485,8 @@
Lcom/android/internal/content/PackageMonitor;->sExternalFilt:Landroid/content/IntentFilter;
Lcom/android/internal/content/PackageMonitor;->sNonDataFilt:Landroid/content/IntentFilter;
Lcom/android/internal/content/PackageMonitor;->sPackageFilt:Landroid/content/IntentFilter;
-Lcom/android/internal/content/ReferrerIntent;
Lcom/android/internal/content/ReferrerIntent;-><init>(Landroid/os/Parcel;)V
Lcom/android/internal/content/ReferrerIntent;->CREATOR:Landroid/os/Parcelable$Creator;
-Lcom/android/internal/location/ILocationProvider$Stub$Proxy;
Lcom/android/internal/location/ILocationProvider$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/location/ILocationProvider$Stub$Proxy;->disable()V
Lcom/android/internal/location/ILocationProvider$Stub$Proxy;->enable()V
@@ -93808,7 +87497,6 @@
Lcom/android/internal/location/ILocationProvider$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Lcom/android/internal/location/ILocationProvider$Stub$Proxy;->sendExtraCommand(Ljava/lang/String;Landroid/os/Bundle;)Z
Lcom/android/internal/location/ILocationProvider$Stub$Proxy;->setRequest(Lcom/android/internal/location/ProviderRequest;Landroid/os/WorkSource;)V
-Lcom/android/internal/location/ILocationProvider$Stub;
Lcom/android/internal/location/ILocationProvider$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/internal/location/ILocationProvider$Stub;->TRANSACTION_disable:I
Lcom/android/internal/location/ILocationProvider$Stub;->TRANSACTION_enable:I
@@ -93817,8 +87505,6 @@
Lcom/android/internal/location/ILocationProvider$Stub;->TRANSACTION_getStatusUpdateTime:I
Lcom/android/internal/location/ILocationProvider$Stub;->TRANSACTION_sendExtraCommand:I
Lcom/android/internal/location/ILocationProvider$Stub;->TRANSACTION_setRequest:I
-Lcom/android/internal/location/ILocationProvider;
-Lcom/android/internal/location/ProviderProperties;
Lcom/android/internal/location/ProviderProperties;-><init>(ZZZZZZZII)V
Lcom/android/internal/location/ProviderProperties;->CREATOR:Landroid/os/Parcelable$Creator;
Lcom/android/internal/location/ProviderProperties;->mAccuracy:I
@@ -93830,10 +87516,8 @@
Lcom/android/internal/location/ProviderProperties;->mSupportsAltitude:Z
Lcom/android/internal/location/ProviderProperties;->mSupportsBearing:Z
Lcom/android/internal/location/ProviderProperties;->mSupportsSpeed:Z
-Lcom/android/internal/location/ProviderRequest;
Lcom/android/internal/location/ProviderRequest;->CREATOR:Landroid/os/Parcelable$Creator;
Lcom/android/internal/location/ProviderRequest;->lowPowerMode:Z
-Lcom/android/internal/logging/EventLogTags;
Lcom/android/internal/logging/EventLogTags;-><init>()V
Lcom/android/internal/logging/EventLogTags;->COMMIT_SYS_CONFIG_FILE:I
Lcom/android/internal/logging/EventLogTags;->SYSUI_ACTION:I
@@ -93849,7 +87533,6 @@
Lcom/android/internal/logging/EventLogTags;->writeSysuiLatency(II)V
Lcom/android/internal/logging/EventLogTags;->writeSysuiMultiAction([Ljava/lang/Object;)V
Lcom/android/internal/logging/EventLogTags;->writeSysuiViewVisibility(II)V
-Lcom/android/internal/logging/MetricsLogger;
Lcom/android/internal/logging/MetricsLogger;->action(I)V
Lcom/android/internal/logging/MetricsLogger;->action(II)V
Lcom/android/internal/logging/MetricsLogger;->action(ILjava/lang/String;)V
@@ -93876,7 +87559,6 @@
Lcom/android/internal/logging/MetricsLogger;->visibility(Landroid/content/Context;IZ)V
Lcom/android/internal/logging/MetricsLogger;->visible(I)V
Lcom/android/internal/logging/MetricsLogger;->visible(Landroid/content/Context;I)V
-Lcom/android/internal/net/INetworkWatchlistManager$Stub$Proxy;
Lcom/android/internal/net/INetworkWatchlistManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/net/INetworkWatchlistManager$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Lcom/android/internal/net/INetworkWatchlistManager$Stub$Proxy;->getWatchlistConfigHash()[B
@@ -93885,7 +87567,6 @@
Lcom/android/internal/net/INetworkWatchlistManager$Stub$Proxy;->reportWatchlistIfNecessary()V
Lcom/android/internal/net/INetworkWatchlistManager$Stub$Proxy;->startWatchlistLogging()Z
Lcom/android/internal/net/INetworkWatchlistManager$Stub$Proxy;->stopWatchlistLogging()Z
-Lcom/android/internal/net/INetworkWatchlistManager$Stub;
Lcom/android/internal/net/INetworkWatchlistManager$Stub;-><init>()V
Lcom/android/internal/net/INetworkWatchlistManager$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/net/INetworkWatchlistManager;
Lcom/android/internal/net/INetworkWatchlistManager$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -93894,13 +87575,11 @@
Lcom/android/internal/net/INetworkWatchlistManager$Stub;->TRANSACTION_reportWatchlistIfNecessary:I
Lcom/android/internal/net/INetworkWatchlistManager$Stub;->TRANSACTION_startWatchlistLogging:I
Lcom/android/internal/net/INetworkWatchlistManager$Stub;->TRANSACTION_stopWatchlistLogging:I
-Lcom/android/internal/net/INetworkWatchlistManager;
Lcom/android/internal/net/INetworkWatchlistManager;->getWatchlistConfigHash()[B
Lcom/android/internal/net/INetworkWatchlistManager;->reloadWatchlist()V
Lcom/android/internal/net/INetworkWatchlistManager;->reportWatchlistIfNecessary()V
Lcom/android/internal/net/INetworkWatchlistManager;->startWatchlistLogging()Z
Lcom/android/internal/net/INetworkWatchlistManager;->stopWatchlistLogging()Z
-Lcom/android/internal/net/LegacyVpnInfo;
Lcom/android/internal/net/LegacyVpnInfo;->intent:Landroid/app/PendingIntent;
Lcom/android/internal/net/LegacyVpnInfo;->stateFromNetworkInfo(Landroid/net/NetworkInfo;)I
Lcom/android/internal/net/LegacyVpnInfo;->STATE_CONNECTED:I
@@ -93910,7 +87589,6 @@
Lcom/android/internal/net/LegacyVpnInfo;->STATE_INITIALIZING:I
Lcom/android/internal/net/LegacyVpnInfo;->STATE_TIMEOUT:I
Lcom/android/internal/net/LegacyVpnInfo;->TAG:Ljava/lang/String;
-Lcom/android/internal/net/NetworkStatsFactory;
Lcom/android/internal/net/NetworkStatsFactory;-><init>()V
Lcom/android/internal/net/NetworkStatsFactory;-><init>(Ljava/io/File;Z)V
Lcom/android/internal/net/NetworkStatsFactory;->apply464xlatAdjustments(Landroid/net/NetworkStats;Landroid/net/NetworkStats;)V
@@ -93935,7 +87613,6 @@
Lcom/android/internal/net/NetworkStatsFactory;->sStackedIfaces:Ljava/util/concurrent/ConcurrentHashMap;
Lcom/android/internal/net/NetworkStatsFactory;->TAG:Ljava/lang/String;
Lcom/android/internal/net/NetworkStatsFactory;->USE_NATIVE_PARSING:Z
-Lcom/android/internal/net/VpnConfig;
Lcom/android/internal/net/VpnConfig;->addLegacyAddresses(Ljava/lang/String;)V
Lcom/android/internal/net/VpnConfig;->addLegacyRoutes(Ljava/lang/String;)V
Lcom/android/internal/net/VpnConfig;->addresses:Ljava/util/List;
@@ -93964,13 +87641,11 @@
Lcom/android/internal/net/VpnConfig;->underlyingNetworks:[Landroid/net/Network;
Lcom/android/internal/net/VpnConfig;->updateAllowedFamilies(Ljava/net/InetAddress;)V
Lcom/android/internal/net/VpnConfig;->user:Ljava/lang/String;
-Lcom/android/internal/net/VpnInfo;
Lcom/android/internal/net/VpnInfo;-><init>()V
Lcom/android/internal/net/VpnInfo;->CREATOR:Landroid/os/Parcelable$Creator;
Lcom/android/internal/net/VpnInfo;->ownerUid:I
Lcom/android/internal/net/VpnInfo;->primaryUnderlyingIface:Ljava/lang/String;
Lcom/android/internal/net/VpnInfo;->vpnIface:Ljava/lang/String;
-Lcom/android/internal/net/VpnProfile;
Lcom/android/internal/net/VpnProfile;-><init>(Ljava/lang/String;)V
Lcom/android/internal/net/VpnProfile;->areDnsAddressesNumeric()Z
Lcom/android/internal/net/VpnProfile;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -93998,18 +87673,14 @@
Lcom/android/internal/net/VpnProfile;->TYPE_L2TP_IPSEC_RSA:I
Lcom/android/internal/net/VpnProfile;->TYPE_MAX:I
Lcom/android/internal/net/VpnProfile;->TYPE_PPTP:I
-Lcom/android/internal/os/AppFuseMount;
Lcom/android/internal/os/AppFuseMount;-><init>(ILandroid/os/ParcelFileDescriptor;)V
Lcom/android/internal/os/AppFuseMount;->CREATOR:Landroid/os/Parcelable$Creator;
Lcom/android/internal/os/AppFuseMount;->fd:Landroid/os/ParcelFileDescriptor;
Lcom/android/internal/os/AppFuseMount;->mountPointId:I
-Lcom/android/internal/os/AtomicFile;
Lcom/android/internal/os/AtomicFile;->delete()V
Lcom/android/internal/os/AtomicFile;->exists()Z
Lcom/android/internal/os/AtomicFile;->mBackupName:Ljava/io/File;
Lcom/android/internal/os/AtomicFile;->mBaseName:Ljava/io/File;
-Lcom/android/internal/os/BatterySipper$DrainType;
-Lcom/android/internal/os/BatterySipper$DrainType;-><init>()V
Lcom/android/internal/os/BatterySipper$DrainType;->AMBIENT_DISPLAY:Lcom/android/internal/os/BatterySipper$DrainType;
Lcom/android/internal/os/BatterySipper$DrainType;->BLUETOOTH:Lcom/android/internal/os/BatterySipper$DrainType;
Lcom/android/internal/os/BatterySipper$DrainType;->CAMERA:Lcom/android/internal/os/BatterySipper$DrainType;
@@ -94024,7 +87695,6 @@
Lcom/android/internal/os/BatterySipper$DrainType;->USER:Lcom/android/internal/os/BatterySipper$DrainType;
Lcom/android/internal/os/BatterySipper$DrainType;->valueOf(Ljava/lang/String;)Lcom/android/internal/os/BatterySipper$DrainType;
Lcom/android/internal/os/BatterySipper$DrainType;->WIFI:Lcom/android/internal/os/BatterySipper$DrainType;
-Lcom/android/internal/os/BatterySipper;
Lcom/android/internal/os/BatterySipper;->audioPowerMah:D
Lcom/android/internal/os/BatterySipper;->audioTimeMs:J
Lcom/android/internal/os/BatterySipper;->bluetoothPowerMah:D
@@ -94063,7 +87733,6 @@
Lcom/android/internal/os/BatterySipper;->wifiRxPackets:J
Lcom/android/internal/os/BatterySipper;->wifiTxBytes:J
Lcom/android/internal/os/BatterySipper;->wifiTxPackets:J
-Lcom/android/internal/os/BatteryStatsHelper;
Lcom/android/internal/os/BatteryStatsHelper;->addAmbientDisplayUsage()V
Lcom/android/internal/os/BatteryStatsHelper;->addBluetoothUsage()V
Lcom/android/internal/os/BatteryStatsHelper;->addEntry(Lcom/android/internal/os/BatterySipper$DrainType;JD)Lcom/android/internal/os/BatterySipper;
@@ -94154,7 +87823,6 @@
Lcom/android/internal/os/BatteryStatsHelper;->statsFromFile(Landroid/content/Context;Ljava/lang/String;)Landroid/os/BatteryStats;
Lcom/android/internal/os/BatteryStatsHelper;->storeStatsHistoryInFile(Ljava/lang/String;)V
Lcom/android/internal/os/BatteryStatsHelper;->TAG:Ljava/lang/String;
-Lcom/android/internal/os/BatteryStatsImpl$BatchTimer;
Lcom/android/internal/os/BatteryStatsImpl$BatchTimer;-><init>(Lcom/android/internal/os/BatteryStatsImpl$Clocks;Lcom/android/internal/os/BatteryStatsImpl$Uid;ILcom/android/internal/os/BatteryStatsImpl$TimeBase;)V
Lcom/android/internal/os/BatteryStatsImpl$BatchTimer;-><init>(Lcom/android/internal/os/BatteryStatsImpl$Clocks;Lcom/android/internal/os/BatteryStatsImpl$Uid;ILcom/android/internal/os/BatteryStatsImpl$TimeBase;Landroid/os/Parcel;)V
Lcom/android/internal/os/BatteryStatsImpl$BatchTimer;->abortLastDuration(Lcom/android/internal/os/BatteryStatsImpl;)V
@@ -94172,13 +87840,10 @@
Lcom/android/internal/os/BatteryStatsImpl$BatchTimer;->recomputeLastDuration(JZ)V
Lcom/android/internal/os/BatteryStatsImpl$BatchTimer;->reset(Z)Z
Lcom/android/internal/os/BatteryStatsImpl$BatchTimer;->writeToParcel(Landroid/os/Parcel;J)V
-Lcom/android/internal/os/BatteryStatsImpl$BatteryCallback;
Lcom/android/internal/os/BatteryStatsImpl$BatteryCallback;->batteryNeedsCpuUpdate()V
Lcom/android/internal/os/BatteryStatsImpl$BatteryCallback;->batteryPowerChanged(Z)V
Lcom/android/internal/os/BatteryStatsImpl$BatteryCallback;->batterySendBroadcast(Landroid/content/Intent;)V
Lcom/android/internal/os/BatteryStatsImpl$BatteryCallback;->batteryStatsReset()V
-Lcom/android/internal/os/BatteryStatsImpl$BluetoothActivityInfoCache;
-Lcom/android/internal/os/BatteryStatsImpl$BluetoothActivityInfoCache;-><init>()V
Lcom/android/internal/os/BatteryStatsImpl$BluetoothActivityInfoCache;->energy:J
Lcom/android/internal/os/BatteryStatsImpl$BluetoothActivityInfoCache;->idleTimeMs:J
Lcom/android/internal/os/BatteryStatsImpl$BluetoothActivityInfoCache;->rxTimeMs:J
@@ -94186,11 +87851,8 @@
Lcom/android/internal/os/BatteryStatsImpl$BluetoothActivityInfoCache;->txTimeMs:J
Lcom/android/internal/os/BatteryStatsImpl$BluetoothActivityInfoCache;->uidRxBytes:Landroid/util/SparseLongArray;
Lcom/android/internal/os/BatteryStatsImpl$BluetoothActivityInfoCache;->uidTxBytes:Landroid/util/SparseLongArray;
-Lcom/android/internal/os/BatteryStatsImpl$Clocks;
Lcom/android/internal/os/BatteryStatsImpl$Clocks;->elapsedRealtime()J
Lcom/android/internal/os/BatteryStatsImpl$Clocks;->uptimeMillis()J
-Lcom/android/internal/os/BatteryStatsImpl$Constants;
-Lcom/android/internal/os/BatteryStatsImpl$Constants;-><init>(Landroid/os/Handler;)V
Lcom/android/internal/os/BatteryStatsImpl$Constants;->BATTERY_LEVEL_COLLECTION_DELAY_MS:J
Lcom/android/internal/os/BatteryStatsImpl$Constants;->DEFAULT_BATTERY_LEVEL_COLLECTION_DELAY_MS:J
Lcom/android/internal/os/BatteryStatsImpl$Constants;->DEFAULT_EXTERNAL_STATS_COLLECTION_RATE_LIMIT_MS:J
@@ -94221,7 +87883,6 @@
Lcom/android/internal/os/BatteryStatsImpl$Constants;->updateProcStateCpuTimesReadDelayMs(JJ)V
Lcom/android/internal/os/BatteryStatsImpl$Constants;->updateTrackCpuTimesByProcStateLocked(ZZ)V
Lcom/android/internal/os/BatteryStatsImpl$Constants;->updateUidRemoveDelay(J)V
-Lcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;
Lcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;-><init>(Lcom/android/internal/os/BatteryStatsImpl$TimeBase;I)V
Lcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;-><init>(Lcom/android/internal/os/BatteryStatsImpl$TimeBase;ILandroid/os/Parcel;)V
Lcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->detach()V
@@ -94240,7 +87901,6 @@
Lcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->readSummaryFromParcel(Landroid/os/Parcel;)V
Lcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->reset(Z)V
Lcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->writeSummaryToParcel(Landroid/os/Parcel;)V
-Lcom/android/internal/os/BatteryStatsImpl$Counter;
Lcom/android/internal/os/BatteryStatsImpl$Counter;-><init>(Lcom/android/internal/os/BatteryStatsImpl$TimeBase;)V
Lcom/android/internal/os/BatteryStatsImpl$Counter;-><init>(Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Landroid/os/Parcel;)V
Lcom/android/internal/os/BatteryStatsImpl$Counter;->addAtomic(I)V
@@ -94260,7 +87920,6 @@
Lcom/android/internal/os/BatteryStatsImpl$Counter;->writeCounterToParcel(Landroid/os/Parcel;Lcom/android/internal/os/BatteryStatsImpl$Counter;)V
Lcom/android/internal/os/BatteryStatsImpl$Counter;->writeSummaryFromParcelLocked(Landroid/os/Parcel;)V
Lcom/android/internal/os/BatteryStatsImpl$Counter;->writeToParcel(Landroid/os/Parcel;)V
-Lcom/android/internal/os/BatteryStatsImpl$DualTimer;
Lcom/android/internal/os/BatteryStatsImpl$DualTimer;-><init>(Lcom/android/internal/os/BatteryStatsImpl$Clocks;Lcom/android/internal/os/BatteryStatsImpl$Uid;ILjava/util/ArrayList;Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Lcom/android/internal/os/BatteryStatsImpl$TimeBase;)V
Lcom/android/internal/os/BatteryStatsImpl$DualTimer;-><init>(Lcom/android/internal/os/BatteryStatsImpl$Clocks;Lcom/android/internal/os/BatteryStatsImpl$Uid;ILjava/util/ArrayList;Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Landroid/os/Parcel;)V
Lcom/android/internal/os/BatteryStatsImpl$DualTimer;->detach()V
@@ -94273,7 +87932,6 @@
Lcom/android/internal/os/BatteryStatsImpl$DualTimer;->stopRunningLocked(J)V
Lcom/android/internal/os/BatteryStatsImpl$DualTimer;->writeSummaryFromParcelLocked(Landroid/os/Parcel;J)V
Lcom/android/internal/os/BatteryStatsImpl$DualTimer;->writeToParcel(Landroid/os/Parcel;J)V
-Lcom/android/internal/os/BatteryStatsImpl$DurationTimer;
Lcom/android/internal/os/BatteryStatsImpl$DurationTimer;-><init>(Lcom/android/internal/os/BatteryStatsImpl$Clocks;Lcom/android/internal/os/BatteryStatsImpl$Uid;ILjava/util/ArrayList;Lcom/android/internal/os/BatteryStatsImpl$TimeBase;)V
Lcom/android/internal/os/BatteryStatsImpl$DurationTimer;-><init>(Lcom/android/internal/os/BatteryStatsImpl$Clocks;Lcom/android/internal/os/BatteryStatsImpl$Uid;ILjava/util/ArrayList;Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Landroid/os/Parcel;)V
Lcom/android/internal/os/BatteryStatsImpl$DurationTimer;->getCurrentDurationMsLocked(J)J
@@ -94292,7 +87950,6 @@
Lcom/android/internal/os/BatteryStatsImpl$DurationTimer;->stopRunningLocked(J)V
Lcom/android/internal/os/BatteryStatsImpl$DurationTimer;->writeSummaryFromParcelLocked(Landroid/os/Parcel;J)V
Lcom/android/internal/os/BatteryStatsImpl$DurationTimer;->writeToParcel(Landroid/os/Parcel;J)V
-Lcom/android/internal/os/BatteryStatsImpl$ExternalStatsSync;
Lcom/android/internal/os/BatteryStatsImpl$ExternalStatsSync;->cancelCpuSyncDueToWakelockChange()V
Lcom/android/internal/os/BatteryStatsImpl$ExternalStatsSync;->scheduleCopyFromAllUidsCpuTimes(ZZ)Ljava/util/concurrent/Future;
Lcom/android/internal/os/BatteryStatsImpl$ExternalStatsSync;->scheduleCpuSyncDueToRemovedUid(I)Ljava/util/concurrent/Future;
@@ -94308,7 +87965,6 @@
Lcom/android/internal/os/BatteryStatsImpl$ExternalStatsSync;->UPDATE_RADIO:I
Lcom/android/internal/os/BatteryStatsImpl$ExternalStatsSync;->UPDATE_RPM:I
Lcom/android/internal/os/BatteryStatsImpl$ExternalStatsSync;->UPDATE_WIFI:I
-Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;
Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;-><init>(Lcom/android/internal/os/BatteryStatsImpl$TimeBase;)V
Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;-><init>(Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Landroid/os/Parcel;)V
Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;->addCountLocked(J)V
@@ -94329,7 +87985,6 @@
Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;->update(JZ)V
Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;->writeSummaryFromParcelLocked(Landroid/os/Parcel;)V
Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;->writeToParcel(Landroid/os/Parcel;)V
-Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;
Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;-><init>(Lcom/android/internal/os/BatteryStatsImpl$TimeBase;)V
Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;-><init>(Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Landroid/os/Parcel;)V
Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;->addCountLocked([J)V
@@ -94355,10 +88010,6 @@
Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;->writeSummaryToParcelLocked(Landroid/os/Parcel;Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;)V
Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;->writeToParcel(Landroid/os/Parcel;)V
Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;->writeToParcel(Landroid/os/Parcel;Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;)V
-Lcom/android/internal/os/BatteryStatsImpl$MyHandler;
-Lcom/android/internal/os/BatteryStatsImpl$MyHandler;-><init>(Landroid/os/Looper;)V
-Lcom/android/internal/os/BatteryStatsImpl$OverflowArrayMap;
-Lcom/android/internal/os/BatteryStatsImpl$OverflowArrayMap;-><init>(I)V
Lcom/android/internal/os/BatteryStatsImpl$OverflowArrayMap;->add(Ljava/lang/String;Ljava/lang/Object;)V
Lcom/android/internal/os/BatteryStatsImpl$OverflowArrayMap;->cleanup()V
Lcom/android/internal/os/BatteryStatsImpl$OverflowArrayMap;->clear()V
@@ -94375,11 +88026,9 @@
Lcom/android/internal/os/BatteryStatsImpl$OverflowArrayMap;->OVERFLOW_NAME:Ljava/lang/String;
Lcom/android/internal/os/BatteryStatsImpl$OverflowArrayMap;->startObject(Ljava/lang/String;)Ljava/lang/Object;
Lcom/android/internal/os/BatteryStatsImpl$OverflowArrayMap;->stopObject(Ljava/lang/String;)Ljava/lang/Object;
-Lcom/android/internal/os/BatteryStatsImpl$PlatformIdleStateCallback;
Lcom/android/internal/os/BatteryStatsImpl$PlatformIdleStateCallback;->fillLowPowerStats(Lcom/android/internal/os/RpmStats;)V
Lcom/android/internal/os/BatteryStatsImpl$PlatformIdleStateCallback;->getPlatformLowPowerStats()Ljava/lang/String;
Lcom/android/internal/os/BatteryStatsImpl$PlatformIdleStateCallback;->getSubsystemLowPowerStats()Ljava/lang/String;
-Lcom/android/internal/os/BatteryStatsImpl$SamplingTimer;
Lcom/android/internal/os/BatteryStatsImpl$SamplingTimer;-><init>(Lcom/android/internal/os/BatteryStatsImpl$Clocks;Lcom/android/internal/os/BatteryStatsImpl$TimeBase;)V
Lcom/android/internal/os/BatteryStatsImpl$SamplingTimer;-><init>(Lcom/android/internal/os/BatteryStatsImpl$Clocks;Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Landroid/os/Parcel;)V
Lcom/android/internal/os/BatteryStatsImpl$SamplingTimer;->add(JI)V
@@ -94401,7 +88050,6 @@
Lcom/android/internal/os/BatteryStatsImpl$SamplingTimer;->setUpdateVersion(I)V
Lcom/android/internal/os/BatteryStatsImpl$SamplingTimer;->update(JI)V
Lcom/android/internal/os/BatteryStatsImpl$SamplingTimer;->writeToParcel(Landroid/os/Parcel;J)V
-Lcom/android/internal/os/BatteryStatsImpl$StopwatchTimer;
Lcom/android/internal/os/BatteryStatsImpl$StopwatchTimer;-><init>(Lcom/android/internal/os/BatteryStatsImpl$Clocks;Lcom/android/internal/os/BatteryStatsImpl$Uid;ILjava/util/ArrayList;Lcom/android/internal/os/BatteryStatsImpl$TimeBase;)V
Lcom/android/internal/os/BatteryStatsImpl$StopwatchTimer;-><init>(Lcom/android/internal/os/BatteryStatsImpl$Clocks;Lcom/android/internal/os/BatteryStatsImpl$Uid;ILjava/util/ArrayList;Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Landroid/os/Parcel;)V
Lcom/android/internal/os/BatteryStatsImpl$StopwatchTimer;->computeCurrentCountLocked()I
@@ -94425,11 +88073,9 @@
Lcom/android/internal/os/BatteryStatsImpl$StopwatchTimer;->stopAllRunningLocked(J)V
Lcom/android/internal/os/BatteryStatsImpl$StopwatchTimer;->stopRunningLocked(J)V
Lcom/android/internal/os/BatteryStatsImpl$StopwatchTimer;->writeToParcel(Landroid/os/Parcel;J)V
-Lcom/android/internal/os/BatteryStatsImpl$SystemClocks;
Lcom/android/internal/os/BatteryStatsImpl$SystemClocks;-><init>()V
Lcom/android/internal/os/BatteryStatsImpl$SystemClocks;->elapsedRealtime()J
Lcom/android/internal/os/BatteryStatsImpl$SystemClocks;->uptimeMillis()J
-Lcom/android/internal/os/BatteryStatsImpl$TimeBase;
Lcom/android/internal/os/BatteryStatsImpl$TimeBase;-><init>()V
Lcom/android/internal/os/BatteryStatsImpl$TimeBase;->add(Lcom/android/internal/os/BatteryStatsImpl$TimeBaseObs;)V
Lcom/android/internal/os/BatteryStatsImpl$TimeBase;->computeRealtime(JI)J
@@ -94459,10 +88105,8 @@
Lcom/android/internal/os/BatteryStatsImpl$TimeBase;->setRunning(ZJJ)Z
Lcom/android/internal/os/BatteryStatsImpl$TimeBase;->writeSummaryToParcel(Landroid/os/Parcel;JJ)V
Lcom/android/internal/os/BatteryStatsImpl$TimeBase;->writeToParcel(Landroid/os/Parcel;JJ)V
-Lcom/android/internal/os/BatteryStatsImpl$TimeBaseObs;
Lcom/android/internal/os/BatteryStatsImpl$TimeBaseObs;->onTimeStarted(JJJ)V
Lcom/android/internal/os/BatteryStatsImpl$TimeBaseObs;->onTimeStopped(JJJ)V
-Lcom/android/internal/os/BatteryStatsImpl$Timer;
Lcom/android/internal/os/BatteryStatsImpl$Timer;-><init>(Lcom/android/internal/os/BatteryStatsImpl$Clocks;ILcom/android/internal/os/BatteryStatsImpl$TimeBase;)V
Lcom/android/internal/os/BatteryStatsImpl$Timer;-><init>(Lcom/android/internal/os/BatteryStatsImpl$Clocks;ILcom/android/internal/os/BatteryStatsImpl$TimeBase;Landroid/os/Parcel;)V
Lcom/android/internal/os/BatteryStatsImpl$Timer;->computeCurrentCountLocked()I
@@ -94488,7 +88132,6 @@
Lcom/android/internal/os/BatteryStatsImpl$Timer;->reset(Z)Z
Lcom/android/internal/os/BatteryStatsImpl$Timer;->writeSummaryFromParcelLocked(Landroid/os/Parcel;J)V
Lcom/android/internal/os/BatteryStatsImpl$Timer;->writeToParcel(Landroid/os/Parcel;J)V
-Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;
Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;-><init>(Lcom/android/internal/os/BatteryStatsImpl;)V
Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->detach()V
Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->getLaunches(I)I
@@ -94519,7 +88162,6 @@
Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->onTimeStopped(JJJ)V
Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->readFromParcelLocked(Landroid/os/Parcel;)V
Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->writeToParcelLocked(Landroid/os/Parcel;)V
-Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg;
Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg;-><init>(Lcom/android/internal/os/BatteryStatsImpl;)V
Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg;->detach()V
Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg;->getServiceStats()Landroid/util/ArrayMap;
@@ -94533,7 +88175,6 @@
Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg;->onTimeStopped(JJJ)V
Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg;->readFromParcelLocked(Landroid/os/Parcel;)V
Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg;->writeToParcelLocked(Landroid/os/Parcel;)V
-Lcom/android/internal/os/BatteryStatsImpl$Uid$Proc;
Lcom/android/internal/os/BatteryStatsImpl$Uid$Proc;-><init>(Lcom/android/internal/os/BatteryStatsImpl;Ljava/lang/String;)V
Lcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->addCpuTimeLocked(IIZ)V
Lcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->addExcessiveCpu(JJ)V
@@ -94573,7 +88214,6 @@
Lcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->readFromParcelLocked(Landroid/os/Parcel;)V
Lcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->writeExcessivePowerToParcelLocked(Landroid/os/Parcel;)V
Lcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->writeToParcelLocked(Landroid/os/Parcel;)V
-Lcom/android/internal/os/BatteryStatsImpl$Uid$Sensor;
Lcom/android/internal/os/BatteryStatsImpl$Uid$Sensor;-><init>(Lcom/android/internal/os/BatteryStatsImpl;Lcom/android/internal/os/BatteryStatsImpl$Uid;I)V
Lcom/android/internal/os/BatteryStatsImpl$Uid$Sensor;->getSensorBackgroundTime()Lcom/android/internal/os/BatteryStatsImpl$Timer;
Lcom/android/internal/os/BatteryStatsImpl$Uid$Sensor;->mBsi:Lcom/android/internal/os/BatteryStatsImpl;
@@ -94584,7 +88224,6 @@
Lcom/android/internal/os/BatteryStatsImpl$Uid$Sensor;->readTimersFromParcel(Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Landroid/os/Parcel;)Lcom/android/internal/os/BatteryStatsImpl$DualTimer;
Lcom/android/internal/os/BatteryStatsImpl$Uid$Sensor;->reset()Z
Lcom/android/internal/os/BatteryStatsImpl$Uid$Sensor;->writeToParcelLocked(Landroid/os/Parcel;J)V
-Lcom/android/internal/os/BatteryStatsImpl$Uid$Wakelock;
Lcom/android/internal/os/BatteryStatsImpl$Uid$Wakelock;-><init>(Lcom/android/internal/os/BatteryStatsImpl;Lcom/android/internal/os/BatteryStatsImpl$Uid;)V
Lcom/android/internal/os/BatteryStatsImpl$Uid$Wakelock;->mBsi:Lcom/android/internal/os/BatteryStatsImpl;
Lcom/android/internal/os/BatteryStatsImpl$Uid$Wakelock;->mTimerDraw:Lcom/android/internal/os/BatteryStatsImpl$StopwatchTimer;
@@ -94597,7 +88236,6 @@
Lcom/android/internal/os/BatteryStatsImpl$Uid$Wakelock;->readStopwatchTimerFromParcel(ILjava/util/ArrayList;Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Landroid/os/Parcel;)Lcom/android/internal/os/BatteryStatsImpl$StopwatchTimer;
Lcom/android/internal/os/BatteryStatsImpl$Uid$Wakelock;->reset()Z
Lcom/android/internal/os/BatteryStatsImpl$Uid$Wakelock;->writeToParcelLocked(Landroid/os/Parcel;J)V
-Lcom/android/internal/os/BatteryStatsImpl$Uid;
Lcom/android/internal/os/BatteryStatsImpl$Uid;-><init>(Lcom/android/internal/os/BatteryStatsImpl;I)V
Lcom/android/internal/os/BatteryStatsImpl$Uid;->addIsolatedUid(I)V
Lcom/android/internal/os/BatteryStatsImpl$Uid;->addProcStateScreenOffTimesMs(I[JZ)V
@@ -94813,20 +88451,15 @@
Lcom/android/internal/os/BatteryStatsImpl$Uid;->updateUidProcessStateLocked(I)V
Lcom/android/internal/os/BatteryStatsImpl$Uid;->writeJobCompletionsToParcelLocked(Landroid/os/Parcel;)V
Lcom/android/internal/os/BatteryStatsImpl$Uid;->writeToParcelLocked(Landroid/os/Parcel;JJ)V
-Lcom/android/internal/os/BatteryStatsImpl$UidToRemove;
-Lcom/android/internal/os/BatteryStatsImpl$UidToRemove;-><init>(IIJ)V
-Lcom/android/internal/os/BatteryStatsImpl$UidToRemove;-><init>(IJ)V
Lcom/android/internal/os/BatteryStatsImpl$UidToRemove;->endUid:I
Lcom/android/internal/os/BatteryStatsImpl$UidToRemove;->remove()V
Lcom/android/internal/os/BatteryStatsImpl$UidToRemove;->startUid:I
Lcom/android/internal/os/BatteryStatsImpl$UidToRemove;->timeAddedInQueue:J
-Lcom/android/internal/os/BatteryStatsImpl$UserInfoProvider;
Lcom/android/internal/os/BatteryStatsImpl$UserInfoProvider;-><init>()V
Lcom/android/internal/os/BatteryStatsImpl$UserInfoProvider;->exists(I)Z
Lcom/android/internal/os/BatteryStatsImpl$UserInfoProvider;->getUserIds()[I
Lcom/android/internal/os/BatteryStatsImpl$UserInfoProvider;->refreshUserIds()V
Lcom/android/internal/os/BatteryStatsImpl$UserInfoProvider;->userIds:[I
-Lcom/android/internal/os/BatteryStatsImpl;
Lcom/android/internal/os/BatteryStatsImpl;-><init>()V
Lcom/android/internal/os/BatteryStatsImpl;-><init>(Lcom/android/internal/os/BatteryStatsImpl$Clocks;)V
Lcom/android/internal/os/BatteryStatsImpl;-><init>(Lcom/android/internal/os/BatteryStatsImpl$Clocks;Landroid/os/Parcel;)V
@@ -95478,7 +89111,6 @@
Lcom/android/internal/os/BatteryStatsImpl;->writeSyncLocked()V
Lcom/android/internal/os/BatteryStatsImpl;->writeToParcelLocked(Landroid/os/Parcel;ZI)V
Lcom/android/internal/os/BatteryStatsImpl;->writeToParcelWithoutUids(Landroid/os/Parcel;I)V
-Lcom/android/internal/os/FuseAppLoop$Args;
Lcom/android/internal/os/FuseAppLoop$Args;-><init>()V
Lcom/android/internal/os/FuseAppLoop$Args;->data:[B
Lcom/android/internal/os/FuseAppLoop$Args;->entry:Lcom/android/internal/os/FuseAppLoop$CallbackEntry;
@@ -95486,25 +89118,20 @@
Lcom/android/internal/os/FuseAppLoop$Args;->offset:J
Lcom/android/internal/os/FuseAppLoop$Args;->size:I
Lcom/android/internal/os/FuseAppLoop$Args;->unique:J
-Lcom/android/internal/os/FuseAppLoop$BytesMap;
Lcom/android/internal/os/FuseAppLoop$BytesMap;-><init>()V
Lcom/android/internal/os/FuseAppLoop$BytesMap;->clear()V
Lcom/android/internal/os/FuseAppLoop$BytesMap;->mEntries:Ljava/util/Map;
Lcom/android/internal/os/FuseAppLoop$BytesMap;->startUsing(J)[B
Lcom/android/internal/os/FuseAppLoop$BytesMap;->stopUsing(J)V
-Lcom/android/internal/os/FuseAppLoop$BytesMapEntry;
Lcom/android/internal/os/FuseAppLoop$BytesMapEntry;-><init>()V
Lcom/android/internal/os/FuseAppLoop$BytesMapEntry;->bytes:[B
Lcom/android/internal/os/FuseAppLoop$BytesMapEntry;->counter:I
-Lcom/android/internal/os/FuseAppLoop$CallbackEntry;
Lcom/android/internal/os/FuseAppLoop$CallbackEntry;-><init>(Landroid/os/ProxyFileDescriptorCallback;Landroid/os/Handler;)V
Lcom/android/internal/os/FuseAppLoop$CallbackEntry;->callback:Landroid/os/ProxyFileDescriptorCallback;
Lcom/android/internal/os/FuseAppLoop$CallbackEntry;->getThreadId()J
Lcom/android/internal/os/FuseAppLoop$CallbackEntry;->handler:Landroid/os/Handler;
Lcom/android/internal/os/FuseAppLoop$CallbackEntry;->opened:Z
-Lcom/android/internal/os/FuseAppLoop$UnmountedException;
Lcom/android/internal/os/FuseAppLoop$UnmountedException;-><init>()V
-Lcom/android/internal/os/FuseAppLoop;
Lcom/android/internal/os/FuseAppLoop;-><init>(ILandroid/os/ParcelFileDescriptor;Ljava/util/concurrent/ThreadFactory;)V
Lcom/android/internal/os/FuseAppLoop;->ARGS_POOL_SIZE:I
Lcom/android/internal/os/FuseAppLoop;->checkInode(J)I
@@ -95546,13 +89173,8 @@
Lcom/android/internal/os/FuseAppLoop;->sDefaultThreadFactory:Ljava/util/concurrent/ThreadFactory;
Lcom/android/internal/os/FuseAppLoop;->TAG:Ljava/lang/String;
Lcom/android/internal/os/FuseAppLoop;->unregisterCallback(I)V
-Lcom/android/internal/os/FuseUnavailableMountException;
Lcom/android/internal/os/FuseUnavailableMountException;-><init>(I)V
-Lcom/android/internal/os/HandlerCaller$Callback;
Lcom/android/internal/os/HandlerCaller$Callback;->executeMessage(Landroid/os/Message;)V
-Lcom/android/internal/os/HandlerCaller$MyHandler;
-Lcom/android/internal/os/HandlerCaller$MyHandler;-><init>(Landroid/os/Looper;Z)V
-Lcom/android/internal/os/HandlerCaller;
Lcom/android/internal/os/HandlerCaller;-><init>(Landroid/content/Context;Landroid/os/Looper;Lcom/android/internal/os/HandlerCaller$Callback;Z)V
Lcom/android/internal/os/HandlerCaller;->executeOrSendMessage(Landroid/os/Message;)V
Lcom/android/internal/os/HandlerCaller;->getHandler()Landroid/os/Handler;
@@ -95579,59 +89201,46 @@
Lcom/android/internal/os/HandlerCaller;->removeMessages(ILjava/lang/Object;)V
Lcom/android/internal/os/HandlerCaller;->sendMessageAndWait(Landroid/os/Message;)Lcom/android/internal/os/SomeArgs;
Lcom/android/internal/os/HandlerCaller;->sendMessageDelayed(Landroid/os/Message;J)V
-Lcom/android/internal/os/IDropBoxManagerService$Stub$Proxy;
Lcom/android/internal/os/IDropBoxManagerService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/os/IDropBoxManagerService$Stub$Proxy;->add(Landroid/os/DropBoxManager$Entry;)V
Lcom/android/internal/os/IDropBoxManagerService$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Lcom/android/internal/os/IDropBoxManagerService$Stub$Proxy;->getNextEntry(Ljava/lang/String;J)Landroid/os/DropBoxManager$Entry;
Lcom/android/internal/os/IDropBoxManagerService$Stub$Proxy;->isTagEnabled(Ljava/lang/String;)Z
Lcom/android/internal/os/IDropBoxManagerService$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Lcom/android/internal/os/IDropBoxManagerService$Stub;
Lcom/android/internal/os/IDropBoxManagerService$Stub;-><init>()V
Lcom/android/internal/os/IDropBoxManagerService$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/internal/os/IDropBoxManagerService$Stub;->TRANSACTION_add:I
Lcom/android/internal/os/IDropBoxManagerService$Stub;->TRANSACTION_getNextEntry:I
Lcom/android/internal/os/IDropBoxManagerService$Stub;->TRANSACTION_isTagEnabled:I
-Lcom/android/internal/os/IDropBoxManagerService;
Lcom/android/internal/os/IDropBoxManagerService;->add(Landroid/os/DropBoxManager$Entry;)V
Lcom/android/internal/os/IDropBoxManagerService;->isTagEnabled(Ljava/lang/String;)Z
-Lcom/android/internal/os/IParcelFileDescriptorFactory$Stub$Proxy;
Lcom/android/internal/os/IParcelFileDescriptorFactory$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/os/IParcelFileDescriptorFactory$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Lcom/android/internal/os/IParcelFileDescriptorFactory$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Lcom/android/internal/os/IParcelFileDescriptorFactory$Stub$Proxy;->open(Ljava/lang/String;I)Landroid/os/ParcelFileDescriptor;
-Lcom/android/internal/os/IParcelFileDescriptorFactory$Stub;
Lcom/android/internal/os/IParcelFileDescriptorFactory$Stub;-><init>()V
Lcom/android/internal/os/IParcelFileDescriptorFactory$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/os/IParcelFileDescriptorFactory;
Lcom/android/internal/os/IParcelFileDescriptorFactory$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/internal/os/IParcelFileDescriptorFactory$Stub;->TRANSACTION_open:I
-Lcom/android/internal/os/IParcelFileDescriptorFactory;
Lcom/android/internal/os/IParcelFileDescriptorFactory;->open(Ljava/lang/String;I)Landroid/os/ParcelFileDescriptor;
-Lcom/android/internal/os/IResultReceiver$Stub$Proxy;
Lcom/android/internal/os/IResultReceiver$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/os/IResultReceiver$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Lcom/android/internal/os/IResultReceiver$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Lcom/android/internal/os/IResultReceiver$Stub$Proxy;->send(ILandroid/os/Bundle;)V
-Lcom/android/internal/os/IResultReceiver$Stub;
Lcom/android/internal/os/IResultReceiver$Stub;-><init>()V
Lcom/android/internal/os/IResultReceiver$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/os/IResultReceiver;
Lcom/android/internal/os/IResultReceiver$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/internal/os/IResultReceiver$Stub;->TRANSACTION_send:I
-Lcom/android/internal/os/IResultReceiver;
Lcom/android/internal/os/IResultReceiver;->send(ILandroid/os/Bundle;)V
-Lcom/android/internal/os/IShellCallback$Stub$Proxy;
Lcom/android/internal/os/IShellCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/os/IShellCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Lcom/android/internal/os/IShellCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Lcom/android/internal/os/IShellCallback$Stub$Proxy;->openFile(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;
-Lcom/android/internal/os/IShellCallback$Stub;
Lcom/android/internal/os/IShellCallback$Stub;-><init>()V
Lcom/android/internal/os/IShellCallback$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/os/IShellCallback;
Lcom/android/internal/os/IShellCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/internal/os/IShellCallback$Stub;->TRANSACTION_openFile:I
-Lcom/android/internal/os/IShellCallback;
Lcom/android/internal/os/IShellCallback;->openFile(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;
-Lcom/android/internal/os/KernelCpuProcReader;
Lcom/android/internal/os/KernelCpuProcReader;-><init>(Ljava/lang/String;)V
Lcom/android/internal/os/KernelCpuProcReader;->DEFAULT_THROTTLE_INTERVAL:J
Lcom/android/internal/os/KernelCpuProcReader;->ERROR_THRESHOLD:I
@@ -95655,7 +89264,6 @@
Lcom/android/internal/os/KernelCpuProcReader;->resize()Z
Lcom/android/internal/os/KernelCpuProcReader;->setThrottleInterval(J)V
Lcom/android/internal/os/KernelCpuProcReader;->TAG:Ljava/lang/String;
-Lcom/android/internal/os/KernelCpuSpeedReader;
Lcom/android/internal/os/KernelCpuSpeedReader;-><init>(II)V
Lcom/android/internal/os/KernelCpuSpeedReader;->mDeltaSpeedTimesMs:[J
Lcom/android/internal/os/KernelCpuSpeedReader;->mJiffyMillis:J
@@ -95665,7 +89273,6 @@
Lcom/android/internal/os/KernelCpuSpeedReader;->readAbsolute()[J
Lcom/android/internal/os/KernelCpuSpeedReader;->readDelta()[J
Lcom/android/internal/os/KernelCpuSpeedReader;->TAG:Ljava/lang/String;
-Lcom/android/internal/os/KernelMemoryBandwidthStats;
Lcom/android/internal/os/KernelMemoryBandwidthStats;-><init>()V
Lcom/android/internal/os/KernelMemoryBandwidthStats;->DEBUG:Z
Lcom/android/internal/os/KernelMemoryBandwidthStats;->getBandwidthEntries()Landroid/util/LongSparseLongArray;
@@ -95675,10 +89282,8 @@
Lcom/android/internal/os/KernelMemoryBandwidthStats;->parseStats(Ljava/io/BufferedReader;)V
Lcom/android/internal/os/KernelMemoryBandwidthStats;->TAG:Ljava/lang/String;
Lcom/android/internal/os/KernelMemoryBandwidthStats;->updateStats()V
-Lcom/android/internal/os/KernelSingleUidTimeReader$Injector;
Lcom/android/internal/os/KernelSingleUidTimeReader$Injector;-><init>()V
Lcom/android/internal/os/KernelSingleUidTimeReader$Injector;->readData(Ljava/lang/String;)[B
-Lcom/android/internal/os/KernelSingleUidTimeReader;
Lcom/android/internal/os/KernelSingleUidTimeReader;-><init>(I)V
Lcom/android/internal/os/KernelSingleUidTimeReader;-><init>(ILcom/android/internal/os/KernelSingleUidTimeReader$Injector;)V
Lcom/android/internal/os/KernelSingleUidTimeReader;->computeDelta(I[J)[J
@@ -95706,9 +89311,7 @@
Lcom/android/internal/os/KernelSingleUidTimeReader;->TAG:Ljava/lang/String;
Lcom/android/internal/os/KernelSingleUidTimeReader;->TOTAL_READ_ERROR_COUNT:I
Lcom/android/internal/os/KernelSingleUidTimeReader;->verifyCpuFreqsCount(ILjava/lang/String;)V
-Lcom/android/internal/os/KernelUidCpuActiveTimeReader$Callback;
Lcom/android/internal/os/KernelUidCpuActiveTimeReader$Callback;->onUidCpuActiveTime(IJ)V
-Lcom/android/internal/os/KernelUidCpuActiveTimeReader;
Lcom/android/internal/os/KernelUidCpuActiveTimeReader;-><init>()V
Lcom/android/internal/os/KernelUidCpuActiveTimeReader;-><init>(Lcom/android/internal/os/KernelCpuProcReader;)V
Lcom/android/internal/os/KernelUidCpuActiveTimeReader;->mCores:I
@@ -95721,9 +89324,7 @@
Lcom/android/internal/os/KernelUidCpuActiveTimeReader;->removeUidsInRange(II)V
Lcom/android/internal/os/KernelUidCpuActiveTimeReader;->sumActiveTime(Ljava/nio/IntBuffer;)D
Lcom/android/internal/os/KernelUidCpuActiveTimeReader;->TAG:Ljava/lang/String;
-Lcom/android/internal/os/KernelUidCpuClusterTimeReader$Callback;
Lcom/android/internal/os/KernelUidCpuClusterTimeReader$Callback;->onUidCpuPolicyTime(I[J)V
-Lcom/android/internal/os/KernelUidCpuClusterTimeReader;
Lcom/android/internal/os/KernelUidCpuClusterTimeReader;-><init>()V
Lcom/android/internal/os/KernelUidCpuClusterTimeReader;-><init>(Lcom/android/internal/os/KernelCpuProcReader;)V
Lcom/android/internal/os/KernelUidCpuClusterTimeReader;->mCurTime:[D
@@ -95742,9 +89343,7 @@
Lcom/android/internal/os/KernelUidCpuClusterTimeReader;->removeUidsInRange(II)V
Lcom/android/internal/os/KernelUidCpuClusterTimeReader;->sumClusterTime(Ljava/nio/IntBuffer;[D)Z
Lcom/android/internal/os/KernelUidCpuClusterTimeReader;->TAG:Ljava/lang/String;
-Lcom/android/internal/os/KernelUidCpuFreqTimeReader$Callback;
Lcom/android/internal/os/KernelUidCpuFreqTimeReader$Callback;->onUidCpuFreqTime(I[J)V
-Lcom/android/internal/os/KernelUidCpuFreqTimeReader;
Lcom/android/internal/os/KernelUidCpuFreqTimeReader;-><init>()V
Lcom/android/internal/os/KernelUidCpuFreqTimeReader;-><init>(Lcom/android/internal/os/KernelCpuProcReader;)V
Lcom/android/internal/os/KernelUidCpuFreqTimeReader;->allUidTimesAvailable()Z
@@ -95771,9 +89370,7 @@
Lcom/android/internal/os/KernelUidCpuFreqTimeReader;->TAG:Ljava/lang/String;
Lcom/android/internal/os/KernelUidCpuFreqTimeReader;->TOTAL_READ_ERROR_COUNT:I
Lcom/android/internal/os/KernelUidCpuFreqTimeReader;->UID_TIMES_PROC_FILE:Ljava/lang/String;
-Lcom/android/internal/os/KernelUidCpuTimeReader$Callback;
Lcom/android/internal/os/KernelUidCpuTimeReader$Callback;->onUidCpuTime(IJJ)V
-Lcom/android/internal/os/KernelUidCpuTimeReader;
Lcom/android/internal/os/KernelUidCpuTimeReader;-><init>()V
Lcom/android/internal/os/KernelUidCpuTimeReader;->mLastSystemTimeUs:Landroid/util/SparseLongArray;
Lcom/android/internal/os/KernelUidCpuTimeReader;->mLastTimeReadUs:J
@@ -95786,8 +89383,6 @@
Lcom/android/internal/os/KernelUidCpuTimeReader;->sProcFile:Ljava/lang/String;
Lcom/android/internal/os/KernelUidCpuTimeReader;->sRemoveUidProcFile:Ljava/lang/String;
Lcom/android/internal/os/KernelUidCpuTimeReader;->TAG:Ljava/lang/String;
-Lcom/android/internal/os/KernelUidCpuTimeReaderBase$Callback;
-Lcom/android/internal/os/KernelUidCpuTimeReaderBase;
Lcom/android/internal/os/KernelUidCpuTimeReaderBase;-><init>()V
Lcom/android/internal/os/KernelUidCpuTimeReaderBase;->DEBUG:Z
Lcom/android/internal/os/KernelUidCpuTimeReaderBase;->DEFAULT_THROTTLE_INTERVAL:J
@@ -95797,7 +89392,6 @@
Lcom/android/internal/os/KernelUidCpuTimeReaderBase;->readDeltaImpl(Lcom/android/internal/os/KernelUidCpuTimeReaderBase$Callback;)V
Lcom/android/internal/os/KernelUidCpuTimeReaderBase;->setThrottleInterval(J)V
Lcom/android/internal/os/KernelUidCpuTimeReaderBase;->TAG:Ljava/lang/String;
-Lcom/android/internal/os/KernelWakelockReader;
Lcom/android/internal/os/KernelWakelockReader;-><init>()V
Lcom/android/internal/os/KernelWakelockReader;->mProcWakelocksData:[J
Lcom/android/internal/os/KernelWakelockReader;->mProcWakelocksName:[Ljava/lang/String;
@@ -95809,15 +89403,12 @@
Lcom/android/internal/os/KernelWakelockReader;->sWakeupSourceFile:Ljava/lang/String;
Lcom/android/internal/os/KernelWakelockReader;->TAG:Ljava/lang/String;
Lcom/android/internal/os/KernelWakelockReader;->WAKEUP_SOURCES_FORMAT:[I
-Lcom/android/internal/os/KernelWakelockStats$Entry;
Lcom/android/internal/os/KernelWakelockStats$Entry;-><init>(IJI)V
Lcom/android/internal/os/KernelWakelockStats$Entry;->mCount:I
Lcom/android/internal/os/KernelWakelockStats$Entry;->mTotalTime:J
Lcom/android/internal/os/KernelWakelockStats$Entry;->mVersion:I
-Lcom/android/internal/os/KernelWakelockStats;
Lcom/android/internal/os/KernelWakelockStats;-><init>()V
Lcom/android/internal/os/KernelWakelockStats;->kernelWakelockVersion:I
-Lcom/android/internal/os/MobileRadioPowerCalculator;
Lcom/android/internal/os/MobileRadioPowerCalculator;-><init>(Lcom/android/internal/os/PowerProfile;Landroid/os/BatteryStats;)V
Lcom/android/internal/os/MobileRadioPowerCalculator;->calculateApp(Lcom/android/internal/os/BatterySipper;Landroid/os/BatteryStats$Uid;JJI)V
Lcom/android/internal/os/MobileRadioPowerCalculator;->calculateRemaining(Lcom/android/internal/os/BatterySipper;Landroid/os/BatteryStats;JJI)V
@@ -95831,18 +89422,15 @@
Lcom/android/internal/os/MobileRadioPowerCalculator;->reset()V
Lcom/android/internal/os/MobileRadioPowerCalculator;->reset(Landroid/os/BatteryStats;)V
Lcom/android/internal/os/MobileRadioPowerCalculator;->TAG:Ljava/lang/String;
-Lcom/android/internal/os/PowerCalculator;
Lcom/android/internal/os/PowerCalculator;-><init>()V
Lcom/android/internal/os/PowerCalculator;->calculateApp(Lcom/android/internal/os/BatterySipper;Landroid/os/BatteryStats$Uid;JJI)V
Lcom/android/internal/os/PowerCalculator;->calculateRemaining(Lcom/android/internal/os/BatterySipper;Landroid/os/BatteryStats;JJI)V
Lcom/android/internal/os/PowerCalculator;->reset()V
-Lcom/android/internal/os/PowerProfile$CpuClusterKey;
Lcom/android/internal/os/PowerProfile$CpuClusterKey;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
Lcom/android/internal/os/PowerProfile$CpuClusterKey;->clusterPowerKey:Ljava/lang/String;
Lcom/android/internal/os/PowerProfile$CpuClusterKey;->corePowerKey:Ljava/lang/String;
Lcom/android/internal/os/PowerProfile$CpuClusterKey;->freqKey:Ljava/lang/String;
Lcom/android/internal/os/PowerProfile$CpuClusterKey;->numCpus:I
-Lcom/android/internal/os/PowerProfile;
Lcom/android/internal/os/PowerProfile;-><init>(Landroid/content/Context;Z)V
Lcom/android/internal/os/PowerProfile;->ATTR_NAME:Ljava/lang/String;
Lcom/android/internal/os/PowerProfile;->CPU_CLUSTER_POWER_COUNT:Ljava/lang/String;
@@ -95890,27 +89478,22 @@
Lcom/android/internal/os/PowerProfile;->TAG_ARRAYITEM:Ljava/lang/String;
Lcom/android/internal/os/PowerProfile;->TAG_DEVICE:Ljava/lang/String;
Lcom/android/internal/os/PowerProfile;->TAG_ITEM:Ljava/lang/String;
-Lcom/android/internal/os/RpmStats$PowerStateElement;
Lcom/android/internal/os/RpmStats$PowerStateElement;-><init>(JI)V
Lcom/android/internal/os/RpmStats$PowerStateElement;->mCount:I
Lcom/android/internal/os/RpmStats$PowerStateElement;->mTimeMs:J
-Lcom/android/internal/os/RpmStats$PowerStatePlatformSleepState;
Lcom/android/internal/os/RpmStats$PowerStatePlatformSleepState;-><init>()V
Lcom/android/internal/os/RpmStats$PowerStatePlatformSleepState;->mCount:I
Lcom/android/internal/os/RpmStats$PowerStatePlatformSleepState;->mTimeMs:J
Lcom/android/internal/os/RpmStats$PowerStatePlatformSleepState;->mVoters:Ljava/util/Map;
Lcom/android/internal/os/RpmStats$PowerStatePlatformSleepState;->putVoter(Ljava/lang/String;JI)V
-Lcom/android/internal/os/RpmStats$PowerStateSubsystem;
Lcom/android/internal/os/RpmStats$PowerStateSubsystem;-><init>()V
Lcom/android/internal/os/RpmStats$PowerStateSubsystem;->mStates:Ljava/util/Map;
Lcom/android/internal/os/RpmStats$PowerStateSubsystem;->putState(Ljava/lang/String;JI)V
-Lcom/android/internal/os/RpmStats;
Lcom/android/internal/os/RpmStats;-><init>()V
Lcom/android/internal/os/RpmStats;->getAndUpdatePlatformState(Ljava/lang/String;JI)Lcom/android/internal/os/RpmStats$PowerStatePlatformSleepState;
Lcom/android/internal/os/RpmStats;->getSubsystem(Ljava/lang/String;)Lcom/android/internal/os/RpmStats$PowerStateSubsystem;
Lcom/android/internal/os/RpmStats;->mPlatformLowPowerStats:Ljava/util/Map;
Lcom/android/internal/os/RpmStats;->mSubsystemLowPowerStats:Ljava/util/Map;
-Lcom/android/internal/os/SomeArgs;
Lcom/android/internal/os/SomeArgs;-><init>()V
Lcom/android/internal/os/SomeArgs;->arg4:Ljava/lang/Object;
Lcom/android/internal/os/SomeArgs;->arg5:Ljava/lang/Object;
@@ -95934,49 +89517,39 @@
Lcom/android/internal/os/SomeArgs;->WAIT_FINISHED:I
Lcom/android/internal/os/SomeArgs;->WAIT_NONE:I
Lcom/android/internal/os/SomeArgs;->WAIT_WAITING:I
-Lcom/android/internal/policy/IKeyguardDismissCallback$Stub$Proxy;
Lcom/android/internal/policy/IKeyguardDismissCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/policy/IKeyguardDismissCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Lcom/android/internal/policy/IKeyguardDismissCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Lcom/android/internal/policy/IKeyguardDismissCallback$Stub$Proxy;->onDismissCancelled()V
Lcom/android/internal/policy/IKeyguardDismissCallback$Stub$Proxy;->onDismissError()V
Lcom/android/internal/policy/IKeyguardDismissCallback$Stub$Proxy;->onDismissSucceeded()V
-Lcom/android/internal/policy/IKeyguardDismissCallback$Stub;
Lcom/android/internal/policy/IKeyguardDismissCallback$Stub;-><init>()V
Lcom/android/internal/policy/IKeyguardDismissCallback$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/policy/IKeyguardDismissCallback;
Lcom/android/internal/policy/IKeyguardDismissCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/internal/policy/IKeyguardDismissCallback$Stub;->TRANSACTION_onDismissCancelled:I
Lcom/android/internal/policy/IKeyguardDismissCallback$Stub;->TRANSACTION_onDismissError:I
Lcom/android/internal/policy/IKeyguardDismissCallback$Stub;->TRANSACTION_onDismissSucceeded:I
-Lcom/android/internal/policy/IKeyguardDismissCallback;
Lcom/android/internal/policy/IKeyguardDismissCallback;->onDismissCancelled()V
Lcom/android/internal/policy/IKeyguardDismissCallback;->onDismissError()V
Lcom/android/internal/policy/IKeyguardDismissCallback;->onDismissSucceeded()V
-Lcom/android/internal/policy/IKeyguardDrawnCallback$Stub$Proxy;
Lcom/android/internal/policy/IKeyguardDrawnCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/policy/IKeyguardDrawnCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Lcom/android/internal/policy/IKeyguardDrawnCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Lcom/android/internal/policy/IKeyguardDrawnCallback$Stub$Proxy;->onDrawn()V
-Lcom/android/internal/policy/IKeyguardDrawnCallback$Stub;
Lcom/android/internal/policy/IKeyguardDrawnCallback$Stub;-><init>()V
Lcom/android/internal/policy/IKeyguardDrawnCallback$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/policy/IKeyguardDrawnCallback;
Lcom/android/internal/policy/IKeyguardDrawnCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/internal/policy/IKeyguardDrawnCallback$Stub;->TRANSACTION_onDrawn:I
-Lcom/android/internal/policy/IKeyguardDrawnCallback;
Lcom/android/internal/policy/IKeyguardDrawnCallback;->onDrawn()V
-Lcom/android/internal/policy/IKeyguardExitCallback$Stub$Proxy;
Lcom/android/internal/policy/IKeyguardExitCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/policy/IKeyguardExitCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Lcom/android/internal/policy/IKeyguardExitCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Lcom/android/internal/policy/IKeyguardExitCallback$Stub$Proxy;->onKeyguardExitResult(Z)V
-Lcom/android/internal/policy/IKeyguardExitCallback$Stub;
Lcom/android/internal/policy/IKeyguardExitCallback$Stub;-><init>()V
Lcom/android/internal/policy/IKeyguardExitCallback$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/policy/IKeyguardExitCallback;
Lcom/android/internal/policy/IKeyguardExitCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/internal/policy/IKeyguardExitCallback$Stub;->TRANSACTION_onKeyguardExitResult:I
-Lcom/android/internal/policy/IKeyguardExitCallback;
Lcom/android/internal/policy/IKeyguardExitCallback;->onKeyguardExitResult(Z)V
-Lcom/android/internal/policy/IKeyguardService$Stub$Proxy;
Lcom/android/internal/policy/IKeyguardService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/policy/IKeyguardService$Stub$Proxy;->addStateMonitorCallback(Lcom/android/internal/policy/IKeyguardStateCallback;)V
Lcom/android/internal/policy/IKeyguardService$Stub$Proxy;->dismiss(Lcom/android/internal/policy/IKeyguardDismissCallback;Ljava/lang/CharSequence;)V
@@ -96002,7 +89575,6 @@
Lcom/android/internal/policy/IKeyguardService$Stub$Proxy;->setSwitchingUser(Z)V
Lcom/android/internal/policy/IKeyguardService$Stub$Proxy;->startKeyguardExitAnimation(JJ)V
Lcom/android/internal/policy/IKeyguardService$Stub$Proxy;->verifyUnlock(Lcom/android/internal/policy/IKeyguardExitCallback;)V
-Lcom/android/internal/policy/IKeyguardService$Stub;
Lcom/android/internal/policy/IKeyguardService$Stub;-><init>()V
Lcom/android/internal/policy/IKeyguardService$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/internal/policy/IKeyguardService$Stub;->TRANSACTION_addStateMonitorCallback:I
@@ -96027,7 +89599,6 @@
Lcom/android/internal/policy/IKeyguardService$Stub;->TRANSACTION_setSwitchingUser:I
Lcom/android/internal/policy/IKeyguardService$Stub;->TRANSACTION_startKeyguardExitAnimation:I
Lcom/android/internal/policy/IKeyguardService$Stub;->TRANSACTION_verifyUnlock:I
-Lcom/android/internal/policy/IKeyguardService;
Lcom/android/internal/policy/IKeyguardService;->addStateMonitorCallback(Lcom/android/internal/policy/IKeyguardStateCallback;)V
Lcom/android/internal/policy/IKeyguardService;->dismiss(Lcom/android/internal/policy/IKeyguardDismissCallback;Ljava/lang/CharSequence;)V
Lcom/android/internal/policy/IKeyguardService;->onBootCompleted()V
@@ -96048,7 +89619,6 @@
Lcom/android/internal/policy/IKeyguardService;->setSwitchingUser(Z)V
Lcom/android/internal/policy/IKeyguardService;->startKeyguardExitAnimation(JJ)V
Lcom/android/internal/policy/IKeyguardService;->verifyUnlock(Lcom/android/internal/policy/IKeyguardExitCallback;)V
-Lcom/android/internal/policy/IKeyguardStateCallback$Stub$Proxy;
Lcom/android/internal/policy/IKeyguardStateCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/policy/IKeyguardStateCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Lcom/android/internal/policy/IKeyguardStateCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -96057,7 +89627,6 @@
Lcom/android/internal/policy/IKeyguardStateCallback$Stub$Proxy;->onShowingStateChanged(Z)V
Lcom/android/internal/policy/IKeyguardStateCallback$Stub$Proxy;->onSimSecureStateChanged(Z)V
Lcom/android/internal/policy/IKeyguardStateCallback$Stub$Proxy;->onTrustedChanged(Z)V
-Lcom/android/internal/policy/IKeyguardStateCallback$Stub;
Lcom/android/internal/policy/IKeyguardStateCallback$Stub;-><init>()V
Lcom/android/internal/policy/IKeyguardStateCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/internal/policy/IKeyguardStateCallback$Stub;->TRANSACTION_onHasLockscreenWallpaperChanged:I
@@ -96065,25 +89634,20 @@
Lcom/android/internal/policy/IKeyguardStateCallback$Stub;->TRANSACTION_onShowingStateChanged:I
Lcom/android/internal/policy/IKeyguardStateCallback$Stub;->TRANSACTION_onSimSecureStateChanged:I
Lcom/android/internal/policy/IKeyguardStateCallback$Stub;->TRANSACTION_onTrustedChanged:I
-Lcom/android/internal/policy/IKeyguardStateCallback;
Lcom/android/internal/policy/IKeyguardStateCallback;->onHasLockscreenWallpaperChanged(Z)V
Lcom/android/internal/policy/IKeyguardStateCallback;->onInputRestrictedStateChanged(Z)V
Lcom/android/internal/policy/IKeyguardStateCallback;->onShowingStateChanged(Z)V
Lcom/android/internal/policy/IKeyguardStateCallback;->onSimSecureStateChanged(Z)V
Lcom/android/internal/policy/IKeyguardStateCallback;->onTrustedChanged(Z)V
-Lcom/android/internal/policy/IShortcutService$Stub$Proxy;
Lcom/android/internal/policy/IShortcutService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/policy/IShortcutService$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Lcom/android/internal/policy/IShortcutService$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Lcom/android/internal/policy/IShortcutService$Stub$Proxy;->notifyShortcutKeyPressed(J)V
-Lcom/android/internal/policy/IShortcutService$Stub;
Lcom/android/internal/policy/IShortcutService$Stub;-><init>()V
Lcom/android/internal/policy/IShortcutService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/policy/IShortcutService;
Lcom/android/internal/policy/IShortcutService$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/internal/policy/IShortcutService$Stub;->TRANSACTION_notifyShortcutKeyPressed:I
-Lcom/android/internal/policy/IShortcutService;
Lcom/android/internal/policy/IShortcutService;->notifyShortcutKeyPressed(J)V
-Lcom/android/internal/R$anim;
Lcom/android/internal/R$anim;-><init>()V
Lcom/android/internal/R$anim;->accelerate_decelerate_interpolator:I
Lcom/android/internal/R$anim;->accelerate_interpolator:I
@@ -96156,11 +89720,9 @@
Lcom/android/internal/R$anim;->voice_activity_open_exit:I
Lcom/android/internal/R$anim;->wallpaper_open_exit:I
Lcom/android/internal/R$anim;->window_move_from_decor:I
-Lcom/android/internal/R$animator;
Lcom/android/internal/R$animator;-><init>()V
Lcom/android/internal/R$animator;->fade_in:I
Lcom/android/internal/R$animator;->fade_out:I
-Lcom/android/internal/R$array;
Lcom/android/internal/R$array;-><init>()V
Lcom/android/internal/R$array;->carrier_properties:I
Lcom/android/internal/R$array;->common_nicknames:I
@@ -96268,7 +89830,6 @@
Lcom/android/internal/R$array;->wfcOperatorErrorAlertMessages:I
Lcom/android/internal/R$array;->wfcOperatorErrorNotificationMessages:I
Lcom/android/internal/R$array;->wfcSpnFormats:I
-Lcom/android/internal/R$attr;
Lcom/android/internal/R$attr;-><init>()V
Lcom/android/internal/R$attr;->absListViewStyle:I
Lcom/android/internal/R$attr;->accessibilityEventTypes:I
@@ -97677,7 +91238,6 @@
Lcom/android/internal/R$attr;->yearListSelectorColor:I
Lcom/android/internal/R$attr;->yesNoPreferenceStyle:I
Lcom/android/internal/R$attr;->zAdjustment:I
-Lcom/android/internal/R$bool;
Lcom/android/internal/R$bool;->action_bar_embed_tabs:I
Lcom/android/internal/R$bool;->action_bar_expanded_action_views_exclusive:I
Lcom/android/internal/R$bool;->config_allow3rdPartyAppOnInternal:I
@@ -97900,7 +91460,6 @@
Lcom/android/internal/R$bool;->split_action_bar_is_narrow:I
Lcom/android/internal/R$bool;->target_honeycomb_needs_options_menu:I
Lcom/android/internal/R$bool;->use_lock_pattern_drawable:I
-Lcom/android/internal/R$color;
Lcom/android/internal/R$color;-><init>()V
Lcom/android/internal/R$color;->background_dark:I
Lcom/android/internal/R$color;->background_light:I
@@ -97976,7 +91535,6 @@
Lcom/android/internal/R$color;->user_icon_default_white:I
Lcom/android/internal/R$color;->white:I
Lcom/android/internal/R$color;->widget_edittext_dark:I
-Lcom/android/internal/R$dimen;
Lcom/android/internal/R$dimen;->accessibility_magnification_indicator_width:I
Lcom/android/internal/R$dimen;->accessibility_touch_slop:I
Lcom/android/internal/R$dimen;->action_bar_stacked_max_height:I
@@ -98167,7 +91725,6 @@
Lcom/android/internal/R$dimen;->tooltip_precise_anchor_threshold:I
Lcom/android/internal/R$dimen;->tooltip_y_offset_non_touch:I
Lcom/android/internal/R$dimen;->tooltip_y_offset_touch:I
-Lcom/android/internal/R$drawable;
Lcom/android/internal/R$drawable;-><init>()V
Lcom/android/internal/R$drawable;->alert_dark_frame:I
Lcom/android/internal/R$drawable;->alert_light_frame:I
@@ -98613,7 +92170,6 @@
Lcom/android/internal/R$drawable;->vpn_connected:I
Lcom/android/internal/R$drawable;->vpn_disconnected:I
Lcom/android/internal/R$drawable;->zoom_plate:I
-Lcom/android/internal/R$fraction;
Lcom/android/internal/R$fraction;-><init>()V
Lcom/android/internal/R$fraction;->config_dimBehindFadeDuration:I
Lcom/android/internal/R$fraction;->config_maximumScreenDimRatio:I
@@ -98626,7 +92182,6 @@
Lcom/android/internal/R$fraction;->input_extract_layout_padding_right:I
Lcom/android/internal/R$fraction;->input_extract_text_margin_bottom:I
Lcom/android/internal/R$fraction;->thumbnail_fullscreen_scale:I
-Lcom/android/internal/R$id;
Lcom/android/internal/R$id;-><init>()V
Lcom/android/internal/R$id;->accessibilityActionClickOnClickableSpan:I
Lcom/android/internal/R$id;->accessibilityActionContextClick:I
@@ -98982,7 +92537,6 @@
Lcom/android/internal/R$id;->zero:I
Lcom/android/internal/R$id;->zoomIn:I
Lcom/android/internal/R$id;->zoomOut:I
-Lcom/android/internal/R$integer;
Lcom/android/internal/R$integer;-><init>()V
Lcom/android/internal/R$integer;->autofill_max_visible_datasets:I
Lcom/android/internal/R$integer;->config_activeTaskDurationHours:I
@@ -99194,7 +92748,6 @@
Lcom/android/internal/R$integer;->status_bar_notification_info_maxnum:I
Lcom/android/internal/R$integer;->thumbnail_width_tv:I
Lcom/android/internal/R$integer;->time_picker_mode:I
-Lcom/android/internal/R$interpolator;
Lcom/android/internal/R$interpolator;-><init>()V
Lcom/android/internal/R$interpolator;->accelerate_decelerate:I
Lcom/android/internal/R$interpolator;->accelerate_quad:I
@@ -99211,7 +92764,6 @@
Lcom/android/internal/R$interpolator;->linear:I
Lcom/android/internal/R$interpolator;->linear_out_slow_in:I
Lcom/android/internal/R$interpolator;->overshoot:I
-Lcom/android/internal/R$layout;
Lcom/android/internal/R$layout;-><init>()V
Lcom/android/internal/R$layout;->accessibility_button_chooser:I
Lcom/android/internal/R$layout;->accessibility_button_chooser_item:I
@@ -99408,15 +92960,12 @@
Lcom/android/internal/R$layout;->year_label_text_view:I
Lcom/android/internal/R$layout;->zoom_container:I
Lcom/android/internal/R$layout;->zoom_controls:I
-Lcom/android/internal/R$menu;
Lcom/android/internal/R$menu;-><init>()V
Lcom/android/internal/R$menu;->language_selection_list:I
Lcom/android/internal/R$menu;->webview_copy:I
Lcom/android/internal/R$menu;->webview_find:I
-Lcom/android/internal/R$mipmap;
Lcom/android/internal/R$mipmap;-><init>()V
Lcom/android/internal/R$mipmap;->sym_def_app_icon:I
-Lcom/android/internal/R$plurals;
Lcom/android/internal/R$plurals;-><init>()V
Lcom/android/internal/R$plurals;->autofill_picker_some_suggestions:I
Lcom/android/internal/R$plurals;->bugreport_countdown:I
@@ -99451,13 +93000,11 @@
Lcom/android/internal/R$plurals;->zen_mode_duration_minutes_short:I
Lcom/android/internal/R$plurals;->zen_mode_duration_minutes_summary:I
Lcom/android/internal/R$plurals;->zen_mode_duration_minutes_summary_short:I
-Lcom/android/internal/R$raw;
Lcom/android/internal/R$raw;-><init>()V
Lcom/android/internal/R$raw;->color_fade_frag:I
Lcom/android/internal/R$raw;->color_fade_vert:I
Lcom/android/internal/R$raw;->fallbackring:I
Lcom/android/internal/R$raw;->fallback_categories:I
-Lcom/android/internal/R$string;
Lcom/android/internal/R$string;-><init>()V
Lcom/android/internal/R$string;->accept:I
Lcom/android/internal/R$string;->accessibility_binding_label:I
@@ -100708,7 +94255,6 @@
Lcom/android/internal/R$string;->zen_upgrade_notification_title:I
Lcom/android/internal/R$string;->zen_upgrade_notification_visd_content:I
Lcom/android/internal/R$string;->zen_upgrade_notification_visd_title:I
-Lcom/android/internal/R$style;
Lcom/android/internal/R$style;-><init>()V
Lcom/android/internal/R$style;->ActiveWallpaperSettings:I
Lcom/android/internal/R$style;->Animation:I
@@ -101487,7 +95033,6 @@
Lcom/android/internal/R$style;->Widget_Toolbar:I
Lcom/android/internal/R$style;->Widget_Toolbar_Button_Navigation:I
Lcom/android/internal/R$style;->Widget_WebView:I
-Lcom/android/internal/R$styleable;
Lcom/android/internal/R$styleable;->AbsListView_fastScrollStyle:I
Lcom/android/internal/R$styleable;->AbsoluteLayout_Layout:[I
Lcom/android/internal/R$styleable;->AbsoluteLayout_Layout_layout_x:I
@@ -103772,7 +97317,6 @@
Lcom/android/internal/R$styleable;->Window_windowTransitionBackgroundFadeDuration:I
Lcom/android/internal/R$styleable;->Window_windowTranslucentNavigation:I
Lcom/android/internal/R$styleable;->Window_windowTranslucentStatus:I
-Lcom/android/internal/R$transition;
Lcom/android/internal/R$transition;-><init>()V
Lcom/android/internal/R$transition;->explode:I
Lcom/android/internal/R$transition;->fade:I
@@ -103782,7 +97326,6 @@
Lcom/android/internal/R$transition;->slide_left:I
Lcom/android/internal/R$transition;->slide_right:I
Lcom/android/internal/R$transition;->slide_top:I
-Lcom/android/internal/R$xml;
Lcom/android/internal/R$xml;-><init>()V
Lcom/android/internal/R$xml;->apns:I
Lcom/android/internal/R$xml;->audio_assets:I
@@ -103801,9 +97344,7 @@
Lcom/android/internal/R$xml;->sms_7bit_translation_table:I
Lcom/android/internal/R$xml;->sms_short_codes:I
Lcom/android/internal/R$xml;->storage_list:I
-Lcom/android/internal/R;
Lcom/android/internal/R;-><init>()V
-Lcom/android/internal/statusbar/IStatusBar$Stub$Proxy;
Lcom/android/internal/statusbar/IStatusBar$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/statusbar/IStatusBar$Stub$Proxy;->addQsTile(Landroid/content/ComponentName;)V
Lcom/android/internal/statusbar/IStatusBar$Stub$Proxy;->animateCollapsePanels()V
@@ -103851,7 +97392,6 @@
Lcom/android/internal/statusbar/IStatusBar$Stub$Proxy;->toggleRecentApps()V
Lcom/android/internal/statusbar/IStatusBar$Stub$Proxy;->toggleSplitScreen()V
Lcom/android/internal/statusbar/IStatusBar$Stub$Proxy;->topAppWindowChanged(Z)V
-Lcom/android/internal/statusbar/IStatusBar$Stub;
Lcom/android/internal/statusbar/IStatusBar$Stub;-><init>()V
Lcom/android/internal/statusbar/IStatusBar$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/internal/statusbar/IStatusBar$Stub;->TRANSACTION_addQsTile:I
@@ -103898,7 +97438,6 @@
Lcom/android/internal/statusbar/IStatusBar$Stub;->TRANSACTION_toggleRecentApps:I
Lcom/android/internal/statusbar/IStatusBar$Stub;->TRANSACTION_toggleSplitScreen:I
Lcom/android/internal/statusbar/IStatusBar$Stub;->TRANSACTION_topAppWindowChanged:I
-Lcom/android/internal/statusbar/IStatusBar;
Lcom/android/internal/statusbar/IStatusBar;->addQsTile(Landroid/content/ComponentName;)V
Lcom/android/internal/statusbar/IStatusBar;->animateCollapsePanels()V
Lcom/android/internal/statusbar/IStatusBar;->animateExpandNotificationsPanel()V
@@ -103943,7 +97482,6 @@
Lcom/android/internal/statusbar/IStatusBar;->toggleRecentApps()V
Lcom/android/internal/statusbar/IStatusBar;->toggleSplitScreen()V
Lcom/android/internal/statusbar/IStatusBar;->topAppWindowChanged(Z)V
-Lcom/android/internal/statusbar/IStatusBarService$Stub$Proxy;
Lcom/android/internal/statusbar/IStatusBarService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/statusbar/IStatusBarService$Stub$Proxy;->addTile(Landroid/content/ComponentName;)V
Lcom/android/internal/statusbar/IStatusBarService$Stub$Proxy;->clearNotificationEffects()V
@@ -103990,7 +97528,6 @@
Lcom/android/internal/statusbar/IStatusBarService$Stub$Proxy;->showPinningEscapeToast()V
Lcom/android/internal/statusbar/IStatusBarService$Stub$Proxy;->shutdown()V
Lcom/android/internal/statusbar/IStatusBarService$Stub$Proxy;->togglePanel()V
-Lcom/android/internal/statusbar/IStatusBarService$Stub;
Lcom/android/internal/statusbar/IStatusBarService$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/internal/statusbar/IStatusBarService$Stub;->TRANSACTION_addTile:I
Lcom/android/internal/statusbar/IStatusBarService$Stub;->TRANSACTION_clearNotificationEffects:I
@@ -104035,7 +97572,6 @@
Lcom/android/internal/statusbar/IStatusBarService$Stub;->TRANSACTION_showPinningEscapeToast:I
Lcom/android/internal/statusbar/IStatusBarService$Stub;->TRANSACTION_shutdown:I
Lcom/android/internal/statusbar/IStatusBarService$Stub;->TRANSACTION_togglePanel:I
-Lcom/android/internal/statusbar/IStatusBarService;
Lcom/android/internal/statusbar/IStatusBarService;->addTile(Landroid/content/ComponentName;)V
Lcom/android/internal/statusbar/IStatusBarService;->clearNotificationEffects()V
Lcom/android/internal/statusbar/IStatusBarService;->clickTile(Landroid/content/ComponentName;)V
@@ -104073,7 +97609,6 @@
Lcom/android/internal/statusbar/IStatusBarService;->showPinningEscapeToast()V
Lcom/android/internal/statusbar/IStatusBarService;->shutdown()V
Lcom/android/internal/statusbar/IStatusBarService;->togglePanel()V
-Lcom/android/internal/statusbar/NotificationVisibility;
Lcom/android/internal/statusbar/NotificationVisibility;-><init>()V
Lcom/android/internal/statusbar/NotificationVisibility;-><init>(Ljava/lang/String;IIZ)V
Lcom/android/internal/statusbar/NotificationVisibility;->count:I
@@ -104091,7 +97626,6 @@
Lcom/android/internal/statusbar/NotificationVisibility;->sPool:Ljava/util/ArrayDeque;
Lcom/android/internal/statusbar/NotificationVisibility;->TAG:Ljava/lang/String;
Lcom/android/internal/statusbar/NotificationVisibility;->visible:Z
-Lcom/android/internal/statusbar/StatusBarIcon;
Lcom/android/internal/statusbar/StatusBarIcon;-><init>(Landroid/os/Parcel;)V
Lcom/android/internal/statusbar/StatusBarIcon;-><init>(Landroid/os/UserHandle;Ljava/lang/String;Landroid/graphics/drawable/Icon;IILjava/lang/CharSequence;)V
Lcom/android/internal/statusbar/StatusBarIcon;-><init>(Ljava/lang/String;Landroid/os/UserHandle;IIILjava/lang/CharSequence;)V
@@ -104104,34 +97638,27 @@
Lcom/android/internal/statusbar/StatusBarIcon;->readFromParcel(Landroid/os/Parcel;)V
Lcom/android/internal/statusbar/StatusBarIcon;->user:Landroid/os/UserHandle;
Lcom/android/internal/statusbar/StatusBarIcon;->visible:Z
-Lcom/android/internal/telecom/ICallScreeningAdapter$Stub$Proxy;
Lcom/android/internal/telecom/ICallScreeningAdapter$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/telecom/ICallScreeningAdapter$Stub$Proxy;->allowCall(Ljava/lang/String;)V
Lcom/android/internal/telecom/ICallScreeningAdapter$Stub$Proxy;->disallowCall(Ljava/lang/String;ZZZ)V
Lcom/android/internal/telecom/ICallScreeningAdapter$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Lcom/android/internal/telecom/ICallScreeningAdapter$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Lcom/android/internal/telecom/ICallScreeningAdapter$Stub;
Lcom/android/internal/telecom/ICallScreeningAdapter$Stub;-><init>()V
Lcom/android/internal/telecom/ICallScreeningAdapter$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telecom/ICallScreeningAdapter;
Lcom/android/internal/telecom/ICallScreeningAdapter$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/internal/telecom/ICallScreeningAdapter$Stub;->TRANSACTION_allowCall:I
Lcom/android/internal/telecom/ICallScreeningAdapter$Stub;->TRANSACTION_disallowCall:I
-Lcom/android/internal/telecom/ICallScreeningAdapter;
Lcom/android/internal/telecom/ICallScreeningAdapter;->allowCall(Ljava/lang/String;)V
Lcom/android/internal/telecom/ICallScreeningAdapter;->disallowCall(Ljava/lang/String;ZZZ)V
-Lcom/android/internal/telecom/ICallScreeningService$Stub$Proxy;
Lcom/android/internal/telecom/ICallScreeningService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/telecom/ICallScreeningService$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Lcom/android/internal/telecom/ICallScreeningService$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Lcom/android/internal/telecom/ICallScreeningService$Stub$Proxy;->screenCall(Lcom/android/internal/telecom/ICallScreeningAdapter;Landroid/telecom/ParcelableCall;)V
-Lcom/android/internal/telecom/ICallScreeningService$Stub;
Lcom/android/internal/telecom/ICallScreeningService$Stub;-><init>()V
Lcom/android/internal/telecom/ICallScreeningService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telecom/ICallScreeningService;
Lcom/android/internal/telecom/ICallScreeningService$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/internal/telecom/ICallScreeningService$Stub;->TRANSACTION_screenCall:I
-Lcom/android/internal/telecom/ICallScreeningService;
Lcom/android/internal/telecom/ICallScreeningService;->screenCall(Lcom/android/internal/telecom/ICallScreeningAdapter;Landroid/telecom/ParcelableCall;)V
-Lcom/android/internal/telecom/IConnectionService$Stub$Proxy;
Lcom/android/internal/telecom/IConnectionService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/telecom/IConnectionService$Stub$Proxy;->abort(Ljava/lang/String;Landroid/telecom/Logging/Session$Info;)V
Lcom/android/internal/telecom/IConnectionService$Stub$Proxy;->addConnectionServiceAdapter(Lcom/android/internal/telecom/IConnectionServiceAdapter;Landroid/telecom/Logging/Session$Info;)V
@@ -104168,7 +97695,6 @@
Lcom/android/internal/telecom/IConnectionService$Stub$Proxy;->stopRtt(Ljava/lang/String;Landroid/telecom/Logging/Session$Info;)V
Lcom/android/internal/telecom/IConnectionService$Stub$Proxy;->swapConference(Ljava/lang/String;Landroid/telecom/Logging/Session$Info;)V
Lcom/android/internal/telecom/IConnectionService$Stub$Proxy;->unhold(Ljava/lang/String;Landroid/telecom/Logging/Session$Info;)V
-Lcom/android/internal/telecom/IConnectionService$Stub;
Lcom/android/internal/telecom/IConnectionService$Stub;-><init>()V
Lcom/android/internal/telecom/IConnectionService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telecom/IConnectionService;
Lcom/android/internal/telecom/IConnectionService$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -104205,7 +97731,6 @@
Lcom/android/internal/telecom/IConnectionService$Stub;->TRANSACTION_stopRtt:I
Lcom/android/internal/telecom/IConnectionService$Stub;->TRANSACTION_swapConference:I
Lcom/android/internal/telecom/IConnectionService$Stub;->TRANSACTION_unhold:I
-Lcom/android/internal/telecom/IConnectionService;
Lcom/android/internal/telecom/IConnectionService;->abort(Ljava/lang/String;Landroid/telecom/Logging/Session$Info;)V
Lcom/android/internal/telecom/IConnectionService;->addConnectionServiceAdapter(Lcom/android/internal/telecom/IConnectionServiceAdapter;Landroid/telecom/Logging/Session$Info;)V
Lcom/android/internal/telecom/IConnectionService;->answer(Ljava/lang/String;Landroid/telecom/Logging/Session$Info;)V
@@ -104239,7 +97764,6 @@
Lcom/android/internal/telecom/IConnectionService;->stopRtt(Ljava/lang/String;Landroid/telecom/Logging/Session$Info;)V
Lcom/android/internal/telecom/IConnectionService;->swapConference(Ljava/lang/String;Landroid/telecom/Logging/Session$Info;)V
Lcom/android/internal/telecom/IConnectionService;->unhold(Ljava/lang/String;Landroid/telecom/Logging/Session$Info;)V
-Lcom/android/internal/telecom/IConnectionServiceAdapter$Stub$Proxy;
Lcom/android/internal/telecom/IConnectionServiceAdapter$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/telecom/IConnectionServiceAdapter$Stub$Proxy;->addConferenceCall(Ljava/lang/String;Landroid/telecom/ParcelableConference;Landroid/telecom/Logging/Session$Info;)V
Lcom/android/internal/telecom/IConnectionServiceAdapter$Stub$Proxy;->addExistingConnection(Ljava/lang/String;Landroid/telecom/ParcelableConnection;Landroid/telecom/Logging/Session$Info;)V
@@ -104278,7 +97802,6 @@
Lcom/android/internal/telecom/IConnectionServiceAdapter$Stub$Proxy;->setStatusHints(Ljava/lang/String;Landroid/telecom/StatusHints;Landroid/telecom/Logging/Session$Info;)V
Lcom/android/internal/telecom/IConnectionServiceAdapter$Stub$Proxy;->setVideoProvider(Ljava/lang/String;Lcom/android/internal/telecom/IVideoProvider;Landroid/telecom/Logging/Session$Info;)V
Lcom/android/internal/telecom/IConnectionServiceAdapter$Stub$Proxy;->setVideoState(Ljava/lang/String;ILandroid/telecom/Logging/Session$Info;)V
-Lcom/android/internal/telecom/IConnectionServiceAdapter$Stub;
Lcom/android/internal/telecom/IConnectionServiceAdapter$Stub;-><init>()V
Lcom/android/internal/telecom/IConnectionServiceAdapter$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telecom/IConnectionServiceAdapter;
Lcom/android/internal/telecom/IConnectionServiceAdapter$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -104317,7 +97840,6 @@
Lcom/android/internal/telecom/IConnectionServiceAdapter$Stub;->TRANSACTION_setStatusHints:I
Lcom/android/internal/telecom/IConnectionServiceAdapter$Stub;->TRANSACTION_setVideoProvider:I
Lcom/android/internal/telecom/IConnectionServiceAdapter$Stub;->TRANSACTION_setVideoState:I
-Lcom/android/internal/telecom/IConnectionServiceAdapter;
Lcom/android/internal/telecom/IConnectionServiceAdapter;->addConferenceCall(Ljava/lang/String;Landroid/telecom/ParcelableConference;Landroid/telecom/Logging/Session$Info;)V
Lcom/android/internal/telecom/IConnectionServiceAdapter;->addExistingConnection(Ljava/lang/String;Landroid/telecom/ParcelableConnection;Landroid/telecom/Logging/Session$Info;)V
Lcom/android/internal/telecom/IConnectionServiceAdapter;->handleCreateConnectionComplete(Ljava/lang/String;Landroid/telecom/ConnectionRequest;Landroid/telecom/ParcelableConnection;Landroid/telecom/Logging/Session$Info;)V
@@ -104353,7 +97875,6 @@
Lcom/android/internal/telecom/IConnectionServiceAdapter;->setStatusHints(Ljava/lang/String;Landroid/telecom/StatusHints;Landroid/telecom/Logging/Session$Info;)V
Lcom/android/internal/telecom/IConnectionServiceAdapter;->setVideoProvider(Ljava/lang/String;Lcom/android/internal/telecom/IVideoProvider;Landroid/telecom/Logging/Session$Info;)V
Lcom/android/internal/telecom/IConnectionServiceAdapter;->setVideoState(Ljava/lang/String;ILandroid/telecom/Logging/Session$Info;)V
-Lcom/android/internal/telecom/IInCallAdapter$Stub$Proxy;
Lcom/android/internal/telecom/IInCallAdapter$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/telecom/IInCallAdapter$Stub$Proxy;->answerCall(Ljava/lang/String;I)V
Lcom/android/internal/telecom/IInCallAdapter$Stub$Proxy;->conference(Ljava/lang/String;Ljava/lang/String;)V
@@ -104384,7 +97905,6 @@
Lcom/android/internal/telecom/IInCallAdapter$Stub$Proxy;->turnOffProximitySensor(Z)V
Lcom/android/internal/telecom/IInCallAdapter$Stub$Proxy;->turnOnProximitySensor()V
Lcom/android/internal/telecom/IInCallAdapter$Stub$Proxy;->unholdCall(Ljava/lang/String;)V
-Lcom/android/internal/telecom/IInCallAdapter$Stub;
Lcom/android/internal/telecom/IInCallAdapter$Stub;-><init>()V
Lcom/android/internal/telecom/IInCallAdapter$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telecom/IInCallAdapter;
Lcom/android/internal/telecom/IInCallAdapter$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -104415,7 +97935,6 @@
Lcom/android/internal/telecom/IInCallAdapter$Stub;->TRANSACTION_turnOffProximitySensor:I
Lcom/android/internal/telecom/IInCallAdapter$Stub;->TRANSACTION_turnOnProximitySensor:I
Lcom/android/internal/telecom/IInCallAdapter$Stub;->TRANSACTION_unholdCall:I
-Lcom/android/internal/telecom/IInCallAdapter;
Lcom/android/internal/telecom/IInCallAdapter;->answerCall(Ljava/lang/String;I)V
Lcom/android/internal/telecom/IInCallAdapter;->conference(Ljava/lang/String;Ljava/lang/String;)V
Lcom/android/internal/telecom/IInCallAdapter;->deflectCall(Ljava/lang/String;Landroid/net/Uri;)V
@@ -104443,7 +97962,6 @@
Lcom/android/internal/telecom/IInCallAdapter;->turnOffProximitySensor(Z)V
Lcom/android/internal/telecom/IInCallAdapter;->turnOnProximitySensor()V
Lcom/android/internal/telecom/IInCallAdapter;->unholdCall(Ljava/lang/String;)V
-Lcom/android/internal/telecom/IInCallService$Stub$Proxy;
Lcom/android/internal/telecom/IInCallService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/telecom/IInCallService$Stub$Proxy;->addCall(Landroid/telecom/ParcelableCall;)V
Lcom/android/internal/telecom/IInCallService$Stub$Proxy;->bringToForeground(Z)V
@@ -104461,7 +97979,6 @@
Lcom/android/internal/telecom/IInCallService$Stub$Proxy;->setPostDialWait(Ljava/lang/String;Ljava/lang/String;)V
Lcom/android/internal/telecom/IInCallService$Stub$Proxy;->silenceRinger()V
Lcom/android/internal/telecom/IInCallService$Stub$Proxy;->updateCall(Landroid/telecom/ParcelableCall;)V
-Lcom/android/internal/telecom/IInCallService$Stub;
Lcom/android/internal/telecom/IInCallService$Stub;-><init>()V
Lcom/android/internal/telecom/IInCallService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telecom/IInCallService;
Lcom/android/internal/telecom/IInCallService$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -104479,7 +97996,6 @@
Lcom/android/internal/telecom/IInCallService$Stub;->TRANSACTION_setPostDialWait:I
Lcom/android/internal/telecom/IInCallService$Stub;->TRANSACTION_silenceRinger:I
Lcom/android/internal/telecom/IInCallService$Stub;->TRANSACTION_updateCall:I
-Lcom/android/internal/telecom/IInCallService;
Lcom/android/internal/telecom/IInCallService;->addCall(Landroid/telecom/ParcelableCall;)V
Lcom/android/internal/telecom/IInCallService;->bringToForeground(Z)V
Lcom/android/internal/telecom/IInCallService;->onCallAudioStateChanged(Landroid/telecom/CallAudioState;)V
@@ -104494,7 +98010,6 @@
Lcom/android/internal/telecom/IInCallService;->setPostDialWait(Ljava/lang/String;Ljava/lang/String;)V
Lcom/android/internal/telecom/IInCallService;->silenceRinger()V
Lcom/android/internal/telecom/IInCallService;->updateCall(Landroid/telecom/ParcelableCall;)V
-Lcom/android/internal/telecom/ITelecomService$Stub$Proxy;
Lcom/android/internal/telecom/ITelecomService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/telecom/ITelecomService$Stub$Proxy;->acceptHandover(Landroid/net/Uri;ILandroid/telecom/PhoneAccountHandle;)V
Lcom/android/internal/telecom/ITelecomService$Stub$Proxy;->acceptRingingCall(Ljava/lang/String;)V
@@ -104546,7 +98061,6 @@
Lcom/android/internal/telecom/ITelecomService$Stub$Proxy;->silenceRinger(Ljava/lang/String;)V
Lcom/android/internal/telecom/ITelecomService$Stub$Proxy;->unregisterPhoneAccount(Landroid/telecom/PhoneAccountHandle;)V
Lcom/android/internal/telecom/ITelecomService$Stub$Proxy;->waitOnHandlers()V
-Lcom/android/internal/telecom/ITelecomService$Stub;
Lcom/android/internal/telecom/ITelecomService$Stub;-><init>()V
Lcom/android/internal/telecom/ITelecomService$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/internal/telecom/ITelecomService$Stub;->TRANSACTION_acceptHandover:I
@@ -104597,7 +98111,6 @@
Lcom/android/internal/telecom/ITelecomService$Stub;->TRANSACTION_silenceRinger:I
Lcom/android/internal/telecom/ITelecomService$Stub;->TRANSACTION_unregisterPhoneAccount:I
Lcom/android/internal/telecom/ITelecomService$Stub;->TRANSACTION_waitOnHandlers:I
-Lcom/android/internal/telecom/ITelecomService;
Lcom/android/internal/telecom/ITelecomService;->acceptHandover(Landroid/net/Uri;ILandroid/telecom/PhoneAccountHandle;)V
Lcom/android/internal/telecom/ITelecomService;->acceptRingingCall(Ljava/lang/String;)V
Lcom/android/internal/telecom/ITelecomService;->acceptRingingCallWithVideoState(Ljava/lang/String;I)V
@@ -104645,7 +98158,6 @@
Lcom/android/internal/telecom/ITelecomService;->silenceRinger(Ljava/lang/String;)V
Lcom/android/internal/telecom/ITelecomService;->unregisterPhoneAccount(Landroid/telecom/PhoneAccountHandle;)V
Lcom/android/internal/telecom/ITelecomService;->waitOnHandlers()V
-Lcom/android/internal/telecom/IVideoCallback$Stub$Proxy;
Lcom/android/internal/telecom/IVideoCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/telecom/IVideoCallback$Stub$Proxy;->changeCallDataUsage(J)V
Lcom/android/internal/telecom/IVideoCallback$Stub$Proxy;->changeCameraCapabilities(Landroid/telecom/VideoProfile$CameraCapabilities;)V
@@ -104656,7 +98168,6 @@
Lcom/android/internal/telecom/IVideoCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Lcom/android/internal/telecom/IVideoCallback$Stub$Proxy;->receiveSessionModifyRequest(Landroid/telecom/VideoProfile;)V
Lcom/android/internal/telecom/IVideoCallback$Stub$Proxy;->receiveSessionModifyResponse(ILandroid/telecom/VideoProfile;Landroid/telecom/VideoProfile;)V
-Lcom/android/internal/telecom/IVideoCallback$Stub;
Lcom/android/internal/telecom/IVideoCallback$Stub;-><init>()V
Lcom/android/internal/telecom/IVideoCallback$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telecom/IVideoCallback;
Lcom/android/internal/telecom/IVideoCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -104667,7 +98178,6 @@
Lcom/android/internal/telecom/IVideoCallback$Stub;->TRANSACTION_handleCallSessionEvent:I
Lcom/android/internal/telecom/IVideoCallback$Stub;->TRANSACTION_receiveSessionModifyRequest:I
Lcom/android/internal/telecom/IVideoCallback$Stub;->TRANSACTION_receiveSessionModifyResponse:I
-Lcom/android/internal/telecom/IVideoCallback;
Lcom/android/internal/telecom/IVideoCallback;->changeCallDataUsage(J)V
Lcom/android/internal/telecom/IVideoCallback;->changeCameraCapabilities(Landroid/telecom/VideoProfile$CameraCapabilities;)V
Lcom/android/internal/telecom/IVideoCallback;->changePeerDimensions(II)V
@@ -104675,7 +98185,6 @@
Lcom/android/internal/telecom/IVideoCallback;->handleCallSessionEvent(I)V
Lcom/android/internal/telecom/IVideoCallback;->receiveSessionModifyRequest(Landroid/telecom/VideoProfile;)V
Lcom/android/internal/telecom/IVideoCallback;->receiveSessionModifyResponse(ILandroid/telecom/VideoProfile;Landroid/telecom/VideoProfile;)V
-Lcom/android/internal/telecom/IVideoProvider$Stub$Proxy;
Lcom/android/internal/telecom/IVideoProvider$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/telecom/IVideoProvider$Stub$Proxy;->addVideoCallback(Landroid/os/IBinder;)V
Lcom/android/internal/telecom/IVideoProvider$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
@@ -104691,7 +98200,6 @@
Lcom/android/internal/telecom/IVideoProvider$Stub$Proxy;->setPauseImage(Landroid/net/Uri;)V
Lcom/android/internal/telecom/IVideoProvider$Stub$Proxy;->setPreviewSurface(Landroid/view/Surface;)V
Lcom/android/internal/telecom/IVideoProvider$Stub$Proxy;->setZoom(F)V
-Lcom/android/internal/telecom/IVideoProvider$Stub;
Lcom/android/internal/telecom/IVideoProvider$Stub;-><init>()V
Lcom/android/internal/telecom/IVideoProvider$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telecom/IVideoProvider;
Lcom/android/internal/telecom/IVideoProvider$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -104707,7 +98215,6 @@
Lcom/android/internal/telecom/IVideoProvider$Stub;->TRANSACTION_setPauseImage:I
Lcom/android/internal/telecom/IVideoProvider$Stub;->TRANSACTION_setPreviewSurface:I
Lcom/android/internal/telecom/IVideoProvider$Stub;->TRANSACTION_setZoom:I
-Lcom/android/internal/telecom/IVideoProvider;
Lcom/android/internal/telecom/IVideoProvider;->addVideoCallback(Landroid/os/IBinder;)V
Lcom/android/internal/telecom/IVideoProvider;->removeVideoCallback(Landroid/os/IBinder;)V
Lcom/android/internal/telecom/IVideoProvider;->requestCallDataUsage()V
@@ -104720,22 +98227,18 @@
Lcom/android/internal/telecom/IVideoProvider;->setPauseImage(Landroid/net/Uri;)V
Lcom/android/internal/telecom/IVideoProvider;->setPreviewSurface(Landroid/view/Surface;)V
Lcom/android/internal/telecom/IVideoProvider;->setZoom(F)V
-Lcom/android/internal/telecom/RemoteServiceCallback$Stub$Proxy;
Lcom/android/internal/telecom/RemoteServiceCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/telecom/RemoteServiceCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Lcom/android/internal/telecom/RemoteServiceCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Lcom/android/internal/telecom/RemoteServiceCallback$Stub$Proxy;->onError()V
Lcom/android/internal/telecom/RemoteServiceCallback$Stub$Proxy;->onResult(Ljava/util/List;Ljava/util/List;)V
-Lcom/android/internal/telecom/RemoteServiceCallback$Stub;
Lcom/android/internal/telecom/RemoteServiceCallback$Stub;-><init>()V
Lcom/android/internal/telecom/RemoteServiceCallback$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telecom/RemoteServiceCallback;
Lcom/android/internal/telecom/RemoteServiceCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/internal/telecom/RemoteServiceCallback$Stub;->TRANSACTION_onError:I
Lcom/android/internal/telecom/RemoteServiceCallback$Stub;->TRANSACTION_onResult:I
-Lcom/android/internal/telecom/RemoteServiceCallback;
Lcom/android/internal/telecom/RemoteServiceCallback;->onError()V
Lcom/android/internal/telecom/RemoteServiceCallback;->onResult(Ljava/util/List;Ljava/util/List;)V
-Lcom/android/internal/telephony/CallerInfo;
Lcom/android/internal/telephony/CallerInfo;->cachedPhoto:Landroid/graphics/drawable/Drawable;
Lcom/android/internal/telephony/CallerInfo;->cachedPhotoIcon:Landroid/graphics/Bitmap;
Lcom/android/internal/telephony/CallerInfo;->cnapName:Ljava/lang/String;
@@ -104773,7 +98276,6 @@
Lcom/android/internal/telephony/CallerInfo;->USER_TYPE_CURRENT:J
Lcom/android/internal/telephony/CallerInfo;->USER_TYPE_WORK:J
Lcom/android/internal/telephony/CallerInfo;->VDBG:Z
-Lcom/android/internal/telephony/CellNetworkScanResult;
Lcom/android/internal/telephony/CellNetworkScanResult;-><init>(ILjava/util/List;)V
Lcom/android/internal/telephony/CellNetworkScanResult;-><init>(Landroid/os/Parcel;)V
Lcom/android/internal/telephony/CellNetworkScanResult;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -104785,11 +98287,7 @@
Lcom/android/internal/telephony/CellNetworkScanResult;->STATUS_RADIO_NOT_AVAILABLE:I
Lcom/android/internal/telephony/CellNetworkScanResult;->STATUS_SUCCESS:I
Lcom/android/internal/telephony/CellNetworkScanResult;->STATUS_UNKNOWN_ERROR:I
-Lcom/android/internal/telephony/EncodeException;
Lcom/android/internal/telephony/EncodeException;-><init>()V
-Lcom/android/internal/telephony/GsmAlphabet$LanguagePairCount;
-Lcom/android/internal/telephony/GsmAlphabet$TextEncodingDetails;
-Lcom/android/internal/telephony/GsmAlphabet;
Lcom/android/internal/telephony/GsmAlphabet;-><init>()V
Lcom/android/internal/telephony/GsmAlphabet;->charToGsmExtended(C)I
Lcom/android/internal/telephony/GsmAlphabet;->countGsmSeptets(C)I
@@ -104812,19 +98310,15 @@
Lcom/android/internal/telephony/GsmAlphabet;->UDH_SEPTET_COST_LENGTH:I
Lcom/android/internal/telephony/GsmAlphabet;->UDH_SEPTET_COST_ONE_SHIFT_TABLE:I
Lcom/android/internal/telephony/GsmAlphabet;->UDH_SEPTET_COST_TWO_SHIFT_TABLES:I
-Lcom/android/internal/telephony/IApnSourceService$Stub$Proxy;
Lcom/android/internal/telephony/IApnSourceService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/telephony/IApnSourceService$Stub$Proxy;->getApns()[Landroid/content/ContentValues;
Lcom/android/internal/telephony/IApnSourceService$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Lcom/android/internal/telephony/IApnSourceService$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Lcom/android/internal/telephony/IApnSourceService$Stub;
Lcom/android/internal/telephony/IApnSourceService$Stub;-><init>()V
Lcom/android/internal/telephony/IApnSourceService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telephony/IApnSourceService;
Lcom/android/internal/telephony/IApnSourceService$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/internal/telephony/IApnSourceService$Stub;->TRANSACTION_getApns:I
-Lcom/android/internal/telephony/IApnSourceService;
Lcom/android/internal/telephony/IApnSourceService;->getApns()[Landroid/content/ContentValues;
-Lcom/android/internal/telephony/ICarrierConfigLoader$Stub$Proxy;
Lcom/android/internal/telephony/ICarrierConfigLoader$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/telephony/ICarrierConfigLoader$Stub$Proxy;->getConfigForSubId(I)Landroid/os/PersistableBundle;
Lcom/android/internal/telephony/ICarrierConfigLoader$Stub$Proxy;->getDefaultCarrierServicePackageName()Ljava/lang/String;
@@ -104832,7 +98326,6 @@
Lcom/android/internal/telephony/ICarrierConfigLoader$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Lcom/android/internal/telephony/ICarrierConfigLoader$Stub$Proxy;->notifyConfigChangedForSubId(I)V
Lcom/android/internal/telephony/ICarrierConfigLoader$Stub$Proxy;->updateConfigForPhoneId(ILjava/lang/String;)V
-Lcom/android/internal/telephony/ICarrierConfigLoader$Stub;
Lcom/android/internal/telephony/ICarrierConfigLoader$Stub;-><init>()V
Lcom/android/internal/telephony/ICarrierConfigLoader$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telephony/ICarrierConfigLoader;
Lcom/android/internal/telephony/ICarrierConfigLoader$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -104840,11 +98333,9 @@
Lcom/android/internal/telephony/ICarrierConfigLoader$Stub;->TRANSACTION_getDefaultCarrierServicePackageName:I
Lcom/android/internal/telephony/ICarrierConfigLoader$Stub;->TRANSACTION_notifyConfigChangedForSubId:I
Lcom/android/internal/telephony/ICarrierConfigLoader$Stub;->TRANSACTION_updateConfigForPhoneId:I
-Lcom/android/internal/telephony/ICarrierConfigLoader;
Lcom/android/internal/telephony/ICarrierConfigLoader;->getDefaultCarrierServicePackageName()Ljava/lang/String;
Lcom/android/internal/telephony/ICarrierConfigLoader;->notifyConfigChangedForSubId(I)V
Lcom/android/internal/telephony/ICarrierConfigLoader;->updateConfigForPhoneId(ILjava/lang/String;)V
-Lcom/android/internal/telephony/IMms$Stub$Proxy;
Lcom/android/internal/telephony/IMms$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/telephony/IMms$Stub$Proxy;->addMultimediaMessageDraft(Ljava/lang/String;Landroid/net/Uri;)Landroid/net/Uri;
Lcom/android/internal/telephony/IMms$Stub$Proxy;->addTextMessageDraft(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri;
@@ -104862,7 +98353,6 @@
Lcom/android/internal/telephony/IMms$Stub$Proxy;->sendStoredMessage(ILjava/lang/String;Landroid/net/Uri;Landroid/os/Bundle;Landroid/app/PendingIntent;)V
Lcom/android/internal/telephony/IMms$Stub$Proxy;->setAutoPersisting(Ljava/lang/String;Z)V
Lcom/android/internal/telephony/IMms$Stub$Proxy;->updateStoredMessageStatus(Ljava/lang/String;Landroid/net/Uri;Landroid/content/ContentValues;)Z
-Lcom/android/internal/telephony/IMms$Stub;
Lcom/android/internal/telephony/IMms$Stub;-><init>()V
Lcom/android/internal/telephony/IMms$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/internal/telephony/IMms$Stub;->TRANSACTION_addMultimediaMessageDraft:I
@@ -104879,7 +98369,6 @@
Lcom/android/internal/telephony/IMms$Stub;->TRANSACTION_sendStoredMessage:I
Lcom/android/internal/telephony/IMms$Stub;->TRANSACTION_setAutoPersisting:I
Lcom/android/internal/telephony/IMms$Stub;->TRANSACTION_updateStoredMessageStatus:I
-Lcom/android/internal/telephony/IMms;
Lcom/android/internal/telephony/IMms;->addMultimediaMessageDraft(Ljava/lang/String;Landroid/net/Uri;)Landroid/net/Uri;
Lcom/android/internal/telephony/IMms;->addTextMessageDraft(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri;
Lcom/android/internal/telephony/IMms;->archiveStoredConversation(Ljava/lang/String;JZ)Z
@@ -104894,19 +98383,15 @@
Lcom/android/internal/telephony/IMms;->sendStoredMessage(ILjava/lang/String;Landroid/net/Uri;Landroid/os/Bundle;Landroid/app/PendingIntent;)V
Lcom/android/internal/telephony/IMms;->setAutoPersisting(Ljava/lang/String;Z)V
Lcom/android/internal/telephony/IMms;->updateStoredMessageStatus(Ljava/lang/String;Landroid/net/Uri;Landroid/content/ContentValues;)Z
-Lcom/android/internal/telephony/IOnSubscriptionsChangedListener$Stub$Proxy;
Lcom/android/internal/telephony/IOnSubscriptionsChangedListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/telephony/IOnSubscriptionsChangedListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Lcom/android/internal/telephony/IOnSubscriptionsChangedListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Lcom/android/internal/telephony/IOnSubscriptionsChangedListener$Stub$Proxy;->onSubscriptionsChanged()V
-Lcom/android/internal/telephony/IOnSubscriptionsChangedListener$Stub;
Lcom/android/internal/telephony/IOnSubscriptionsChangedListener$Stub;-><init>()V
Lcom/android/internal/telephony/IOnSubscriptionsChangedListener$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telephony/IOnSubscriptionsChangedListener;
Lcom/android/internal/telephony/IOnSubscriptionsChangedListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/internal/telephony/IOnSubscriptionsChangedListener$Stub;->TRANSACTION_onSubscriptionsChanged:I
-Lcom/android/internal/telephony/IOnSubscriptionsChangedListener;
Lcom/android/internal/telephony/IOnSubscriptionsChangedListener;->onSubscriptionsChanged()V
-Lcom/android/internal/telephony/IPhoneStateListener$Stub$Proxy;
Lcom/android/internal/telephony/IPhoneStateListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/telephony/IPhoneStateListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Lcom/android/internal/telephony/IPhoneStateListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -104931,7 +98416,6 @@
Lcom/android/internal/telephony/IPhoneStateListener$Stub$Proxy;->onUserMobileDataStateChanged(Z)V
Lcom/android/internal/telephony/IPhoneStateListener$Stub$Proxy;->onVoiceActivationStateChanged(I)V
Lcom/android/internal/telephony/IPhoneStateListener$Stub$Proxy;->onVoLteServiceStateChanged(Landroid/telephony/VoLteServiceState;)V
-Lcom/android/internal/telephony/IPhoneStateListener$Stub;
Lcom/android/internal/telephony/IPhoneStateListener$Stub;-><init>()V
Lcom/android/internal/telephony/IPhoneStateListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/internal/telephony/IPhoneStateListener$Stub;->TRANSACTION_onCallForwardingIndicatorChanged:I
@@ -104955,7 +98439,6 @@
Lcom/android/internal/telephony/IPhoneStateListener$Stub;->TRANSACTION_onUserMobileDataStateChanged:I
Lcom/android/internal/telephony/IPhoneStateListener$Stub;->TRANSACTION_onVoiceActivationStateChanged:I
Lcom/android/internal/telephony/IPhoneStateListener$Stub;->TRANSACTION_onVoLteServiceStateChanged:I
-Lcom/android/internal/telephony/IPhoneStateListener;
Lcom/android/internal/telephony/IPhoneStateListener;->onCarrierNetworkChange(Z)V
Lcom/android/internal/telephony/IPhoneStateListener;->onCellInfoChanged(Ljava/util/List;)V
Lcom/android/internal/telephony/IPhoneStateListener;->onDataActivationStateChanged(I)V
@@ -104968,7 +98451,6 @@
Lcom/android/internal/telephony/IPhoneStateListener;->onUserMobileDataStateChanged(Z)V
Lcom/android/internal/telephony/IPhoneStateListener;->onVoiceActivationStateChanged(I)V
Lcom/android/internal/telephony/IPhoneStateListener;->onVoLteServiceStateChanged(Landroid/telephony/VoLteServiceState;)V
-Lcom/android/internal/telephony/IPhoneSubInfo$Stub$Proxy;
Lcom/android/internal/telephony/IPhoneSubInfo$Stub$Proxy;->getCarrierInfoForImsiEncryption(IILjava/lang/String;)Landroid/telephony/ImsiEncryptionInfo;
Lcom/android/internal/telephony/IPhoneSubInfo$Stub$Proxy;->getCompleteVoiceMailNumber()Ljava/lang/String;
Lcom/android/internal/telephony/IPhoneSubInfo$Stub$Proxy;->getCompleteVoiceMailNumberForSubscriber(I)Ljava/lang/String;
@@ -105002,7 +98484,6 @@
Lcom/android/internal/telephony/IPhoneSubInfo$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Lcom/android/internal/telephony/IPhoneSubInfo$Stub$Proxy;->resetCarrierKeysForImsiEncryption(ILjava/lang/String;)V
Lcom/android/internal/telephony/IPhoneSubInfo$Stub$Proxy;->setCarrierInfoForImsiEncryption(ILjava/lang/String;Landroid/telephony/ImsiEncryptionInfo;)V
-Lcom/android/internal/telephony/IPhoneSubInfo$Stub;
Lcom/android/internal/telephony/IPhoneSubInfo$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/internal/telephony/IPhoneSubInfo$Stub;->TRANSACTION_getCarrierInfoForImsiEncryption:I
Lcom/android/internal/telephony/IPhoneSubInfo$Stub;->TRANSACTION_getCompleteVoiceMailNumber:I
@@ -105035,7 +98516,6 @@
Lcom/android/internal/telephony/IPhoneSubInfo$Stub;->TRANSACTION_getVoiceMailNumberForSubscriber:I
Lcom/android/internal/telephony/IPhoneSubInfo$Stub;->TRANSACTION_resetCarrierKeysForImsiEncryption:I
Lcom/android/internal/telephony/IPhoneSubInfo$Stub;->TRANSACTION_setCarrierInfoForImsiEncryption:I
-Lcom/android/internal/telephony/IPhoneSubInfo;
Lcom/android/internal/telephony/IPhoneSubInfo;->getCarrierInfoForImsiEncryption(IILjava/lang/String;)Landroid/telephony/ImsiEncryptionInfo;
Lcom/android/internal/telephony/IPhoneSubInfo;->getCompleteVoiceMailNumber()Ljava/lang/String;
Lcom/android/internal/telephony/IPhoneSubInfo;->getCompleteVoiceMailNumberForSubscriber(I)Ljava/lang/String;
@@ -105066,7 +98546,6 @@
Lcom/android/internal/telephony/IPhoneSubInfo;->getVoiceMailNumberForSubscriber(ILjava/lang/String;)Ljava/lang/String;
Lcom/android/internal/telephony/IPhoneSubInfo;->resetCarrierKeysForImsiEncryption(ILjava/lang/String;)V
Lcom/android/internal/telephony/IPhoneSubInfo;->setCarrierInfoForImsiEncryption(ILjava/lang/String;Landroid/telephony/ImsiEncryptionInfo;)V
-Lcom/android/internal/telephony/ISms$Stub$Proxy;
Lcom/android/internal/telephony/ISms$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/telephony/ISms$Stub$Proxy;->copyMessageToIccEfForSubscriber(ILjava/lang/String;I[B[B)Z
Lcom/android/internal/telephony/ISms$Stub$Proxy;->createAppSpecificSmsToken(ILjava/lang/String;Landroid/app/PendingIntent;)Ljava/lang/String;
@@ -105097,7 +98576,6 @@
Lcom/android/internal/telephony/ISms$Stub$Proxy;->setPremiumSmsPermission(Ljava/lang/String;I)V
Lcom/android/internal/telephony/ISms$Stub$Proxy;->setPremiumSmsPermissionForSubscriber(ILjava/lang/String;I)V
Lcom/android/internal/telephony/ISms$Stub$Proxy;->updateMessageOnIccEfForSubscriber(ILjava/lang/String;II[B)Z
-Lcom/android/internal/telephony/ISms$Stub;
Lcom/android/internal/telephony/ISms$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/internal/telephony/ISms$Stub;->TRANSACTION_copyMessageToIccEfForSubscriber:I
Lcom/android/internal/telephony/ISms$Stub;->TRANSACTION_createAppSpecificSmsToken:I
@@ -105126,7 +98604,6 @@
Lcom/android/internal/telephony/ISms$Stub;->TRANSACTION_setPremiumSmsPermission:I
Lcom/android/internal/telephony/ISms$Stub;->TRANSACTION_setPremiumSmsPermissionForSubscriber:I
Lcom/android/internal/telephony/ISms$Stub;->TRANSACTION_updateMessageOnIccEfForSubscriber:I
-Lcom/android/internal/telephony/ISms;
Lcom/android/internal/telephony/ISms;->copyMessageToIccEfForSubscriber(ILjava/lang/String;I[B[B)Z
Lcom/android/internal/telephony/ISms;->createAppSpecificSmsToken(ILjava/lang/String;Landroid/app/PendingIntent;)Ljava/lang/String;
Lcom/android/internal/telephony/ISms;->disableCellBroadcastForSubscriber(III)Z
@@ -105154,7 +98631,6 @@
Lcom/android/internal/telephony/ISms;->setPremiumSmsPermission(Ljava/lang/String;I)V
Lcom/android/internal/telephony/ISms;->setPremiumSmsPermissionForSubscriber(ILjava/lang/String;I)V
Lcom/android/internal/telephony/ISms;->updateMessageOnIccEfForSubscriber(ILjava/lang/String;II[B)Z
-Lcom/android/internal/telephony/ISub$Stub$Proxy;
Lcom/android/internal/telephony/ISub$Stub$Proxy;->addSubInfoRecord(Ljava/lang/String;I)I
Lcom/android/internal/telephony/ISub$Stub$Proxy;->clearDefaultsForInactiveSubIds()V
Lcom/android/internal/telephony/ISub$Stub$Proxy;->clearSubInfo()I
@@ -105191,7 +98667,6 @@
Lcom/android/internal/telephony/ISub$Stub$Proxy;->setDisplayNumber(Ljava/lang/String;I)I
Lcom/android/internal/telephony/ISub$Stub$Proxy;->setIconTint(II)I
Lcom/android/internal/telephony/ISub$Stub$Proxy;->setSubscriptionProperty(ILjava/lang/String;Ljava/lang/String;)V
-Lcom/android/internal/telephony/ISub$Stub;
Lcom/android/internal/telephony/ISub$Stub;-><init>()V
Lcom/android/internal/telephony/ISub$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/internal/telephony/ISub$Stub;->TRANSACTION_addSubInfoRecord:I
@@ -105228,7 +98703,6 @@
Lcom/android/internal/telephony/ISub$Stub;->TRANSACTION_setDisplayNumber:I
Lcom/android/internal/telephony/ISub$Stub;->TRANSACTION_setIconTint:I
Lcom/android/internal/telephony/ISub$Stub;->TRANSACTION_setSubscriptionProperty:I
-Lcom/android/internal/telephony/ISub;
Lcom/android/internal/telephony/ISub;->addSubInfoRecord(Ljava/lang/String;I)I
Lcom/android/internal/telephony/ISub;->clearDefaultsForInactiveSubIds()V
Lcom/android/internal/telephony/ISub;->clearSubInfo()I
@@ -105259,7 +98733,6 @@
Lcom/android/internal/telephony/ISub;->setDisplayNumber(Ljava/lang/String;I)I
Lcom/android/internal/telephony/ISub;->setIconTint(II)I
Lcom/android/internal/telephony/ISub;->setSubscriptionProperty(ILjava/lang/String;Ljava/lang/String;)V
-Lcom/android/internal/telephony/ITelephony$Stub$Proxy;
Lcom/android/internal/telephony/ITelephony$Stub$Proxy;->answerRingingCall()V
Lcom/android/internal/telephony/ITelephony$Stub$Proxy;->answerRingingCallForSubscriber(I)V
Lcom/android/internal/telephony/ITelephony$Stub$Proxy;->call(Ljava/lang/String;Ljava/lang/String;)V
@@ -105442,7 +98915,6 @@
Lcom/android/internal/telephony/ITelephony$Stub$Proxy;->toggleRadioOnOffForSubscriber(I)V
Lcom/android/internal/telephony/ITelephony$Stub$Proxy;->updateServiceLocation()V
Lcom/android/internal/telephony/ITelephony$Stub$Proxy;->updateServiceLocationForSubscriber(I)V
-Lcom/android/internal/telephony/ITelephony$Stub;
Lcom/android/internal/telephony/ITelephony$Stub;-><init>()V
Lcom/android/internal/telephony/ITelephony$Stub;->TRANSACTION_answerRingingCallForSubscriber:I
Lcom/android/internal/telephony/ITelephony$Stub;->TRANSACTION_canChangeDtmfToneLength:I
@@ -105624,7 +99096,6 @@
Lcom/android/internal/telephony/ITelephony$Stub;->TRANSACTION_toggleRadioOnOffForSubscriber:I
Lcom/android/internal/telephony/ITelephony$Stub;->TRANSACTION_updateServiceLocation:I
Lcom/android/internal/telephony/ITelephony$Stub;->TRANSACTION_updateServiceLocationForSubscriber:I
-Lcom/android/internal/telephony/ITelephony;
Lcom/android/internal/telephony/ITelephony;->answerRingingCallForSubscriber(I)V
Lcom/android/internal/telephony/ITelephony;->canChangeDtmfToneLength()Z
Lcom/android/internal/telephony/ITelephony;->carrierActionReportDefaultNetworkStatus(IZ)V
@@ -105780,7 +99251,6 @@
Lcom/android/internal/telephony/ITelephony;->switchSlots([I)Z
Lcom/android/internal/telephony/ITelephony;->toggleRadioOnOffForSubscriber(I)V
Lcom/android/internal/telephony/ITelephony;->updateServiceLocationForSubscriber(I)V
-Lcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;
Lcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->addOnSubscriptionsChangedListener(Ljava/lang/String;Lcom/android/internal/telephony/IOnSubscriptionsChangedListener;)V
Lcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Lcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->listen(Ljava/lang/String;Lcom/android/internal/telephony/IPhoneStateListener;IZ)V
@@ -105816,7 +99286,6 @@
Lcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->notifyUserMobileDataStateChangedForPhoneId(IIZ)V
Lcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->notifyVoLteServiceStateChanged(Landroid/telephony/VoLteServiceState;)V
Lcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->removeOnSubscriptionsChangedListener(Ljava/lang/String;Lcom/android/internal/telephony/IOnSubscriptionsChangedListener;)V
-Lcom/android/internal/telephony/ITelephonyRegistry$Stub;
Lcom/android/internal/telephony/ITelephonyRegistry$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/internal/telephony/ITelephonyRegistry$Stub;->TRANSACTION_addOnSubscriptionsChangedListener:I
Lcom/android/internal/telephony/ITelephonyRegistry$Stub;->TRANSACTION_listen:I
@@ -105851,7 +99320,6 @@
Lcom/android/internal/telephony/ITelephonyRegistry$Stub;->TRANSACTION_notifyUserMobileDataStateChangedForPhoneId:I
Lcom/android/internal/telephony/ITelephonyRegistry$Stub;->TRANSACTION_notifyVoLteServiceStateChanged:I
Lcom/android/internal/telephony/ITelephonyRegistry$Stub;->TRANSACTION_removeOnSubscriptionsChangedListener:I
-Lcom/android/internal/telephony/ITelephonyRegistry;
Lcom/android/internal/telephony/ITelephonyRegistry;->addOnSubscriptionsChangedListener(Ljava/lang/String;Lcom/android/internal/telephony/IOnSubscriptionsChangedListener;)V
Lcom/android/internal/telephony/ITelephonyRegistry;->listenForSubscriber(ILjava/lang/String;Lcom/android/internal/telephony/IPhoneStateListener;IZ)V
Lcom/android/internal/telephony/ITelephonyRegistry;->notifyCallForwardingChangedForSubscriber(IZ)V
@@ -105877,7 +99345,6 @@
Lcom/android/internal/telephony/ITelephonyRegistry;->notifyUserMobileDataStateChangedForPhoneId(IIZ)V
Lcom/android/internal/telephony/ITelephonyRegistry;->notifyVoLteServiceStateChanged(Landroid/telephony/VoLteServiceState;)V
Lcom/android/internal/telephony/ITelephonyRegistry;->removeOnSubscriptionsChangedListener(Ljava/lang/String;Lcom/android/internal/telephony/IOnSubscriptionsChangedListener;)V
-Lcom/android/internal/telephony/IWapPushManager$Stub$Proxy;
Lcom/android/internal/telephony/IWapPushManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/telephony/IWapPushManager$Stub$Proxy;->addPackage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IZZ)Z
Lcom/android/internal/telephony/IWapPushManager$Stub$Proxy;->deletePackage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z
@@ -105885,23 +99352,17 @@
Lcom/android/internal/telephony/IWapPushManager$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Lcom/android/internal/telephony/IWapPushManager$Stub$Proxy;->processMessage(Ljava/lang/String;Ljava/lang/String;Landroid/content/Intent;)I
Lcom/android/internal/telephony/IWapPushManager$Stub$Proxy;->updatePackage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IZZ)Z
-Lcom/android/internal/telephony/IWapPushManager$Stub;
Lcom/android/internal/telephony/IWapPushManager$Stub;-><init>()V
Lcom/android/internal/telephony/IWapPushManager$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/internal/telephony/IWapPushManager$Stub;->TRANSACTION_addPackage:I
Lcom/android/internal/telephony/IWapPushManager$Stub;->TRANSACTION_deletePackage:I
Lcom/android/internal/telephony/IWapPushManager$Stub;->TRANSACTION_processMessage:I
Lcom/android/internal/telephony/IWapPushManager$Stub;->TRANSACTION_updatePackage:I
-Lcom/android/internal/telephony/IWapPushManager;
Lcom/android/internal/telephony/IWapPushManager;->processMessage(Ljava/lang/String;Ljava/lang/String;Landroid/content/Intent;)I
-Lcom/android/internal/telephony/OperatorInfo$State;
-Lcom/android/internal/telephony/OperatorInfo$State;-><init>()V
Lcom/android/internal/telephony/OperatorInfo$State;->AVAILABLE:Lcom/android/internal/telephony/OperatorInfo$State;
Lcom/android/internal/telephony/OperatorInfo$State;->UNKNOWN:Lcom/android/internal/telephony/OperatorInfo$State;
Lcom/android/internal/telephony/OperatorInfo$State;->valueOf(Ljava/lang/String;)Lcom/android/internal/telephony/OperatorInfo$State;
Lcom/android/internal/telephony/OperatorInfo$State;->values()[Lcom/android/internal/telephony/OperatorInfo$State;
-Lcom/android/internal/telephony/OperatorInfo;
-Lcom/android/internal/telephony/SmsAddress;
Lcom/android/internal/telephony/SmsAddress;-><init>()V
Lcom/android/internal/telephony/SmsAddress;->address:Ljava/lang/String;
Lcom/android/internal/telephony/SmsAddress;->couldBeEmailGateway()Z
@@ -105916,11 +99377,8 @@
Lcom/android/internal/telephony/SmsAddress;->TON_NETWORK:I
Lcom/android/internal/telephony/SmsAddress;->TON_SUBSCRIBER:I
Lcom/android/internal/telephony/SmsAddress;->TON_UNKNOWN:I
-Lcom/android/internal/telephony/SmsConstants$MessageClass;
-Lcom/android/internal/telephony/SmsConstants$MessageClass;-><init>()V
Lcom/android/internal/telephony/SmsConstants$MessageClass;->valueOf(Ljava/lang/String;)Lcom/android/internal/telephony/SmsConstants$MessageClass;
Lcom/android/internal/telephony/SmsConstants$MessageClass;->values()[Lcom/android/internal/telephony/SmsConstants$MessageClass;
-Lcom/android/internal/telephony/SmsConstants;
Lcom/android/internal/telephony/SmsConstants;-><init>()V
Lcom/android/internal/telephony/SmsConstants;->ENCODING_16BIT:I
Lcom/android/internal/telephony/SmsConstants;->ENCODING_7BIT:I
@@ -105934,19 +99392,14 @@
Lcom/android/internal/telephony/SmsConstants;->MAX_USER_DATA_BYTES_WITH_HEADER:I
Lcom/android/internal/telephony/SmsConstants;->MAX_USER_DATA_SEPTETS:I
Lcom/android/internal/telephony/SmsConstants;->MAX_USER_DATA_SEPTETS_WITH_HEADER:I
-Lcom/android/internal/telephony/SmsHeader$ConcatRef;
Lcom/android/internal/telephony/SmsHeader$ConcatRef;->isEightBits:Z
-Lcom/android/internal/telephony/SmsHeader$MiscElt;
Lcom/android/internal/telephony/SmsHeader$MiscElt;-><init>()V
Lcom/android/internal/telephony/SmsHeader$MiscElt;->data:[B
Lcom/android/internal/telephony/SmsHeader$MiscElt;->id:I
-Lcom/android/internal/telephony/SmsHeader$PortAddrs;
Lcom/android/internal/telephony/SmsHeader$PortAddrs;->areEightBits:Z
-Lcom/android/internal/telephony/SmsHeader$SpecialSmsMsg;
Lcom/android/internal/telephony/SmsHeader$SpecialSmsMsg;-><init>()V
Lcom/android/internal/telephony/SmsHeader$SpecialSmsMsg;->msgCount:I
Lcom/android/internal/telephony/SmsHeader$SpecialSmsMsg;->msgIndType:I
-Lcom/android/internal/telephony/SmsHeader;
Lcom/android/internal/telephony/SmsHeader;->ELT_ID_APPLICATION_PORT_ADDRESSING_16_BIT:I
Lcom/android/internal/telephony/SmsHeader;->ELT_ID_APPLICATION_PORT_ADDRESSING_8_BIT:I
Lcom/android/internal/telephony/SmsHeader;->ELT_ID_CHARACTER_SIZE_WVG_OBJECT:I
@@ -105982,9 +99435,7 @@
Lcom/android/internal/telephony/SmsHeader;->PORT_WAP_PUSH:I
Lcom/android/internal/telephony/SmsHeader;->PORT_WAP_WSP:I
Lcom/android/internal/telephony/SmsHeader;->specialSmsMsgList:Ljava/util/ArrayList;
-Lcom/android/internal/telephony/SmsMessageBase$SubmitPduBase;
Lcom/android/internal/telephony/SmsMessageBase$SubmitPduBase;-><init>()V
-Lcom/android/internal/telephony/SmsMessageBase;
Lcom/android/internal/telephony/SmsMessageBase;->calcUnicodeEncodingDetails(Ljava/lang/CharSequence;)Lcom/android/internal/telephony/GsmAlphabet$TextEncodingDetails;
Lcom/android/internal/telephony/SmsMessageBase;->extractEmailAddressFromMessageBody()V
Lcom/android/internal/telephony/SmsMessageBase;->findNextUnicodePosition(IILjava/lang/CharSequence;)I
@@ -106008,33 +99459,25 @@
Lcom/android/internal/telephony/SmsMessageBase;->mStatusOnIcc:I
Lcom/android/internal/telephony/SmsMessageBase;->mUserData:[B
Lcom/android/internal/telephony/SmsMessageBase;->parseMessageBody()V
-Lcom/android/internal/telephony/SmsRawData;
Lcom/android/internal/telephony/SmsRawData;->data:[B
-Lcom/android/internal/textservice/ISpellCheckerService$Stub$Proxy;
Lcom/android/internal/textservice/ISpellCheckerService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/textservice/ISpellCheckerService$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Lcom/android/internal/textservice/ISpellCheckerService$Stub$Proxy;->getISpellCheckerSession(Ljava/lang/String;Lcom/android/internal/textservice/ISpellCheckerSessionListener;Landroid/os/Bundle;Lcom/android/internal/textservice/ISpellCheckerServiceCallback;)V
Lcom/android/internal/textservice/ISpellCheckerService$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Lcom/android/internal/textservice/ISpellCheckerService$Stub;
Lcom/android/internal/textservice/ISpellCheckerService$Stub;-><init>()V
Lcom/android/internal/textservice/ISpellCheckerService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/textservice/ISpellCheckerService;
Lcom/android/internal/textservice/ISpellCheckerService$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/internal/textservice/ISpellCheckerService$Stub;->TRANSACTION_getISpellCheckerSession:I
-Lcom/android/internal/textservice/ISpellCheckerService;
Lcom/android/internal/textservice/ISpellCheckerService;->getISpellCheckerSession(Ljava/lang/String;Lcom/android/internal/textservice/ISpellCheckerSessionListener;Landroid/os/Bundle;Lcom/android/internal/textservice/ISpellCheckerServiceCallback;)V
-Lcom/android/internal/textservice/ISpellCheckerServiceCallback$Stub$Proxy;
Lcom/android/internal/textservice/ISpellCheckerServiceCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/textservice/ISpellCheckerServiceCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Lcom/android/internal/textservice/ISpellCheckerServiceCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Lcom/android/internal/textservice/ISpellCheckerServiceCallback$Stub$Proxy;->onSessionCreated(Lcom/android/internal/textservice/ISpellCheckerSession;)V
-Lcom/android/internal/textservice/ISpellCheckerServiceCallback$Stub;
Lcom/android/internal/textservice/ISpellCheckerServiceCallback$Stub;-><init>()V
Lcom/android/internal/textservice/ISpellCheckerServiceCallback$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/textservice/ISpellCheckerServiceCallback;
Lcom/android/internal/textservice/ISpellCheckerServiceCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/internal/textservice/ISpellCheckerServiceCallback$Stub;->TRANSACTION_onSessionCreated:I
-Lcom/android/internal/textservice/ISpellCheckerServiceCallback;
Lcom/android/internal/textservice/ISpellCheckerServiceCallback;->onSessionCreated(Lcom/android/internal/textservice/ISpellCheckerSession;)V
-Lcom/android/internal/textservice/ISpellCheckerSession$Stub$Proxy;
Lcom/android/internal/textservice/ISpellCheckerSession$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/textservice/ISpellCheckerSession$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Lcom/android/internal/textservice/ISpellCheckerSession$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -106042,7 +99485,6 @@
Lcom/android/internal/textservice/ISpellCheckerSession$Stub$Proxy;->onClose()V
Lcom/android/internal/textservice/ISpellCheckerSession$Stub$Proxy;->onGetSentenceSuggestionsMultiple([Landroid/view/textservice/TextInfo;I)V
Lcom/android/internal/textservice/ISpellCheckerSession$Stub$Proxy;->onGetSuggestionsMultiple([Landroid/view/textservice/TextInfo;IZ)V
-Lcom/android/internal/textservice/ISpellCheckerSession$Stub;
Lcom/android/internal/textservice/ISpellCheckerSession$Stub;-><init>()V
Lcom/android/internal/textservice/ISpellCheckerSession$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/textservice/ISpellCheckerSession;
Lcom/android/internal/textservice/ISpellCheckerSession$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -106050,27 +99492,22 @@
Lcom/android/internal/textservice/ISpellCheckerSession$Stub;->TRANSACTION_onClose:I
Lcom/android/internal/textservice/ISpellCheckerSession$Stub;->TRANSACTION_onGetSentenceSuggestionsMultiple:I
Lcom/android/internal/textservice/ISpellCheckerSession$Stub;->TRANSACTION_onGetSuggestionsMultiple:I
-Lcom/android/internal/textservice/ISpellCheckerSession;
Lcom/android/internal/textservice/ISpellCheckerSession;->onCancel()V
Lcom/android/internal/textservice/ISpellCheckerSession;->onClose()V
Lcom/android/internal/textservice/ISpellCheckerSession;->onGetSentenceSuggestionsMultiple([Landroid/view/textservice/TextInfo;I)V
Lcom/android/internal/textservice/ISpellCheckerSession;->onGetSuggestionsMultiple([Landroid/view/textservice/TextInfo;IZ)V
-Lcom/android/internal/textservice/ISpellCheckerSessionListener$Stub$Proxy;
Lcom/android/internal/textservice/ISpellCheckerSessionListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/textservice/ISpellCheckerSessionListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Lcom/android/internal/textservice/ISpellCheckerSessionListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Lcom/android/internal/textservice/ISpellCheckerSessionListener$Stub$Proxy;->onGetSentenceSuggestions([Landroid/view/textservice/SentenceSuggestionsInfo;)V
Lcom/android/internal/textservice/ISpellCheckerSessionListener$Stub$Proxy;->onGetSuggestions([Landroid/view/textservice/SuggestionsInfo;)V
-Lcom/android/internal/textservice/ISpellCheckerSessionListener$Stub;
Lcom/android/internal/textservice/ISpellCheckerSessionListener$Stub;-><init>()V
Lcom/android/internal/textservice/ISpellCheckerSessionListener$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/textservice/ISpellCheckerSessionListener;
Lcom/android/internal/textservice/ISpellCheckerSessionListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/internal/textservice/ISpellCheckerSessionListener$Stub;->TRANSACTION_onGetSentenceSuggestions:I
Lcom/android/internal/textservice/ISpellCheckerSessionListener$Stub;->TRANSACTION_onGetSuggestions:I
-Lcom/android/internal/textservice/ISpellCheckerSessionListener;
Lcom/android/internal/textservice/ISpellCheckerSessionListener;->onGetSentenceSuggestions([Landroid/view/textservice/SentenceSuggestionsInfo;)V
Lcom/android/internal/textservice/ISpellCheckerSessionListener;->onGetSuggestions([Landroid/view/textservice/SuggestionsInfo;)V
-Lcom/android/internal/textservice/ITextServicesManager$Stub$Proxy;
Lcom/android/internal/textservice/ITextServicesManager$Stub$Proxy;->finishSpellCheckerService(Lcom/android/internal/textservice/ISpellCheckerSessionListener;)V
Lcom/android/internal/textservice/ITextServicesManager$Stub$Proxy;->getCurrentSpellChecker(Ljava/lang/String;)Landroid/view/textservice/SpellCheckerInfo;
Lcom/android/internal/textservice/ITextServicesManager$Stub$Proxy;->getCurrentSpellCheckerSubtype(Ljava/lang/String;Z)Landroid/view/textservice/SpellCheckerSubtype;
@@ -106079,7 +99516,6 @@
Lcom/android/internal/textservice/ITextServicesManager$Stub$Proxy;->getSpellCheckerService(Ljava/lang/String;Ljava/lang/String;Lcom/android/internal/textservice/ITextServicesSessionListener;Lcom/android/internal/textservice/ISpellCheckerSessionListener;Landroid/os/Bundle;)V
Lcom/android/internal/textservice/ITextServicesManager$Stub$Proxy;->isSpellCheckerEnabled()Z
Lcom/android/internal/textservice/ITextServicesManager$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Lcom/android/internal/textservice/ITextServicesManager$Stub;
Lcom/android/internal/textservice/ITextServicesManager$Stub;-><init>()V
Lcom/android/internal/textservice/ITextServicesManager$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/textservice/ITextServicesManager;
Lcom/android/internal/textservice/ITextServicesManager$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -106089,34 +99525,23 @@
Lcom/android/internal/textservice/ITextServicesManager$Stub;->TRANSACTION_getEnabledSpellCheckers:I
Lcom/android/internal/textservice/ITextServicesManager$Stub;->TRANSACTION_getSpellCheckerService:I
Lcom/android/internal/textservice/ITextServicesManager$Stub;->TRANSACTION_isSpellCheckerEnabled:I
-Lcom/android/internal/textservice/ITextServicesManager;
Lcom/android/internal/textservice/ITextServicesManager;->finishSpellCheckerService(Lcom/android/internal/textservice/ISpellCheckerSessionListener;)V
Lcom/android/internal/textservice/ITextServicesManager;->getCurrentSpellChecker(Ljava/lang/String;)Landroid/view/textservice/SpellCheckerInfo;
Lcom/android/internal/textservice/ITextServicesManager;->getCurrentSpellCheckerSubtype(Ljava/lang/String;Z)Landroid/view/textservice/SpellCheckerSubtype;
Lcom/android/internal/textservice/ITextServicesManager;->getEnabledSpellCheckers()[Landroid/view/textservice/SpellCheckerInfo;
Lcom/android/internal/textservice/ITextServicesManager;->getSpellCheckerService(Ljava/lang/String;Ljava/lang/String;Lcom/android/internal/textservice/ITextServicesSessionListener;Lcom/android/internal/textservice/ISpellCheckerSessionListener;Landroid/os/Bundle;)V
Lcom/android/internal/textservice/ITextServicesManager;->isSpellCheckerEnabled()Z
-Lcom/android/internal/textservice/ITextServicesSessionListener$Stub$Proxy;
Lcom/android/internal/textservice/ITextServicesSessionListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/textservice/ITextServicesSessionListener$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Lcom/android/internal/textservice/ITextServicesSessionListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Lcom/android/internal/textservice/ITextServicesSessionListener$Stub$Proxy;->onServiceConnected(Lcom/android/internal/textservice/ISpellCheckerSession;)V
-Lcom/android/internal/textservice/ITextServicesSessionListener$Stub;
Lcom/android/internal/textservice/ITextServicesSessionListener$Stub;-><init>()V
Lcom/android/internal/textservice/ITextServicesSessionListener$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/textservice/ITextServicesSessionListener;
Lcom/android/internal/textservice/ITextServicesSessionListener$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/internal/textservice/ITextServicesSessionListener$Stub;->TRANSACTION_onServiceConnected:I
-Lcom/android/internal/textservice/ITextServicesSessionListener;
Lcom/android/internal/textservice/ITextServicesSessionListener;->onServiceConnected(Lcom/android/internal/textservice/ISpellCheckerSession;)V
-Lcom/android/internal/util/AsyncChannel$AsyncChannelConnection;
-Lcom/android/internal/util/AsyncChannel$AsyncChannelConnection;-><init>()V
-Lcom/android/internal/util/AsyncChannel$DeathMonitor;
-Lcom/android/internal/util/AsyncChannel$DeathMonitor;-><init>()V
-Lcom/android/internal/util/AsyncChannel$SyncMessenger$SyncHandler;
-Lcom/android/internal/util/AsyncChannel$SyncMessenger$SyncHandler;-><init>(Landroid/os/Looper;)V
Lcom/android/internal/util/AsyncChannel$SyncMessenger$SyncHandler;->mLockObject:Ljava/lang/Object;
Lcom/android/internal/util/AsyncChannel$SyncMessenger$SyncHandler;->mResultMsg:Landroid/os/Message;
-Lcom/android/internal/util/AsyncChannel$SyncMessenger;
Lcom/android/internal/util/AsyncChannel$SyncMessenger;-><init>()V
Lcom/android/internal/util/AsyncChannel$SyncMessenger;->mHandler:Lcom/android/internal/util/AsyncChannel$SyncMessenger$SyncHandler;
Lcom/android/internal/util/AsyncChannel$SyncMessenger;->mHandlerThread:Landroid/os/HandlerThread;
@@ -106126,7 +99551,6 @@
Lcom/android/internal/util/AsyncChannel$SyncMessenger;->sCount:I
Lcom/android/internal/util/AsyncChannel$SyncMessenger;->sendMessageSynchronously(Landroid/os/Messenger;Landroid/os/Message;)Landroid/os/Message;
Lcom/android/internal/util/AsyncChannel$SyncMessenger;->sStack:Ljava/util/Stack;
-Lcom/android/internal/util/AsyncChannel;
Lcom/android/internal/util/AsyncChannel;->BASE:I
Lcom/android/internal/util/AsyncChannel;->CMD_CHANNEL_DISCONNECT:I
Lcom/android/internal/util/AsyncChannel;->CMD_CHANNEL_DISCONNECTED:I
@@ -106163,11 +99587,9 @@
Lcom/android/internal/util/AsyncChannel;->STATUS_REMOTE_DISCONNECTION:I
Lcom/android/internal/util/AsyncChannel;->STATUS_SEND_UNSUCCESSFUL:I
Lcom/android/internal/util/AsyncChannel;->TAG:Ljava/lang/String;
-Lcom/android/internal/util/AsyncService$AsyncServiceInfo;
Lcom/android/internal/util/AsyncService$AsyncServiceInfo;-><init>()V
Lcom/android/internal/util/AsyncService$AsyncServiceInfo;->mHandler:Landroid/os/Handler;
Lcom/android/internal/util/AsyncService$AsyncServiceInfo;->mRestartFlags:I
-Lcom/android/internal/util/AsyncService;
Lcom/android/internal/util/AsyncService;-><init>()V
Lcom/android/internal/util/AsyncService;->CMD_ASYNC_SERVICE_DESTROY:I
Lcom/android/internal/util/AsyncService;->CMD_ASYNC_SERVICE_ON_START_INTENT:I
@@ -106178,15 +99600,12 @@
Lcom/android/internal/util/AsyncService;->mHandler:Landroid/os/Handler;
Lcom/android/internal/util/AsyncService;->mMessenger:Landroid/os/Messenger;
Lcom/android/internal/util/AsyncService;->TAG:Ljava/lang/String;
-Lcom/android/internal/util/ExponentiallyBucketedHistogram;
Lcom/android/internal/util/ExponentiallyBucketedHistogram;-><init>(I)V
Lcom/android/internal/util/ExponentiallyBucketedHistogram;->add(I)V
Lcom/android/internal/util/ExponentiallyBucketedHistogram;->log(Ljava/lang/String;Ljava/lang/CharSequence;)V
Lcom/android/internal/util/ExponentiallyBucketedHistogram;->mData:[I
Lcom/android/internal/util/ExponentiallyBucketedHistogram;->reset()V
-Lcom/android/internal/util/FastPrintWriter$DummyWriter;
Lcom/android/internal/util/FastPrintWriter$DummyWriter;-><init>()V
-Lcom/android/internal/util/FastPrintWriter;
Lcom/android/internal/util/FastPrintWriter;-><init>(Landroid/util/Printer;)V
Lcom/android/internal/util/FastPrintWriter;-><init>(Landroid/util/Printer;I)V
Lcom/android/internal/util/FastPrintWriter;-><init>(Ljava/io/OutputStream;Z)V
@@ -106212,20 +99631,14 @@
Lcom/android/internal/util/FastPrintWriter;->mSeparator:Ljava/lang/String;
Lcom/android/internal/util/FastPrintWriter;->mText:[C
Lcom/android/internal/util/FastPrintWriter;->mWriter:Ljava/io/Writer;
-Lcom/android/internal/util/FunctionalUtils$RemoteExceptionIgnoringConsumer;
Lcom/android/internal/util/FunctionalUtils$RemoteExceptionIgnoringConsumer;->acceptOrThrow(Ljava/lang/Object;)V
-Lcom/android/internal/util/FunctionalUtils$ThrowingConsumer;
Lcom/android/internal/util/FunctionalUtils$ThrowingConsumer;->acceptOrThrow(Ljava/lang/Object;)V
-Lcom/android/internal/util/FunctionalUtils$ThrowingRunnable;
Lcom/android/internal/util/FunctionalUtils$ThrowingRunnable;->runOrThrow()V
-Lcom/android/internal/util/FunctionalUtils$ThrowingSupplier;
Lcom/android/internal/util/FunctionalUtils$ThrowingSupplier;->getOrThrow()Ljava/lang/Object;
-Lcom/android/internal/util/FunctionalUtils;
Lcom/android/internal/util/FunctionalUtils;-><init>()V
Lcom/android/internal/util/FunctionalUtils;->handleExceptions(Lcom/android/internal/util/FunctionalUtils$ThrowingRunnable;Ljava/util/function/Consumer;)Ljava/lang/Runnable;
Lcom/android/internal/util/FunctionalUtils;->ignoreRemoteException(Lcom/android/internal/util/FunctionalUtils$RemoteExceptionIgnoringConsumer;)Ljava/util/function/Consumer;
Lcom/android/internal/util/FunctionalUtils;->uncheckExceptions(Lcom/android/internal/util/FunctionalUtils$ThrowingConsumer;)Ljava/util/function/Consumer;
-Lcom/android/internal/util/ImageUtils;
Lcom/android/internal/util/ImageUtils;-><init>()V
Lcom/android/internal/util/ImageUtils;->ALPHA_TOLERANCE:I
Lcom/android/internal/util/ImageUtils;->buildScaledBitmap(Landroid/graphics/drawable/Drawable;II)Landroid/graphics/Bitmap;
@@ -106239,7 +99652,6 @@
Lcom/android/internal/util/ImageUtils;->mTempCompactBitmapPaint:Landroid/graphics/Paint;
Lcom/android/internal/util/ImageUtils;->mTempMatrix:Landroid/graphics/Matrix;
Lcom/android/internal/util/ImageUtils;->TOLERANCE:I
-Lcom/android/internal/util/IndentingPrintWriter;
Lcom/android/internal/util/IndentingPrintWriter;-><init>(Ljava/io/Writer;Ljava/lang/String;I)V
Lcom/android/internal/util/IndentingPrintWriter;->maybeWriteIndent()V
Lcom/android/internal/util/IndentingPrintWriter;->mCurrentIndent:[C
@@ -106254,14 +99666,11 @@
Lcom/android/internal/util/IndentingPrintWriter;->printPair(Ljava/lang/String;[Ljava/lang/Object;)Lcom/android/internal/util/IndentingPrintWriter;
Lcom/android/internal/util/IndentingPrintWriter;->setIndent(I)Lcom/android/internal/util/IndentingPrintWriter;
Lcom/android/internal/util/IndentingPrintWriter;->setIndent(Ljava/lang/String;)Lcom/android/internal/util/IndentingPrintWriter;
-Lcom/android/internal/util/JournaledFile;
Lcom/android/internal/util/JournaledFile;->mReal:Ljava/io/File;
Lcom/android/internal/util/JournaledFile;->mTemp:Ljava/io/File;
Lcom/android/internal/util/JournaledFile;->mWriting:Z
-Lcom/android/internal/util/LocalLogProto;
Lcom/android/internal/util/LocalLogProto;-><init>()V
Lcom/android/internal/util/LocalLogProto;->LINES:J
-Lcom/android/internal/util/NotificationColorUtil$ColorUtilsFromCompat;
Lcom/android/internal/util/NotificationColorUtil$ColorUtilsFromCompat;-><init>()V
Lcom/android/internal/util/NotificationColorUtil$ColorUtilsFromCompat;->calculateContrast(II)D
Lcom/android/internal/util/NotificationColorUtil$ColorUtilsFromCompat;->calculateLuminance(I)D
@@ -106291,7 +99700,6 @@
Lcom/android/internal/util/NotificationColorUtil$ColorUtilsFromCompat;->XYZ_WHITE_REFERENCE_X:D
Lcom/android/internal/util/NotificationColorUtil$ColorUtilsFromCompat;->XYZ_WHITE_REFERENCE_Y:D
Lcom/android/internal/util/NotificationColorUtil$ColorUtilsFromCompat;->XYZ_WHITE_REFERENCE_Z:D
-Lcom/android/internal/util/NotificationColorUtil;
Lcom/android/internal/util/NotificationColorUtil;-><init>(Landroid/content/Context;)V
Lcom/android/internal/util/NotificationColorUtil;->calculateContrast(II)D
Lcom/android/internal/util/NotificationColorUtil;->calculateLuminance(I)D
@@ -106333,7 +99741,6 @@
Lcom/android/internal/util/NotificationColorUtil;->sInstance:Lcom/android/internal/util/NotificationColorUtil;
Lcom/android/internal/util/NotificationColorUtil;->sLock:Ljava/lang/Object;
Lcom/android/internal/util/NotificationColorUtil;->TAG:Ljava/lang/String;
-Lcom/android/internal/util/StatLogger;
Lcom/android/internal/util/StatLogger;-><init>([Ljava/lang/String;)V
Lcom/android/internal/util/StatLogger;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V
Lcom/android/internal/util/StatLogger;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
@@ -106352,7 +99759,6 @@
Lcom/android/internal/util/StatLogger;->mNextTickTime:J
Lcom/android/internal/util/StatLogger;->SIZE:I
Lcom/android/internal/util/StatLogger;->TAG:Ljava/lang/String;
-Lcom/android/internal/util/TokenBucket;
Lcom/android/internal/util/TokenBucket;-><init>(II)V
Lcom/android/internal/util/TokenBucket;-><init>(III)V
Lcom/android/internal/util/TokenBucket;->available()I
@@ -106367,11 +99773,8 @@
Lcom/android/internal/util/TokenBucket;->mLastFill:J
Lcom/android/internal/util/TokenBucket;->reset(I)V
Lcom/android/internal/util/TokenBucket;->scaledTime()J
-Lcom/android/internal/util/TypedProperties$ParseException;
Lcom/android/internal/util/TypedProperties$ParseException;-><init>(Ljava/io/StreamTokenizer;Ljava/lang/String;)V
-Lcom/android/internal/util/TypedProperties$TypeException;
Lcom/android/internal/util/TypedProperties$TypeException;-><init>(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/String;)V
-Lcom/android/internal/util/TypedProperties;
Lcom/android/internal/util/TypedProperties;-><init>()V
Lcom/android/internal/util/TypedProperties;->getBoolean(Ljava/lang/String;)Z
Lcom/android/internal/util/TypedProperties;->getBoolean(Ljava/lang/String;Z)Z
@@ -106410,18 +99813,14 @@
Lcom/android/internal/util/TypedProperties;->TYPE_SHORT:I
Lcom/android/internal/util/TypedProperties;->TYPE_STRING:I
Lcom/android/internal/util/TypedProperties;->TYPE_UNSET:I
-Lcom/android/internal/util/VirtualRefBasePtr;
Lcom/android/internal/util/VirtualRefBasePtr;-><init>(J)V
Lcom/android/internal/util/VirtualRefBasePtr;->get()J
Lcom/android/internal/util/VirtualRefBasePtr;->mNativePtr:J
Lcom/android/internal/util/VirtualRefBasePtr;->nDecStrong(J)V
Lcom/android/internal/util/VirtualRefBasePtr;->nIncStrong(J)V
Lcom/android/internal/util/VirtualRefBasePtr;->release()V
-Lcom/android/internal/util/XmlUtils$ReadMapCallback;
Lcom/android/internal/util/XmlUtils$ReadMapCallback;->readThisUnknownObjectXml(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Ljava/lang/Object;
-Lcom/android/internal/util/XmlUtils$WriteMapCallback;
Lcom/android/internal/util/XmlUtils$WriteMapCallback;->writeUnknownObject(Ljava/lang/Object;Ljava/lang/String;Lorg/xmlpull/v1/XmlSerializer;)V
-Lcom/android/internal/util/XmlUtils;
Lcom/android/internal/util/XmlUtils;-><init>()V
Lcom/android/internal/util/XmlUtils;->convertValueToList(Ljava/lang/CharSequence;[Ljava/lang/String;I)I
Lcom/android/internal/util/XmlUtils;->convertValueToUnsignedInt(Ljava/lang/String;I)I
@@ -106479,7 +99878,6 @@
Lcom/android/internal/util/XmlUtils;->writeUriAttribute(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Landroid/net/Uri;)V
Lcom/android/internal/util/XmlUtils;->writeValueXml(Ljava/lang/Object;Ljava/lang/String;Lorg/xmlpull/v1/XmlSerializer;)V
Lcom/android/internal/util/XmlUtils;->writeValueXml(Ljava/lang/Object;Ljava/lang/String;Lorg/xmlpull/v1/XmlSerializer;Lcom/android/internal/util/XmlUtils$WriteMapCallback;)V
-Lcom/android/internal/view/BaseIWindow;
Lcom/android/internal/view/BaseIWindow;->closeSystemDialogs(Ljava/lang/String;)V
Lcom/android/internal/view/BaseIWindow;->dispatchAppVisibility(Z)V
Lcom/android/internal/view/BaseIWindow;->dispatchDragEvent(Landroid/view/DragEvent;)V
@@ -106498,7 +99896,6 @@
Lcom/android/internal/view/BaseIWindow;->setSession(Landroid/view/IWindowSession;)V
Lcom/android/internal/view/BaseIWindow;->updatePointerIcon(FF)V
Lcom/android/internal/view/BaseIWindow;->windowFocusChanged(ZZ)V
-Lcom/android/internal/view/BaseSurfaceHolder;
Lcom/android/internal/view/BaseSurfaceHolder;-><init>()V
Lcom/android/internal/view/BaseSurfaceHolder;->DEBUG:Z
Lcom/android/internal/view/BaseSurfaceHolder;->getCallbacks()[Landroid/view/SurfaceHolder$Callback;
@@ -106526,27 +99923,21 @@
Lcom/android/internal/view/BaseSurfaceHolder;->setSurfaceFrameSize(II)V
Lcom/android/internal/view/BaseSurfaceHolder;->TAG:Ljava/lang/String;
Lcom/android/internal/view/BaseSurfaceHolder;->ungetCallbacks()V
-Lcom/android/internal/view/IDragAndDropPermissions$Stub$Proxy;
Lcom/android/internal/view/IDragAndDropPermissions$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/view/IDragAndDropPermissions$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Lcom/android/internal/view/IDragAndDropPermissions$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Lcom/android/internal/view/IDragAndDropPermissions$Stub$Proxy;->release()V
Lcom/android/internal/view/IDragAndDropPermissions$Stub$Proxy;->take(Landroid/os/IBinder;)V
Lcom/android/internal/view/IDragAndDropPermissions$Stub$Proxy;->takeTransient(Landroid/os/IBinder;)V
-Lcom/android/internal/view/IDragAndDropPermissions$Stub;
Lcom/android/internal/view/IDragAndDropPermissions$Stub;-><init>()V
Lcom/android/internal/view/IDragAndDropPermissions$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/view/IDragAndDropPermissions;
Lcom/android/internal/view/IDragAndDropPermissions$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/internal/view/IDragAndDropPermissions$Stub;->TRANSACTION_release:I
Lcom/android/internal/view/IDragAndDropPermissions$Stub;->TRANSACTION_take:I
Lcom/android/internal/view/IDragAndDropPermissions$Stub;->TRANSACTION_takeTransient:I
-Lcom/android/internal/view/IDragAndDropPermissions;
Lcom/android/internal/view/IDragAndDropPermissions;->release()V
Lcom/android/internal/view/IDragAndDropPermissions;->take(Landroid/os/IBinder;)V
Lcom/android/internal/view/IDragAndDropPermissions;->takeTransient(Landroid/os/IBinder;)V
-Lcom/android/internal/view/IInputConnectionWrapper$MyHandler;
-Lcom/android/internal/view/IInputConnectionWrapper$MyHandler;-><init>(Landroid/os/Looper;)V
-Lcom/android/internal/view/IInputConnectionWrapper;
Lcom/android/internal/view/IInputConnectionWrapper;-><init>(Landroid/os/Looper;Landroid/view/inputmethod/InputConnection;)V
Lcom/android/internal/view/IInputConnectionWrapper;->beginBatchEdit()V
Lcom/android/internal/view/IInputConnectionWrapper;->clearMetaKeyStates(I)V
@@ -106616,7 +100007,6 @@
Lcom/android/internal/view/IInputConnectionWrapper;->setComposingText(Ljava/lang/CharSequence;I)V
Lcom/android/internal/view/IInputConnectionWrapper;->setSelection(II)V
Lcom/android/internal/view/IInputConnectionWrapper;->TAG:Ljava/lang/String;
-Lcom/android/internal/view/IInputContext$Stub$Proxy;
Lcom/android/internal/view/IInputContext$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/view/IInputContext$Stub$Proxy;->beginBatchEdit()V
Lcom/android/internal/view/IInputContext$Stub$Proxy;->clearMetaKeyStates(I)V
@@ -106643,7 +100033,6 @@
Lcom/android/internal/view/IInputContext$Stub$Proxy;->setComposingRegion(II)V
Lcom/android/internal/view/IInputContext$Stub$Proxy;->setComposingText(Ljava/lang/CharSequence;I)V
Lcom/android/internal/view/IInputContext$Stub$Proxy;->setSelection(II)V
-Lcom/android/internal/view/IInputContext$Stub;
Lcom/android/internal/view/IInputContext$Stub;-><init>()V
Lcom/android/internal/view/IInputContext$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/view/IInputContext;
Lcom/android/internal/view/IInputContext$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -106670,7 +100059,6 @@
Lcom/android/internal/view/IInputContext$Stub;->TRANSACTION_setComposingRegion:I
Lcom/android/internal/view/IInputContext$Stub;->TRANSACTION_setComposingText:I
Lcom/android/internal/view/IInputContext$Stub;->TRANSACTION_setSelection:I
-Lcom/android/internal/view/IInputContext;
Lcom/android/internal/view/IInputContext;->beginBatchEdit()V
Lcom/android/internal/view/IInputContext;->clearMetaKeyStates(I)V
Lcom/android/internal/view/IInputContext;->commitCompletion(Landroid/view/inputmethod/CompletionInfo;)V
@@ -106694,7 +100082,6 @@
Lcom/android/internal/view/IInputContext;->setComposingRegion(II)V
Lcom/android/internal/view/IInputContext;->setComposingText(Ljava/lang/CharSequence;I)V
Lcom/android/internal/view/IInputContext;->setSelection(II)V
-Lcom/android/internal/view/IInputContextCallback$Stub$Proxy;
Lcom/android/internal/view/IInputContextCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/view/IInputContextCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Lcom/android/internal/view/IInputContextCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -106705,7 +100092,6 @@
Lcom/android/internal/view/IInputContextCallback$Stub$Proxy;->setSelectedText(Ljava/lang/CharSequence;I)V
Lcom/android/internal/view/IInputContextCallback$Stub$Proxy;->setTextAfterCursor(Ljava/lang/CharSequence;I)V
Lcom/android/internal/view/IInputContextCallback$Stub$Proxy;->setTextBeforeCursor(Ljava/lang/CharSequence;I)V
-Lcom/android/internal/view/IInputContextCallback$Stub;
Lcom/android/internal/view/IInputContextCallback$Stub;-><init>()V
Lcom/android/internal/view/IInputContextCallback$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/view/IInputContextCallback;
Lcom/android/internal/view/IInputContextCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -106716,7 +100102,6 @@
Lcom/android/internal/view/IInputContextCallback$Stub;->TRANSACTION_setSelectedText:I
Lcom/android/internal/view/IInputContextCallback$Stub;->TRANSACTION_setTextAfterCursor:I
Lcom/android/internal/view/IInputContextCallback$Stub;->TRANSACTION_setTextBeforeCursor:I
-Lcom/android/internal/view/IInputContextCallback;
Lcom/android/internal/view/IInputContextCallback;->setCommitContentResult(ZI)V
Lcom/android/internal/view/IInputContextCallback;->setCursorCapsMode(II)V
Lcom/android/internal/view/IInputContextCallback;->setExtractedText(Landroid/view/inputmethod/ExtractedText;I)V
@@ -106724,7 +100109,6 @@
Lcom/android/internal/view/IInputContextCallback;->setSelectedText(Ljava/lang/CharSequence;I)V
Lcom/android/internal/view/IInputContextCallback;->setTextAfterCursor(Ljava/lang/CharSequence;I)V
Lcom/android/internal/view/IInputContextCallback;->setTextBeforeCursor(Ljava/lang/CharSequence;I)V
-Lcom/android/internal/view/IInputMethod$Stub$Proxy;
Lcom/android/internal/view/IInputMethod$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/view/IInputMethod$Stub$Proxy;->attachToken(Landroid/os/IBinder;)V
Lcom/android/internal/view/IInputMethod$Stub$Proxy;->bindInput(Landroid/view/inputmethod/InputBinding;)V
@@ -106738,7 +100122,6 @@
Lcom/android/internal/view/IInputMethod$Stub$Proxy;->showSoftInput(ILandroid/os/ResultReceiver;)V
Lcom/android/internal/view/IInputMethod$Stub$Proxy;->startInput(Landroid/os/IBinder;Lcom/android/internal/view/IInputContext;ILandroid/view/inputmethod/EditorInfo;Z)V
Lcom/android/internal/view/IInputMethod$Stub$Proxy;->unbindInput()V
-Lcom/android/internal/view/IInputMethod$Stub;
Lcom/android/internal/view/IInputMethod$Stub;-><init>()V
Lcom/android/internal/view/IInputMethod$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/internal/view/IInputMethod$Stub;->TRANSACTION_attachToken:I
@@ -106751,12 +100134,10 @@
Lcom/android/internal/view/IInputMethod$Stub;->TRANSACTION_showSoftInput:I
Lcom/android/internal/view/IInputMethod$Stub;->TRANSACTION_startInput:I
Lcom/android/internal/view/IInputMethod$Stub;->TRANSACTION_unbindInput:I
-Lcom/android/internal/view/IInputMethod;
Lcom/android/internal/view/IInputMethod;->changeInputMethodSubtype(Landroid/view/inputmethod/InputMethodSubtype;)V
Lcom/android/internal/view/IInputMethod;->createSession(Landroid/view/InputChannel;Lcom/android/internal/view/IInputSessionCallback;)V
Lcom/android/internal/view/IInputMethod;->revokeSession(Lcom/android/internal/view/IInputMethodSession;)V
Lcom/android/internal/view/IInputMethod;->startInput(Landroid/os/IBinder;Lcom/android/internal/view/IInputContext;ILandroid/view/inputmethod/EditorInfo;Z)V
-Lcom/android/internal/view/IInputMethodClient$Stub$Proxy;
Lcom/android/internal/view/IInputMethodClient$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/view/IInputMethodClient$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Lcom/android/internal/view/IInputMethodClient$Stub$Proxy;->mRemote:Landroid/os/IBinder;
@@ -106766,7 +100147,6 @@
Lcom/android/internal/view/IInputMethodClient$Stub$Proxy;->setActive(ZZ)V
Lcom/android/internal/view/IInputMethodClient$Stub$Proxy;->setUserActionNotificationSequenceNumber(I)V
Lcom/android/internal/view/IInputMethodClient$Stub$Proxy;->setUsingInputMethod(Z)V
-Lcom/android/internal/view/IInputMethodClient$Stub;
Lcom/android/internal/view/IInputMethodClient$Stub;-><init>()V
Lcom/android/internal/view/IInputMethodClient$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/view/IInputMethodClient;
Lcom/android/internal/view/IInputMethodClient$Stub;->DESCRIPTOR:Ljava/lang/String;
@@ -106776,12 +100156,10 @@
Lcom/android/internal/view/IInputMethodClient$Stub;->TRANSACTION_setActive:I
Lcom/android/internal/view/IInputMethodClient$Stub;->TRANSACTION_setUserActionNotificationSequenceNumber:I
Lcom/android/internal/view/IInputMethodClient$Stub;->TRANSACTION_setUsingInputMethod:I
-Lcom/android/internal/view/IInputMethodClient;
Lcom/android/internal/view/IInputMethodClient;->onUnbindMethod(II)V
Lcom/android/internal/view/IInputMethodClient;->reportFullscreenMode(Z)V
Lcom/android/internal/view/IInputMethodClient;->setActive(ZZ)V
Lcom/android/internal/view/IInputMethodClient;->setUserActionNotificationSequenceNumber(I)V
-Lcom/android/internal/view/IInputMethodManager$Stub$Proxy;
Lcom/android/internal/view/IInputMethodManager$Stub$Proxy;->addClient(Lcom/android/internal/view/IInputMethodClient;Lcom/android/internal/view/IInputContext;II)V
Lcom/android/internal/view/IInputMethodManager$Stub$Proxy;->clearLastInputMethodWindowForTransition(Landroid/os/IBinder;)V
Lcom/android/internal/view/IInputMethodManager$Stub$Proxy;->createInputContentUriToken(Landroid/os/IBinder;Landroid/net/Uri;Ljava/lang/String;)Lcom/android/internal/inputmethod/IInputContentUriToken;
@@ -106817,7 +100195,6 @@
Lcom/android/internal/view/IInputMethodManager$Stub$Proxy;->switchToNextInputMethod(Landroid/os/IBinder;Z)Z
Lcom/android/internal/view/IInputMethodManager$Stub$Proxy;->switchToPreviousInputMethod(Landroid/os/IBinder;)Z
Lcom/android/internal/view/IInputMethodManager$Stub$Proxy;->updateStatusIcon(Landroid/os/IBinder;Ljava/lang/String;I)V
-Lcom/android/internal/view/IInputMethodManager$Stub;
Lcom/android/internal/view/IInputMethodManager$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/internal/view/IInputMethodManager$Stub;->TRANSACTION_addClient:I
Lcom/android/internal/view/IInputMethodManager$Stub;->TRANSACTION_clearLastInputMethodWindowForTransition:I
@@ -106853,7 +100230,6 @@
Lcom/android/internal/view/IInputMethodManager$Stub;->TRANSACTION_switchToNextInputMethod:I
Lcom/android/internal/view/IInputMethodManager$Stub;->TRANSACTION_switchToPreviousInputMethod:I
Lcom/android/internal/view/IInputMethodManager$Stub;->TRANSACTION_updateStatusIcon:I
-Lcom/android/internal/view/IInputMethodManager;
Lcom/android/internal/view/IInputMethodManager;->clearLastInputMethodWindowForTransition(Landroid/os/IBinder;)V
Lcom/android/internal/view/IInputMethodManager;->createInputContentUriToken(Landroid/os/IBinder;Landroid/net/Uri;Ljava/lang/String;)Lcom/android/internal/inputmethod/IInputContentUriToken;
Lcom/android/internal/view/IInputMethodManager;->finishInput(Lcom/android/internal/view/IInputMethodClient;)V
@@ -106886,7 +100262,6 @@
Lcom/android/internal/view/IInputMethodManager;->switchToNextInputMethod(Landroid/os/IBinder;Z)Z
Lcom/android/internal/view/IInputMethodManager;->switchToPreviousInputMethod(Landroid/os/IBinder;)Z
Lcom/android/internal/view/IInputMethodManager;->updateStatusIcon(Landroid/os/IBinder;Ljava/lang/String;I)V
-Lcom/android/internal/view/IInputMethodSession$Stub$Proxy;
Lcom/android/internal/view/IInputMethodSession$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/view/IInputMethodSession$Stub$Proxy;->appPrivateCommand(Ljava/lang/String;Landroid/os/Bundle;)V
Lcom/android/internal/view/IInputMethodSession$Stub$Proxy;->displayCompletions([Landroid/view/inputmethod/CompletionInfo;)V
@@ -106900,7 +100275,6 @@
Lcom/android/internal/view/IInputMethodSession$Stub$Proxy;->updateExtractedText(ILandroid/view/inputmethod/ExtractedText;)V
Lcom/android/internal/view/IInputMethodSession$Stub$Proxy;->updateSelection(IIIIII)V
Lcom/android/internal/view/IInputMethodSession$Stub$Proxy;->viewClicked(Z)V
-Lcom/android/internal/view/IInputMethodSession$Stub;
Lcom/android/internal/view/IInputMethodSession$Stub;-><init>()V
Lcom/android/internal/view/IInputMethodSession$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/internal/view/IInputMethodSession$Stub;->TRANSACTION_appPrivateCommand:I
@@ -106913,7 +100287,6 @@
Lcom/android/internal/view/IInputMethodSession$Stub;->TRANSACTION_updateExtractedText:I
Lcom/android/internal/view/IInputMethodSession$Stub;->TRANSACTION_updateSelection:I
Lcom/android/internal/view/IInputMethodSession$Stub;->TRANSACTION_viewClicked:I
-Lcom/android/internal/view/IInputMethodSession;
Lcom/android/internal/view/IInputMethodSession;->appPrivateCommand(Ljava/lang/String;Landroid/os/Bundle;)V
Lcom/android/internal/view/IInputMethodSession;->displayCompletions([Landroid/view/inputmethod/CompletionInfo;)V
Lcom/android/internal/view/IInputMethodSession;->finishInput()V
@@ -106924,19 +100297,15 @@
Lcom/android/internal/view/IInputMethodSession;->updateExtractedText(ILandroid/view/inputmethod/ExtractedText;)V
Lcom/android/internal/view/IInputMethodSession;->updateSelection(IIIIII)V
Lcom/android/internal/view/IInputMethodSession;->viewClicked(Z)V
-Lcom/android/internal/view/IInputSessionCallback$Stub$Proxy;
Lcom/android/internal/view/IInputSessionCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/view/IInputSessionCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Lcom/android/internal/view/IInputSessionCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Lcom/android/internal/view/IInputSessionCallback$Stub$Proxy;->sessionCreated(Lcom/android/internal/view/IInputMethodSession;)V
-Lcom/android/internal/view/IInputSessionCallback$Stub;
Lcom/android/internal/view/IInputSessionCallback$Stub;-><init>()V
Lcom/android/internal/view/IInputSessionCallback$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/view/IInputSessionCallback;
Lcom/android/internal/view/IInputSessionCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/internal/view/IInputSessionCallback$Stub;->TRANSACTION_sessionCreated:I
-Lcom/android/internal/view/IInputSessionCallback;
Lcom/android/internal/view/IInputSessionCallback;->sessionCreated(Lcom/android/internal/view/IInputMethodSession;)V
-Lcom/android/internal/view/InputBindResult$ResultCode;
Lcom/android/internal/view/InputBindResult$ResultCode;->ERROR_IME_NOT_CONNECTED:I
Lcom/android/internal/view/InputBindResult$ResultCode;->ERROR_INVALID_PACKAGE_NAME:I
Lcom/android/internal/view/InputBindResult$ResultCode;->ERROR_INVALID_USER:I
@@ -106950,7 +100319,6 @@
Lcom/android/internal/view/InputBindResult$ResultCode;->SUCCESS_WAITING_IME_BINDING:I
Lcom/android/internal/view/InputBindResult$ResultCode;->SUCCESS_WAITING_IME_SESSION:I
Lcom/android/internal/view/InputBindResult$ResultCode;->SUCCESS_WITH_IME_SESSION:I
-Lcom/android/internal/view/InputBindResult;
Lcom/android/internal/view/InputBindResult;-><init>(ILcom/android/internal/view/IInputMethodSession;Landroid/view/InputChannel;Ljava/lang/String;II)V
Lcom/android/internal/view/InputBindResult;-><init>(Landroid/os/Parcel;)V
Lcom/android/internal/view/InputBindResult;->channel:Landroid/view/InputChannel;
@@ -106968,9 +100336,6 @@
Lcom/android/internal/view/InputBindResult;->result:I
Lcom/android/internal/view/InputBindResult;->sequence:I
Lcom/android/internal/view/InputBindResult;->userActionNotificationSequenceNumber:I
-Lcom/android/internal/view/InputMethodClient$StartInputReason;
-Lcom/android/internal/view/InputMethodClient$UnbindReason;
-Lcom/android/internal/view/InputMethodClient;
Lcom/android/internal/view/InputMethodClient;-><init>()V
Lcom/android/internal/view/InputMethodClient;->getStartInputReason(I)Ljava/lang/String;
Lcom/android/internal/view/InputMethodClient;->getUnbindReason(I)Ljava/lang/String;
@@ -106992,14 +100357,10 @@
Lcom/android/internal/view/InputMethodClient;->UNBIND_REASON_SWITCH_IME_FAILED:I
Lcom/android/internal/view/InputMethodClient;->UNBIND_REASON_SWITCH_USER:I
Lcom/android/internal/view/InputMethodClient;->UNBIND_REASON_UNSPECIFIED:I
-Lcom/android/internal/view/menu/ActionMenuItemView$ActionMenuItemForwardingListener;
-Lcom/android/internal/view/menu/ActionMenuItemView$ActionMenuItemForwardingListener;-><init>()V
Lcom/android/internal/view/menu/ActionMenuItemView$ActionMenuItemForwardingListener;->getPopup()Lcom/android/internal/view/menu/ShowableListMenu;
Lcom/android/internal/view/menu/ActionMenuItemView$ActionMenuItemForwardingListener;->onForwardingStarted()Z
-Lcom/android/internal/view/menu/ActionMenuItemView$PopupCallback;
Lcom/android/internal/view/menu/ActionMenuItemView$PopupCallback;-><init>()V
Lcom/android/internal/view/menu/ActionMenuItemView$PopupCallback;->getPopup()Lcom/android/internal/view/menu/ShowableListMenu;
-Lcom/android/internal/view/menu/ActionMenuItemView;
Lcom/android/internal/view/menu/ActionMenuItemView;-><init>(Landroid/content/Context;)V
Lcom/android/internal/view/menu/ActionMenuItemView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
Lcom/android/internal/view/menu/ActionMenuItemView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
@@ -107035,7 +100396,6 @@
Lcom/android/internal/view/menu/ActionMenuItemView;->showsIcon()Z
Lcom/android/internal/view/menu/ActionMenuItemView;->TAG:Ljava/lang/String;
Lcom/android/internal/view/menu/ActionMenuItemView;->updateTextButtonVisibility()V
-Lcom/android/internal/view/menu/BaseMenuPresenter;
Lcom/android/internal/view/menu/BaseMenuPresenter;-><init>(Landroid/content/Context;II)V
Lcom/android/internal/view/menu/BaseMenuPresenter;->addItemView(Landroid/view/View;I)V
Lcom/android/internal/view/menu/BaseMenuPresenter;->bindItemView(Lcom/android/internal/view/menu/MenuItemImpl;Lcom/android/internal/view/menu/MenuView$ItemView;)V
@@ -107065,7 +100425,6 @@
Lcom/android/internal/view/menu/BaseMenuPresenter;->setId(I)V
Lcom/android/internal/view/menu/BaseMenuPresenter;->shouldIncludeItem(ILcom/android/internal/view/menu/MenuItemImpl;)Z
Lcom/android/internal/view/menu/BaseMenuPresenter;->updateMenuView(Z)V
-Lcom/android/internal/view/menu/MenuAdapter;
Lcom/android/internal/view/menu/MenuAdapter;-><init>(Lcom/android/internal/view/menu/MenuBuilder;Landroid/view/LayoutInflater;ZI)V
Lcom/android/internal/view/menu/MenuAdapter;->findExpandedIndex()V
Lcom/android/internal/view/menu/MenuAdapter;->getAdapterMenu()Lcom/android/internal/view/menu/MenuBuilder;
@@ -107077,10 +100436,7 @@
Lcom/android/internal/view/menu/MenuAdapter;->mItemLayoutRes:I
Lcom/android/internal/view/menu/MenuAdapter;->mOverflowOnly:Z
Lcom/android/internal/view/menu/MenuAdapter;->setForceShowIcon(Z)V
-Lcom/android/internal/view/menu/MenuBuilder$Callback;
-Lcom/android/internal/view/menu/MenuBuilder$ItemInvoker;
Lcom/android/internal/view/menu/MenuBuilder$ItemInvoker;->invokeItem(Lcom/android/internal/view/menu/MenuItemImpl;)Z
-Lcom/android/internal/view/menu/MenuBuilder;
Lcom/android/internal/view/menu/MenuBuilder;->ACTION_VIEW_STATES_KEY:Ljava/lang/String;
Lcom/android/internal/view/menu/MenuBuilder;->addInternal(IIILjava/lang/CharSequence;)Landroid/view/MenuItem;
Lcom/android/internal/view/menu/MenuBuilder;->changeMenuMode()V
@@ -107159,10 +100515,8 @@
Lcom/android/internal/view/menu/MenuBuilder;->setShortcutsVisible(Z)V
Lcom/android/internal/view/menu/MenuBuilder;->setShortcutsVisibleInner(Z)V
Lcom/android/internal/view/menu/MenuBuilder;->TAG:Ljava/lang/String;
-Lcom/android/internal/view/menu/MenuHelper;
Lcom/android/internal/view/menu/MenuHelper;->dismiss()V
Lcom/android/internal/view/menu/MenuHelper;->setPresenterCallback(Lcom/android/internal/view/menu/MenuPresenter$Callback;)V
-Lcom/android/internal/view/menu/MenuItemImpl;
Lcom/android/internal/view/menu/MenuItemImpl;-><init>(Lcom/android/internal/view/menu/MenuBuilder;IIIILjava/lang/CharSequence;I)V
Lcom/android/internal/view/menu/MenuItemImpl;->actionFormatChanged()V
Lcom/android/internal/view/menu/MenuItemImpl;->appendModifier(Ljava/lang/StringBuilder;IILjava/lang/String;)V
@@ -107222,7 +100576,6 @@
Lcom/android/internal/view/menu/MenuItemImpl;->showsTextAsAction()Z
Lcom/android/internal/view/menu/MenuItemImpl;->SHOW_AS_ACTION_MASK:I
Lcom/android/internal/view/menu/MenuItemImpl;->TAG:Ljava/lang/String;
-Lcom/android/internal/view/menu/MenuPopup;
Lcom/android/internal/view/menu/MenuPopup;-><init>()V
Lcom/android/internal/view/menu/MenuPopup;->addMenu(Lcom/android/internal/view/menu/MenuBuilder;)V
Lcom/android/internal/view/menu/MenuPopup;->collapseItemActionView(Lcom/android/internal/view/menu/MenuBuilder;Lcom/android/internal/view/menu/MenuItemImpl;)Z
@@ -107243,7 +100596,6 @@
Lcom/android/internal/view/menu/MenuPopup;->setVerticalOffset(I)V
Lcom/android/internal/view/menu/MenuPopup;->shouldPreserveIconSpacing(Lcom/android/internal/view/menu/MenuBuilder;)Z
Lcom/android/internal/view/menu/MenuPopup;->toMenuAdapter(Landroid/widget/ListAdapter;)Lcom/android/internal/view/menu/MenuAdapter;
-Lcom/android/internal/view/menu/MenuPopupHelper;
Lcom/android/internal/view/menu/MenuPopupHelper;-><init>(Landroid/content/Context;Lcom/android/internal/view/menu/MenuBuilder;Landroid/view/View;ZI)V
Lcom/android/internal/view/menu/MenuPopupHelper;-><init>(Landroid/content/Context;Lcom/android/internal/view/menu/MenuBuilder;Landroid/view/View;ZII)V
Lcom/android/internal/view/menu/MenuPopupHelper;->createPopup()Lcom/android/internal/view/menu/MenuPopup;
@@ -107267,9 +100619,7 @@
Lcom/android/internal/view/menu/MenuPopupHelper;->showPopup(IIZZ)V
Lcom/android/internal/view/menu/MenuPopupHelper;->TOUCH_EPICENTER_SIZE_DP:I
Lcom/android/internal/view/menu/MenuPopupHelper;->tryShow(II)Z
-Lcom/android/internal/view/menu/MenuPresenter$Callback;
Lcom/android/internal/view/menu/MenuPresenter$Callback;->onCloseMenu(Lcom/android/internal/view/menu/MenuBuilder;Z)V
-Lcom/android/internal/view/menu/MenuPresenter;
Lcom/android/internal/view/menu/MenuPresenter;->collapseItemActionView(Lcom/android/internal/view/menu/MenuBuilder;Lcom/android/internal/view/menu/MenuItemImpl;)Z
Lcom/android/internal/view/menu/MenuPresenter;->expandItemActionView(Lcom/android/internal/view/menu/MenuBuilder;Lcom/android/internal/view/menu/MenuItemImpl;)Z
Lcom/android/internal/view/menu/MenuPresenter;->flagActionItems()Z
@@ -107282,7 +100632,6 @@
Lcom/android/internal/view/menu/MenuPresenter;->onSubMenuSelected(Lcom/android/internal/view/menu/SubMenuBuilder;)Z
Lcom/android/internal/view/menu/MenuPresenter;->setCallback(Lcom/android/internal/view/menu/MenuPresenter$Callback;)V
Lcom/android/internal/view/menu/MenuPresenter;->updateMenuView(Z)V
-Lcom/android/internal/view/menu/MenuView$ItemView;
Lcom/android/internal/view/menu/MenuView$ItemView;->initialize(Lcom/android/internal/view/menu/MenuItemImpl;I)V
Lcom/android/internal/view/menu/MenuView$ItemView;->prefersCondensedTitle()Z
Lcom/android/internal/view/menu/MenuView$ItemView;->setCheckable(Z)V
@@ -107292,14 +100641,11 @@
Lcom/android/internal/view/menu/MenuView$ItemView;->setShortcut(ZC)V
Lcom/android/internal/view/menu/MenuView$ItemView;->setTitle(Ljava/lang/CharSequence;)V
Lcom/android/internal/view/menu/MenuView$ItemView;->showsIcon()Z
-Lcom/android/internal/view/menu/MenuView;
Lcom/android/internal/view/menu/MenuView;->initialize(Lcom/android/internal/view/menu/MenuBuilder;)V
-Lcom/android/internal/view/menu/ShowableListMenu;
Lcom/android/internal/view/menu/ShowableListMenu;->dismiss()V
Lcom/android/internal/view/menu/ShowableListMenu;->getListView()Landroid/widget/ListView;
Lcom/android/internal/view/menu/ShowableListMenu;->isShowing()Z
Lcom/android/internal/view/menu/ShowableListMenu;->show()V
-Lcom/android/internal/view/menu/SubMenuBuilder;
Lcom/android/internal/view/menu/SubMenuBuilder;-><init>(Landroid/content/Context;Lcom/android/internal/view/menu/MenuBuilder;Lcom/android/internal/view/menu/MenuItemImpl;)V
Lcom/android/internal/view/menu/SubMenuBuilder;->collapseItemActionView(Lcom/android/internal/view/menu/MenuItemImpl;)Z
Lcom/android/internal/view/menu/SubMenuBuilder;->dispatchMenuItemSelected(Lcom/android/internal/view/menu/MenuBuilder;Landroid/view/MenuItem;)Z
@@ -107312,7 +100658,6 @@
Lcom/android/internal/view/menu/SubMenuBuilder;->mItem:Lcom/android/internal/view/menu/MenuItemImpl;
Lcom/android/internal/view/menu/SubMenuBuilder;->mParentMenu:Lcom/android/internal/view/menu/MenuBuilder;
Lcom/android/internal/view/menu/SubMenuBuilder;->setShortcutsVisible(Z)V
-Lcom/android/internal/view/OneShotPreDrawListener;
Lcom/android/internal/view/OneShotPreDrawListener;-><init>(Landroid/view/View;ZLjava/lang/Runnable;)V
Lcom/android/internal/view/OneShotPreDrawListener;->add(Landroid/view/View;Ljava/lang/Runnable;)Lcom/android/internal/view/OneShotPreDrawListener;
Lcom/android/internal/view/OneShotPreDrawListener;->add(Landroid/view/View;ZLjava/lang/Runnable;)Lcom/android/internal/view/OneShotPreDrawListener;
@@ -107321,7 +100666,6 @@
Lcom/android/internal/view/OneShotPreDrawListener;->mView:Landroid/view/View;
Lcom/android/internal/view/OneShotPreDrawListener;->mViewTreeObserver:Landroid/view/ViewTreeObserver;
Lcom/android/internal/view/OneShotPreDrawListener;->removeListener()V
-Lcom/android/internal/view/TooltipPopup;
Lcom/android/internal/view/TooltipPopup;-><init>(Landroid/content/Context;)V
Lcom/android/internal/view/TooltipPopup;->computePosition(Landroid/view/View;IIZLandroid/view/WindowManager$LayoutParams;)V
Lcom/android/internal/view/TooltipPopup;->getContentView()Landroid/view/View;
@@ -107336,13 +100680,11 @@
Lcom/android/internal/view/TooltipPopup;->mTmpDisplayFrame:Landroid/graphics/Rect;
Lcom/android/internal/view/TooltipPopup;->show(Landroid/view/View;IIZLjava/lang/CharSequence;)V
Lcom/android/internal/view/TooltipPopup;->TAG:Ljava/lang/String;
-Lcom/android/internal/widget/AutoScrollHelper$AbsListViewAutoScroller;
Lcom/android/internal/widget/AutoScrollHelper$AbsListViewAutoScroller;-><init>(Landroid/widget/AbsListView;)V
Lcom/android/internal/widget/AutoScrollHelper$AbsListViewAutoScroller;->canTargetScrollHorizontally(I)Z
Lcom/android/internal/widget/AutoScrollHelper$AbsListViewAutoScroller;->canTargetScrollVertically(I)Z
Lcom/android/internal/widget/AutoScrollHelper$AbsListViewAutoScroller;->mTarget:Landroid/widget/AbsListView;
Lcom/android/internal/widget/AutoScrollHelper$AbsListViewAutoScroller;->scrollTargetBy(II)V
-Lcom/android/internal/widget/AutoScrollHelper$ClampedScroller;
Lcom/android/internal/widget/AutoScrollHelper$ClampedScroller;-><init>()V
Lcom/android/internal/widget/AutoScrollHelper$ClampedScroller;->computeScrollDelta()V
Lcom/android/internal/widget/AutoScrollHelper$ClampedScroller;->getDeltaX()I
@@ -107368,9 +100710,6 @@
Lcom/android/internal/widget/AutoScrollHelper$ClampedScroller;->setRampUpDuration(I)V
Lcom/android/internal/widget/AutoScrollHelper$ClampedScroller;->setTargetVelocity(FF)V
Lcom/android/internal/widget/AutoScrollHelper$ClampedScroller;->start()V
-Lcom/android/internal/widget/AutoScrollHelper$ScrollAnimationRunnable;
-Lcom/android/internal/widget/AutoScrollHelper$ScrollAnimationRunnable;-><init>()V
-Lcom/android/internal/widget/AutoScrollHelper;
Lcom/android/internal/widget/AutoScrollHelper;-><init>(Landroid/view/View;)V
Lcom/android/internal/widget/AutoScrollHelper;->cancelTargetTouch()V
Lcom/android/internal/widget/AutoScrollHelper;->canTargetScrollHorizontally(I)Z
@@ -107431,7 +100770,6 @@
Lcom/android/internal/widget/AutoScrollHelper;->shouldAnimate()Z
Lcom/android/internal/widget/AutoScrollHelper;->startAnimating()V
Lcom/android/internal/widget/AutoScrollHelper;->VERTICAL:I
-Lcom/android/internal/widget/CachingIconView;
Lcom/android/internal/widget/CachingIconView;->mDesiredVisibility:I
Lcom/android/internal/widget/CachingIconView;->mForceHidden:Z
Lcom/android/internal/widget/CachingIconView;->mInternalSetDrawable:Z
@@ -107446,7 +100784,6 @@
Lcom/android/internal/widget/CachingIconView;->testAndSetCache(I)Z
Lcom/android/internal/widget/CachingIconView;->testAndSetCache(Landroid/graphics/drawable/Icon;)Z
Lcom/android/internal/widget/CachingIconView;->updateVisibility()V
-Lcom/android/internal/widget/DecorToolbar;
Lcom/android/internal/widget/DecorToolbar;->animateToVisibility(I)V
Lcom/android/internal/widget/DecorToolbar;->canShowOverflowMenu()Z
Lcom/android/internal/widget/DecorToolbar;->canSplit()Z
@@ -107509,9 +100846,6 @@
Lcom/android/internal/widget/DecorToolbar;->setWindowCallback(Landroid/view/Window$Callback;)V
Lcom/android/internal/widget/DecorToolbar;->setWindowTitle(Ljava/lang/CharSequence;)V
Lcom/android/internal/widget/DecorToolbar;->showOverflowMenu()Z
-Lcom/android/internal/widget/ExploreByTouchHelper$ExploreByTouchNodeProvider;
-Lcom/android/internal/widget/ExploreByTouchHelper$ExploreByTouchNodeProvider;-><init>()V
-Lcom/android/internal/widget/ExploreByTouchHelper;
Lcom/android/internal/widget/ExploreByTouchHelper;-><init>(Landroid/view/View;)V
Lcom/android/internal/widget/ExploreByTouchHelper;->clearAccessibilityFocus(I)Z
Lcom/android/internal/widget/ExploreByTouchHelper;->createEvent(II)Landroid/view/accessibility/AccessibilityEvent;
@@ -107557,19 +100891,15 @@
Lcom/android/internal/widget/ExploreByTouchHelper;->requestAccessibilityFocus(I)Z
Lcom/android/internal/widget/ExploreByTouchHelper;->sendEventForVirtualView(II)Z
Lcom/android/internal/widget/ExploreByTouchHelper;->updateHoveredVirtualView(I)V
-Lcom/android/internal/widget/ICheckCredentialProgressCallback$Stub$Proxy;
Lcom/android/internal/widget/ICheckCredentialProgressCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/widget/ICheckCredentialProgressCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
Lcom/android/internal/widget/ICheckCredentialProgressCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
Lcom/android/internal/widget/ICheckCredentialProgressCallback$Stub$Proxy;->onCredentialVerified()V
-Lcom/android/internal/widget/ICheckCredentialProgressCallback$Stub;
Lcom/android/internal/widget/ICheckCredentialProgressCallback$Stub;-><init>()V
Lcom/android/internal/widget/ICheckCredentialProgressCallback$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/widget/ICheckCredentialProgressCallback;
Lcom/android/internal/widget/ICheckCredentialProgressCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/internal/widget/ICheckCredentialProgressCallback$Stub;->TRANSACTION_onCredentialVerified:I
-Lcom/android/internal/widget/ICheckCredentialProgressCallback;
Lcom/android/internal/widget/ICheckCredentialProgressCallback;->onCredentialVerified()V
-Lcom/android/internal/widget/ILockSettings$Stub$Proxy;
Lcom/android/internal/widget/ILockSettings$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/widget/ILockSettings$Stub$Proxy;->checkCredential(Ljava/lang/String;IILcom/android/internal/widget/ICheckCredentialProgressCallback;)Lcom/android/internal/widget/VerifyCredentialResponse;
Lcom/android/internal/widget/ILockSettings$Stub$Proxy;->checkVoldPassword(I)Z
@@ -107611,7 +100941,6 @@
Lcom/android/internal/widget/ILockSettings$Stub$Proxy;->userPresent(I)V
Lcom/android/internal/widget/ILockSettings$Stub$Proxy;->verifyCredential(Ljava/lang/String;IJI)Lcom/android/internal/widget/VerifyCredentialResponse;
Lcom/android/internal/widget/ILockSettings$Stub$Proxy;->verifyTiedProfileChallenge(Ljava/lang/String;IJI)Lcom/android/internal/widget/VerifyCredentialResponse;
-Lcom/android/internal/widget/ILockSettings$Stub;
Lcom/android/internal/widget/ILockSettings$Stub;-><init>()V
Lcom/android/internal/widget/ILockSettings$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/internal/widget/ILockSettings$Stub;->TRANSACTION_checkCredential:I
@@ -107652,7 +100981,6 @@
Lcom/android/internal/widget/ILockSettings$Stub;->TRANSACTION_userPresent:I
Lcom/android/internal/widget/ILockSettings$Stub;->TRANSACTION_verifyCredential:I
Lcom/android/internal/widget/ILockSettings$Stub;->TRANSACTION_verifyTiedProfileChallenge:I
-Lcom/android/internal/widget/ILockSettings;
Lcom/android/internal/widget/ILockSettings;->checkCredential(Ljava/lang/String;IILcom/android/internal/widget/ICheckCredentialProgressCallback;)Lcom/android/internal/widget/VerifyCredentialResponse;
Lcom/android/internal/widget/ILockSettings;->checkVoldPassword(I)Z
Lcom/android/internal/widget/ILockSettings;->closeSession(Ljava/lang/String;)V
@@ -107683,7 +101011,6 @@
Lcom/android/internal/widget/ILockSettings;->userPresent(I)V
Lcom/android/internal/widget/ILockSettings;->verifyCredential(Ljava/lang/String;IJI)Lcom/android/internal/widget/VerifyCredentialResponse;
Lcom/android/internal/widget/ILockSettings;->verifyTiedProfileChallenge(Ljava/lang/String;IJI)Lcom/android/internal/widget/VerifyCredentialResponse;
-Lcom/android/internal/widget/IRemoteViewsFactory$Stub$Proxy;
Lcom/android/internal/widget/IRemoteViewsFactory$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Lcom/android/internal/widget/IRemoteViewsFactory$Stub$Proxy;->getCount()I
Lcom/android/internal/widget/IRemoteViewsFactory$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
@@ -107697,7 +101024,6 @@
Lcom/android/internal/widget/IRemoteViewsFactory$Stub$Proxy;->onDataSetChanged()V
Lcom/android/internal/widget/IRemoteViewsFactory$Stub$Proxy;->onDataSetChangedAsync()V
Lcom/android/internal/widget/IRemoteViewsFactory$Stub$Proxy;->onDestroy(Landroid/content/Intent;)V
-Lcom/android/internal/widget/IRemoteViewsFactory$Stub;
Lcom/android/internal/widget/IRemoteViewsFactory$Stub;-><init>()V
Lcom/android/internal/widget/IRemoteViewsFactory$Stub;->DESCRIPTOR:Ljava/lang/String;
Lcom/android/internal/widget/IRemoteViewsFactory$Stub;->TRANSACTION_getCount:I
@@ -107710,17 +101036,10 @@
Lcom/android/internal/widget/IRemoteViewsFactory$Stub;->TRANSACTION_onDataSetChanged:I
Lcom/android/internal/widget/IRemoteViewsFactory$Stub;->TRANSACTION_onDataSetChangedAsync:I
Lcom/android/internal/widget/IRemoteViewsFactory$Stub;->TRANSACTION_onDestroy:I
-Lcom/android/internal/widget/IRemoteViewsFactory;
Lcom/android/internal/widget/IRemoteViewsFactory;->onDataSetChangedAsync()V
Lcom/android/internal/widget/IRemoteViewsFactory;->onDestroy(Landroid/content/Intent;)V
-Lcom/android/internal/widget/ScrollingTabContainerView$TabAdapter;
-Lcom/android/internal/widget/ScrollingTabContainerView$TabAdapter;-><init>(Landroid/content/Context;)V
Lcom/android/internal/widget/ScrollingTabContainerView$TabAdapter;->mDropDownContext:Landroid/content/Context;
Lcom/android/internal/widget/ScrollingTabContainerView$TabAdapter;->setDropDownViewContext(Landroid/content/Context;)V
-Lcom/android/internal/widget/ScrollingTabContainerView$TabClickListener;
-Lcom/android/internal/widget/ScrollingTabContainerView$TabClickListener;-><init>()V
-Lcom/android/internal/widget/ScrollingTabContainerView$TabView;
-Lcom/android/internal/widget/ScrollingTabContainerView$TabView;-><init>(Landroid/content/Context;Landroid/app/ActionBar$Tab;Z)V
Lcom/android/internal/widget/ScrollingTabContainerView$TabView;->bindTab(Landroid/app/ActionBar$Tab;)V
Lcom/android/internal/widget/ScrollingTabContainerView$TabView;->getTab()Landroid/app/ActionBar$Tab;
Lcom/android/internal/widget/ScrollingTabContainerView$TabView;->mCustomView:Landroid/view/View;
@@ -107728,12 +101047,9 @@
Lcom/android/internal/widget/ScrollingTabContainerView$TabView;->mTab:Landroid/app/ActionBar$Tab;
Lcom/android/internal/widget/ScrollingTabContainerView$TabView;->mTextView:Landroid/widget/TextView;
Lcom/android/internal/widget/ScrollingTabContainerView$TabView;->update()V
-Lcom/android/internal/widget/ScrollingTabContainerView$VisibilityAnimListener;
-Lcom/android/internal/widget/ScrollingTabContainerView$VisibilityAnimListener;-><init>()V
Lcom/android/internal/widget/ScrollingTabContainerView$VisibilityAnimListener;->mCanceled:Z
Lcom/android/internal/widget/ScrollingTabContainerView$VisibilityAnimListener;->mFinalVisibility:I
Lcom/android/internal/widget/ScrollingTabContainerView$VisibilityAnimListener;->withFinalVisibility(I)Lcom/android/internal/widget/ScrollingTabContainerView$VisibilityAnimListener;
-Lcom/android/internal/widget/ScrollingTabContainerView;
Lcom/android/internal/widget/ScrollingTabContainerView;->createSpinner()Landroid/widget/Spinner;
Lcom/android/internal/widget/ScrollingTabContainerView;->createTabLayout()Landroid/widget/LinearLayout;
Lcom/android/internal/widget/ScrollingTabContainerView;->createTabView(Landroid/content/Context;Landroid/app/ActionBar$Tab;Z)Lcom/android/internal/widget/ScrollingTabContainerView$TabView;
@@ -107755,7 +101071,6 @@
Lcom/android/internal/widget/ScrollingTabContainerView;->sAlphaInterpolator:Landroid/animation/TimeInterpolator;
Lcom/android/internal/widget/ScrollingTabContainerView;->setContentHeight(I)V
Lcom/android/internal/widget/ScrollingTabContainerView;->TAG:Ljava/lang/String;
-Lcom/android/internal/widget/SubtitleView;
Lcom/android/internal/widget/SubtitleView;-><init>(Landroid/content/Context;)V
Lcom/android/internal/widget/SubtitleView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
Lcom/android/internal/widget/SubtitleView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
@@ -107793,7 +101108,6 @@
Lcom/android/internal/widget/SubtitleView;->setText(Ljava/lang/CharSequence;)V
Lcom/android/internal/widget/SubtitleView;->setTextSize(F)V
Lcom/android/internal/widget/SubtitleView;->setTypeface(Landroid/graphics/Typeface;)V
-Lcom/android/internal/widget/ToolbarWidgetWrapper;
Lcom/android/internal/widget/ToolbarWidgetWrapper;-><init>(Landroid/widget/Toolbar;Z)V
Lcom/android/internal/widget/ToolbarWidgetWrapper;-><init>(Landroid/widget/Toolbar;ZI)V
Lcom/android/internal/widget/ToolbarWidgetWrapper;->AFFECTS_LOGO_MASK:I
@@ -107885,7 +101199,6 @@
Lcom/android/internal/widget/ToolbarWidgetWrapper;->updateHomeAccessibility()V
Lcom/android/internal/widget/ToolbarWidgetWrapper;->updateNavigationIcon()V
Lcom/android/internal/widget/ToolbarWidgetWrapper;->updateToolbarLogo()V
-Lcom/android/internal/widget/VerifyCredentialResponse;
Lcom/android/internal/widget/VerifyCredentialResponse;-><init>()V
Lcom/android/internal/widget/VerifyCredentialResponse;-><init>(I)V
Lcom/android/internal/widget/VerifyCredentialResponse;-><init>(II[B)V
@@ -107907,7 +101220,6 @@
Lcom/android/internal/widget/VerifyCredentialResponse;->setTimeout(I)V
Lcom/android/internal/widget/VerifyCredentialResponse;->stripPayload()Lcom/android/internal/widget/VerifyCredentialResponse;
Lcom/android/internal/widget/VerifyCredentialResponse;->TAG:Ljava/lang/String;
-Lcom/android/okhttp/Address;
Lcom/android/okhttp/Address;-><init>(Ljava/lang/String;ILcom/android/okhttp/Dns;Ljavax/net/SocketFactory;Ljavax/net/ssl/SSLSocketFactory;Ljavax/net/ssl/HostnameVerifier;Lcom/android/okhttp/CertificatePinner;Lcom/android/okhttp/Authenticator;Ljava/net/Proxy;Ljava/util/List;Ljava/util/List;Ljava/net/ProxySelector;)V
Lcom/android/okhttp/Address;->authenticator:Lcom/android/okhttp/Authenticator;
Lcom/android/okhttp/Address;->certificatePinner:Lcom/android/okhttp/CertificatePinner;
@@ -107933,7 +101245,6 @@
Lcom/android/okhttp/Address;->sslSocketFactory:Ljavax/net/ssl/SSLSocketFactory;
Lcom/android/okhttp/Address;->url()Lcom/android/okhttp/HttpUrl;
Lcom/android/okhttp/Address;->url:Lcom/android/okhttp/HttpUrl;
-Lcom/android/okhttp/AndroidShimResponseCache;
Lcom/android/okhttp/AndroidShimResponseCache;-><init>(Lcom/android/okhttp/Cache;)V
Lcom/android/okhttp/AndroidShimResponseCache;->close()V
Lcom/android/okhttp/AndroidShimResponseCache;->create(Ljava/io/File;J)Lcom/android/okhttp/AndroidShimResponseCache;
@@ -107947,18 +101258,14 @@
Lcom/android/okhttp/AndroidShimResponseCache;->isEquivalent(Ljava/io/File;J)Z
Lcom/android/okhttp/AndroidShimResponseCache;->maxSize()J
Lcom/android/okhttp/AndroidShimResponseCache;->size()J
-Lcom/android/okhttp/Authenticator;
Lcom/android/okhttp/Authenticator;->authenticate(Ljava/net/Proxy;Lcom/android/okhttp/Response;)Lcom/android/okhttp/Request;
Lcom/android/okhttp/Authenticator;->authenticateProxy(Ljava/net/Proxy;Lcom/android/okhttp/Response;)Lcom/android/okhttp/Request;
-Lcom/android/okhttp/Cache$CacheRequestImpl;
-Lcom/android/okhttp/Cache$CacheRequestImpl;-><init>(Lcom/android/okhttp/internal/DiskLruCache$Editor;)V
Lcom/android/okhttp/Cache$CacheRequestImpl;->abort()V
Lcom/android/okhttp/Cache$CacheRequestImpl;->body()Lcom/android/okhttp/okio/Sink;
Lcom/android/okhttp/Cache$CacheRequestImpl;->body:Lcom/android/okhttp/okio/Sink;
Lcom/android/okhttp/Cache$CacheRequestImpl;->cacheOut:Lcom/android/okhttp/okio/Sink;
Lcom/android/okhttp/Cache$CacheRequestImpl;->done:Z
Lcom/android/okhttp/Cache$CacheRequestImpl;->editor:Lcom/android/okhttp/internal/DiskLruCache$Editor;
-Lcom/android/okhttp/Cache$CacheResponseBody;
Lcom/android/okhttp/Cache$CacheResponseBody;-><init>(Lcom/android/okhttp/internal/DiskLruCache$Snapshot;Ljava/lang/String;Ljava/lang/String;)V
Lcom/android/okhttp/Cache$CacheResponseBody;->bodySource:Lcom/android/okhttp/okio/BufferedSource;
Lcom/android/okhttp/Cache$CacheResponseBody;->contentLength()J
@@ -107967,7 +101274,6 @@
Lcom/android/okhttp/Cache$CacheResponseBody;->contentType:Ljava/lang/String;
Lcom/android/okhttp/Cache$CacheResponseBody;->snapshot:Lcom/android/okhttp/internal/DiskLruCache$Snapshot;
Lcom/android/okhttp/Cache$CacheResponseBody;->source()Lcom/android/okhttp/okio/BufferedSource;
-Lcom/android/okhttp/Cache$Entry;
Lcom/android/okhttp/Cache$Entry;-><init>(Lcom/android/okhttp/okio/Source;)V
Lcom/android/okhttp/Cache$Entry;-><init>(Lcom/android/okhttp/Response;)V
Lcom/android/okhttp/Cache$Entry;->code:I
@@ -107984,7 +101290,6 @@
Lcom/android/okhttp/Cache$Entry;->varyHeaders:Lcom/android/okhttp/Headers;
Lcom/android/okhttp/Cache$Entry;->writeCertList(Lcom/android/okhttp/okio/BufferedSink;Ljava/util/List;)V
Lcom/android/okhttp/Cache$Entry;->writeTo(Lcom/android/okhttp/internal/DiskLruCache$Editor;)V
-Lcom/android/okhttp/Cache;
Lcom/android/okhttp/Cache;-><init>(Ljava/io/File;J)V
Lcom/android/okhttp/Cache;-><init>(Ljava/io/File;JLcom/android/okhttp/internal/io/FileSystem;)V
Lcom/android/okhttp/Cache;->abortQuietly(Lcom/android/okhttp/internal/DiskLruCache$Editor;)V
@@ -108022,7 +101327,6 @@
Lcom/android/okhttp/Cache;->VERSION:I
Lcom/android/okhttp/Cache;->writeAbortCount:I
Lcom/android/okhttp/Cache;->writeSuccessCount:I
-Lcom/android/okhttp/CacheControl$Builder;
Lcom/android/okhttp/CacheControl$Builder;-><init>()V
Lcom/android/okhttp/CacheControl$Builder;->build()Lcom/android/okhttp/CacheControl;
Lcom/android/okhttp/CacheControl$Builder;->maxAge(ILjava/util/concurrent/TimeUnit;)Lcom/android/okhttp/CacheControl$Builder;
@@ -108039,7 +101343,6 @@
Lcom/android/okhttp/CacheControl$Builder;->noTransform:Z
Lcom/android/okhttp/CacheControl$Builder;->onlyIfCached()Lcom/android/okhttp/CacheControl$Builder;
Lcom/android/okhttp/CacheControl$Builder;->onlyIfCached:Z
-Lcom/android/okhttp/CacheControl;
Lcom/android/okhttp/CacheControl;-><init>(Lcom/android/okhttp/CacheControl$Builder;)V
Lcom/android/okhttp/CacheControl;-><init>(ZZIIZZZIIZZLjava/lang/String;)V
Lcom/android/okhttp/CacheControl;->FORCE_CACHE:Lcom/android/okhttp/CacheControl;
@@ -108069,16 +101372,12 @@
Lcom/android/okhttp/CacheControl;->parse(Lcom/android/okhttp/Headers;)Lcom/android/okhttp/CacheControl;
Lcom/android/okhttp/CacheControl;->sMaxAgeSeconds()I
Lcom/android/okhttp/CacheControl;->sMaxAgeSeconds:I
-Lcom/android/okhttp/Call$ApplicationInterceptorChain;
-Lcom/android/okhttp/Call$ApplicationInterceptorChain;-><init>(ILcom/android/okhttp/Request;Z)V
Lcom/android/okhttp/Call$ApplicationInterceptorChain;->connection()Lcom/android/okhttp/Connection;
Lcom/android/okhttp/Call$ApplicationInterceptorChain;->forWebSocket:Z
Lcom/android/okhttp/Call$ApplicationInterceptorChain;->index:I
Lcom/android/okhttp/Call$ApplicationInterceptorChain;->proceed(Lcom/android/okhttp/Request;)Lcom/android/okhttp/Response;
Lcom/android/okhttp/Call$ApplicationInterceptorChain;->request()Lcom/android/okhttp/Request;
Lcom/android/okhttp/Call$ApplicationInterceptorChain;->request:Lcom/android/okhttp/Request;
-Lcom/android/okhttp/Call$AsyncCall;
-Lcom/android/okhttp/Call$AsyncCall;-><init>(Lcom/android/okhttp/Callback;Z)V
Lcom/android/okhttp/Call$AsyncCall;->cancel()V
Lcom/android/okhttp/Call$AsyncCall;->execute()V
Lcom/android/okhttp/Call$AsyncCall;->forWebSocket:Z
@@ -108087,7 +101386,6 @@
Lcom/android/okhttp/Call$AsyncCall;->request()Lcom/android/okhttp/Request;
Lcom/android/okhttp/Call$AsyncCall;->responseCallback:Lcom/android/okhttp/Callback;
Lcom/android/okhttp/Call$AsyncCall;->tag()Ljava/lang/Object;
-Lcom/android/okhttp/Call;
Lcom/android/okhttp/Call;-><init>(Lcom/android/okhttp/OkHttpClient;Lcom/android/okhttp/Request;)V
Lcom/android/okhttp/Call;->cancel()V
Lcom/android/okhttp/Call;->canceled:Z
@@ -108104,31 +101402,23 @@
Lcom/android/okhttp/Call;->originalRequest:Lcom/android/okhttp/Request;
Lcom/android/okhttp/Call;->tag()Ljava/lang/Object;
Lcom/android/okhttp/Call;->toLoggableString()Ljava/lang/String;
-Lcom/android/okhttp/Callback;
Lcom/android/okhttp/Callback;->onFailure(Lcom/android/okhttp/Request;Ljava/io/IOException;)V
Lcom/android/okhttp/Callback;->onResponse(Lcom/android/okhttp/Response;)V
-Lcom/android/okhttp/CertificatePinner$Builder;
Lcom/android/okhttp/CertificatePinner$Builder;-><init>()V
-Lcom/android/okhttp/CertificatePinner$Builder;->add(Ljava/lang/String;[[Ljava/lang/String;)Lcom/android/okhttp/CertificatePinner$Builder;
Lcom/android/okhttp/CertificatePinner$Builder;->build()Lcom/android/okhttp/CertificatePinner;
Lcom/android/okhttp/CertificatePinner$Builder;->hostnameToPins:Ljava/util/Map;
-Lcom/android/okhttp/CertificatePinner;
Lcom/android/okhttp/CertificatePinner;-><init>(Lcom/android/okhttp/CertificatePinner$Builder;)V
Lcom/android/okhttp/CertificatePinner;->check(Ljava/lang/String;Ljava/util/List;)V
-Lcom/android/okhttp/CertificatePinner;->check(Ljava/lang/String;[[Ljava/security/cert/Certificate;)V
Lcom/android/okhttp/CertificatePinner;->DEFAULT:Lcom/android/okhttp/CertificatePinner;
Lcom/android/okhttp/CertificatePinner;->findMatchingPins(Ljava/lang/String;)Ljava/util/Set;
Lcom/android/okhttp/CertificatePinner;->hostnameToPins:Ljava/util/Map;
Lcom/android/okhttp/CertificatePinner;->pin(Ljava/security/cert/Certificate;)Ljava/lang/String;
Lcom/android/okhttp/CertificatePinner;->sha1(Ljava/security/cert/X509Certificate;)Lcom/android/okhttp/okio/ByteString;
-Lcom/android/okhttp/Challenge;
Lcom/android/okhttp/Challenge;-><init>(Ljava/lang/String;Ljava/lang/String;)V
Lcom/android/okhttp/Challenge;->getRealm()Ljava/lang/String;
Lcom/android/okhttp/Challenge;->getScheme()Ljava/lang/String;
Lcom/android/okhttp/Challenge;->realm:Ljava/lang/String;
Lcom/android/okhttp/Challenge;->scheme:Ljava/lang/String;
-Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;-><init>(Ljava/lang/String;IIII)V
Lcom/android/okhttp/CipherSuite;->forJavaName(Ljava/lang/String;)Lcom/android/okhttp/CipherSuite;
Lcom/android/okhttp/CipherSuite;->javaName:Ljava/lang/String;
Lcom/android/okhttp/CipherSuite;->TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA:Lcom/android/okhttp/CipherSuite;
@@ -108229,11 +101519,9 @@
Lcom/android/okhttp/CipherSuite;->TLS_RSA_WITH_RC4_128_SHA:Lcom/android/okhttp/CipherSuite;
Lcom/android/okhttp/CipherSuite;->valueOf(Ljava/lang/String;)Lcom/android/okhttp/CipherSuite;
Lcom/android/okhttp/CipherSuite;->values()[Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/Connection;
Lcom/android/okhttp/Connection;->getHandshake()Lcom/android/okhttp/Handshake;
Lcom/android/okhttp/Connection;->getProtocol()Lcom/android/okhttp/Protocol;
Lcom/android/okhttp/Connection;->getRoute()Lcom/android/okhttp/Route;
-Lcom/android/okhttp/ConnectionPool;
Lcom/android/okhttp/ConnectionPool;-><init>(IJ)V
Lcom/android/okhttp/ConnectionPool;-><init>(IJLjava/util/concurrent/TimeUnit;)V
Lcom/android/okhttp/ConnectionPool;->cleanup(J)J
@@ -108253,22 +101541,16 @@
Lcom/android/okhttp/ConnectionPool;->put(Lcom/android/okhttp/internal/io/RealConnection;)V
Lcom/android/okhttp/ConnectionPool;->routeDatabase:Lcom/android/okhttp/internal/RouteDatabase;
Lcom/android/okhttp/ConnectionPool;->setCleanupRunnableForTest(Ljava/lang/Runnable;)V
-Lcom/android/okhttp/ConnectionSpec$Builder;
Lcom/android/okhttp/ConnectionSpec$Builder;-><init>(Lcom/android/okhttp/ConnectionSpec;)V
Lcom/android/okhttp/ConnectionSpec$Builder;-><init>(Z)V
Lcom/android/okhttp/ConnectionSpec$Builder;->allEnabledCipherSuites()Lcom/android/okhttp/ConnectionSpec$Builder;
Lcom/android/okhttp/ConnectionSpec$Builder;->allEnabledTlsVersions()Lcom/android/okhttp/ConnectionSpec$Builder;
Lcom/android/okhttp/ConnectionSpec$Builder;->build()Lcom/android/okhttp/ConnectionSpec;
-Lcom/android/okhttp/ConnectionSpec$Builder;->cipherSuites([[Lcom/android/okhttp/CipherSuite;)Lcom/android/okhttp/ConnectionSpec$Builder;
-Lcom/android/okhttp/ConnectionSpec$Builder;->cipherSuites([[Ljava/lang/String;)Lcom/android/okhttp/ConnectionSpec$Builder;
Lcom/android/okhttp/ConnectionSpec$Builder;->cipherSuites:[Ljava/lang/String;
Lcom/android/okhttp/ConnectionSpec$Builder;->supportsTlsExtensions(Z)Lcom/android/okhttp/ConnectionSpec$Builder;
Lcom/android/okhttp/ConnectionSpec$Builder;->supportsTlsExtensions:Z
Lcom/android/okhttp/ConnectionSpec$Builder;->tls:Z
-Lcom/android/okhttp/ConnectionSpec$Builder;->tlsVersions([[Lcom/android/okhttp/TlsVersion;)Lcom/android/okhttp/ConnectionSpec$Builder;
-Lcom/android/okhttp/ConnectionSpec$Builder;->tlsVersions([[Ljava/lang/String;)Lcom/android/okhttp/ConnectionSpec$Builder;
Lcom/android/okhttp/ConnectionSpec$Builder;->tlsVersions:[Ljava/lang/String;
-Lcom/android/okhttp/ConnectionSpec;
Lcom/android/okhttp/ConnectionSpec;-><init>(Lcom/android/okhttp/ConnectionSpec$Builder;)V
Lcom/android/okhttp/ConnectionSpec;->apply(Ljavax/net/ssl/SSLSocket;Z)V
Lcom/android/okhttp/ConnectionSpec;->APPROVED_CIPHER_SUITES:[Lcom/android/okhttp/CipherSuite;
@@ -108286,7 +101568,6 @@
Lcom/android/okhttp/ConnectionSpec;->tls:Z
Lcom/android/okhttp/ConnectionSpec;->tlsVersions()Ljava/util/List;
Lcom/android/okhttp/ConnectionSpec;->tlsVersions:[Ljava/lang/String;
-Lcom/android/okhttp/Dispatcher;
Lcom/android/okhttp/Dispatcher;-><init>()V
Lcom/android/okhttp/Dispatcher;-><init>(Ljava/util/concurrent/ExecutorService;)V
Lcom/android/okhttp/Dispatcher;->cancel(Ljava/lang/Object;)V
@@ -108309,10 +101590,8 @@
Lcom/android/okhttp/Dispatcher;->runningCallsForHost(Lcom/android/okhttp/Call$AsyncCall;)I
Lcom/android/okhttp/Dispatcher;->setMaxRequests(I)V
Lcom/android/okhttp/Dispatcher;->setMaxRequestsPerHost(I)V
-Lcom/android/okhttp/Dns;
Lcom/android/okhttp/Dns;->lookup(Ljava/lang/String;)Ljava/util/List;
Lcom/android/okhttp/Dns;->SYSTEM:Lcom/android/okhttp/Dns;
-Lcom/android/okhttp/Handshake;
Lcom/android/okhttp/Handshake;-><init>(Ljava/lang/String;Ljava/util/List;Ljava/util/List;)V
Lcom/android/okhttp/Handshake;->cipherSuite()Ljava/lang/String;
Lcom/android/okhttp/Handshake;->cipherSuite:Ljava/lang/String;
@@ -108324,7 +101603,6 @@
Lcom/android/okhttp/Handshake;->peerCertificates()Ljava/util/List;
Lcom/android/okhttp/Handshake;->peerCertificates:Ljava/util/List;
Lcom/android/okhttp/Handshake;->peerPrincipal()Ljava/security/Principal;
-Lcom/android/okhttp/Headers$Builder;
Lcom/android/okhttp/Headers$Builder;-><init>()V
Lcom/android/okhttp/Headers$Builder;->add(Ljava/lang/String;)Lcom/android/okhttp/Headers$Builder;
Lcom/android/okhttp/Headers$Builder;->add(Ljava/lang/String;Ljava/lang/String;)Lcom/android/okhttp/Headers$Builder;
@@ -108336,7 +101614,6 @@
Lcom/android/okhttp/Headers$Builder;->namesAndValues:Ljava/util/List;
Lcom/android/okhttp/Headers$Builder;->removeAll(Ljava/lang/String;)Lcom/android/okhttp/Headers$Builder;
Lcom/android/okhttp/Headers$Builder;->set(Ljava/lang/String;Ljava/lang/String;)Lcom/android/okhttp/Headers$Builder;
-Lcom/android/okhttp/Headers;
Lcom/android/okhttp/Headers;-><init>(Lcom/android/okhttp/Headers$Builder;)V
Lcom/android/okhttp/Headers;-><init>([Ljava/lang/String;)V
Lcom/android/okhttp/Headers;->get(Ljava/lang/String;)Ljava/lang/String;
@@ -108347,13 +101624,10 @@
Lcom/android/okhttp/Headers;->namesAndValues:[Ljava/lang/String;
Lcom/android/okhttp/Headers;->newBuilder()Lcom/android/okhttp/Headers$Builder;
Lcom/android/okhttp/Headers;->of(Ljava/util/Map;)Lcom/android/okhttp/Headers;
-Lcom/android/okhttp/Headers;->of([[Ljava/lang/String;)Lcom/android/okhttp/Headers;
Lcom/android/okhttp/Headers;->size()I
Lcom/android/okhttp/Headers;->toMultimap()Ljava/util/Map;
Lcom/android/okhttp/Headers;->value(I)Ljava/lang/String;
Lcom/android/okhttp/Headers;->values(Ljava/lang/String;)Ljava/util/List;
-Lcom/android/okhttp/HttpUrl$Builder$ParseResult;
-Lcom/android/okhttp/HttpUrl$Builder$ParseResult;-><init>()V
Lcom/android/okhttp/HttpUrl$Builder$ParseResult;->INVALID_HOST:Lcom/android/okhttp/HttpUrl$Builder$ParseResult;
Lcom/android/okhttp/HttpUrl$Builder$ParseResult;->INVALID_PORT:Lcom/android/okhttp/HttpUrl$Builder$ParseResult;
Lcom/android/okhttp/HttpUrl$Builder$ParseResult;->MISSING_SCHEME:Lcom/android/okhttp/HttpUrl$Builder$ParseResult;
@@ -108361,7 +101635,6 @@
Lcom/android/okhttp/HttpUrl$Builder$ParseResult;->UNSUPPORTED_SCHEME:Lcom/android/okhttp/HttpUrl$Builder$ParseResult;
Lcom/android/okhttp/HttpUrl$Builder$ParseResult;->valueOf(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder$ParseResult;
Lcom/android/okhttp/HttpUrl$Builder$ParseResult;->values()[Lcom/android/okhttp/HttpUrl$Builder$ParseResult;
-Lcom/android/okhttp/HttpUrl$Builder;
Lcom/android/okhttp/HttpUrl$Builder;-><init>()V
Lcom/android/okhttp/HttpUrl$Builder;->addEncodedPathSegment(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder;
Lcom/android/okhttp/HttpUrl$Builder;->addEncodedQueryParameter(Ljava/lang/String;Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder;
@@ -108415,7 +101688,6 @@
Lcom/android/okhttp/HttpUrl$Builder;->skipTrailingAsciiWhitespace(Ljava/lang/String;II)I
Lcom/android/okhttp/HttpUrl$Builder;->slashCount(Ljava/lang/String;II)I
Lcom/android/okhttp/HttpUrl$Builder;->username(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder;
-Lcom/android/okhttp/HttpUrl;
Lcom/android/okhttp/HttpUrl;-><init>(Lcom/android/okhttp/HttpUrl$Builder;)V
Lcom/android/okhttp/HttpUrl;->canonicalize(Lcom/android/okhttp/okio/Buffer;Ljava/lang/String;IILjava/lang/String;ZZZZ)V
Lcom/android/okhttp/HttpUrl;->canonicalize(Ljava/lang/String;IILjava/lang/String;ZZZZ)Ljava/lang/String;
@@ -108477,16 +101749,12 @@
Lcom/android/okhttp/HttpUrl;->username()Ljava/lang/String;
Lcom/android/okhttp/HttpUrl;->username:Ljava/lang/String;
Lcom/android/okhttp/HttpUrl;->USERNAME_ENCODE_SET:Ljava/lang/String;
-Lcom/android/okhttp/Interceptor$Chain;
Lcom/android/okhttp/Interceptor$Chain;->connection()Lcom/android/okhttp/Connection;
Lcom/android/okhttp/Interceptor$Chain;->proceed(Lcom/android/okhttp/Request;)Lcom/android/okhttp/Response;
Lcom/android/okhttp/Interceptor$Chain;->request()Lcom/android/okhttp/Request;
-Lcom/android/okhttp/Interceptor;
Lcom/android/okhttp/Interceptor;->intercept(Lcom/android/okhttp/Interceptor$Chain;)Lcom/android/okhttp/Response;
-Lcom/android/okhttp/internal/http/CacheRequest;
Lcom/android/okhttp/internal/http/CacheRequest;->abort()V
Lcom/android/okhttp/internal/http/CacheRequest;->body()Lcom/android/okhttp/okio/Sink;
-Lcom/android/okhttp/internal/http/CacheStrategy$Factory;
Lcom/android/okhttp/internal/http/CacheStrategy$Factory;-><init>(JLcom/android/okhttp/Request;Lcom/android/okhttp/Response;)V
Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->ageSeconds:I
Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->cacheResponse:Lcom/android/okhttp/Response;
@@ -108506,20 +101774,16 @@
Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->sentRequestMillis:J
Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->servedDate:Ljava/util/Date;
Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->servedDateString:Ljava/lang/String;
-Lcom/android/okhttp/internal/http/CacheStrategy;
Lcom/android/okhttp/internal/http/CacheStrategy;-><init>(Lcom/android/okhttp/Request;Lcom/android/okhttp/Response;)V
Lcom/android/okhttp/internal/http/CacheStrategy;->cacheResponse:Lcom/android/okhttp/Response;
Lcom/android/okhttp/internal/http/CacheStrategy;->isCacheable(Lcom/android/okhttp/Response;Lcom/android/okhttp/Request;)Z
Lcom/android/okhttp/internal/http/CacheStrategy;->networkRequest:Lcom/android/okhttp/Request;
-Lcom/android/okhttp/internal/http/HttpEngine$NetworkInterceptorChain;
-Lcom/android/okhttp/internal/http/HttpEngine$NetworkInterceptorChain;-><init>(ILcom/android/okhttp/Request;)V
Lcom/android/okhttp/internal/http/HttpEngine$NetworkInterceptorChain;->calls:I
Lcom/android/okhttp/internal/http/HttpEngine$NetworkInterceptorChain;->connection()Lcom/android/okhttp/Connection;
Lcom/android/okhttp/internal/http/HttpEngine$NetworkInterceptorChain;->index:I
Lcom/android/okhttp/internal/http/HttpEngine$NetworkInterceptorChain;->proceed(Lcom/android/okhttp/Request;)Lcom/android/okhttp/Response;
Lcom/android/okhttp/internal/http/HttpEngine$NetworkInterceptorChain;->request()Lcom/android/okhttp/Request;
Lcom/android/okhttp/internal/http/HttpEngine$NetworkInterceptorChain;->request:Lcom/android/okhttp/Request;
-Lcom/android/okhttp/internal/http/HttpEngine;
Lcom/android/okhttp/internal/http/HttpEngine;-><init>(Lcom/android/okhttp/OkHttpClient;Lcom/android/okhttp/Request;ZZZLcom/android/okhttp/internal/http/StreamAllocation;Lcom/android/okhttp/internal/http/RetryableSink;Lcom/android/okhttp/Response;)V
Lcom/android/okhttp/internal/http/HttpEngine;->bufferedRequestBody:Lcom/android/okhttp/okio/BufferedSink;
Lcom/android/okhttp/internal/http/HttpEngine;->bufferRequestBody:Z
@@ -108559,7 +101823,6 @@
Lcom/android/okhttp/internal/http/HttpEngine;->unzip(Lcom/android/okhttp/Response;)Lcom/android/okhttp/Response;
Lcom/android/okhttp/internal/http/HttpEngine;->userRequest:Lcom/android/okhttp/Request;
Lcom/android/okhttp/internal/http/HttpEngine;->validate(Lcom/android/okhttp/Response;Lcom/android/okhttp/Response;)Z
-Lcom/android/okhttp/internal/http/HttpStream;
Lcom/android/okhttp/internal/http/HttpStream;->cancel()V
Lcom/android/okhttp/internal/http/HttpStream;->createRequestBody(Lcom/android/okhttp/Request;J)Lcom/android/okhttp/okio/Sink;
Lcom/android/okhttp/internal/http/HttpStream;->DISCARD_STREAM_TIMEOUT_MILLIS:I
@@ -108569,9 +101832,7 @@
Lcom/android/okhttp/internal/http/HttpStream;->setHttpEngine(Lcom/android/okhttp/internal/http/HttpEngine;)V
Lcom/android/okhttp/internal/http/HttpStream;->writeRequestBody(Lcom/android/okhttp/internal/http/RetryableSink;)V
Lcom/android/okhttp/internal/http/HttpStream;->writeRequestHeaders(Lcom/android/okhttp/Request;)V
-Lcom/android/okhttp/internal/http/RequestException;
Lcom/android/okhttp/internal/http/RequestException;-><init>(Ljava/io/IOException;)V
-Lcom/android/okhttp/internal/http/RetryableSink;
Lcom/android/okhttp/internal/http/RetryableSink;-><init>()V
Lcom/android/okhttp/internal/http/RetryableSink;-><init>(I)V
Lcom/android/okhttp/internal/http/RetryableSink;->closed:Z
@@ -108581,14 +101842,12 @@
Lcom/android/okhttp/internal/http/RetryableSink;->timeout()Lcom/android/okhttp/okio/Timeout;
Lcom/android/okhttp/internal/http/RetryableSink;->write(Lcom/android/okhttp/okio/Buffer;J)V
Lcom/android/okhttp/internal/http/RetryableSink;->writeToSocket(Lcom/android/okhttp/okio/Sink;)V
-Lcom/android/okhttp/internal/http/RouteException;
Lcom/android/okhttp/internal/http/RouteException;-><init>(Ljava/io/IOException;)V
Lcom/android/okhttp/internal/http/RouteException;->addConnectException(Ljava/io/IOException;)V
Lcom/android/okhttp/internal/http/RouteException;->addSuppressedExceptionMethod:Ljava/lang/reflect/Method;
Lcom/android/okhttp/internal/http/RouteException;->addSuppressedIfPossible(Ljava/io/IOException;Ljava/io/IOException;)V
Lcom/android/okhttp/internal/http/RouteException;->getLastConnectException()Ljava/io/IOException;
Lcom/android/okhttp/internal/http/RouteException;->lastException:Ljava/io/IOException;
-Lcom/android/okhttp/internal/http/RouteSelector;
Lcom/android/okhttp/internal/http/RouteSelector;-><init>(Lcom/android/okhttp/Address;Lcom/android/okhttp/internal/RouteDatabase;)V
Lcom/android/okhttp/internal/http/RouteSelector;->address:Lcom/android/okhttp/Address;
Lcom/android/okhttp/internal/http/RouteSelector;->connectFailed(Lcom/android/okhttp/Route;Ljava/io/IOException;)V
@@ -108610,7 +101869,6 @@
Lcom/android/okhttp/internal/http/RouteSelector;->resetNextInetSocketAddress(Ljava/net/Proxy;)V
Lcom/android/okhttp/internal/http/RouteSelector;->resetNextProxy(Lcom/android/okhttp/HttpUrl;Ljava/net/Proxy;)V
Lcom/android/okhttp/internal/http/RouteSelector;->routeDatabase:Lcom/android/okhttp/internal/RouteDatabase;
-Lcom/android/okhttp/internal/http/StreamAllocation;
Lcom/android/okhttp/internal/http/StreamAllocation;-><init>(Lcom/android/okhttp/ConnectionPool;Lcom/android/okhttp/Address;)V
Lcom/android/okhttp/internal/http/StreamAllocation;->acquire(Lcom/android/okhttp/internal/io/RealConnection;)V
Lcom/android/okhttp/internal/http/StreamAllocation;->address:Lcom/android/okhttp/Address;
@@ -108638,7 +101896,6 @@
Lcom/android/okhttp/internal/http/StreamAllocation;->stream()Lcom/android/okhttp/internal/http/HttpStream;
Lcom/android/okhttp/internal/http/StreamAllocation;->stream:Lcom/android/okhttp/internal/http/HttpStream;
Lcom/android/okhttp/internal/http/StreamAllocation;->streamFinished(Lcom/android/okhttp/internal/http/HttpStream;)V
-Lcom/android/okhttp/MediaType;
Lcom/android/okhttp/MediaType;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
Lcom/android/okhttp/MediaType;->charset()Ljava/nio/charset/Charset;
Lcom/android/okhttp/MediaType;->charset(Ljava/nio/charset/Charset;)Ljava/nio/charset/Charset;
@@ -108653,9 +101910,7 @@
Lcom/android/okhttp/MediaType;->type()Ljava/lang/String;
Lcom/android/okhttp/MediaType;->type:Ljava/lang/String;
Lcom/android/okhttp/MediaType;->TYPE_SUBTYPE:Ljava/util/regex/Pattern;
-Lcom/android/okhttp/OkCacheContainer;
Lcom/android/okhttp/OkCacheContainer;->getCache()Lcom/android/okhttp/Cache;
-Lcom/android/okhttp/OkHttpClient;
Lcom/android/okhttp/OkHttpClient;-><init>(Lcom/android/okhttp/OkHttpClient;)V
Lcom/android/okhttp/OkHttpClient;->authenticator:Lcom/android/okhttp/Authenticator;
Lcom/android/okhttp/OkHttpClient;->cache:Lcom/android/okhttp/Cache;
@@ -108722,9 +101977,7 @@
Lcom/android/okhttp/OkHttpClient;->socketFactory:Ljavax/net/SocketFactory;
Lcom/android/okhttp/OkHttpClient;->sslSocketFactory:Ljavax/net/ssl/SSLSocketFactory;
Lcom/android/okhttp/OkHttpClient;->writeTimeout:I
-Lcom/android/okhttp/okio/AsyncTimeout$Watchdog;
Lcom/android/okhttp/okio/AsyncTimeout$Watchdog;-><init>()V
-Lcom/android/okhttp/okio/AsyncTimeout;
Lcom/android/okhttp/okio/AsyncTimeout;-><init>()V
Lcom/android/okhttp/okio/AsyncTimeout;->awaitTimeout()Lcom/android/okhttp/okio/AsyncTimeout;
Lcom/android/okhttp/okio/AsyncTimeout;->cancelScheduledTimeout(Lcom/android/okhttp/okio/AsyncTimeout;)Z
@@ -108742,7 +101995,6 @@
Lcom/android/okhttp/okio/AsyncTimeout;->source(Lcom/android/okhttp/okio/Source;)Lcom/android/okhttp/okio/Source;
Lcom/android/okhttp/okio/AsyncTimeout;->timedOut()V
Lcom/android/okhttp/okio/AsyncTimeout;->timeoutAt:J
-Lcom/android/okhttp/okio/Buffer;
Lcom/android/okhttp/okio/Buffer;-><init>()V
Lcom/android/okhttp/okio/Buffer;->buffer()Lcom/android/okhttp/okio/Buffer;
Lcom/android/okhttp/okio/Buffer;->clear()V
@@ -108846,7 +102098,6 @@
Lcom/android/okhttp/okio/Buffer;->writeUtf8(Ljava/lang/String;II)Lcom/android/okhttp/okio/BufferedSink;
Lcom/android/okhttp/okio/Buffer;->writeUtf8CodePoint(I)Lcom/android/okhttp/okio/Buffer;
Lcom/android/okhttp/okio/Buffer;->writeUtf8CodePoint(I)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/BufferedSink;
Lcom/android/okhttp/okio/BufferedSink;->buffer()Lcom/android/okhttp/okio/Buffer;
Lcom/android/okhttp/okio/BufferedSink;->emit()Lcom/android/okhttp/okio/BufferedSink;
Lcom/android/okhttp/okio/BufferedSink;->emitCompleteSegments()Lcom/android/okhttp/okio/BufferedSink;
@@ -108870,7 +102121,6 @@
Lcom/android/okhttp/okio/BufferedSink;->writeUtf8(Ljava/lang/String;)Lcom/android/okhttp/okio/BufferedSink;
Lcom/android/okhttp/okio/BufferedSink;->writeUtf8(Ljava/lang/String;II)Lcom/android/okhttp/okio/BufferedSink;
Lcom/android/okhttp/okio/BufferedSink;->writeUtf8CodePoint(I)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/BufferedSource;
Lcom/android/okhttp/okio/BufferedSource;->buffer()Lcom/android/okhttp/okio/Buffer;
Lcom/android/okhttp/okio/BufferedSource;->exhausted()Z
Lcom/android/okhttp/okio/BufferedSource;->indexOf(B)J
@@ -108908,7 +102158,6 @@
Lcom/android/okhttp/okio/BufferedSource;->request(J)Z
Lcom/android/okhttp/okio/BufferedSource;->require(J)V
Lcom/android/okhttp/okio/BufferedSource;->skip(J)V
-Lcom/android/okhttp/okio/ByteString;
Lcom/android/okhttp/okio/ByteString;-><init>([B)V
Lcom/android/okhttp/okio/ByteString;->base64()Ljava/lang/String;
Lcom/android/okhttp/okio/ByteString;->base64Url()Ljava/lang/String;
@@ -108927,7 +102176,6 @@
Lcom/android/okhttp/okio/ByteString;->HEX_DIGITS:[C
Lcom/android/okhttp/okio/ByteString;->md5()Lcom/android/okhttp/okio/ByteString;
Lcom/android/okhttp/okio/ByteString;->of([BII)Lcom/android/okhttp/okio/ByteString;
-Lcom/android/okhttp/okio/ByteString;->of([[B)Lcom/android/okhttp/okio/ByteString;
Lcom/android/okhttp/okio/ByteString;->rangeEquals(ILcom/android/okhttp/okio/ByteString;II)Z
Lcom/android/okhttp/okio/ByteString;->rangeEquals(I[BII)Z
Lcom/android/okhttp/okio/ByteString;->read(Ljava/io/InputStream;I)Lcom/android/okhttp/okio/ByteString;
@@ -108942,7 +102190,6 @@
Lcom/android/okhttp/okio/ByteString;->utf8:Ljava/lang/String;
Lcom/android/okhttp/okio/ByteString;->write(Lcom/android/okhttp/okio/Buffer;)V
Lcom/android/okhttp/okio/ByteString;->write(Ljava/io/OutputStream;)V
-Lcom/android/okhttp/okio/Segment;
Lcom/android/okhttp/okio/Segment;-><init>()V
Lcom/android/okhttp/okio/Segment;-><init>(Lcom/android/okhttp/okio/Segment;)V
Lcom/android/okhttp/okio/Segment;-><init>([BII)V
@@ -108959,13 +102206,10 @@
Lcom/android/okhttp/okio/Segment;->SIZE:I
Lcom/android/okhttp/okio/Segment;->split(I)Lcom/android/okhttp/okio/Segment;
Lcom/android/okhttp/okio/Segment;->writeTo(Lcom/android/okhttp/okio/Segment;I)V
-Lcom/android/okhttp/okio/Sink;
Lcom/android/okhttp/okio/Sink;->timeout()Lcom/android/okhttp/okio/Timeout;
Lcom/android/okhttp/okio/Sink;->write(Lcom/android/okhttp/okio/Buffer;J)V
-Lcom/android/okhttp/okio/Source;
Lcom/android/okhttp/okio/Source;->read(Lcom/android/okhttp/okio/Buffer;J)J
Lcom/android/okhttp/okio/Source;->timeout()Lcom/android/okhttp/okio/Timeout;
-Lcom/android/okhttp/okio/Timeout;
Lcom/android/okhttp/okio/Timeout;-><init>()V
Lcom/android/okhttp/okio/Timeout;->clearDeadline()Lcom/android/okhttp/okio/Timeout;
Lcom/android/okhttp/okio/Timeout;->clearTimeout()Lcom/android/okhttp/okio/Timeout;
@@ -108980,8 +102224,6 @@
Lcom/android/okhttp/okio/Timeout;->timeout(JLjava/util/concurrent/TimeUnit;)Lcom/android/okhttp/okio/Timeout;
Lcom/android/okhttp/okio/Timeout;->timeoutNanos()J
Lcom/android/okhttp/okio/Timeout;->timeoutNanos:J
-Lcom/android/okhttp/Protocol;
-Lcom/android/okhttp/Protocol;-><init>(Ljava/lang/String;)V
Lcom/android/okhttp/Protocol;->get(Ljava/lang/String;)Lcom/android/okhttp/Protocol;
Lcom/android/okhttp/Protocol;->HTTP_1_0:Lcom/android/okhttp/Protocol;
Lcom/android/okhttp/Protocol;->HTTP_1_1:Lcom/android/okhttp/Protocol;
@@ -108990,7 +102232,6 @@
Lcom/android/okhttp/Protocol;->SPDY_3:Lcom/android/okhttp/Protocol;
Lcom/android/okhttp/Protocol;->valueOf(Ljava/lang/String;)Lcom/android/okhttp/Protocol;
Lcom/android/okhttp/Protocol;->values()[Lcom/android/okhttp/Protocol;
-Lcom/android/okhttp/Request$Builder;
Lcom/android/okhttp/Request$Builder;-><init>()V
Lcom/android/okhttp/Request$Builder;-><init>(Lcom/android/okhttp/Request;)V
Lcom/android/okhttp/Request$Builder;->addHeader(Ljava/lang/String;Ljava/lang/String;)Lcom/android/okhttp/Request$Builder;
@@ -109016,7 +102257,6 @@
Lcom/android/okhttp/Request$Builder;->url(Ljava/lang/String;)Lcom/android/okhttp/Request$Builder;
Lcom/android/okhttp/Request$Builder;->url(Ljava/net/URL;)Lcom/android/okhttp/Request$Builder;
Lcom/android/okhttp/Request$Builder;->url:Lcom/android/okhttp/HttpUrl;
-Lcom/android/okhttp/Request;
Lcom/android/okhttp/Request;-><init>(Lcom/android/okhttp/Request$Builder;)V
Lcom/android/okhttp/Request;->body()Lcom/android/okhttp/RequestBody;
Lcom/android/okhttp/Request;->body:Lcom/android/okhttp/RequestBody;
@@ -109036,7 +102276,6 @@
Lcom/android/okhttp/Request;->uri()Ljava/net/URI;
Lcom/android/okhttp/Request;->url()Ljava/net/URL;
Lcom/android/okhttp/Request;->urlString()Ljava/lang/String;
-Lcom/android/okhttp/RequestBody;
Lcom/android/okhttp/RequestBody;-><init>()V
Lcom/android/okhttp/RequestBody;->contentLength()J
Lcom/android/okhttp/RequestBody;->contentType()Lcom/android/okhttp/MediaType;
@@ -109046,7 +102285,6 @@
Lcom/android/okhttp/RequestBody;->create(Lcom/android/okhttp/MediaType;[B)Lcom/android/okhttp/RequestBody;
Lcom/android/okhttp/RequestBody;->create(Lcom/android/okhttp/MediaType;[BII)Lcom/android/okhttp/RequestBody;
Lcom/android/okhttp/RequestBody;->writeTo(Lcom/android/okhttp/okio/BufferedSink;)V
-Lcom/android/okhttp/Response$Builder;
Lcom/android/okhttp/Response$Builder;-><init>()V
Lcom/android/okhttp/Response$Builder;-><init>(Lcom/android/okhttp/Response;)V
Lcom/android/okhttp/Response$Builder;->addHeader(Ljava/lang/String;Ljava/lang/String;)Lcom/android/okhttp/Response$Builder;
@@ -109075,7 +102313,6 @@
Lcom/android/okhttp/Response$Builder;->removeHeader(Ljava/lang/String;)Lcom/android/okhttp/Response$Builder;
Lcom/android/okhttp/Response$Builder;->request(Lcom/android/okhttp/Request;)Lcom/android/okhttp/Response$Builder;
Lcom/android/okhttp/Response$Builder;->request:Lcom/android/okhttp/Request;
-Lcom/android/okhttp/Response;
Lcom/android/okhttp/Response;-><init>(Lcom/android/okhttp/Response$Builder;)V
Lcom/android/okhttp/Response;->body()Lcom/android/okhttp/ResponseBody;
Lcom/android/okhttp/Response;->body:Lcom/android/okhttp/ResponseBody;
@@ -109101,7 +102338,6 @@
Lcom/android/okhttp/Response;->protocol()Lcom/android/okhttp/Protocol;
Lcom/android/okhttp/Response;->request()Lcom/android/okhttp/Request;
Lcom/android/okhttp/Response;->request:Lcom/android/okhttp/Request;
-Lcom/android/okhttp/ResponseBody;
Lcom/android/okhttp/ResponseBody;-><init>()V
Lcom/android/okhttp/ResponseBody;->bytes()[B
Lcom/android/okhttp/ResponseBody;->byteStream()Ljava/io/InputStream;
@@ -109115,7 +102351,6 @@
Lcom/android/okhttp/ResponseBody;->reader:Ljava/io/Reader;
Lcom/android/okhttp/ResponseBody;->source()Lcom/android/okhttp/okio/BufferedSource;
Lcom/android/okhttp/ResponseBody;->string()Ljava/lang/String;
-Lcom/android/okhttp/Route;
Lcom/android/okhttp/Route;-><init>(Lcom/android/okhttp/Address;Ljava/net/Proxy;Ljava/net/InetSocketAddress;)V
Lcom/android/okhttp/Route;->address:Lcom/android/okhttp/Address;
Lcom/android/okhttp/Route;->getAddress()Lcom/android/okhttp/Address;
@@ -109124,8 +102359,6 @@
Lcom/android/okhttp/Route;->inetSocketAddress:Ljava/net/InetSocketAddress;
Lcom/android/okhttp/Route;->proxy:Ljava/net/Proxy;
Lcom/android/okhttp/Route;->requiresTunnel()Z
-Lcom/android/okhttp/TlsVersion;
-Lcom/android/okhttp/TlsVersion;-><init>(Ljava/lang/String;)V
Lcom/android/okhttp/TlsVersion;->forJavaName(Ljava/lang/String;)Lcom/android/okhttp/TlsVersion;
Lcom/android/okhttp/TlsVersion;->javaName()Ljava/lang/String;
Lcom/android/okhttp/TlsVersion;->javaName:Ljava/lang/String;
@@ -109135,7 +102368,6 @@
Lcom/android/okhttp/TlsVersion;->TLS_1_2:Lcom/android/okhttp/TlsVersion;
Lcom/android/okhttp/TlsVersion;->valueOf(Ljava/lang/String;)Lcom/android/okhttp/TlsVersion;
Lcom/android/okhttp/TlsVersion;->values()[Lcom/android/okhttp/TlsVersion;
-Lcom/android/org/conscrypt/AbstractConscryptSocket;
Lcom/android/org/conscrypt/AbstractConscryptSocket;-><init>()V
Lcom/android/org/conscrypt/AbstractConscryptSocket;-><init>(Ljava/lang/String;I)V
Lcom/android/org/conscrypt/AbstractConscryptSocket;-><init>(Ljava/lang/String;ILjava/net/InetAddress;I)V
@@ -109145,11 +102377,9 @@
Lcom/android/org/conscrypt/AbstractConscryptSocket;->getTlsUnique()[B
Lcom/android/org/conscrypt/AbstractConscryptSocket;->peerInfoProvider()Lcom/android/org/conscrypt/PeerInfoProvider;
Lcom/android/org/conscrypt/AbstractConscryptSocket;->setApplicationProtocolSelector(Lcom/android/org/conscrypt/ApplicationProtocolSelector;)V
-Lcom/android/org/conscrypt/ApplicationProtocolSelector;
Lcom/android/org/conscrypt/ApplicationProtocolSelector;-><init>()V
Lcom/android/org/conscrypt/ApplicationProtocolSelector;->selectApplicationProtocol(Ljavax/net/ssl/SSLEngine;Ljava/util/List;)Ljava/lang/String;
Lcom/android/org/conscrypt/ApplicationProtocolSelector;->selectApplicationProtocol(Ljavax/net/ssl/SSLSocket;Ljava/util/List;)Ljava/lang/String;
-Lcom/android/org/conscrypt/ApplicationProtocolSelectorAdapter;
Lcom/android/org/conscrypt/ApplicationProtocolSelectorAdapter;-><init>(Ljavax/net/ssl/SSLEngine;Lcom/android/org/conscrypt/ApplicationProtocolSelector;)V
Lcom/android/org/conscrypt/ApplicationProtocolSelectorAdapter;-><init>(Ljavax/net/ssl/SSLSocket;Lcom/android/org/conscrypt/ApplicationProtocolSelector;)V
Lcom/android/org/conscrypt/ApplicationProtocolSelectorAdapter;->engine:Ljavax/net/ssl/SSLEngine;
@@ -109157,7 +102387,6 @@
Lcom/android/org/conscrypt/ApplicationProtocolSelectorAdapter;->selectApplicationProtocol([B)I
Lcom/android/org/conscrypt/ApplicationProtocolSelectorAdapter;->selector:Lcom/android/org/conscrypt/ApplicationProtocolSelector;
Lcom/android/org/conscrypt/ApplicationProtocolSelectorAdapter;->socket:Ljavax/net/ssl/SSLSocket;
-Lcom/android/org/conscrypt/CertBlacklist;
Lcom/android/org/conscrypt/CertBlacklist;-><init>(Ljava/util/Set;Ljava/util/Set;)V
Lcom/android/org/conscrypt/CertBlacklist;->closeQuietly(Ljava/io/Closeable;)V
Lcom/android/org/conscrypt/CertBlacklist;->getDefault()Lcom/android/org/conscrypt/CertBlacklist;
@@ -109175,7 +102404,6 @@
Lcom/android/org/conscrypt/CertBlacklist;->readSerialBlackList(Ljava/lang/String;)Ljava/util/Set;
Lcom/android/org/conscrypt/CertBlacklist;->serialBlacklist:Ljava/util/Set;
Lcom/android/org/conscrypt/CertBlacklist;->toHex([B)[B
-Lcom/android/org/conscrypt/CertificatePriorityComparator;
Lcom/android/org/conscrypt/CertificatePriorityComparator;-><init>()V
Lcom/android/org/conscrypt/CertificatePriorityComparator;->ALGORITHM_OID_PRIORITY_MAP:Ljava/util/Map;
Lcom/android/org/conscrypt/CertificatePriorityComparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
@@ -109192,9 +102420,7 @@
Lcom/android/org/conscrypt/CertificatePriorityComparator;->PRIORITY_SHA384:Ljava/lang/Integer;
Lcom/android/org/conscrypt/CertificatePriorityComparator;->PRIORITY_SHA512:Ljava/lang/Integer;
Lcom/android/org/conscrypt/CertificatePriorityComparator;->PRIORITY_UNKNOWN:Ljava/lang/Integer;
-Lcom/android/org/conscrypt/CertPinManager;
Lcom/android/org/conscrypt/CertPinManager;->checkChainPinning(Ljava/lang/String;Ljava/util/List;)V
-Lcom/android/org/conscrypt/ConscryptSocketBase;
Lcom/android/org/conscrypt/ConscryptSocketBase;-><init>()V
Lcom/android/org/conscrypt/ConscryptSocketBase;-><init>(Ljava/lang/String;I)V
Lcom/android/org/conscrypt/ConscryptSocketBase;-><init>(Ljava/lang/String;ILjava/net/InetAddress;I)V
@@ -109214,35 +102440,25 @@
Lcom/android/org/conscrypt/ConscryptSocketBase;->peerPort:I
Lcom/android/org/conscrypt/ConscryptSocketBase;->readTimeoutMilliseconds:I
Lcom/android/org/conscrypt/ConscryptSocketBase;->setApplicationProtocolSelector(Lcom/android/org/conscrypt/ApplicationProtocolSelectorAdapter;)V
-Lcom/android/org/conscrypt/NativeRef$EC_GROUP;
Lcom/android/org/conscrypt/NativeRef$EC_GROUP;-><init>(J)V
Lcom/android/org/conscrypt/NativeRef$EC_GROUP;->doFree(J)V
-Lcom/android/org/conscrypt/NativeRef$EC_POINT;
Lcom/android/org/conscrypt/NativeRef$EC_POINT;-><init>(J)V
Lcom/android/org/conscrypt/NativeRef$EC_POINT;->doFree(J)V
-Lcom/android/org/conscrypt/NativeRef$EVP_CIPHER_CTX;
Lcom/android/org/conscrypt/NativeRef$EVP_CIPHER_CTX;-><init>(J)V
Lcom/android/org/conscrypt/NativeRef$EVP_CIPHER_CTX;->doFree(J)V
-Lcom/android/org/conscrypt/NativeRef$EVP_MD_CTX;
Lcom/android/org/conscrypt/NativeRef$EVP_MD_CTX;-><init>(J)V
Lcom/android/org/conscrypt/NativeRef$EVP_MD_CTX;->doFree(J)V
-Lcom/android/org/conscrypt/NativeRef$EVP_PKEY;
Lcom/android/org/conscrypt/NativeRef$EVP_PKEY;-><init>(J)V
Lcom/android/org/conscrypt/NativeRef$EVP_PKEY;->doFree(J)V
-Lcom/android/org/conscrypt/NativeRef$EVP_PKEY_CTX;
Lcom/android/org/conscrypt/NativeRef$EVP_PKEY_CTX;-><init>(J)V
Lcom/android/org/conscrypt/NativeRef$EVP_PKEY_CTX;->doFree(J)V
-Lcom/android/org/conscrypt/NativeRef$HMAC_CTX;
Lcom/android/org/conscrypt/NativeRef$HMAC_CTX;-><init>(J)V
Lcom/android/org/conscrypt/NativeRef$HMAC_CTX;->doFree(J)V
-Lcom/android/org/conscrypt/NativeRef$SSL_SESSION;
Lcom/android/org/conscrypt/NativeRef$SSL_SESSION;-><init>(J)V
Lcom/android/org/conscrypt/NativeRef$SSL_SESSION;->doFree(J)V
-Lcom/android/org/conscrypt/NativeRef;
Lcom/android/org/conscrypt/NativeRef;-><init>(J)V
Lcom/android/org/conscrypt/NativeRef;->context:J
Lcom/android/org/conscrypt/NativeRef;->doFree(J)V
-Lcom/android/org/conscrypt/OpenSSLKey;
Lcom/android/org/conscrypt/OpenSSLKey;-><init>(JZ)V
Lcom/android/org/conscrypt/OpenSSLKey;->ctx:Lcom/android/org/conscrypt/NativeRef$EVP_PKEY;
Lcom/android/org/conscrypt/OpenSSLKey;->fromECPrivateKeyForTLSStackOnly(Ljava/security/PrivateKey;Ljava/security/spec/ECParameterSpec;)Lcom/android/org/conscrypt/OpenSSLKey;
@@ -109259,7 +102475,6 @@
Lcom/android/org/conscrypt/OpenSSLKey;->wrapJCAPrivateKeyForTLSStackOnly(Ljava/security/PrivateKey;Ljava/security/PublicKey;)Lcom/android/org/conscrypt/OpenSSLKey;
Lcom/android/org/conscrypt/OpenSSLKey;->wrapped:Z
Lcom/android/org/conscrypt/OpenSSLKey;->wrapPrivateKey(Ljava/security/PrivateKey;)Lcom/android/org/conscrypt/OpenSSLKey;
-Lcom/android/org/conscrypt/OpenSSLSocketImpl;
Lcom/android/org/conscrypt/OpenSSLSocketImpl;-><init>()V
Lcom/android/org/conscrypt/OpenSSLSocketImpl;-><init>(Ljava/lang/String;I)V
Lcom/android/org/conscrypt/OpenSSLSocketImpl;-><init>(Ljava/lang/String;ILjava/net/InetAddress;I)V
@@ -109267,7 +102482,6 @@
Lcom/android/org/conscrypt/OpenSSLSocketImpl;-><init>(Ljava/net/InetAddress;ILjava/net/InetAddress;I)V
Lcom/android/org/conscrypt/OpenSSLSocketImpl;-><init>(Ljava/net/Socket;Ljava/lang/String;IZ)V
Lcom/android/org/conscrypt/OpenSSLSocketImpl;->getFileDescriptor$()Ljava/io/FileDescriptor;
-Lcom/android/org/conscrypt/OpenSSLX509Certificate;
Lcom/android/org/conscrypt/OpenSSLX509Certificate;-><init>(J)V
Lcom/android/org/conscrypt/OpenSSLX509Certificate;-><init>(JLjava/util/Date;Ljava/util/Date;)V
Lcom/android/org/conscrypt/OpenSSLX509Certificate;->alternativeNameArrayToList([[Ljava/lang/Object;)Ljava/util/Collection;
@@ -109284,7 +102498,6 @@
Lcom/android/org/conscrypt/OpenSSLX509Certificate;->verifyInternal(Ljava/security/PublicKey;Ljava/lang/String;)V
Lcom/android/org/conscrypt/OpenSSLX509Certificate;->verifyOpenSSL(Lcom/android/org/conscrypt/OpenSSLKey;)V
Lcom/android/org/conscrypt/OpenSSLX509Certificate;->withDeletedExtension(Ljava/lang/String;)Lcom/android/org/conscrypt/OpenSSLX509Certificate;
-Lcom/android/org/conscrypt/OpenSSLX509CertificateFactory$Parser;
Lcom/android/org/conscrypt/OpenSSLX509CertificateFactory$Parser;-><init>()V
Lcom/android/org/conscrypt/OpenSSLX509CertificateFactory$Parser;->fromPkcs7DerInputStream(Ljava/io/InputStream;)Ljava/util/List;
Lcom/android/org/conscrypt/OpenSSLX509CertificateFactory$Parser;->fromPkcs7PemInputStream(Ljava/io/InputStream;)Ljava/util/List;
@@ -109292,17 +102505,14 @@
Lcom/android/org/conscrypt/OpenSSLX509CertificateFactory$Parser;->fromX509PemInputStream(Ljava/io/InputStream;)Ljava/lang/Object;
Lcom/android/org/conscrypt/OpenSSLX509CertificateFactory$Parser;->generateItem(Ljava/io/InputStream;)Ljava/lang/Object;
Lcom/android/org/conscrypt/OpenSSLX509CertificateFactory$Parser;->generateItems(Ljava/io/InputStream;)Ljava/util/Collection;
-Lcom/android/org/conscrypt/OpenSSLX509CertificateFactory$ParsingException;
Lcom/android/org/conscrypt/OpenSSLX509CertificateFactory$ParsingException;-><init>(Ljava/lang/Exception;)V
Lcom/android/org/conscrypt/OpenSSLX509CertificateFactory$ParsingException;-><init>(Ljava/lang/String;)V
Lcom/android/org/conscrypt/OpenSSLX509CertificateFactory$ParsingException;-><init>(Ljava/lang/String;Ljava/lang/Exception;)V
-Lcom/android/org/conscrypt/OpenSSLX509CertificateFactory;
Lcom/android/org/conscrypt/OpenSSLX509CertificateFactory;-><init>()V
Lcom/android/org/conscrypt/OpenSSLX509CertificateFactory;->certificateParser:Lcom/android/org/conscrypt/OpenSSLX509CertificateFactory$Parser;
Lcom/android/org/conscrypt/OpenSSLX509CertificateFactory;->crlParser:Lcom/android/org/conscrypt/OpenSSLX509CertificateFactory$Parser;
Lcom/android/org/conscrypt/OpenSSLX509CertificateFactory;->PKCS7_MARKER:[B
Lcom/android/org/conscrypt/OpenSSLX509CertificateFactory;->PUSHBACK_SIZE:I
-Lcom/android/org/conscrypt/OpenSSLX509CRL;
Lcom/android/org/conscrypt/OpenSSLX509CRL;-><init>(J)V
Lcom/android/org/conscrypt/OpenSSLX509CRL;->fromPkcs7DerInputStream(Ljava/io/InputStream;)Ljava/util/List;
Lcom/android/org/conscrypt/OpenSSLX509CRL;->fromPkcs7PemInputStream(Ljava/io/InputStream;)Ljava/util/List;
@@ -109314,7 +102524,6 @@
Lcom/android/org/conscrypt/OpenSSLX509CRL;->toDate(J)Ljava/util/Date;
Lcom/android/org/conscrypt/OpenSSLX509CRL;->verifyInternal(Ljava/security/PublicKey;Ljava/lang/String;)V
Lcom/android/org/conscrypt/OpenSSLX509CRL;->verifyOpenSSL(Lcom/android/org/conscrypt/OpenSSLKey;)V
-Lcom/android/org/conscrypt/PeerInfoProvider;
Lcom/android/org/conscrypt/PeerInfoProvider;-><init>()V
Lcom/android/org/conscrypt/PeerInfoProvider;->forHostAndPort(Ljava/lang/String;I)Lcom/android/org/conscrypt/PeerInfoProvider;
Lcom/android/org/conscrypt/PeerInfoProvider;->getHostname()Ljava/lang/String;
@@ -109322,10 +102531,8 @@
Lcom/android/org/conscrypt/PeerInfoProvider;->getPort()I
Lcom/android/org/conscrypt/PeerInfoProvider;->nullProvider()Lcom/android/org/conscrypt/PeerInfoProvider;
Lcom/android/org/conscrypt/PeerInfoProvider;->NULL_PEER_INFO_PROVIDER:Lcom/android/org/conscrypt/PeerInfoProvider;
-Lcom/android/org/conscrypt/SSLClientSessionCache;
Lcom/android/org/conscrypt/SSLClientSessionCache;->getSessionData(Ljava/lang/String;I)[B
Lcom/android/org/conscrypt/SSLClientSessionCache;->putSessionData(Ljavax/net/ssl/SSLSession;[B)V
-Lcom/android/org/conscrypt/TrustedCertificateIndex;
Lcom/android/org/conscrypt/TrustedCertificateIndex;-><init>()V
Lcom/android/org/conscrypt/TrustedCertificateIndex;-><init>(Ljava/util/Set;)V
Lcom/android/org/conscrypt/TrustedCertificateIndex;->findAllByIssuerAndSignature(Ljava/security/cert/X509Certificate;)Ljava/util/Set;
@@ -109338,14 +102545,11 @@
Lcom/android/org/conscrypt/TrustedCertificateIndex;->reset()V
Lcom/android/org/conscrypt/TrustedCertificateIndex;->reset(Ljava/util/Set;)V
Lcom/android/org/conscrypt/TrustedCertificateIndex;->subjectToTrustAnchors:Ljava/util/Map;
-Lcom/android/org/conscrypt/TrustedCertificateStore$CertSelector;
Lcom/android/org/conscrypt/TrustedCertificateStore$CertSelector;->match(Ljava/security/cert/X509Certificate;)Z
-Lcom/android/org/conscrypt/TrustedCertificateStore$PreloadHolder;
Lcom/android/org/conscrypt/TrustedCertificateStore$PreloadHolder;-><init>()V
Lcom/android/org/conscrypt/TrustedCertificateStore$PreloadHolder;->defaultCaCertsAddedDir:Ljava/io/File;
Lcom/android/org/conscrypt/TrustedCertificateStore$PreloadHolder;->defaultCaCertsDeletedDir:Ljava/io/File;
Lcom/android/org/conscrypt/TrustedCertificateStore$PreloadHolder;->defaultCaCertsSystemDir:Ljava/io/File;
-Lcom/android/org/conscrypt/TrustedCertificateStore;
Lcom/android/org/conscrypt/TrustedCertificateStore;-><init>(Ljava/io/File;Ljava/io/File;Ljava/io/File;)V
Lcom/android/org/conscrypt/TrustedCertificateStore;->addAliases(Ljava/util/Set;Ljava/lang/String;Ljava/io/File;)V
Lcom/android/org/conscrypt/TrustedCertificateStore;->addedDir:Ljava/io/File;
@@ -109385,7 +102589,6 @@
Lcom/android/org/conscrypt/TrustedCertificateStore;->systemDir:Ljava/io/File;
Lcom/android/org/conscrypt/TrustedCertificateStore;->userAliases()Ljava/util/Set;
Lcom/android/org/conscrypt/TrustedCertificateStore;->writeCertificate(Ljava/io/File;Ljava/security/cert/X509Certificate;)V
-Lcom/android/org/conscrypt/TrustManagerImpl$ExtendedKeyUsagePKIXCertPathChecker;
Lcom/android/org/conscrypt/TrustManagerImpl$ExtendedKeyUsagePKIXCertPathChecker;-><init>(ZLjava/security/cert/X509Certificate;)V
Lcom/android/org/conscrypt/TrustManagerImpl$ExtendedKeyUsagePKIXCertPathChecker;->clientAuth:Z
Lcom/android/org/conscrypt/TrustManagerImpl$ExtendedKeyUsagePKIXCertPathChecker;->EKU_anyExtendedKeyUsage:Ljava/lang/String;
@@ -109396,12 +102599,10 @@
Lcom/android/org/conscrypt/TrustManagerImpl$ExtendedKeyUsagePKIXCertPathChecker;->EKU_serverAuth:Ljava/lang/String;
Lcom/android/org/conscrypt/TrustManagerImpl$ExtendedKeyUsagePKIXCertPathChecker;->leaf:Ljava/security/cert/X509Certificate;
Lcom/android/org/conscrypt/TrustManagerImpl$ExtendedKeyUsagePKIXCertPathChecker;->SUPPORTED_EXTENSIONS:Ljava/util/Set;
-Lcom/android/org/conscrypt/TrustManagerImpl$TrustAnchorComparator;
Lcom/android/org/conscrypt/TrustManagerImpl$TrustAnchorComparator;-><init>()V
Lcom/android/org/conscrypt/TrustManagerImpl$TrustAnchorComparator;->CERT_COMPARATOR:Lcom/android/org/conscrypt/CertificatePriorityComparator;
Lcom/android/org/conscrypt/TrustManagerImpl$TrustAnchorComparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
Lcom/android/org/conscrypt/TrustManagerImpl$TrustAnchorComparator;->compare(Ljava/security/cert/TrustAnchor;Ljava/security/cert/TrustAnchor;)I
-Lcom/android/org/conscrypt/TrustManagerImpl;
Lcom/android/org/conscrypt/TrustManagerImpl;-><init>(Ljava/security/KeyStore;Lcom/android/org/conscrypt/CertPinManager;)V
Lcom/android/org/conscrypt/TrustManagerImpl;-><init>(Ljava/security/KeyStore;Lcom/android/org/conscrypt/CertPinManager;Lcom/android/org/conscrypt/TrustedCertificateStore;)V
Lcom/android/org/conscrypt/TrustManagerImpl;-><init>(Ljava/security/KeyStore;Lcom/android/org/conscrypt/CertPinManager;Lcom/android/org/conscrypt/TrustedCertificateStore;Lcom/android/org/conscrypt/CertBlacklist;)V
@@ -109444,13 +102645,10 @@
Lcom/android/org/conscrypt/TrustManagerImpl;->TRUST_ANCHOR_COMPARATOR:Lcom/android/org/conscrypt/TrustManagerImpl$TrustAnchorComparator;
Lcom/android/org/conscrypt/TrustManagerImpl;->validator:Ljava/security/cert/CertPathValidator;
Lcom/android/org/conscrypt/TrustManagerImpl;->verifyChain(Ljava/util/List;Ljava/util/List;Ljava/lang/String;Z[B[B)Ljava/util/List;
-Ldalvik/annotation/KnownFailure;
Ldalvik/bytecode/OpcodeInfo;-><init>()V
Ldalvik/bytecode/OpcodeInfo;->isInvoke(I)Z
-Ldalvik/system/AllocationLimitError;
Ldalvik/system/AllocationLimitError;-><init>()V
Ldalvik/system/AllocationLimitError;-><init>(Ljava/lang/String;)V
-Ldalvik/system/AnnotatedStackTraceElement;
Ldalvik/system/AnnotatedStackTraceElement;-><init>()V
Ldalvik/system/AnnotatedStackTraceElement;->blockedOn:Ljava/lang/Object;
Ldalvik/system/AnnotatedStackTraceElement;->getBlockedOn()Ljava/lang/Object;
@@ -109458,7 +102656,6 @@
Ldalvik/system/AnnotatedStackTraceElement;->getStackTraceElement()Ljava/lang/StackTraceElement;
Ldalvik/system/AnnotatedStackTraceElement;->heldLocks:[Ljava/lang/Object;
Ldalvik/system/AnnotatedStackTraceElement;->stackTraceElement:Ljava/lang/StackTraceElement;
-Ldalvik/system/BaseDexClassLoader$Reporter;
Ldalvik/system/BaseDexClassLoader$Reporter;->report(Ljava/util/List;Ljava/util/List;)V
Ldalvik/system/BaseDexClassLoader;-><init>([Ljava/nio/ByteBuffer;Ljava/lang/ClassLoader;)V
Ldalvik/system/BaseDexClassLoader;->addNativePath(Ljava/util/Collection;)V
@@ -109466,15 +102663,12 @@
Ldalvik/system/BaseDexClassLoader;->reportClassLoaderChain()V
Ldalvik/system/BaseDexClassLoader;->reporter:Ldalvik/system/BaseDexClassLoader$Reporter;
Ldalvik/system/BaseDexClassLoader;->setReporter(Ldalvik/system/BaseDexClassLoader$Reporter;)V
-Ldalvik/system/BlockGuard$BlockGuardPolicyException;
Ldalvik/system/BlockGuard$BlockGuardPolicyException;-><init>(II)V
Ldalvik/system/BlockGuard$BlockGuardPolicyException;->getPolicy()I
Ldalvik/system/BlockGuard$BlockGuardPolicyException;->getPolicyViolation()I
-Ldalvik/system/BlockGuard$Policy;
Ldalvik/system/BlockGuard$Policy;->getPolicyMask()I
Ldalvik/system/BlockGuard$Policy;->onUnbufferedIO()V
Ldalvik/system/BlockGuard$Policy;->onWriteToDisk()V
-Ldalvik/system/BlockGuard;
Ldalvik/system/BlockGuard;-><init>()V
Ldalvik/system/BlockGuard;->DISALLOW_DISK_READ:I
Ldalvik/system/BlockGuard;->DISALLOW_DISK_WRITE:I
@@ -109483,19 +102677,14 @@
Ldalvik/system/BlockGuard;->PENALTY_DEATH:I
Ldalvik/system/BlockGuard;->PENALTY_DIALOG:I
Ldalvik/system/BlockGuard;->PENALTY_LOG:I
-Ldalvik/system/ClassExt;
Ldalvik/system/ClassExt;-><init>()V
Ldalvik/system/ClassExt;->obsoleteDexCaches:[Ljava/lang/Object;
Ldalvik/system/ClassExt;->obsoleteMethods:Ljava/lang/Object;
Ldalvik/system/ClassExt;->originalDexFile:Ljava/lang/Object;
Ldalvik/system/ClassExt;->verifyError:Ljava/lang/Object;
-Ldalvik/system/CloseGuard$DefaultReporter;
Ldalvik/system/CloseGuard$DefaultReporter;->report(Ljava/lang/String;Ljava/lang/Throwable;)V
-Ldalvik/system/CloseGuard$Reporter;
-Ldalvik/system/CloseGuard$Tracker;
Ldalvik/system/CloseGuard$Tracker;->close(Ljava/lang/Throwable;)V
Ldalvik/system/CloseGuard$Tracker;->open(Ljava/lang/Throwable;)V
-Ldalvik/system/CloseGuard;
Ldalvik/system/CloseGuard;->closerNameOrAllocationInfo:Ljava/lang/Object;
Ldalvik/system/CloseGuard;->currentTracker:Ldalvik/system/CloseGuard$Tracker;
Ldalvik/system/CloseGuard;->getReporter()Ldalvik/system/CloseGuard$Reporter;
@@ -109504,15 +102693,11 @@
Ldalvik/system/CloseGuard;->reporter:Ldalvik/system/CloseGuard$Reporter;
Ldalvik/system/CloseGuard;->setTracker(Ldalvik/system/CloseGuard$Tracker;)V
Ldalvik/system/CloseGuard;->stackAndTrackingEnabled:Z
-Ldalvik/system/DalvikLogging;
Ldalvik/system/DalvikLogging;-><init>()V
Ldalvik/system/DalvikLogging;->loggerNameToTag(Ljava/lang/String;)Ljava/lang/String;
-Ldalvik/system/DalvikLogHandler;
Ldalvik/system/DalvikLogHandler;->publish(Ljava/util/logging/Logger;Ljava/lang/String;Ljava/util/logging/Level;Ljava/lang/String;)V
-Ldalvik/system/DexFile$DFEnum;
Ldalvik/system/DexFile$DFEnum;-><init>(Ldalvik/system/DexFile;)V
Ldalvik/system/DexFile$DFEnum;->mIndex:I
-Ldalvik/system/DexFile$OptimizationInfo;
Ldalvik/system/DexFile$OptimizationInfo;-><init>(Ljava/lang/String;Ljava/lang/String;)V
Ldalvik/system/DexFile$OptimizationInfo;->getReason()Ljava/lang/String;
Ldalvik/system/DexFile$OptimizationInfo;->getStatus()Ljava/lang/String;
@@ -109548,7 +102733,6 @@
Ldalvik/system/DexFile;->openInMemoryDexFile(Ljava/nio/ByteBuffer;)Ljava/lang/Object;
Ldalvik/system/DexFile;->setTrusted()V
Ldalvik/system/DexFile;->setTrusted(Ljava/lang/Object;)V
-Ldalvik/system/DexPathList$Element;
Ldalvik/system/DexPathList$Element;-><init>(Ldalvik/system/DexFile;)V
Ldalvik/system/DexPathList$Element;-><init>(Ljava/io/File;)V
Ldalvik/system/DexPathList$Element;->findClass(Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/util/List;)Ljava/lang/Class;
@@ -109557,14 +102741,12 @@
Ldalvik/system/DexPathList$Element;->initialized:Z
Ldalvik/system/DexPathList$Element;->maybeInit()V
Ldalvik/system/DexPathList$Element;->urlHandler:Llibcore/io/ClassPathURLStreamHandler;
-Ldalvik/system/DexPathList$NativeLibraryElement;
Ldalvik/system/DexPathList$NativeLibraryElement;-><init>(Ljava/io/File;Ljava/lang/String;)V
Ldalvik/system/DexPathList$NativeLibraryElement;->findNativeLibrary(Ljava/lang/String;)Ljava/lang/String;
Ldalvik/system/DexPathList$NativeLibraryElement;->initialized:Z
Ldalvik/system/DexPathList$NativeLibraryElement;->maybeInit()V
Ldalvik/system/DexPathList$NativeLibraryElement;->urlHandler:Llibcore/io/ClassPathURLStreamHandler;
Ldalvik/system/DexPathList$NativeLibraryElement;->zipDir:Ljava/lang/String;
-Ldalvik/system/DexPathList;
Ldalvik/system/DexPathList;-><init>(Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/lang/String;Ljava/io/File;Z)V
Ldalvik/system/DexPathList;-><init>(Ljava/lang/ClassLoader;[Ljava/nio/ByteBuffer;)V
Ldalvik/system/DexPathList;->addDexPath(Ljava/lang/String;Ljava/io/File;Z)V
@@ -109579,7 +102761,6 @@
Ldalvik/system/DexPathList;->optimizedPathFor(Ljava/io/File;Ljava/io/File;)Ljava/lang/String;
Ldalvik/system/DexPathList;->splitDexPath(Ljava/lang/String;)Ljava/util/List;
Ldalvik/system/DexPathList;->zipSeparator:Ljava/lang/String;
-Ldalvik/system/EmulatedStackFrame$Range;
Ldalvik/system/EmulatedStackFrame$Range;-><init>(IIII)V
Ldalvik/system/EmulatedStackFrame$Range;->all(Ljava/lang/invoke/MethodType;)Ldalvik/system/EmulatedStackFrame$Range;
Ldalvik/system/EmulatedStackFrame$Range;->numBytes:I
@@ -109587,7 +102768,6 @@
Ldalvik/system/EmulatedStackFrame$Range;->of(Ljava/lang/invoke/MethodType;II)Ldalvik/system/EmulatedStackFrame$Range;
Ldalvik/system/EmulatedStackFrame$Range;->referencesStart:I
Ldalvik/system/EmulatedStackFrame$Range;->stackFrameStart:I
-Ldalvik/system/EmulatedStackFrame$StackFrameAccessor;
Ldalvik/system/EmulatedStackFrame$StackFrameAccessor;-><init>()V
Ldalvik/system/EmulatedStackFrame$StackFrameAccessor;->argumentIdx:I
Ldalvik/system/EmulatedStackFrame$StackFrameAccessor;->attach(Ldalvik/system/EmulatedStackFrame;)Ldalvik/system/EmulatedStackFrame$StackFrameAccessor;
@@ -109600,7 +102780,6 @@
Ldalvik/system/EmulatedStackFrame$StackFrameAccessor;->numArgs:I
Ldalvik/system/EmulatedStackFrame$StackFrameAccessor;->referencesOffset:I
Ldalvik/system/EmulatedStackFrame$StackFrameAccessor;->RETURN_VALUE_IDX:I
-Ldalvik/system/EmulatedStackFrame$StackFrameReader;
Ldalvik/system/EmulatedStackFrame$StackFrameReader;-><init>()V
Ldalvik/system/EmulatedStackFrame$StackFrameReader;->nextBoolean()Z
Ldalvik/system/EmulatedStackFrame$StackFrameReader;->nextByte()B
@@ -109611,7 +102790,6 @@
Ldalvik/system/EmulatedStackFrame$StackFrameReader;->nextLong()J
Ldalvik/system/EmulatedStackFrame$StackFrameReader;->nextReference(Ljava/lang/Class;)Ljava/lang/Object;
Ldalvik/system/EmulatedStackFrame$StackFrameReader;->nextShort()S
-Ldalvik/system/EmulatedStackFrame$StackFrameWriter;
Ldalvik/system/EmulatedStackFrame$StackFrameWriter;-><init>()V
Ldalvik/system/EmulatedStackFrame$StackFrameWriter;->putNextBoolean(Z)V
Ldalvik/system/EmulatedStackFrame$StackFrameWriter;->putNextByte(B)V
@@ -109622,7 +102800,6 @@
Ldalvik/system/EmulatedStackFrame$StackFrameWriter;->putNextLong(J)V
Ldalvik/system/EmulatedStackFrame$StackFrameWriter;->putNextReference(Ljava/lang/Object;Ljava/lang/Class;)V
Ldalvik/system/EmulatedStackFrame$StackFrameWriter;->putNextShort(S)V
-Ldalvik/system/EmulatedStackFrame;
Ldalvik/system/EmulatedStackFrame;-><init>(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;[Ljava/lang/Object;[B)V
Ldalvik/system/EmulatedStackFrame;->callsiteType:Ljava/lang/invoke/MethodType;
Ldalvik/system/EmulatedStackFrame;->copyRangeTo(Ldalvik/system/EmulatedStackFrame;Ldalvik/system/EmulatedStackFrame$Range;II)V
@@ -109638,10 +102815,8 @@
Ldalvik/system/EmulatedStackFrame;->setReturnValueTo(Ljava/lang/Object;)V
Ldalvik/system/EmulatedStackFrame;->stackFrame:[B
Ldalvik/system/EmulatedStackFrame;->type:Ljava/lang/invoke/MethodType;
-Ldalvik/system/PotentialDeadlockError;
Ldalvik/system/PotentialDeadlockError;-><init>()V
Ldalvik/system/PotentialDeadlockError;-><init>(Ljava/lang/String;)V
-Ldalvik/system/SocketTagger;
Ldalvik/system/SocketTagger;-><init>()V
Ldalvik/system/SocketTagger;->set(Ldalvik/system/SocketTagger;)V
Ldalvik/system/SocketTagger;->tag(Ljava/io/FileDescriptor;)V
@@ -109649,11 +102824,9 @@
Ldalvik/system/SocketTagger;->tagger:Ldalvik/system/SocketTagger;
Ldalvik/system/SocketTagger;->untag(Ljava/io/FileDescriptor;)V
Ldalvik/system/SocketTagger;->untag(Ljava/net/DatagramSocket;)V
-Ldalvik/system/TemporaryDirectory;
Ldalvik/system/TemporaryDirectory;-><init>()V
Ldalvik/system/TemporaryDirectory;->setUpDirectory(Ljava/io/File;)V
Ldalvik/system/TemporaryDirectory;->setUpDirectory(Ljava/lang/String;)V
-Ldalvik/system/VMDebug;
Ldalvik/system/VMDebug;-><init>()V
Ldalvik/system/VMDebug;->attachAgent(Ljava/lang/String;)V
Ldalvik/system/VMDebug;->attachAgent(Ljava/lang/String;Ljava/lang/ClassLoader;)V
@@ -109740,7 +102913,6 @@
Ldalvik/system/VMDebug;->stopMethodTracing()V
Ldalvik/system/VMDebug;->threadCpuTimeNanos()J
Ldalvik/system/VMDebug;->TRACE_COUNT_ALLOCS:I
-Ldalvik/system/VMRuntime;
Ldalvik/system/VMRuntime;-><init>()V
Ldalvik/system/VMRuntime;->ABI_TO_INSTRUCTION_SET_MAP:Ljava/util/Map;
Ldalvik/system/VMRuntime;->bootClassPath()Ljava/lang/String;
@@ -109782,12 +102954,10 @@
Ldalvik/system/VMRuntime;->trimHeap()V
Ldalvik/system/VMRuntime;->updateProcessState(I)V
Ldalvik/system/VMRuntime;->vmVersion()Ljava/lang/String;
-Ldalvik/system/VMStack;
Ldalvik/system/VMStack;-><init>()V
Ldalvik/system/VMStack;->getAnnotatedThreadStackTrace(Ljava/lang/Thread;)[Ldalvik/system/AnnotatedStackTraceElement;
Ldalvik/system/VMStack;->getClosestUserClassLoader()Ljava/lang/ClassLoader;
Ldalvik/system/VMStack;->getStackClass1()Ljava/lang/Class;
-Ldalvik/system/ZygoteHooks;
Ldalvik/system/ZygoteHooks;-><init>()V
Ldalvik/system/ZygoteHooks;->nativePostForkChild(JIZZLjava/lang/String;)V
Ldalvik/system/ZygoteHooks;->nativePreFork()J
@@ -109798,7 +102968,6 @@
Ldalvik/system/ZygoteHooks;->stopZygoteNoThreadCreation()V
Ldalvik/system/ZygoteHooks;->token:J
Ldalvik/system/ZygoteHooks;->waitUntilAllThreadsStopped()V
-Ljava/awt/font/NumericShaper$Range;-><init>(III)V
Ljava/awt/font/NumericShaper$Range;->base:I
Ljava/awt/font/NumericShaper$Range;->end:I
Ljava/awt/font/NumericShaper$Range;->getDigitBase()I
@@ -109856,7 +103025,6 @@
Ljava/awt/font/NumericShaper;->THAI_KEY:I
Ljava/awt/font/NumericShaper;->TIBETAN_KEY:I
Ljava/awt/font/TextAttribute;->instanceMap:Ljava/util/Map;
-Ljava/beans/ChangeListenerMap;
Ljava/beans/ChangeListenerMap;-><init>()V
Ljava/beans/ChangeListenerMap;->add(Ljava/lang/String;Ljava/util/EventListener;)V
Ljava/beans/ChangeListenerMap;->extract(Ljava/util/EventListener;)Ljava/util/EventListener;
@@ -109878,7 +103046,6 @@
Ljava/beans/PropertyChangeEvent;->propagationId:Ljava/lang/Object;
Ljava/beans/PropertyChangeEvent;->propertyName:Ljava/lang/String;
Ljava/beans/PropertyChangeListenerProxy;->propertyName:Ljava/lang/String;
-Ljava/beans/PropertyChangeSupport$PropertyChangeListenerMap;
Ljava/beans/PropertyChangeSupport$PropertyChangeListenerMap;-><init>()V
Ljava/beans/PropertyChangeSupport$PropertyChangeListenerMap;->EMPTY:[Ljava/beans/PropertyChangeListener;
Ljava/beans/PropertyChangeSupport$PropertyChangeListenerMap;->extract(Ljava/beans/PropertyChangeListener;)Ljava/beans/PropertyChangeListener;
@@ -109925,8 +103092,6 @@
Ljava/io/ByteArrayOutputStream;->hugeCapacity(I)I
Ljava/io/ByteArrayOutputStream;->MAX_ARRAY_SIZE:I
Ljava/io/CharArrayReader;->ensureOpen()V
-Ljava/io/Console$LineReader;
-Ljava/io/Console$LineReader;-><init>(Ljava/io/Reader;)V
Ljava/io/Console$LineReader;->cb:[C
Ljava/io/Console$LineReader;->in:Ljava/io/Reader;
Ljava/io/Console$LineReader;->leftoverLF:Z
@@ -109957,13 +103122,10 @@
Ljava/io/DataOutputStream;->incCount(I)V
Ljava/io/DataOutputStream;->writeBuffer:[B
Ljava/io/DataOutputStream;->writeUTF(Ljava/lang/String;Ljava/io/DataOutput;)I
-Ljava/io/File$PathStatus;
-Ljava/io/File$PathStatus;-><init>()V
Ljava/io/File$PathStatus;->CHECKED:Ljava/io/File$PathStatus;
Ljava/io/File$PathStatus;->INVALID:Ljava/io/File$PathStatus;
Ljava/io/File$PathStatus;->valueOf(Ljava/lang/String;)Ljava/io/File$PathStatus;
Ljava/io/File$PathStatus;->values()[Ljava/io/File$PathStatus;
-Ljava/io/File$TempDirectory;
Ljava/io/File$TempDirectory;-><init>()V
Ljava/io/File$TempDirectory;->generateFile(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;)Ljava/io/File;
Ljava/io/File;-><init>(Ljava/lang/String;I)V
@@ -109977,7 +103139,6 @@
Ljava/io/FileDescriptor;-><init>(I)V
Ljava/io/FileDescriptor;->dupFd(I)Ljava/io/FileDescriptor;
Ljava/io/FileDescriptor;->isSocket(I)Z
-Ljava/io/FileInputStream$UseManualSkipException;
Ljava/io/FileInputStream$UseManualSkipException;-><init>()V
Ljava/io/FileInputStream;-><init>(Ljava/io/FileDescriptor;Z)V
Ljava/io/FileInputStream;->available0()I
@@ -110002,7 +103163,6 @@
Ljava/io/FileOutputStream;->open0(Ljava/lang/String;Z)V
Ljava/io/FileOutputStream;->path:Ljava/lang/String;
Ljava/io/FileOutputStream;->tracker:Llibcore/io/IoTracker;
-Ljava/io/FileSystem;
Ljava/io/FileSystem;-><init>()V
Ljava/io/FileSystem;->ACCESS_EXECUTE:I
Ljava/io/FileSystem;->ACCESS_OK:I
@@ -110032,8 +103192,6 @@
Ljava/io/LineNumberReader;->maxSkipBufferSize:I
Ljava/io/LineNumberReader;->skipBuffer:[C
Ljava/io/LineNumberReader;->skipLF:Z
-Ljava/io/ObjectInputStream$BlockDataInputStream;
-Ljava/io/ObjectInputStream$BlockDataInputStream;-><init>(Ljava/io/InputStream;)V
Ljava/io/ObjectInputStream$BlockDataInputStream;->blkmode:Z
Ljava/io/ObjectInputStream$BlockDataInputStream;->buf:[B
Ljava/io/ObjectInputStream$BlockDataInputStream;->cbuf:[C
@@ -110068,26 +103226,21 @@
Ljava/io/ObjectInputStream$BlockDataInputStream;->setBlockDataMode(Z)Z
Ljava/io/ObjectInputStream$BlockDataInputStream;->skipBlockData()V
Ljava/io/ObjectInputStream$BlockDataInputStream;->unread:I
-Ljava/io/ObjectInputStream$Caches;
Ljava/io/ObjectInputStream$Caches;-><init>()V
Ljava/io/ObjectInputStream$Caches;->subclassAudits:Ljava/util/concurrent/ConcurrentMap;
Ljava/io/ObjectInputStream$Caches;->subclassAuditsQueue:Ljava/lang/ref/ReferenceQueue;
-Ljava/io/ObjectInputStream$GetFieldImpl;
-Ljava/io/ObjectInputStream$GetFieldImpl;-><init>(Ljava/io/ObjectStreamClass;)V
Ljava/io/ObjectInputStream$GetFieldImpl;->desc:Ljava/io/ObjectStreamClass;
Ljava/io/ObjectInputStream$GetFieldImpl;->getFieldOffset(Ljava/lang/String;Ljava/lang/Class;)I
Ljava/io/ObjectInputStream$GetFieldImpl;->objHandles:[I
Ljava/io/ObjectInputStream$GetFieldImpl;->objVals:[Ljava/lang/Object;
Ljava/io/ObjectInputStream$GetFieldImpl;->primVals:[B
Ljava/io/ObjectInputStream$GetFieldImpl;->readFields()V
-Ljava/io/ObjectInputStream$HandleTable$HandleList;
Ljava/io/ObjectInputStream$HandleTable$HandleList;-><init>()V
Ljava/io/ObjectInputStream$HandleTable$HandleList;->add(I)V
Ljava/io/ObjectInputStream$HandleTable$HandleList;->get(I)I
Ljava/io/ObjectInputStream$HandleTable$HandleList;->list:[I
Ljava/io/ObjectInputStream$HandleTable$HandleList;->size()I
Ljava/io/ObjectInputStream$HandleTable$HandleList;->size:I
-Ljava/io/ObjectInputStream$HandleTable;
Ljava/io/ObjectInputStream$HandleTable;-><init>(I)V
Ljava/io/ObjectInputStream$HandleTable;->assign(Ljava/lang/Object;)I
Ljava/io/ObjectInputStream$HandleTable;->clear()V
@@ -110107,19 +103260,16 @@
Ljava/io/ObjectInputStream$HandleTable;->STATUS_EXCEPTION:B
Ljava/io/ObjectInputStream$HandleTable;->STATUS_OK:B
Ljava/io/ObjectInputStream$HandleTable;->STATUS_UNKNOWN:B
-Ljava/io/ObjectInputStream$PeekInputStream;
Ljava/io/ObjectInputStream$PeekInputStream;-><init>(Ljava/io/InputStream;)V
Ljava/io/ObjectInputStream$PeekInputStream;->in:Ljava/io/InputStream;
Ljava/io/ObjectInputStream$PeekInputStream;->peek()I
Ljava/io/ObjectInputStream$PeekInputStream;->peekb:I
Ljava/io/ObjectInputStream$PeekInputStream;->readFully([BII)V
-Ljava/io/ObjectInputStream$ValidationList$Callback;
Ljava/io/ObjectInputStream$ValidationList$Callback;-><init>(Ljava/io/ObjectInputValidation;ILjava/io/ObjectInputStream$ValidationList$Callback;Ljava/security/AccessControlContext;)V
Ljava/io/ObjectInputStream$ValidationList$Callback;->acc:Ljava/security/AccessControlContext;
Ljava/io/ObjectInputStream$ValidationList$Callback;->next:Ljava/io/ObjectInputStream$ValidationList$Callback;
Ljava/io/ObjectInputStream$ValidationList$Callback;->obj:Ljava/io/ObjectInputValidation;
Ljava/io/ObjectInputStream$ValidationList$Callback;->priority:I
-Ljava/io/ObjectInputStream$ValidationList;
Ljava/io/ObjectInputStream$ValidationList;-><init>()V
Ljava/io/ObjectInputStream$ValidationList;->clear()V
Ljava/io/ObjectInputStream$ValidationList;->doCallbacks()V
@@ -110163,7 +103313,6 @@
Ljava/io/ObjectInputStream;->unsharedMarker:Ljava/lang/Object;
Ljava/io/ObjectInputStream;->verifySubclass()V
Ljava/io/ObjectInputStream;->vlist:Ljava/io/ObjectInputStream$ValidationList;
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;
Ljava/io/ObjectOutputStream$BlockDataOutputStream;-><init>(Ljava/io/OutputStream;)V
Ljava/io/ObjectOutputStream$BlockDataOutputStream;->blkmode:Z
Ljava/io/ObjectOutputStream$BlockDataOutputStream;->buf:[B
@@ -110194,17 +103343,14 @@
Ljava/io/ObjectOutputStream$BlockDataOutputStream;->writeShorts([SII)V
Ljava/io/ObjectOutputStream$BlockDataOutputStream;->writeUTF(Ljava/lang/String;J)V
Ljava/io/ObjectOutputStream$BlockDataOutputStream;->writeUTFBody(Ljava/lang/String;)V
-Ljava/io/ObjectOutputStream$Caches;
Ljava/io/ObjectOutputStream$Caches;-><init>()V
Ljava/io/ObjectOutputStream$Caches;->subclassAudits:Ljava/util/concurrent/ConcurrentMap;
Ljava/io/ObjectOutputStream$Caches;->subclassAuditsQueue:Ljava/lang/ref/ReferenceQueue;
-Ljava/io/ObjectOutputStream$DebugTraceInfoStack;
Ljava/io/ObjectOutputStream$DebugTraceInfoStack;-><init>()V
Ljava/io/ObjectOutputStream$DebugTraceInfoStack;->clear()V
Ljava/io/ObjectOutputStream$DebugTraceInfoStack;->pop()V
Ljava/io/ObjectOutputStream$DebugTraceInfoStack;->push(Ljava/lang/String;)V
Ljava/io/ObjectOutputStream$DebugTraceInfoStack;->stack:Ljava/util/List;
-Ljava/io/ObjectOutputStream$HandleTable;
Ljava/io/ObjectOutputStream$HandleTable;-><init>(IF)V
Ljava/io/ObjectOutputStream$HandleTable;->assign(Ljava/lang/Object;)I
Ljava/io/ObjectOutputStream$HandleTable;->clear()V
@@ -110220,14 +103366,11 @@
Ljava/io/ObjectOutputStream$HandleTable;->size:I
Ljava/io/ObjectOutputStream$HandleTable;->spine:[I
Ljava/io/ObjectOutputStream$HandleTable;->threshold:I
-Ljava/io/ObjectOutputStream$PutFieldImpl;
-Ljava/io/ObjectOutputStream$PutFieldImpl;-><init>(Ljava/io/ObjectStreamClass;)V
Ljava/io/ObjectOutputStream$PutFieldImpl;->desc:Ljava/io/ObjectStreamClass;
Ljava/io/ObjectOutputStream$PutFieldImpl;->getFieldOffset(Ljava/lang/String;Ljava/lang/Class;)I
Ljava/io/ObjectOutputStream$PutFieldImpl;->objVals:[Ljava/lang/Object;
Ljava/io/ObjectOutputStream$PutFieldImpl;->primVals:[B
Ljava/io/ObjectOutputStream$PutFieldImpl;->writeFields()V
-Ljava/io/ObjectOutputStream$ReplaceTable;
Ljava/io/ObjectOutputStream$ReplaceTable;-><init>(IF)V
Ljava/io/ObjectOutputStream$ReplaceTable;->assign(Ljava/lang/Object;Ljava/lang/Object;)V
Ljava/io/ObjectOutputStream$ReplaceTable;->clear()V
@@ -110270,17 +103413,14 @@
Ljava/io/ObjectOutputStream;->writeSerialData(Ljava/lang/Object;Ljava/io/ObjectStreamClass;)V
Ljava/io/ObjectOutputStream;->writeString(Ljava/lang/String;Z)V
Ljava/io/ObjectOutputStream;->writeTypeString(Ljava/lang/String;)V
-Ljava/io/ObjectStreamClass$Caches;
Ljava/io/ObjectStreamClass$Caches;-><init>()V
Ljava/io/ObjectStreamClass$Caches;->localDescs:Ljava/util/concurrent/ConcurrentMap;
Ljava/io/ObjectStreamClass$Caches;->localDescsQueue:Ljava/lang/ref/ReferenceQueue;
Ljava/io/ObjectStreamClass$Caches;->reflectors:Ljava/util/concurrent/ConcurrentMap;
Ljava/io/ObjectStreamClass$Caches;->reflectorsQueue:Ljava/lang/ref/ReferenceQueue;
-Ljava/io/ObjectStreamClass$ClassDataSlot;
Ljava/io/ObjectStreamClass$ClassDataSlot;-><init>(Ljava/io/ObjectStreamClass;Z)V
Ljava/io/ObjectStreamClass$ClassDataSlot;->desc:Ljava/io/ObjectStreamClass;
Ljava/io/ObjectStreamClass$ClassDataSlot;->hasData:Z
-Ljava/io/ObjectStreamClass$EntryFuture;
Ljava/io/ObjectStreamClass$EntryFuture;-><init>()V
Ljava/io/ObjectStreamClass$EntryFuture;->entry:Ljava/lang/Object;
Ljava/io/ObjectStreamClass$EntryFuture;->get()Ljava/lang/Object;
@@ -110288,12 +103428,10 @@
Ljava/io/ObjectStreamClass$EntryFuture;->owner:Ljava/lang/Thread;
Ljava/io/ObjectStreamClass$EntryFuture;->set(Ljava/lang/Object;)Z
Ljava/io/ObjectStreamClass$EntryFuture;->unset:Ljava/lang/Object;
-Ljava/io/ObjectStreamClass$ExceptionInfo;
Ljava/io/ObjectStreamClass$ExceptionInfo;-><init>(Ljava/lang/String;Ljava/lang/String;)V
Ljava/io/ObjectStreamClass$ExceptionInfo;->className:Ljava/lang/String;
Ljava/io/ObjectStreamClass$ExceptionInfo;->message:Ljava/lang/String;
Ljava/io/ObjectStreamClass$ExceptionInfo;->newInvalidClassException()Ljava/io/InvalidClassException;
-Ljava/io/ObjectStreamClass$FieldReflector;
Ljava/io/ObjectStreamClass$FieldReflector;-><init>([Ljava/io/ObjectStreamField;)V
Ljava/io/ObjectStreamClass$FieldReflector;->fields:[Ljava/io/ObjectStreamField;
Ljava/io/ObjectStreamClass$FieldReflector;->getFields()[Ljava/io/ObjectStreamField;
@@ -110308,19 +103446,16 @@
Ljava/io/ObjectStreamClass$FieldReflector;->types:[Ljava/lang/Class;
Ljava/io/ObjectStreamClass$FieldReflector;->unsafe:Lsun/misc/Unsafe;
Ljava/io/ObjectStreamClass$FieldReflector;->writeKeys:[J
-Ljava/io/ObjectStreamClass$FieldReflectorKey;
Ljava/io/ObjectStreamClass$FieldReflectorKey;-><init>(Ljava/lang/Class;[Ljava/io/ObjectStreamField;Ljava/lang/ref/ReferenceQueue;)V
Ljava/io/ObjectStreamClass$FieldReflectorKey;->hash:I
Ljava/io/ObjectStreamClass$FieldReflectorKey;->nullClass:Z
Ljava/io/ObjectStreamClass$FieldReflectorKey;->sigs:Ljava/lang/String;
-Ljava/io/ObjectStreamClass$MemberSignature;
Ljava/io/ObjectStreamClass$MemberSignature;-><init>(Ljava/lang/reflect/Constructor;)V
Ljava/io/ObjectStreamClass$MemberSignature;-><init>(Ljava/lang/reflect/Field;)V
Ljava/io/ObjectStreamClass$MemberSignature;-><init>(Ljava/lang/reflect/Method;)V
Ljava/io/ObjectStreamClass$MemberSignature;->member:Ljava/lang/reflect/Member;
Ljava/io/ObjectStreamClass$MemberSignature;->name:Ljava/lang/String;
Ljava/io/ObjectStreamClass$MemberSignature;->signature:Ljava/lang/String;
-Ljava/io/ObjectStreamClass$WeakClassKey;
Ljava/io/ObjectStreamClass$WeakClassKey;-><init>(Ljava/lang/Class;Ljava/lang/ref/ReferenceQueue;)V
Ljava/io/ObjectStreamClass$WeakClassKey;->hash:I
Ljava/io/ObjectStreamClass;-><init>()V
@@ -110496,7 +103631,6 @@
Ljava/io/SequenceInputStream;->e:Ljava/util/Enumeration;
Ljava/io/SequenceInputStream;->in:Ljava/io/InputStream;
Ljava/io/SequenceInputStream;->nextStream()V
-Ljava/io/SerialCallbackContext;
Ljava/io/SerialCallbackContext;-><init>(Ljava/lang/Object;Ljava/io/ObjectStreamClass;)V
Ljava/io/SerialCallbackContext;->check()V
Ljava/io/SerialCallbackContext;->checkAndSetUsed()V
@@ -110535,7 +103669,6 @@
Ljava/io/StringWriter;->buf:Ljava/lang/StringBuffer;
Ljava/io/Writer;->writeBuffer:[C
Ljava/io/Writer;->WRITE_BUFFER_SIZE:I
-Ljava/lang/AbstractStringBuilder;
Ljava/lang/AbstractStringBuilder;-><init>()V
Ljava/lang/AbstractStringBuilder;-><init>(I)V
Ljava/lang/AbstractStringBuilder;->append(D)Ljava/lang/AbstractStringBuilder;
@@ -110590,36 +103723,29 @@
Ljava/lang/AbstractStringBuilder;->substring(I)Ljava/lang/String;
Ljava/lang/AbstractStringBuilder;->substring(II)Ljava/lang/String;
Ljava/lang/AbstractStringBuilder;->trimToSize()V
-Ljava/lang/AndroidHardcodedSystemProperties;
Ljava/lang/AndroidHardcodedSystemProperties;-><init>()V
Ljava/lang/AndroidHardcodedSystemProperties;->JAVA_VERSION:Ljava/lang/String;
Ljava/lang/AndroidHardcodedSystemProperties;->STATIC_PROPERTIES:[[Ljava/lang/String;
Ljava/lang/annotation/AnnotationTypeMismatchException;->element:Ljava/lang/reflect/Method;
Ljava/lang/annotation/AnnotationTypeMismatchException;->foundType:Ljava/lang/String;
-Ljava/lang/annotation/ElementType;-><init>()V
Ljava/lang/annotation/IncompleteAnnotationException;->annotationType:Ljava/lang/Class;
Ljava/lang/annotation/IncompleteAnnotationException;->elementName:Ljava/lang/String;
-Ljava/lang/annotation/RetentionPolicy;-><init>()V
Ljava/lang/ArrayIndexOutOfBoundsException;-><init>(II)V
Ljava/lang/ArrayIndexOutOfBoundsException;-><init>(III)V
Ljava/lang/AssertionError;-><init>(Ljava/lang/String;)V
-Ljava/lang/Byte$ByteCache;
Ljava/lang/Byte$ByteCache;-><init>()V
Ljava/lang/Byte$ByteCache;->cache:[Ljava/lang/Byte;
Ljava/lang/Byte;->DIGITS:[C
Ljava/lang/Byte;->UPPER_CASE_DIGITS:[C
-Ljava/lang/Character$CharacterCache;
Ljava/lang/Character$CharacterCache;-><init>()V
Ljava/lang/Character$CharacterCache;->cache:[Ljava/lang/Character;
Ljava/lang/Character$Subset;->name:Ljava/lang/String;
Ljava/lang/Character$UnicodeBlock;-><init>(Ljava/lang/String;)V
Ljava/lang/Character$UnicodeBlock;-><init>(Ljava/lang/String;Ljava/lang/String;)V
Ljava/lang/Character$UnicodeBlock;-><init>(Ljava/lang/String;Z)V
-Ljava/lang/Character$UnicodeBlock;-><init>(Ljava/lang/String;[[Ljava/lang/String;)V
Ljava/lang/Character$UnicodeBlock;->blocks:[Ljava/lang/Character$UnicodeBlock;
Ljava/lang/Character$UnicodeBlock;->blockStarts:[I
Ljava/lang/Character$UnicodeBlock;->map:Ljava/util/Map;
-Ljava/lang/Character$UnicodeScript;-><init>()V
Ljava/lang/Character$UnicodeScript;->aliases:Ljava/util/HashMap;
Ljava/lang/Character$UnicodeScript;->scripts:[Ljava/lang/Character$UnicodeScript;
Ljava/lang/Character$UnicodeScript;->scriptStarts:[I
@@ -110653,7 +103779,6 @@
Ljava/lang/Character;->toSurrogates(I[CI)V
Ljava/lang/Character;->toTitleCaseImpl(I)I
Ljava/lang/Character;->toUpperCaseImpl(I)I
-Ljava/lang/Class$Caches;
Ljava/lang/Class$Caches;-><init>()V
Ljava/lang/Class$Caches;->genericInterfaces:Llibcore/util/BasicLruCache;
Ljava/lang/Class;->ANNOTATION:I
@@ -110709,7 +103834,6 @@
Ljava/lang/Class;->SYNTHETIC:I
Ljava/lang/Class;->virtualMethodsOffset:S
Ljava/lang/Class;->vtable:Ljava/lang/Object;
-Ljava/lang/ClassLoader$SystemClassLoader;
Ljava/lang/ClassLoader$SystemClassLoader;-><init>()V
Ljava/lang/ClassLoader$SystemClassLoader;->loader:Ljava/lang/ClassLoader;
Ljava/lang/ClassLoader;-><init>(Ljava/lang/Void;Ljava/lang/ClassLoader;)V
@@ -110724,7 +103848,6 @@
Ljava/lang/ClassLoader;->proxyCache:Ljava/util/Map;
Ljava/lang/ClassNotFoundException;->ex:Ljava/lang/Throwable;
Ljava/lang/Compiler;-><init>()V
-Ljava/lang/Daemons$Daemon;
Ljava/lang/Daemons$Daemon;-><init>(Ljava/lang/String;)V
Ljava/lang/Daemons$Daemon;->getStackTrace()[Ljava/lang/StackTraceElement;
Ljava/lang/Daemons$Daemon;->interrupt()V
@@ -110734,13 +103857,11 @@
Ljava/lang/Daemons$Daemon;->runInternal()V
Ljava/lang/Daemons$Daemon;->startInternal()V
Ljava/lang/Daemons$Daemon;->startPostZygoteFork()V
-Ljava/lang/Daemons$FinalizerDaemon;
Ljava/lang/Daemons$FinalizerDaemon;-><init>()V
Ljava/lang/Daemons$FinalizerDaemon;->doFinalize(Ljava/lang/ref/FinalizerReference;)V
Ljava/lang/Daemons$FinalizerDaemon;->progressCounter:Ljava/util/concurrent/atomic/AtomicInteger;
Ljava/lang/Daemons$FinalizerDaemon;->queue:Ljava/lang/ref/ReferenceQueue;
Ljava/lang/Daemons$FinalizerDaemon;->runInternal()V
-Ljava/lang/Daemons$FinalizerWatchdogDaemon;
Ljava/lang/Daemons$FinalizerWatchdogDaemon;-><init>()V
Ljava/lang/Daemons$FinalizerWatchdogDaemon;->finalizerTimedOut(Ljava/lang/Object;)V
Ljava/lang/Daemons$FinalizerWatchdogDaemon;->getNeedToWork()Z
@@ -110751,15 +103872,12 @@
Ljava/lang/Daemons$FinalizerWatchdogDaemon;->sleepUntilNeeded()Z
Ljava/lang/Daemons$FinalizerWatchdogDaemon;->waitForFinalization()Ljava/lang/Object;
Ljava/lang/Daemons$FinalizerWatchdogDaemon;->wakeUp()V
-Ljava/lang/Daemons$HeapTaskDaemon;
Ljava/lang/Daemons$HeapTaskDaemon;-><init>()V
Ljava/lang/Daemons$HeapTaskDaemon;->INSTANCE:Ljava/lang/Daemons$HeapTaskDaemon;
Ljava/lang/Daemons$HeapTaskDaemon;->interrupt(Ljava/lang/Thread;)V
Ljava/lang/Daemons$HeapTaskDaemon;->runInternal()V
-Ljava/lang/Daemons$ReferenceQueueDaemon;
Ljava/lang/Daemons$ReferenceQueueDaemon;-><init>()V
Ljava/lang/Daemons$ReferenceQueueDaemon;->runInternal()V
-Ljava/lang/Daemons;
Ljava/lang/Daemons;-><init>()V
Ljava/lang/Daemons;->NANOS_PER_MILLI:I
Ljava/lang/Daemons;->NANOS_PER_SECOND:I
@@ -110769,10 +103887,8 @@
Ljava/lang/EnumConstantNotPresentException;->constantName:Ljava/lang/String;
Ljava/lang/EnumConstantNotPresentException;->enumType:Ljava/lang/Class;
Ljava/lang/ExceptionInInitializerError;->exception:Ljava/lang/Throwable;
-Ljava/lang/FindBugsSuppressWarnings;
Ljava/lang/InheritableThreadLocal;->createMap(Ljava/lang/Thread;Ljava/lang/Object;)V
Ljava/lang/InheritableThreadLocal;->getMap(Ljava/lang/Thread;)Ljava/lang/ThreadLocal$ThreadLocalMap;
-Ljava/lang/Integer$IntegerCache;
Ljava/lang/Integer$IntegerCache;-><init>()V
Ljava/lang/Integer$IntegerCache;->cache:[Ljava/lang/Integer;
Ljava/lang/Integer$IntegerCache;->high:I
@@ -110801,7 +103917,6 @@
Ljava/lang/invoke/CallSite;->TARGET_OFFSET:J
Ljava/lang/invoke/CallSite;->wrongTargetType(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/WrongMethodTypeException;
Ljava/lang/invoke/ConstantCallSite;->isFrozen:Z
-Ljava/lang/invoke/MethodHandle$PolymorphicSignature;
Ljava/lang/invoke/MethodHandle;-><init>(JILjava/lang/invoke/MethodType;)V
Ljava/lang/invoke/MethodHandle;->artFieldOrMethod:J
Ljava/lang/invoke/MethodHandle;->asCollectorChecks(Ljava/lang/Class;I)Z
@@ -110828,11 +103943,9 @@
Ljava/lang/invoke/MethodHandle;->transform(Ldalvik/system/EmulatedStackFrame;)V
Ljava/lang/invoke/MethodHandle;->transformInternal(Ldalvik/system/EmulatedStackFrame;)V
Ljava/lang/invoke/MethodHandle;->type:Ljava/lang/invoke/MethodType;
-Ljava/lang/invoke/MethodHandleImpl$HandleInfo;
Ljava/lang/invoke/MethodHandleImpl$HandleInfo;-><init>(Ljava/lang/reflect/Member;Ljava/lang/invoke/MethodHandle;)V
Ljava/lang/invoke/MethodHandleImpl$HandleInfo;->handle:Ljava/lang/invoke/MethodHandle;
Ljava/lang/invoke/MethodHandleImpl$HandleInfo;->member:Ljava/lang/reflect/Member;
-Ljava/lang/invoke/MethodHandleImpl;
Ljava/lang/invoke/MethodHandleImpl;-><init>(JILjava/lang/invoke/MethodType;)V
Ljava/lang/invoke/MethodHandleImpl;->getMemberInternal()Ljava/lang/reflect/Member;
Ljava/lang/invoke/MethodHandleImpl;->info:Ljava/lang/invoke/MethodHandleImpl$HandleInfo;
@@ -110908,11 +104021,9 @@
Ljava/lang/invoke/MethodHandles;->permuteArgumentChecks([ILjava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;)Z
Ljava/lang/invoke/MethodHandles;->varHandleExactInvoker(Ljava/lang/invoke/VarHandle$AccessMode;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
Ljava/lang/invoke/MethodHandles;->varHandleInvoker(Ljava/lang/invoke/VarHandle$AccessMode;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/MethodType$ConcurrentWeakInternSet$WeakEntry;
Ljava/lang/invoke/MethodType$ConcurrentWeakInternSet$WeakEntry;-><init>(Ljava/lang/Object;)V
Ljava/lang/invoke/MethodType$ConcurrentWeakInternSet$WeakEntry;-><init>(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V
Ljava/lang/invoke/MethodType$ConcurrentWeakInternSet$WeakEntry;->hashcode:I
-Ljava/lang/invoke/MethodType$ConcurrentWeakInternSet;
Ljava/lang/invoke/MethodType$ConcurrentWeakInternSet;-><init>()V
Ljava/lang/invoke/MethodType$ConcurrentWeakInternSet;->add(Ljava/lang/Object;)Ljava/lang/Object;
Ljava/lang/invoke/MethodType$ConcurrentWeakInternSet;->expungeStaleElements()V
@@ -110956,7 +104067,6 @@
Ljava/lang/invoke/MethodType;->ptypes()[Ljava/lang/Class;
Ljava/lang/invoke/MethodType;->ptypes:[Ljava/lang/Class;
Ljava/lang/invoke/MethodType;->ptypesOffset:J
-Ljava/lang/invoke/MethodType;->replaceParameterTypes(II[[Ljava/lang/Class;)Ljava/lang/invoke/MethodType;
Ljava/lang/invoke/MethodType;->rtype()Ljava/lang/Class;
Ljava/lang/invoke/MethodType;->rtype:Ljava/lang/Class;
Ljava/lang/invoke/MethodType;->rtypeOffset:J
@@ -110964,7 +104074,6 @@
Ljava/lang/invoke/MethodType;->unwrapWithNoPrims(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodType;
Ljava/lang/invoke/MethodType;->wrapAlt:Ljava/lang/invoke/MethodType;
Ljava/lang/invoke/MethodType;->wrapWithPrims(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodType;
-Ljava/lang/invoke/MethodTypeForm;
Ljava/lang/invoke/MethodTypeForm;-><init>(Ljava/lang/invoke/MethodType;)V
Ljava/lang/invoke/MethodTypeForm;->argCounts:J
Ljava/lang/invoke/MethodTypeForm;->argSlotToParameter(I)I
@@ -111001,25 +104110,20 @@
Ljava/lang/invoke/MethodTypeForm;->unpack(JI)C
Ljava/lang/invoke/MethodTypeForm;->UNWRAP:I
Ljava/lang/invoke/MethodTypeForm;->WRAP:I
-Ljava/lang/invoke/Stable;
-Ljava/lang/invoke/Transformers$AlwaysThrow;
Ljava/lang/invoke/Transformers$AlwaysThrow;-><init>(Ljava/lang/Class;Ljava/lang/Class;)V
Ljava/lang/invoke/Transformers$AlwaysThrow;->exceptionType:Ljava/lang/Class;
Ljava/lang/invoke/Transformers$AlwaysThrow;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$BindTo;
Ljava/lang/invoke/Transformers$BindTo;-><init>(Ljava/lang/invoke/MethodHandle;Ljava/lang/Object;)V
Ljava/lang/invoke/Transformers$BindTo;->delegate:Ljava/lang/invoke/MethodHandle;
Ljava/lang/invoke/Transformers$BindTo;->range:Ldalvik/system/EmulatedStackFrame$Range;
Ljava/lang/invoke/Transformers$BindTo;->receiver:Ljava/lang/Object;
Ljava/lang/invoke/Transformers$BindTo;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$CatchException;
Ljava/lang/invoke/Transformers$CatchException;-><init>(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/Class;)V
Ljava/lang/invoke/Transformers$CatchException;->exType:Ljava/lang/Class;
Ljava/lang/invoke/Transformers$CatchException;->handler:Ljava/lang/invoke/MethodHandle;
Ljava/lang/invoke/Transformers$CatchException;->handlerArgsRange:Ldalvik/system/EmulatedStackFrame$Range;
Ljava/lang/invoke/Transformers$CatchException;->target:Ljava/lang/invoke/MethodHandle;
Ljava/lang/invoke/Transformers$CatchException;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$CollectArguments;
Ljava/lang/invoke/Transformers$CollectArguments;-><init>(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;ILjava/lang/invoke/MethodType;)V
Ljava/lang/invoke/Transformers$CollectArguments;->collector:Ljava/lang/invoke/MethodHandle;
Ljava/lang/invoke/Transformers$CollectArguments;->collectorRange:Ldalvik/system/EmulatedStackFrame$Range;
@@ -111030,7 +104134,6 @@
Ljava/lang/invoke/Transformers$CollectArguments;->stackFrameOffset:I
Ljava/lang/invoke/Transformers$CollectArguments;->target:Ljava/lang/invoke/MethodHandle;
Ljava/lang/invoke/Transformers$CollectArguments;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$Collector;
Ljava/lang/invoke/Transformers$Collector;-><init>(Ljava/lang/invoke/MethodHandle;Ljava/lang/Class;I)V
Ljava/lang/invoke/Transformers$Collector;->arrayOffset:I
Ljava/lang/invoke/Transformers$Collector;->arrayTypeChar:C
@@ -111038,7 +104141,6 @@
Ljava/lang/invoke/Transformers$Collector;->numArrayArgs:I
Ljava/lang/invoke/Transformers$Collector;->target:Ljava/lang/invoke/MethodHandle;
Ljava/lang/invoke/Transformers$Collector;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$Constant;
Ljava/lang/invoke/Transformers$Constant;-><init>(Ljava/lang/Class;Ljava/lang/Object;)V
Ljava/lang/invoke/Transformers$Constant;->asDouble:D
Ljava/lang/invoke/Transformers$Constant;->asFloat:F
@@ -111048,7 +104150,6 @@
Ljava/lang/invoke/Transformers$Constant;->transform(Ldalvik/system/EmulatedStackFrame;)V
Ljava/lang/invoke/Transformers$Constant;->type:Ljava/lang/Class;
Ljava/lang/invoke/Transformers$Constant;->typeChar:C
-Ljava/lang/invoke/Transformers$Construct;
Ljava/lang/invoke/Transformers$Construct;-><init>(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)V
Ljava/lang/invoke/Transformers$Construct;->callerRange:Ldalvik/system/EmulatedStackFrame$Range;
Ljava/lang/invoke/Transformers$Construct;->checkInstantiable(Ljava/lang/Class;)V
@@ -111056,13 +104157,11 @@
Ljava/lang/invoke/Transformers$Construct;->getConstructorHandle()Ljava/lang/invoke/MethodHandle;
Ljava/lang/invoke/Transformers$Construct;->isAbstract(Ljava/lang/Class;)Z
Ljava/lang/invoke/Transformers$Construct;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$DropArguments;
Ljava/lang/invoke/Transformers$DropArguments;-><init>(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;II)V
Ljava/lang/invoke/Transformers$DropArguments;->delegate:Ljava/lang/invoke/MethodHandle;
Ljava/lang/invoke/Transformers$DropArguments;->range1:Ldalvik/system/EmulatedStackFrame$Range;
Ljava/lang/invoke/Transformers$DropArguments;->range2:Ldalvik/system/EmulatedStackFrame$Range;
Ljava/lang/invoke/Transformers$DropArguments;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$ExplicitCastArguments;
Ljava/lang/invoke/Transformers$ExplicitCastArguments;-><init>(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)V
Ljava/lang/invoke/Transformers$ExplicitCastArguments;->box(Ldalvik/system/EmulatedStackFrame$StackFrameReader;Ljava/lang/Class;Ldalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/Class;)V
Ljava/lang/invoke/Transformers$ExplicitCastArguments;->explicitCast(Ldalvik/system/EmulatedStackFrame$StackFrameReader;Ljava/lang/Class;Ldalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/Class;)V
@@ -111085,20 +104184,17 @@
Ljava/lang/invoke/Transformers$ExplicitCastArguments;->unbox(Ljava/lang/Object;Ljava/lang/Class;Ldalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/Class;)V
Ljava/lang/invoke/Transformers$ExplicitCastArguments;->unboxNonNull(Ljava/lang/Object;Ljava/lang/Class;Ldalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/Class;)V
Ljava/lang/invoke/Transformers$ExplicitCastArguments;->unboxNull(Ldalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/Class;)V
-Ljava/lang/invoke/Transformers$FilterArguments;
Ljava/lang/invoke/Transformers$FilterArguments;-><init>(Ljava/lang/invoke/MethodHandle;I[Ljava/lang/invoke/MethodHandle;)V
Ljava/lang/invoke/Transformers$FilterArguments;->deriveType(Ljava/lang/invoke/MethodHandle;I[Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodType;
Ljava/lang/invoke/Transformers$FilterArguments;->filters:[Ljava/lang/invoke/MethodHandle;
Ljava/lang/invoke/Transformers$FilterArguments;->pos:I
Ljava/lang/invoke/Transformers$FilterArguments;->target:Ljava/lang/invoke/MethodHandle;
Ljava/lang/invoke/Transformers$FilterArguments;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$FilterReturnValue;
Ljava/lang/invoke/Transformers$FilterReturnValue;-><init>(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V
Ljava/lang/invoke/Transformers$FilterReturnValue;->allArgs:Ldalvik/system/EmulatedStackFrame$Range;
Ljava/lang/invoke/Transformers$FilterReturnValue;->filter:Ljava/lang/invoke/MethodHandle;
Ljava/lang/invoke/Transformers$FilterReturnValue;->target:Ljava/lang/invoke/MethodHandle;
Ljava/lang/invoke/Transformers$FilterReturnValue;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$FoldArguments;
Ljava/lang/invoke/Transformers$FoldArguments;-><init>(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V
Ljava/lang/invoke/Transformers$FoldArguments;->combiner:Ljava/lang/invoke/MethodHandle;
Ljava/lang/invoke/Transformers$FoldArguments;->combinerArgs:Ldalvik/system/EmulatedStackFrame$Range;
@@ -111108,14 +104204,12 @@
Ljava/lang/invoke/Transformers$FoldArguments;->target:Ljava/lang/invoke/MethodHandle;
Ljava/lang/invoke/Transformers$FoldArguments;->targetArgs:Ldalvik/system/EmulatedStackFrame$Range;
Ljava/lang/invoke/Transformers$FoldArguments;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$GuardWithTest;
Ljava/lang/invoke/Transformers$GuardWithTest;-><init>(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V
Ljava/lang/invoke/Transformers$GuardWithTest;->fallback:Ljava/lang/invoke/MethodHandle;
Ljava/lang/invoke/Transformers$GuardWithTest;->target:Ljava/lang/invoke/MethodHandle;
Ljava/lang/invoke/Transformers$GuardWithTest;->test:Ljava/lang/invoke/MethodHandle;
Ljava/lang/invoke/Transformers$GuardWithTest;->testArgsRange:Ldalvik/system/EmulatedStackFrame$Range;
Ljava/lang/invoke/Transformers$GuardWithTest;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$InsertArguments;
Ljava/lang/invoke/Transformers$InsertArguments;-><init>(Ljava/lang/invoke/MethodHandle;I[Ljava/lang/Object;)V
Ljava/lang/invoke/Transformers$InsertArguments;->pos:I
Ljava/lang/invoke/Transformers$InsertArguments;->range1:Ldalvik/system/EmulatedStackFrame$Range;
@@ -111123,30 +104217,24 @@
Ljava/lang/invoke/Transformers$InsertArguments;->target:Ljava/lang/invoke/MethodHandle;
Ljava/lang/invoke/Transformers$InsertArguments;->transform(Ldalvik/system/EmulatedStackFrame;)V
Ljava/lang/invoke/Transformers$InsertArguments;->values:[Ljava/lang/Object;
-Ljava/lang/invoke/Transformers$Invoker;
Ljava/lang/invoke/Transformers$Invoker;-><init>(Ljava/lang/invoke/MethodType;Z)V
Ljava/lang/invoke/Transformers$Invoker;->copyRange:Ldalvik/system/EmulatedStackFrame$Range;
Ljava/lang/invoke/Transformers$Invoker;->isExactInvoker:Z
Ljava/lang/invoke/Transformers$Invoker;->targetType:Ljava/lang/invoke/MethodType;
Ljava/lang/invoke/Transformers$Invoker;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$PermuteArguments;
Ljava/lang/invoke/Transformers$PermuteArguments;-><init>(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;[I)V
Ljava/lang/invoke/Transformers$PermuteArguments;->reorder:[I
Ljava/lang/invoke/Transformers$PermuteArguments;->target:Ljava/lang/invoke/MethodHandle;
Ljava/lang/invoke/Transformers$PermuteArguments;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$ReferenceArrayElementGetter;
Ljava/lang/invoke/Transformers$ReferenceArrayElementGetter;-><init>(Ljava/lang/Class;)V
Ljava/lang/invoke/Transformers$ReferenceArrayElementGetter;->arrayClass:Ljava/lang/Class;
Ljava/lang/invoke/Transformers$ReferenceArrayElementGetter;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$ReferenceArrayElementSetter;
Ljava/lang/invoke/Transformers$ReferenceArrayElementSetter;-><init>(Ljava/lang/Class;)V
Ljava/lang/invoke/Transformers$ReferenceArrayElementSetter;->arrayClass:Ljava/lang/Class;
Ljava/lang/invoke/Transformers$ReferenceArrayElementSetter;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$ReferenceIdentity;
Ljava/lang/invoke/Transformers$ReferenceIdentity;-><init>(Ljava/lang/Class;)V
Ljava/lang/invoke/Transformers$ReferenceIdentity;->transform(Ldalvik/system/EmulatedStackFrame;)V
Ljava/lang/invoke/Transformers$ReferenceIdentity;->type:Ljava/lang/Class;
-Ljava/lang/invoke/Transformers$Spreader;
Ljava/lang/invoke/Transformers$Spreader;-><init>(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;I)V
Ljava/lang/invoke/Transformers$Spreader;->arrayOffset:I
Ljava/lang/invoke/Transformers$Spreader;->arrayTypeChar:C
@@ -111163,10 +104251,8 @@
Ljava/lang/invoke/Transformers$Spreader;->spreadArray([ZLdalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/invoke/MethodType;II)V
Ljava/lang/invoke/Transformers$Spreader;->target:Ljava/lang/invoke/MethodHandle;
Ljava/lang/invoke/Transformers$Spreader;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$Transformer;
Ljava/lang/invoke/Transformers$Transformer;-><init>(Ljava/lang/invoke/MethodType;)V
Ljava/lang/invoke/Transformers$Transformer;-><init>(Ljava/lang/invoke/MethodType;I)V
-Ljava/lang/invoke/Transformers$VarargsCollector;
Ljava/lang/invoke/Transformers$VarargsCollector;-><init>(Ljava/lang/invoke/MethodHandle;)V
Ljava/lang/invoke/Transformers$VarargsCollector;->arityArgumentsConvertible([Ljava/lang/Class;ILjava/lang/Class;)Z
Ljava/lang/invoke/Transformers$VarargsCollector;->booleanArray(Ldalvik/system/EmulatedStackFrame$StackFrameReader;[Ljava/lang/Class;II)Ljava/lang/Object;
@@ -111187,11 +104273,8 @@
Ljava/lang/invoke/Transformers$VarargsCollector;->target:Ljava/lang/invoke/MethodHandle;
Ljava/lang/invoke/Transformers$VarargsCollector;->throwWrongMethodTypeException(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;)V
Ljava/lang/invoke/Transformers$VarargsCollector;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers;
Ljava/lang/invoke/Transformers;-><init>()V
Ljava/lang/invoke/Transformers;->TRANSFORM_INTERNAL:Ljava/lang/reflect/Method;
-Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;-><init>(Ljava/lang/String;Ljava/lang/invoke/VarHandle$AccessType;)V
Ljava/lang/invoke/VarHandle$AccessMode;->at:Ljava/lang/invoke/VarHandle$AccessType;
Ljava/lang/invoke/VarHandle$AccessMode;->COMPARE_AND_EXCHANGE:Ljava/lang/invoke/VarHandle$AccessMode;
Ljava/lang/invoke/VarHandle$AccessMode;->COMPARE_AND_EXCHANGE_ACQUIRE:Ljava/lang/invoke/VarHandle$AccessMode;
@@ -111230,13 +104313,8 @@
Ljava/lang/invoke/VarHandle$AccessMode;->WEAK_COMPARE_AND_SET_ACQUIRE:Ljava/lang/invoke/VarHandle$AccessMode;
Ljava/lang/invoke/VarHandle$AccessMode;->WEAK_COMPARE_AND_SET_PLAIN:Ljava/lang/invoke/VarHandle$AccessMode;
Ljava/lang/invoke/VarHandle$AccessMode;->WEAK_COMPARE_AND_SET_RELEASE:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessType;
-Ljava/lang/invoke/VarHandle$AccessType;-><init>()V
-Ljava/lang/invoke/VarHandle$AccessType;->accessModeType(Ljava/lang/Class;Ljava/lang/Class;[[Ljava/lang/Class;)Ljava/lang/invoke/MethodType;
-Ljava/lang/invoke/VarHandle$AccessType;->allocateParameters(ILjava/lang/Class;[[Ljava/lang/Class;)[Ljava/lang/Class;
Ljava/lang/invoke/VarHandle$AccessType;->COMPARE_AND_EXCHANGE:Ljava/lang/invoke/VarHandle$AccessType;
Ljava/lang/invoke/VarHandle$AccessType;->COMPARE_AND_SWAP:Ljava/lang/invoke/VarHandle$AccessType;
-Ljava/lang/invoke/VarHandle$AccessType;->fillParameters([Ljava/lang/Class;Ljava/lang/Class;[[Ljava/lang/Class;)I
Ljava/lang/invoke/VarHandle$AccessType;->GET:Ljava/lang/invoke/VarHandle$AccessType;
Ljava/lang/invoke/VarHandle$AccessType;->GET_AND_UPDATE:Ljava/lang/invoke/VarHandle$AccessType;
Ljava/lang/invoke/VarHandle$AccessType;->GET_AND_UPDATE_BITWISE:Ljava/lang/invoke/VarHandle$AccessType;
@@ -111244,7 +104322,6 @@
Ljava/lang/invoke/VarHandle$AccessType;->SET:Ljava/lang/invoke/VarHandle$AccessType;
Ljava/lang/invoke/VarHandle$AccessType;->valueOf(Ljava/lang/String;)Ljava/lang/invoke/VarHandle$AccessType;
Ljava/lang/invoke/VarHandle$AccessType;->values()[Ljava/lang/invoke/VarHandle$AccessType;
-Ljava/lang/invoke/VarHandle;
Ljava/lang/invoke/VarHandle;-><init>(Ljava/lang/Class;Ljava/lang/Class;ZLjava/lang/Class;Ljava/lang/Class;)V
Ljava/lang/invoke/VarHandle;-><init>(Ljava/lang/Class;Z)V
Ljava/lang/invoke/VarHandle;-><init>(Ljava/lang/Class;ZLjava/lang/Class;)V
@@ -111269,7 +104346,6 @@
Ljava/lang/invoke/VarHandle;->WRITE_ACCESS_MODES_BIT_MASK:I
Ljava/lang/invoke/WrongMethodTypeException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
Ljava/lang/invoke/WrongMethodTypeException;-><init>(Ljava/lang/Throwable;)V
-Ljava/lang/Long$LongCache;
Ljava/lang/Long$LongCache;-><init>()V
Ljava/lang/Long$LongCache;->cache:[Ljava/lang/Long;
Ljava/lang/Long;->formatUnsignedLong(JI[CII)I
@@ -111277,7 +104353,6 @@
Ljava/lang/Long;->stringSize(J)I
Ljava/lang/Long;->toUnsignedBigInteger(J)Ljava/math/BigInteger;
Ljava/lang/Long;->toUnsignedString0(JI)Ljava/lang/String;
-Ljava/lang/Math$RandomNumberGeneratorHolder;
Ljava/lang/Math$RandomNumberGeneratorHolder;-><init>()V
Ljava/lang/Math$RandomNumberGeneratorHolder;->randomNumberGenerator:Ljava/util/Random;
Ljava/lang/Math;-><init>()V
@@ -111319,13 +104394,10 @@
Ljava/lang/Package;->specVendor:Ljava/lang/String;
Ljava/lang/Package;->specVersion:Ljava/lang/String;
Ljava/lang/Package;->urls:Ljava/util/Map;
-Ljava/lang/ProcessBuilder$NullInputStream;
Ljava/lang/ProcessBuilder$NullInputStream;-><init>()V
Ljava/lang/ProcessBuilder$NullInputStream;->INSTANCE:Ljava/lang/ProcessBuilder$NullInputStream;
-Ljava/lang/ProcessBuilder$NullOutputStream;
Ljava/lang/ProcessBuilder$NullOutputStream;-><init>()V
Ljava/lang/ProcessBuilder$NullOutputStream;->INSTANCE:Ljava/lang/ProcessBuilder$NullOutputStream;
-Ljava/lang/ProcessBuilder$Redirect$Type;-><init>()V
Ljava/lang/ProcessBuilder$Redirect;-><init>()V
Ljava/lang/ProcessBuilder$Redirect;->append()Z
Ljava/lang/ProcessBuilder;->command:Ljava/util/List;
@@ -111335,11 +104407,9 @@
Ljava/lang/ProcessBuilder;->redirectErrorStream:Z
Ljava/lang/ProcessBuilder;->redirects()[Ljava/lang/ProcessBuilder$Redirect;
Ljava/lang/ProcessBuilder;->redirects:[Ljava/lang/ProcessBuilder$Redirect;
-Ljava/lang/ref/FinalizerReference$Sentinel;
Ljava/lang/ref/FinalizerReference$Sentinel;-><init>()V
Ljava/lang/ref/FinalizerReference$Sentinel;->awaitFinalization(J)V
Ljava/lang/ref/FinalizerReference$Sentinel;->finalized:Z
-Ljava/lang/ref/FinalizerReference;
Ljava/lang/ref/FinalizerReference;-><init>(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V
Ljava/lang/ref/FinalizerReference;->enqueueSentinelReference(Ljava/lang/ref/FinalizerReference$Sentinel;)Z
Ljava/lang/ref/FinalizerReference;->finalizeAllEnqueued(J)V
@@ -111348,7 +104418,6 @@
Ljava/lang/ref/FinalizerReference;->makeCircularListIfUnenqueued()Z
Ljava/lang/ref/FinalizerReference;->prev:Ljava/lang/ref/FinalizerReference;
Ljava/lang/ref/FinalizerReference;->zombie:Ljava/lang/Object;
-Ljava/lang/ref/Reference$SinkHolder;
Ljava/lang/ref/Reference$SinkHolder;-><init>()V
Ljava/lang/ref/Reference$SinkHolder;->finalize_count:I
Ljava/lang/ref/Reference$SinkHolder;->sink:Ljava/lang/Object;
@@ -111384,14 +104453,12 @@
Ljava/lang/reflect/Constructor;-><init>()V
Ljava/lang/reflect/Constructor;-><init>(Ljava/lang/Class;Ljava/lang/Class;)V
Ljava/lang/reflect/Constructor;->hasGenericInformation()Z
-Ljava/lang/reflect/Constructor;->newInstance0([[Ljava/lang/Object;)Ljava/lang/Object;
Ljava/lang/reflect/Constructor;->newInstanceFromSerialization(Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/Object;
Ljava/lang/reflect/Constructor;->ORDER_BY_SIGNATURE:Ljava/util/Comparator;
Ljava/lang/reflect/Constructor;->serializationClass:Ljava/lang/Class;
Ljava/lang/reflect/Constructor;->serializationCtor:Ljava/lang/Class;
Ljava/lang/reflect/Constructor;->specificToGenericStringHeader(Ljava/lang/StringBuilder;)V
Ljava/lang/reflect/Constructor;->specificToStringHeader(Ljava/lang/StringBuilder;)V
-Ljava/lang/reflect/Executable$GenericInfo;
Ljava/lang/reflect/Executable$GenericInfo;-><init>(Llibcore/reflect/ListOfTypes;Llibcore/reflect/ListOfTypes;Ljava/lang/reflect/Type;[Ljava/lang/reflect/TypeVariable;)V
Ljava/lang/reflect/Executable$GenericInfo;->formalTypeParameters:[Ljava/lang/reflect/TypeVariable;
Ljava/lang/reflect/Executable$GenericInfo;->genericExceptionTypes:Llibcore/reflect/ListOfTypes;
@@ -111485,22 +104552,17 @@
Ljava/lang/reflect/Parameter;->name:Ljava/lang/String;
Ljava/lang/reflect/Parameter;->parameterClassCache:Ljava/lang/Class;
Ljava/lang/reflect/Parameter;->parameterTypeCache:Ljava/lang/reflect/Type;
-Ljava/lang/reflect/Proxy$Key1;
Ljava/lang/reflect/Proxy$Key1;-><init>(Ljava/lang/Class;)V
Ljava/lang/reflect/Proxy$Key1;->hash:I
-Ljava/lang/reflect/Proxy$Key2;
Ljava/lang/reflect/Proxy$Key2;-><init>(Ljava/lang/Class;Ljava/lang/Class;)V
Ljava/lang/reflect/Proxy$Key2;->hash:I
Ljava/lang/reflect/Proxy$Key2;->ref2:Ljava/lang/ref/WeakReference;
-Ljava/lang/reflect/Proxy$KeyFactory;
Ljava/lang/reflect/Proxy$KeyFactory;-><init>()V
Ljava/lang/reflect/Proxy$KeyFactory;->apply(Ljava/lang/ClassLoader;[Ljava/lang/Class;)Ljava/lang/Object;
-Ljava/lang/reflect/Proxy$KeyX;
Ljava/lang/reflect/Proxy$KeyX;-><init>([Ljava/lang/Class;)V
Ljava/lang/reflect/Proxy$KeyX;->equals([Ljava/lang/ref/WeakReference;[Ljava/lang/ref/WeakReference;)Z
Ljava/lang/reflect/Proxy$KeyX;->hash:I
Ljava/lang/reflect/Proxy$KeyX;->refs:[Ljava/lang/ref/WeakReference;
-Ljava/lang/reflect/Proxy$ProxyClassFactory;
Ljava/lang/reflect/Proxy$ProxyClassFactory;-><init>()V
Ljava/lang/reflect/Proxy$ProxyClassFactory;->apply(Ljava/lang/ClassLoader;[Ljava/lang/Class;)Ljava/lang/Class;
Ljava/lang/reflect/Proxy$ProxyClassFactory;->nextUniqueNumber:Ljava/util/concurrent/atomic/AtomicLong;
@@ -111511,33 +104573,25 @@
Ljava/lang/reflect/Proxy;->generateProxy(Ljava/lang/String;[Ljava/lang/Class;Ljava/lang/ClassLoader;[Ljava/lang/reflect/Method;[[Ljava/lang/Class;)Ljava/lang/Class;
Ljava/lang/reflect/Proxy;->getMethods([Ljava/lang/Class;)Ljava/util/List;
Ljava/lang/reflect/Proxy;->getMethodsRecursive([Ljava/lang/Class;Ljava/util/List;)V
-Ljava/lang/reflect/Proxy;->getProxyClass0(Ljava/lang/ClassLoader;[[Ljava/lang/Class;)Ljava/lang/Class;
Ljava/lang/reflect/Proxy;->intersectExceptions([Ljava/lang/Class;[Ljava/lang/Class;)[Ljava/lang/Class;
Ljava/lang/reflect/Proxy;->key0:Ljava/lang/Object;
Ljava/lang/reflect/Proxy;->ORDER_BY_SIGNATURE_AND_SUBTYPE:Ljava/util/Comparator;
Ljava/lang/reflect/Proxy;->proxyClassCache:Ljava/lang/reflect/WeakCache;
Ljava/lang/reflect/Proxy;->validateReturnTypes(Ljava/util/List;)V
Ljava/lang/reflect/UndeclaredThrowableException;->undeclaredThrowable:Ljava/lang/Throwable;
-Ljava/lang/reflect/WeakCache$CacheKey;
Ljava/lang/reflect/WeakCache$CacheKey;-><init>(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V
Ljava/lang/reflect/WeakCache$CacheKey;->expungeFrom(Ljava/util/concurrent/ConcurrentMap;Ljava/util/concurrent/ConcurrentMap;)V
Ljava/lang/reflect/WeakCache$CacheKey;->hash:I
Ljava/lang/reflect/WeakCache$CacheKey;->NULL_KEY:Ljava/lang/Object;
Ljava/lang/reflect/WeakCache$CacheKey;->valueOf(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)Ljava/lang/Object;
-Ljava/lang/reflect/WeakCache$CacheValue;
Ljava/lang/reflect/WeakCache$CacheValue;-><init>(Ljava/lang/Object;)V
Ljava/lang/reflect/WeakCache$CacheValue;->hash:I
-Ljava/lang/reflect/WeakCache$Factory;
-Ljava/lang/reflect/WeakCache$Factory;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/util/concurrent/ConcurrentMap;)V
Ljava/lang/reflect/WeakCache$Factory;->key:Ljava/lang/Object;
Ljava/lang/reflect/WeakCache$Factory;->parameter:Ljava/lang/Object;
Ljava/lang/reflect/WeakCache$Factory;->subKey:Ljava/lang/Object;
Ljava/lang/reflect/WeakCache$Factory;->valuesMap:Ljava/util/concurrent/ConcurrentMap;
-Ljava/lang/reflect/WeakCache$LookupValue;
Ljava/lang/reflect/WeakCache$LookupValue;-><init>(Ljava/lang/Object;)V
Ljava/lang/reflect/WeakCache$LookupValue;->value:Ljava/lang/Object;
-Ljava/lang/reflect/WeakCache$Value;
-Ljava/lang/reflect/WeakCache;
Ljava/lang/reflect/WeakCache;-><init>(Ljava/util/function/BiFunction;Ljava/util/function/BiFunction;)V
Ljava/lang/reflect/WeakCache;->containsValue(Ljava/lang/Object;)Z
Ljava/lang/reflect/WeakCache;->expungeStaleEntries()V
@@ -111559,15 +104613,12 @@
Ljava/lang/Runtime;->shutdownHooks:Ljava/util/List;
Ljava/lang/Runtime;->shuttingDown:Z
Ljava/lang/Runtime;->tracingMethods:Z
-Ljava/lang/Short$ShortCache;
Ljava/lang/Short$ShortCache;-><init>()V
Ljava/lang/Short$ShortCache;->cache:[Ljava/lang/Short;
-Ljava/lang/StrictMath$RandomNumberGeneratorHolder;
Ljava/lang/StrictMath$RandomNumberGeneratorHolder;-><init>()V
Ljava/lang/StrictMath$RandomNumberGeneratorHolder;->randomNumberGenerator:Ljava/util/Random;
Ljava/lang/StrictMath;-><init>()V
Ljava/lang/StrictMath;->floorOrCeil(DDDD)D
-Ljava/lang/String$CaseInsensitiveComparator;
Ljava/lang/String$CaseInsensitiveComparator;-><init>()V
Ljava/lang/String$CaseInsensitiveComparator;->compare(Ljava/lang/String;Ljava/lang/String;)I
Ljava/lang/String;->doReplace(CC)Ljava/lang/String;
@@ -111584,7 +104635,6 @@
Ljava/lang/StringIndexOutOfBoundsException;-><init>(III)V
Ljava/lang/StringIndexOutOfBoundsException;-><init>(Ljava/lang/String;I)V
Ljava/lang/StringIndexOutOfBoundsException;-><init>(Ljava/lang/String;II)V
-Ljava/lang/System$PropertiesWithNonOverrideableDefaults;
Ljava/lang/System$PropertiesWithNonOverrideableDefaults;-><init>(Ljava/util/Properties;)V
Ljava/lang/System$PropertiesWithNonOverrideableDefaults;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
Ljava/lang/System;->addLegacyLocaleSystemProperties()V
@@ -111626,17 +104676,13 @@
Ljava/lang/System;->setUnchangeableSystemProperty(Ljava/lang/String;Ljava/lang/String;)V
Ljava/lang/System;->specialProperties()[Ljava/lang/String;
Ljava/lang/System;->unchangeableProps:Ljava/util/Properties;
-Ljava/lang/Thread$Caches;
Ljava/lang/Thread$Caches;-><init>()V
Ljava/lang/Thread$Caches;->subclassAudits:Ljava/util/concurrent/ConcurrentMap;
Ljava/lang/Thread$Caches;->subclassAuditsQueue:Ljava/lang/ref/ReferenceQueue;
-Ljava/lang/Thread$ParkState;
Ljava/lang/Thread$ParkState;-><init>()V
Ljava/lang/Thread$ParkState;->PARKED:I
Ljava/lang/Thread$ParkState;->PREEMPTIVELY_UNPARKED:I
Ljava/lang/Thread$ParkState;->UNPARKED:I
-Ljava/lang/Thread$State;-><init>()V
-Ljava/lang/Thread$WeakClassKey;
Ljava/lang/Thread$WeakClassKey;-><init>(Ljava/lang/Class;Ljava/lang/ref/ReferenceQueue;)V
Ljava/lang/Thread$WeakClassKey;->hash:I
Ljava/lang/Thread;->auditSubclass(Ljava/lang/Class;)Z
@@ -111700,13 +104746,10 @@
Ljava/lang/ThreadGroup;->threads:[Ljava/lang/Thread;
Ljava/lang/ThreadGroup;->threadStartFailed(Ljava/lang/Thread;)V
Ljava/lang/ThreadGroup;->vmAllowSuspension:Z
-Ljava/lang/ThreadLocal$SuppliedThreadLocal;
Ljava/lang/ThreadLocal$SuppliedThreadLocal;-><init>(Ljava/util/function/Supplier;)V
Ljava/lang/ThreadLocal$SuppliedThreadLocal;->supplier:Ljava/util/function/Supplier;
-Ljava/lang/ThreadLocal$ThreadLocalMap$Entry;
Ljava/lang/ThreadLocal$ThreadLocalMap$Entry;-><init>(Ljava/lang/ThreadLocal;Ljava/lang/Object;)V
Ljava/lang/ThreadLocal$ThreadLocalMap$Entry;->value:Ljava/lang/Object;
-Ljava/lang/ThreadLocal$ThreadLocalMap;
Ljava/lang/ThreadLocal$ThreadLocalMap;-><init>(Ljava/lang/ThreadLocal$ThreadLocalMap;)V
Ljava/lang/ThreadLocal$ThreadLocalMap;-><init>(Ljava/lang/ThreadLocal;Ljava/lang/Object;)V
Ljava/lang/ThreadLocal$ThreadLocalMap;->cleanSomeSlots(II)Z
@@ -111734,20 +104777,16 @@
Ljava/lang/ThreadLocal;->nextHashCode:Ljava/util/concurrent/atomic/AtomicInteger;
Ljava/lang/ThreadLocal;->setInitialValue()Ljava/lang/Object;
Ljava/lang/ThreadLocal;->threadLocalHashCode:I
-Ljava/lang/Throwable$PrintStreamOrWriter;
Ljava/lang/Throwable$PrintStreamOrWriter;-><init>()V
Ljava/lang/Throwable$PrintStreamOrWriter;->lock()Ljava/lang/Object;
Ljava/lang/Throwable$PrintStreamOrWriter;->println(Ljava/lang/Object;)V
-Ljava/lang/Throwable$SentinelHolder;
Ljava/lang/Throwable$SentinelHolder;-><init>()V
Ljava/lang/Throwable$SentinelHolder;->STACK_TRACE_ELEMENT_SENTINEL:Ljava/lang/StackTraceElement;
Ljava/lang/Throwable$SentinelHolder;->STACK_TRACE_SENTINEL:[Ljava/lang/StackTraceElement;
-Ljava/lang/Throwable$WrappedPrintStream;
Ljava/lang/Throwable$WrappedPrintStream;-><init>(Ljava/io/PrintStream;)V
Ljava/lang/Throwable$WrappedPrintStream;->lock()Ljava/lang/Object;
Ljava/lang/Throwable$WrappedPrintStream;->println(Ljava/lang/Object;)V
Ljava/lang/Throwable$WrappedPrintStream;->printStream:Ljava/io/PrintStream;
-Ljava/lang/Throwable$WrappedPrintWriter;
Ljava/lang/Throwable$WrappedPrintWriter;-><init>(Ljava/io/PrintWriter;)V
Ljava/lang/Throwable$WrappedPrintWriter;->lock()Ljava/lang/Object;
Ljava/lang/Throwable$WrappedPrintWriter;->println(Ljava/lang/Object;)V
@@ -111798,7 +104837,6 @@
Ljava/math/BigDecimal;->valueExact(I)J
Ljava/math/BigDecimal;->zeroScaledBy(J)Ljava/math/BigDecimal;
Ljava/math/BigDecimal;->ZERO_SCALED_BY:[Ljava/math/BigDecimal;
-Ljava/math/BigInt;
Ljava/math/BigInt;-><init>()V
Ljava/math/BigInt;->add(Ljava/math/BigInt;)V
Ljava/math/BigInt;->addition(Ljava/math/BigInt;Ljava/math/BigInt;)Ljava/math/BigInt;
@@ -111877,9 +104915,7 @@
Ljava/math/MathContext;->invalidMathContext(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/IllegalArgumentException;
Ljava/math/MathContext;->precision:I
Ljava/math/MathContext;->roundingMode:Ljava/math/RoundingMode;
-Ljava/math/RoundingMode;-><init>(I)V
Ljava/math/RoundingMode;->bigDecimalRM:I
-Ljava/net/Authenticator$RequestorType;-><init>()V
Ljava/net/Authenticator;->requestingAuthType:Ljava/net/Authenticator$RequestorType;
Ljava/net/Authenticator;->requestingHost:Ljava/lang/String;
Ljava/net/Authenticator;->requestingPort:I
@@ -111892,7 +104928,6 @@
Ljava/net/BindException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
Ljava/net/ConnectException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
Ljava/net/CookieHandler;->cookieHandler:Ljava/net/CookieHandler;
-Ljava/net/CookieManager$CookiePathComparator;
Ljava/net/CookieManager$CookiePathComparator;-><init>()V
Ljava/net/CookieManager$CookiePathComparator;->compare(Ljava/net/HttpCookie;Ljava/net/HttpCookie;)I
Ljava/net/CookieManager;->cookieJar:Ljava/net/CookieStore;
@@ -111937,7 +104972,6 @@
Ljava/net/DatagramSocketImpl;->setDatagramSocket(Ljava/net/DatagramSocket;)V
Ljava/net/DatagramSocketImpl;->setOption(Ljava/net/SocketOption;Ljava/lang/Object;)V
Ljava/net/DatagramSocketImpl;->socket:Ljava/net/DatagramSocket;
-Ljava/net/HttpCookie$CookieAttributeAssignor;
Ljava/net/HttpCookie$CookieAttributeAssignor;->assign(Ljava/net/HttpCookie;Ljava/lang/String;Ljava/lang/String;)V
Ljava/net/HttpCookie;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
Ljava/net/HttpCookie;->assignAttribute(Ljava/net/HttpCookie;Ljava/lang/String;Ljava/lang/String;)V
@@ -111971,9 +105005,6 @@
Ljava/net/Inet4Address;->INADDRSZ:I
Ljava/net/Inet4Address;->LOOPBACK:Ljava/net/InetAddress;
Ljava/net/Inet4Address;->numericToTextFormat([B)Ljava/lang/String;
-Ljava/net/Inet6Address$Inet6AddressHolder;
-Ljava/net/Inet6Address$Inet6AddressHolder;-><init>()V
-Ljava/net/Inet6Address$Inet6AddressHolder;-><init>([BIZLjava/net/NetworkInterface;Z)V
Ljava/net/Inet6Address$Inet6AddressHolder;->init([BI)V
Ljava/net/Inet6Address$Inet6AddressHolder;->init([BLjava/net/NetworkInterface;)V
Ljava/net/Inet6Address$Inet6AddressHolder;->isAnyLocalAddress()Z
@@ -112006,7 +105037,6 @@
Ljava/net/Inet6Address;->LOOPBACK:Ljava/net/InetAddress;
Ljava/net/Inet6Address;->numericToTextFormat([B)Ljava/lang/String;
Ljava/net/Inet6Address;->UNSAFE:Lsun/misc/Unsafe;
-Ljava/net/InetAddress$InetAddressHolder;
Ljava/net/InetAddress$InetAddressHolder;-><init>()V
Ljava/net/InetAddress$InetAddressHolder;-><init>(Ljava/lang/String;II)V
Ljava/net/InetAddress$InetAddressHolder;->getAddress()I
@@ -112030,14 +105060,12 @@
Ljava/net/InetAddress;->NETID_UNSET:I
Ljava/net/InetAddress;->parseNumericAddressNoThrow(Ljava/lang/String;)Ljava/net/InetAddress;
Ljava/net/InetAddress;->readObjectNoData(Ljava/io/ObjectInputStream;)V
-Ljava/net/InetAddressImpl;
Ljava/net/InetAddressImpl;->anyLocalAddress()Ljava/net/InetAddress;
Ljava/net/InetAddressImpl;->clearAddressCache()V
Ljava/net/InetAddressImpl;->getHostByAddr([B)Ljava/lang/String;
Ljava/net/InetAddressImpl;->isReachable(Ljava/net/InetAddress;ILjava/net/NetworkInterface;I)Z
Ljava/net/InetAddressImpl;->lookupAllHostAddr(Ljava/lang/String;I)[Ljava/net/InetAddress;
Ljava/net/InetAddressImpl;->loopbackAddresses()[Ljava/net/InetAddress;
-Ljava/net/InetSocketAddress$InetSocketAddressHolder;
Ljava/net/InetSocketAddress$InetSocketAddressHolder;-><init>(Ljava/lang/String;Ljava/net/InetAddress;I)V
Ljava/net/InetSocketAddress$InetSocketAddressHolder;->addr:Ljava/net/InetAddress;
Ljava/net/InetSocketAddress$InetSocketAddressHolder;->getAddress()Ljava/net/InetAddress;
@@ -112053,7 +105081,6 @@
Ljava/net/InetSocketAddress;->checkPort(I)I
Ljava/net/InetSocketAddress;->FIELDS_OFFSET:J
Ljava/net/InetSocketAddress;->UNSAFE:Lsun/misc/Unsafe;
-Ljava/net/InMemoryCookieStore;
Ljava/net/InMemoryCookieStore;-><init>()V
Ljava/net/InMemoryCookieStore;-><init>(I)V
Ljava/net/InMemoryCookieStore;->addIndex(Ljava/util/Map;Ljava/lang/Object;Ljava/net/HttpCookie;)V
@@ -112096,7 +105123,6 @@
Ljava/net/PasswordAuthentication;->userName:Ljava/lang/String;
Ljava/net/PortUnreachableException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
Ljava/net/ProtocolException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
-Ljava/net/Proxy$Type;-><init>()V
Ljava/net/Proxy;->sa:Ljava/net/SocketAddress;
Ljava/net/Proxy;->type:Ljava/net/Proxy$Type;
Ljava/net/ProxySelector;->theProxySelector:Ljava/net/ProxySelector;
@@ -112145,14 +105171,10 @@
Ljava/net/SocketImpl;->setSocket(Ljava/net/Socket;)V
Ljava/net/SocketTimeoutException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
Ljava/net/SocketTimeoutException;-><init>(Ljava/lang/Throwable;)V
-Ljava/net/StandardProtocolFamily;-><init>()V
-Ljava/net/StandardSocketOptions$StdSocketOption;
Ljava/net/StandardSocketOptions$StdSocketOption;-><init>(Ljava/lang/String;Ljava/lang/Class;)V
Ljava/net/StandardSocketOptions$StdSocketOption;->name:Ljava/lang/String;
Ljava/net/StandardSocketOptions$StdSocketOption;->type:Ljava/lang/Class;
Ljava/net/StandardSocketOptions;-><init>()V
-Ljava/net/URI$Parser;
-Ljava/net/URI$Parser;-><init>(Ljava/lang/String;)V
Ljava/net/URI$Parser;->at(IIC)Z
Ljava/net/URI$Parser;->at(IILjava/lang/String;)Z
Ljava/net/URI$Parser;->charAt(I)C
@@ -112336,7 +105358,6 @@
Ljava/net/URLConnection;->typeToPackageName(Ljava/lang/String;)Ljava/lang/String;
Ljava/net/URLDecoder;->dfltEncName:Ljava/lang/String;
Ljava/net/URLDecoder;->isValidHexChar(C)Z
-Ljava/net/UrlDeserializedState;
Ljava/net/UrlDeserializedState;-><init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
Ljava/net/UrlDeserializedState;->authority:Ljava/lang/String;
Ljava/net/UrlDeserializedState;->file:Ljava/lang/String;
@@ -112411,14 +105432,12 @@
Ljava/nio/channels/AsynchronousFileChannel;->NO_ATTRIBUTES:[Ljava/nio/file/attribute/FileAttribute;
Ljava/nio/channels/AsynchronousServerSocketChannel;->provider:Ljava/nio/channels/spi/AsynchronousChannelProvider;
Ljava/nio/channels/AsynchronousSocketChannel;->provider:Ljava/nio/channels/spi/AsynchronousChannelProvider;
-Ljava/nio/channels/Channels$ReadableByteChannelImpl;
Ljava/nio/channels/Channels$ReadableByteChannelImpl;-><init>(Ljava/io/InputStream;)V
Ljava/nio/channels/Channels$ReadableByteChannelImpl;->buf:[B
Ljava/nio/channels/Channels$ReadableByteChannelImpl;->in:Ljava/io/InputStream;
Ljava/nio/channels/Channels$ReadableByteChannelImpl;->open:Z
Ljava/nio/channels/Channels$ReadableByteChannelImpl;->readLock:Ljava/lang/Object;
Ljava/nio/channels/Channels$ReadableByteChannelImpl;->TRANSFER_SIZE:I
-Ljava/nio/channels/Channels$WritableByteChannelImpl;
Ljava/nio/channels/Channels$WritableByteChannelImpl;-><init>(Ljava/io/OutputStream;)V
Ljava/nio/channels/Channels$WritableByteChannelImpl;->buf:[B
Ljava/nio/channels/Channels$WritableByteChannelImpl;->open:Z
@@ -112460,7 +105479,6 @@
Ljava/nio/channels/spi/AbstractSelector;->interruptor:Lsun/nio/ch/Interruptible;
Ljava/nio/channels/spi/AbstractSelector;->provider:Ljava/nio/channels/spi/SelectorProvider;
Ljava/nio/channels/spi/AbstractSelector;->selectorOpen:Ljava/util/concurrent/atomic/AtomicBoolean;
-Ljava/nio/channels/spi/AsynchronousChannelProvider$ProviderHolder;
Ljava/nio/channels/spi/AsynchronousChannelProvider$ProviderHolder;-><init>()V
Ljava/nio/channels/spi/AsynchronousChannelProvider$ProviderHolder;->load()Ljava/nio/channels/spi/AsynchronousChannelProvider;
Ljava/nio/channels/spi/AsynchronousChannelProvider$ProviderHolder;->loadProviderAsService()Ljava/nio/channels/spi/AsynchronousChannelProvider;
@@ -112525,7 +105543,6 @@
Ljava/nio/charset/CharsetEncoder;->ST_RESET:I
Ljava/nio/charset/CharsetEncoder;->throwIllegalStateException(II)V
Ljava/nio/charset/CharsetEncoder;->unmappableCharacterAction:Ljava/nio/charset/CodingErrorAction;
-Ljava/nio/charset/CoderResult$Cache;
Ljava/nio/charset/CoderResult$Cache;-><init>()V
Ljava/nio/charset/CoderResult$Cache;->cache:Ljava/util/Map;
Ljava/nio/charset/CoderResult$Cache;->create(I)Ljava/nio/charset/CoderResult;
@@ -112545,7 +105562,6 @@
Ljava/nio/charset/CodingErrorAction;->name:Ljava/lang/String;
Ljava/nio/charset/IllegalCharsetNameException;->charsetName:Ljava/lang/String;
Ljava/nio/charset/MalformedInputException;->inputLength:I
-Ljava/nio/charset/ModifiedUtf8;
Ljava/nio/charset/ModifiedUtf8;-><init>()V
Ljava/nio/charset/ModifiedUtf8;->countBytes(Ljava/lang/String;Z)J
Ljava/nio/charset/ModifiedUtf8;->decode([B[CII)Ljava/lang/String;
@@ -112554,7 +105570,6 @@
Ljava/nio/charset/StandardCharsets;-><init>()V
Ljava/nio/charset/UnmappableCharacterException;->inputLength:I
Ljava/nio/charset/UnsupportedCharsetException;->charsetName:Ljava/lang/String;
-Ljava/nio/DirectByteBuffer$MemoryRef;
Ljava/nio/DirectByteBuffer$MemoryRef;-><init>(I)V
Ljava/nio/DirectByteBuffer$MemoryRef;-><init>(JLjava/lang/Object;)V
Ljava/nio/DirectByteBuffer$MemoryRef;->allocatedAddress:J
@@ -112564,7 +105579,6 @@
Ljava/nio/DirectByteBuffer$MemoryRef;->isFreed:Z
Ljava/nio/DirectByteBuffer$MemoryRef;->offset:I
Ljava/nio/DirectByteBuffer$MemoryRef;->originalBufferObject:Ljava/lang/Object;
-Ljava/nio/DirectByteBuffer;
Ljava/nio/DirectByteBuffer;-><init>(IJLjava/io/FileDescriptor;Ljava/lang/Runnable;Z)V
Ljava/nio/DirectByteBuffer;-><init>(ILjava/nio/DirectByteBuffer$MemoryRef;)V
Ljava/nio/DirectByteBuffer;-><init>(Ljava/nio/DirectByteBuffer$MemoryRef;IIIII)V
@@ -112620,7 +105634,6 @@
Ljava/nio/DoubleBuffer;->hb:[D
Ljava/nio/DoubleBuffer;->isReadOnly:Z
Ljava/nio/DoubleBuffer;->offset:I
-Ljava/nio/file/AccessMode;-><init>()V
Ljava/nio/file/attribute/AclEntry$Builder;-><init>(Ljava/nio/file/attribute/AclEntryType;Ljava/nio/file/attribute/UserPrincipal;Ljava/util/Set;Ljava/util/Set;)V
Ljava/nio/file/attribute/AclEntry$Builder;->checkSet(Ljava/util/Set;Ljava/lang/Class;)V
Ljava/nio/file/attribute/AclEntry$Builder;->flags:Ljava/util/Set;
@@ -112634,9 +105647,6 @@
Ljava/nio/file/attribute/AclEntry;->perms:Ljava/util/Set;
Ljava/nio/file/attribute/AclEntry;->type:Ljava/nio/file/attribute/AclEntryType;
Ljava/nio/file/attribute/AclEntry;->who:Ljava/nio/file/attribute/UserPrincipal;
-Ljava/nio/file/attribute/AclEntryFlag;-><init>()V
-Ljava/nio/file/attribute/AclEntryPermission;-><init>()V
-Ljava/nio/file/attribute/AclEntryType;-><init>()V
Ljava/nio/file/attribute/FileTime;-><init>(JLjava/util/concurrent/TimeUnit;Ljava/time/Instant;)V
Ljava/nio/file/attribute/FileTime;->append(Ljava/lang/StringBuilder;II)Ljava/lang/StringBuilder;
Ljava/nio/file/attribute/FileTime;->DAYS_PER_10000_YEARS:J
@@ -112661,7 +105671,6 @@
Ljava/nio/file/attribute/FileTime;->unit:Ljava/util/concurrent/TimeUnit;
Ljava/nio/file/attribute/FileTime;->value:J
Ljava/nio/file/attribute/FileTime;->valueAsString:Ljava/lang/String;
-Ljava/nio/file/attribute/PosixFilePermission;-><init>()V
Ljava/nio/file/attribute/PosixFilePermissions;-><init>()V
Ljava/nio/file/attribute/PosixFilePermissions;->isR(C)Z
Ljava/nio/file/attribute/PosixFilePermissions;->isSet(CC)Z
@@ -112669,11 +105678,9 @@
Ljava/nio/file/attribute/PosixFilePermissions;->isX(C)Z
Ljava/nio/file/attribute/PosixFilePermissions;->writeBits(Ljava/lang/StringBuilder;ZZZ)V
Ljava/nio/file/attribute/UserPrincipalNotFoundException;->name:Ljava/lang/String;
-Ljava/nio/file/Files$AcceptAllFilter;
Ljava/nio/file/Files$AcceptAllFilter;-><init>()V
Ljava/nio/file/Files$AcceptAllFilter;->accept(Ljava/nio/file/Path;)Z
Ljava/nio/file/Files$AcceptAllFilter;->FILTER:Ljava/nio/file/Files$AcceptAllFilter;
-Ljava/nio/file/Files$FileTypeDetectors;
Ljava/nio/file/Files$FileTypeDetectors;-><init>()V
Ljava/nio/file/Files$FileTypeDetectors;->createDefaultFileTypeDetector()Ljava/nio/file/spi/FileTypeDetector;
Ljava/nio/file/Files$FileTypeDetectors;->defaultFileTypeDetector:Ljava/nio/file/spi/FileTypeDetector;
@@ -112683,25 +105690,18 @@
Ljava/nio/file/Files;->asUncheckedRunnable(Ljava/io/Closeable;)Ljava/lang/Runnable;
Ljava/nio/file/Files;->BUFFER_SIZE:I
Ljava/nio/file/Files;->copy(Ljava/io/InputStream;Ljava/io/OutputStream;)J
-Ljava/nio/file/Files;->createAndCheckIsDirectory(Ljava/nio/file/Path;[[Ljava/nio/file/attribute/FileAttribute;)V
-Ljava/nio/file/Files;->followLinks([[Ljava/nio/file/LinkOption;)Z
-Ljava/nio/file/Files;->isAccessible(Ljava/nio/file/Path;[[Ljava/nio/file/AccessMode;)Z
Ljava/nio/file/Files;->MAX_BUFFER_SIZE:I
Ljava/nio/file/Files;->provider(Ljava/nio/file/Path;)Ljava/nio/file/spi/FileSystemProvider;
Ljava/nio/file/Files;->read(Ljava/io/InputStream;I)[B
Ljava/nio/file/FileSystemException;->file:Ljava/lang/String;
Ljava/nio/file/FileSystemException;->other:Ljava/lang/String;
-Ljava/nio/file/FileSystems$DefaultFileSystemHolder;
Ljava/nio/file/FileSystems$DefaultFileSystemHolder;-><init>()V
Ljava/nio/file/FileSystems$DefaultFileSystemHolder;->defaultFileSystem()Ljava/nio/file/FileSystem;
Ljava/nio/file/FileSystems$DefaultFileSystemHolder;->defaultFileSystem:Ljava/nio/file/FileSystem;
Ljava/nio/file/FileSystems$DefaultFileSystemHolder;->getDefaultProvider()Ljava/nio/file/spi/FileSystemProvider;
Ljava/nio/file/FileSystems;-><init>()V
-Ljava/nio/file/FileVisitOption;-><init>()V
-Ljava/nio/file/FileVisitResult;-><init>()V
Ljava/nio/file/InvalidPathException;->index:I
Ljava/nio/file/InvalidPathException;->input:Ljava/lang/String;
-Ljava/nio/file/LinkOption;-><init>()V
Ljava/nio/file/LinkPermission;->checkName(Ljava/lang/String;)V
Ljava/nio/file/Paths;-><init>()V
Ljava/nio/file/spi/FileSystemProvider;-><init>(Ljava/lang/Void;)V
@@ -112712,9 +105712,6 @@
Ljava/nio/file/spi/FileSystemProvider;->lock:Ljava/lang/Object;
Ljava/nio/file/spi/FileTypeDetector;-><init>(Ljava/lang/Void;)V
Ljava/nio/file/spi/FileTypeDetector;->checkPermission()Ljava/lang/Void;
-Ljava/nio/file/StandardCopyOption;-><init>()V
-Ljava/nio/file/StandardOpenOption;-><init>()V
-Ljava/nio/file/StandardWatchEventKinds$StdWatchEventKind;
Ljava/nio/file/StandardWatchEventKinds$StdWatchEventKind;-><init>(Ljava/lang/String;Ljava/lang/Class;)V
Ljava/nio/file/StandardWatchEventKinds$StdWatchEventKind;->name:Ljava/lang/String;
Ljava/nio/file/StandardWatchEventKinds$StdWatchEventKind;->type:Ljava/lang/Class;
@@ -112752,9 +105749,7 @@
Ljava/nio/MappedByteBuffer;->mappingLength(J)J
Ljava/nio/MappedByteBuffer;->mappingOffset()J
Ljava/nio/MappedByteBuffer;->unused:B
-Ljava/nio/NIOAccess;
Ljava/nio/NIOAccess;-><init>()V
-Ljava/nio/NioUtils;
Ljava/nio/NioUtils;-><init>()V
Ljava/nio/NioUtils;->getFD(Ljava/nio/channels/FileChannel;)Ljava/io/FileDescriptor;
Ljava/nio/NioUtils;->newFileChannel(Ljava/io/Closeable;Ljava/io/FileDescriptor;I)Ljava/nio/channels/FileChannel;
@@ -112796,7 +105791,6 @@
Ljava/security/cert/CertPathValidator;->CPV_TYPE:Ljava/lang/String;
Ljava/security/cert/CertPathValidator;->provider:Ljava/security/Provider;
Ljava/security/cert/CertPathValidator;->validatorSpi:Ljava/security/cert/CertPathValidatorSpi;
-Ljava/security/cert/CertPathValidatorException$BasicReason;-><init>()V
Ljava/security/cert/CertPathValidatorException;->certPath:Ljava/security/cert/CertPath;
Ljava/security/cert/CertPathValidatorException;->index:I
Ljava/security/cert/CertPathValidatorException;->reason:Ljava/security/cert/CertPathValidatorException$Reason;
@@ -112808,7 +105802,6 @@
Ljava/security/cert/CertStore;->type:Ljava/lang/String;
Ljava/security/cert/CollectionCertStoreParameters;->coll:Ljava/util/Collection;
Ljava/security/cert/CRL;->type:Ljava/lang/String;
-Ljava/security/cert/CRLReason;-><init>()V
Ljava/security/cert/LDAPCertStoreParameters;->LDAP_DEFAULT_PORT:I
Ljava/security/cert/LDAPCertStoreParameters;->port:I
Ljava/security/cert/LDAPCertStoreParameters;->serverName:Ljava/lang/String;
@@ -112829,8 +105822,6 @@
Ljava/security/cert/PKIXParameters;->sigProvider:Ljava/lang/String;
Ljava/security/cert/PKIXParameters;->unmodInitialPolicies:Ljava/util/Set;
Ljava/security/cert/PKIXParameters;->unmodTrustAnchors:Ljava/util/Set;
-Ljava/security/cert/PKIXReason;-><init>()V
-Ljava/security/cert/PKIXRevocationChecker$Option;-><init>()V
Ljava/security/cert/PKIXRevocationChecker;->ocspExtensions:Ljava/util/List;
Ljava/security/cert/PKIXRevocationChecker;->ocspResponder:Ljava/net/URI;
Ljava/security/cert/PKIXRevocationChecker;->ocspResponderCert:Ljava/security/cert/X509Certificate;
@@ -112934,7 +105925,6 @@
Ljava/security/CodeSigner;->signerCertPath:Ljava/security/cert/CertPath;
Ljava/security/CodeSigner;->timestamp:Ljava/security/Timestamp;
Ljava/security/CodeSource;->location:Ljava/net/URL;
-Ljava/security/CryptoPrimitive;-><init>()V
Ljava/security/DigestInputStream;->on:Z
Ljava/security/DigestOutputStream;->on:Z
Ljava/security/DomainLoadStoreParameter;->configuration:Ljava/net/URI;
@@ -112964,7 +105954,6 @@
Ljava/security/KeyFactory;->spi:Ljava/security/KeyFactorySpi;
Ljava/security/KeyPair;->privateKey:Ljava/security/PrivateKey;
Ljava/security/KeyPair;->publicKey:Ljava/security/PublicKey;
-Ljava/security/KeyPairGenerator$Delegate;
Ljava/security/KeyPairGenerator$Delegate;-><init>(Ljava/security/KeyPairGeneratorSpi;Ljava/lang/String;)V
Ljava/security/KeyPairGenerator$Delegate;-><init>(Lsun/security/jca/GetInstance$Instance;Ljava/util/Iterator;Ljava/lang/String;)V
Ljava/security/KeyPairGenerator$Delegate;->disableFailover()V
@@ -112982,7 +105971,6 @@
Ljava/security/KeyPairGenerator;->algorithm:Ljava/lang/String;
Ljava/security/KeyPairGenerator;->disableFailover()V
Ljava/security/KeyPairGenerator;->provider:Ljava/security/Provider;
-Ljava/security/KeyRep$Type;-><init>()V
Ljava/security/KeyRep;->algorithm:Ljava/lang/String;
Ljava/security/KeyRep;->encoded:[B
Ljava/security/KeyRep;->format:Ljava/lang/String;
@@ -112990,7 +105978,6 @@
Ljava/security/KeyRep;->RAW:Ljava/lang/String;
Ljava/security/KeyRep;->type:Ljava/security/KeyRep$Type;
Ljava/security/KeyRep;->X509:Ljava/lang/String;
-Ljava/security/KeyStore$Builder$FileBuilder;
Ljava/security/KeyStore$Builder$FileBuilder;-><init>(Ljava/lang/String;Ljava/security/Provider;Ljava/io/File;Ljava/security/KeyStore$ProtectionParameter;Ljava/security/AccessControlContext;)V
Ljava/security/KeyStore$Builder$FileBuilder;->context:Ljava/security/AccessControlContext;
Ljava/security/KeyStore$Builder$FileBuilder;->file:Ljava/io/File;
@@ -113011,7 +105998,6 @@
Ljava/security/KeyStore$PrivateKeyEntry;->privKey:Ljava/security/PrivateKey;
Ljava/security/KeyStore$SecretKeyEntry;->attributes:Ljava/util/Set;
Ljava/security/KeyStore$SecretKeyEntry;->sKey:Ljavax/crypto/SecretKey;
-Ljava/security/KeyStore$SimpleLoadStoreParameter;
Ljava/security/KeyStore$SimpleLoadStoreParameter;-><init>(Ljava/security/KeyStore$ProtectionParameter;)V
Ljava/security/KeyStore$SimpleLoadStoreParameter;->protection:Ljava/security/KeyStore$ProtectionParameter;
Ljava/security/KeyStore$TrustedCertificateEntry;->attributes:Ljava/util/Set;
@@ -113020,7 +106006,6 @@
Ljava/security/KeyStore;->KEYSTORE_TYPE:Ljava/lang/String;
Ljava/security/KeyStore;->provider:Ljava/security/Provider;
Ljava/security/KeyStore;->type:Ljava/lang/String;
-Ljava/security/MessageDigest$Delegate;
Ljava/security/MessageDigest$Delegate;-><init>(Ljava/security/MessageDigestSpi;Ljava/lang/String;)V
Ljava/security/MessageDigest$Delegate;->digestSpi:Ljava/security/MessageDigestSpi;
Ljava/security/MessageDigest;->algorithm:Ljava/lang/String;
@@ -113037,10 +106022,8 @@
Ljava/security/PKCS12Attribute;->name:Ljava/lang/String;
Ljava/security/PKCS12Attribute;->parse([B)V
Ljava/security/PKCS12Attribute;->value:Ljava/lang/String;
-Ljava/security/Policy$UnsupportedEmptyCollection;
Ljava/security/Policy$UnsupportedEmptyCollection;-><init>()V
Ljava/security/PrivilegedActionException;->exception:Ljava/lang/Exception;
-Ljava/security/Provider$EngineDescription;
Ljava/security/Provider$EngineDescription;-><init>(Ljava/lang/String;ZLjava/lang/String;)V
Ljava/security/Provider$EngineDescription;->constructorParameterClass:Ljava/lang/Class;
Ljava/security/Provider$EngineDescription;->constructorParameterClassName:Ljava/lang/String;
@@ -113070,13 +106053,11 @@
Ljava/security/Provider$Service;->supportsKeyClass(Ljava/security/Key;)Z
Ljava/security/Provider$Service;->supportsKeyFormat(Ljava/security/Key;)Z
Ljava/security/Provider$Service;->type:Ljava/lang/String;
-Ljava/security/Provider$ServiceKey;
Ljava/security/Provider$ServiceKey;-><init>(Ljava/lang/String;Ljava/lang/String;Z)V
Ljava/security/Provider$ServiceKey;->algorithm:Ljava/lang/String;
Ljava/security/Provider$ServiceKey;->matches(Ljava/lang/String;Ljava/lang/String;)Z
Ljava/security/Provider$ServiceKey;->originalAlgorithm:Ljava/lang/String;
Ljava/security/Provider$ServiceKey;->type:Ljava/lang/String;
-Ljava/security/Provider$UString;
Ljava/security/Provider$UString;-><init>(Ljava/lang/String;)V
Ljava/security/Provider$UString;->lowerString:Ljava/lang/String;
Ljava/security/Provider$UString;->string:Ljava/lang/String;
@@ -113134,7 +106115,6 @@
Ljava/security/SecureClassLoader;->getProtectionDomain(Ljava/security/CodeSource;)Ljava/security/ProtectionDomain;
Ljava/security/SecureClassLoader;->initialized:Z
Ljava/security/SecureClassLoader;->pdcache:Ljava/util/HashMap;
-Ljava/security/SecureRandom$StrongPatternHolder;
Ljava/security/SecureRandom$StrongPatternHolder;-><init>()V
Ljava/security/SecureRandom$StrongPatternHolder;->pattern:Ljava/util/regex/Pattern;
Ljava/security/SecureRandom;-><init>(Ljava/security/SecureRandomSpi;Ljava/security/Provider;Ljava/lang/String;)V
@@ -113151,7 +106131,6 @@
Ljava/security/SecureRandom;->secureRandomSpi:Ljava/security/SecureRandomSpi;
Ljava/security/SecureRandom;->seedGenerator:Ljava/security/SecureRandom;
Ljava/security/SecureRandom;->state:[B
-Ljava/security/Security$ProviderProperty;
Ljava/security/Security$ProviderProperty;-><init>()V
Ljava/security/Security$ProviderProperty;->className:Ljava/lang/String;
Ljava/security/Security$ProviderProperty;->provider:Ljava/security/Provider;
@@ -113176,11 +106155,9 @@
Ljava/security/Security;->props:Ljava/util/Properties;
Ljava/security/Security;->spiMap:Ljava/util/Map;
Ljava/security/Security;->version:Ljava/util/concurrent/atomic/AtomicInteger;
-Ljava/security/Signature$CipherAdapter;
Ljava/security/Signature$CipherAdapter;-><init>(Ljavax/crypto/Cipher;)V
Ljava/security/Signature$CipherAdapter;->cipher:Ljavax/crypto/Cipher;
Ljava/security/Signature$CipherAdapter;->data:Ljava/io/ByteArrayOutputStream;
-Ljava/security/Signature$Delegate;
Ljava/security/Signature$Delegate;-><init>(Ljava/lang/String;)V
Ljava/security/Signature$Delegate;-><init>(Ljava/security/SignatureSpi;Ljava/lang/String;)V
Ljava/security/Signature$Delegate;->chooseFirstProvider()V
@@ -113278,13 +106255,11 @@
Ljava/security/Timestamp;->signerCertPath:Ljava/security/cert/CertPath;
Ljava/security/Timestamp;->timestamp:Ljava/util/Date;
Ljava/sql/BatchUpdateException;->updateCounts:[I
-Ljava/sql/ClientInfoStatus;-><init>()V
Ljava/sql/DataTruncation;->dataSize:I
Ljava/sql/DataTruncation;->index:I
Ljava/sql/DataTruncation;->parameter:Z
Ljava/sql/DataTruncation;->read:Z
Ljava/sql/DataTruncation;->transferSize:I
-Ljava/sql/DriverInfo;
Ljava/sql/DriverInfo;-><init>(Ljava/sql/Driver;)V
Ljava/sql/DriverInfo;->driver:Ljava/sql/Driver;
Ljava/sql/DriverManager;-><init>()V
@@ -113297,7 +106272,6 @@
Ljava/sql/DriverManager;->logWriter:Ljava/io/PrintWriter;
Ljava/sql/DriverManager;->registeredDrivers:Ljava/util/concurrent/CopyOnWriteArrayList;
Ljava/sql/DriverManager;->SET_LOG_PERMISSION:Ljava/sql/SQLPermission;
-Ljava/sql/RowIdLifetime;-><init>()V
Ljava/sql/SQLClientInfoException;->failedProperties:Ljava/util/Map;
Ljava/sql/SQLException;->next:Ljava/sql/SQLException;
Ljava/sql/SQLException;->nextUpdater:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
@@ -113308,8 +106282,6 @@
Ljava/text/Annotation;->value:Ljava/lang/Object;
Ljava/text/AttributedCharacterIterator$Attribute;->instanceMap:Ljava/util/Map;
Ljava/text/AttributedCharacterIterator$Attribute;->name:Ljava/lang/String;
-Ljava/text/AttributedString$AttributedStringIterator;
-Ljava/text/AttributedString$AttributedStringIterator;-><init>([Ljava/text/AttributedCharacterIterator$Attribute;II)V
Ljava/text/AttributedString$AttributedStringIterator;->beginIndex:I
Ljava/text/AttributedString$AttributedStringIterator;->currentIndex:I
Ljava/text/AttributedString$AttributedStringIterator;->currentRunIndex:I
@@ -113320,8 +106292,6 @@
Ljava/text/AttributedString$AttributedStringIterator;->internalSetIndex(I)C
Ljava/text/AttributedString$AttributedStringIterator;->relevantAttributes:[Ljava/text/AttributedCharacterIterator$Attribute;
Ljava/text/AttributedString$AttributedStringIterator;->updateRunInfo()V
-Ljava/text/AttributedString$AttributeMap;
-Ljava/text/AttributedString$AttributeMap;-><init>(III)V
Ljava/text/AttributedString$AttributeMap;->beginIndex:I
Ljava/text/AttributedString$AttributeMap;->endIndex:I
Ljava/text/AttributedString$AttributeMap;->runIndex:I
@@ -113350,7 +106320,6 @@
Ljava/text/Bidi;-><init>(Landroid/icu/text/Bidi;)V
Ljava/text/Bidi;->bidiBase:Landroid/icu/text/Bidi;
Ljava/text/Bidi;->translateConstToIcu(I)I
-Ljava/text/CalendarBuilder;
Ljava/text/CalendarBuilder;-><init>()V
Ljava/text/CalendarBuilder;->addYear(I)Ljava/text/CalendarBuilder;
Ljava/text/CalendarBuilder;->clear(I)Ljava/text/CalendarBuilder;
@@ -113504,8 +106473,6 @@
Ljava/text/DecimalFormatSymbols;->serialVersionOnStream:I
Ljava/text/DecimalFormatSymbols;->setExponentialSymbol(C)V
Ljava/text/DecimalFormatSymbols;->zeroDigit:C
-Ljava/text/FieldPosition$Delegate;
-Ljava/text/FieldPosition$Delegate;-><init>()V
Ljava/text/FieldPosition$Delegate;->encounteredField:Z
Ljava/text/FieldPosition$Delegate;->formatted(ILjava/text/Format$Field;Ljava/lang/Object;IILjava/lang/StringBuffer;)V
Ljava/text/FieldPosition$Delegate;->formatted(Ljava/text/Format$Field;Ljava/lang/Object;IILjava/lang/StringBuffer;)V
@@ -113516,7 +106483,6 @@
Ljava/text/FieldPosition;->getFieldDelegate()Ljava/text/Format$FieldDelegate;
Ljava/text/FieldPosition;->matchesField(Ljava/text/Format$Field;)Z
Ljava/text/FieldPosition;->matchesField(Ljava/text/Format$Field;I)Z
-Ljava/text/Format$FieldDelegate;
Ljava/text/Format$FieldDelegate;->formatted(ILjava/text/Format$Field;Ljava/lang/Object;IILjava/lang/StringBuffer;)V
Ljava/text/Format$FieldDelegate;->formatted(Ljava/text/Format$Field;Ljava/lang/Object;IILjava/lang/StringBuffer;)V
Ljava/text/Format;->createAttributedCharacterIterator(Ljava/lang/String;)Ljava/text/AttributedCharacterIterator;
@@ -113556,7 +106522,6 @@
Ljava/text/MessageFormat;->TYPE_NULL:I
Ljava/text/MessageFormat;->TYPE_NUMBER:I
Ljava/text/MessageFormat;->TYPE_TIME:I
-Ljava/text/Normalizer$Form;-><init>(Landroid/icu/text/Normalizer$Mode;)V
Ljava/text/Normalizer$Form;->icuMode:Landroid/icu/text/Normalizer$Mode;
Ljava/text/Normalizer;-><init>()V
Ljava/text/NumberFormat$Field;->instanceMap:Ljava/util/Map;
@@ -113665,7 +106630,6 @@
Ljava/time/chrono/AbstractChronology;->resolveYMAD(Ljava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/chrono/ChronoLocalDate;
Ljava/time/chrono/AbstractChronology;->resolveYMD(Ljava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/chrono/ChronoLocalDate;
Ljava/time/chrono/AbstractChronology;->writeExternal(Ljava/io/DataOutput;)V
-Ljava/time/chrono/ChronoLocalDateImpl;
Ljava/time/chrono/ChronoLocalDateImpl;-><init>()V
Ljava/time/chrono/ChronoLocalDateImpl;->daysUntil(Ljava/time/chrono/ChronoLocalDate;)J
Ljava/time/chrono/ChronoLocalDateImpl;->ensureValid(Ljava/time/chrono/Chronology;Ljava/time/temporal/Temporal;)Ljava/time/chrono/ChronoLocalDate;
@@ -113748,12 +106712,10 @@
Ljava/time/chrono/HijrahDate;->readExternal(Ljava/io/ObjectInput;)Ljava/time/chrono/HijrahDate;
Ljava/time/chrono/HijrahDate;->resolvePreviousValid(III)Ljava/time/chrono/HijrahDate;
Ljava/time/chrono/HijrahDate;->writeExternal(Ljava/io/ObjectOutput;)V
-Ljava/time/chrono/HijrahEra;-><init>()V
Ljava/time/chrono/IsoChronology;-><init>()V
Ljava/time/chrono/IsoChronology;->resolveProlepticMonth(Ljava/util/Map;Ljava/time/format/ResolverStyle;)V
Ljava/time/chrono/IsoChronology;->resolveYearOfEra(Ljava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/LocalDate;
Ljava/time/chrono/IsoChronology;->resolveYMD(Ljava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/LocalDate;
-Ljava/time/chrono/IsoEra;-><init>()V
Ljava/time/chrono/JapaneseChronology;-><init>()V
Ljava/time/chrono/JapaneseChronology;->createCalendar()Ljava/util/Calendar;
Ljava/time/chrono/JapaneseChronology;->getCurrentEra()Ljava/time/chrono/JapaneseEra;
@@ -113817,7 +106779,6 @@
Ljava/time/chrono/MinguoDate;->readExternal(Ljava/io/DataInput;)Ljava/time/chrono/MinguoDate;
Ljava/time/chrono/MinguoDate;->with(Ljava/time/LocalDate;)Ljava/time/chrono/MinguoDate;
Ljava/time/chrono/MinguoDate;->writeExternal(Ljava/io/DataOutput;)V
-Ljava/time/chrono/MinguoEra;-><init>()V
Ljava/time/chrono/ThaiBuddhistChronology;-><init>()V
Ljava/time/chrono/ThaiBuddhistChronology;->ERA_FULL_NAMES:Ljava/util/HashMap;
Ljava/time/chrono/ThaiBuddhistChronology;->ERA_NARROW_NAMES:Ljava/util/HashMap;
@@ -113840,25 +106801,18 @@
Ljava/time/chrono/ThaiBuddhistDate;->readExternal(Ljava/io/DataInput;)Ljava/time/chrono/ThaiBuddhistDate;
Ljava/time/chrono/ThaiBuddhistDate;->with(Ljava/time/LocalDate;)Ljava/time/chrono/ThaiBuddhistDate;
Ljava/time/chrono/ThaiBuddhistDate;->writeExternal(Ljava/io/DataOutput;)V
-Ljava/time/chrono/ThaiBuddhistEra;-><init>()V
-Ljava/time/Clock$FixedClock;
Ljava/time/Clock$FixedClock;-><init>(Ljava/time/Instant;Ljava/time/ZoneId;)V
Ljava/time/Clock$FixedClock;->instant:Ljava/time/Instant;
Ljava/time/Clock$FixedClock;->zone:Ljava/time/ZoneId;
-Ljava/time/Clock$OffsetClock;
Ljava/time/Clock$OffsetClock;-><init>(Ljava/time/Clock;Ljava/time/Duration;)V
Ljava/time/Clock$OffsetClock;->baseClock:Ljava/time/Clock;
Ljava/time/Clock$OffsetClock;->offset:Ljava/time/Duration;
-Ljava/time/Clock$SystemClock;
Ljava/time/Clock$SystemClock;-><init>(Ljava/time/ZoneId;)V
Ljava/time/Clock$SystemClock;->zone:Ljava/time/ZoneId;
-Ljava/time/Clock$TickClock;
Ljava/time/Clock$TickClock;-><init>(Ljava/time/Clock;J)V
Ljava/time/Clock$TickClock;->baseClock:Ljava/time/Clock;
Ljava/time/Clock$TickClock;->tickNanos:J
-Ljava/time/DayOfWeek;-><init>()V
Ljava/time/DayOfWeek;->ENUMS:[Ljava/time/DayOfWeek;
-Ljava/time/Duration$DurationUnits;
Ljava/time/Duration$DurationUnits;-><init>()V
Ljava/time/Duration$DurationUnits;->UNITS:Ljava/util/List;
Ljava/time/Duration;-><init>(JI)V
@@ -113874,7 +106828,6 @@
Ljava/time/Duration;->readExternal(Ljava/io/DataInput;)Ljava/time/Duration;
Ljava/time/Duration;->seconds:J
Ljava/time/Duration;->writeExternal(Ljava/io/DataOutput;)V
-Ljava/time/format/DateTimeFormatter$ClassicFormat;
Ljava/time/format/DateTimeFormatter$ClassicFormat;-><init>(Ljava/time/format/DateTimeFormatter;Ljava/time/temporal/TemporalQuery;)V
Ljava/time/format/DateTimeFormatter$ClassicFormat;->formatter:Ljava/time/format/DateTimeFormatter;
Ljava/time/format/DateTimeFormatter$ClassicFormat;->parseType:Ljava/time/temporal/TemporalQuery;
@@ -113892,18 +106845,15 @@
Ljava/time/format/DateTimeFormatter;->resolverStyle:Ljava/time/format/ResolverStyle;
Ljava/time/format/DateTimeFormatter;->toPrinterParser(Z)Ljava/time/format/DateTimeFormatterBuilder$CompositePrinterParser;
Ljava/time/format/DateTimeFormatter;->zone:Ljava/time/ZoneId;
-Ljava/time/format/DateTimeFormatterBuilder$CharLiteralPrinterParser;
Ljava/time/format/DateTimeFormatterBuilder$CharLiteralPrinterParser;-><init>(C)V
Ljava/time/format/DateTimeFormatterBuilder$CharLiteralPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
Ljava/time/format/DateTimeFormatterBuilder$CharLiteralPrinterParser;->literal:C
Ljava/time/format/DateTimeFormatterBuilder$CharLiteralPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
-Ljava/time/format/DateTimeFormatterBuilder$ChronoPrinterParser;
Ljava/time/format/DateTimeFormatterBuilder$ChronoPrinterParser;-><init>(Ljava/time/format/TextStyle;)V
Ljava/time/format/DateTimeFormatterBuilder$ChronoPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
Ljava/time/format/DateTimeFormatterBuilder$ChronoPrinterParser;->getChronologyName(Ljava/time/chrono/Chronology;Ljava/util/Locale;)Ljava/lang/String;
Ljava/time/format/DateTimeFormatterBuilder$ChronoPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
Ljava/time/format/DateTimeFormatterBuilder$ChronoPrinterParser;->textStyle:Ljava/time/format/TextStyle;
-Ljava/time/format/DateTimeFormatterBuilder$CompositePrinterParser;
Ljava/time/format/DateTimeFormatterBuilder$CompositePrinterParser;-><init>(Ljava/util/List;Z)V
Ljava/time/format/DateTimeFormatterBuilder$CompositePrinterParser;-><init>([Ljava/time/format/DateTimeFormatterBuilder$DateTimePrinterParser;Z)V
Ljava/time/format/DateTimeFormatterBuilder$CompositePrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
@@ -113911,16 +106861,13 @@
Ljava/time/format/DateTimeFormatterBuilder$CompositePrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
Ljava/time/format/DateTimeFormatterBuilder$CompositePrinterParser;->printerParsers:[Ljava/time/format/DateTimeFormatterBuilder$DateTimePrinterParser;
Ljava/time/format/DateTimeFormatterBuilder$CompositePrinterParser;->withOptional(Z)Ljava/time/format/DateTimeFormatterBuilder$CompositePrinterParser;
-Ljava/time/format/DateTimeFormatterBuilder$DateTimePrinterParser;
Ljava/time/format/DateTimeFormatterBuilder$DateTimePrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
Ljava/time/format/DateTimeFormatterBuilder$DateTimePrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
-Ljava/time/format/DateTimeFormatterBuilder$DefaultValueParser;
Ljava/time/format/DateTimeFormatterBuilder$DefaultValueParser;-><init>(Ljava/time/temporal/TemporalField;J)V
Ljava/time/format/DateTimeFormatterBuilder$DefaultValueParser;->field:Ljava/time/temporal/TemporalField;
Ljava/time/format/DateTimeFormatterBuilder$DefaultValueParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
Ljava/time/format/DateTimeFormatterBuilder$DefaultValueParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
Ljava/time/format/DateTimeFormatterBuilder$DefaultValueParser;->value:J
-Ljava/time/format/DateTimeFormatterBuilder$FractionPrinterParser;
Ljava/time/format/DateTimeFormatterBuilder$FractionPrinterParser;-><init>(Ljava/time/temporal/TemporalField;IIZ)V
Ljava/time/format/DateTimeFormatterBuilder$FractionPrinterParser;->convertFromFraction(Ljava/math/BigDecimal;)J
Ljava/time/format/DateTimeFormatterBuilder$FractionPrinterParser;->convertToFraction(J)Ljava/math/BigDecimal;
@@ -113930,21 +106877,18 @@
Ljava/time/format/DateTimeFormatterBuilder$FractionPrinterParser;->maxWidth:I
Ljava/time/format/DateTimeFormatterBuilder$FractionPrinterParser;->minWidth:I
Ljava/time/format/DateTimeFormatterBuilder$FractionPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
-Ljava/time/format/DateTimeFormatterBuilder$InstantPrinterParser;
Ljava/time/format/DateTimeFormatterBuilder$InstantPrinterParser;-><init>(I)V
Ljava/time/format/DateTimeFormatterBuilder$InstantPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
Ljava/time/format/DateTimeFormatterBuilder$InstantPrinterParser;->fractionalDigits:I
Ljava/time/format/DateTimeFormatterBuilder$InstantPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
Ljava/time/format/DateTimeFormatterBuilder$InstantPrinterParser;->SECONDS_0000_TO_1970:J
Ljava/time/format/DateTimeFormatterBuilder$InstantPrinterParser;->SECONDS_PER_10000_YEARS:J
-Ljava/time/format/DateTimeFormatterBuilder$LocalizedOffsetIdPrinterParser;
Ljava/time/format/DateTimeFormatterBuilder$LocalizedOffsetIdPrinterParser;-><init>(Ljava/time/format/TextStyle;)V
Ljava/time/format/DateTimeFormatterBuilder$LocalizedOffsetIdPrinterParser;->appendHMS(Ljava/lang/StringBuilder;I)Ljava/lang/StringBuilder;
Ljava/time/format/DateTimeFormatterBuilder$LocalizedOffsetIdPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
Ljava/time/format/DateTimeFormatterBuilder$LocalizedOffsetIdPrinterParser;->getDigit(Ljava/lang/CharSequence;I)I
Ljava/time/format/DateTimeFormatterBuilder$LocalizedOffsetIdPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
Ljava/time/format/DateTimeFormatterBuilder$LocalizedOffsetIdPrinterParser;->style:Ljava/time/format/TextStyle;
-Ljava/time/format/DateTimeFormatterBuilder$LocalizedPrinterParser;
Ljava/time/format/DateTimeFormatterBuilder$LocalizedPrinterParser;-><init>(Ljava/time/format/FormatStyle;Ljava/time/format/FormatStyle;)V
Ljava/time/format/DateTimeFormatterBuilder$LocalizedPrinterParser;->dateStyle:Ljava/time/format/FormatStyle;
Ljava/time/format/DateTimeFormatterBuilder$LocalizedPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
@@ -113952,7 +106896,6 @@
Ljava/time/format/DateTimeFormatterBuilder$LocalizedPrinterParser;->FORMATTER_CACHE:Ljava/util/concurrent/ConcurrentMap;
Ljava/time/format/DateTimeFormatterBuilder$LocalizedPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
Ljava/time/format/DateTimeFormatterBuilder$LocalizedPrinterParser;->timeStyle:Ljava/time/format/FormatStyle;
-Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;
Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;-><init>(Ljava/time/temporal/TemporalField;IILjava/time/format/SignStyle;)V
Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;-><init>(Ljava/time/temporal/TemporalField;IILjava/time/format/SignStyle;I)V
Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->EXCEED_POINTS:[J
@@ -113968,7 +106911,6 @@
Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->subsequentWidth:I
Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->withFixedWidth()Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;
Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->withSubsequentWidth(I)Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;
-Ljava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;
Ljava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;-><init>(Ljava/lang/String;Ljava/lang/String;)V
Ljava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;->checkPattern(Ljava/lang/String;)I
Ljava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
@@ -113979,25 +106921,21 @@
Ljava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;->parseNumber([IILjava/lang/CharSequence;Z)Z
Ljava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;->PATTERNS:[Ljava/lang/String;
Ljava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;->type:I
-Ljava/time/format/DateTimeFormatterBuilder$PadPrinterParserDecorator;
Ljava/time/format/DateTimeFormatterBuilder$PadPrinterParserDecorator;-><init>(Ljava/time/format/DateTimeFormatterBuilder$DateTimePrinterParser;IC)V
Ljava/time/format/DateTimeFormatterBuilder$PadPrinterParserDecorator;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
Ljava/time/format/DateTimeFormatterBuilder$PadPrinterParserDecorator;->padChar:C
Ljava/time/format/DateTimeFormatterBuilder$PadPrinterParserDecorator;->padWidth:I
Ljava/time/format/DateTimeFormatterBuilder$PadPrinterParserDecorator;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
Ljava/time/format/DateTimeFormatterBuilder$PadPrinterParserDecorator;->printerParser:Ljava/time/format/DateTimeFormatterBuilder$DateTimePrinterParser;
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree$CI;
Ljava/time/format/DateTimeFormatterBuilder$PrefixTree$CI;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;)V
Ljava/time/format/DateTimeFormatterBuilder$PrefixTree$CI;->isEqual(CC)Z
Ljava/time/format/DateTimeFormatterBuilder$PrefixTree$CI;->newNode(Ljava/lang/String;Ljava/lang/String;Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;)Ljava/time/format/DateTimeFormatterBuilder$PrefixTree$CI;
Ljava/time/format/DateTimeFormatterBuilder$PrefixTree$CI;->prefixOf(Ljava/lang/CharSequence;II)Z
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree$LENIENT;
Ljava/time/format/DateTimeFormatterBuilder$PrefixTree$LENIENT;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;)V
Ljava/time/format/DateTimeFormatterBuilder$PrefixTree$LENIENT;->isLenientChar(C)Z
Ljava/time/format/DateTimeFormatterBuilder$PrefixTree$LENIENT;->match(Ljava/lang/CharSequence;Ljava/text/ParsePosition;)Ljava/lang/String;
Ljava/time/format/DateTimeFormatterBuilder$PrefixTree$LENIENT;->newNode(Ljava/lang/String;Ljava/lang/String;Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;)Ljava/time/format/DateTimeFormatterBuilder$PrefixTree$CI;
Ljava/time/format/DateTimeFormatterBuilder$PrefixTree$LENIENT;->toKey(Ljava/lang/String;)Ljava/lang/String;
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;
Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;)V
Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->add(Ljava/lang/String;Ljava/lang/String;)Z
Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->add0(Ljava/lang/String;Ljava/lang/String;)Z
@@ -114016,7 +106954,6 @@
Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->sibling:Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;
Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->toKey(Ljava/lang/String;)Ljava/lang/String;
Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->value:Ljava/lang/String;
-Ljava/time/format/DateTimeFormatterBuilder$ReducedPrinterParser;
Ljava/time/format/DateTimeFormatterBuilder$ReducedPrinterParser;-><init>(Ljava/time/temporal/TemporalField;IIILjava/time/chrono/ChronoLocalDate;)V
Ljava/time/format/DateTimeFormatterBuilder$ReducedPrinterParser;-><init>(Ljava/time/temporal/TemporalField;IIILjava/time/chrono/ChronoLocalDate;I)V
Ljava/time/format/DateTimeFormatterBuilder$ReducedPrinterParser;->baseDate:Ljava/time/chrono/ChronoLocalDate;
@@ -114027,8 +106964,6 @@
Ljava/time/format/DateTimeFormatterBuilder$ReducedPrinterParser;->setValue(Ljava/time/format/DateTimeParseContext;JII)I
Ljava/time/format/DateTimeFormatterBuilder$ReducedPrinterParser;->withFixedWidth()Ljava/time/format/DateTimeFormatterBuilder$ReducedPrinterParser;
Ljava/time/format/DateTimeFormatterBuilder$ReducedPrinterParser;->withSubsequentWidth(I)Ljava/time/format/DateTimeFormatterBuilder$ReducedPrinterParser;
-Ljava/time/format/DateTimeFormatterBuilder$SettingsParser;
-Ljava/time/format/DateTimeFormatterBuilder$SettingsParser;-><init>()V
Ljava/time/format/DateTimeFormatterBuilder$SettingsParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
Ljava/time/format/DateTimeFormatterBuilder$SettingsParser;->INSENSITIVE:Ljava/time/format/DateTimeFormatterBuilder$SettingsParser;
Ljava/time/format/DateTimeFormatterBuilder$SettingsParser;->LENIENT:Ljava/time/format/DateTimeFormatterBuilder$SettingsParser;
@@ -114037,12 +106972,10 @@
Ljava/time/format/DateTimeFormatterBuilder$SettingsParser;->STRICT:Ljava/time/format/DateTimeFormatterBuilder$SettingsParser;
Ljava/time/format/DateTimeFormatterBuilder$SettingsParser;->valueOf(Ljava/lang/String;)Ljava/time/format/DateTimeFormatterBuilder$SettingsParser;
Ljava/time/format/DateTimeFormatterBuilder$SettingsParser;->values()[Ljava/time/format/DateTimeFormatterBuilder$SettingsParser;
-Ljava/time/format/DateTimeFormatterBuilder$StringLiteralPrinterParser;
Ljava/time/format/DateTimeFormatterBuilder$StringLiteralPrinterParser;-><init>(Ljava/lang/String;)V
Ljava/time/format/DateTimeFormatterBuilder$StringLiteralPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
Ljava/time/format/DateTimeFormatterBuilder$StringLiteralPrinterParser;->literal:Ljava/lang/String;
Ljava/time/format/DateTimeFormatterBuilder$StringLiteralPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
-Ljava/time/format/DateTimeFormatterBuilder$TextPrinterParser;
Ljava/time/format/DateTimeFormatterBuilder$TextPrinterParser;-><init>(Ljava/time/temporal/TemporalField;Ljava/time/format/TextStyle;Ljava/time/format/DateTimeTextProvider;)V
Ljava/time/format/DateTimeFormatterBuilder$TextPrinterParser;->field:Ljava/time/temporal/TemporalField;
Ljava/time/format/DateTimeFormatterBuilder$TextPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
@@ -114051,14 +106984,12 @@
Ljava/time/format/DateTimeFormatterBuilder$TextPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
Ljava/time/format/DateTimeFormatterBuilder$TextPrinterParser;->provider:Ljava/time/format/DateTimeTextProvider;
Ljava/time/format/DateTimeFormatterBuilder$TextPrinterParser;->textStyle:Ljava/time/format/TextStyle;
-Ljava/time/format/DateTimeFormatterBuilder$WeekBasedFieldPrinterParser;
Ljava/time/format/DateTimeFormatterBuilder$WeekBasedFieldPrinterParser;-><init>(CI)V
Ljava/time/format/DateTimeFormatterBuilder$WeekBasedFieldPrinterParser;->chr:C
Ljava/time/format/DateTimeFormatterBuilder$WeekBasedFieldPrinterParser;->count:I
Ljava/time/format/DateTimeFormatterBuilder$WeekBasedFieldPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
Ljava/time/format/DateTimeFormatterBuilder$WeekBasedFieldPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
Ljava/time/format/DateTimeFormatterBuilder$WeekBasedFieldPrinterParser;->printerParser(Ljava/util/Locale;)Ljava/time/format/DateTimeFormatterBuilder$DateTimePrinterParser;
-Ljava/time/format/DateTimeFormatterBuilder$ZoneIdPrinterParser;
Ljava/time/format/DateTimeFormatterBuilder$ZoneIdPrinterParser;-><init>(Ljava/time/temporal/TemporalQuery;Ljava/lang/String;)V
Ljava/time/format/DateTimeFormatterBuilder$ZoneIdPrinterParser;->cachedPrefixTree:Ljava/util/Map$Entry;
Ljava/time/format/DateTimeFormatterBuilder$ZoneIdPrinterParser;->cachedPrefixTreeCI:Ljava/util/Map$Entry;
@@ -114068,7 +106999,6 @@
Ljava/time/format/DateTimeFormatterBuilder$ZoneIdPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
Ljava/time/format/DateTimeFormatterBuilder$ZoneIdPrinterParser;->parseOffsetBased(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;IILjava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;)I
Ljava/time/format/DateTimeFormatterBuilder$ZoneIdPrinterParser;->query:Ljava/time/temporal/TemporalQuery;
-Ljava/time/format/DateTimeFormatterBuilder$ZoneTextPrinterParser;
Ljava/time/format/DateTimeFormatterBuilder$ZoneTextPrinterParser;-><init>(Ljava/time/format/TextStyle;Ljava/util/Set;)V
Ljava/time/format/DateTimeFormatterBuilder$ZoneTextPrinterParser;->cache:Ljava/util/Map;
Ljava/time/format/DateTimeFormatterBuilder$ZoneTextPrinterParser;->cachedTree:Ljava/util/Map;
@@ -114102,7 +107032,6 @@
Ljava/time/format/DateTimeFormatterBuilder;->toFormatter(Ljava/time/format/ResolverStyle;Ljava/time/chrono/Chronology;)Ljava/time/format/DateTimeFormatter;
Ljava/time/format/DateTimeFormatterBuilder;->toFormatter(Ljava/util/Locale;Ljava/time/format/ResolverStyle;Ljava/time/chrono/Chronology;)Ljava/time/format/DateTimeFormatter;
Ljava/time/format/DateTimeFormatterBuilder;->valueParserIndex:I
-Ljava/time/format/DateTimeParseContext;
Ljava/time/format/DateTimeParseContext;-><init>(Ljava/time/format/DateTimeFormatter;)V
Ljava/time/format/DateTimeParseContext;->addChronoChangedListener(Ljava/util/function/Consumer;)V
Ljava/time/format/DateTimeParseContext;->caseSensitive:Z
@@ -114133,7 +107062,6 @@
Ljava/time/format/DateTimeParseContext;->toUnresolved()Ljava/time/format/Parsed;
Ljava/time/format/DateTimeParseException;->errorIndex:I
Ljava/time/format/DateTimeParseException;->parsedString:Ljava/lang/String;
-Ljava/time/format/DateTimePrintContext;
Ljava/time/format/DateTimePrintContext;-><init>(Ljava/time/temporal/TemporalAccessor;Ljava/time/format/DateTimeFormatter;)V
Ljava/time/format/DateTimePrintContext;->adjust(Ljava/time/temporal/TemporalAccessor;Ljava/time/format/DateTimeFormatter;)Ljava/time/temporal/TemporalAccessor;
Ljava/time/format/DateTimePrintContext;->endOptional()V
@@ -114146,13 +107074,11 @@
Ljava/time/format/DateTimePrintContext;->optional:I
Ljava/time/format/DateTimePrintContext;->startOptional()V
Ljava/time/format/DateTimePrintContext;->temporal:Ljava/time/temporal/TemporalAccessor;
-Ljava/time/format/DateTimeTextProvider$LocaleStore;
Ljava/time/format/DateTimeTextProvider$LocaleStore;-><init>(Ljava/util/Map;)V
Ljava/time/format/DateTimeTextProvider$LocaleStore;->getText(JLjava/time/format/TextStyle;)Ljava/lang/String;
Ljava/time/format/DateTimeTextProvider$LocaleStore;->getTextIterator(Ljava/time/format/TextStyle;)Ljava/util/Iterator;
Ljava/time/format/DateTimeTextProvider$LocaleStore;->parsable:Ljava/util/Map;
Ljava/time/format/DateTimeTextProvider$LocaleStore;->valueTextMap:Ljava/util/Map;
-Ljava/time/format/DateTimeTextProvider;
Ljava/time/format/DateTimeTextProvider;-><init>()V
Ljava/time/format/DateTimeTextProvider;->CACHE:Ljava/util/concurrent/ConcurrentMap;
Ljava/time/format/DateTimeTextProvider;->COMPARATOR:Ljava/util/Comparator;
@@ -114175,8 +107101,6 @@
Ljava/time/format/DecimalStyle;->negativeSign:C
Ljava/time/format/DecimalStyle;->positiveSign:C
Ljava/time/format/DecimalStyle;->zeroDigit:C
-Ljava/time/format/FormatStyle;-><init>()V
-Ljava/time/format/Parsed;
Ljava/time/format/Parsed;-><init>()V
Ljava/time/format/Parsed;->chrono:Ljava/time/chrono/Chronology;
Ljava/time/format/Parsed;->copy()Ljava/time/format/Parsed;
@@ -114203,10 +107127,7 @@
Ljava/time/format/Parsed;->updateCheckConflict(Ljava/time/LocalTime;Ljava/time/Period;)V
Ljava/time/format/Parsed;->updateCheckConflict(Ljava/time/temporal/TemporalField;Ljava/time/temporal/TemporalField;Ljava/lang/Long;)V
Ljava/time/format/Parsed;->zone:Ljava/time/ZoneId;
-Ljava/time/format/ResolverStyle;-><init>()V
-Ljava/time/format/SignStyle;-><init>()V
Ljava/time/format/SignStyle;->parse(ZZZ)Z
-Ljava/time/format/TextStyle;-><init>(II)V
Ljava/time/format/TextStyle;->calendarStyle:I
Ljava/time/format/TextStyle;->toCalendarStyle()I
Ljava/time/format/TextStyle;->zoneNameStyleIndex()I
@@ -114267,7 +107188,6 @@
Ljava/time/LocalTime;->SECONDS_PER_HOUR:I
Ljava/time/LocalTime;->SECONDS_PER_MINUTE:I
Ljava/time/LocalTime;->writeExternal(Ljava/io/DataOutput;)V
-Ljava/time/Month;-><init>()V
Ljava/time/Month;->ENUMS:[Ljava/time/Month;
Ljava/time/MonthDay;-><init>(II)V
Ljava/time/MonthDay;->day:I
@@ -114299,19 +107219,14 @@
Ljava/time/Period;->validateChrono(Ljava/time/temporal/TemporalAccessor;)V
Ljava/time/Period;->writeExternal(Ljava/io/DataOutput;)V
Ljava/time/Period;->years:I
-Ljava/time/temporal/ChronoField;-><init>(Ljava/lang/String;Ljava/time/temporal/TemporalUnit;Ljava/time/temporal/TemporalUnit;Ljava/time/temporal/ValueRange;)V
-Ljava/time/temporal/ChronoField;-><init>(Ljava/lang/String;Ljava/time/temporal/TemporalUnit;Ljava/time/temporal/TemporalUnit;Ljava/time/temporal/ValueRange;Ljava/lang/String;)V
Ljava/time/temporal/ChronoField;->baseUnit:Ljava/time/temporal/TemporalUnit;
Ljava/time/temporal/ChronoField;->displayNameKey:Ljava/lang/String;
Ljava/time/temporal/ChronoField;->getIcuFieldNumber(Ljava/time/temporal/ChronoField;)I
Ljava/time/temporal/ChronoField;->name:Ljava/lang/String;
Ljava/time/temporal/ChronoField;->range:Ljava/time/temporal/ValueRange;
Ljava/time/temporal/ChronoField;->rangeUnit:Ljava/time/temporal/TemporalUnit;
-Ljava/time/temporal/ChronoUnit;-><init>(Ljava/lang/String;Ljava/time/Duration;)V
Ljava/time/temporal/ChronoUnit;->duration:Ljava/time/Duration;
Ljava/time/temporal/ChronoUnit;->name:Ljava/lang/String;
-Ljava/time/temporal/IsoFields$Field;
-Ljava/time/temporal/IsoFields$Field;-><init>()V
Ljava/time/temporal/IsoFields$Field;->DAY_OF_QUARTER:Ljava/time/temporal/IsoFields$Field;
Ljava/time/temporal/IsoFields$Field;->ensureIso(Ljava/time/temporal/TemporalAccessor;)V
Ljava/time/temporal/IsoFields$Field;->getWeek(Ljava/time/LocalDate;)I
@@ -114325,8 +107240,6 @@
Ljava/time/temporal/IsoFields$Field;->values()[Ljava/time/temporal/IsoFields$Field;
Ljava/time/temporal/IsoFields$Field;->WEEK_BASED_YEAR:Ljava/time/temporal/IsoFields$Field;
Ljava/time/temporal/IsoFields$Field;->WEEK_OF_WEEK_BASED_YEAR:Ljava/time/temporal/IsoFields$Field;
-Ljava/time/temporal/IsoFields$Unit;
-Ljava/time/temporal/IsoFields$Unit;-><init>(Ljava/lang/String;Ljava/time/Duration;)V
Ljava/time/temporal/IsoFields$Unit;->duration:Ljava/time/Duration;
Ljava/time/temporal/IsoFields$Unit;->name:Ljava/lang/String;
Ljava/time/temporal/IsoFields$Unit;->QUARTER_YEARS:Ljava/time/temporal/IsoFields$Unit;
@@ -114334,8 +107247,6 @@
Ljava/time/temporal/IsoFields$Unit;->values()[Ljava/time/temporal/IsoFields$Unit;
Ljava/time/temporal/IsoFields$Unit;->WEEK_BASED_YEARS:Ljava/time/temporal/IsoFields$Unit;
Ljava/time/temporal/IsoFields;-><init>()V
-Ljava/time/temporal/JulianFields$Field;
-Ljava/time/temporal/JulianFields$Field;-><init>(Ljava/lang/String;Ljava/time/temporal/TemporalUnit;Ljava/time/temporal/TemporalUnit;J)V
Ljava/time/temporal/JulianFields$Field;->baseUnit:Ljava/time/temporal/TemporalUnit;
Ljava/time/temporal/JulianFields$Field;->JULIAN_DAY:Ljava/time/temporal/JulianFields$Field;
Ljava/time/temporal/JulianFields$Field;->MODIFIED_JULIAN_DAY:Ljava/time/temporal/JulianFields$Field;
@@ -114363,7 +107274,6 @@
Ljava/time/temporal/ValueRange;->maxSmallest:J
Ljava/time/temporal/ValueRange;->minLargest:J
Ljava/time/temporal/ValueRange;->minSmallest:J
-Ljava/time/temporal/WeekFields$ComputedDayOfField;
Ljava/time/temporal/WeekFields$ComputedDayOfField;-><init>(Ljava/lang/String;Ljava/time/temporal/WeekFields;Ljava/time/temporal/TemporalUnit;Ljava/time/temporal/TemporalUnit;Ljava/time/temporal/ValueRange;)V
Ljava/time/temporal/WeekFields$ComputedDayOfField;->baseUnit:Ljava/time/temporal/TemporalUnit;
Ljava/time/temporal/WeekFields$ComputedDayOfField;->computeWeek(II)I
@@ -114424,7 +107334,6 @@
Ljava/time/zone/ZoneOffsetTransition;->readExternal(Ljava/io/DataInput;)Ljava/time/zone/ZoneOffsetTransition;
Ljava/time/zone/ZoneOffsetTransition;->transition:Ljava/time/LocalDateTime;
Ljava/time/zone/ZoneOffsetTransition;->writeExternal(Ljava/io/DataOutput;)V
-Ljava/time/zone/ZoneOffsetTransitionRule$TimeDefinition;-><init>()V
Ljava/time/zone/ZoneOffsetTransitionRule;-><init>(Ljava/time/Month;ILjava/time/DayOfWeek;Ljava/time/LocalTime;ZLjava/time/zone/ZoneOffsetTransitionRule$TimeDefinition;Ljava/time/ZoneOffset;Ljava/time/ZoneOffset;Ljava/time/ZoneOffset;)V
Ljava/time/zone/ZoneOffsetTransitionRule;->dom:B
Ljava/time/zone/ZoneOffsetTransitionRule;->dow:Ljava/time/DayOfWeek;
@@ -114488,14 +107397,10 @@
Ljava/util/AbstractCollection;->finishToArray([Ljava/lang/Object;Ljava/util/Iterator;)[Ljava/lang/Object;
Ljava/util/AbstractCollection;->hugeCapacity(I)I
Ljava/util/AbstractCollection;->MAX_ARRAY_SIZE:I
-Ljava/util/AbstractList$Itr;
-Ljava/util/AbstractList$Itr;-><init>()V
Ljava/util/AbstractList$Itr;->checkForComodification()V
Ljava/util/AbstractList$Itr;->cursor:I
Ljava/util/AbstractList$Itr;->expectedModCount:I
Ljava/util/AbstractList$Itr;->lastRet:I
-Ljava/util/AbstractList$ListItr;
-Ljava/util/AbstractList$ListItr;-><init>(I)V
Ljava/util/AbstractList;->outOfBoundsMsg(I)Ljava/lang/String;
Ljava/util/AbstractList;->rangeCheckForAdd(I)V
Ljava/util/AbstractMap$SimpleEntry;->key:Ljava/lang/Object;
@@ -114505,12 +107410,9 @@
Ljava/util/AbstractMap;->eq(Ljava/lang/Object;Ljava/lang/Object;)Z
Ljava/util/AbstractMap;->keySet:Ljava/util/Set;
Ljava/util/AbstractMap;->values:Ljava/util/Collection;
-Ljava/util/ArrayDeque$DeqIterator;
-Ljava/util/ArrayDeque$DeqIterator;-><init>()V
Ljava/util/ArrayDeque$DeqIterator;->cursor:I
Ljava/util/ArrayDeque$DeqIterator;->fence:I
Ljava/util/ArrayDeque$DeqIterator;->lastRet:I
-Ljava/util/ArrayDeque$DeqSpliterator;
Ljava/util/ArrayDeque$DeqSpliterator;-><init>(Ljava/util/ArrayDeque;II)V
Ljava/util/ArrayDeque$DeqSpliterator;->deq:Ljava/util/ArrayDeque;
Ljava/util/ArrayDeque$DeqSpliterator;->fence:I
@@ -114518,8 +107420,6 @@
Ljava/util/ArrayDeque$DeqSpliterator;->getFence()I
Ljava/util/ArrayDeque$DeqSpliterator;->index:I
Ljava/util/ArrayDeque$DeqSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/ArrayDeque$DescendingIterator;
-Ljava/util/ArrayDeque$DescendingIterator;-><init>()V
Ljava/util/ArrayDeque$DescendingIterator;->cursor:I
Ljava/util/ArrayDeque$DescendingIterator;->fence:I
Ljava/util/ArrayDeque$DescendingIterator;->lastRet:I
@@ -114528,7 +107428,6 @@
Ljava/util/ArrayDeque;->delete(I)Z
Ljava/util/ArrayDeque;->doubleCapacity()V
Ljava/util/ArrayDeque;->MIN_INITIAL_CAPACITY:I
-Ljava/util/ArrayList$ArrayListSpliterator;
Ljava/util/ArrayList$ArrayListSpliterator;-><init>(Ljava/util/ArrayList;III)V
Ljava/util/ArrayList$ArrayListSpliterator;->expectedModCount:I
Ljava/util/ArrayList$ArrayListSpliterator;->fence:I
@@ -114537,16 +107436,10 @@
Ljava/util/ArrayList$ArrayListSpliterator;->index:I
Ljava/util/ArrayList$ArrayListSpliterator;->list:Ljava/util/ArrayList;
Ljava/util/ArrayList$ArrayListSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/ArrayList$Itr;
-Ljava/util/ArrayList$Itr;-><init>()V
Ljava/util/ArrayList$Itr;->cursor:I
Ljava/util/ArrayList$Itr;->expectedModCount:I
Ljava/util/ArrayList$Itr;->lastRet:I
Ljava/util/ArrayList$Itr;->limit:I
-Ljava/util/ArrayList$ListItr;
-Ljava/util/ArrayList$ListItr;-><init>(I)V
-Ljava/util/ArrayList$SubList;
-Ljava/util/ArrayList$SubList;-><init>(Ljava/util/AbstractList;III)V
Ljava/util/ArrayList$SubList;->outOfBoundsMsg(I)Ljava/lang/String;
Ljava/util/ArrayList;->batchRemove(Ljava/util/Collection;Z)Z
Ljava/util/ArrayList;->DEFAULTCAPACITY_EMPTY_ELEMENTDATA:[Ljava/lang/Object;
@@ -114560,10 +107453,8 @@
Ljava/util/ArrayList;->MAX_ARRAY_SIZE:I
Ljava/util/ArrayList;->outOfBoundsMsg(I)Ljava/lang/String;
Ljava/util/ArrayList;->subListRangeCheck(III)V
-Ljava/util/Arrays$ArrayList;
Ljava/util/Arrays$ArrayList;-><init>([Ljava/lang/Object;)V
Ljava/util/Arrays$ArrayList;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/Arrays$NaturalOrder;
Ljava/util/Arrays$NaturalOrder;-><init>()V
Ljava/util/Arrays$NaturalOrder;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
Ljava/util/Arrays$NaturalOrder;->INSTANCE:Ljava/util/Arrays$NaturalOrder;
@@ -114583,7 +107474,6 @@
Ljava/util/Arrays;->MIN_ARRAY_SORT_GRAN:I
Ljava/util/Arrays;->rangeCheck(III)V
Ljava/util/Arrays;->swap([Ljava/lang/Object;II)V
-Ljava/util/Base64$DecInputStream;
Ljava/util/Base64$DecInputStream;-><init>(Ljava/io/InputStream;[IZ)V
Ljava/util/Base64$DecInputStream;->base64:[I
Ljava/util/Base64$DecInputStream;->bits:I
@@ -114618,7 +107508,6 @@
Ljava/util/Base64$Encoder;->RFC4648_URLSAFE:Ljava/util/Base64$Encoder;
Ljava/util/Base64$Encoder;->toBase64:[C
Ljava/util/Base64$Encoder;->toBase64URL:[C
-Ljava/util/Base64$EncOutputStream;
Ljava/util/Base64$EncOutputStream;-><init>(Ljava/io/OutputStream;[C[BIZ)V
Ljava/util/Base64$EncOutputStream;->b0:I
Ljava/util/Base64$EncOutputStream;->b1:I
@@ -114648,7 +107537,6 @@
Ljava/util/BitSet;->words:[J
Ljava/util/BitSet;->wordsInUse:I
Ljava/util/BitSet;->WORD_MASK:J
-Ljava/util/Calendar$AvailableCalendarTypes;
Ljava/util/Calendar$AvailableCalendarTypes;-><init>()V
Ljava/util/Calendar$AvailableCalendarTypes;->SET:Ljava/util/Set;
Ljava/util/Calendar$Builder;->allocateFields()V
@@ -114668,7 +107556,6 @@
Ljava/util/Calendar$Builder;->type:Ljava/lang/String;
Ljava/util/Calendar$Builder;->WEEK_YEAR:I
Ljava/util/Calendar$Builder;->zone:Ljava/util/TimeZone;
-Ljava/util/Calendar$CalendarAccessControlContext;
Ljava/util/Calendar$CalendarAccessControlContext;-><init>()V
Ljava/util/Calendar$CalendarAccessControlContext;->INSTANCE:Ljava/security/AccessControlContext;
Ljava/util/Calendar;->adjustStamp()V
@@ -114736,11 +107623,9 @@
Ljava/util/Calendar;->WEEK_OF_YEAR_MASK:I
Ljava/util/Calendar;->YEAR_MASK:I
Ljava/util/Calendar;->ZONE_OFFSET_MASK:I
-Ljava/util/Collections$AsLIFOQueue;
Ljava/util/Collections$AsLIFOQueue;-><init>(Ljava/util/Deque;)V
Ljava/util/Collections$AsLIFOQueue;->forEach(Ljava/util/function/Consumer;)V
Ljava/util/Collections$AsLIFOQueue;->q:Ljava/util/Deque;
-Ljava/util/Collections$CheckedCollection;
Ljava/util/Collections$CheckedCollection;-><init>(Ljava/util/Collection;Ljava/lang/Class;)V
Ljava/util/Collections$CheckedCollection;->badElementMsg(Ljava/lang/Object;)Ljava/lang/String;
Ljava/util/Collections$CheckedCollection;->c:Ljava/util/Collection;
@@ -114750,15 +107635,12 @@
Ljava/util/Collections$CheckedCollection;->typeCheck(Ljava/lang/Object;)Ljava/lang/Object;
Ljava/util/Collections$CheckedCollection;->zeroLengthElementArray()[Ljava/lang/Object;
Ljava/util/Collections$CheckedCollection;->zeroLengthElementArray:[Ljava/lang/Object;
-Ljava/util/Collections$CheckedList;
Ljava/util/Collections$CheckedList;-><init>(Ljava/util/List;Ljava/lang/Class;)V
Ljava/util/Collections$CheckedList;->list:Ljava/util/List;
-Ljava/util/Collections$CheckedMap$CheckedEntrySet$CheckedEntry;
Ljava/util/Collections$CheckedMap$CheckedEntrySet$CheckedEntry;-><init>(Ljava/util/Map$Entry;Ljava/lang/Class;)V
Ljava/util/Collections$CheckedMap$CheckedEntrySet$CheckedEntry;->badValueMsg(Ljava/lang/Object;)Ljava/lang/String;
Ljava/util/Collections$CheckedMap$CheckedEntrySet$CheckedEntry;->e:Ljava/util/Map$Entry;
Ljava/util/Collections$CheckedMap$CheckedEntrySet$CheckedEntry;->valueType:Ljava/lang/Class;
-Ljava/util/Collections$CheckedMap$CheckedEntrySet;
Ljava/util/Collections$CheckedMap$CheckedEntrySet;-><init>(Ljava/util/Set;Ljava/lang/Class;)V
Ljava/util/Collections$CheckedMap$CheckedEntrySet;->add(Ljava/util/Map$Entry;)Z
Ljava/util/Collections$CheckedMap$CheckedEntrySet;->addAll(Ljava/util/Collection;)Z
@@ -114766,7 +107648,6 @@
Ljava/util/Collections$CheckedMap$CheckedEntrySet;->checkedEntry(Ljava/util/Map$Entry;Ljava/lang/Class;)Ljava/util/Collections$CheckedMap$CheckedEntrySet$CheckedEntry;
Ljava/util/Collections$CheckedMap$CheckedEntrySet;->s:Ljava/util/Set;
Ljava/util/Collections$CheckedMap$CheckedEntrySet;->valueType:Ljava/lang/Class;
-Ljava/util/Collections$CheckedMap;
Ljava/util/Collections$CheckedMap;-><init>(Ljava/util/Map;Ljava/lang/Class;Ljava/lang/Class;)V
Ljava/util/Collections$CheckedMap;->badKeyMsg(Ljava/lang/Object;)Ljava/lang/String;
Ljava/util/Collections$CheckedMap;->badValueMsg(Ljava/lang/Object;)Ljava/lang/String;
@@ -114776,151 +107657,108 @@
Ljava/util/Collections$CheckedMap;->typeCheck(Ljava/lang/Object;Ljava/lang/Object;)V
Ljava/util/Collections$CheckedMap;->typeCheck(Ljava/util/function/BiFunction;)Ljava/util/function/BiFunction;
Ljava/util/Collections$CheckedMap;->valueType:Ljava/lang/Class;
-Ljava/util/Collections$CheckedNavigableMap;
Ljava/util/Collections$CheckedNavigableMap;-><init>(Ljava/util/NavigableMap;Ljava/lang/Class;Ljava/lang/Class;)V
Ljava/util/Collections$CheckedNavigableMap;->nm:Ljava/util/NavigableMap;
-Ljava/util/Collections$CheckedNavigableSet;
Ljava/util/Collections$CheckedNavigableSet;-><init>(Ljava/util/NavigableSet;Ljava/lang/Class;)V
Ljava/util/Collections$CheckedNavigableSet;->ns:Ljava/util/NavigableSet;
-Ljava/util/Collections$CheckedQueue;
Ljava/util/Collections$CheckedQueue;-><init>(Ljava/util/Queue;Ljava/lang/Class;)V
Ljava/util/Collections$CheckedQueue;->queue:Ljava/util/Queue;
-Ljava/util/Collections$CheckedRandomAccessList;
Ljava/util/Collections$CheckedRandomAccessList;-><init>(Ljava/util/List;Ljava/lang/Class;)V
-Ljava/util/Collections$CheckedSet;
Ljava/util/Collections$CheckedSet;-><init>(Ljava/util/Set;Ljava/lang/Class;)V
-Ljava/util/Collections$CheckedSortedMap;
Ljava/util/Collections$CheckedSortedMap;-><init>(Ljava/util/SortedMap;Ljava/lang/Class;Ljava/lang/Class;)V
Ljava/util/Collections$CheckedSortedMap;->sm:Ljava/util/SortedMap;
-Ljava/util/Collections$CheckedSortedSet;
Ljava/util/Collections$CheckedSortedSet;-><init>(Ljava/util/SortedSet;Ljava/lang/Class;)V
Ljava/util/Collections$CheckedSortedSet;->ss:Ljava/util/SortedSet;
-Ljava/util/Collections$CopiesList;
Ljava/util/Collections$CopiesList;-><init>(ILjava/lang/Object;)V
Ljava/util/Collections$CopiesList;->element:Ljava/lang/Object;
Ljava/util/Collections$CopiesList;->n:I
-Ljava/util/Collections$EmptyEnumeration;
Ljava/util/Collections$EmptyEnumeration;-><init>()V
Ljava/util/Collections$EmptyEnumeration;->EMPTY_ENUMERATION:Ljava/util/Collections$EmptyEnumeration;
-Ljava/util/Collections$EmptyIterator;
Ljava/util/Collections$EmptyIterator;-><init>()V
Ljava/util/Collections$EmptyIterator;->EMPTY_ITERATOR:Ljava/util/Collections$EmptyIterator;
-Ljava/util/Collections$EmptyList;
Ljava/util/Collections$EmptyList;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/Collections$EmptyListIterator;
Ljava/util/Collections$EmptyListIterator;-><init>()V
Ljava/util/Collections$EmptyListIterator;->EMPTY_ITERATOR:Ljava/util/Collections$EmptyListIterator;
-Ljava/util/Collections$EmptyMap;
-Ljava/util/Collections$EmptySet;
Ljava/util/Collections$EmptySet;-><init>()V
Ljava/util/Collections$EmptySet;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/Collections$ReverseComparator2;
Ljava/util/Collections$ReverseComparator2;-><init>(Ljava/util/Comparator;)V
Ljava/util/Collections$ReverseComparator2;->cmp:Ljava/util/Comparator;
-Ljava/util/Collections$ReverseComparator;
Ljava/util/Collections$ReverseComparator;-><init>()V
Ljava/util/Collections$ReverseComparator;->compare(Ljava/lang/Comparable;Ljava/lang/Comparable;)I
Ljava/util/Collections$ReverseComparator;->REVERSE_ORDER:Ljava/util/Collections$ReverseComparator;
-Ljava/util/Collections$SetFromMap;
Ljava/util/Collections$SetFromMap;-><init>(Ljava/util/Map;)V
Ljava/util/Collections$SetFromMap;->forEach(Ljava/util/function/Consumer;)V
Ljava/util/Collections$SetFromMap;->m:Ljava/util/Map;
Ljava/util/Collections$SetFromMap;->s:Ljava/util/Set;
-Ljava/util/Collections$SingletonList;
Ljava/util/Collections$SingletonList;-><init>(Ljava/lang/Object;)V
Ljava/util/Collections$SingletonList;->element:Ljava/lang/Object;
Ljava/util/Collections$SingletonList;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/Collections$SingletonMap;
Ljava/util/Collections$SingletonMap;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V
Ljava/util/Collections$SingletonMap;->entrySet:Ljava/util/Set;
Ljava/util/Collections$SingletonMap;->k:Ljava/lang/Object;
Ljava/util/Collections$SingletonMap;->keySet:Ljava/util/Set;
Ljava/util/Collections$SingletonMap;->v:Ljava/lang/Object;
Ljava/util/Collections$SingletonMap;->values:Ljava/util/Collection;
-Ljava/util/Collections$SingletonSet;
Ljava/util/Collections$SingletonSet;-><init>(Ljava/lang/Object;)V
Ljava/util/Collections$SingletonSet;->element:Ljava/lang/Object;
Ljava/util/Collections$SingletonSet;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/Collections$SynchronizedCollection;
Ljava/util/Collections$SynchronizedCollection;-><init>(Ljava/util/Collection;)V
Ljava/util/Collections$SynchronizedCollection;-><init>(Ljava/util/Collection;Ljava/lang/Object;)V
Ljava/util/Collections$SynchronizedCollection;->forEach(Ljava/util/function/Consumer;)V
Ljava/util/Collections$SynchronizedCollection;->mutex:Ljava/lang/Object;
-Ljava/util/Collections$SynchronizedList;
Ljava/util/Collections$SynchronizedList;-><init>(Ljava/util/List;)V
Ljava/util/Collections$SynchronizedList;-><init>(Ljava/util/List;Ljava/lang/Object;)V
-Ljava/util/Collections$SynchronizedMap;
Ljava/util/Collections$SynchronizedMap;-><init>(Ljava/util/Map;)V
Ljava/util/Collections$SynchronizedMap;-><init>(Ljava/util/Map;Ljava/lang/Object;)V
Ljava/util/Collections$SynchronizedMap;->entrySet:Ljava/util/Set;
Ljava/util/Collections$SynchronizedMap;->keySet:Ljava/util/Set;
Ljava/util/Collections$SynchronizedMap;->mutex:Ljava/lang/Object;
Ljava/util/Collections$SynchronizedMap;->values:Ljava/util/Collection;
-Ljava/util/Collections$SynchronizedNavigableMap;
Ljava/util/Collections$SynchronizedNavigableMap;-><init>(Ljava/util/NavigableMap;)V
Ljava/util/Collections$SynchronizedNavigableMap;-><init>(Ljava/util/NavigableMap;Ljava/lang/Object;)V
Ljava/util/Collections$SynchronizedNavigableMap;->nm:Ljava/util/NavigableMap;
-Ljava/util/Collections$SynchronizedNavigableSet;
Ljava/util/Collections$SynchronizedNavigableSet;-><init>(Ljava/util/NavigableSet;)V
Ljava/util/Collections$SynchronizedNavigableSet;-><init>(Ljava/util/NavigableSet;Ljava/lang/Object;)V
Ljava/util/Collections$SynchronizedNavigableSet;->ns:Ljava/util/NavigableSet;
-Ljava/util/Collections$SynchronizedRandomAccessList;
Ljava/util/Collections$SynchronizedRandomAccessList;-><init>(Ljava/util/List;)V
Ljava/util/Collections$SynchronizedRandomAccessList;-><init>(Ljava/util/List;Ljava/lang/Object;)V
-Ljava/util/Collections$SynchronizedSet;
Ljava/util/Collections$SynchronizedSet;-><init>(Ljava/util/Set;)V
Ljava/util/Collections$SynchronizedSet;-><init>(Ljava/util/Set;Ljava/lang/Object;)V
-Ljava/util/Collections$SynchronizedSortedMap;
Ljava/util/Collections$SynchronizedSortedMap;-><init>(Ljava/util/SortedMap;)V
Ljava/util/Collections$SynchronizedSortedMap;-><init>(Ljava/util/SortedMap;Ljava/lang/Object;)V
Ljava/util/Collections$SynchronizedSortedMap;->sm:Ljava/util/SortedMap;
-Ljava/util/Collections$SynchronizedSortedSet;
Ljava/util/Collections$SynchronizedSortedSet;-><init>(Ljava/util/SortedSet;)V
Ljava/util/Collections$SynchronizedSortedSet;-><init>(Ljava/util/SortedSet;Ljava/lang/Object;)V
Ljava/util/Collections$SynchronizedSortedSet;->ss:Ljava/util/SortedSet;
-Ljava/util/Collections$UnmodifiableCollection;
Ljava/util/Collections$UnmodifiableCollection;-><init>(Ljava/util/Collection;)V
Ljava/util/Collections$UnmodifiableCollection;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/Collections$UnmodifiableList;
Ljava/util/Collections$UnmodifiableList;-><init>(Ljava/util/List;)V
Ljava/util/Collections$UnmodifiableList;->list:Ljava/util/List;
-Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntry;
Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntry;-><init>(Ljava/util/Map$Entry;)V
Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntry;->e:Ljava/util/Map$Entry;
-Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntrySetSpliterator;
Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntrySetSpliterator;-><init>(Ljava/util/Spliterator;)V
Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntrySetSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntrySetSpliterator;->s:Ljava/util/Spliterator;
Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntrySetSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet;
Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet;-><init>(Ljava/util/Set;)V
Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet;->entryConsumer(Ljava/util/function/Consumer;)Ljava/util/function/Consumer;
Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/Collections$UnmodifiableMap;
Ljava/util/Collections$UnmodifiableMap;-><init>(Ljava/util/Map;)V
Ljava/util/Collections$UnmodifiableMap;->entrySet:Ljava/util/Set;
Ljava/util/Collections$UnmodifiableMap;->keySet:Ljava/util/Set;
Ljava/util/Collections$UnmodifiableMap;->values:Ljava/util/Collection;
-Ljava/util/Collections$UnmodifiableNavigableMap$EmptyNavigableMap;
Ljava/util/Collections$UnmodifiableNavigableMap$EmptyNavigableMap;-><init>()V
-Ljava/util/Collections$UnmodifiableNavigableMap;
Ljava/util/Collections$UnmodifiableNavigableMap;-><init>(Ljava/util/NavigableMap;)V
Ljava/util/Collections$UnmodifiableNavigableMap;->EMPTY_NAVIGABLE_MAP:Ljava/util/Collections$UnmodifiableNavigableMap$EmptyNavigableMap;
Ljava/util/Collections$UnmodifiableNavigableMap;->nm:Ljava/util/NavigableMap;
-Ljava/util/Collections$UnmodifiableNavigableSet$EmptyNavigableSet;
Ljava/util/Collections$UnmodifiableNavigableSet$EmptyNavigableSet;-><init>()V
-Ljava/util/Collections$UnmodifiableNavigableSet;
Ljava/util/Collections$UnmodifiableNavigableSet;-><init>(Ljava/util/NavigableSet;)V
Ljava/util/Collections$UnmodifiableNavigableSet;->EMPTY_NAVIGABLE_SET:Ljava/util/NavigableSet;
Ljava/util/Collections$UnmodifiableNavigableSet;->ns:Ljava/util/NavigableSet;
-Ljava/util/Collections$UnmodifiableRandomAccessList;
Ljava/util/Collections$UnmodifiableRandomAccessList;-><init>(Ljava/util/List;)V
-Ljava/util/Collections$UnmodifiableSet;
Ljava/util/Collections$UnmodifiableSet;-><init>(Ljava/util/Set;)V
-Ljava/util/Collections$UnmodifiableSortedMap;
Ljava/util/Collections$UnmodifiableSortedMap;-><init>(Ljava/util/SortedMap;)V
Ljava/util/Collections$UnmodifiableSortedMap;->sm:Ljava/util/SortedMap;
-Ljava/util/Collections$UnmodifiableSortedSet;
Ljava/util/Collections$UnmodifiableSortedSet;-><init>(Ljava/util/SortedSet;)V
Ljava/util/Collections$UnmodifiableSortedSet;->ss:Ljava/util/SortedSet;
Ljava/util/Collections;-><init>()V
@@ -114951,8 +107789,6 @@
Ljava/util/concurrent/AbstractExecutorService;->cancelAll(Ljava/util/ArrayList;)V
Ljava/util/concurrent/AbstractExecutorService;->cancelAll(Ljava/util/ArrayList;I)V
Ljava/util/concurrent/AbstractExecutorService;->doInvokeAny(Ljava/util/Collection;ZJ)Ljava/lang/Object;
-Ljava/util/concurrent/ArrayBlockingQueue$Itr;
-Ljava/util/concurrent/ArrayBlockingQueue$Itr;-><init>()V
Ljava/util/concurrent/ArrayBlockingQueue$Itr;->cursor:I
Ljava/util/concurrent/ArrayBlockingQueue$Itr;->detach()V
Ljava/util/concurrent/ArrayBlockingQueue$Itr;->DETACHED:I
@@ -114973,11 +107809,7 @@
Ljava/util/concurrent/ArrayBlockingQueue$Itr;->removedAt(I)Z
Ljava/util/concurrent/ArrayBlockingQueue$Itr;->shutdown()V
Ljava/util/concurrent/ArrayBlockingQueue$Itr;->takeIndexWrapped()Z
-Ljava/util/concurrent/ArrayBlockingQueue$Itrs$Node;
-Ljava/util/concurrent/ArrayBlockingQueue$Itrs$Node;-><init>(Ljava/util/concurrent/ArrayBlockingQueue$Itr;Ljava/util/concurrent/ArrayBlockingQueue$Itrs$Node;)V
Ljava/util/concurrent/ArrayBlockingQueue$Itrs$Node;->next:Ljava/util/concurrent/ArrayBlockingQueue$Itrs$Node;
-Ljava/util/concurrent/ArrayBlockingQueue$Itrs;
-Ljava/util/concurrent/ArrayBlockingQueue$Itrs;-><init>(Ljava/util/concurrent/ArrayBlockingQueue$Itr;)V
Ljava/util/concurrent/ArrayBlockingQueue$Itrs;->cycles:I
Ljava/util/concurrent/ArrayBlockingQueue$Itrs;->doSomeSweeping(Z)V
Ljava/util/concurrent/ArrayBlockingQueue$Itrs;->elementDequeued()V
@@ -115015,7 +107847,6 @@
Ljava/util/concurrent/atomic/AtomicIntegerArray;->compareAndSetRaw(JII)Z
Ljava/util/concurrent/atomic/AtomicIntegerArray;->getRaw(J)I
Ljava/util/concurrent/atomic/AtomicIntegerArray;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl;
Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl;-><init>(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;)V
Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl;->accessCheck(Ljava/lang/Object;)V
Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl;->cclass:Ljava/lang/Class;
@@ -115036,7 +107867,6 @@
Ljava/util/concurrent/atomic/AtomicLongArray;->compareAndSetRaw(JJJ)Z
Ljava/util/concurrent/atomic/AtomicLongArray;->getRaw(J)J
Ljava/util/concurrent/atomic/AtomicLongArray;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;
Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;-><init>(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;)V
Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;->accessCheck(Ljava/lang/Object;)V
Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;->cclass:Ljava/lang/Class;
@@ -115044,7 +107874,6 @@
Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;->tclass:Ljava/lang/Class;
Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;->throwAccessCheckException(Ljava/lang/Object;)V
Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$LockedUpdater;
Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$LockedUpdater;-><init>(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;)V
Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$LockedUpdater;->accessCheck(Ljava/lang/Object;)V
Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$LockedUpdater;->accessCheckException(Ljava/lang/Object;)Ljava/lang/RuntimeException;
@@ -115052,7 +107881,6 @@
Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$LockedUpdater;->offset:J
Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$LockedUpdater;->tclass:Ljava/lang/Class;
Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$LockedUpdater;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/atomic/AtomicMarkableReference$Pair;
Ljava/util/concurrent/atomic/AtomicMarkableReference$Pair;-><init>(Ljava/lang/Object;Z)V
Ljava/util/concurrent/atomic/AtomicMarkableReference$Pair;->mark:Z
Ljava/util/concurrent/atomic/AtomicMarkableReference$Pair;->of(Ljava/lang/Object;Z)Ljava/util/concurrent/atomic/AtomicMarkableReference$Pair;
@@ -115073,7 +107901,6 @@
Ljava/util/concurrent/atomic/AtomicReferenceArray;->compareAndSetRaw(JLjava/lang/Object;Ljava/lang/Object;)Z
Ljava/util/concurrent/atomic/AtomicReferenceArray;->getRaw(J)Ljava/lang/Object;
Ljava/util/concurrent/atomic/AtomicReferenceArray;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;
Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;-><init>(Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;)V
Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;->accessCheck(Ljava/lang/Object;)V
Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;->cclass:Ljava/lang/Class;
@@ -115084,7 +107911,6 @@
Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;->U:Lsun/misc/Unsafe;
Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;->valueCheck(Ljava/lang/Object;)V
Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;->vclass:Ljava/lang/Class;
-Ljava/util/concurrent/atomic/AtomicStampedReference$Pair;
Ljava/util/concurrent/atomic/AtomicStampedReference$Pair;-><init>(Ljava/lang/Object;I)V
Ljava/util/concurrent/atomic/AtomicStampedReference$Pair;->of(Ljava/lang/Object;I)Ljava/util/concurrent/atomic/AtomicStampedReference$Pair;
Ljava/util/concurrent/atomic/AtomicStampedReference$Pair;->reference:Ljava/lang/Object;
@@ -115093,27 +107919,22 @@
Ljava/util/concurrent/atomic/AtomicStampedReference;->PAIR:J
Ljava/util/concurrent/atomic/AtomicStampedReference;->pair:Ljava/util/concurrent/atomic/AtomicStampedReference$Pair;
Ljava/util/concurrent/atomic/AtomicStampedReference;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/atomic/DoubleAccumulator$SerializationProxy;
Ljava/util/concurrent/atomic/DoubleAccumulator$SerializationProxy;-><init>(DLjava/util/function/DoubleBinaryOperator;J)V
Ljava/util/concurrent/atomic/DoubleAccumulator$SerializationProxy;->function:Ljava/util/function/DoubleBinaryOperator;
Ljava/util/concurrent/atomic/DoubleAccumulator$SerializationProxy;->identity:J
Ljava/util/concurrent/atomic/DoubleAccumulator$SerializationProxy;->value:D
Ljava/util/concurrent/atomic/DoubleAccumulator;->function:Ljava/util/function/DoubleBinaryOperator;
Ljava/util/concurrent/atomic/DoubleAccumulator;->identity:J
-Ljava/util/concurrent/atomic/DoubleAdder$SerializationProxy;
Ljava/util/concurrent/atomic/DoubleAdder$SerializationProxy;-><init>(Ljava/util/concurrent/atomic/DoubleAdder;)V
Ljava/util/concurrent/atomic/DoubleAdder$SerializationProxy;->value:D
-Ljava/util/concurrent/atomic/LongAccumulator$SerializationProxy;
Ljava/util/concurrent/atomic/LongAccumulator$SerializationProxy;-><init>(JLjava/util/function/LongBinaryOperator;J)V
Ljava/util/concurrent/atomic/LongAccumulator$SerializationProxy;->function:Ljava/util/function/LongBinaryOperator;
Ljava/util/concurrent/atomic/LongAccumulator$SerializationProxy;->identity:J
Ljava/util/concurrent/atomic/LongAccumulator$SerializationProxy;->value:J
Ljava/util/concurrent/atomic/LongAccumulator;->function:Ljava/util/function/LongBinaryOperator;
Ljava/util/concurrent/atomic/LongAccumulator;->identity:J
-Ljava/util/concurrent/atomic/LongAdder$SerializationProxy;
Ljava/util/concurrent/atomic/LongAdder$SerializationProxy;-><init>(Ljava/util/concurrent/atomic/LongAdder;)V
Ljava/util/concurrent/atomic/LongAdder$SerializationProxy;->value:J
-Ljava/util/concurrent/atomic/Striped64$Cell;
Ljava/util/concurrent/atomic/Striped64$Cell;-><init>(J)V
Ljava/util/concurrent/atomic/Striped64$Cell;->cas(JJ)Z
Ljava/util/concurrent/atomic/Striped64$Cell;->reset()V
@@ -115121,7 +107942,6 @@
Ljava/util/concurrent/atomic/Striped64$Cell;->U:Lsun/misc/Unsafe;
Ljava/util/concurrent/atomic/Striped64$Cell;->VALUE:J
Ljava/util/concurrent/atomic/Striped64$Cell;->value:J
-Ljava/util/concurrent/atomic/Striped64;
Ljava/util/concurrent/atomic/Striped64;-><init>()V
Ljava/util/concurrent/atomic/Striped64;->advanceProbe(I)I
Ljava/util/concurrent/atomic/Striped64;->apply(Ljava/util/function/DoubleBinaryOperator;JD)J
@@ -115138,68 +107958,52 @@
Ljava/util/concurrent/atomic/Striped64;->NCPU:I
Ljava/util/concurrent/atomic/Striped64;->PROBE:J
Ljava/util/concurrent/atomic/Striped64;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/CompletableFuture$AltResult;
Ljava/util/concurrent/CompletableFuture$AltResult;-><init>(Ljava/lang/Throwable;)V
Ljava/util/concurrent/CompletableFuture$AltResult;->ex:Ljava/lang/Throwable;
-Ljava/util/concurrent/CompletableFuture$AsyncRun;
Ljava/util/concurrent/CompletableFuture$AsyncRun;-><init>(Ljava/util/concurrent/CompletableFuture;Ljava/lang/Runnable;)V
Ljava/util/concurrent/CompletableFuture$AsyncRun;->dep:Ljava/util/concurrent/CompletableFuture;
Ljava/util/concurrent/CompletableFuture$AsyncRun;->fn:Ljava/lang/Runnable;
Ljava/util/concurrent/CompletableFuture$AsyncRun;->setRawResult(Ljava/lang/Void;)V
-Ljava/util/concurrent/CompletableFuture$AsyncSupply;
Ljava/util/concurrent/CompletableFuture$AsyncSupply;-><init>(Ljava/util/concurrent/CompletableFuture;Ljava/util/function/Supplier;)V
Ljava/util/concurrent/CompletableFuture$AsyncSupply;->dep:Ljava/util/concurrent/CompletableFuture;
Ljava/util/concurrent/CompletableFuture$AsyncSupply;->fn:Ljava/util/function/Supplier;
Ljava/util/concurrent/CompletableFuture$AsyncSupply;->setRawResult(Ljava/lang/Void;)V
-Ljava/util/concurrent/CompletableFuture$BiAccept;
Ljava/util/concurrent/CompletableFuture$BiAccept;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/BiConsumer;)V
Ljava/util/concurrent/CompletableFuture$BiAccept;->fn:Ljava/util/function/BiConsumer;
Ljava/util/concurrent/CompletableFuture$BiAccept;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$BiApply;
Ljava/util/concurrent/CompletableFuture$BiApply;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/BiFunction;)V
Ljava/util/concurrent/CompletableFuture$BiApply;->fn:Ljava/util/function/BiFunction;
Ljava/util/concurrent/CompletableFuture$BiApply;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$BiCompletion;
Ljava/util/concurrent/CompletableFuture$BiCompletion;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;)V
Ljava/util/concurrent/CompletableFuture$BiCompletion;->snd:Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$BiRelay;
Ljava/util/concurrent/CompletableFuture$BiRelay;-><init>(Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;)V
Ljava/util/concurrent/CompletableFuture$BiRelay;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$BiRun;
Ljava/util/concurrent/CompletableFuture$BiRun;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/lang/Runnable;)V
Ljava/util/concurrent/CompletableFuture$BiRun;->fn:Ljava/lang/Runnable;
Ljava/util/concurrent/CompletableFuture$BiRun;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$Canceller;
Ljava/util/concurrent/CompletableFuture$Canceller;-><init>(Ljava/util/concurrent/Future;)V
Ljava/util/concurrent/CompletableFuture$Canceller;->accept(Ljava/lang/Object;Ljava/lang/Throwable;)V
Ljava/util/concurrent/CompletableFuture$Canceller;->f:Ljava/util/concurrent/Future;
-Ljava/util/concurrent/CompletableFuture$CoCompletion;
Ljava/util/concurrent/CompletableFuture$CoCompletion;-><init>(Ljava/util/concurrent/CompletableFuture$BiCompletion;)V
Ljava/util/concurrent/CompletableFuture$CoCompletion;->base:Ljava/util/concurrent/CompletableFuture$BiCompletion;
Ljava/util/concurrent/CompletableFuture$CoCompletion;->isLive()Z
Ljava/util/concurrent/CompletableFuture$CoCompletion;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$Completion;
Ljava/util/concurrent/CompletableFuture$Completion;-><init>()V
Ljava/util/concurrent/CompletableFuture$Completion;->isLive()Z
Ljava/util/concurrent/CompletableFuture$Completion;->next:Ljava/util/concurrent/CompletableFuture$Completion;
Ljava/util/concurrent/CompletableFuture$Completion;->setRawResult(Ljava/lang/Void;)V
Ljava/util/concurrent/CompletableFuture$Completion;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$DelayedCompleter;
Ljava/util/concurrent/CompletableFuture$DelayedCompleter;-><init>(Ljava/util/concurrent/CompletableFuture;Ljava/lang/Object;)V
Ljava/util/concurrent/CompletableFuture$DelayedCompleter;->f:Ljava/util/concurrent/CompletableFuture;
Ljava/util/concurrent/CompletableFuture$DelayedCompleter;->u:Ljava/lang/Object;
-Ljava/util/concurrent/CompletableFuture$DelayedExecutor;
Ljava/util/concurrent/CompletableFuture$DelayedExecutor;-><init>(JLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/Executor;)V
Ljava/util/concurrent/CompletableFuture$DelayedExecutor;->delay:J
Ljava/util/concurrent/CompletableFuture$DelayedExecutor;->executor:Ljava/util/concurrent/Executor;
Ljava/util/concurrent/CompletableFuture$DelayedExecutor;->unit:Ljava/util/concurrent/TimeUnit;
-Ljava/util/concurrent/CompletableFuture$Delayer$DaemonThreadFactory;
Ljava/util/concurrent/CompletableFuture$Delayer$DaemonThreadFactory;-><init>()V
-Ljava/util/concurrent/CompletableFuture$Delayer;
Ljava/util/concurrent/CompletableFuture$Delayer;-><init>()V
Ljava/util/concurrent/CompletableFuture$Delayer;->delay(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;
Ljava/util/concurrent/CompletableFuture$Delayer;->delayer:Ljava/util/concurrent/ScheduledThreadPoolExecutor;
-Ljava/util/concurrent/CompletableFuture$MinimalStage;
Ljava/util/concurrent/CompletableFuture$MinimalStage;-><init>()V
Ljava/util/concurrent/CompletableFuture$MinimalStage;-><init>(Ljava/lang/Object;)V
Ljava/util/concurrent/CompletableFuture$MinimalStage;->completeAsync(Ljava/util/function/Supplier;)Ljava/util/concurrent/CompletableFuture;
@@ -115207,22 +108011,17 @@
Ljava/util/concurrent/CompletableFuture$MinimalStage;->completeOnTimeout(Ljava/lang/Object;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/CompletableFuture;
Ljava/util/concurrent/CompletableFuture$MinimalStage;->newIncompleteFuture()Ljava/util/concurrent/CompletableFuture;
Ljava/util/concurrent/CompletableFuture$MinimalStage;->orTimeout(JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$OrAccept;
Ljava/util/concurrent/CompletableFuture$OrAccept;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/Consumer;)V
Ljava/util/concurrent/CompletableFuture$OrAccept;->fn:Ljava/util/function/Consumer;
Ljava/util/concurrent/CompletableFuture$OrAccept;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$OrApply;
Ljava/util/concurrent/CompletableFuture$OrApply;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/Function;)V
Ljava/util/concurrent/CompletableFuture$OrApply;->fn:Ljava/util/function/Function;
Ljava/util/concurrent/CompletableFuture$OrApply;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$OrRelay;
Ljava/util/concurrent/CompletableFuture$OrRelay;-><init>(Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;)V
Ljava/util/concurrent/CompletableFuture$OrRelay;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$OrRun;
Ljava/util/concurrent/CompletableFuture$OrRun;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/lang/Runnable;)V
Ljava/util/concurrent/CompletableFuture$OrRun;->fn:Ljava/lang/Runnable;
Ljava/util/concurrent/CompletableFuture$OrRun;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$Signaller;
Ljava/util/concurrent/CompletableFuture$Signaller;-><init>(ZJJ)V
Ljava/util/concurrent/CompletableFuture$Signaller;->deadline:J
Ljava/util/concurrent/CompletableFuture$Signaller;->interrupted:Z
@@ -115231,50 +108030,38 @@
Ljava/util/concurrent/CompletableFuture$Signaller;->nanos:J
Ljava/util/concurrent/CompletableFuture$Signaller;->thread:Ljava/lang/Thread;
Ljava/util/concurrent/CompletableFuture$Signaller;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$TaskSubmitter;
Ljava/util/concurrent/CompletableFuture$TaskSubmitter;-><init>(Ljava/util/concurrent/Executor;Ljava/lang/Runnable;)V
Ljava/util/concurrent/CompletableFuture$TaskSubmitter;->action:Ljava/lang/Runnable;
Ljava/util/concurrent/CompletableFuture$TaskSubmitter;->executor:Ljava/util/concurrent/Executor;
-Ljava/util/concurrent/CompletableFuture$ThreadPerTaskExecutor;
Ljava/util/concurrent/CompletableFuture$ThreadPerTaskExecutor;-><init>()V
-Ljava/util/concurrent/CompletableFuture$Timeout;
Ljava/util/concurrent/CompletableFuture$Timeout;-><init>(Ljava/util/concurrent/CompletableFuture;)V
Ljava/util/concurrent/CompletableFuture$Timeout;->f:Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$UniAccept;
Ljava/util/concurrent/CompletableFuture$UniAccept;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/Consumer;)V
Ljava/util/concurrent/CompletableFuture$UniAccept;->fn:Ljava/util/function/Consumer;
Ljava/util/concurrent/CompletableFuture$UniAccept;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$UniApply;
Ljava/util/concurrent/CompletableFuture$UniApply;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/Function;)V
Ljava/util/concurrent/CompletableFuture$UniApply;->fn:Ljava/util/function/Function;
Ljava/util/concurrent/CompletableFuture$UniApply;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$UniCompletion;
Ljava/util/concurrent/CompletableFuture$UniCompletion;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;)V
Ljava/util/concurrent/CompletableFuture$UniCompletion;->claim()Z
Ljava/util/concurrent/CompletableFuture$UniCompletion;->dep:Ljava/util/concurrent/CompletableFuture;
Ljava/util/concurrent/CompletableFuture$UniCompletion;->executor:Ljava/util/concurrent/Executor;
Ljava/util/concurrent/CompletableFuture$UniCompletion;->isLive()Z
Ljava/util/concurrent/CompletableFuture$UniCompletion;->src:Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$UniCompose;
Ljava/util/concurrent/CompletableFuture$UniCompose;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/Function;)V
Ljava/util/concurrent/CompletableFuture$UniCompose;->fn:Ljava/util/function/Function;
Ljava/util/concurrent/CompletableFuture$UniCompose;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$UniExceptionally;
Ljava/util/concurrent/CompletableFuture$UniExceptionally;-><init>(Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/Function;)V
Ljava/util/concurrent/CompletableFuture$UniExceptionally;->fn:Ljava/util/function/Function;
Ljava/util/concurrent/CompletableFuture$UniExceptionally;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$UniHandle;
Ljava/util/concurrent/CompletableFuture$UniHandle;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/BiFunction;)V
Ljava/util/concurrent/CompletableFuture$UniHandle;->fn:Ljava/util/function/BiFunction;
Ljava/util/concurrent/CompletableFuture$UniHandle;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$UniRelay;
Ljava/util/concurrent/CompletableFuture$UniRelay;-><init>(Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;)V
Ljava/util/concurrent/CompletableFuture$UniRelay;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$UniRun;
Ljava/util/concurrent/CompletableFuture$UniRun;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/lang/Runnable;)V
Ljava/util/concurrent/CompletableFuture$UniRun;->fn:Ljava/lang/Runnable;
Ljava/util/concurrent/CompletableFuture$UniRun;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$UniWhenComplete;
Ljava/util/concurrent/CompletableFuture$UniWhenComplete;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/BiConsumer;)V
Ljava/util/concurrent/CompletableFuture$UniWhenComplete;->fn:Ljava/util/function/BiConsumer;
Ljava/util/concurrent/CompletableFuture$UniWhenComplete;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
@@ -115367,13 +108154,11 @@
Ljava/util/concurrent/CompletableFuture;->uniWhenCompleteStage(Ljava/util/concurrent/Executor;Ljava/util/function/BiConsumer;)Ljava/util/concurrent/CompletableFuture;
Ljava/util/concurrent/CompletableFuture;->USE_COMMON_POOL:Z
Ljava/util/concurrent/CompletableFuture;->waitingGet(Z)Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentHashMap$BaseIterator;
Ljava/util/concurrent/ConcurrentHashMap$BaseIterator;-><init>([Ljava/util/concurrent/ConcurrentHashMap$Node;IIILjava/util/concurrent/ConcurrentHashMap;)V
Ljava/util/concurrent/ConcurrentHashMap$BaseIterator;->hasNext()Z
Ljava/util/concurrent/ConcurrentHashMap$BaseIterator;->lastReturned:Ljava/util/concurrent/ConcurrentHashMap$Node;
Ljava/util/concurrent/ConcurrentHashMap$BaseIterator;->map:Ljava/util/concurrent/ConcurrentHashMap;
Ljava/util/concurrent/ConcurrentHashMap$BaseIterator;->remove()V
-Ljava/util/concurrent/ConcurrentHashMap$BulkTask;
Ljava/util/concurrent/ConcurrentHashMap$BulkTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
Ljava/util/concurrent/ConcurrentHashMap$BulkTask;->advance()Ljava/util/concurrent/ConcurrentHashMap$Node;
Ljava/util/concurrent/ConcurrentHashMap$BulkTask;->baseIndex:I
@@ -115387,82 +108172,63 @@
Ljava/util/concurrent/ConcurrentHashMap$BulkTask;->spare:Ljava/util/concurrent/ConcurrentHashMap$TableStack;
Ljava/util/concurrent/ConcurrentHashMap$BulkTask;->stack:Ljava/util/concurrent/ConcurrentHashMap$TableStack;
Ljava/util/concurrent/ConcurrentHashMap$BulkTask;->tab:[Ljava/util/concurrent/ConcurrentHashMap$Node;
-Ljava/util/concurrent/ConcurrentHashMap$CollectionView;
Ljava/util/concurrent/ConcurrentHashMap$CollectionView;-><init>(Ljava/util/concurrent/ConcurrentHashMap;)V
Ljava/util/concurrent/ConcurrentHashMap$CollectionView;->getMap()Ljava/util/concurrent/ConcurrentHashMap;
Ljava/util/concurrent/ConcurrentHashMap$CollectionView;->map:Ljava/util/concurrent/ConcurrentHashMap;
Ljava/util/concurrent/ConcurrentHashMap$CollectionView;->OOME_MSG:Ljava/lang/String;
-Ljava/util/concurrent/ConcurrentHashMap$CounterCell;
Ljava/util/concurrent/ConcurrentHashMap$CounterCell;-><init>(J)V
Ljava/util/concurrent/ConcurrentHashMap$CounterCell;->value:J
-Ljava/util/concurrent/ConcurrentHashMap$EntryIterator;
Ljava/util/concurrent/ConcurrentHashMap$EntryIterator;-><init>([Ljava/util/concurrent/ConcurrentHashMap$Node;IIILjava/util/concurrent/ConcurrentHashMap;)V
-Ljava/util/concurrent/ConcurrentHashMap$EntrySetView;
Ljava/util/concurrent/ConcurrentHashMap$EntrySetView;-><init>(Ljava/util/concurrent/ConcurrentHashMap;)V
Ljava/util/concurrent/ConcurrentHashMap$EntrySetView;->add(Ljava/util/Map$Entry;)Z
Ljava/util/concurrent/ConcurrentHashMap$EntrySetView;->addAll(Ljava/util/Collection;)Z
Ljava/util/concurrent/ConcurrentHashMap$EntrySetView;->forEach(Ljava/util/function/Consumer;)V
Ljava/util/concurrent/ConcurrentHashMap$EntrySetView;->removeIf(Ljava/util/function/Predicate;)Z
-Ljava/util/concurrent/ConcurrentHashMap$EntrySpliterator;
Ljava/util/concurrent/ConcurrentHashMap$EntrySpliterator;-><init>([Ljava/util/concurrent/ConcurrentHashMap$Node;IIIJLjava/util/concurrent/ConcurrentHashMap;)V
Ljava/util/concurrent/ConcurrentHashMap$EntrySpliterator;->est:J
Ljava/util/concurrent/ConcurrentHashMap$EntrySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
Ljava/util/concurrent/ConcurrentHashMap$EntrySpliterator;->map:Ljava/util/concurrent/ConcurrentHashMap;
Ljava/util/concurrent/ConcurrentHashMap$EntrySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/concurrent/ConcurrentHashMap$ForEachEntryTask;
Ljava/util/concurrent/ConcurrentHashMap$ForEachEntryTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/Consumer;)V
Ljava/util/concurrent/ConcurrentHashMap$ForEachEntryTask;->action:Ljava/util/function/Consumer;
-Ljava/util/concurrent/ConcurrentHashMap$ForEachKeyTask;
Ljava/util/concurrent/ConcurrentHashMap$ForEachKeyTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/Consumer;)V
Ljava/util/concurrent/ConcurrentHashMap$ForEachKeyTask;->action:Ljava/util/function/Consumer;
-Ljava/util/concurrent/ConcurrentHashMap$ForEachMappingTask;
Ljava/util/concurrent/ConcurrentHashMap$ForEachMappingTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/BiConsumer;)V
Ljava/util/concurrent/ConcurrentHashMap$ForEachMappingTask;->action:Ljava/util/function/BiConsumer;
-Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedEntryTask;
Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedEntryTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/Function;Ljava/util/function/Consumer;)V
Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedEntryTask;->action:Ljava/util/function/Consumer;
Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedEntryTask;->transformer:Ljava/util/function/Function;
-Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedKeyTask;
Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedKeyTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/Function;Ljava/util/function/Consumer;)V
Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedKeyTask;->action:Ljava/util/function/Consumer;
Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedKeyTask;->transformer:Ljava/util/function/Function;
-Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedMappingTask;
Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedMappingTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/BiFunction;Ljava/util/function/Consumer;)V
Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedMappingTask;->action:Ljava/util/function/Consumer;
Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedMappingTask;->transformer:Ljava/util/function/BiFunction;
-Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedValueTask;
Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedValueTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/Function;Ljava/util/function/Consumer;)V
Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedValueTask;->action:Ljava/util/function/Consumer;
Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedValueTask;->transformer:Ljava/util/function/Function;
-Ljava/util/concurrent/ConcurrentHashMap$ForEachValueTask;
Ljava/util/concurrent/ConcurrentHashMap$ForEachValueTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/Consumer;)V
Ljava/util/concurrent/ConcurrentHashMap$ForEachValueTask;->action:Ljava/util/function/Consumer;
-Ljava/util/concurrent/ConcurrentHashMap$ForwardingNode;
Ljava/util/concurrent/ConcurrentHashMap$ForwardingNode;-><init>([Ljava/util/concurrent/ConcurrentHashMap$Node;)V
Ljava/util/concurrent/ConcurrentHashMap$ForwardingNode;->find(ILjava/lang/Object;)Ljava/util/concurrent/ConcurrentHashMap$Node;
Ljava/util/concurrent/ConcurrentHashMap$ForwardingNode;->nextTable:[Ljava/util/concurrent/ConcurrentHashMap$Node;
-Ljava/util/concurrent/ConcurrentHashMap$KeyIterator;
Ljava/util/concurrent/ConcurrentHashMap$KeyIterator;-><init>([Ljava/util/concurrent/ConcurrentHashMap$Node;IIILjava/util/concurrent/ConcurrentHashMap;)V
Ljava/util/concurrent/ConcurrentHashMap$KeySetView;-><init>(Ljava/util/concurrent/ConcurrentHashMap;Ljava/lang/Object;)V
Ljava/util/concurrent/ConcurrentHashMap$KeySetView;->value:Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentHashMap$KeySpliterator;
Ljava/util/concurrent/ConcurrentHashMap$KeySpliterator;-><init>([Ljava/util/concurrent/ConcurrentHashMap$Node;IIIJ)V
Ljava/util/concurrent/ConcurrentHashMap$KeySpliterator;->est:J
Ljava/util/concurrent/ConcurrentHashMap$KeySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
Ljava/util/concurrent/ConcurrentHashMap$KeySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/concurrent/ConcurrentHashMap$MapEntry;
Ljava/util/concurrent/ConcurrentHashMap$MapEntry;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/util/concurrent/ConcurrentHashMap;)V
Ljava/util/concurrent/ConcurrentHashMap$MapEntry;->key:Ljava/lang/Object;
Ljava/util/concurrent/ConcurrentHashMap$MapEntry;->map:Ljava/util/concurrent/ConcurrentHashMap;
Ljava/util/concurrent/ConcurrentHashMap$MapEntry;->val:Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesTask;
Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesTask;Ljava/util/function/Function;Ljava/util/function/BiFunction;)V
Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesTask;
Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesTask;->reducer:Ljava/util/function/BiFunction;
Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesTask;->result:Ljava/lang/Object;
Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesTask;
Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesTask;->transformer:Ljava/util/function/Function;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToDoubleTask;
Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToDoubleTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToDoubleTask;Ljava/util/function/ToDoubleFunction;DLjava/util/function/DoubleBinaryOperator;)V
Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToDoubleTask;->basis:D
Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToDoubleTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToDoubleTask;
@@ -115470,7 +108236,6 @@
Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToDoubleTask;->result:D
Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToDoubleTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToDoubleTask;
Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToDoubleTask;->transformer:Ljava/util/function/ToDoubleFunction;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToIntTask;
Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToIntTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToIntTask;Ljava/util/function/ToIntFunction;ILjava/util/function/IntBinaryOperator;)V
Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToIntTask;->basis:I
Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToIntTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToIntTask;
@@ -115478,7 +108243,6 @@
Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToIntTask;->result:I
Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToIntTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToIntTask;
Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToIntTask;->transformer:Ljava/util/function/ToIntFunction;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToLongTask;
Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToLongTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToLongTask;Ljava/util/function/ToLongFunction;JLjava/util/function/LongBinaryOperator;)V
Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToLongTask;->basis:J
Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToLongTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToLongTask;
@@ -115486,14 +108250,12 @@
Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToLongTask;->result:J
Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToLongTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToLongTask;
Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToLongTask;->transformer:Ljava/util/function/ToLongFunction;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysTask;
Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysTask;Ljava/util/function/Function;Ljava/util/function/BiFunction;)V
Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysTask;
Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysTask;->reducer:Ljava/util/function/BiFunction;
Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysTask;->result:Ljava/lang/Object;
Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysTask;
Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysTask;->transformer:Ljava/util/function/Function;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToDoubleTask;
Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToDoubleTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToDoubleTask;Ljava/util/function/ToDoubleFunction;DLjava/util/function/DoubleBinaryOperator;)V
Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToDoubleTask;->basis:D
Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToDoubleTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToDoubleTask;
@@ -115501,7 +108263,6 @@
Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToDoubleTask;->result:D
Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToDoubleTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToDoubleTask;
Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToDoubleTask;->transformer:Ljava/util/function/ToDoubleFunction;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToIntTask;
Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToIntTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToIntTask;Ljava/util/function/ToIntFunction;ILjava/util/function/IntBinaryOperator;)V
Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToIntTask;->basis:I
Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToIntTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToIntTask;
@@ -115509,7 +108270,6 @@
Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToIntTask;->result:I
Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToIntTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToIntTask;
Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToIntTask;->transformer:Ljava/util/function/ToIntFunction;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToLongTask;
Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToLongTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToLongTask;Ljava/util/function/ToLongFunction;JLjava/util/function/LongBinaryOperator;)V
Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToLongTask;->basis:J
Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToLongTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToLongTask;
@@ -115517,14 +108277,12 @@
Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToLongTask;->result:J
Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToLongTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToLongTask;
Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToLongTask;->transformer:Ljava/util/function/ToLongFunction;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsTask;
Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsTask;Ljava/util/function/BiFunction;Ljava/util/function/BiFunction;)V
Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsTask;
Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsTask;->reducer:Ljava/util/function/BiFunction;
Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsTask;->result:Ljava/lang/Object;
Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsTask;
Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsTask;->transformer:Ljava/util/function/BiFunction;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToDoubleTask;
Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToDoubleTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToDoubleTask;Ljava/util/function/ToDoubleBiFunction;DLjava/util/function/DoubleBinaryOperator;)V
Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToDoubleTask;->basis:D
Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToDoubleTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToDoubleTask;
@@ -115532,7 +108290,6 @@
Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToDoubleTask;->result:D
Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToDoubleTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToDoubleTask;
Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToDoubleTask;->transformer:Ljava/util/function/ToDoubleBiFunction;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToIntTask;
Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToIntTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToIntTask;Ljava/util/function/ToIntBiFunction;ILjava/util/function/IntBinaryOperator;)V
Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToIntTask;->basis:I
Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToIntTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToIntTask;
@@ -115540,7 +108297,6 @@
Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToIntTask;->result:I
Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToIntTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToIntTask;
Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToIntTask;->transformer:Ljava/util/function/ToIntBiFunction;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToLongTask;
Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToLongTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToLongTask;Ljava/util/function/ToLongBiFunction;JLjava/util/function/LongBinaryOperator;)V
Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToLongTask;->basis:J
Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToLongTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToLongTask;
@@ -115548,14 +108304,12 @@
Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToLongTask;->result:J
Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToLongTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToLongTask;
Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToLongTask;->transformer:Ljava/util/function/ToLongBiFunction;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesTask;
Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesTask;Ljava/util/function/Function;Ljava/util/function/BiFunction;)V
Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesTask;
Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesTask;->reducer:Ljava/util/function/BiFunction;
Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesTask;->result:Ljava/lang/Object;
Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesTask;
Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesTask;->transformer:Ljava/util/function/Function;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToDoubleTask;
Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToDoubleTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToDoubleTask;Ljava/util/function/ToDoubleFunction;DLjava/util/function/DoubleBinaryOperator;)V
Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToDoubleTask;->basis:D
Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToDoubleTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToDoubleTask;
@@ -115563,7 +108317,6 @@
Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToDoubleTask;->result:D
Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToDoubleTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToDoubleTask;
Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToDoubleTask;->transformer:Ljava/util/function/ToDoubleFunction;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToIntTask;
Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToIntTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToIntTask;Ljava/util/function/ToIntFunction;ILjava/util/function/IntBinaryOperator;)V
Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToIntTask;->basis:I
Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToIntTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToIntTask;
@@ -115571,7 +108324,6 @@
Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToIntTask;->result:I
Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToIntTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToIntTask;
Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToIntTask;->transformer:Ljava/util/function/ToIntFunction;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToLongTask;
Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToLongTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToLongTask;Ljava/util/function/ToLongFunction;JLjava/util/function/LongBinaryOperator;)V
Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToLongTask;->basis:J
Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToLongTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToLongTask;
@@ -115579,60 +108331,48 @@
Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToLongTask;->result:J
Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToLongTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToLongTask;
Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToLongTask;->transformer:Ljava/util/function/ToLongFunction;
-Ljava/util/concurrent/ConcurrentHashMap$Node;
Ljava/util/concurrent/ConcurrentHashMap$Node;-><init>(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/concurrent/ConcurrentHashMap$Node;)V
Ljava/util/concurrent/ConcurrentHashMap$Node;->find(ILjava/lang/Object;)Ljava/util/concurrent/ConcurrentHashMap$Node;
Ljava/util/concurrent/ConcurrentHashMap$Node;->hash:I
Ljava/util/concurrent/ConcurrentHashMap$Node;->key:Ljava/lang/Object;
Ljava/util/concurrent/ConcurrentHashMap$Node;->next:Ljava/util/concurrent/ConcurrentHashMap$Node;
Ljava/util/concurrent/ConcurrentHashMap$Node;->val:Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentHashMap$ReduceEntriesTask;
Ljava/util/concurrent/ConcurrentHashMap$ReduceEntriesTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$ReduceEntriesTask;Ljava/util/function/BiFunction;)V
Ljava/util/concurrent/ConcurrentHashMap$ReduceEntriesTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$ReduceEntriesTask;
Ljava/util/concurrent/ConcurrentHashMap$ReduceEntriesTask;->reducer:Ljava/util/function/BiFunction;
Ljava/util/concurrent/ConcurrentHashMap$ReduceEntriesTask;->result:Ljava/util/Map$Entry;
Ljava/util/concurrent/ConcurrentHashMap$ReduceEntriesTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$ReduceEntriesTask;
-Ljava/util/concurrent/ConcurrentHashMap$ReduceKeysTask;
Ljava/util/concurrent/ConcurrentHashMap$ReduceKeysTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$ReduceKeysTask;Ljava/util/function/BiFunction;)V
Ljava/util/concurrent/ConcurrentHashMap$ReduceKeysTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$ReduceKeysTask;
Ljava/util/concurrent/ConcurrentHashMap$ReduceKeysTask;->reducer:Ljava/util/function/BiFunction;
Ljava/util/concurrent/ConcurrentHashMap$ReduceKeysTask;->result:Ljava/lang/Object;
Ljava/util/concurrent/ConcurrentHashMap$ReduceKeysTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$ReduceKeysTask;
-Ljava/util/concurrent/ConcurrentHashMap$ReduceValuesTask;
Ljava/util/concurrent/ConcurrentHashMap$ReduceValuesTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$ReduceValuesTask;Ljava/util/function/BiFunction;)V
Ljava/util/concurrent/ConcurrentHashMap$ReduceValuesTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$ReduceValuesTask;
Ljava/util/concurrent/ConcurrentHashMap$ReduceValuesTask;->reducer:Ljava/util/function/BiFunction;
Ljava/util/concurrent/ConcurrentHashMap$ReduceValuesTask;->result:Ljava/lang/Object;
Ljava/util/concurrent/ConcurrentHashMap$ReduceValuesTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$ReduceValuesTask;
-Ljava/util/concurrent/ConcurrentHashMap$ReservationNode;
Ljava/util/concurrent/ConcurrentHashMap$ReservationNode;-><init>()V
Ljava/util/concurrent/ConcurrentHashMap$ReservationNode;->find(ILjava/lang/Object;)Ljava/util/concurrent/ConcurrentHashMap$Node;
-Ljava/util/concurrent/ConcurrentHashMap$SearchEntriesTask;
Ljava/util/concurrent/ConcurrentHashMap$SearchEntriesTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/Function;Ljava/util/concurrent/atomic/AtomicReference;)V
Ljava/util/concurrent/ConcurrentHashMap$SearchEntriesTask;->result:Ljava/util/concurrent/atomic/AtomicReference;
Ljava/util/concurrent/ConcurrentHashMap$SearchEntriesTask;->searchFunction:Ljava/util/function/Function;
-Ljava/util/concurrent/ConcurrentHashMap$SearchKeysTask;
Ljava/util/concurrent/ConcurrentHashMap$SearchKeysTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/Function;Ljava/util/concurrent/atomic/AtomicReference;)V
Ljava/util/concurrent/ConcurrentHashMap$SearchKeysTask;->result:Ljava/util/concurrent/atomic/AtomicReference;
Ljava/util/concurrent/ConcurrentHashMap$SearchKeysTask;->searchFunction:Ljava/util/function/Function;
-Ljava/util/concurrent/ConcurrentHashMap$SearchMappingsTask;
Ljava/util/concurrent/ConcurrentHashMap$SearchMappingsTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/BiFunction;Ljava/util/concurrent/atomic/AtomicReference;)V
Ljava/util/concurrent/ConcurrentHashMap$SearchMappingsTask;->result:Ljava/util/concurrent/atomic/AtomicReference;
Ljava/util/concurrent/ConcurrentHashMap$SearchMappingsTask;->searchFunction:Ljava/util/function/BiFunction;
-Ljava/util/concurrent/ConcurrentHashMap$SearchValuesTask;
Ljava/util/concurrent/ConcurrentHashMap$SearchValuesTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/Function;Ljava/util/concurrent/atomic/AtomicReference;)V
Ljava/util/concurrent/ConcurrentHashMap$SearchValuesTask;->result:Ljava/util/concurrent/atomic/AtomicReference;
Ljava/util/concurrent/ConcurrentHashMap$SearchValuesTask;->searchFunction:Ljava/util/function/Function;
-Ljava/util/concurrent/ConcurrentHashMap$Segment;
Ljava/util/concurrent/ConcurrentHashMap$Segment;-><init>(F)V
Ljava/util/concurrent/ConcurrentHashMap$Segment;->loadFactor:F
-Ljava/util/concurrent/ConcurrentHashMap$TableStack;
Ljava/util/concurrent/ConcurrentHashMap$TableStack;-><init>()V
Ljava/util/concurrent/ConcurrentHashMap$TableStack;->index:I
Ljava/util/concurrent/ConcurrentHashMap$TableStack;->length:I
Ljava/util/concurrent/ConcurrentHashMap$TableStack;->next:Ljava/util/concurrent/ConcurrentHashMap$TableStack;
Ljava/util/concurrent/ConcurrentHashMap$TableStack;->tab:[Ljava/util/concurrent/ConcurrentHashMap$Node;
-Ljava/util/concurrent/ConcurrentHashMap$Traverser;
Ljava/util/concurrent/ConcurrentHashMap$Traverser;-><init>([Ljava/util/concurrent/ConcurrentHashMap$Node;III)V
Ljava/util/concurrent/ConcurrentHashMap$Traverser;->advance()Ljava/util/concurrent/ConcurrentHashMap$Node;
Ljava/util/concurrent/ConcurrentHashMap$Traverser;->baseIndex:I
@@ -115645,7 +108385,6 @@
Ljava/util/concurrent/ConcurrentHashMap$Traverser;->spare:Ljava/util/concurrent/ConcurrentHashMap$TableStack;
Ljava/util/concurrent/ConcurrentHashMap$Traverser;->stack:Ljava/util/concurrent/ConcurrentHashMap$TableStack;
Ljava/util/concurrent/ConcurrentHashMap$Traverser;->tab:[Ljava/util/concurrent/ConcurrentHashMap$Node;
-Ljava/util/concurrent/ConcurrentHashMap$TreeBin;
Ljava/util/concurrent/ConcurrentHashMap$TreeBin;-><init>(Ljava/util/concurrent/ConcurrentHashMap$TreeNode;)V
Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->balanceDeletion(Ljava/util/concurrent/ConcurrentHashMap$TreeNode;Ljava/util/concurrent/ConcurrentHashMap$TreeNode;)Ljava/util/concurrent/ConcurrentHashMap$TreeNode;
Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->balanceInsertion(Ljava/util/concurrent/ConcurrentHashMap$TreeNode;Ljava/util/concurrent/ConcurrentHashMap$TreeNode;)Ljava/util/concurrent/ConcurrentHashMap$TreeNode;
@@ -115668,7 +108407,6 @@
Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->WAITER:I
Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->waiter:Ljava/lang/Thread;
Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->WRITER:I
-Ljava/util/concurrent/ConcurrentHashMap$TreeNode;
Ljava/util/concurrent/ConcurrentHashMap$TreeNode;-><init>(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$TreeNode;)V
Ljava/util/concurrent/ConcurrentHashMap$TreeNode;->find(ILjava/lang/Object;)Ljava/util/concurrent/ConcurrentHashMap$Node;
Ljava/util/concurrent/ConcurrentHashMap$TreeNode;->findTreeNode(ILjava/lang/Object;Ljava/lang/Class;)Ljava/util/concurrent/ConcurrentHashMap$TreeNode;
@@ -115677,14 +108415,11 @@
Ljava/util/concurrent/ConcurrentHashMap$TreeNode;->prev:Ljava/util/concurrent/ConcurrentHashMap$TreeNode;
Ljava/util/concurrent/ConcurrentHashMap$TreeNode;->red:Z
Ljava/util/concurrent/ConcurrentHashMap$TreeNode;->right:Ljava/util/concurrent/ConcurrentHashMap$TreeNode;
-Ljava/util/concurrent/ConcurrentHashMap$ValueIterator;
Ljava/util/concurrent/ConcurrentHashMap$ValueIterator;-><init>([Ljava/util/concurrent/ConcurrentHashMap$Node;IIILjava/util/concurrent/ConcurrentHashMap;)V
-Ljava/util/concurrent/ConcurrentHashMap$ValueSpliterator;
Ljava/util/concurrent/ConcurrentHashMap$ValueSpliterator;-><init>([Ljava/util/concurrent/ConcurrentHashMap$Node;IIIJ)V
Ljava/util/concurrent/ConcurrentHashMap$ValueSpliterator;->est:J
Ljava/util/concurrent/ConcurrentHashMap$ValueSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
Ljava/util/concurrent/ConcurrentHashMap$ValueSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/concurrent/ConcurrentHashMap$ValuesView;
Ljava/util/concurrent/ConcurrentHashMap$ValuesView;-><init>(Ljava/util/concurrent/ConcurrentHashMap;)V
Ljava/util/concurrent/ConcurrentHashMap$ValuesView;->add(Ljava/lang/Object;)Z
Ljava/util/concurrent/ConcurrentHashMap$ValuesView;->addAll(Ljava/util/Collection;)Z
@@ -115747,15 +108482,12 @@
Ljava/util/concurrent/ConcurrentHashMap;->untreeify(Ljava/util/concurrent/ConcurrentHashMap$Node;)Ljava/util/concurrent/ConcurrentHashMap$Node;
Ljava/util/concurrent/ConcurrentHashMap;->UNTREEIFY_THRESHOLD:I
Ljava/util/concurrent/ConcurrentHashMap;->values:Ljava/util/concurrent/ConcurrentHashMap$ValuesView;
-Ljava/util/concurrent/ConcurrentLinkedDeque$AbstractItr;
-Ljava/util/concurrent/ConcurrentLinkedDeque$AbstractItr;-><init>()V
Ljava/util/concurrent/ConcurrentLinkedDeque$AbstractItr;->advance()V
Ljava/util/concurrent/ConcurrentLinkedDeque$AbstractItr;->lastRet:Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
Ljava/util/concurrent/ConcurrentLinkedDeque$AbstractItr;->nextItem:Ljava/lang/Object;
Ljava/util/concurrent/ConcurrentLinkedDeque$AbstractItr;->nextNode(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
Ljava/util/concurrent/ConcurrentLinkedDeque$AbstractItr;->nextNode:Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
Ljava/util/concurrent/ConcurrentLinkedDeque$AbstractItr;->startNode()Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
-Ljava/util/concurrent/ConcurrentLinkedDeque$CLDSpliterator;
Ljava/util/concurrent/ConcurrentLinkedDeque$CLDSpliterator;-><init>(Ljava/util/concurrent/ConcurrentLinkedDeque;)V
Ljava/util/concurrent/ConcurrentLinkedDeque$CLDSpliterator;->batch:I
Ljava/util/concurrent/ConcurrentLinkedDeque$CLDSpliterator;->current:Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
@@ -115764,15 +108496,10 @@
Ljava/util/concurrent/ConcurrentLinkedDeque$CLDSpliterator;->MAX_BATCH:I
Ljava/util/concurrent/ConcurrentLinkedDeque$CLDSpliterator;->queue:Ljava/util/concurrent/ConcurrentLinkedDeque;
Ljava/util/concurrent/ConcurrentLinkedDeque$CLDSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/concurrent/ConcurrentLinkedDeque$DescendingItr;
-Ljava/util/concurrent/ConcurrentLinkedDeque$DescendingItr;-><init>()V
Ljava/util/concurrent/ConcurrentLinkedDeque$DescendingItr;->nextNode(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
Ljava/util/concurrent/ConcurrentLinkedDeque$DescendingItr;->startNode()Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
-Ljava/util/concurrent/ConcurrentLinkedDeque$Itr;
-Ljava/util/concurrent/ConcurrentLinkedDeque$Itr;-><init>()V
Ljava/util/concurrent/ConcurrentLinkedDeque$Itr;->nextNode(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
Ljava/util/concurrent/ConcurrentLinkedDeque$Itr;->startNode()Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
-Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
Ljava/util/concurrent/ConcurrentLinkedDeque$Node;-><init>()V
Ljava/util/concurrent/ConcurrentLinkedDeque$Node;-><init>(Ljava/lang/Object;)V
Ljava/util/concurrent/ConcurrentLinkedDeque$Node;->casItem(Ljava/lang/Object;Ljava/lang/Object;)Z
@@ -115815,7 +108542,6 @@
Ljava/util/concurrent/ConcurrentLinkedDeque;->unlinkLast(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)V
Ljava/util/concurrent/ConcurrentLinkedDeque;->updateHead()V
Ljava/util/concurrent/ConcurrentLinkedDeque;->updateTail()V
-Ljava/util/concurrent/ConcurrentLinkedQueue$CLQSpliterator;
Ljava/util/concurrent/ConcurrentLinkedQueue$CLQSpliterator;-><init>(Ljava/util/concurrent/ConcurrentLinkedQueue;)V
Ljava/util/concurrent/ConcurrentLinkedQueue$CLQSpliterator;->batch:I
Ljava/util/concurrent/ConcurrentLinkedQueue$CLQSpliterator;->current:Ljava/util/concurrent/ConcurrentLinkedQueue$Node;
@@ -115824,12 +108550,9 @@
Ljava/util/concurrent/ConcurrentLinkedQueue$CLQSpliterator;->MAX_BATCH:I
Ljava/util/concurrent/ConcurrentLinkedQueue$CLQSpliterator;->queue:Ljava/util/concurrent/ConcurrentLinkedQueue;
Ljava/util/concurrent/ConcurrentLinkedQueue$CLQSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/concurrent/ConcurrentLinkedQueue$Itr;
-Ljava/util/concurrent/ConcurrentLinkedQueue$Itr;-><init>()V
Ljava/util/concurrent/ConcurrentLinkedQueue$Itr;->lastRet:Ljava/util/concurrent/ConcurrentLinkedQueue$Node;
Ljava/util/concurrent/ConcurrentLinkedQueue$Itr;->nextItem:Ljava/lang/Object;
Ljava/util/concurrent/ConcurrentLinkedQueue$Itr;->nextNode:Ljava/util/concurrent/ConcurrentLinkedQueue$Node;
-Ljava/util/concurrent/ConcurrentLinkedQueue$Node;
Ljava/util/concurrent/ConcurrentLinkedQueue$Node;-><init>()V
Ljava/util/concurrent/ConcurrentLinkedQueue$Node;->item:Ljava/lang/Object;
Ljava/util/concurrent/ConcurrentLinkedQueue$Node;->next:Ljava/util/concurrent/ConcurrentLinkedQueue$Node;
@@ -115850,7 +108573,6 @@
Ljava/util/concurrent/ConcurrentLinkedQueue;->toArrayInternal([Ljava/lang/Object;)[Ljava/lang/Object;
Ljava/util/concurrent/ConcurrentLinkedQueue;->U:Lsun/misc/Unsafe;
Ljava/util/concurrent/ConcurrentLinkedQueue;->updateHead(Ljava/util/concurrent/ConcurrentLinkedQueue$Node;Ljava/util/concurrent/ConcurrentLinkedQueue$Node;)V
-Ljava/util/concurrent/ConcurrentSkipListMap$CSLMSpliterator;
Ljava/util/concurrent/ConcurrentSkipListMap$CSLMSpliterator;-><init>(Ljava/util/Comparator;Ljava/util/concurrent/ConcurrentSkipListMap$Index;Ljava/util/concurrent/ConcurrentSkipListMap$Node;Ljava/lang/Object;I)V
Ljava/util/concurrent/ConcurrentSkipListMap$CSLMSpliterator;->comparator:Ljava/util/Comparator;
Ljava/util/concurrent/ConcurrentSkipListMap$CSLMSpliterator;->current:Ljava/util/concurrent/ConcurrentSkipListMap$Node;
@@ -115858,20 +108580,14 @@
Ljava/util/concurrent/ConcurrentSkipListMap$CSLMSpliterator;->estimateSize()J
Ljava/util/concurrent/ConcurrentSkipListMap$CSLMSpliterator;->fence:Ljava/lang/Object;
Ljava/util/concurrent/ConcurrentSkipListMap$CSLMSpliterator;->row:Ljava/util/concurrent/ConcurrentSkipListMap$Index;
-Ljava/util/concurrent/ConcurrentSkipListMap$EntryIterator;
-Ljava/util/concurrent/ConcurrentSkipListMap$EntryIterator;-><init>()V
-Ljava/util/concurrent/ConcurrentSkipListMap$EntrySet;
Ljava/util/concurrent/ConcurrentSkipListMap$EntrySet;-><init>(Ljava/util/concurrent/ConcurrentNavigableMap;)V
Ljava/util/concurrent/ConcurrentSkipListMap$EntrySet;->m:Ljava/util/concurrent/ConcurrentNavigableMap;
Ljava/util/concurrent/ConcurrentSkipListMap$EntrySet;->removeIf(Ljava/util/function/Predicate;)Z
-Ljava/util/concurrent/ConcurrentSkipListMap$EntrySpliterator;
Ljava/util/concurrent/ConcurrentSkipListMap$EntrySpliterator;-><init>(Ljava/util/Comparator;Ljava/util/concurrent/ConcurrentSkipListMap$Index;Ljava/util/concurrent/ConcurrentSkipListMap$Node;Ljava/lang/Object;I)V
Ljava/util/concurrent/ConcurrentSkipListMap$EntrySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
Ljava/util/concurrent/ConcurrentSkipListMap$EntrySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/concurrent/ConcurrentSkipListMap$HeadIndex;
Ljava/util/concurrent/ConcurrentSkipListMap$HeadIndex;-><init>(Ljava/util/concurrent/ConcurrentSkipListMap$Node;Ljava/util/concurrent/ConcurrentSkipListMap$Index;Ljava/util/concurrent/ConcurrentSkipListMap$Index;I)V
Ljava/util/concurrent/ConcurrentSkipListMap$HeadIndex;->level:I
-Ljava/util/concurrent/ConcurrentSkipListMap$Index;
Ljava/util/concurrent/ConcurrentSkipListMap$Index;-><init>(Ljava/util/concurrent/ConcurrentSkipListMap$Node;Ljava/util/concurrent/ConcurrentSkipListMap$Index;Ljava/util/concurrent/ConcurrentSkipListMap$Index;)V
Ljava/util/concurrent/ConcurrentSkipListMap$Index;->casRight(Ljava/util/concurrent/ConcurrentSkipListMap$Index;Ljava/util/concurrent/ConcurrentSkipListMap$Index;)Z
Ljava/util/concurrent/ConcurrentSkipListMap$Index;->down:Ljava/util/concurrent/ConcurrentSkipListMap$Index;
@@ -115882,15 +108598,10 @@
Ljava/util/concurrent/ConcurrentSkipListMap$Index;->right:Ljava/util/concurrent/ConcurrentSkipListMap$Index;
Ljava/util/concurrent/ConcurrentSkipListMap$Index;->U:Lsun/misc/Unsafe;
Ljava/util/concurrent/ConcurrentSkipListMap$Index;->unlink(Ljava/util/concurrent/ConcurrentSkipListMap$Index;)Z
-Ljava/util/concurrent/ConcurrentSkipListMap$Iter;
-Ljava/util/concurrent/ConcurrentSkipListMap$Iter;-><init>()V
Ljava/util/concurrent/ConcurrentSkipListMap$Iter;->advance()V
Ljava/util/concurrent/ConcurrentSkipListMap$Iter;->lastReturned:Ljava/util/concurrent/ConcurrentSkipListMap$Node;
Ljava/util/concurrent/ConcurrentSkipListMap$Iter;->next:Ljava/util/concurrent/ConcurrentSkipListMap$Node;
Ljava/util/concurrent/ConcurrentSkipListMap$Iter;->nextValue:Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentSkipListMap$KeyIterator;
-Ljava/util/concurrent/ConcurrentSkipListMap$KeyIterator;-><init>()V
-Ljava/util/concurrent/ConcurrentSkipListMap$KeySet;
Ljava/util/concurrent/ConcurrentSkipListMap$KeySet;-><init>(Ljava/util/concurrent/ConcurrentNavigableMap;)V
Ljava/util/concurrent/ConcurrentSkipListMap$KeySet;->ceiling(Ljava/lang/Object;)Ljava/lang/Object;
Ljava/util/concurrent/ConcurrentSkipListMap$KeySet;->floor(Ljava/lang/Object;)Ljava/lang/Object;
@@ -115903,11 +108614,9 @@
Ljava/util/concurrent/ConcurrentSkipListMap$KeySet;->subSet(Ljava/lang/Object;ZLjava/lang/Object;Z)Ljava/util/NavigableSet;
Ljava/util/concurrent/ConcurrentSkipListMap$KeySet;->tailSet(Ljava/lang/Object;)Ljava/util/NavigableSet;
Ljava/util/concurrent/ConcurrentSkipListMap$KeySet;->tailSet(Ljava/lang/Object;Z)Ljava/util/NavigableSet;
-Ljava/util/concurrent/ConcurrentSkipListMap$KeySpliterator;
Ljava/util/concurrent/ConcurrentSkipListMap$KeySpliterator;-><init>(Ljava/util/Comparator;Ljava/util/concurrent/ConcurrentSkipListMap$Index;Ljava/util/concurrent/ConcurrentSkipListMap$Node;Ljava/lang/Object;I)V
Ljava/util/concurrent/ConcurrentSkipListMap$KeySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
Ljava/util/concurrent/ConcurrentSkipListMap$KeySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/concurrent/ConcurrentSkipListMap$Node;
Ljava/util/concurrent/ConcurrentSkipListMap$Node;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/util/concurrent/ConcurrentSkipListMap$Node;)V
Ljava/util/concurrent/ConcurrentSkipListMap$Node;-><init>(Ljava/util/concurrent/ConcurrentSkipListMap$Node;)V
Ljava/util/concurrent/ConcurrentSkipListMap$Node;->appendMarker(Ljava/util/concurrent/ConcurrentSkipListMap$Node;)Z
@@ -115924,21 +108633,12 @@
Ljava/util/concurrent/ConcurrentSkipListMap$Node;->U:Lsun/misc/Unsafe;
Ljava/util/concurrent/ConcurrentSkipListMap$Node;->VALUE:J
Ljava/util/concurrent/ConcurrentSkipListMap$Node;->value:Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap$SubMapEntryIterator;
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap$SubMapEntryIterator;-><init>()V
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap$SubMapIter;
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap$SubMapIter;-><init>()V
Ljava/util/concurrent/ConcurrentSkipListMap$SubMap$SubMapIter;->advance()V
Ljava/util/concurrent/ConcurrentSkipListMap$SubMap$SubMapIter;->ascend()V
Ljava/util/concurrent/ConcurrentSkipListMap$SubMap$SubMapIter;->descend()V
Ljava/util/concurrent/ConcurrentSkipListMap$SubMap$SubMapIter;->lastReturned:Ljava/util/concurrent/ConcurrentSkipListMap$Node;
Ljava/util/concurrent/ConcurrentSkipListMap$SubMap$SubMapIter;->next:Ljava/util/concurrent/ConcurrentSkipListMap$Node;
Ljava/util/concurrent/ConcurrentSkipListMap$SubMap$SubMapIter;->nextValue:Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap$SubMapKeyIterator;
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap$SubMapKeyIterator;-><init>()V
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap$SubMapValueIterator;
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap$SubMapValueIterator;-><init>()V
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;
Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;-><init>(Ljava/util/concurrent/ConcurrentSkipListMap;Ljava/lang/Object;ZLjava/lang/Object;ZZ)V
Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->checkKeyBounds(Ljava/lang/Object;Ljava/util/Comparator;)V
Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->entrySetView:Ljava/util/Set;
@@ -115965,13 +108665,9 @@
Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->tooHigh(Ljava/lang/Object;Ljava/util/Comparator;)Z
Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->tooLow(Ljava/lang/Object;Ljava/util/Comparator;)Z
Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->valuesView:Ljava/util/Collection;
-Ljava/util/concurrent/ConcurrentSkipListMap$ValueIterator;
-Ljava/util/concurrent/ConcurrentSkipListMap$ValueIterator;-><init>()V
-Ljava/util/concurrent/ConcurrentSkipListMap$Values;
Ljava/util/concurrent/ConcurrentSkipListMap$Values;-><init>(Ljava/util/concurrent/ConcurrentNavigableMap;)V
Ljava/util/concurrent/ConcurrentSkipListMap$Values;->m:Ljava/util/concurrent/ConcurrentNavigableMap;
Ljava/util/concurrent/ConcurrentSkipListMap$Values;->removeIf(Ljava/util/function/Predicate;)Z
-Ljava/util/concurrent/ConcurrentSkipListMap$ValueSpliterator;
Ljava/util/concurrent/ConcurrentSkipListMap$ValueSpliterator;-><init>(Ljava/util/Comparator;Ljava/util/concurrent/ConcurrentSkipListMap$Index;Ljava/util/concurrent/ConcurrentSkipListMap$Node;Ljava/lang/Object;I)V
Ljava/util/concurrent/ConcurrentSkipListMap$ValueSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
Ljava/util/concurrent/ConcurrentSkipListMap$ValueSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
@@ -116016,11 +108712,9 @@
Ljava/util/concurrent/ConcurrentSkipListSet;->MAP:J
Ljava/util/concurrent/ConcurrentSkipListSet;->setMap(Ljava/util/concurrent/ConcurrentNavigableMap;)V
Ljava/util/concurrent/ConcurrentSkipListSet;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/CopyOnWriteArrayList$COWIterator;
Ljava/util/concurrent/CopyOnWriteArrayList$COWIterator;-><init>([Ljava/lang/Object;I)V
Ljava/util/concurrent/CopyOnWriteArrayList$COWIterator;->cursor:I
Ljava/util/concurrent/CopyOnWriteArrayList$COWIterator;->snapshot:[Ljava/lang/Object;
-Ljava/util/concurrent/CopyOnWriteArrayList$COWSubList;
Ljava/util/concurrent/CopyOnWriteArrayList$COWSubList;-><init>(Ljava/util/concurrent/CopyOnWriteArrayList;II)V
Ljava/util/concurrent/CopyOnWriteArrayList$COWSubList;->checkForComodification()V
Ljava/util/concurrent/CopyOnWriteArrayList$COWSubList;->expectedArray:[Ljava/lang/Object;
@@ -116029,7 +108723,6 @@
Ljava/util/concurrent/CopyOnWriteArrayList$COWSubList;->offset:I
Ljava/util/concurrent/CopyOnWriteArrayList$COWSubList;->rangeCheck(I)V
Ljava/util/concurrent/CopyOnWriteArrayList$COWSubList;->size:I
-Ljava/util/concurrent/CopyOnWriteArrayList$COWSubListIterator;
Ljava/util/concurrent/CopyOnWriteArrayList$COWSubListIterator;-><init>(Ljava/util/List;III)V
Ljava/util/concurrent/CopyOnWriteArrayList$COWSubListIterator;->it:Ljava/util/ListIterator;
Ljava/util/concurrent/CopyOnWriteArrayList$COWSubListIterator;->offset:I
@@ -116048,7 +108741,6 @@
Ljava/util/concurrent/CopyOnWriteArrayList;->setArray([Ljava/lang/Object;)V
Ljava/util/concurrent/CopyOnWriteArrayList;->U:Lsun/misc/Unsafe;
Ljava/util/concurrent/CopyOnWriteArraySet;->compareSets([Ljava/lang/Object;Ljava/util/Set;)I
-Ljava/util/concurrent/CountDownLatch$Sync;
Ljava/util/concurrent/CountDownLatch$Sync;-><init>(I)V
Ljava/util/concurrent/CountDownLatch$Sync;->getCount()I
Ljava/util/concurrent/CountDownLatch;->sync:Ljava/util/concurrent/CountDownLatch$Sync;
@@ -116057,7 +108749,6 @@
Ljava/util/concurrent/CountedCompleter;->pending:I
Ljava/util/concurrent/CountedCompleter;->PENDING:J
Ljava/util/concurrent/CountedCompleter;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/CyclicBarrier$Generation;
Ljava/util/concurrent/CyclicBarrier$Generation;-><init>()V
Ljava/util/concurrent/CyclicBarrier$Generation;->broken:Z
Ljava/util/concurrent/CyclicBarrier;->barrierCommand:Ljava/lang/Runnable;
@@ -116069,8 +108760,6 @@
Ljava/util/concurrent/CyclicBarrier;->nextGeneration()V
Ljava/util/concurrent/CyclicBarrier;->parties:I
Ljava/util/concurrent/CyclicBarrier;->trip:Ljava/util/concurrent/locks/Condition;
-Ljava/util/concurrent/DelayQueue$Itr;
-Ljava/util/concurrent/DelayQueue$Itr;-><init>([Ljava/lang/Object;)V
Ljava/util/concurrent/DelayQueue$Itr;->array:[Ljava/lang/Object;
Ljava/util/concurrent/DelayQueue$Itr;->cursor:I
Ljava/util/concurrent/DelayQueue$Itr;->lastRet:I
@@ -116080,7 +108769,6 @@
Ljava/util/concurrent/DelayQueue;->peekExpired()Ljava/util/concurrent/Delayed;
Ljava/util/concurrent/DelayQueue;->q:Ljava/util/PriorityQueue;
Ljava/util/concurrent/DelayQueue;->removeEQ(Ljava/lang/Object;)V
-Ljava/util/concurrent/Exchanger$Node;
Ljava/util/concurrent/Exchanger$Node;-><init>()V
Ljava/util/concurrent/Exchanger$Node;->bound:I
Ljava/util/concurrent/Exchanger$Node;->collides:I
@@ -116089,7 +108777,6 @@
Ljava/util/concurrent/Exchanger$Node;->item:Ljava/lang/Object;
Ljava/util/concurrent/Exchanger$Node;->match:Ljava/lang/Object;
Ljava/util/concurrent/Exchanger$Node;->parked:Ljava/lang/Thread;
-Ljava/util/concurrent/Exchanger$Participant;
Ljava/util/concurrent/Exchanger$Participant;-><init>()V
Ljava/util/concurrent/Exchanger;->ABASE:I
Ljava/util/concurrent/Exchanger;->arena:[Ljava/util/concurrent/Exchanger$Node;
@@ -116111,7 +108798,6 @@
Ljava/util/concurrent/Exchanger;->SPINS:I
Ljava/util/concurrent/Exchanger;->TIMED_OUT:Ljava/lang/Object;
Ljava/util/concurrent/Exchanger;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/ExecutorCompletionService$QueueingFuture;
Ljava/util/concurrent/ExecutorCompletionService$QueueingFuture;-><init>(Ljava/util/concurrent/RunnableFuture;Ljava/util/concurrent/BlockingQueue;)V
Ljava/util/concurrent/ExecutorCompletionService$QueueingFuture;->completionQueue:Ljava/util/concurrent/BlockingQueue;
Ljava/util/concurrent/ExecutorCompletionService$QueueingFuture;->task:Ljava/util/concurrent/Future;
@@ -116120,50 +108806,37 @@
Ljava/util/concurrent/ExecutorCompletionService;->executor:Ljava/util/concurrent/Executor;
Ljava/util/concurrent/ExecutorCompletionService;->newTaskFor(Ljava/lang/Runnable;Ljava/lang/Object;)Ljava/util/concurrent/RunnableFuture;
Ljava/util/concurrent/ExecutorCompletionService;->newTaskFor(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/RunnableFuture;
-Ljava/util/concurrent/Executors$DefaultThreadFactory;
Ljava/util/concurrent/Executors$DefaultThreadFactory;-><init>()V
Ljava/util/concurrent/Executors$DefaultThreadFactory;->group:Ljava/lang/ThreadGroup;
Ljava/util/concurrent/Executors$DefaultThreadFactory;->namePrefix:Ljava/lang/String;
Ljava/util/concurrent/Executors$DefaultThreadFactory;->poolNumber:Ljava/util/concurrent/atomic/AtomicInteger;
Ljava/util/concurrent/Executors$DefaultThreadFactory;->threadNumber:Ljava/util/concurrent/atomic/AtomicInteger;
-Ljava/util/concurrent/Executors$DelegatedExecutorService;
Ljava/util/concurrent/Executors$DelegatedExecutorService;-><init>(Ljava/util/concurrent/ExecutorService;)V
Ljava/util/concurrent/Executors$DelegatedExecutorService;->e:Ljava/util/concurrent/ExecutorService;
-Ljava/util/concurrent/Executors$DelegatedScheduledExecutorService;
Ljava/util/concurrent/Executors$DelegatedScheduledExecutorService;-><init>(Ljava/util/concurrent/ScheduledExecutorService;)V
Ljava/util/concurrent/Executors$DelegatedScheduledExecutorService;->e:Ljava/util/concurrent/ScheduledExecutorService;
-Ljava/util/concurrent/Executors$FinalizableDelegatedExecutorService;
Ljava/util/concurrent/Executors$FinalizableDelegatedExecutorService;-><init>(Ljava/util/concurrent/ExecutorService;)V
-Ljava/util/concurrent/Executors$PrivilegedCallable;
Ljava/util/concurrent/Executors$PrivilegedCallable;-><init>(Ljava/util/concurrent/Callable;)V
Ljava/util/concurrent/Executors$PrivilegedCallable;->acc:Ljava/security/AccessControlContext;
Ljava/util/concurrent/Executors$PrivilegedCallable;->task:Ljava/util/concurrent/Callable;
-Ljava/util/concurrent/Executors$PrivilegedCallableUsingCurrentClassLoader;
Ljava/util/concurrent/Executors$PrivilegedCallableUsingCurrentClassLoader;-><init>(Ljava/util/concurrent/Callable;)V
Ljava/util/concurrent/Executors$PrivilegedCallableUsingCurrentClassLoader;->acc:Ljava/security/AccessControlContext;
Ljava/util/concurrent/Executors$PrivilegedCallableUsingCurrentClassLoader;->ccl:Ljava/lang/ClassLoader;
Ljava/util/concurrent/Executors$PrivilegedCallableUsingCurrentClassLoader;->task:Ljava/util/concurrent/Callable;
-Ljava/util/concurrent/Executors$PrivilegedThreadFactory;
Ljava/util/concurrent/Executors$PrivilegedThreadFactory;-><init>()V
Ljava/util/concurrent/Executors$PrivilegedThreadFactory;->acc:Ljava/security/AccessControlContext;
Ljava/util/concurrent/Executors$PrivilegedThreadFactory;->ccl:Ljava/lang/ClassLoader;
-Ljava/util/concurrent/Executors$RunnableAdapter;
Ljava/util/concurrent/Executors$RunnableAdapter;-><init>(Ljava/lang/Runnable;Ljava/lang/Object;)V
Ljava/util/concurrent/Executors$RunnableAdapter;->result:Ljava/lang/Object;
Ljava/util/concurrent/Executors;-><init>()V
-Ljava/util/concurrent/ForkJoinPool$AuxState;
Ljava/util/concurrent/ForkJoinPool$AuxState;-><init>()V
Ljava/util/concurrent/ForkJoinPool$AuxState;->indexSeed:J
Ljava/util/concurrent/ForkJoinPool$AuxState;->stealCount:J
-Ljava/util/concurrent/ForkJoinPool$DefaultForkJoinWorkerThreadFactory;
Ljava/util/concurrent/ForkJoinPool$DefaultForkJoinWorkerThreadFactory;-><init>()V
-Ljava/util/concurrent/ForkJoinPool$EmptyTask;
Ljava/util/concurrent/ForkJoinPool$EmptyTask;-><init>()V
Ljava/util/concurrent/ForkJoinPool$EmptyTask;->setRawResult(Ljava/lang/Void;)V
-Ljava/util/concurrent/ForkJoinPool$InnocuousForkJoinWorkerThreadFactory;
Ljava/util/concurrent/ForkJoinPool$InnocuousForkJoinWorkerThreadFactory;-><init>()V
Ljava/util/concurrent/ForkJoinPool$InnocuousForkJoinWorkerThreadFactory;->innocuousAcc:Ljava/security/AccessControlContext;
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;
Ljava/util/concurrent/ForkJoinPool$WorkQueue;-><init>(Ljava/util/concurrent/ForkJoinPool;Ljava/util/concurrent/ForkJoinWorkerThread;)V
Ljava/util/concurrent/ForkJoinPool$WorkQueue;->ABASE:I
Ljava/util/concurrent/ForkJoinPool$WorkQueue;->array:[Ljava/util/concurrent/ForkJoinTask;
@@ -116292,27 +108965,22 @@
Ljava/util/concurrent/ForkJoinPool;->UNSIGNALLED:I
Ljava/util/concurrent/ForkJoinPool;->workerNamePrefix:Ljava/lang/String;
Ljava/util/concurrent/ForkJoinPool;->workQueues:[Ljava/util/concurrent/ForkJoinPool$WorkQueue;
-Ljava/util/concurrent/ForkJoinTask$AdaptedCallable;
Ljava/util/concurrent/ForkJoinTask$AdaptedCallable;-><init>(Ljava/util/concurrent/Callable;)V
Ljava/util/concurrent/ForkJoinTask$AdaptedCallable;->callable:Ljava/util/concurrent/Callable;
Ljava/util/concurrent/ForkJoinTask$AdaptedCallable;->result:Ljava/lang/Object;
Ljava/util/concurrent/ForkJoinTask$AdaptedCallable;->setRawResult(Ljava/lang/Object;)V
-Ljava/util/concurrent/ForkJoinTask$AdaptedRunnable;
Ljava/util/concurrent/ForkJoinTask$AdaptedRunnable;-><init>(Ljava/lang/Runnable;Ljava/lang/Object;)V
Ljava/util/concurrent/ForkJoinTask$AdaptedRunnable;->result:Ljava/lang/Object;
Ljava/util/concurrent/ForkJoinTask$AdaptedRunnable;->runnable:Ljava/lang/Runnable;
Ljava/util/concurrent/ForkJoinTask$AdaptedRunnable;->setRawResult(Ljava/lang/Object;)V
-Ljava/util/concurrent/ForkJoinTask$AdaptedRunnableAction;
Ljava/util/concurrent/ForkJoinTask$AdaptedRunnableAction;-><init>(Ljava/lang/Runnable;)V
Ljava/util/concurrent/ForkJoinTask$AdaptedRunnableAction;->runnable:Ljava/lang/Runnable;
Ljava/util/concurrent/ForkJoinTask$AdaptedRunnableAction;->setRawResult(Ljava/lang/Void;)V
-Ljava/util/concurrent/ForkJoinTask$ExceptionNode;
Ljava/util/concurrent/ForkJoinTask$ExceptionNode;-><init>(Ljava/util/concurrent/ForkJoinTask;Ljava/lang/Throwable;Ljava/util/concurrent/ForkJoinTask$ExceptionNode;Ljava/lang/ref/ReferenceQueue;)V
Ljava/util/concurrent/ForkJoinTask$ExceptionNode;->ex:Ljava/lang/Throwable;
Ljava/util/concurrent/ForkJoinTask$ExceptionNode;->hashCode:I
Ljava/util/concurrent/ForkJoinTask$ExceptionNode;->next:Ljava/util/concurrent/ForkJoinTask$ExceptionNode;
Ljava/util/concurrent/ForkJoinTask$ExceptionNode;->thrower:J
-Ljava/util/concurrent/ForkJoinTask$RunnableExecuteAction;
Ljava/util/concurrent/ForkJoinTask$RunnableExecuteAction;-><init>(Ljava/lang/Runnable;)V
Ljava/util/concurrent/ForkJoinTask$RunnableExecuteAction;->internalPropagateException(Ljava/lang/Throwable;)V
Ljava/util/concurrent/ForkJoinTask$RunnableExecuteAction;->runnable:Ljava/lang/Runnable;
@@ -116349,7 +109017,6 @@
Ljava/util/concurrent/ForkJoinTask;->STATUS:J
Ljava/util/concurrent/ForkJoinTask;->U:Lsun/misc/Unsafe;
Ljava/util/concurrent/ForkJoinTask;->uncheckedThrow(Ljava/lang/Throwable;)V
-Ljava/util/concurrent/ForkJoinWorkerThread$InnocuousForkJoinWorkerThread;
Ljava/util/concurrent/ForkJoinWorkerThread$InnocuousForkJoinWorkerThread;-><init>(Ljava/util/concurrent/ForkJoinPool;)V
Ljava/util/concurrent/ForkJoinWorkerThread$InnocuousForkJoinWorkerThread;->afterTopLevelExec()V
Ljava/util/concurrent/ForkJoinWorkerThread$InnocuousForkJoinWorkerThread;->createThreadGroup()Ljava/lang/ThreadGroup;
@@ -116364,7 +109031,6 @@
Ljava/util/concurrent/ForkJoinWorkerThread;->THREADLOCALS:J
Ljava/util/concurrent/ForkJoinWorkerThread;->U:Lsun/misc/Unsafe;
Ljava/util/concurrent/ForkJoinWorkerThread;->workQueue:Ljava/util/concurrent/ForkJoinPool$WorkQueue;
-Ljava/util/concurrent/FutureTask$WaitNode;
Ljava/util/concurrent/FutureTask$WaitNode;-><init>()V
Ljava/util/concurrent/FutureTask$WaitNode;->next:Ljava/util/concurrent/FutureTask$WaitNode;
Ljava/util/concurrent/FutureTask$WaitNode;->thread:Ljava/lang/Thread;
@@ -116385,8 +109051,6 @@
Ljava/util/concurrent/FutureTask;->U:Lsun/misc/Unsafe;
Ljava/util/concurrent/FutureTask;->WAITERS:J
Ljava/util/concurrent/FutureTask;->waiters:Ljava/util/concurrent/FutureTask$WaitNode;
-Ljava/util/concurrent/LinkedBlockingDeque$AbstractItr;
-Ljava/util/concurrent/LinkedBlockingDeque$AbstractItr;-><init>()V
Ljava/util/concurrent/LinkedBlockingDeque$AbstractItr;->advance()V
Ljava/util/concurrent/LinkedBlockingDeque$AbstractItr;->firstNode()Ljava/util/concurrent/LinkedBlockingDeque$Node;
Ljava/util/concurrent/LinkedBlockingDeque$AbstractItr;->lastRet:Ljava/util/concurrent/LinkedBlockingDeque$Node;
@@ -116394,15 +109058,10 @@
Ljava/util/concurrent/LinkedBlockingDeque$AbstractItr;->nextItem:Ljava/lang/Object;
Ljava/util/concurrent/LinkedBlockingDeque$AbstractItr;->nextNode(Ljava/util/concurrent/LinkedBlockingDeque$Node;)Ljava/util/concurrent/LinkedBlockingDeque$Node;
Ljava/util/concurrent/LinkedBlockingDeque$AbstractItr;->succ(Ljava/util/concurrent/LinkedBlockingDeque$Node;)Ljava/util/concurrent/LinkedBlockingDeque$Node;
-Ljava/util/concurrent/LinkedBlockingDeque$DescendingItr;
-Ljava/util/concurrent/LinkedBlockingDeque$DescendingItr;-><init>()V
Ljava/util/concurrent/LinkedBlockingDeque$DescendingItr;->firstNode()Ljava/util/concurrent/LinkedBlockingDeque$Node;
Ljava/util/concurrent/LinkedBlockingDeque$DescendingItr;->nextNode(Ljava/util/concurrent/LinkedBlockingDeque$Node;)Ljava/util/concurrent/LinkedBlockingDeque$Node;
-Ljava/util/concurrent/LinkedBlockingDeque$Itr;
-Ljava/util/concurrent/LinkedBlockingDeque$Itr;-><init>()V
Ljava/util/concurrent/LinkedBlockingDeque$Itr;->firstNode()Ljava/util/concurrent/LinkedBlockingDeque$Node;
Ljava/util/concurrent/LinkedBlockingDeque$Itr;->nextNode(Ljava/util/concurrent/LinkedBlockingDeque$Node;)Ljava/util/concurrent/LinkedBlockingDeque$Node;
-Ljava/util/concurrent/LinkedBlockingDeque$LBDSpliterator;
Ljava/util/concurrent/LinkedBlockingDeque$LBDSpliterator;-><init>(Ljava/util/concurrent/LinkedBlockingDeque;)V
Ljava/util/concurrent/LinkedBlockingDeque$LBDSpliterator;->batch:I
Ljava/util/concurrent/LinkedBlockingDeque$LBDSpliterator;->current:Ljava/util/concurrent/LinkedBlockingDeque$Node;
@@ -116412,7 +109071,6 @@
Ljava/util/concurrent/LinkedBlockingDeque$LBDSpliterator;->MAX_BATCH:I
Ljava/util/concurrent/LinkedBlockingDeque$LBDSpliterator;->queue:Ljava/util/concurrent/LinkedBlockingDeque;
Ljava/util/concurrent/LinkedBlockingDeque$LBDSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/concurrent/LinkedBlockingDeque$Node;
Ljava/util/concurrent/LinkedBlockingDeque$Node;-><init>(Ljava/lang/Object;)V
Ljava/util/concurrent/LinkedBlockingDeque$Node;->item:Ljava/lang/Object;
Ljava/util/concurrent/LinkedBlockingDeque$Node;->next:Ljava/util/concurrent/LinkedBlockingDeque$Node;
@@ -116427,12 +109085,9 @@
Ljava/util/concurrent/LinkedBlockingDeque;->unlink(Ljava/util/concurrent/LinkedBlockingDeque$Node;)V
Ljava/util/concurrent/LinkedBlockingDeque;->unlinkFirst()Ljava/lang/Object;
Ljava/util/concurrent/LinkedBlockingDeque;->unlinkLast()Ljava/lang/Object;
-Ljava/util/concurrent/LinkedBlockingQueue$Itr;
-Ljava/util/concurrent/LinkedBlockingQueue$Itr;-><init>()V
Ljava/util/concurrent/LinkedBlockingQueue$Itr;->current:Ljava/util/concurrent/LinkedBlockingQueue$Node;
Ljava/util/concurrent/LinkedBlockingQueue$Itr;->currentElement:Ljava/lang/Object;
Ljava/util/concurrent/LinkedBlockingQueue$Itr;->lastRet:Ljava/util/concurrent/LinkedBlockingQueue$Node;
-Ljava/util/concurrent/LinkedBlockingQueue$LBQSpliterator;
Ljava/util/concurrent/LinkedBlockingQueue$LBQSpliterator;-><init>(Ljava/util/concurrent/LinkedBlockingQueue;)V
Ljava/util/concurrent/LinkedBlockingQueue$LBQSpliterator;->batch:I
Ljava/util/concurrent/LinkedBlockingQueue$LBQSpliterator;->current:Ljava/util/concurrent/LinkedBlockingQueue$Node;
@@ -116442,7 +109097,6 @@
Ljava/util/concurrent/LinkedBlockingQueue$LBQSpliterator;->MAX_BATCH:I
Ljava/util/concurrent/LinkedBlockingQueue$LBQSpliterator;->queue:Ljava/util/concurrent/LinkedBlockingQueue;
Ljava/util/concurrent/LinkedBlockingQueue$LBQSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/concurrent/LinkedBlockingQueue$Node;
Ljava/util/concurrent/LinkedBlockingQueue$Node;-><init>(Ljava/lang/Object;)V
Ljava/util/concurrent/LinkedBlockingQueue$Node;->item:Ljava/lang/Object;
Ljava/util/concurrent/LinkedBlockingQueue$Node;->next:Ljava/util/concurrent/LinkedBlockingQueue$Node;
@@ -116457,22 +109111,17 @@
Ljava/util/concurrent/LinkedBlockingQueue;->signalNotEmpty()V
Ljava/util/concurrent/LinkedBlockingQueue;->signalNotFull()V
Ljava/util/concurrent/LinkedBlockingQueue;->unlink(Ljava/util/concurrent/LinkedBlockingQueue$Node;Ljava/util/concurrent/LinkedBlockingQueue$Node;)V
-Ljava/util/concurrent/LinkedTransferQueue$Itr;
-Ljava/util/concurrent/LinkedTransferQueue$Itr;-><init>()V
Ljava/util/concurrent/LinkedTransferQueue$Itr;->advance(Ljava/util/concurrent/LinkedTransferQueue$Node;)V
Ljava/util/concurrent/LinkedTransferQueue$Itr;->lastPred:Ljava/util/concurrent/LinkedTransferQueue$Node;
Ljava/util/concurrent/LinkedTransferQueue$Itr;->lastRet:Ljava/util/concurrent/LinkedTransferQueue$Node;
Ljava/util/concurrent/LinkedTransferQueue$Itr;->nextItem:Ljava/lang/Object;
Ljava/util/concurrent/LinkedTransferQueue$Itr;->nextNode:Ljava/util/concurrent/LinkedTransferQueue$Node;
-Ljava/util/concurrent/LinkedTransferQueue$LTQSpliterator;
-Ljava/util/concurrent/LinkedTransferQueue$LTQSpliterator;-><init>()V
Ljava/util/concurrent/LinkedTransferQueue$LTQSpliterator;->batch:I
Ljava/util/concurrent/LinkedTransferQueue$LTQSpliterator;->current:Ljava/util/concurrent/LinkedTransferQueue$Node;
Ljava/util/concurrent/LinkedTransferQueue$LTQSpliterator;->exhausted:Z
Ljava/util/concurrent/LinkedTransferQueue$LTQSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
Ljava/util/concurrent/LinkedTransferQueue$LTQSpliterator;->MAX_BATCH:I
Ljava/util/concurrent/LinkedTransferQueue$LTQSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/concurrent/LinkedTransferQueue$Node;
Ljava/util/concurrent/LinkedTransferQueue$Node;-><init>(Ljava/lang/Object;Z)V
Ljava/util/concurrent/LinkedTransferQueue$Node;->cannotPrecede(Z)Z
Ljava/util/concurrent/LinkedTransferQueue$Node;->casItem(Ljava/lang/Object;Ljava/lang/Object;)Z
@@ -116575,7 +109224,6 @@
Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->reportInterruptAfterWait(I)V
Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->THROW_IE:I
Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->unlinkCancelledWaiters()V
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;-><init>()V
Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;-><init>(I)V
Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;-><init>(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
@@ -116638,13 +109286,10 @@
Ljava/util/concurrent/locks/LockSupport;->SECONDARY:J
Ljava/util/concurrent/locks/LockSupport;->setBlocker(Ljava/lang/Thread;Ljava/lang/Object;)V
Ljava/util/concurrent/locks/LockSupport;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/locks/ReentrantLock$FairSync;
Ljava/util/concurrent/locks/ReentrantLock$FairSync;-><init>()V
Ljava/util/concurrent/locks/ReentrantLock$FairSync;->lock()V
-Ljava/util/concurrent/locks/ReentrantLock$NonfairSync;
Ljava/util/concurrent/locks/ReentrantLock$NonfairSync;-><init>()V
Ljava/util/concurrent/locks/ReentrantLock$NonfairSync;->lock()V
-Ljava/util/concurrent/locks/ReentrantLock$Sync;
Ljava/util/concurrent/locks/ReentrantLock$Sync;-><init>()V
Ljava/util/concurrent/locks/ReentrantLock$Sync;->getHoldCount()I
Ljava/util/concurrent/locks/ReentrantLock$Sync;->getOwner()Ljava/lang/Thread;
@@ -116652,22 +109297,17 @@
Ljava/util/concurrent/locks/ReentrantLock$Sync;->lock()V
Ljava/util/concurrent/locks/ReentrantLock$Sync;->newCondition()Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
Ljava/util/concurrent/locks/ReentrantLock$Sync;->nonfairTryAcquire(I)Z
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$FairSync;
Ljava/util/concurrent/locks/ReentrantReadWriteLock$FairSync;-><init>()V
Ljava/util/concurrent/locks/ReentrantReadWriteLock$FairSync;->readerShouldBlock()Z
Ljava/util/concurrent/locks/ReentrantReadWriteLock$FairSync;->writerShouldBlock()Z
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync;
Ljava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync;-><init>()V
Ljava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync;->readerShouldBlock()Z
Ljava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync;->writerShouldBlock()Z
Ljava/util/concurrent/locks/ReentrantReadWriteLock$ReadLock;->sync:Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync$HoldCounter;
Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync$HoldCounter;-><init>()V
Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync$HoldCounter;->count:I
Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync$HoldCounter;->tid:J
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync$ThreadLocalHoldCounter;
Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync$ThreadLocalHoldCounter;-><init>()V
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;
Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;-><init>()V
Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->cachedHoldCounter:Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync$HoldCounter;
Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->exclusiveCount(I)I
@@ -116699,11 +109339,6 @@
Ljava/util/concurrent/locks/ReentrantReadWriteLock;->TID:J
Ljava/util/concurrent/locks/ReentrantReadWriteLock;->U:Lsun/misc/Unsafe;
Ljava/util/concurrent/locks/ReentrantReadWriteLock;->writerLock:Ljava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock;
-Ljava/util/concurrent/locks/StampedLock$ReadLockView;
-Ljava/util/concurrent/locks/StampedLock$ReadLockView;-><init>()V
-Ljava/util/concurrent/locks/StampedLock$ReadWriteLockView;
-Ljava/util/concurrent/locks/StampedLock$ReadWriteLockView;-><init>()V
-Ljava/util/concurrent/locks/StampedLock$WNode;
Ljava/util/concurrent/locks/StampedLock$WNode;-><init>(ILjava/util/concurrent/locks/StampedLock$WNode;)V
Ljava/util/concurrent/locks/StampedLock$WNode;->cowait:Ljava/util/concurrent/locks/StampedLock$WNode;
Ljava/util/concurrent/locks/StampedLock$WNode;->mode:I
@@ -116711,8 +109346,6 @@
Ljava/util/concurrent/locks/StampedLock$WNode;->prev:Ljava/util/concurrent/locks/StampedLock$WNode;
Ljava/util/concurrent/locks/StampedLock$WNode;->status:I
Ljava/util/concurrent/locks/StampedLock$WNode;->thread:Ljava/lang/Thread;
-Ljava/util/concurrent/locks/StampedLock$WriteLockView;
-Ljava/util/concurrent/locks/StampedLock$WriteLockView;-><init>()V
Ljava/util/concurrent/locks/StampedLock;->ABITS:J
Ljava/util/concurrent/locks/StampedLock;->acquireRead(ZJ)J
Ljava/util/concurrent/locks/StampedLock;->acquireWrite(ZJ)J
@@ -116755,7 +109388,6 @@
Ljava/util/concurrent/locks/StampedLock;->WSTATUS:J
Ljava/util/concurrent/locks/StampedLock;->WTAIL:J
Ljava/util/concurrent/locks/StampedLock;->wtail:Ljava/util/concurrent/locks/StampedLock$WNode;
-Ljava/util/concurrent/Phaser$QNode;
Ljava/util/concurrent/Phaser$QNode;-><init>(Ljava/util/concurrent/Phaser;IZZJ)V
Ljava/util/concurrent/Phaser$QNode;->deadline:J
Ljava/util/concurrent/Phaser$QNode;->interruptible:Z
@@ -116801,12 +109433,9 @@
Ljava/util/concurrent/Phaser;->U:Lsun/misc/Unsafe;
Ljava/util/concurrent/Phaser;->unarrivedOf(J)I
Ljava/util/concurrent/Phaser;->UNARRIVED_MASK:I
-Ljava/util/concurrent/PriorityBlockingQueue$Itr;
-Ljava/util/concurrent/PriorityBlockingQueue$Itr;-><init>([Ljava/lang/Object;)V
Ljava/util/concurrent/PriorityBlockingQueue$Itr;->array:[Ljava/lang/Object;
Ljava/util/concurrent/PriorityBlockingQueue$Itr;->cursor:I
Ljava/util/concurrent/PriorityBlockingQueue$Itr;->lastRet:I
-Ljava/util/concurrent/PriorityBlockingQueue$PBQSpliterator;
Ljava/util/concurrent/PriorityBlockingQueue$PBQSpliterator;-><init>(Ljava/util/concurrent/PriorityBlockingQueue;[Ljava/lang/Object;II)V
Ljava/util/concurrent/PriorityBlockingQueue$PBQSpliterator;->array:[Ljava/lang/Object;
Ljava/util/concurrent/PriorityBlockingQueue$PBQSpliterator;->fence:I
@@ -116834,12 +109463,9 @@
Ljava/util/concurrent/PriorityBlockingQueue;->tryGrow([Ljava/lang/Object;I)V
Ljava/util/concurrent/PriorityBlockingQueue;->U:Lsun/misc/Unsafe;
Ljava/util/concurrent/RecursiveTask;->result:Ljava/lang/Object;
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue$Itr;
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue$Itr;-><init>([Ljava/util/concurrent/RunnableScheduledFuture;)V
Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue$Itr;->array:[Ljava/util/concurrent/RunnableScheduledFuture;
Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue$Itr;->cursor:I
Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue$Itr;->lastRet:I
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;
Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;-><init>()V
Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->add(Ljava/lang/Runnable;)Z
Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->available:Ljava/util/concurrent/locks/Condition;
@@ -116860,10 +109486,6 @@
Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->siftDown(ILjava/util/concurrent/RunnableScheduledFuture;)V
Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->siftUp(ILjava/util/concurrent/RunnableScheduledFuture;)V
Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->size:I
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;-><init>(Ljava/lang/Runnable;Ljava/lang/Object;JJ)V
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;-><init>(Ljava/lang/Runnable;Ljava/lang/Object;JJJ)V
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;-><init>(Ljava/util/concurrent/Callable;JJ)V
Ljava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->compareTo(Ljava/util/concurrent/Delayed;)I
Ljava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->heapIndex:I
Ljava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->outerTask:Ljava/util/concurrent/RunnableScheduledFuture;
@@ -116883,25 +109505,18 @@
Ljava/util/concurrent/ScheduledThreadPoolExecutor;->sequencer:Ljava/util/concurrent/atomic/AtomicLong;
Ljava/util/concurrent/ScheduledThreadPoolExecutor;->triggerTime(J)J
Ljava/util/concurrent/ScheduledThreadPoolExecutor;->triggerTime(JLjava/util/concurrent/TimeUnit;)J
-Ljava/util/concurrent/Semaphore$FairSync;
Ljava/util/concurrent/Semaphore$FairSync;-><init>(I)V
-Ljava/util/concurrent/Semaphore$NonfairSync;
Ljava/util/concurrent/Semaphore$NonfairSync;-><init>(I)V
-Ljava/util/concurrent/Semaphore$Sync;
Ljava/util/concurrent/Semaphore$Sync;-><init>(I)V
Ljava/util/concurrent/Semaphore$Sync;->drainPermits()I
Ljava/util/concurrent/Semaphore$Sync;->getPermits()I
Ljava/util/concurrent/Semaphore$Sync;->nonfairTryAcquireShared(I)I
Ljava/util/concurrent/Semaphore$Sync;->reducePermits(I)V
Ljava/util/concurrent/Semaphore;->sync:Ljava/util/concurrent/Semaphore$Sync;
-Ljava/util/concurrent/SynchronousQueue$FifoWaitQueue;
Ljava/util/concurrent/SynchronousQueue$FifoWaitQueue;-><init>()V
-Ljava/util/concurrent/SynchronousQueue$LifoWaitQueue;
Ljava/util/concurrent/SynchronousQueue$LifoWaitQueue;-><init>()V
-Ljava/util/concurrent/SynchronousQueue$Transferer;
Ljava/util/concurrent/SynchronousQueue$Transferer;-><init>()V
Ljava/util/concurrent/SynchronousQueue$Transferer;->transfer(Ljava/lang/Object;ZJ)Ljava/lang/Object;
-Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;-><init>(Ljava/lang/Object;Z)V
Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;->casItem(Ljava/lang/Object;Ljava/lang/Object;)Z
Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;->casNext(Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;)Z
@@ -116915,7 +109530,6 @@
Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;->tryCancel(Ljava/lang/Object;)V
Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;->U:Lsun/misc/Unsafe;
Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;->waiter:Ljava/lang/Thread;
-Ljava/util/concurrent/SynchronousQueue$TransferQueue;
Ljava/util/concurrent/SynchronousQueue$TransferQueue;-><init>()V
Ljava/util/concurrent/SynchronousQueue$TransferQueue;->advanceHead(Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;)V
Ljava/util/concurrent/SynchronousQueue$TransferQueue;->advanceTail(Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;)V
@@ -116930,7 +109544,6 @@
Ljava/util/concurrent/SynchronousQueue$TransferQueue;->tail:Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
Ljava/util/concurrent/SynchronousQueue$TransferQueue;->transfer(Ljava/lang/Object;ZJ)Ljava/lang/Object;
Ljava/util/concurrent/SynchronousQueue$TransferQueue;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;
Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;-><init>(Ljava/lang/Object;)V
Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;->casNext(Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;)Z
Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;->isCancelled()Z
@@ -116944,7 +109557,6 @@
Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;->tryMatch(Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;)Z
Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;->U:Lsun/misc/Unsafe;
Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;->waiter:Ljava/lang/Thread;
-Ljava/util/concurrent/SynchronousQueue$TransferStack;
Ljava/util/concurrent/SynchronousQueue$TransferStack;-><init>()V
Ljava/util/concurrent/SynchronousQueue$TransferStack;->awaitFulfill(Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;ZJ)Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;
Ljava/util/concurrent/SynchronousQueue$TransferStack;->casHead(Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;)Z
@@ -116959,7 +109571,6 @@
Ljava/util/concurrent/SynchronousQueue$TransferStack;->snode(Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;Ljava/lang/Object;Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;I)Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;
Ljava/util/concurrent/SynchronousQueue$TransferStack;->transfer(Ljava/lang/Object;ZJ)Ljava/lang/Object;
Ljava/util/concurrent/SynchronousQueue$TransferStack;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/SynchronousQueue$WaitQueue;
Ljava/util/concurrent/SynchronousQueue$WaitQueue;-><init>()V
Ljava/util/concurrent/SynchronousQueue;->MAX_TIMED_SPINS:I
Ljava/util/concurrent/SynchronousQueue;->MAX_UNTIMED_SPINS:I
@@ -116968,19 +109579,16 @@
Ljava/util/concurrent/SynchronousQueue;->transferer:Ljava/util/concurrent/SynchronousQueue$Transferer;
Ljava/util/concurrent/SynchronousQueue;->waitingConsumers:Ljava/util/concurrent/SynchronousQueue$WaitQueue;
Ljava/util/concurrent/SynchronousQueue;->waitingProducers:Ljava/util/concurrent/SynchronousQueue$WaitQueue;
-Ljava/util/concurrent/ThreadLocalRandom$RandomDoublesSpliterator;
Ljava/util/concurrent/ThreadLocalRandom$RandomDoublesSpliterator;-><init>(JJDD)V
Ljava/util/concurrent/ThreadLocalRandom$RandomDoublesSpliterator;->bound:D
Ljava/util/concurrent/ThreadLocalRandom$RandomDoublesSpliterator;->fence:J
Ljava/util/concurrent/ThreadLocalRandom$RandomDoublesSpliterator;->index:J
Ljava/util/concurrent/ThreadLocalRandom$RandomDoublesSpliterator;->origin:D
-Ljava/util/concurrent/ThreadLocalRandom$RandomIntsSpliterator;
Ljava/util/concurrent/ThreadLocalRandom$RandomIntsSpliterator;-><init>(JJII)V
Ljava/util/concurrent/ThreadLocalRandom$RandomIntsSpliterator;->bound:I
Ljava/util/concurrent/ThreadLocalRandom$RandomIntsSpliterator;->fence:J
Ljava/util/concurrent/ThreadLocalRandom$RandomIntsSpliterator;->index:J
Ljava/util/concurrent/ThreadLocalRandom$RandomIntsSpliterator;->origin:I
-Ljava/util/concurrent/ThreadLocalRandom$RandomLongsSpliterator;
Ljava/util/concurrent/ThreadLocalRandom$RandomLongsSpliterator;-><init>(JJJJ)V
Ljava/util/concurrent/ThreadLocalRandom$RandomLongsSpliterator;->bound:J
Ljava/util/concurrent/ThreadLocalRandom$RandomLongsSpliterator;->fence:J
@@ -117014,8 +109622,6 @@
Ljava/util/concurrent/ThreadLocalRandom;->seeder:Ljava/util/concurrent/atomic/AtomicLong;
Ljava/util/concurrent/ThreadLocalRandom;->SEEDER_INCREMENT:J
Ljava/util/concurrent/ThreadLocalRandom;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/ThreadPoolExecutor$Worker;
-Ljava/util/concurrent/ThreadPoolExecutor$Worker;-><init>(Ljava/lang/Runnable;)V
Ljava/util/concurrent/ThreadPoolExecutor$Worker;->completedTasks:J
Ljava/util/concurrent/ThreadPoolExecutor$Worker;->firstTask:Ljava/lang/Runnable;
Ljava/util/concurrent/ThreadPoolExecutor$Worker;->interruptIfStarted()V
@@ -117068,7 +109674,6 @@
Ljava/util/concurrent/ThreadPoolExecutor;->workerCountOf(I)I
Ljava/util/concurrent/ThreadPoolExecutor;->workers:Ljava/util/HashSet;
Ljava/util/concurrent/ThreadPoolExecutor;->workQueue:Ljava/util/concurrent/BlockingQueue;
-Ljava/util/concurrent/TimeUnit;-><init>()V
Ljava/util/concurrent/TimeUnit;->C0:J
Ljava/util/concurrent/TimeUnit;->C1:J
Ljava/util/concurrent/TimeUnit;->C2:J
@@ -117109,29 +109714,13 @@
Ljava/util/DoubleSummaryStatistics;->sumCompensation:D
Ljava/util/DoubleSummaryStatistics;->sumWithCompensation(D)V
Ljava/util/DuplicateFormatFlagsException;->flags:Ljava/lang/String;
-Ljava/util/EnumMap$EntryIterator$Entry;
-Ljava/util/EnumMap$EntryIterator$Entry;-><init>(I)V
Ljava/util/EnumMap$EntryIterator$Entry;->checkIndexForEntryUse()V
Ljava/util/EnumMap$EntryIterator$Entry;->index:I
-Ljava/util/EnumMap$EntryIterator;
-Ljava/util/EnumMap$EntryIterator;-><init>()V
Ljava/util/EnumMap$EntryIterator;->lastReturnedEntry:Ljava/util/EnumMap$EntryIterator$Entry;
-Ljava/util/EnumMap$EntrySet;
-Ljava/util/EnumMap$EntrySet;-><init>()V
Ljava/util/EnumMap$EntrySet;->fillEntryArray([Ljava/lang/Object;)[Ljava/lang/Object;
-Ljava/util/EnumMap$EnumMapIterator;
-Ljava/util/EnumMap$EnumMapIterator;-><init>()V
Ljava/util/EnumMap$EnumMapIterator;->checkLastReturnedIndex()V
Ljava/util/EnumMap$EnumMapIterator;->index:I
Ljava/util/EnumMap$EnumMapIterator;->lastReturnedIndex:I
-Ljava/util/EnumMap$KeyIterator;
-Ljava/util/EnumMap$KeyIterator;-><init>()V
-Ljava/util/EnumMap$KeySet;
-Ljava/util/EnumMap$KeySet;-><init>()V
-Ljava/util/EnumMap$ValueIterator;
-Ljava/util/EnumMap$ValueIterator;-><init>()V
-Ljava/util/EnumMap$Values;
-Ljava/util/EnumMap$Values;-><init>()V
Ljava/util/EnumMap;->containsMapping(Ljava/lang/Object;Ljava/lang/Object;)Z
Ljava/util/EnumMap;->entryHashCode(I)I
Ljava/util/EnumMap;->entrySet:Ljava/util/Set;
@@ -117147,7 +109736,6 @@
Ljava/util/EnumMap;->unmaskNull(Ljava/lang/Object;)Ljava/lang/Object;
Ljava/util/EnumMap;->vals:[Ljava/lang/Object;
Ljava/util/EnumMap;->ZERO_LENGTH_ENUM_ARRAY:[Ljava/lang/Enum;
-Ljava/util/EnumSet$SerializationProxy;
Ljava/util/EnumSet$SerializationProxy;-><init>(Ljava/util/EnumSet;)V
Ljava/util/EnumSet$SerializationProxy;->elements:[Ljava/lang/Enum;
Ljava/util/EnumSet$SerializationProxy;->elementType:Ljava/lang/Class;
@@ -117163,8 +109751,6 @@
Ljava/util/FormatFlagsConversionMismatchException;->c:C
Ljava/util/FormatFlagsConversionMismatchException;->f:Ljava/lang/String;
Ljava/util/FormattableFlags;-><init>()V
-Ljava/util/Formatter$BigDecimalLayoutForm;-><init>()V
-Ljava/util/Formatter$Conversion;
Ljava/util/Formatter$Conversion;-><init>()V
Ljava/util/Formatter$Conversion;->BOOLEAN:C
Ljava/util/Formatter$Conversion;->BOOLEAN_UPPER:C
@@ -117195,7 +109781,6 @@
Ljava/util/Formatter$Conversion;->SCIENTIFIC_UPPER:C
Ljava/util/Formatter$Conversion;->STRING:C
Ljava/util/Formatter$Conversion;->STRING_UPPER:C
-Ljava/util/Formatter$DateTime;
Ljava/util/Formatter$DateTime;-><init>()V
Ljava/util/Formatter$DateTime;->AM_PM:C
Ljava/util/Formatter$DateTime;->CENTURY:C
@@ -117229,12 +109814,9 @@
Ljava/util/Formatter$DateTime;->YEAR_4:C
Ljava/util/Formatter$DateTime;->ZONE:C
Ljava/util/Formatter$DateTime;->ZONE_NUMERIC:C
-Ljava/util/Formatter$FixedString;
-Ljava/util/Formatter$FixedString;-><init>(Ljava/lang/String;)V
Ljava/util/Formatter$FixedString;->index()I
Ljava/util/Formatter$FixedString;->print(Ljava/lang/Object;Ljava/util/Locale;)V
Ljava/util/Formatter$FixedString;->s:Ljava/lang/String;
-Ljava/util/Formatter$Flags;
Ljava/util/Formatter$Flags;-><init>(I)V
Ljava/util/Formatter$Flags;->add(Ljava/util/Formatter$Flags;)Ljava/util/Formatter$Flags;
Ljava/util/Formatter$Flags;->ALTERNATE:Ljava/util/Formatter$Flags;
@@ -117255,8 +109837,6 @@
Ljava/util/Formatter$Flags;->UPPERCASE:Ljava/util/Formatter$Flags;
Ljava/util/Formatter$Flags;->valueOf()I
Ljava/util/Formatter$Flags;->ZERO_PAD:Ljava/util/Formatter$Flags;
-Ljava/util/Formatter$FormatSpecifier$BigDecimalLayout;
-Ljava/util/Formatter$FormatSpecifier$BigDecimalLayout;-><init>(Ljava/math/BigInteger;ILjava/util/Formatter$BigDecimalLayoutForm;)V
Ljava/util/Formatter$FormatSpecifier$BigDecimalLayout;->dot:Z
Ljava/util/Formatter$FormatSpecifier$BigDecimalLayout;->exp:Ljava/lang/StringBuilder;
Ljava/util/Formatter$FormatSpecifier$BigDecimalLayout;->exponent()[C
@@ -117268,13 +109848,10 @@
Ljava/util/Formatter$FormatSpecifier$BigDecimalLayout;->scale()I
Ljava/util/Formatter$FormatSpecifier$BigDecimalLayout;->scale:I
Ljava/util/Formatter$FormatSpecifier$BigDecimalLayout;->toCharArray(Ljava/lang/StringBuilder;)[C
-Ljava/util/Formatter$FormatSpecifier;
-Ljava/util/Formatter$FormatSpecifier;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
Ljava/util/Formatter$FormatSpecifier;->addDot([C)[C
Ljava/util/Formatter$FormatSpecifier;->addZeros([CI)[C
Ljava/util/Formatter$FormatSpecifier;->adjustWidth(ILjava/util/Formatter$Flags;Z)I
Ljava/util/Formatter$FormatSpecifier;->c:C
-Ljava/util/Formatter$FormatSpecifier;->checkBadFlags([[Ljava/util/Formatter$Flags;)V
Ljava/util/Formatter$FormatSpecifier;->checkCharacter()V
Ljava/util/Formatter$FormatSpecifier;->checkDateTime()V
Ljava/util/Formatter$FormatSpecifier;->checkFloat()V
@@ -117330,8 +109907,6 @@
Ljava/util/Formatter$FormatSpecifier;->width()I
Ljava/util/Formatter$FormatSpecifier;->width(Ljava/lang/String;)I
Ljava/util/Formatter$FormatSpecifier;->width:I
-Ljava/util/Formatter$FormatSpecifierParser;
-Ljava/util/Formatter$FormatSpecifierParser;-><init>(Ljava/lang/String;I)V
Ljava/util/Formatter$FormatSpecifierParser;->advance()C
Ljava/util/Formatter$FormatSpecifierParser;->back(I)V
Ljava/util/Formatter$FormatSpecifierParser;->conv:Ljava/lang/String;
@@ -117350,7 +109925,6 @@
Ljava/util/Formatter$FormatSpecifierParser;->precision:Ljava/lang/String;
Ljava/util/Formatter$FormatSpecifierParser;->tT:Ljava/lang/String;
Ljava/util/Formatter$FormatSpecifierParser;->width:Ljava/lang/String;
-Ljava/util/Formatter$FormatString;
Ljava/util/Formatter$FormatString;->index()I
Ljava/util/Formatter$FormatString;->print(Ljava/lang/Object;Ljava/util/Locale;)V
Ljava/util/Formatter;-><init>(Ljava/nio/charset/Charset;Ljava/util/Locale;Ljava/io/File;)V
@@ -117422,23 +109996,15 @@
Ljava/util/GregorianCalendar;->yearLength()I
Ljava/util/GregorianCalendar;->yearLength(I)I
Ljava/util/GregorianCalendar;->zoneOffsets:[I
-Ljava/util/HashMap$EntryIterator;
-Ljava/util/HashMap$EntryIterator;-><init>()V
-Ljava/util/HashMap$EntrySet;
-Ljava/util/HashMap$EntrySet;-><init>()V
Ljava/util/HashMap$EntrySet;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/HashMap$EntrySpliterator;
Ljava/util/HashMap$EntrySpliterator;-><init>(Ljava/util/HashMap;IIII)V
Ljava/util/HashMap$EntrySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
Ljava/util/HashMap$EntrySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/HashMap$HashIterator;
-Ljava/util/HashMap$HashIterator;-><init>()V
Ljava/util/HashMap$HashIterator;->current:Ljava/util/HashMap$Node;
Ljava/util/HashMap$HashIterator;->expectedModCount:I
Ljava/util/HashMap$HashIterator;->index:I
Ljava/util/HashMap$HashIterator;->next:Ljava/util/HashMap$Node;
Ljava/util/HashMap$HashIterator;->nextNode()Ljava/util/HashMap$Node;
-Ljava/util/HashMap$HashMapSpliterator;
Ljava/util/HashMap$HashMapSpliterator;-><init>(Ljava/util/HashMap;IIII)V
Ljava/util/HashMap$HashMapSpliterator;->current:Ljava/util/HashMap$Node;
Ljava/util/HashMap$HashMapSpliterator;->est:I
@@ -117448,19 +110014,12 @@
Ljava/util/HashMap$HashMapSpliterator;->getFence()I
Ljava/util/HashMap$HashMapSpliterator;->index:I
Ljava/util/HashMap$HashMapSpliterator;->map:Ljava/util/HashMap;
-Ljava/util/HashMap$KeyIterator;
-Ljava/util/HashMap$KeyIterator;-><init>()V
-Ljava/util/HashMap$KeySet;
-Ljava/util/HashMap$KeySet;-><init>()V
Ljava/util/HashMap$KeySet;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/HashMap$KeySpliterator;
Ljava/util/HashMap$KeySpliterator;-><init>(Ljava/util/HashMap;IIII)V
Ljava/util/HashMap$KeySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
Ljava/util/HashMap$KeySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/HashMap$Node;
Ljava/util/HashMap$Node;-><init>(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)V
Ljava/util/HashMap$Node;->hash:I
-Ljava/util/HashMap$TreeNode;
Ljava/util/HashMap$TreeNode;-><init>(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)V
Ljava/util/HashMap$TreeNode;->balanceDeletion(Ljava/util/HashMap$TreeNode;Ljava/util/HashMap$TreeNode;)Ljava/util/HashMap$TreeNode;
Ljava/util/HashMap$TreeNode;->balanceInsertion(Ljava/util/HashMap$TreeNode;Ljava/util/HashMap$TreeNode;)Ljava/util/HashMap$TreeNode;
@@ -117482,12 +110041,7 @@
Ljava/util/HashMap$TreeNode;->tieBreakOrder(Ljava/lang/Object;Ljava/lang/Object;)I
Ljava/util/HashMap$TreeNode;->treeify([Ljava/util/HashMap$Node;)V
Ljava/util/HashMap$TreeNode;->untreeify(Ljava/util/HashMap;)Ljava/util/HashMap$Node;
-Ljava/util/HashMap$ValueIterator;
-Ljava/util/HashMap$ValueIterator;-><init>()V
-Ljava/util/HashMap$Values;
-Ljava/util/HashMap$Values;-><init>()V
Ljava/util/HashMap$Values;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/HashMap$ValueSpliterator;
Ljava/util/HashMap$ValueSpliterator;-><init>(Ljava/util/HashMap;IIII)V
Ljava/util/HashMap$ValueSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
Ljava/util/HashMap$ValueSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
@@ -117524,11 +110078,7 @@
Ljava/util/HashMap;->UNTREEIFY_THRESHOLD:I
Ljava/util/HashSet;-><init>(IFZ)V
Ljava/util/HashSet;->PRESENT:Ljava/lang/Object;
-Ljava/util/Hashtable$EntrySet;
-Ljava/util/Hashtable$EntrySet;-><init>()V
Ljava/util/Hashtable$EntrySet;->add(Ljava/util/Map$Entry;)Z
-Ljava/util/Hashtable$Enumerator;
-Ljava/util/Hashtable$Enumerator;-><init>(IZ)V
Ljava/util/Hashtable$Enumerator;->entry:Ljava/util/Hashtable$HashtableEntry;
Ljava/util/Hashtable$Enumerator;->expectedModCount:I
Ljava/util/Hashtable$Enumerator;->index:I
@@ -117536,16 +110086,11 @@
Ljava/util/Hashtable$Enumerator;->lastReturned:Ljava/util/Hashtable$HashtableEntry;
Ljava/util/Hashtable$Enumerator;->table:[Ljava/util/Hashtable$HashtableEntry;
Ljava/util/Hashtable$Enumerator;->type:I
-Ljava/util/Hashtable$HashtableEntry;
Ljava/util/Hashtable$HashtableEntry;-><init>(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/Hashtable$HashtableEntry;)V
Ljava/util/Hashtable$HashtableEntry;->hash:I
Ljava/util/Hashtable$HashtableEntry;->key:Ljava/lang/Object;
Ljava/util/Hashtable$HashtableEntry;->next:Ljava/util/Hashtable$HashtableEntry;
Ljava/util/Hashtable$HashtableEntry;->value:Ljava/lang/Object;
-Ljava/util/Hashtable$KeySet;
-Ljava/util/Hashtable$KeySet;-><init>()V
-Ljava/util/Hashtable$ValueCollection;
-Ljava/util/Hashtable$ValueCollection;-><init>()V
Ljava/util/Hashtable;->addEntry(ILjava/lang/Object;Ljava/lang/Object;I)V
Ljava/util/Hashtable;->count:I
Ljava/util/Hashtable;->ENTRIES:I
@@ -117562,28 +110107,18 @@
Ljava/util/Hashtable;->threshold:I
Ljava/util/Hashtable;->VALUES:I
Ljava/util/Hashtable;->values:Ljava/util/Collection;
-Ljava/util/IdentityHashMap$EntryIterator$Entry;
-Ljava/util/IdentityHashMap$EntryIterator$Entry;-><init>(I)V
Ljava/util/IdentityHashMap$EntryIterator$Entry;->checkIndexForEntryUse()V
Ljava/util/IdentityHashMap$EntryIterator$Entry;->index:I
-Ljava/util/IdentityHashMap$EntryIterator;
-Ljava/util/IdentityHashMap$EntryIterator;-><init>()V
Ljava/util/IdentityHashMap$EntryIterator;->lastReturnedEntry:Ljava/util/IdentityHashMap$EntryIterator$Entry;
-Ljava/util/IdentityHashMap$EntrySet;
-Ljava/util/IdentityHashMap$EntrySet;-><init>()V
-Ljava/util/IdentityHashMap$EntrySpliterator;
Ljava/util/IdentityHashMap$EntrySpliterator;-><init>(Ljava/util/IdentityHashMap;IIII)V
Ljava/util/IdentityHashMap$EntrySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
Ljava/util/IdentityHashMap$EntrySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/IdentityHashMap$IdentityHashMapIterator;
-Ljava/util/IdentityHashMap$IdentityHashMapIterator;-><init>()V
Ljava/util/IdentityHashMap$IdentityHashMapIterator;->expectedModCount:I
Ljava/util/IdentityHashMap$IdentityHashMapIterator;->index:I
Ljava/util/IdentityHashMap$IdentityHashMapIterator;->indexValid:Z
Ljava/util/IdentityHashMap$IdentityHashMapIterator;->lastReturnedIndex:I
Ljava/util/IdentityHashMap$IdentityHashMapIterator;->nextIndex()I
Ljava/util/IdentityHashMap$IdentityHashMapIterator;->traversalTable:[Ljava/lang/Object;
-Ljava/util/IdentityHashMap$IdentityHashMapSpliterator;
Ljava/util/IdentityHashMap$IdentityHashMapSpliterator;-><init>(Ljava/util/IdentityHashMap;IIII)V
Ljava/util/IdentityHashMap$IdentityHashMapSpliterator;->est:I
Ljava/util/IdentityHashMap$IdentityHashMapSpliterator;->estimateSize()J
@@ -117592,19 +110127,9 @@
Ljava/util/IdentityHashMap$IdentityHashMapSpliterator;->getFence()I
Ljava/util/IdentityHashMap$IdentityHashMapSpliterator;->index:I
Ljava/util/IdentityHashMap$IdentityHashMapSpliterator;->map:Ljava/util/IdentityHashMap;
-Ljava/util/IdentityHashMap$KeyIterator;
-Ljava/util/IdentityHashMap$KeyIterator;-><init>()V
-Ljava/util/IdentityHashMap$KeySet;
-Ljava/util/IdentityHashMap$KeySet;-><init>()V
-Ljava/util/IdentityHashMap$KeySpliterator;
Ljava/util/IdentityHashMap$KeySpliterator;-><init>(Ljava/util/IdentityHashMap;IIII)V
Ljava/util/IdentityHashMap$KeySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
Ljava/util/IdentityHashMap$KeySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/IdentityHashMap$ValueIterator;
-Ljava/util/IdentityHashMap$ValueIterator;-><init>()V
-Ljava/util/IdentityHashMap$Values;
-Ljava/util/IdentityHashMap$Values;-><init>()V
-Ljava/util/IdentityHashMap$ValueSpliterator;
Ljava/util/IdentityHashMap$ValueSpliterator;-><init>(Ljava/util/IdentityHashMap;IIII)V
Ljava/util/IdentityHashMap$ValueSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
Ljava/util/IdentityHashMap$ValueSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
@@ -117652,11 +110177,7 @@
Ljava/util/jar/JarEntry;->attr:Ljava/util/jar/Attributes;
Ljava/util/jar/JarEntry;->certs:[Ljava/security/cert/Certificate;
Ljava/util/jar/JarEntry;->signers:[Ljava/security/CodeSigner;
-Ljava/util/jar/JarFile$JarEntryIterator;
-Ljava/util/jar/JarFile$JarEntryIterator;-><init>()V
Ljava/util/jar/JarFile$JarEntryIterator;->e:Ljava/util/Enumeration;
-Ljava/util/jar/JarFile$JarFileEntry;
-Ljava/util/jar/JarFile$JarFileEntry;-><init>(Ljava/util/zip/ZipEntry;)V
Ljava/util/jar/JarFile;->checkForSpecialAttributes()V
Ljava/util/jar/JarFile;->CLASSPATH_CHARS:[C
Ljava/util/jar/JarFile;->CLASSPATH_LASTOCC:[I
@@ -117690,7 +110211,6 @@
Ljava/util/jar/JarOutputStream;->hasMagic([B)Z
Ljava/util/jar/JarOutputStream;->JAR_MAGIC:I
Ljava/util/jar/JarOutputStream;->set16([BII)V
-Ljava/util/jar/JarVerifier$VerifierCodeSource;
Ljava/util/jar/JarVerifier$VerifierCodeSource;-><init>(Ljava/lang/Object;Ljava/net/URL;[Ljava/security/cert/Certificate;)V
Ljava/util/jar/JarVerifier$VerifierCodeSource;-><init>(Ljava/lang/Object;Ljava/net/URL;[Ljava/security/CodeSigner;)V
Ljava/util/jar/JarVerifier$VerifierCodeSource;->csdomain:Ljava/lang/Object;
@@ -117700,13 +110220,11 @@
Ljava/util/jar/JarVerifier$VerifierCodeSource;->vcerts:[Ljava/security/cert/Certificate;
Ljava/util/jar/JarVerifier$VerifierCodeSource;->vlocation:Ljava/net/URL;
Ljava/util/jar/JarVerifier$VerifierCodeSource;->vsigners:[Ljava/security/CodeSigner;
-Ljava/util/jar/JarVerifier$VerifierStream;
Ljava/util/jar/JarVerifier$VerifierStream;-><init>(Ljava/util/jar/Manifest;Ljava/util/jar/JarEntry;Ljava/io/InputStream;Ljava/util/jar/JarVerifier;)V
Ljava/util/jar/JarVerifier$VerifierStream;->is:Ljava/io/InputStream;
Ljava/util/jar/JarVerifier$VerifierStream;->jv:Ljava/util/jar/JarVerifier;
Ljava/util/jar/JarVerifier$VerifierStream;->mev:Lsun/security/util/ManifestEntryVerifier;
Ljava/util/jar/JarVerifier$VerifierStream;->numLeft:J
-Ljava/util/jar/JarVerifier;
Ljava/util/jar/JarVerifier;-><init>([B)V
Ljava/util/jar/JarVerifier;->anyToVerify:Z
Ljava/util/jar/JarVerifier;->baos:Ljava/io/ByteArrayOutputStream;
@@ -117757,7 +110275,6 @@
Ljava/util/jar/JarVerifier;->update(I[BIILsun/security/util/ManifestEntryVerifier;)V
Ljava/util/jar/JarVerifier;->urlToCodeSourceMap:Ljava/util/Map;
Ljava/util/jar/JarVerifier;->verifiedSigners:Ljava/util/Hashtable;
-Ljava/util/jar/Manifest$FastInputStream;
Ljava/util/jar/Manifest$FastInputStream;-><init>(Ljava/io/InputStream;)V
Ljava/util/jar/Manifest$FastInputStream;-><init>(Ljava/io/InputStream;I)V
Ljava/util/jar/Manifest$FastInputStream;->buf:[B
@@ -117778,31 +110295,16 @@
Ljava/util/jar/Pack200;->PACK_PROVIDER:Ljava/lang/String;
Ljava/util/jar/Pack200;->unpackerImpl:Ljava/lang/Class;
Ljava/util/jar/Pack200;->UNPACK_PROVIDER:Ljava/lang/String;
-Ljava/util/LinkedHashMap$LinkedEntryIterator;
-Ljava/util/LinkedHashMap$LinkedEntryIterator;-><init>()V
-Ljava/util/LinkedHashMap$LinkedEntrySet;
-Ljava/util/LinkedHashMap$LinkedEntrySet;-><init>()V
Ljava/util/LinkedHashMap$LinkedEntrySet;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/LinkedHashMap$LinkedHashIterator;
-Ljava/util/LinkedHashMap$LinkedHashIterator;-><init>()V
Ljava/util/LinkedHashMap$LinkedHashIterator;->current:Ljava/util/LinkedHashMap$LinkedHashMapEntry;
Ljava/util/LinkedHashMap$LinkedHashIterator;->expectedModCount:I
Ljava/util/LinkedHashMap$LinkedHashIterator;->next:Ljava/util/LinkedHashMap$LinkedHashMapEntry;
Ljava/util/LinkedHashMap$LinkedHashIterator;->nextNode()Ljava/util/LinkedHashMap$LinkedHashMapEntry;
Ljava/util/LinkedHashMap$LinkedHashIterator;->remove()V
-Ljava/util/LinkedHashMap$LinkedHashMapEntry;
Ljava/util/LinkedHashMap$LinkedHashMapEntry;-><init>(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)V
Ljava/util/LinkedHashMap$LinkedHashMapEntry;->after:Ljava/util/LinkedHashMap$LinkedHashMapEntry;
Ljava/util/LinkedHashMap$LinkedHashMapEntry;->before:Ljava/util/LinkedHashMap$LinkedHashMapEntry;
-Ljava/util/LinkedHashMap$LinkedKeyIterator;
-Ljava/util/LinkedHashMap$LinkedKeyIterator;-><init>()V
-Ljava/util/LinkedHashMap$LinkedKeySet;
-Ljava/util/LinkedHashMap$LinkedKeySet;-><init>()V
Ljava/util/LinkedHashMap$LinkedKeySet;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/LinkedHashMap$LinkedValueIterator;
-Ljava/util/LinkedHashMap$LinkedValueIterator;-><init>()V
-Ljava/util/LinkedHashMap$LinkedValues;
-Ljava/util/LinkedHashMap$LinkedValues;-><init>()V
Ljava/util/LinkedHashMap$LinkedValues;->forEach(Ljava/util/function/Consumer;)V
Ljava/util/LinkedHashMap;->afterNodeAccess(Ljava/util/HashMap$Node;)V
Ljava/util/LinkedHashMap;->afterNodeInsertion(Z)V
@@ -117817,17 +110319,12 @@
Ljava/util/LinkedHashMap;->replacementTreeNode(Ljava/util/HashMap$Node;Ljava/util/HashMap$Node;)Ljava/util/HashMap$TreeNode;
Ljava/util/LinkedHashMap;->tail:Ljava/util/LinkedHashMap$LinkedHashMapEntry;
Ljava/util/LinkedHashMap;->transferLinks(Ljava/util/LinkedHashMap$LinkedHashMapEntry;Ljava/util/LinkedHashMap$LinkedHashMapEntry;)V
-Ljava/util/LinkedList$DescendingIterator;
-Ljava/util/LinkedList$DescendingIterator;-><init>()V
Ljava/util/LinkedList$DescendingIterator;->itr:Ljava/util/LinkedList$ListItr;
-Ljava/util/LinkedList$ListItr;
-Ljava/util/LinkedList$ListItr;-><init>(I)V
Ljava/util/LinkedList$ListItr;->checkForComodification()V
Ljava/util/LinkedList$ListItr;->expectedModCount:I
Ljava/util/LinkedList$ListItr;->lastReturned:Ljava/util/LinkedList$Node;
Ljava/util/LinkedList$ListItr;->next:Ljava/util/LinkedList$Node;
Ljava/util/LinkedList$ListItr;->nextIndex:I
-Ljava/util/LinkedList$LLSpliterator;
Ljava/util/LinkedList$LLSpliterator;-><init>(Ljava/util/LinkedList;II)V
Ljava/util/LinkedList$LLSpliterator;->batch:I
Ljava/util/LinkedList$LLSpliterator;->BATCH_UNIT:I
@@ -117839,7 +110336,6 @@
Ljava/util/LinkedList$LLSpliterator;->list:Ljava/util/LinkedList;
Ljava/util/LinkedList$LLSpliterator;->MAX_BATCH:I
Ljava/util/LinkedList$LLSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/LinkedList$Node;
Ljava/util/LinkedList$Node;-><init>(Ljava/util/LinkedList$Node;Ljava/lang/Object;Ljava/util/LinkedList$Node;)V
Ljava/util/LinkedList$Node;->prev:Ljava/util/LinkedList$Node;
Ljava/util/LinkedList;->checkElementIndex(I)V
@@ -117859,25 +110355,20 @@
Ljava/util/ListResourceBundle;->loadLookup()V
Ljava/util/ListResourceBundle;->lookup:Ljava/util/Map;
Ljava/util/Locale$Builder;->localeBuilder:Lsun/util/locale/InternalLocaleBuilder;
-Ljava/util/Locale$Cache;
Ljava/util/Locale$Cache;-><init>()V
Ljava/util/Locale$Cache;->createObject(Ljava/util/Locale$LocaleKey;)Ljava/util/Locale;
-Ljava/util/Locale$Category;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
Ljava/util/Locale$Category;->countryKey:Ljava/lang/String;
Ljava/util/Locale$Category;->languageKey:Ljava/lang/String;
Ljava/util/Locale$Category;->scriptKey:Ljava/lang/String;
Ljava/util/Locale$Category;->variantKey:Ljava/lang/String;
-Ljava/util/Locale$FilteringMode;-><init>()V
Ljava/util/Locale$LanguageRange;->hash:I
Ljava/util/Locale$LanguageRange;->isSubtagIllFormed(Ljava/lang/String;Z)Z
Ljava/util/Locale$LanguageRange;->range:Ljava/lang/String;
Ljava/util/Locale$LanguageRange;->weight:D
-Ljava/util/Locale$LocaleKey;
Ljava/util/Locale$LocaleKey;-><init>(Lsun/util/locale/BaseLocale;Lsun/util/locale/LocaleExtensions;)V
Ljava/util/Locale$LocaleKey;->base:Lsun/util/locale/BaseLocale;
Ljava/util/Locale$LocaleKey;->exts:Lsun/util/locale/LocaleExtensions;
Ljava/util/Locale$LocaleKey;->hash:I
-Ljava/util/Locale$NoImagePreloadHolder;
Ljava/util/Locale$NoImagePreloadHolder;-><init>()V
Ljava/util/Locale$NoImagePreloadHolder;->defaultLocale:Ljava/util/Locale;
Ljava/util/Locale;-><init>(Lsun/util/locale/BaseLocale;Lsun/util/locale/LocaleExtensions;)V
@@ -117916,11 +110407,8 @@
Ljava/util/Locale;->UNDETERMINED_LANGUAGE:Ljava/lang/String;
Ljava/util/logging/ConsoleHandler;->configure()V
Ljava/util/logging/ErrorManager;->reported:Z
-Ljava/util/logging/FileHandler$InitializationErrorManager;
Ljava/util/logging/FileHandler$InitializationErrorManager;-><init>()V
Ljava/util/logging/FileHandler$InitializationErrorManager;->lastException:Ljava/lang/Exception;
-Ljava/util/logging/FileHandler$MeteredStream;
-Ljava/util/logging/FileHandler$MeteredStream;-><init>(Ljava/io/OutputStream;I)V
Ljava/util/logging/FileHandler$MeteredStream;->out:Ljava/io/OutputStream;
Ljava/util/logging/FileHandler$MeteredStream;->written:I
Ljava/util/logging/FileHandler;->append:Z
@@ -117947,7 +110435,6 @@
Ljava/util/logging/Handler;->logLevel:Ljava/util/logging/Level;
Ljava/util/logging/Handler;->manager:Ljava/util/logging/LogManager;
Ljava/util/logging/Handler;->offValue:I
-Ljava/util/logging/Level$KnownLevel;
Ljava/util/logging/Level$KnownLevel;-><init>(Ljava/util/logging/Level;)V
Ljava/util/logging/Level$KnownLevel;->add(Ljava/util/logging/Level;)V
Ljava/util/logging/Level$KnownLevel;->findByLocalizedLevelName(Ljava/lang/String;)Ljava/util/logging/Level$KnownLevel;
@@ -117970,13 +110457,11 @@
Ljava/util/logging/Level;->name:Ljava/lang/String;
Ljava/util/logging/Level;->resourceBundleName:Ljava/lang/String;
Ljava/util/logging/Level;->value:I
-Ljava/util/logging/Logger$LoggerBundle;
Ljava/util/logging/Logger$LoggerBundle;-><init>(Ljava/lang/String;Ljava/util/ResourceBundle;)V
Ljava/util/logging/Logger$LoggerBundle;->get(Ljava/lang/String;Ljava/util/ResourceBundle;)Ljava/util/logging/Logger$LoggerBundle;
Ljava/util/logging/Logger$LoggerBundle;->isSystemBundle()Z
Ljava/util/logging/Logger$LoggerBundle;->resourceBundleName:Ljava/lang/String;
Ljava/util/logging/Logger$LoggerBundle;->userBundle:Ljava/util/ResourceBundle;
-Ljava/util/logging/Logger$SystemLoggerHelper;
Ljava/util/logging/Logger$SystemLoggerHelper;-><init>()V
Ljava/util/logging/Logger$SystemLoggerHelper;->disableCallerCheck:Z
Ljava/util/logging/Logger$SystemLoggerHelper;->getBooleanProperty(Ljava/lang/String;)Z
@@ -118021,11 +110506,8 @@
Ljava/util/logging/Logger;->SYSTEM_LOGGER_RB_NAME:Ljava/lang/String;
Ljava/util/logging/Logger;->updateEffectiveLevel()V
Ljava/util/logging/Logger;->useParentHandlers:Z
-Ljava/util/logging/LogManager$Beans;
Ljava/util/logging/LogManager$Beans;-><init>()V
Ljava/util/logging/LogManager$Beans;->getClass(Ljava/lang/String;)Ljava/lang/Class;
-Ljava/util/logging/LogManager$Beans;->getConstructor(Ljava/lang/Class;[[Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
-Ljava/util/logging/LogManager$Beans;->getMethod(Ljava/lang/Class;Ljava/lang/String;[[Ljava/lang/Class;)Ljava/lang/reflect/Method;
Ljava/util/logging/LogManager$Beans;->invokePropertyChange(Ljava/lang/Object;Ljava/lang/Object;)V
Ljava/util/logging/LogManager$Beans;->isBeansPresent()Z
Ljava/util/logging/LogManager$Beans;->newPropertyChangeEvent(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
@@ -118033,10 +110515,6 @@
Ljava/util/logging/LogManager$Beans;->propertyChangeListenerClass:Ljava/lang/Class;
Ljava/util/logging/LogManager$Beans;->propertyChangeMethod:Ljava/lang/reflect/Method;
Ljava/util/logging/LogManager$Beans;->propertyEventCtor:Ljava/lang/reflect/Constructor;
-Ljava/util/logging/LogManager$Cleaner;
-Ljava/util/logging/LogManager$Cleaner;-><init>()V
-Ljava/util/logging/LogManager$LoggerContext;
-Ljava/util/logging/LogManager$LoggerContext;-><init>()V
Ljava/util/logging/LogManager$LoggerContext;->addLocalLogger(Ljava/util/logging/Logger;)Z
Ljava/util/logging/LogManager$LoggerContext;->addLocalLogger(Ljava/util/logging/Logger;Ljava/util/logging/LogManager;)Z
Ljava/util/logging/LogManager$LoggerContext;->addLocalLogger(Ljava/util/logging/Logger;Z)Z
@@ -118056,8 +110534,6 @@
Ljava/util/logging/LogManager$LoggerContext;->removeLoggerRef(Ljava/lang/String;Ljava/util/logging/LogManager$LoggerWeakRef;)V
Ljava/util/logging/LogManager$LoggerContext;->requiresDefaultLoggers()Z
Ljava/util/logging/LogManager$LoggerContext;->root:Ljava/util/logging/LogManager$LogNode;
-Ljava/util/logging/LogManager$LoggerWeakRef;
-Ljava/util/logging/LogManager$LoggerWeakRef;-><init>(Ljava/util/logging/Logger;)V
Ljava/util/logging/LogManager$LoggerWeakRef;->dispose()V
Ljava/util/logging/LogManager$LoggerWeakRef;->disposed:Z
Ljava/util/logging/LogManager$LoggerWeakRef;->name:Ljava/lang/String;
@@ -118065,18 +110541,13 @@
Ljava/util/logging/LogManager$LoggerWeakRef;->parentRef:Ljava/lang/ref/WeakReference;
Ljava/util/logging/LogManager$LoggerWeakRef;->setNode(Ljava/util/logging/LogManager$LogNode;)V
Ljava/util/logging/LogManager$LoggerWeakRef;->setParentRef(Ljava/lang/ref/WeakReference;)V
-Ljava/util/logging/LogManager$LogNode;
Ljava/util/logging/LogManager$LogNode;-><init>(Ljava/util/logging/LogManager$LogNode;Ljava/util/logging/LogManager$LoggerContext;)V
Ljava/util/logging/LogManager$LogNode;->children:Ljava/util/HashMap;
Ljava/util/logging/LogManager$LogNode;->context:Ljava/util/logging/LogManager$LoggerContext;
Ljava/util/logging/LogManager$LogNode;->loggerRef:Ljava/util/logging/LogManager$LoggerWeakRef;
Ljava/util/logging/LogManager$LogNode;->parent:Ljava/util/logging/LogManager$LogNode;
Ljava/util/logging/LogManager$LogNode;->walkAndSetParent(Ljava/util/logging/Logger;)V
-Ljava/util/logging/LogManager$RootLogger;
-Ljava/util/logging/LogManager$RootLogger;-><init>()V
Ljava/util/logging/LogManager$RootLogger;->accessCheckedHandlers()[Ljava/util/logging/Handler;
-Ljava/util/logging/LogManager$SystemLoggerContext;
-Ljava/util/logging/LogManager$SystemLoggerContext;-><init>()V
Ljava/util/logging/LogManager$SystemLoggerContext;->demandLogger(Ljava/lang/String;Ljava/lang/String;)Ljava/util/logging/Logger;
Ljava/util/logging/LogManager;-><init>(Ljava/lang/Void;)V
Ljava/util/logging/LogManager;->checkPermission()V
@@ -118195,12 +110666,7 @@
Ljava/util/OptionalLong;->EMPTY:Ljava/util/OptionalLong;
Ljava/util/OptionalLong;->isPresent:Z
Ljava/util/OptionalLong;->value:J
-Ljava/util/prefs/AbstractPreferences$EventDispatchThread;
Ljava/util/prefs/AbstractPreferences$EventDispatchThread;-><init>()V
-Ljava/util/prefs/AbstractPreferences$NodeAddedEvent;
-Ljava/util/prefs/AbstractPreferences$NodeAddedEvent;-><init>(Ljava/util/prefs/Preferences;Ljava/util/prefs/Preferences;)V
-Ljava/util/prefs/AbstractPreferences$NodeRemovedEvent;
-Ljava/util/prefs/AbstractPreferences$NodeRemovedEvent;-><init>(Ljava/util/prefs/Preferences;Ljava/util/prefs/Preferences;)V
Ljava/util/prefs/AbstractPreferences;->absolutePath:Ljava/lang/String;
Ljava/util/prefs/AbstractPreferences;->EMPTY_ABSTRACT_PREFS_ARRAY:[Ljava/util/prefs/AbstractPreferences;
Ljava/util/prefs/AbstractPreferences;->EMPTY_STRING_ARRAY:[Ljava/lang/String;
@@ -118224,22 +110690,13 @@
Ljava/util/prefs/AbstractPreferences;->root:Ljava/util/prefs/AbstractPreferences;
Ljava/util/prefs/AbstractPreferences;->startEventDispatchThreadIfNecessary()V
Ljava/util/prefs/AbstractPreferences;->sync2()V
-Ljava/util/prefs/FileSystemPreferences$Change;
-Ljava/util/prefs/FileSystemPreferences$Change;-><init>()V
Ljava/util/prefs/FileSystemPreferences$Change;->replay()V
-Ljava/util/prefs/FileSystemPreferences$NodeCreate;
-Ljava/util/prefs/FileSystemPreferences$NodeCreate;-><init>()V
Ljava/util/prefs/FileSystemPreferences$NodeCreate;->replay()V
-Ljava/util/prefs/FileSystemPreferences$Put;
-Ljava/util/prefs/FileSystemPreferences$Put;-><init>(Ljava/lang/String;Ljava/lang/String;)V
Ljava/util/prefs/FileSystemPreferences$Put;->key:Ljava/lang/String;
Ljava/util/prefs/FileSystemPreferences$Put;->replay()V
Ljava/util/prefs/FileSystemPreferences$Put;->value:Ljava/lang/String;
-Ljava/util/prefs/FileSystemPreferences$Remove;
-Ljava/util/prefs/FileSystemPreferences$Remove;-><init>(Ljava/lang/String;)V
Ljava/util/prefs/FileSystemPreferences$Remove;->key:Ljava/lang/String;
Ljava/util/prefs/FileSystemPreferences$Remove;->replay()V
-Ljava/util/prefs/FileSystemPreferences;
Ljava/util/prefs/FileSystemPreferences;-><init>(Ljava/lang/String;Ljava/io/File;Z)V
Ljava/util/prefs/FileSystemPreferences;-><init>(Ljava/util/prefs/FileSystemPreferences;Ljava/lang/String;)V
Ljava/util/prefs/FileSystemPreferences;-><init>(Z)V
@@ -118307,14 +110764,11 @@
Ljava/util/prefs/Preferences;->nodeName(Ljava/lang/Class;)Ljava/lang/String;
Ljava/util/prefs/Preferences;->prefsPerm:Ljava/security/Permission;
Ljava/util/prefs/Preferences;->setPreferencesFactory(Ljava/util/prefs/PreferencesFactory;)Ljava/util/prefs/PreferencesFactory;
-Ljava/util/PriorityQueue$Itr;
-Ljava/util/PriorityQueue$Itr;-><init>()V
Ljava/util/PriorityQueue$Itr;->cursor:I
Ljava/util/PriorityQueue$Itr;->expectedModCount:I
Ljava/util/PriorityQueue$Itr;->forgetMeNot:Ljava/util/ArrayDeque;
Ljava/util/PriorityQueue$Itr;->lastRet:I
Ljava/util/PriorityQueue$Itr;->lastRetElt:Ljava/lang/Object;
-Ljava/util/PriorityQueue$PriorityQueueSpliterator;
Ljava/util/PriorityQueue$PriorityQueueSpliterator;-><init>(Ljava/util/PriorityQueue;III)V
Ljava/util/PriorityQueue$PriorityQueueSpliterator;->expectedModCount:I
Ljava/util/PriorityQueue$PriorityQueueSpliterator;->fence:I
@@ -118341,9 +110795,6 @@
Ljava/util/PriorityQueue;->siftUp(ILjava/lang/Object;)V
Ljava/util/PriorityQueue;->siftUpComparable(ILjava/lang/Object;)V
Ljava/util/PriorityQueue;->siftUpUsingComparator(ILjava/lang/Object;)V
-Ljava/util/Properties$LineReader;
-Ljava/util/Properties$LineReader;-><init>(Ljava/io/InputStream;)V
-Ljava/util/Properties$LineReader;-><init>(Ljava/io/Reader;)V
Ljava/util/Properties$LineReader;->inByteBuf:[B
Ljava/util/Properties$LineReader;->inCharBuf:[C
Ljava/util/Properties$LineReader;->inLimit:I
@@ -118361,21 +110812,18 @@
Ljava/util/Properties;->toHex(I)C
Ljava/util/Properties;->writeComments(Ljava/io/BufferedWriter;Ljava/lang/String;)V
Ljava/util/PropertyResourceBundle;->lookup:Ljava/util/Map;
-Ljava/util/Random$RandomDoublesSpliterator;
Ljava/util/Random$RandomDoublesSpliterator;-><init>(Ljava/util/Random;JJDD)V
Ljava/util/Random$RandomDoublesSpliterator;->bound:D
Ljava/util/Random$RandomDoublesSpliterator;->fence:J
Ljava/util/Random$RandomDoublesSpliterator;->index:J
Ljava/util/Random$RandomDoublesSpliterator;->origin:D
Ljava/util/Random$RandomDoublesSpliterator;->rng:Ljava/util/Random;
-Ljava/util/Random$RandomIntsSpliterator;
Ljava/util/Random$RandomIntsSpliterator;-><init>(Ljava/util/Random;JJII)V
Ljava/util/Random$RandomIntsSpliterator;->bound:I
Ljava/util/Random$RandomIntsSpliterator;->fence:J
Ljava/util/Random$RandomIntsSpliterator;->index:J
Ljava/util/Random$RandomIntsSpliterator;->origin:I
Ljava/util/Random$RandomIntsSpliterator;->rng:Ljava/util/Random;
-Ljava/util/Random$RandomLongsSpliterator;
Ljava/util/Random$RandomLongsSpliterator;-><init>(Ljava/util/Random;JJJJ)V
Ljava/util/Random$RandomLongsSpliterator;->bound:J
Ljava/util/Random$RandomLongsSpliterator;->fence:J
@@ -118400,7 +110848,6 @@
Ljava/util/Random;->seedOffset:J
Ljava/util/Random;->seedUniquifier:Ljava/util/concurrent/atomic/AtomicLong;
Ljava/util/Random;->unsafe:Lsun/misc/Unsafe;
-Ljava/util/regex/Matcher$OffsetBasedMatchResult;
Ljava/util/regex/Matcher$OffsetBasedMatchResult;-><init>(Ljava/lang/String;[I)V
Ljava/util/regex/Matcher$OffsetBasedMatchResult;->input:Ljava/lang/String;
Ljava/util/regex/Matcher$OffsetBasedMatchResult;->offsets:[I
@@ -118451,11 +110898,9 @@
Ljava/util/regex/PatternSyntaxException;->index:I
Ljava/util/regex/PatternSyntaxException;->nl:Ljava/lang/String;
Ljava/util/regex/PatternSyntaxException;->pattern:Ljava/lang/String;
-Ljava/util/ResourceBundle$BundleReference;
Ljava/util/ResourceBundle$BundleReference;-><init>(Ljava/util/ResourceBundle;Ljava/lang/ref/ReferenceQueue;Ljava/util/ResourceBundle$CacheKey;)V
Ljava/util/ResourceBundle$BundleReference;->cacheKey:Ljava/util/ResourceBundle$CacheKey;
Ljava/util/ResourceBundle$BundleReference;->getCacheKey()Ljava/util/ResourceBundle$CacheKey;
-Ljava/util/ResourceBundle$CacheKey;
Ljava/util/ResourceBundle$CacheKey;-><init>(Ljava/lang/String;Ljava/util/Locale;Ljava/lang/ClassLoader;)V
Ljava/util/ResourceBundle$CacheKey;->calculateHashCode()V
Ljava/util/ResourceBundle$CacheKey;->cause:Ljava/lang/Throwable;
@@ -118475,29 +110920,23 @@
Ljava/util/ResourceBundle$CacheKey;->setFormat(Ljava/lang/String;)V
Ljava/util/ResourceBundle$CacheKey;->setLocale(Ljava/util/Locale;)Ljava/util/ResourceBundle$CacheKey;
Ljava/util/ResourceBundle$CacheKey;->setName(Ljava/lang/String;)Ljava/util/ResourceBundle$CacheKey;
-Ljava/util/ResourceBundle$CacheKeyReference;
Ljava/util/ResourceBundle$CacheKeyReference;->getCacheKey()Ljava/util/ResourceBundle$CacheKey;
-Ljava/util/ResourceBundle$Control$CandidateListCache;
Ljava/util/ResourceBundle$Control$CandidateListCache;-><init>()V
Ljava/util/ResourceBundle$Control$CandidateListCache;->createObject(Lsun/util/locale/BaseLocale;)Ljava/util/List;
Ljava/util/ResourceBundle$Control$CandidateListCache;->getDefaultList(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/util/List;
Ljava/util/ResourceBundle$Control;->CANDIDATES_CACHE:Ljava/util/ResourceBundle$Control$CandidateListCache;
Ljava/util/ResourceBundle$Control;->INSTANCE:Ljava/util/ResourceBundle$Control;
Ljava/util/ResourceBundle$Control;->toResourceName0(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Ljava/util/ResourceBundle$LoaderReference;
Ljava/util/ResourceBundle$LoaderReference;-><init>(Ljava/lang/ClassLoader;Ljava/lang/ref/ReferenceQueue;Ljava/util/ResourceBundle$CacheKey;)V
Ljava/util/ResourceBundle$LoaderReference;->cacheKey:Ljava/util/ResourceBundle$CacheKey;
Ljava/util/ResourceBundle$LoaderReference;->getCacheKey()Ljava/util/ResourceBundle$CacheKey;
-Ljava/util/ResourceBundle$NoFallbackControl;
Ljava/util/ResourceBundle$NoFallbackControl;-><init>(Ljava/util/List;)V
Ljava/util/ResourceBundle$NoFallbackControl;->CLASS_ONLY_NO_FALLBACK:Ljava/util/ResourceBundle$Control;
Ljava/util/ResourceBundle$NoFallbackControl;->NO_FALLBACK:Ljava/util/ResourceBundle$Control;
Ljava/util/ResourceBundle$NoFallbackControl;->PROPERTIES_ONLY_NO_FALLBACK:Ljava/util/ResourceBundle$Control;
-Ljava/util/ResourceBundle$RBClassLoader;
Ljava/util/ResourceBundle$RBClassLoader;-><init>()V
Ljava/util/ResourceBundle$RBClassLoader;->INSTANCE:Ljava/util/ResourceBundle$RBClassLoader;
Ljava/util/ResourceBundle$RBClassLoader;->loader:Ljava/lang/ClassLoader;
-Ljava/util/ResourceBundle$SingleFormatControl;
Ljava/util/ResourceBundle$SingleFormatControl;-><init>(Ljava/util/List;)V
Ljava/util/ResourceBundle$SingleFormatControl;->CLASS_ONLY:Ljava/util/ResourceBundle$Control;
Ljava/util/ResourceBundle$SingleFormatControl;->formats:Ljava/util/List;
@@ -118603,8 +111042,6 @@
Ljava/util/Scanner;->typeCache:Ljava/lang/Object;
Ljava/util/Scanner;->useTypeCache()V
Ljava/util/Scanner;->WHITESPACE_PATTERN:Ljava/util/regex/Pattern;
-Ljava/util/ServiceLoader$LazyIterator;
-Ljava/util/ServiceLoader$LazyIterator;-><init>(Ljava/lang/Class;Ljava/lang/ClassLoader;)V
Ljava/util/ServiceLoader$LazyIterator;->configs:Ljava/util/Enumeration;
Ljava/util/ServiceLoader$LazyIterator;->hasNextService()Z
Ljava/util/ServiceLoader$LazyIterator;->loader:Ljava/lang/ClassLoader;
@@ -118669,7 +111106,6 @@
Ljava/util/SimpleTimeZone;->unpackRules([B)V
Ljava/util/SimpleTimeZone;->unpackTimes([I)V
Ljava/util/SimpleTimeZone;->useDaylight:Z
-Ljava/util/Spliterators$AbstractDoubleSpliterator$HoldingDoubleConsumer;
Ljava/util/Spliterators$AbstractDoubleSpliterator$HoldingDoubleConsumer;-><init>()V
Ljava/util/Spliterators$AbstractDoubleSpliterator$HoldingDoubleConsumer;->value:D
Ljava/util/Spliterators$AbstractDoubleSpliterator;->batch:I
@@ -118677,7 +111113,6 @@
Ljava/util/Spliterators$AbstractDoubleSpliterator;->characteristics:I
Ljava/util/Spliterators$AbstractDoubleSpliterator;->est:J
Ljava/util/Spliterators$AbstractDoubleSpliterator;->MAX_BATCH:I
-Ljava/util/Spliterators$AbstractIntSpliterator$HoldingIntConsumer;
Ljava/util/Spliterators$AbstractIntSpliterator$HoldingIntConsumer;-><init>()V
Ljava/util/Spliterators$AbstractIntSpliterator$HoldingIntConsumer;->value:I
Ljava/util/Spliterators$AbstractIntSpliterator;->batch:I
@@ -118685,7 +111120,6 @@
Ljava/util/Spliterators$AbstractIntSpliterator;->characteristics:I
Ljava/util/Spliterators$AbstractIntSpliterator;->est:J
Ljava/util/Spliterators$AbstractIntSpliterator;->MAX_BATCH:I
-Ljava/util/Spliterators$AbstractLongSpliterator$HoldingLongConsumer;
Ljava/util/Spliterators$AbstractLongSpliterator$HoldingLongConsumer;-><init>()V
Ljava/util/Spliterators$AbstractLongSpliterator$HoldingLongConsumer;->value:J
Ljava/util/Spliterators$AbstractLongSpliterator;->batch:I
@@ -118693,7 +111127,6 @@
Ljava/util/Spliterators$AbstractLongSpliterator;->characteristics:I
Ljava/util/Spliterators$AbstractLongSpliterator;->est:J
Ljava/util/Spliterators$AbstractLongSpliterator;->MAX_BATCH:I
-Ljava/util/Spliterators$AbstractSpliterator$HoldingConsumer;
Ljava/util/Spliterators$AbstractSpliterator$HoldingConsumer;-><init>()V
Ljava/util/Spliterators$AbstractSpliterator$HoldingConsumer;->value:Ljava/lang/Object;
Ljava/util/Spliterators$AbstractSpliterator;->batch:I
@@ -118701,21 +111134,18 @@
Ljava/util/Spliterators$AbstractSpliterator;->characteristics:I
Ljava/util/Spliterators$AbstractSpliterator;->est:J
Ljava/util/Spliterators$AbstractSpliterator;->MAX_BATCH:I
-Ljava/util/Spliterators$ArraySpliterator;
Ljava/util/Spliterators$ArraySpliterator;-><init>([Ljava/lang/Object;I)V
Ljava/util/Spliterators$ArraySpliterator;-><init>([Ljava/lang/Object;III)V
Ljava/util/Spliterators$ArraySpliterator;->array:[Ljava/lang/Object;
Ljava/util/Spliterators$ArraySpliterator;->characteristics:I
Ljava/util/Spliterators$ArraySpliterator;->fence:I
Ljava/util/Spliterators$ArraySpliterator;->index:I
-Ljava/util/Spliterators$DoubleArraySpliterator;
Ljava/util/Spliterators$DoubleArraySpliterator;-><init>([DI)V
Ljava/util/Spliterators$DoubleArraySpliterator;-><init>([DIII)V
Ljava/util/Spliterators$DoubleArraySpliterator;->array:[D
Ljava/util/Spliterators$DoubleArraySpliterator;->characteristics:I
Ljava/util/Spliterators$DoubleArraySpliterator;->fence:I
Ljava/util/Spliterators$DoubleArraySpliterator;->index:I
-Ljava/util/Spliterators$DoubleIteratorSpliterator;
Ljava/util/Spliterators$DoubleIteratorSpliterator;-><init>(Ljava/util/PrimitiveIterator$OfDouble;I)V
Ljava/util/Spliterators$DoubleIteratorSpliterator;-><init>(Ljava/util/PrimitiveIterator$OfDouble;JI)V
Ljava/util/Spliterators$DoubleIteratorSpliterator;->batch:I
@@ -118724,29 +111154,22 @@
Ljava/util/Spliterators$DoubleIteratorSpliterator;->est:J
Ljava/util/Spliterators$DoubleIteratorSpliterator;->it:Ljava/util/PrimitiveIterator$OfDouble;
Ljava/util/Spliterators$DoubleIteratorSpliterator;->MAX_BATCH:I
-Ljava/util/Spliterators$EmptySpliterator$OfDouble;
Ljava/util/Spliterators$EmptySpliterator$OfDouble;-><init>()V
-Ljava/util/Spliterators$EmptySpliterator$OfInt;
Ljava/util/Spliterators$EmptySpliterator$OfInt;-><init>()V
-Ljava/util/Spliterators$EmptySpliterator$OfLong;
Ljava/util/Spliterators$EmptySpliterator$OfLong;-><init>()V
-Ljava/util/Spliterators$EmptySpliterator$OfRef;
Ljava/util/Spliterators$EmptySpliterator$OfRef;-><init>()V
-Ljava/util/Spliterators$EmptySpliterator;
Ljava/util/Spliterators$EmptySpliterator;-><init>()V
Ljava/util/Spliterators$EmptySpliterator;->characteristics()I
Ljava/util/Spliterators$EmptySpliterator;->estimateSize()J
Ljava/util/Spliterators$EmptySpliterator;->forEachRemaining(Ljava/lang/Object;)V
Ljava/util/Spliterators$EmptySpliterator;->tryAdvance(Ljava/lang/Object;)Z
Ljava/util/Spliterators$EmptySpliterator;->trySplit()Ljava/util/Spliterator;
-Ljava/util/Spliterators$IntArraySpliterator;
Ljava/util/Spliterators$IntArraySpliterator;-><init>([II)V
Ljava/util/Spliterators$IntArraySpliterator;-><init>([IIII)V
Ljava/util/Spliterators$IntArraySpliterator;->array:[I
Ljava/util/Spliterators$IntArraySpliterator;->characteristics:I
Ljava/util/Spliterators$IntArraySpliterator;->fence:I
Ljava/util/Spliterators$IntArraySpliterator;->index:I
-Ljava/util/Spliterators$IntIteratorSpliterator;
Ljava/util/Spliterators$IntIteratorSpliterator;-><init>(Ljava/util/PrimitiveIterator$OfInt;I)V
Ljava/util/Spliterators$IntIteratorSpliterator;-><init>(Ljava/util/PrimitiveIterator$OfInt;JI)V
Ljava/util/Spliterators$IntIteratorSpliterator;->batch:I
@@ -118755,7 +111178,6 @@
Ljava/util/Spliterators$IntIteratorSpliterator;->est:J
Ljava/util/Spliterators$IntIteratorSpliterator;->it:Ljava/util/PrimitiveIterator$OfInt;
Ljava/util/Spliterators$IntIteratorSpliterator;->MAX_BATCH:I
-Ljava/util/Spliterators$IteratorSpliterator;
Ljava/util/Spliterators$IteratorSpliterator;-><init>(Ljava/util/Collection;I)V
Ljava/util/Spliterators$IteratorSpliterator;-><init>(Ljava/util/Iterator;I)V
Ljava/util/Spliterators$IteratorSpliterator;-><init>(Ljava/util/Iterator;JI)V
@@ -118766,14 +111188,12 @@
Ljava/util/Spliterators$IteratorSpliterator;->est:J
Ljava/util/Spliterators$IteratorSpliterator;->it:Ljava/util/Iterator;
Ljava/util/Spliterators$IteratorSpliterator;->MAX_BATCH:I
-Ljava/util/Spliterators$LongArraySpliterator;
Ljava/util/Spliterators$LongArraySpliterator;-><init>([JI)V
Ljava/util/Spliterators$LongArraySpliterator;-><init>([JIII)V
Ljava/util/Spliterators$LongArraySpliterator;->array:[J
Ljava/util/Spliterators$LongArraySpliterator;->characteristics:I
Ljava/util/Spliterators$LongArraySpliterator;->fence:I
Ljava/util/Spliterators$LongArraySpliterator;->index:I
-Ljava/util/Spliterators$LongIteratorSpliterator;
Ljava/util/Spliterators$LongIteratorSpliterator;-><init>(Ljava/util/PrimitiveIterator$OfLong;I)V
Ljava/util/Spliterators$LongIteratorSpliterator;-><init>(Ljava/util/PrimitiveIterator$OfLong;JI)V
Ljava/util/Spliterators$LongIteratorSpliterator;->batch:I
@@ -118788,21 +111208,18 @@
Ljava/util/Spliterators;->EMPTY_INT_SPLITERATOR:Ljava/util/Spliterator$OfInt;
Ljava/util/Spliterators;->EMPTY_LONG_SPLITERATOR:Ljava/util/Spliterator$OfLong;
Ljava/util/Spliterators;->EMPTY_SPLITERATOR:Ljava/util/Spliterator;
-Ljava/util/SplittableRandom$RandomDoublesSpliterator;
Ljava/util/SplittableRandom$RandomDoublesSpliterator;-><init>(Ljava/util/SplittableRandom;JJDD)V
Ljava/util/SplittableRandom$RandomDoublesSpliterator;->bound:D
Ljava/util/SplittableRandom$RandomDoublesSpliterator;->fence:J
Ljava/util/SplittableRandom$RandomDoublesSpliterator;->index:J
Ljava/util/SplittableRandom$RandomDoublesSpliterator;->origin:D
Ljava/util/SplittableRandom$RandomDoublesSpliterator;->rng:Ljava/util/SplittableRandom;
-Ljava/util/SplittableRandom$RandomIntsSpliterator;
Ljava/util/SplittableRandom$RandomIntsSpliterator;-><init>(Ljava/util/SplittableRandom;JJII)V
Ljava/util/SplittableRandom$RandomIntsSpliterator;->bound:I
Ljava/util/SplittableRandom$RandomIntsSpliterator;->fence:J
Ljava/util/SplittableRandom$RandomIntsSpliterator;->index:J
Ljava/util/SplittableRandom$RandomIntsSpliterator;->origin:I
Ljava/util/SplittableRandom$RandomIntsSpliterator;->rng:Ljava/util/SplittableRandom;
-Ljava/util/SplittableRandom$RandomLongsSpliterator;
Ljava/util/SplittableRandom$RandomLongsSpliterator;-><init>(Ljava/util/SplittableRandom;JJJJ)V
Ljava/util/SplittableRandom$RandomLongsSpliterator;->bound:J
Ljava/util/SplittableRandom$RandomLongsSpliterator;->fence:J
@@ -118825,7 +111242,6 @@
Ljava/util/SplittableRandom;->mixGamma(J)J
Ljava/util/SplittableRandom;->nextSeed()J
Ljava/util/SplittableRandom;->seed:J
-Ljava/util/stream/AbstractPipeline;
Ljava/util/stream/AbstractPipeline;-><init>(Ljava/util/function/Supplier;IZ)V
Ljava/util/stream/AbstractPipeline;-><init>(Ljava/util/Spliterator;IZ)V
Ljava/util/stream/AbstractPipeline;-><init>(Ljava/util/stream/AbstractPipeline;I)V
@@ -118868,7 +111284,6 @@
Ljava/util/stream/AbstractPipeline;->wrapAndCopyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)Ljava/util/stream/Sink;
Ljava/util/stream/AbstractPipeline;->wrapSink(Ljava/util/stream/Sink;)Ljava/util/stream/Sink;
Ljava/util/stream/AbstractPipeline;->wrapSpliterator(Ljava/util/Spliterator;)Ljava/util/Spliterator;
-Ljava/util/stream/AbstractSpinedBuffer;
Ljava/util/stream/AbstractSpinedBuffer;-><init>()V
Ljava/util/stream/AbstractSpinedBuffer;-><init>(I)V
Ljava/util/stream/AbstractSpinedBuffer;->chunkSize(I)I
@@ -118883,8 +111298,6 @@
Ljava/util/stream/AbstractSpinedBuffer;->MIN_SPINE_SIZE:I
Ljava/util/stream/AbstractSpinedBuffer;->priorElementCount:[J
Ljava/util/stream/AbstractSpinedBuffer;->spineIndex:I
-Ljava/util/stream/Collector$Characteristics;-><init>()V
-Ljava/util/stream/Collectors$CollectorImpl;
Ljava/util/stream/Collectors$CollectorImpl;-><init>(Ljava/util/function/Supplier;Ljava/util/function/BiConsumer;Ljava/util/function/BinaryOperator;Ljava/util/function/Function;Ljava/util/Set;)V
Ljava/util/stream/Collectors$CollectorImpl;-><init>(Ljava/util/function/Supplier;Ljava/util/function/BiConsumer;Ljava/util/function/BinaryOperator;Ljava/util/Set;)V
Ljava/util/stream/Collectors$CollectorImpl;->accumulator:Ljava/util/function/BiConsumer;
@@ -118892,7 +111305,6 @@
Ljava/util/stream/Collectors$CollectorImpl;->combiner:Ljava/util/function/BinaryOperator;
Ljava/util/stream/Collectors$CollectorImpl;->finisher:Ljava/util/function/Function;
Ljava/util/stream/Collectors$CollectorImpl;->supplier:Ljava/util/function/Supplier;
-Ljava/util/stream/Collectors$Partition;
Ljava/util/stream/Collectors$Partition;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V
Ljava/util/stream/Collectors$Partition;->forFalse:Ljava/lang/Object;
Ljava/util/stream/Collectors$Partition;->forTrue:Ljava/lang/Object;
@@ -118908,19 +111320,15 @@
Ljava/util/stream/Collectors;->mapMerger(Ljava/util/function/BinaryOperator;)Ljava/util/function/BinaryOperator;
Ljava/util/stream/Collectors;->sumWithCompensation([DD)[D
Ljava/util/stream/Collectors;->throwingMerger()Ljava/util/function/BinaryOperator;
-Ljava/util/stream/DoublePipeline$Head;
Ljava/util/stream/DoublePipeline$Head;-><init>(Ljava/util/function/Supplier;IZ)V
Ljava/util/stream/DoublePipeline$Head;-><init>(Ljava/util/Spliterator;IZ)V
Ljava/util/stream/DoublePipeline$Head;->opIsStateful()Z
Ljava/util/stream/DoublePipeline$Head;->opWrapSink(ILjava/util/stream/Sink;)Ljava/util/stream/Sink;
-Ljava/util/stream/DoublePipeline$StatefulOp;
Ljava/util/stream/DoublePipeline$StatefulOp;-><init>(Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;I)V
Ljava/util/stream/DoublePipeline$StatefulOp;->opEvaluateParallel(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;Ljava/util/function/IntFunction;)Ljava/util/stream/Node;
Ljava/util/stream/DoublePipeline$StatefulOp;->opIsStateful()Z
-Ljava/util/stream/DoublePipeline$StatelessOp;
Ljava/util/stream/DoublePipeline$StatelessOp;-><init>(Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;I)V
Ljava/util/stream/DoublePipeline$StatelessOp;->opIsStateful()Z
-Ljava/util/stream/DoublePipeline;
Ljava/util/stream/DoublePipeline;-><init>(Ljava/util/function/Supplier;IZ)V
Ljava/util/stream/DoublePipeline;-><init>(Ljava/util/Spliterator;IZ)V
Ljava/util/stream/DoublePipeline;-><init>(Ljava/util/stream/AbstractPipeline;I)V
@@ -118932,19 +111340,15 @@
Ljava/util/stream/DoublePipeline;->lazySpliterator(Ljava/util/function/Supplier;)Ljava/util/Spliterator$OfDouble;
Ljava/util/stream/DoublePipeline;->makeNodeBuilder(JLjava/util/function/IntFunction;)Ljava/util/stream/Node$Builder;
Ljava/util/stream/DoublePipeline;->wrap(Ljava/util/stream/PipelineHelper;Ljava/util/function/Supplier;Z)Ljava/util/Spliterator;
-Ljava/util/stream/IntPipeline$Head;
Ljava/util/stream/IntPipeline$Head;-><init>(Ljava/util/function/Supplier;IZ)V
Ljava/util/stream/IntPipeline$Head;-><init>(Ljava/util/Spliterator;IZ)V
Ljava/util/stream/IntPipeline$Head;->opIsStateful()Z
Ljava/util/stream/IntPipeline$Head;->opWrapSink(ILjava/util/stream/Sink;)Ljava/util/stream/Sink;
-Ljava/util/stream/IntPipeline$StatefulOp;
Ljava/util/stream/IntPipeline$StatefulOp;-><init>(Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;I)V
Ljava/util/stream/IntPipeline$StatefulOp;->opEvaluateParallel(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;Ljava/util/function/IntFunction;)Ljava/util/stream/Node;
Ljava/util/stream/IntPipeline$StatefulOp;->opIsStateful()Z
-Ljava/util/stream/IntPipeline$StatelessOp;
Ljava/util/stream/IntPipeline$StatelessOp;-><init>(Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;I)V
Ljava/util/stream/IntPipeline$StatelessOp;->opIsStateful()Z
-Ljava/util/stream/IntPipeline;
Ljava/util/stream/IntPipeline;-><init>(Ljava/util/function/Supplier;IZ)V
Ljava/util/stream/IntPipeline;-><init>(Ljava/util/Spliterator;IZ)V
Ljava/util/stream/IntPipeline;-><init>(Ljava/util/stream/AbstractPipeline;I)V
@@ -118956,19 +111360,15 @@
Ljava/util/stream/IntPipeline;->lazySpliterator(Ljava/util/function/Supplier;)Ljava/util/Spliterator$OfInt;
Ljava/util/stream/IntPipeline;->makeNodeBuilder(JLjava/util/function/IntFunction;)Ljava/util/stream/Node$Builder;
Ljava/util/stream/IntPipeline;->wrap(Ljava/util/stream/PipelineHelper;Ljava/util/function/Supplier;Z)Ljava/util/Spliterator;
-Ljava/util/stream/LongPipeline$Head;
Ljava/util/stream/LongPipeline$Head;-><init>(Ljava/util/function/Supplier;IZ)V
Ljava/util/stream/LongPipeline$Head;-><init>(Ljava/util/Spliterator;IZ)V
Ljava/util/stream/LongPipeline$Head;->opIsStateful()Z
Ljava/util/stream/LongPipeline$Head;->opWrapSink(ILjava/util/stream/Sink;)Ljava/util/stream/Sink;
-Ljava/util/stream/LongPipeline$StatefulOp;
Ljava/util/stream/LongPipeline$StatefulOp;-><init>(Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;I)V
Ljava/util/stream/LongPipeline$StatefulOp;->opEvaluateParallel(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;Ljava/util/function/IntFunction;)Ljava/util/stream/Node;
Ljava/util/stream/LongPipeline$StatefulOp;->opIsStateful()Z
-Ljava/util/stream/LongPipeline$StatelessOp;
Ljava/util/stream/LongPipeline$StatelessOp;-><init>(Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;I)V
Ljava/util/stream/LongPipeline$StatelessOp;->opIsStateful()Z
-Ljava/util/stream/LongPipeline;
Ljava/util/stream/LongPipeline;-><init>(Ljava/util/function/Supplier;IZ)V
Ljava/util/stream/LongPipeline;-><init>(Ljava/util/Spliterator;IZ)V
Ljava/util/stream/LongPipeline;-><init>(Ljava/util/stream/AbstractPipeline;I)V
@@ -118980,33 +111380,25 @@
Ljava/util/stream/LongPipeline;->lazySpliterator(Ljava/util/function/Supplier;)Ljava/util/Spliterator$OfLong;
Ljava/util/stream/LongPipeline;->makeNodeBuilder(JLjava/util/function/IntFunction;)Ljava/util/stream/Node$Builder;
Ljava/util/stream/LongPipeline;->wrap(Ljava/util/stream/PipelineHelper;Ljava/util/function/Supplier;Z)Ljava/util/Spliterator;
-Ljava/util/stream/Node$Builder$OfDouble;
Ljava/util/stream/Node$Builder$OfDouble;->build()Ljava/util/stream/Node$OfDouble;
-Ljava/util/stream/Node$Builder$OfInt;
Ljava/util/stream/Node$Builder$OfInt;->build()Ljava/util/stream/Node$OfInt;
-Ljava/util/stream/Node$Builder$OfLong;
Ljava/util/stream/Node$Builder$OfLong;->build()Ljava/util/stream/Node$OfLong;
-Ljava/util/stream/Node$Builder;
Ljava/util/stream/Node$Builder;->build()Ljava/util/stream/Node;
-Ljava/util/stream/Node$OfDouble;
Ljava/util/stream/Node$OfDouble;->copyInto([Ljava/lang/Double;I)V
Ljava/util/stream/Node$OfDouble;->forEach(Ljava/util/function/Consumer;)V
Ljava/util/stream/Node$OfDouble;->getShape()Ljava/util/stream/StreamShape;
Ljava/util/stream/Node$OfDouble;->newArray(I)[D
Ljava/util/stream/Node$OfDouble;->truncate(JJLjava/util/function/IntFunction;)Ljava/util/stream/Node$OfDouble;
-Ljava/util/stream/Node$OfInt;
Ljava/util/stream/Node$OfInt;->copyInto([Ljava/lang/Integer;I)V
Ljava/util/stream/Node$OfInt;->forEach(Ljava/util/function/Consumer;)V
Ljava/util/stream/Node$OfInt;->getShape()Ljava/util/stream/StreamShape;
Ljava/util/stream/Node$OfInt;->newArray(I)[I
Ljava/util/stream/Node$OfInt;->truncate(JJLjava/util/function/IntFunction;)Ljava/util/stream/Node$OfInt;
-Ljava/util/stream/Node$OfLong;
Ljava/util/stream/Node$OfLong;->copyInto([Ljava/lang/Long;I)V
Ljava/util/stream/Node$OfLong;->forEach(Ljava/util/function/Consumer;)V
Ljava/util/stream/Node$OfLong;->getShape()Ljava/util/stream/StreamShape;
Ljava/util/stream/Node$OfLong;->newArray(I)[J
Ljava/util/stream/Node$OfLong;->truncate(JJLjava/util/function/IntFunction;)Ljava/util/stream/Node$OfLong;
-Ljava/util/stream/Node$OfPrimitive;
Ljava/util/stream/Node$OfPrimitive;->asArray(Ljava/util/function/IntFunction;)[Ljava/lang/Object;
Ljava/util/stream/Node$OfPrimitive;->asPrimitiveArray()Ljava/lang/Object;
Ljava/util/stream/Node$OfPrimitive;->copyInto(Ljava/lang/Object;I)V
@@ -119015,7 +111407,6 @@
Ljava/util/stream/Node$OfPrimitive;->newArray(I)Ljava/lang/Object;
Ljava/util/stream/Node$OfPrimitive;->spliterator()Ljava/util/Spliterator$OfPrimitive;
Ljava/util/stream/Node$OfPrimitive;->truncate(JJLjava/util/function/IntFunction;)Ljava/util/stream/Node$OfPrimitive;
-Ljava/util/stream/Node;
Ljava/util/stream/Node;->asArray(Ljava/util/function/IntFunction;)[Ljava/lang/Object;
Ljava/util/stream/Node;->copyInto([Ljava/lang/Object;I)V
Ljava/util/stream/Node;->count()J
@@ -119025,7 +111416,6 @@
Ljava/util/stream/Node;->getShape()Ljava/util/stream/StreamShape;
Ljava/util/stream/Node;->spliterator()Ljava/util/Spliterator;
Ljava/util/stream/Node;->truncate(JJLjava/util/function/IntFunction;)Ljava/util/stream/Node;
-Ljava/util/stream/PipelineHelper;
Ljava/util/stream/PipelineHelper;-><init>()V
Ljava/util/stream/PipelineHelper;->copyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)V
Ljava/util/stream/PipelineHelper;->copyIntoWithCancel(Ljava/util/stream/Sink;Ljava/util/Spliterator;)V
@@ -119037,21 +111427,17 @@
Ljava/util/stream/PipelineHelper;->wrapAndCopyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)Ljava/util/stream/Sink;
Ljava/util/stream/PipelineHelper;->wrapSink(Ljava/util/stream/Sink;)Ljava/util/stream/Sink;
Ljava/util/stream/PipelineHelper;->wrapSpliterator(Ljava/util/Spliterator;)Ljava/util/Spliterator;
-Ljava/util/stream/ReferencePipeline$Head;
Ljava/util/stream/ReferencePipeline$Head;-><init>(Ljava/util/function/Supplier;IZ)V
Ljava/util/stream/ReferencePipeline$Head;-><init>(Ljava/util/Spliterator;IZ)V
Ljava/util/stream/ReferencePipeline$Head;->forEach(Ljava/util/function/Consumer;)V
Ljava/util/stream/ReferencePipeline$Head;->forEachOrdered(Ljava/util/function/Consumer;)V
Ljava/util/stream/ReferencePipeline$Head;->opIsStateful()Z
Ljava/util/stream/ReferencePipeline$Head;->opWrapSink(ILjava/util/stream/Sink;)Ljava/util/stream/Sink;
-Ljava/util/stream/ReferencePipeline$StatefulOp;
Ljava/util/stream/ReferencePipeline$StatefulOp;-><init>(Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;I)V
Ljava/util/stream/ReferencePipeline$StatefulOp;->opEvaluateParallel(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;Ljava/util/function/IntFunction;)Ljava/util/stream/Node;
Ljava/util/stream/ReferencePipeline$StatefulOp;->opIsStateful()Z
-Ljava/util/stream/ReferencePipeline$StatelessOp;
Ljava/util/stream/ReferencePipeline$StatelessOp;-><init>(Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;I)V
Ljava/util/stream/ReferencePipeline$StatelessOp;->opIsStateful()Z
-Ljava/util/stream/ReferencePipeline;
Ljava/util/stream/ReferencePipeline;-><init>(Ljava/util/function/Supplier;IZ)V
Ljava/util/stream/ReferencePipeline;-><init>(Ljava/util/Spliterator;IZ)V
Ljava/util/stream/ReferencePipeline;-><init>(Ljava/util/stream/AbstractPipeline;I)V
@@ -119084,44 +111470,35 @@
Ljava/util/stream/ReferencePipeline;->reduce(Ljava/util/function/BinaryOperator;)Ljava/util/Optional;
Ljava/util/stream/ReferencePipeline;->sorted(Ljava/util/Comparator;)Ljava/util/stream/Stream;
Ljava/util/stream/ReferencePipeline;->wrap(Ljava/util/stream/PipelineHelper;Ljava/util/function/Supplier;Z)Ljava/util/Spliterator;
-Ljava/util/stream/Sink$ChainedDouble;
Ljava/util/stream/Sink$ChainedDouble;-><init>(Ljava/util/stream/Sink;)V
Ljava/util/stream/Sink$ChainedDouble;->begin(J)V
Ljava/util/stream/Sink$ChainedDouble;->cancellationRequested()Z
Ljava/util/stream/Sink$ChainedDouble;->downstream:Ljava/util/stream/Sink;
Ljava/util/stream/Sink$ChainedDouble;->end()V
-Ljava/util/stream/Sink$ChainedInt;
Ljava/util/stream/Sink$ChainedInt;-><init>(Ljava/util/stream/Sink;)V
Ljava/util/stream/Sink$ChainedInt;->begin(J)V
Ljava/util/stream/Sink$ChainedInt;->cancellationRequested()Z
Ljava/util/stream/Sink$ChainedInt;->downstream:Ljava/util/stream/Sink;
Ljava/util/stream/Sink$ChainedInt;->end()V
-Ljava/util/stream/Sink$ChainedLong;
Ljava/util/stream/Sink$ChainedLong;-><init>(Ljava/util/stream/Sink;)V
Ljava/util/stream/Sink$ChainedLong;->begin(J)V
Ljava/util/stream/Sink$ChainedLong;->cancellationRequested()Z
Ljava/util/stream/Sink$ChainedLong;->downstream:Ljava/util/stream/Sink;
Ljava/util/stream/Sink$ChainedLong;->end()V
-Ljava/util/stream/Sink$ChainedReference;
Ljava/util/stream/Sink$ChainedReference;-><init>(Ljava/util/stream/Sink;)V
Ljava/util/stream/Sink$ChainedReference;->begin(J)V
Ljava/util/stream/Sink$ChainedReference;->cancellationRequested()Z
Ljava/util/stream/Sink$ChainedReference;->downstream:Ljava/util/stream/Sink;
Ljava/util/stream/Sink$ChainedReference;->end()V
-Ljava/util/stream/Sink$OfDouble;
Ljava/util/stream/Sink$OfDouble;->accept(Ljava/lang/Double;)V
-Ljava/util/stream/Sink$OfInt;
Ljava/util/stream/Sink$OfInt;->accept(Ljava/lang/Integer;)V
-Ljava/util/stream/Sink$OfLong;
Ljava/util/stream/Sink$OfLong;->accept(Ljava/lang/Long;)V
-Ljava/util/stream/Sink;
Ljava/util/stream/Sink;->accept(D)V
Ljava/util/stream/Sink;->accept(I)V
Ljava/util/stream/Sink;->accept(J)V
Ljava/util/stream/Sink;->begin(J)V
Ljava/util/stream/Sink;->cancellationRequested()Z
Ljava/util/stream/Sink;->end()V
-Ljava/util/stream/SpinedBuffer$OfDouble;
Ljava/util/stream/SpinedBuffer$OfDouble;-><init>()V
Ljava/util/stream/SpinedBuffer$OfDouble;-><init>(I)V
Ljava/util/stream/SpinedBuffer$OfDouble;->arrayForEach([DIILjava/util/function/DoubleConsumer;)V
@@ -119130,7 +111507,6 @@
Ljava/util/stream/SpinedBuffer$OfDouble;->get(J)D
Ljava/util/stream/SpinedBuffer$OfDouble;->newArray(I)[D
Ljava/util/stream/SpinedBuffer$OfDouble;->newArrayArray(I)[[D
-Ljava/util/stream/SpinedBuffer$OfInt;
Ljava/util/stream/SpinedBuffer$OfInt;-><init>()V
Ljava/util/stream/SpinedBuffer$OfInt;-><init>(I)V
Ljava/util/stream/SpinedBuffer$OfInt;->arrayForEach([IIILjava/util/function/IntConsumer;)V
@@ -119139,7 +111515,6 @@
Ljava/util/stream/SpinedBuffer$OfInt;->get(J)I
Ljava/util/stream/SpinedBuffer$OfInt;->newArray(I)[I
Ljava/util/stream/SpinedBuffer$OfInt;->newArrayArray(I)[[I
-Ljava/util/stream/SpinedBuffer$OfLong;
Ljava/util/stream/SpinedBuffer$OfLong;-><init>()V
Ljava/util/stream/SpinedBuffer$OfLong;-><init>(I)V
Ljava/util/stream/SpinedBuffer$OfLong;->arrayForEach([JIILjava/util/function/LongConsumer;)V
@@ -119148,8 +111523,6 @@
Ljava/util/stream/SpinedBuffer$OfLong;->get(J)J
Ljava/util/stream/SpinedBuffer$OfLong;->newArray(I)[J
Ljava/util/stream/SpinedBuffer$OfLong;->newArrayArray(I)[[J
-Ljava/util/stream/SpinedBuffer$OfPrimitive$BaseSpliterator;
-Ljava/util/stream/SpinedBuffer$OfPrimitive$BaseSpliterator;-><init>(IIII)V
Ljava/util/stream/SpinedBuffer$OfPrimitive$BaseSpliterator;->arrayForOne(Ljava/lang/Object;ILjava/lang/Object;)V
Ljava/util/stream/SpinedBuffer$OfPrimitive$BaseSpliterator;->arraySpliterator(Ljava/lang/Object;II)Ljava/util/Spliterator$OfPrimitive;
Ljava/util/stream/SpinedBuffer$OfPrimitive$BaseSpliterator;->lastSpineElementFence:I
@@ -119158,7 +111531,6 @@
Ljava/util/stream/SpinedBuffer$OfPrimitive$BaseSpliterator;->splChunk:Ljava/lang/Object;
Ljava/util/stream/SpinedBuffer$OfPrimitive$BaseSpliterator;->splElementIndex:I
Ljava/util/stream/SpinedBuffer$OfPrimitive$BaseSpliterator;->splSpineIndex:I
-Ljava/util/stream/SpinedBuffer$OfPrimitive;
Ljava/util/stream/SpinedBuffer$OfPrimitive;-><init>()V
Ljava/util/stream/SpinedBuffer$OfPrimitive;-><init>(I)V
Ljava/util/stream/SpinedBuffer$OfPrimitive;->arrayForEach(Ljava/lang/Object;IILjava/lang/Object;)V
@@ -119178,7 +111550,6 @@
Ljava/util/stream/SpinedBuffer$OfPrimitive;->newArrayArray(I)[Ljava/lang/Object;
Ljava/util/stream/SpinedBuffer$OfPrimitive;->preAccept()V
Ljava/util/stream/SpinedBuffer$OfPrimitive;->spine:[Ljava/lang/Object;
-Ljava/util/stream/SpinedBuffer;
Ljava/util/stream/SpinedBuffer;-><init>()V
Ljava/util/stream/SpinedBuffer;-><init>(I)V
Ljava/util/stream/SpinedBuffer;->accept(Ljava/lang/Object;)V
@@ -119194,7 +111565,6 @@
Ljava/util/stream/SpinedBuffer;->inflateSpine()V
Ljava/util/stream/SpinedBuffer;->spine:[[Ljava/lang/Object;
Ljava/util/stream/SpinedBuffer;->SPLITERATOR_CHARACTERISTICS:I
-Ljava/util/stream/StreamOpFlag$MaskBuilder;
Ljava/util/stream/StreamOpFlag$MaskBuilder;-><init>(Ljava/util/Map;)V
Ljava/util/stream/StreamOpFlag$MaskBuilder;->build()Ljava/util/Map;
Ljava/util/stream/StreamOpFlag$MaskBuilder;->clear(Ljava/util/stream/StreamOpFlag$Type;)Ljava/util/stream/StreamOpFlag$MaskBuilder;
@@ -119202,8 +111572,6 @@
Ljava/util/stream/StreamOpFlag$MaskBuilder;->mask(Ljava/util/stream/StreamOpFlag$Type;Ljava/lang/Integer;)Ljava/util/stream/StreamOpFlag$MaskBuilder;
Ljava/util/stream/StreamOpFlag$MaskBuilder;->set(Ljava/util/stream/StreamOpFlag$Type;)Ljava/util/stream/StreamOpFlag$MaskBuilder;
Ljava/util/stream/StreamOpFlag$MaskBuilder;->setAndClear(Ljava/util/stream/StreamOpFlag$Type;)Ljava/util/stream/StreamOpFlag$MaskBuilder;
-Ljava/util/stream/StreamOpFlag$Type;
-Ljava/util/stream/StreamOpFlag$Type;-><init>()V
Ljava/util/stream/StreamOpFlag$Type;->OP:Ljava/util/stream/StreamOpFlag$Type;
Ljava/util/stream/StreamOpFlag$Type;->SPLITERATOR:Ljava/util/stream/StreamOpFlag$Type;
Ljava/util/stream/StreamOpFlag$Type;->STREAM:Ljava/util/stream/StreamOpFlag$Type;
@@ -119211,8 +111579,6 @@
Ljava/util/stream/StreamOpFlag$Type;->UPSTREAM_TERMINAL_OP:Ljava/util/stream/StreamOpFlag$Type;
Ljava/util/stream/StreamOpFlag$Type;->valueOf(Ljava/lang/String;)Ljava/util/stream/StreamOpFlag$Type;
Ljava/util/stream/StreamOpFlag$Type;->values()[Ljava/util/stream/StreamOpFlag$Type;
-Ljava/util/stream/StreamOpFlag;
-Ljava/util/stream/StreamOpFlag;-><init>(ILjava/util/stream/StreamOpFlag$MaskBuilder;)V
Ljava/util/stream/StreamOpFlag;->bitPosition:I
Ljava/util/stream/StreamOpFlag;->canSet(Ljava/util/stream/StreamOpFlag$Type;)Z
Ljava/util/stream/StreamOpFlag;->clear()I
@@ -119262,8 +111628,6 @@
Ljava/util/stream/StreamOpFlag;->UPSTREAM_TERMINAL_OP_MASK:I
Ljava/util/stream/StreamOpFlag;->valueOf(Ljava/lang/String;)Ljava/util/stream/StreamOpFlag;
Ljava/util/stream/StreamOpFlag;->values()[Ljava/util/stream/StreamOpFlag;
-Ljava/util/stream/StreamShape;
-Ljava/util/stream/StreamShape;-><init>()V
Ljava/util/stream/StreamShape;->DOUBLE_VALUE:Ljava/util/stream/StreamShape;
Ljava/util/stream/StreamShape;->INT_VALUE:Ljava/util/stream/StreamShape;
Ljava/util/stream/StreamShape;->LONG_VALUE:Ljava/util/stream/StreamShape;
@@ -119271,7 +111635,6 @@
Ljava/util/stream/StreamShape;->valueOf(Ljava/lang/String;)Ljava/util/stream/StreamShape;
Ljava/util/stream/StreamShape;->values()[Ljava/util/stream/StreamShape;
Ljava/util/stream/StreamSupport;-><init>()V
-Ljava/util/stream/TerminalOp;
Ljava/util/stream/TerminalOp;->evaluateParallel(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Object;
Ljava/util/stream/TerminalOp;->evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Object;
Ljava/util/stream/TerminalOp;->getOpFlags()I
@@ -119296,7 +111659,6 @@
Ljava/util/StringTokenizer;->setMaxDelimCodePoint()V
Ljava/util/StringTokenizer;->skipDelimiters(I)I
Ljava/util/StringTokenizer;->str:Ljava/lang/String;
-Ljava/util/TaskQueue;
Ljava/util/TaskQueue;-><init>()V
Ljava/util/TaskQueue;->add(Ljava/util/TimerTask;)V
Ljava/util/TaskQueue;->clear()V
@@ -119325,12 +111687,10 @@
Ljava/util/TimerTask;->SCHEDULED:I
Ljava/util/TimerTask;->state:I
Ljava/util/TimerTask;->VIRGIN:I
-Ljava/util/TimerThread;
Ljava/util/TimerThread;-><init>(Ljava/util/TaskQueue;)V
Ljava/util/TimerThread;->mainLoop()V
Ljava/util/TimerThread;->newTasksMayBeScheduled:Z
Ljava/util/TimerThread;->queue:Ljava/util/TaskQueue;
-Ljava/util/TimeZone$NoImagePreloadHolder;
Ljava/util/TimeZone$NoImagePreloadHolder;-><init>()V
Ljava/util/TimeZone$NoImagePreloadHolder;->CUSTOM_ZONE_ID_PATTERN:Ljava/util/regex/Pattern;
Ljava/util/TimeZone;->appendNumber(Ljava/lang/StringBuilder;II)V
@@ -119345,9 +111705,6 @@
Ljava/util/TimeZone;->ID:Ljava/lang/String;
Ljava/util/TimeZone;->NO_TIMEZONE:Ljava/util/TimeZone;
Ljava/util/TimeZone;->UTC:Ljava/util/TimeZone;
-Ljava/util/TreeMap$AscendingSubMap$AscendingEntrySetView;
-Ljava/util/TreeMap$AscendingSubMap$AscendingEntrySetView;-><init>()V
-Ljava/util/TreeMap$AscendingSubMap;
Ljava/util/TreeMap$AscendingSubMap;-><init>(Ljava/util/TreeMap;ZLjava/lang/Object;ZZLjava/lang/Object;Z)V
Ljava/util/TreeMap$AscendingSubMap;->descendingKeyIterator()Ljava/util/Iterator;
Ljava/util/TreeMap$AscendingSubMap;->keyIterator()Ljava/util/Iterator;
@@ -119358,15 +111715,9 @@
Ljava/util/TreeMap$AscendingSubMap;->subHighest()Ljava/util/TreeMap$TreeMapEntry;
Ljava/util/TreeMap$AscendingSubMap;->subLower(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
Ljava/util/TreeMap$AscendingSubMap;->subLowest()Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$DescendingKeyIterator;
-Ljava/util/TreeMap$DescendingKeyIterator;-><init>(Ljava/util/TreeMap$TreeMapEntry;)V
-Ljava/util/TreeMap$DescendingKeySpliterator;
Ljava/util/TreeMap$DescendingKeySpliterator;-><init>(Ljava/util/TreeMap;Ljava/util/TreeMap$TreeMapEntry;Ljava/util/TreeMap$TreeMapEntry;III)V
Ljava/util/TreeMap$DescendingKeySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
Ljava/util/TreeMap$DescendingKeySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/TreeMap$DescendingSubMap$DescendingEntrySetView;
-Ljava/util/TreeMap$DescendingSubMap$DescendingEntrySetView;-><init>()V
-Ljava/util/TreeMap$DescendingSubMap;
Ljava/util/TreeMap$DescendingSubMap;-><init>(Ljava/util/TreeMap;ZLjava/lang/Object;ZZLjava/lang/Object;Z)V
Ljava/util/TreeMap$DescendingSubMap;->descendingKeyIterator()Ljava/util/Iterator;
Ljava/util/TreeMap$DescendingSubMap;->keyIterator()Ljava/util/Iterator;
@@ -119378,37 +111729,18 @@
Ljava/util/TreeMap$DescendingSubMap;->subHighest()Ljava/util/TreeMap$TreeMapEntry;
Ljava/util/TreeMap$DescendingSubMap;->subLower(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
Ljava/util/TreeMap$DescendingSubMap;->subLowest()Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$EntryIterator;
-Ljava/util/TreeMap$EntryIterator;-><init>(Ljava/util/TreeMap$TreeMapEntry;)V
-Ljava/util/TreeMap$EntrySet;
-Ljava/util/TreeMap$EntrySet;-><init>()V
-Ljava/util/TreeMap$EntrySpliterator;
Ljava/util/TreeMap$EntrySpliterator;-><init>(Ljava/util/TreeMap;Ljava/util/TreeMap$TreeMapEntry;Ljava/util/TreeMap$TreeMapEntry;III)V
Ljava/util/TreeMap$EntrySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
Ljava/util/TreeMap$EntrySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/TreeMap$KeyIterator;
-Ljava/util/TreeMap$KeyIterator;-><init>(Ljava/util/TreeMap$TreeMapEntry;)V
-Ljava/util/TreeMap$KeySet;
Ljava/util/TreeMap$KeySet;-><init>(Ljava/util/NavigableMap;)V
Ljava/util/TreeMap$KeySet;->m:Ljava/util/NavigableMap;
-Ljava/util/TreeMap$KeySpliterator;
Ljava/util/TreeMap$KeySpliterator;-><init>(Ljava/util/TreeMap;Ljava/util/TreeMap$TreeMapEntry;Ljava/util/TreeMap$TreeMapEntry;III)V
Ljava/util/TreeMap$KeySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
Ljava/util/TreeMap$KeySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/TreeMap$NavigableSubMap$DescendingSubMapEntryIterator;
-Ljava/util/TreeMap$NavigableSubMap$DescendingSubMapEntryIterator;-><init>(Ljava/util/TreeMap$TreeMapEntry;Ljava/util/TreeMap$TreeMapEntry;)V
-Ljava/util/TreeMap$NavigableSubMap$DescendingSubMapKeyIterator;
-Ljava/util/TreeMap$NavigableSubMap$DescendingSubMapKeyIterator;-><init>(Ljava/util/TreeMap$TreeMapEntry;Ljava/util/TreeMap$TreeMapEntry;)V
Ljava/util/TreeMap$NavigableSubMap$DescendingSubMapKeyIterator;->forEachRemaining(Ljava/util/function/Consumer;)V
Ljava/util/TreeMap$NavigableSubMap$DescendingSubMapKeyIterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/TreeMap$NavigableSubMap$EntrySetView;
-Ljava/util/TreeMap$NavigableSubMap$EntrySetView;-><init>()V
Ljava/util/TreeMap$NavigableSubMap$EntrySetView;->size:I
Ljava/util/TreeMap$NavigableSubMap$EntrySetView;->sizeModCount:I
-Ljava/util/TreeMap$NavigableSubMap$SubMapEntryIterator;
-Ljava/util/TreeMap$NavigableSubMap$SubMapEntryIterator;-><init>(Ljava/util/TreeMap$TreeMapEntry;Ljava/util/TreeMap$TreeMapEntry;)V
-Ljava/util/TreeMap$NavigableSubMap$SubMapIterator;
-Ljava/util/TreeMap$NavigableSubMap$SubMapIterator;-><init>(Ljava/util/TreeMap$TreeMapEntry;Ljava/util/TreeMap$TreeMapEntry;)V
Ljava/util/TreeMap$NavigableSubMap$SubMapIterator;->expectedModCount:I
Ljava/util/TreeMap$NavigableSubMap$SubMapIterator;->fenceKey:Ljava/lang/Object;
Ljava/util/TreeMap$NavigableSubMap$SubMapIterator;->lastReturned:Ljava/util/TreeMap$TreeMapEntry;
@@ -119417,11 +111749,8 @@
Ljava/util/TreeMap$NavigableSubMap$SubMapIterator;->prevEntry()Ljava/util/TreeMap$TreeMapEntry;
Ljava/util/TreeMap$NavigableSubMap$SubMapIterator;->removeAscending()V
Ljava/util/TreeMap$NavigableSubMap$SubMapIterator;->removeDescending()V
-Ljava/util/TreeMap$NavigableSubMap$SubMapKeyIterator;
-Ljava/util/TreeMap$NavigableSubMap$SubMapKeyIterator;-><init>(Ljava/util/TreeMap$TreeMapEntry;Ljava/util/TreeMap$TreeMapEntry;)V
Ljava/util/TreeMap$NavigableSubMap$SubMapKeyIterator;->forEachRemaining(Ljava/util/function/Consumer;)V
Ljava/util/TreeMap$NavigableSubMap$SubMapKeyIterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/TreeMap$NavigableSubMap;
Ljava/util/TreeMap$NavigableSubMap;-><init>(Ljava/util/TreeMap;ZLjava/lang/Object;ZZLjava/lang/Object;Z)V
Ljava/util/TreeMap$NavigableSubMap;->absCeiling(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
Ljava/util/TreeMap$NavigableSubMap;->absFloor(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
@@ -119455,20 +111784,15 @@
Ljava/util/TreeMap$NavigableSubMap;->toEnd:Z
Ljava/util/TreeMap$NavigableSubMap;->tooHigh(Ljava/lang/Object;)Z
Ljava/util/TreeMap$NavigableSubMap;->tooLow(Ljava/lang/Object;)Z
-Ljava/util/TreeMap$PrivateEntryIterator;
-Ljava/util/TreeMap$PrivateEntryIterator;-><init>(Ljava/util/TreeMap$TreeMapEntry;)V
Ljava/util/TreeMap$PrivateEntryIterator;->expectedModCount:I
Ljava/util/TreeMap$PrivateEntryIterator;->lastReturned:Ljava/util/TreeMap$TreeMapEntry;
Ljava/util/TreeMap$PrivateEntryIterator;->next:Ljava/util/TreeMap$TreeMapEntry;
Ljava/util/TreeMap$PrivateEntryIterator;->nextEntry()Ljava/util/TreeMap$TreeMapEntry;
Ljava/util/TreeMap$PrivateEntryIterator;->prevEntry()Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$SubMap;
-Ljava/util/TreeMap$SubMap;-><init>()V
Ljava/util/TreeMap$SubMap;->fromKey:Ljava/lang/Object;
Ljava/util/TreeMap$SubMap;->fromStart:Z
Ljava/util/TreeMap$SubMap;->toEnd:Z
Ljava/util/TreeMap$SubMap;->toKey:Ljava/lang/Object;
-Ljava/util/TreeMap$TreeMapEntry;
Ljava/util/TreeMap$TreeMapEntry;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/util/TreeMap$TreeMapEntry;)V
Ljava/util/TreeMap$TreeMapEntry;->color:Z
Ljava/util/TreeMap$TreeMapEntry;->key:Ljava/lang/Object;
@@ -119476,7 +111800,6 @@
Ljava/util/TreeMap$TreeMapEntry;->parent:Ljava/util/TreeMap$TreeMapEntry;
Ljava/util/TreeMap$TreeMapEntry;->right:Ljava/util/TreeMap$TreeMapEntry;
Ljava/util/TreeMap$TreeMapEntry;->value:Ljava/lang/Object;
-Ljava/util/TreeMap$TreeMapSpliterator;
Ljava/util/TreeMap$TreeMapSpliterator;-><init>(Ljava/util/TreeMap;Ljava/util/TreeMap$TreeMapEntry;Ljava/util/TreeMap$TreeMapEntry;III)V
Ljava/util/TreeMap$TreeMapSpliterator;->current:Ljava/util/TreeMap$TreeMapEntry;
Ljava/util/TreeMap$TreeMapSpliterator;->est:I
@@ -119486,11 +111809,6 @@
Ljava/util/TreeMap$TreeMapSpliterator;->getEstimate()I
Ljava/util/TreeMap$TreeMapSpliterator;->side:I
Ljava/util/TreeMap$TreeMapSpliterator;->tree:Ljava/util/TreeMap;
-Ljava/util/TreeMap$ValueIterator;
-Ljava/util/TreeMap$ValueIterator;-><init>(Ljava/util/TreeMap$TreeMapEntry;)V
-Ljava/util/TreeMap$Values;
-Ljava/util/TreeMap$Values;-><init>()V
-Ljava/util/TreeMap$ValueSpliterator;
Ljava/util/TreeMap$ValueSpliterator;-><init>(Ljava/util/TreeMap;Ljava/util/TreeMap$TreeMapEntry;Ljava/util/TreeMap$TreeMapEntry;III)V
Ljava/util/TreeMap$ValueSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
Ljava/util/TreeMap$ValueSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
@@ -119544,21 +111862,15 @@
Ljava/util/TreeSet;->PRESENT:Ljava/lang/Object;
Ljava/util/UnknownFormatConversionException;->s:Ljava/lang/String;
Ljava/util/UnknownFormatFlagsException;->flags:Ljava/lang/String;
-Ljava/util/UUID$Holder;
Ljava/util/UUID$Holder;-><init>()V
Ljava/util/UUID$Holder;->numberGenerator:Ljava/security/SecureRandom;
Ljava/util/UUID;-><init>([B)V
Ljava/util/UUID;->digits(JI)Ljava/lang/String;
-Ljava/util/Vector$Itr;
-Ljava/util/Vector$Itr;-><init>()V
Ljava/util/Vector$Itr;->checkForComodification()V
Ljava/util/Vector$Itr;->cursor:I
Ljava/util/Vector$Itr;->expectedModCount:I
Ljava/util/Vector$Itr;->lastRet:I
Ljava/util/Vector$Itr;->limit:I
-Ljava/util/Vector$ListItr;
-Ljava/util/Vector$ListItr;-><init>(I)V
-Ljava/util/Vector$VectorSpliterator;
Ljava/util/Vector$VectorSpliterator;-><init>(Ljava/util/Vector;[Ljava/lang/Object;III)V
Ljava/util/Vector$VectorSpliterator;->array:[Ljava/lang/Object;
Ljava/util/Vector$VectorSpliterator;->expectedModCount:I
@@ -119572,22 +111884,14 @@
Ljava/util/Vector;->grow(I)V
Ljava/util/Vector;->hugeCapacity(I)I
Ljava/util/Vector;->MAX_ARRAY_SIZE:I
-Ljava/util/WeakHashMap$Entry;
Ljava/util/WeakHashMap$Entry;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;ILjava/util/WeakHashMap$Entry;)V
Ljava/util/WeakHashMap$Entry;->hash:I
Ljava/util/WeakHashMap$Entry;->next:Ljava/util/WeakHashMap$Entry;
Ljava/util/WeakHashMap$Entry;->value:Ljava/lang/Object;
-Ljava/util/WeakHashMap$EntryIterator;
-Ljava/util/WeakHashMap$EntryIterator;-><init>()V
-Ljava/util/WeakHashMap$EntrySet;
-Ljava/util/WeakHashMap$EntrySet;-><init>()V
Ljava/util/WeakHashMap$EntrySet;->deepCopy()Ljava/util/List;
-Ljava/util/WeakHashMap$EntrySpliterator;
Ljava/util/WeakHashMap$EntrySpliterator;-><init>(Ljava/util/WeakHashMap;IIII)V
Ljava/util/WeakHashMap$EntrySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
Ljava/util/WeakHashMap$EntrySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/WeakHashMap$HashIterator;
-Ljava/util/WeakHashMap$HashIterator;-><init>()V
Ljava/util/WeakHashMap$HashIterator;->currentKey:Ljava/lang/Object;
Ljava/util/WeakHashMap$HashIterator;->entry:Ljava/util/WeakHashMap$Entry;
Ljava/util/WeakHashMap$HashIterator;->expectedModCount:I
@@ -119595,23 +111899,12 @@
Ljava/util/WeakHashMap$HashIterator;->lastReturned:Ljava/util/WeakHashMap$Entry;
Ljava/util/WeakHashMap$HashIterator;->nextEntry()Ljava/util/WeakHashMap$Entry;
Ljava/util/WeakHashMap$HashIterator;->nextKey:Ljava/lang/Object;
-Ljava/util/WeakHashMap$KeyIterator;
-Ljava/util/WeakHashMap$KeyIterator;-><init>()V
-Ljava/util/WeakHashMap$KeySet;
-Ljava/util/WeakHashMap$KeySet;-><init>()V
-Ljava/util/WeakHashMap$KeySpliterator;
Ljava/util/WeakHashMap$KeySpliterator;-><init>(Ljava/util/WeakHashMap;IIII)V
Ljava/util/WeakHashMap$KeySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
Ljava/util/WeakHashMap$KeySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/WeakHashMap$ValueIterator;
-Ljava/util/WeakHashMap$ValueIterator;-><init>()V
-Ljava/util/WeakHashMap$Values;
-Ljava/util/WeakHashMap$Values;-><init>()V
-Ljava/util/WeakHashMap$ValueSpliterator;
Ljava/util/WeakHashMap$ValueSpliterator;-><init>(Ljava/util/WeakHashMap;IIII)V
Ljava/util/WeakHashMap$ValueSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
Ljava/util/WeakHashMap$ValueSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/WeakHashMap$WeakHashMapSpliterator;
Ljava/util/WeakHashMap$WeakHashMapSpliterator;-><init>(Ljava/util/WeakHashMap;IIII)V
Ljava/util/WeakHashMap$WeakHashMapSpliterator;->current:Ljava/util/WeakHashMap$Entry;
Ljava/util/WeakHashMap$WeakHashMapSpliterator;->est:I
@@ -119712,7 +112005,6 @@
Ljava/util/zip/InflaterOutputStream;->ensureOpen()V
Ljava/util/zip/InflaterOutputStream;->usesDefaultInflater:Z
Ljava/util/zip/InflaterOutputStream;->wbuf:[B
-Ljava/util/zip/ZipCoder;
Ljava/util/zip/ZipCoder;-><init>(Ljava/nio/charset/Charset;)V
Ljava/util/zip/ZipCoder;->cs:Ljava/nio/charset/Charset;
Ljava/util/zip/ZipCoder;->dec:Ljava/nio/charset/CharsetDecoder;
@@ -119728,7 +112020,6 @@
Ljava/util/zip/ZipCoder;->toString([BI)Ljava/lang/String;
Ljava/util/zip/ZipCoder;->toStringUTF8([BI)Ljava/lang/String;
Ljava/util/zip/ZipCoder;->utf8:Ljava/util/zip/ZipCoder;
-Ljava/util/zip/ZipConstants;
Ljava/util/zip/ZipEntry;-><init>()V
Ljava/util/zip/ZipEntry;->atime:Ljava/nio/file/attribute/FileTime;
Ljava/util/zip/ZipEntry;->comment:Ljava/lang/String;
@@ -119746,16 +112037,10 @@
Ljava/util/zip/ZipEntry;->size:J
Ljava/util/zip/ZipEntry;->UPPER_DOSTIME_BOUND:J
Ljava/util/zip/ZipEntry;->xdostime:J
-Ljava/util/zip/ZipFile$ZipEntryIterator;
-Ljava/util/zip/ZipFile$ZipEntryIterator;-><init>()V
Ljava/util/zip/ZipFile$ZipEntryIterator;->i:I
-Ljava/util/zip/ZipFile$ZipFileInflaterInputStream;
-Ljava/util/zip/ZipFile$ZipFileInflaterInputStream;-><init>(Ljava/util/zip/ZipFile$ZipFileInputStream;Ljava/util/zip/Inflater;I)V
Ljava/util/zip/ZipFile$ZipFileInflaterInputStream;->closeRequested:Z
Ljava/util/zip/ZipFile$ZipFileInflaterInputStream;->eof:Z
Ljava/util/zip/ZipFile$ZipFileInflaterInputStream;->zfin:Ljava/util/zip/ZipFile$ZipFileInputStream;
-Ljava/util/zip/ZipFile$ZipFileInputStream;
-Ljava/util/zip/ZipFile$ZipFileInputStream;-><init>(J)V
Ljava/util/zip/ZipFile$ZipFileInputStream;->jzentry:J
Ljava/util/zip/ZipFile$ZipFileInputStream;->pos:J
Ljava/util/zip/ZipFile$ZipFileInputStream;->rem:J
@@ -119813,7 +112098,6 @@
Ljava/util/zip/ZipInputStream;->remaining:J
Ljava/util/zip/ZipInputStream;->STORED:I
Ljava/util/zip/ZipInputStream;->zc:Ljava/util/zip/ZipCoder;
-Ljava/util/zip/ZipOutputStream$XEntry;
Ljava/util/zip/ZipOutputStream$XEntry;-><init>(Ljava/util/zip/ZipEntry;J)V
Ljava/util/zip/ZipOutputStream$XEntry;->entry:Ljava/util/zip/ZipEntry;
Ljava/util/zip/ZipOutputStream$XEntry;->offset:J
@@ -119839,16 +112123,13 @@
Ljava/util/zip/ZipOutputStream;->writeShort(I)V
Ljava/util/zip/ZipOutputStream;->xentries:Ljava/util/Vector;
Ljava/util/zip/ZipOutputStream;->zc:Ljava/util/zip/ZipCoder;
-Ljava/util/zip/ZStreamRef;
Ljava/util/zip/ZStreamRef;-><init>(J)V
Ljava/util/zip/ZStreamRef;->address()J
Ljava/util/zip/ZStreamRef;->address:J
Ljava/util/zip/ZStreamRef;->clear()V
-Ljavax/crypto/Cipher$CipherSpiAndProvider;
Ljavax/crypto/Cipher$CipherSpiAndProvider;-><init>(Ljavax/crypto/CipherSpi;Ljava/security/Provider;)V
Ljavax/crypto/Cipher$CipherSpiAndProvider;->cipherSpi:Ljavax/crypto/CipherSpi;
Ljavax/crypto/Cipher$CipherSpiAndProvider;->provider:Ljava/security/Provider;
-Ljavax/crypto/Cipher$InitParams;
Ljavax/crypto/Cipher$InitParams;-><init>(Ljavax/crypto/Cipher$InitType;ILjava/security/Key;Ljava/security/SecureRandom;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/AlgorithmParameters;)V
Ljavax/crypto/Cipher$InitParams;->initType:Ljavax/crypto/Cipher$InitType;
Ljavax/crypto/Cipher$InitParams;->key:Ljava/security/Key;
@@ -119856,23 +112137,17 @@
Ljavax/crypto/Cipher$InitParams;->params:Ljava/security/AlgorithmParameters;
Ljavax/crypto/Cipher$InitParams;->random:Ljava/security/SecureRandom;
Ljavax/crypto/Cipher$InitParams;->spec:Ljava/security/spec/AlgorithmParameterSpec;
-Ljavax/crypto/Cipher$InitType;
-Ljavax/crypto/Cipher$InitType;-><init>()V
Ljavax/crypto/Cipher$InitType;->ALGORITHM_PARAMS:Ljavax/crypto/Cipher$InitType;
Ljavax/crypto/Cipher$InitType;->ALGORITHM_PARAM_SPEC:Ljavax/crypto/Cipher$InitType;
Ljavax/crypto/Cipher$InitType;->KEY:Ljavax/crypto/Cipher$InitType;
Ljavax/crypto/Cipher$InitType;->valueOf(Ljava/lang/String;)Ljavax/crypto/Cipher$InitType;
Ljavax/crypto/Cipher$InitType;->values()[Ljavax/crypto/Cipher$InitType;
-Ljavax/crypto/Cipher$NeedToSet;
-Ljavax/crypto/Cipher$NeedToSet;-><init>()V
Ljavax/crypto/Cipher$NeedToSet;->BOTH:Ljavax/crypto/Cipher$NeedToSet;
Ljavax/crypto/Cipher$NeedToSet;->MODE:Ljavax/crypto/Cipher$NeedToSet;
Ljavax/crypto/Cipher$NeedToSet;->NONE:Ljavax/crypto/Cipher$NeedToSet;
Ljavax/crypto/Cipher$NeedToSet;->PADDING:Ljavax/crypto/Cipher$NeedToSet;
Ljavax/crypto/Cipher$NeedToSet;->valueOf(Ljava/lang/String;)Ljavax/crypto/Cipher$NeedToSet;
Ljavax/crypto/Cipher$NeedToSet;->values()[Ljavax/crypto/Cipher$NeedToSet;
-Ljavax/crypto/Cipher$SpiAndProviderUpdater;
-Ljavax/crypto/Cipher$SpiAndProviderUpdater;-><init>(Ljava/security/Provider;Ljavax/crypto/CipherSpi;)V
Ljavax/crypto/Cipher$SpiAndProviderUpdater;->getCurrentSpi(Ljavax/crypto/CipherSpi;)Ljavax/crypto/CipherSpi;
Ljavax/crypto/Cipher$SpiAndProviderUpdater;->initSpiLock:Ljava/lang/Object;
Ljavax/crypto/Cipher$SpiAndProviderUpdater;->setCipherSpiImplAndProvider(Ljavax/crypto/CipherSpi;Ljava/security/Provider;)V
@@ -119880,7 +112155,6 @@
Ljavax/crypto/Cipher$SpiAndProviderUpdater;->specifiedSpi:Ljavax/crypto/CipherSpi;
Ljavax/crypto/Cipher$SpiAndProviderUpdater;->updateAndGetSpiAndProvider(Ljavax/crypto/Cipher$InitParams;Ljavax/crypto/CipherSpi;Ljava/security/Provider;)Ljavax/crypto/Cipher$CipherSpiAndProvider;
Ljavax/crypto/Cipher$SpiAndProviderUpdater;->updateAndGetSpiAndProvider(Ljavax/crypto/CipherSpi;Ljava/security/Provider;)Ljavax/crypto/Cipher$CipherSpiAndProvider;
-Ljavax/crypto/Cipher$Transform;
Ljavax/crypto/Cipher$Transform;-><init>(Ljava/lang/String;Ljavax/crypto/Cipher$NeedToSet;)V
Ljavax/crypto/Cipher$Transform;->name:Ljava/lang/String;
Ljavax/crypto/Cipher$Transform;->needToSet:Ljavax/crypto/Cipher$NeedToSet;
@@ -120030,7 +112304,6 @@
Ljavax/net/SocketFactory;->theFactory:Ljavax/net/SocketFactory;
Ljavax/net/ssl/CertPathTrustManagerParameters;->parameters:Ljava/security/cert/CertPathParameters;
Ljavax/net/ssl/HandshakeCompletedEvent;->session:Ljavax/net/ssl/SSLSession;
-Ljavax/net/ssl/HttpsURLConnection$NoPreloadHolder;
Ljavax/net/ssl/HttpsURLConnection$NoPreloadHolder;-><init>()V
Ljavax/net/ssl/HttpsURLConnection$NoPreloadHolder;->defaultHostnameVerifier:Ljavax/net/ssl/HostnameVerifier;
Ljavax/net/ssl/HttpsURLConnection$NoPreloadHolder;->originalDefaultHostnameVerifierClass:Ljava/lang/Class;
@@ -120040,7 +112313,6 @@
Ljavax/net/ssl/KeyManagerFactory;->factorySpi:Ljavax/net/ssl/KeyManagerFactorySpi;
Ljavax/net/ssl/KeyManagerFactory;->provider:Ljava/security/Provider;
Ljavax/net/ssl/KeyStoreBuilderParameters;->parameters:Ljava/util/List;
-Ljavax/net/ssl/SNIHostName$SNIHostNameMatcher;
Ljavax/net/ssl/SNIHostName$SNIHostNameMatcher;-><init>(Ljava/lang/String;)V
Ljavax/net/ssl/SNIHostName$SNIHostNameMatcher;->pattern:Ljava/util/regex/Pattern;
Ljavax/net/ssl/SNIHostName;->checkHostName()V
@@ -120057,8 +112329,6 @@
Ljavax/net/ssl/SSLContextSpi;->getDefaultSocket()Ljavax/net/ssl/SSLSocket;
Ljavax/net/ssl/SSLEngine;->peerHost:Ljava/lang/String;
Ljavax/net/ssl/SSLEngine;->peerPort:I
-Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;-><init>()V
-Ljavax/net/ssl/SSLEngineResult$Status;-><init>()V
Ljavax/net/ssl/SSLEngineResult;->bytesConsumed:I
Ljavax/net/ssl/SSLEngineResult;->bytesProduced:I
Ljavax/net/ssl/SSLEngineResult;->handshakeStatus:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
@@ -120089,7 +112359,6 @@
Ljavax/security/auth/callback/PasswordCallback;->prompt:Ljava/lang/String;
Ljavax/security/auth/callback/UnsupportedCallbackException;->callback:Ljavax/security/auth/callback/Callback;
Ljavax/security/auth/PrivateCredentialPermission;-><init>(Ljava/lang/String;Ljava/util/Set;)V
-Ljavax/security/auth/Subject$AuthPermissionHolder;
Ljavax/security/auth/Subject$AuthPermissionHolder;-><init>()V
Ljavax/security/auth/Subject$AuthPermissionHolder;->DO_AS_PERMISSION:Ljavax/security/auth/AuthPermission;
Ljavax/security/auth/Subject$AuthPermissionHolder;->DO_AS_PRIVILEGED_PERMISSION:Ljavax/security/auth/AuthPermission;
@@ -120098,14 +112367,11 @@
Ljavax/security/auth/Subject$AuthPermissionHolder;->MODIFY_PRIVATE_CREDENTIALS_PERMISSION:Ljavax/security/auth/AuthPermission;
Ljavax/security/auth/Subject$AuthPermissionHolder;->MODIFY_PUBLIC_CREDENTIALS_PERMISSION:Ljavax/security/auth/AuthPermission;
Ljavax/security/auth/Subject$AuthPermissionHolder;->SET_READ_ONLY_PERMISSION:Ljavax/security/auth/AuthPermission;
-Ljavax/security/auth/Subject$ClassSet;
-Ljavax/security/auth/Subject$ClassSet;-><init>(ILjava/lang/Class;)V
Ljavax/security/auth/Subject$ClassSet;->add(Ljava/lang/Object;)Z
Ljavax/security/auth/Subject$ClassSet;->c:Ljava/lang/Class;
Ljavax/security/auth/Subject$ClassSet;->populateSet()V
Ljavax/security/auth/Subject$ClassSet;->set:Ljava/util/Set;
Ljavax/security/auth/Subject$ClassSet;->which:I
-Ljavax/security/auth/Subject$SecureSet;
Ljavax/security/auth/Subject$SecureSet;-><init>(Ljavax/security/auth/Subject;I)V
Ljavax/security/auth/Subject$SecureSet;-><init>(Ljavax/security/auth/Subject;ILjava/util/Set;)V
Ljavax/security/auth/Subject$SecureSet;->elements:Ljava/util/LinkedList;
@@ -120185,11 +112451,8 @@
Ljavax/xml/xpath/XPathException;->cause:Ljava/lang/Throwable;
Llibcore/util/BasicLruCache;->maxSize:I
Llibcore/util/BasicLruCache;->trimToSize(I)V
-Llibcore/util/NativeAllocationRegistry$CleanerRunner;
Llibcore/util/NativeAllocationRegistry$CleanerRunner;-><init>(Lsun/misc/Cleaner;)V
Llibcore/util/NativeAllocationRegistry$CleanerRunner;->cleaner:Lsun/misc/Cleaner;
-Llibcore/util/NativeAllocationRegistry$CleanerThunk;
-Llibcore/util/NativeAllocationRegistry$CleanerThunk;-><init>()V
Llibcore/util/NativeAllocationRegistry$CleanerThunk;->nativePtr:J
Llibcore/util/NativeAllocationRegistry$CleanerThunk;->setNativePtr(J)V
Llibcore/util/NativeAllocationRegistry;->classLoader:Ljava/lang/ClassLoader;
@@ -120197,9 +112460,7 @@
Llibcore/util/NativeAllocationRegistry;->registerNativeAllocation(J)V
Llibcore/util/NativeAllocationRegistry;->registerNativeFree(J)V
Llibcore/util/NativeAllocationRegistry;->size:J
-Llibcore/util/ZoneInfo$CheckedArithmeticException;
Llibcore/util/ZoneInfo$CheckedArithmeticException;-><init>()V
-Llibcore/util/ZoneInfo$OffsetInterval;
Llibcore/util/ZoneInfo$OffsetInterval;-><init>(IIII)V
Llibcore/util/ZoneInfo$OffsetInterval;->containsWallTime(J)Z
Llibcore/util/ZoneInfo$OffsetInterval;->create(Llibcore/util/ZoneInfo;I)Llibcore/util/ZoneInfo$OffsetInterval;
@@ -120248,15 +112509,12 @@
Llibcore/util/ZoneInfo;->UNIX_OFFSET:J
Lorg/apache/http/conn/ssl/AbstractVerifier;->IPV4_PATTERN:Ljava/util/regex/Pattern;
Lorg/apache/http/conn/ssl/AbstractVerifier;->isIPv4Address(Ljava/lang/String;)Z
-Lorg/apache/http/conn/ssl/SSLSocketFactory$NoPreloadHolder;
Lorg/apache/http/conn/ssl/SSLSocketFactory$NoPreloadHolder;-><init>()V
Lorg/apache/http/conn/ssl/SSLSocketFactory$NoPreloadHolder;->DEFAULT_FACTORY:Lorg/apache/http/conn/ssl/SSLSocketFactory;
Lorg/apache/http/params/HttpConnectionParams;-><init>()V
Lorg/ccil/cowan/tagsoup/AttributesImpl;->badIndex(I)V
Lorg/ccil/cowan/tagsoup/AttributesImpl;->ensureCapacity(I)V
Lorg/json/JSONArray;->checkedPut(Ljava/lang/Object;)V
-Lorg/json/JSONStringer$Scope;
-Lorg/json/JSONStringer$Scope;-><init>()V
Lorg/json/JSONStringer$Scope;->DANGLING_KEY:Lorg/json/JSONStringer$Scope;
Lorg/json/JSONStringer$Scope;->EMPTY_ARRAY:Lorg/json/JSONStringer$Scope;
Lorg/json/JSONStringer$Scope;->EMPTY_OBJECT:Lorg/json/JSONStringer$Scope;
@@ -120267,8 +112525,6 @@
Lorg/json/JSONStringer$Scope;->values()[Lorg/json/JSONStringer$Scope;
Lorg/w3c/dom/ls/LSSerializer;->getFilter()Lorg/w3c/dom/ls/LSSerializerFilter;
Lorg/w3c/dom/ls/LSSerializer;->setFilter(Lorg/w3c/dom/ls/LSSerializerFilter;)V
-Lorg/w3c/dom/ls/LSSerializerFilter;
-Lorg/w3c/dom/traversal/NodeFilter;
Lorg/w3c/dom/traversal/NodeFilter;->FILTER_ACCEPT:S
Lorg/w3c/dom/traversal/NodeFilter;->FILTER_REJECT:S
Lorg/w3c/dom/traversal/NodeFilter;->FILTER_SKIP:S
@@ -120285,7 +112541,6 @@
Lorg/w3c/dom/traversal/NodeFilter;->SHOW_NOTATION:I
Lorg/w3c/dom/traversal/NodeFilter;->SHOW_PROCESSING_INSTRUCTION:I
Lorg/w3c/dom/traversal/NodeFilter;->SHOW_TEXT:I
-Lorg/w3c/dom/traversal/NodeIterator;
Lorg/w3c/dom/traversal/NodeIterator;->getExpandEntityReferences()Z
Lorg/w3c/dom/traversal/NodeIterator;->getFilter()Lorg/w3c/dom/traversal/NodeFilter;
Lorg/w3c/dom/traversal/NodeIterator;->getRoot()Lorg/w3c/dom/Node;
@@ -120294,8 +112549,6 @@
Lorg/xml/sax/helpers/AttributeListImpl;->names:Ljava/util/ArrayList;
Lorg/xml/sax/helpers/AttributeListImpl;->types:Ljava/util/ArrayList;
Lorg/xml/sax/helpers/AttributeListImpl;->values:Ljava/util/ArrayList;
-Lorg/xml/sax/helpers/NamespaceSupport$Context;
-Lorg/xml/sax/helpers/NamespaceSupport$Context;-><init>()V
Lorg/xml/sax/helpers/NamespaceSupport$Context;->attributeNameTable:Ljava/util/Hashtable;
Lorg/xml/sax/helpers/NamespaceSupport$Context;->clear()V
Lorg/xml/sax/helpers/NamespaceSupport$Context;->copyTables()V
@@ -120314,8 +112567,6 @@
Lorg/xml/sax/helpers/NamespaceSupport$Context;->processName(Ljava/lang/String;Z)[Ljava/lang/String;
Lorg/xml/sax/helpers/NamespaceSupport$Context;->setParent(Lorg/xml/sax/helpers/NamespaceSupport$Context;)V
Lorg/xml/sax/helpers/NamespaceSupport$Context;->uriTable:Ljava/util/Hashtable;
-Lorg/xml/sax/helpers/ParserAdapter$AttributeListAdapter;
-Lorg/xml/sax/helpers/ParserAdapter$AttributeListAdapter;-><init>()V
Lorg/xml/sax/helpers/ParserAdapter$AttributeListAdapter;->qAtts:Lorg/xml/sax/AttributeList;
Lorg/xml/sax/helpers/ParserAdapter$AttributeListAdapter;->setAttributeList(Lorg/xml/sax/AttributeList;)V
Lorg/xml/sax/helpers/ParserAdapter;->FEATURES:Ljava/lang/String;
@@ -120323,7 +112574,6 @@
Lorg/xml/sax/helpers/ParserAdapter;->NAMESPACE_PREFIXES:Ljava/lang/String;
Lorg/xml/sax/helpers/ParserAdapter;->XMLNS_URIs:Ljava/lang/String;
Lorg/xml/sax/helpers/ParserFactory;-><init>()V
-Lorg/xml/sax/helpers/XMLReaderAdapter$AttributesAdapter;
Lorg/xml/sax/helpers/XMLReaderAdapter$AttributesAdapter;-><init>()V
Lorg/xml/sax/helpers/XMLReaderAdapter$AttributesAdapter;->attributes:Lorg/xml/sax/Attributes;
Lorg/xml/sax/helpers/XMLReaderAdapter$AttributesAdapter;->setAttributes(Lorg/xml/sax/Attributes;)V
@@ -120359,12 +112609,10 @@
Lsun/misc/Unsafe;-><init>()V
Lsun/misc/Unsafe;->getArrayBaseOffsetForComponentType(Ljava/lang/Class;)I
Lsun/misc/Unsafe;->getArrayIndexScaleForComponentType(Ljava/lang/Class;)I
-Lsun/misc/URLClassPath$FileLoader;
Lsun/misc/URLClassPath$FileLoader;-><init>(Ljava/net/URL;)V
Lsun/misc/URLClassPath$FileLoader;->dir:Ljava/io/File;
Lsun/misc/URLClassPath$FileLoader;->findResource(Ljava/lang/String;Z)Ljava/net/URL;
Lsun/misc/URLClassPath$FileLoader;->getResource(Ljava/lang/String;Z)Lsun/misc/Resource;
-Lsun/misc/URLClassPath$JarLoader;
Lsun/misc/URLClassPath$JarLoader;-><init>(Ljava/net/URL;Ljava/net/URLStreamHandler;Ljava/util/HashMap;Ljava/security/AccessControlContext;)V
Lsun/misc/URLClassPath$JarLoader;->acc:Ljava/security/AccessControlContext;
Lsun/misc/URLClassPath$JarLoader;->checkJar(Ljava/util/jar/JarFile;)Ljava/util/jar/JarFile;
@@ -120387,7 +112635,6 @@
Lsun/misc/URLClassPath$JarLoader;->parseClassPath(Ljava/net/URL;Ljava/lang/String;)[Ljava/net/URL;
Lsun/misc/URLClassPath$JarLoader;->parseExtensionsDependencies()V
Lsun/misc/URLClassPath$JarLoader;->validIndex(Ljava/lang/String;)Z
-Lsun/misc/URLClassPath$Loader;
Lsun/misc/URLClassPath$Loader;-><init>(Ljava/net/URL;)V
Lsun/misc/URLClassPath$Loader;->base:Ljava/net/URL;
Lsun/misc/URLClassPath$Loader;->findResource(Ljava/lang/String;Z)Ljava/net/URL;
@@ -120436,10 +112683,8 @@
Lsun/security/pkcs/ContentInfo;->sdata:[I
Lsun/security/pkcs/ContentInfo;->sedata:[I
Lsun/security/pkcs/ContentInfo;->tstInfo:[I
-Lsun/security/pkcs/PKCS7$VerbatimX509Certificate;
Lsun/security/pkcs/PKCS7$VerbatimX509Certificate;-><init>(Ljava/security/cert/X509Certificate;[B)V
Lsun/security/pkcs/PKCS7$VerbatimX509Certificate;->encodedVerbatim:[B
-Lsun/security/pkcs/PKCS7$WrappedX509Certificate;
Lsun/security/pkcs/PKCS7$WrappedX509Certificate;-><init>(Ljava/security/cert/X509Certificate;)V
Lsun/security/pkcs/PKCS7$WrappedX509Certificate;->wrapped:Ljava/security/cert/X509Certificate;
Lsun/security/pkcs/PKCS7;->certificates:[Ljava/security/cert/X509Certificate;
@@ -120518,7 +112763,6 @@
Lsun/security/util/Debug;->hexDigits:[C
Lsun/security/util/Debug;->marshal(Ljava/lang/String;)Ljava/lang/String;
Lsun/security/util/Debug;->prefix:Ljava/lang/String;
-Lsun/security/util/DerInputBuffer;
Lsun/security/util/DerInputBuffer;-><init>([B)V
Lsun/security/util/DerInputBuffer;-><init>([BII)V
Lsun/security/util/DerInputBuffer;->dup()Lsun/security/util/DerInputBuffer;
@@ -120558,8 +112802,6 @@
Lsun/security/util/DerValue;->isPrivate()Z
Lsun/security/util/DerValue;->length:I
Lsun/security/util/DerValue;->originalEncodedForm:[B
-Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;
-Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;-><init>()V
Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;->EQ:Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;
Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;->GE:Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;
Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;->GT:Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;
@@ -120569,23 +112811,19 @@
Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;->of(Ljava/lang/String;)Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;
Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;->valueOf(Ljava/lang/String;)Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;
Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;->values()[Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;
-Lsun/security/util/DisabledAlgorithmConstraints$Constraint;
Lsun/security/util/DisabledAlgorithmConstraints$Constraint;-><init>()V
Lsun/security/util/DisabledAlgorithmConstraints$Constraint;->algorithm:Ljava/lang/String;
Lsun/security/util/DisabledAlgorithmConstraints$Constraint;->nextConstraint:Lsun/security/util/DisabledAlgorithmConstraints$Constraint;
Lsun/security/util/DisabledAlgorithmConstraints$Constraint;->permits(Ljava/security/Key;)Z
Lsun/security/util/DisabledAlgorithmConstraints$Constraint;->permits(Lsun/security/util/CertConstraintParameters;)V
-Lsun/security/util/DisabledAlgorithmConstraints$Constraints;
Lsun/security/util/DisabledAlgorithmConstraints$Constraints;-><init>([Ljava/lang/String;)V
Lsun/security/util/DisabledAlgorithmConstraints$Constraints;->constraintsMap:Ljava/util/Map;
Lsun/security/util/DisabledAlgorithmConstraints$Constraints;->getConstraints(Ljava/lang/String;)Ljava/util/Set;
Lsun/security/util/DisabledAlgorithmConstraints$Constraints;->keySizePattern:Ljava/util/regex/Pattern;
Lsun/security/util/DisabledAlgorithmConstraints$Constraints;->permits(Ljava/security/Key;)Z
Lsun/security/util/DisabledAlgorithmConstraints$Constraints;->permits(Lsun/security/util/CertConstraintParameters;)V
-Lsun/security/util/DisabledAlgorithmConstraints$jdkCAConstraint;
Lsun/security/util/DisabledAlgorithmConstraints$jdkCAConstraint;-><init>(Ljava/lang/String;)V
Lsun/security/util/DisabledAlgorithmConstraints$jdkCAConstraint;->permits(Lsun/security/util/CertConstraintParameters;)V
-Lsun/security/util/DisabledAlgorithmConstraints$KeySizeConstraint;
Lsun/security/util/DisabledAlgorithmConstraints$KeySizeConstraint;-><init>(Ljava/lang/String;Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;I)V
Lsun/security/util/DisabledAlgorithmConstraints$KeySizeConstraint;->maxSize:I
Lsun/security/util/DisabledAlgorithmConstraints$KeySizeConstraint;->minSize:I
@@ -120604,7 +112842,6 @@
Lsun/security/util/ManifestDigester$Entry;->offset:I
Lsun/security/util/ManifestDigester$Entry;->oldStyle:Z
Lsun/security/util/ManifestDigester$Entry;->rawBytes:[B
-Lsun/security/util/ManifestDigester$Position;
Lsun/security/util/ManifestDigester$Position;-><init>()V
Lsun/security/util/ManifestDigester$Position;->endOfFirstLine:I
Lsun/security/util/ManifestDigester$Position;->endOfSection:I
@@ -120613,7 +112850,6 @@
Lsun/security/util/ManifestDigester;->findSection(ILsun/security/util/ManifestDigester$Position;)Z
Lsun/security/util/ManifestDigester;->isNameAttr([BI)Z
Lsun/security/util/ManifestDigester;->rawBytes:[B
-Lsun/security/util/ManifestEntryVerifier$SunProviderHolder;
Lsun/security/util/ManifestEntryVerifier$SunProviderHolder;-><init>()V
Lsun/security/util/ManifestEntryVerifier$SunProviderHolder;->instance:Ljava/security/Provider;
Lsun/security/util/ManifestEntryVerifier;->createdDigests:Ljava/util/HashMap;
@@ -120627,7 +112863,6 @@
Lsun/security/util/ManifestEntryVerifier;->signers:[Ljava/security/CodeSigner;
Lsun/security/util/ManifestEntryVerifier;->skip:Z
Lsun/security/util/ManifestEntryVerifier;->toHex([B)Ljava/lang/String;
-Lsun/security/util/ObjectIdentifier$HugeOidNotSupportedByOldJDK;
Lsun/security/util/ObjectIdentifier$HugeOidNotSupportedByOldJDK;-><init>()V
Lsun/security/util/ObjectIdentifier$HugeOidNotSupportedByOldJDK;->theOne:Lsun/security/util/ObjectIdentifier$HugeOidNotSupportedByOldJDK;
Lsun/security/util/ObjectIdentifier;-><init>(Lsun/security/util/DerInputBuffer;)V
@@ -120689,7 +112924,6 @@
Lsun/security/x509/AlgorithmId;->md2WithRSAEncryption_data:[I
Lsun/security/x509/AlgorithmId;->md5WithRSAEncryption_data:[I
Lsun/security/x509/AlgorithmId;->nameTable:Ljava/util/Map;
-Lsun/security/x509/AlgorithmId;->oid([[I)Lsun/security/util/ObjectIdentifier;
Lsun/security/x509/AlgorithmId;->oidTable:Ljava/util/Map;
Lsun/security/x509/AlgorithmId;->reinitializeMappingTableLocked()V
Lsun/security/x509/AlgorithmId;->RSAEncryption_data:[I
@@ -120814,13 +113048,11 @@
Lsun/security/x509/X500Name;->title_data:[I
Lsun/security/x509/X500Name;->userid_data:[I
Lsun/security/x509/X500Name;->x500Principal:Ljavax/security/auth/x500/X500Principal;
-Lsun/util/locale/BaseLocale$Cache;
Lsun/util/locale/BaseLocale$Cache;-><init>()V
Lsun/util/locale/BaseLocale$Cache;->createObject(Ljava/lang/Object;)Ljava/lang/Object;
Lsun/util/locale/BaseLocale$Cache;->createObject(Lsun/util/locale/BaseLocale$Key;)Lsun/util/locale/BaseLocale;
Lsun/util/locale/BaseLocale$Cache;->normalizeKey(Ljava/lang/Object;)Ljava/lang/Object;
Lsun/util/locale/BaseLocale$Cache;->normalizeKey(Lsun/util/locale/BaseLocale$Key;)Lsun/util/locale/BaseLocale$Key;
-Lsun/util/locale/BaseLocale$Key;
Lsun/util/locale/BaseLocale$Key;-><init>(Ljava/lang/String;Ljava/lang/String;)V
Lsun/util/locale/BaseLocale$Key;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
Lsun/util/locale/BaseLocale$Key;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)V
@@ -120839,7 +113071,6 @@
Lsun/util/locale/BaseLocale;->region:Ljava/lang/String;
Lsun/util/locale/BaseLocale;->script:Ljava/lang/String;
Lsun/util/locale/BaseLocale;->variant:Ljava/lang/String;
-Lsun/util/locale/Extension;
Lsun/util/locale/Extension;-><init>(C)V
Lsun/util/locale/Extension;-><init>(CLjava/lang/String;)V
Lsun/util/locale/Extension;->getID()Ljava/lang/String;
@@ -120849,13 +113080,11 @@
Lsun/util/locale/Extension;->key:C
Lsun/util/locale/Extension;->setValue(Ljava/lang/String;)V
Lsun/util/locale/Extension;->value:Ljava/lang/String;
-Lsun/util/locale/InternalLocaleBuilder$CaseInsensitiveChar;
Lsun/util/locale/InternalLocaleBuilder$CaseInsensitiveChar;-><init>(C)V
Lsun/util/locale/InternalLocaleBuilder$CaseInsensitiveChar;-><init>(Ljava/lang/String;)V
Lsun/util/locale/InternalLocaleBuilder$CaseInsensitiveChar;->ch:C
Lsun/util/locale/InternalLocaleBuilder$CaseInsensitiveChar;->lowerCh:C
Lsun/util/locale/InternalLocaleBuilder$CaseInsensitiveChar;->value()C
-Lsun/util/locale/InternalLocaleBuilder$CaseInsensitiveString;
Lsun/util/locale/InternalLocaleBuilder$CaseInsensitiveString;-><init>(Ljava/lang/String;)V
Lsun/util/locale/InternalLocaleBuilder$CaseInsensitiveString;->lowerStr:Ljava/lang/String;
Lsun/util/locale/InternalLocaleBuilder$CaseInsensitiveString;->str:Ljava/lang/String;
@@ -120893,7 +113122,6 @@
Lsun/util/locale/LocaleExtensions;->extensionMap:Ljava/util/Map;
Lsun/util/locale/LocaleExtensions;->id:Ljava/lang/String;
Lsun/util/locale/LocaleExtensions;->toID(Ljava/util/SortedMap;)Ljava/lang/String;
-Lsun/util/locale/LocaleObjectCache$CacheEntry;
Lsun/util/locale/LocaleObjectCache$CacheEntry;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V
Lsun/util/locale/LocaleObjectCache$CacheEntry;->getKey()Ljava/lang/Object;
Lsun/util/locale/LocaleObjectCache$CacheEntry;->key:Ljava/lang/Object;
diff --git a/core/TEST_MAPPING b/core/TEST_MAPPING
new file mode 100644
index 0000000..fd571c9
--- /dev/null
+++ b/core/TEST_MAPPING
@@ -0,0 +1,24 @@
+{
+ "presubmit": [
+ {
+ "name": "FrameworksCoreTests",
+ "options": [
+ {
+ "include-filter": "android.view.inputmethod"
+ },
+ {
+ "include-filter": "com.android.internal.inputmethod"
+ },
+ {
+ "exclude-annotation": "androidx.test.filters.FlakyTest"
+ }
+ ],
+ "file_patterns": [
+ "core/java/com/android/internal/inputmethod/.*",
+ "core/java/android/view/inputmethod/.*",
+ "core/tests/coretests/src/android/view/inputmethod/.*",
+ "core/tests/coretests/src/com/android/internal/inputmethod/.*"
+ ]
+ }
+ ]
+}
diff --git a/core/java/android/accessibilityservice/AccessibilityServiceInfo.java b/core/java/android/accessibilityservice/AccessibilityServiceInfo.java
index 5913680..3db0b26 100644
--- a/core/java/android/accessibilityservice/AccessibilityServiceInfo.java
+++ b/core/java/android/accessibilityservice/AccessibilityServiceInfo.java
@@ -670,9 +670,8 @@
}
try {
if (platformCompat != null) {
- return platformCompat.isChangeEnabledByPackageName(
- REQUEST_ACCESSIBILITY_BUTTON_CHANGE, mResolveInfo.serviceInfo.packageName,
- mResolveInfo.serviceInfo.applicationInfo.uid);
+ return platformCompat.isChangeEnabled(REQUEST_ACCESSIBILITY_BUTTON_CHANGE,
+ mResolveInfo.serviceInfo.applicationInfo);
}
} catch (RemoteException ignore) {
}
diff --git a/core/java/android/accessibilityservice/TEST_MAPPING b/core/java/android/accessibilityservice/TEST_MAPPING
index c7c4c3a..df85b61 100644
--- a/core/java/android/accessibilityservice/TEST_MAPPING
+++ b/core/java/android/accessibilityservice/TEST_MAPPING
@@ -14,6 +14,9 @@
],
"postsubmit": [
{
+ "name": "CtsAccessibilityServiceSdk29TestCases"
+ },
+ {
"name": "CtsAccessibilityServiceTestCases"
},
{
diff --git a/core/java/android/annotation/UnsupportedAppUsage.java b/core/java/android/annotation/UnsupportedAppUsage.java
index 204d71d..1af48cb 100644
--- a/core/java/android/annotation/UnsupportedAppUsage.java
+++ b/core/java/android/annotation/UnsupportedAppUsage.java
@@ -148,6 +148,18 @@
String publicAlternatives() default "";
/**
+ * Override the default source position when generating an index of the annotations.
+ *
+ * <p>This is intended for use by tools that generate java source code, to point to the
+ * original source position of the annotation, rather than the position within the generated
+ * code. It should never be set manually.
+ *
+ * <p>The format of the value is "path/to/file:startline:startcol:endline:endcol" indicating
+ * the position of the annotation itself.
+ */
+ String overrideSourcePosition() default "";
+
+ /**
* Container for {@link UnsupportedAppUsage} that allows it to be applied repeatedly to types.
*/
@Retention(CLASS)
diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java
index f54e841..6bea68b 100644
--- a/core/java/android/app/Activity.java
+++ b/core/java/android/app/Activity.java
@@ -769,17 +769,6 @@
private static final String KEYBOARD_SHORTCUTS_RECEIVER_PKG_NAME = "com.android.systemui";
- private static final int LOG_AM_ON_CREATE_CALLED = 30057;
- private static final int LOG_AM_ON_START_CALLED = 30059;
- private static final int LOG_AM_ON_RESUME_CALLED = 30022;
- private static final int LOG_AM_ON_PAUSE_CALLED = 30021;
- private static final int LOG_AM_ON_STOP_CALLED = 30049;
- private static final int LOG_AM_ON_RESTART_CALLED = 30058;
- private static final int LOG_AM_ON_DESTROY_CALLED = 30060;
- private static final int LOG_AM_ON_ACTIVITY_RESULT_CALLED = 30062;
- private static final int LOG_AM_ON_TOP_RESUMED_GAINED_CALLED = 30064;
- private static final int LOG_AM_ON_TOP_RESUMED_LOST_CALLED = 30065;
-
private static class ManagedDialog {
Dialog mDialog;
Bundle mArgs;
@@ -1863,8 +1852,13 @@
final void performTopResumedActivityChanged(boolean isTopResumedActivity, String reason) {
onTopResumedActivityChanged(isTopResumedActivity);
- writeEventLog(isTopResumedActivity
- ? LOG_AM_ON_TOP_RESUMED_GAINED_CALLED : LOG_AM_ON_TOP_RESUMED_LOST_CALLED, reason);
+ if (isTopResumedActivity) {
+ EventLogTags.writeWmOnTopResumedGainedCalled(mIdent, getComponentName().getClassName(),
+ reason);
+ } else {
+ EventLogTags.writeWmOnTopResumedLostCalled(mIdent, getComponentName().getClassName(),
+ reason);
+ }
}
void setVoiceInteractor(IVoiceInteractor voiceInteractor) {
@@ -7898,7 +7892,8 @@
} else {
onCreate(icicle);
}
- writeEventLog(LOG_AM_ON_CREATE_CALLED, "performCreate");
+ EventLogTags.writeWmOnCreateCalled(mIdent, getComponentName().getClassName(),
+ "performCreate");
mActivityTransitionState.readState(icicle);
mVisibleFromClient = !mWindow.getWindowStyle().getBoolean(
@@ -7920,7 +7915,7 @@
mCalled = false;
mFragments.execPendingActions();
mInstrumentation.callActivityOnStart(this);
- writeEventLog(LOG_AM_ON_START_CALLED, reason);
+ EventLogTags.writeWmOnStartCalled(mIdent, getComponentName().getClassName(), reason);
if (!mCalled) {
throw new SuperNotCalledException(
@@ -7998,7 +7993,7 @@
mCalled = false;
mInstrumentation.callActivityOnRestart(this);
- writeEventLog(LOG_AM_ON_RESTART_CALLED, reason);
+ EventLogTags.writeWmOnRestartCalled(mIdent, getComponentName().getClassName(), reason);
if (!mCalled) {
throw new SuperNotCalledException(
"Activity " + mComponent.toShortString() +
@@ -8031,7 +8026,7 @@
mCalled = false;
// mResumed is set by the instrumentation
mInstrumentation.callActivityOnResume(this);
- writeEventLog(LOG_AM_ON_RESUME_CALLED, reason);
+ EventLogTags.writeWmOnResumeCalled(mIdent, getComponentName().getClassName(), reason);
if (!mCalled) {
throw new SuperNotCalledException(
"Activity " + mComponent.toShortString() +
@@ -8070,7 +8065,8 @@
mFragments.dispatchPause();
mCalled = false;
onPause();
- writeEventLog(LOG_AM_ON_PAUSE_CALLED, "performPause");
+ EventLogTags.writeWmOnPausedCalled(mIdent, getComponentName().getClassName(),
+ "performPause");
mResumed = false;
if (!mCalled && getApplicationInfo().targetSdkVersion
>= android.os.Build.VERSION_CODES.GINGERBREAD) {
@@ -8110,7 +8106,7 @@
mCalled = false;
mInstrumentation.callActivityOnStop(this);
- writeEventLog(LOG_AM_ON_STOP_CALLED, reason);
+ EventLogTags.writeWmOnStopCalled(mIdent, getComponentName().getClassName(), reason);
if (!mCalled) {
throw new SuperNotCalledException(
"Activity " + mComponent.toShortString() +
@@ -8140,7 +8136,8 @@
mWindow.destroy();
mFragments.dispatchDestroy();
onDestroy();
- writeEventLog(LOG_AM_ON_DESTROY_CALLED, "performDestroy");
+ EventLogTags.writeWmOnDestroyCalled(mIdent, getComponentName().getClassName(),
+ "performDestroy");
mFragments.doLoaderDestroy();
if (mVoiceInteractor != null) {
mVoiceInteractor.detachActivity();
@@ -8233,7 +8230,9 @@
frag.onActivityResult(requestCode, resultCode, data);
}
}
- writeEventLog(LOG_AM_ON_ACTIVITY_RESULT_CALLED, reason);
+
+ EventLogTags.writeWmOnActivityResultCalled(mIdent, getComponentName().getClassName(),
+ reason);
}
/**
@@ -8660,11 +8659,6 @@
}
}
- /** Log a lifecycle event for current user id and component class. */
- private void writeEventLog(int event, String reason) {
- EventLog.writeEvent(event, mIdent, getComponentName().getClassName(), reason);
- }
-
class HostCallbacks extends FragmentHostCallback<Activity> {
public HostCallbacks() {
super(Activity.this /*activity*/);
diff --git a/core/java/android/app/ActivityView.java b/core/java/android/app/ActivityView.java
index 91f8a3c..aaab6b4 100644
--- a/core/java/android/app/ActivityView.java
+++ b/core/java/android/app/ActivityView.java
@@ -22,11 +22,14 @@
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
+import android.content.pm.LauncherApps;
+import android.content.pm.ShortcutInfo;
import android.graphics.Insets;
import android.graphics.Matrix;
import android.graphics.Point;
import android.graphics.Rect;
import android.graphics.Region;
+import android.os.Bundle;
import android.os.UserHandle;
import android.util.AttributeSet;
import android.util.Log;
@@ -209,6 +212,32 @@
}
/**
+ * Launch an activity represented by {@link ShortcutInfo} into this container.
+ * <p>The owner of this container must be allowed to access the shortcut information,
+ * as defined in {@link LauncherApps#hasShortcutHostPermission()} to use this method.
+ * <p>Activity resolved by the provided {@link ShortcutInfo} must have
+ * {@link android.R.attr#resizeableActivity} attribute set to {@code true} in order to be
+ * launched here. Also, if activity is not owned by the owner of this container, it must allow
+ * embedding and the caller must have permission to embed.
+ * <p>Note: This class must finish initializing and
+ * {@link StateCallback#onActivityViewReady(ActivityView)} callback must be triggered before
+ * this method can be called.
+ *
+ * @param shortcut the shortcut used to launch the activity.
+ * @param options for the activity.
+ * @param sourceBounds the rect containing the source bounds of the clicked icon to open
+ * this shortcut.
+ * @see StateCallback
+ * @see LauncherApps#startShortcut(ShortcutInfo, Rect, Bundle)
+ *
+ * @hide
+ */
+ public void startShortcutActivity(@NonNull ShortcutInfo shortcut,
+ @NonNull ActivityOptions options, @Nullable Rect sourceBounds) {
+ mTaskEmbedder.startShortcutActivity(shortcut, options, sourceBounds);
+ }
+
+ /**
* Launch a new activity into this container.
* <p>Activity resolved by the provided {@link Intent} must have
* {@link android.R.attr#resizeableActivity} attribute set to {@code true} in order to be
diff --git a/core/java/android/app/ContextImpl.java b/core/java/android/app/ContextImpl.java
index 1c8f494..46f88d5 100644
--- a/core/java/android/app/ContextImpl.java
+++ b/core/java/android/app/ContextImpl.java
@@ -1362,6 +1362,18 @@
}
@Override
+ public void sendOrderedBroadcast(Intent intent, String receiverPermission, String receiverAppOp,
+ Bundle options, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode,
+ String initialData, @Nullable Bundle initialExtras) {
+ int intAppOp = AppOpsManager.OP_NONE;
+ if (!TextUtils.isEmpty(receiverAppOp)) {
+ intAppOp = AppOpsManager.strOpToOp(receiverAppOp);
+ }
+ sendOrderedBroadcastAsUser(intent, getUser(), receiverPermission, intAppOp, options,
+ resultReceiver, scheduler, initialCode, initialData, initialExtras);
+ }
+
+ @Override
@Deprecated
public void sendStickyBroadcast(Intent intent) {
warnIfCallingFromSystemProcess();
diff --git a/core/java/android/app/EventLogTags.logtags b/core/java/android/app/EventLogTags.logtags
new file mode 100644
index 0000000..6296a68
--- /dev/null
+++ b/core/java/android/app/EventLogTags.logtags
@@ -0,0 +1,36 @@
+# See system/core/logcat/event.logtags for a description of the format of this file.
+
+option java_package android.app
+
+# Do not change these names without updating the checkin_events setting in
+# google3/googledata/wireless/android/provisioning/gservices.config !!
+#
+# The activity's onPause has been called.
+30021 wm_on_paused_called (Token|1|5),(Component Name|3),(Reason|3)
+# The activity's onResume has been called.
+30022 wm_on_resume_called (Token|1|5),(Component Name|3),(Reason|3)
+
+# Attempting to stop an activity
+30048 wm_stop_activity (User|1|5),(Token|1|5),(Component Name|3)
+# The activity's onStop has been called.
+30049 wm_on_stop_called (Token|1|5),(Component Name|3),(Reason|3)
+
+# The activity's onCreate has been called.
+30057 wm_on_create_called (Token|1|5),(Component Name|3),(Reason|3)
+# The activity's onRestart has been called.
+30058 wm_on_restart_called (Token|1|5),(Component Name|3),(Reason|3)
+# The activity's onStart has been called.
+30059 wm_on_start_called (Token|1|5),(Component Name|3),(Reason|3)
+# The activity's onDestroy has been called.
+30060 wm_on_destroy_called (Token|1|5),(Component Name|3),(Reason|3)
+# The activity's onActivityResult has been called.
+30062 wm_on_activity_result_called (Token|1|5),(Component Name|3),(Reason|3)
+
+# The activity's onTopResumedActivityChanged(true) has been called.
+30064 wm_on_top_resumed_gained_called (Token|1|5),(Component Name|3),(Reason|3)
+# The activity's onTopResumedActivityChanged(false) has been called.
+30065 wm_on_top_resumed_lost_called (Token|1|5),(Component Name|3),(Reason|3)
+
+# An activity been add into stopping list
+30066 wm_add_to_stopping (User|1|5),(Token|1|5),(Component Name|3),(Reason|3)
+
diff --git a/core/java/android/app/ExpandableListActivity.java b/core/java/android/app/ExpandableListActivity.java
index e08f25a..22de878 100644
--- a/core/java/android/app/ExpandableListActivity.java
+++ b/core/java/android/app/ExpandableListActivity.java
@@ -150,7 +150,11 @@
*
* @see #setListAdapter
* @see android.widget.ExpandableListView
+ *
+ * @deprecated Use {@link androidx.recyclerview.widget.RecyclerView} or use
+ * {@link android.widget.ExpandableListView} directly
*/
+@Deprecated
public class ExpandableListActivity extends Activity implements
OnCreateContextMenuListener,
ExpandableListView.OnChildClickListener, ExpandableListView.OnGroupCollapseListener,
diff --git a/core/java/android/app/INotificationManager.aidl b/core/java/android/app/INotificationManager.aidl
index 9aca223..0957dba 100644
--- a/core/java/android/app/INotificationManager.aidl
+++ b/core/java/android/app/INotificationManager.aidl
@@ -21,6 +21,7 @@
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationChannelGroup;
+import android.app.NotificationHistory;
import android.app.NotificationManager;
import android.content.ComponentName;
import android.content.Intent;
@@ -119,6 +120,8 @@
@UnsupportedAppUsage
StatusBarNotification[] getHistoricalNotifications(String callingPkg, int count);
+ NotificationHistory getNotificationHistory(String callingPkg);
+
void registerListener(in INotificationListener listener, in ComponentName component, int userid);
void unregisterListener(in INotificationListener listener, int userid);
diff --git a/core/java/android/app/ISearchManager.aidl b/core/java/android/app/ISearchManager.aidl
index 53f1a46..0119707 100644
--- a/core/java/android/app/ISearchManager.aidl
+++ b/core/java/android/app/ISearchManager.aidl
@@ -31,6 +31,5 @@
@UnsupportedAppUsage
ComponentName getGlobalSearchActivity();
ComponentName getWebSearchActivity();
- void launchAssist(in Bundle args);
- boolean launchLegacyAssist(String hint, int userHandle, in Bundle args);
+ void launchAssist(int userHandle, in Bundle args);
}
diff --git a/core/java/android/app/LauncherActivity.java b/core/java/android/app/LauncherActivity.java
index 88e2356..b495b3c 100644
--- a/core/java/android/app/LauncherActivity.java
+++ b/core/java/android/app/LauncherActivity.java
@@ -53,7 +53,11 @@
* Displays a list of all activities which can be performed
* for a given intent. Launches when clicked.
*
+ * @deprecated Applications can implement this UI themselves using
+ * {@link androidx.recyclerview.widget.RecyclerView} and
+ * {@link android.content.pm.PackageManager#queryIntentActivities(Intent, int)}
*/
+@Deprecated
public abstract class LauncherActivity extends ListActivity {
Intent mIntent;
PackageManager mPackageManager;
diff --git a/core/java/android/app/ListActivity.java b/core/java/android/app/ListActivity.java
index 2162521..810cca2 100644
--- a/core/java/android/app/ListActivity.java
+++ b/core/java/android/app/ListActivity.java
@@ -171,7 +171,11 @@
*
* @see #setListAdapter
* @see android.widget.ListView
+ *
+ * @deprecated Use {@link androidx.fragment.app.ListFragment} or
+ * {@link androidx.recyclerview.widget.RecyclerView} to implement your Activity instead.
*/
+@Deprecated
public class ListActivity extends Activity {
/**
* This field should be made private, so it is hidden from the SDK.
diff --git a/core/java/android/app/PropertyInvalidatedCache.java b/core/java/android/app/PropertyInvalidatedCache.java
new file mode 100644
index 0000000..844e72e
--- /dev/null
+++ b/core/java/android/app/PropertyInvalidatedCache.java
@@ -0,0 +1,428 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.app;
+import android.annotation.NonNull;
+import android.os.SystemProperties;
+import android.util.Log;
+
+import com.android.internal.annotations.GuardedBy;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.Random;
+import java.util.concurrent.atomic.AtomicLong;
+
+/**
+ * LRU cache that's invalidated when an opaque value in a property changes. Self-synchronizing,
+ * but doesn't hold a lock across data fetches on query misses.
+ *
+ * The intended use case is caching frequently-read, seldom-changed information normally
+ * retrieved across interprocess communication. Imagine that you've written a user birthday
+ * information daemon called "birthdayd" that exposes an {@code IUserBirthdayService} interface
+ * over binder. That binder interface looks something like this:
+ *
+ * <pre>
+ * parcelable Birthday {
+ * int month;
+ * int day;
+ * }
+ * interface IUserBirthdayService {
+ * Birthday getUserBirthday(int userId);
+ * }
+ * </pre>
+ *
+ * Suppose the service implementation itself looks like this...
+ *
+ * <pre>
+ * public class UserBirthdayServiceImpl implements IUserBirthdayService {
+ * private final HashMap<Integer, Birthday> mUidToBirthday;
+ * @Override
+ * public synchronized Birthday getUserBirthday(int userId) {
+ * return mUidToBirthday.get(userId);
+ * }
+ * private synchronized void updateBirthdays(Map<Integer, Birthday> uidToBirthday) {
+ * mUidToBirthday.clear();
+ * mUidToBirthday.putAll(uidToBirthday);
+ * }
+ * }
+ * </pre>
+ *
+ * ... and we have a client in frameworks (loaded into every app process) that looks
+ * like this:
+ *
+ * <pre>
+ * public class ActivityThread {
+ * ...
+ * public Birthday getUserBirthday(int userId) {
+ * return GetService("birthdayd").getUserBirthday(userId);
+ * }
+ * ...
+ * }
+ * </pre>
+ *
+ * With this code, every time an app calls {@code getUserBirthday(uid)}, we make a binder call
+ * to the birthdayd process and consult its database of birthdays. If we query user birthdays
+ * frequently, we do a lot of work that we don't have to do, since user birthdays
+ * change infrequently.
+ *
+ * PropertyInvalidatedCache is part of a pattern for optimizing this kind of
+ * information-querying code. Using {@code PropertyInvalidatedCache}, you'd write the client
+ * this way:
+ *
+ * <pre>
+ * public class ActivityThread {
+ * ...
+ * private static final int BDAY_CACHE_MAX = 8; // Maximum birthdays to cache
+ * private static final String BDAY_CACHE_KEY = "cache_key.birthdayd";
+ * private final PropertyInvalidatedCache<Integer, Birthday> mBirthdayCache = new
+ * PropertyInvalidatedCache<Integer, Birthday>(BDAY_CACHE_MAX, BDAY_CACHE_KEY) {
+ * @Override
+ * protected Birthday recompute(Integer userId) {
+ * return GetService("birthdayd").getUserBirthday(userId);
+ * }
+ * };
+ * public void disableUserBirthdayCache() {
+ * mBirthdayCache.disableLocal();
+ * }
+ * public void invalidateUserBirthdayCache() {
+ * mBirthdayCache.invalidateCache();
+ * }
+ * public Birthday getUserBirthday(int userId) {
+ * return mBirthdayCache.query(userId);
+ * }
+ * ...
+ * }
+ * </pre>
+ *
+ * With this cache, clients perform a binder call to birthdayd if asking for a user's birthday
+ * for the first time; on subsequent queries, we return the already-known Birthday object.
+ *
+ * User birthdays do occasionally change, so we have to modify the server to invalidate this
+ * cache when necessary. That invalidation code looks like this:
+ *
+ * <pre>
+ * public class UserBirthdayServiceImpl {
+ * ...
+ * public UserBirthdayServiceImpl() {
+ * ...
+ * ActivityThread.currentActivityThread().disableUserBirthdayCache();
+ * ActivityThread.currentActivityThread().invalidateUserBirthdayCache();
+ * }
+ *
+ * private synchronized void updateBirthdays(Map<Integer, Birthday> uidToBirthday) {
+ * mUidToBirthday.clear();
+ * mUidToBirthday.putAll(uidToBirthday);
+ * ActivityThread.currentActivityThread().invalidateUserBirthdayCache();
+ * }
+ * ...
+ * }
+ * </pre>
+ *
+ * The call to {@code PropertyInvalidatedCache.invalidateCache()} guarantees that all clients
+ * will re-fetch birthdays from binder during consequent calls to
+ * {@code ActivityThread.getUserBirthday()}. Because the invalidate call happens with the lock
+ * held, we maintain consistency between different client views of the birthday state. The use
+ * of PropertyInvalidatedCache in this idiomatic way introduces no new race conditions.
+ *
+ * PropertyInvalidatedCache has a few other features for doing things like incremental
+ * enhancement of cached values and invalidation of multiple caches (that all share the same
+ * property key) at once.
+ *
+ * {@code BDAY_CACHE_KEY} is the name of a property that we set to an opaque unique value each
+ * time we update the cache. SELinux configuration must allow everyone to read this property
+ * and it must allow any process that needs to invalidate the cache (here, birthdayd) to write
+ * the property. (These properties conventionally begin with the "cache_key." prefix.)
+ *
+ * The {@code UserBirthdayServiceImpl} constructor calls {@code disableUserBirthdayCache()} so
+ * that calls to {@code getUserBirthday} from inside birthdayd don't go through the cache. In
+ * this local case, there's no IPC, so use of the cache is (depending on exact
+ * circumstance) unnecessary.
+ *
+ * @param <Query> The class used to index cache entries: must be hashable and comparable
+ * @param <Result> The class holding cache entries; use a boxed primitive if possible
+ *
+ * {@hide}
+ */
+public abstract class PropertyInvalidatedCache<Query, Result> {
+ private static final long NONCE_UNSET = 0;
+ private static final long NONCE_DISABLED = -1;
+
+ private static final String TAG = "PropertyInvalidatedCache";
+ private static final boolean DEBUG = false;
+ private static final boolean ENABLE = true;
+
+ private final Object mLock = new Object();
+
+ /**
+ * Name of the property that holds the unique value that we use to invalidate the cache.
+ */
+ private final String mPropertyName;
+
+ /**
+ * Handle to the {@code mPropertyName} property, transitioning to non-{@code null} once the
+ * property exists on the system.
+ */
+ private volatile SystemProperties.Handle mPropertyHandle;
+
+ @GuardedBy("mLock")
+ private final LinkedHashMap<Query, Result> mCache;
+
+ /**
+ * The last value of the {@code mPropertyHandle} that we observed.
+ */
+ @GuardedBy("mLock")
+ private long mLastSeenNonce = NONCE_UNSET;
+
+ /**
+ * Whether we've disabled the cache in this process.
+ */
+ private boolean mDisabled = false;
+
+ /**
+ * Make a new property invalidated cache.
+ *
+ * @param maxEntries Maximum number of entries to cache; LRU discard
+ * @param propertyName Name of the system property holding the cache invalidation nonce
+ */
+ public PropertyInvalidatedCache(int maxEntries, @NonNull String propertyName) {
+ mPropertyName = propertyName;
+ mCache = new LinkedHashMap<Query, Result>(
+ 2 /* start small */,
+ 0.75f /* default load factor */,
+ true /* LRU access order */) {
+ @Override
+ protected boolean removeEldestEntry(Map.Entry eldest) {
+ return size() > maxEntries;
+ }
+ };
+ }
+
+ /**
+ * Forget all cached values.
+ */
+ public final void clear() {
+ synchronized (mLock) {
+ mCache.clear();
+ }
+ }
+
+ /**
+ * Fetch a result from scratch in case it's not in the cache at all. Called unlocked: may
+ * block. If this function returns null, the result of the cache query is null. There is no
+ * "negative cache" in the query: we don't cache null results at all.
+ */
+ protected abstract Result recompute(Query query);
+
+ /**
+ * Make result up-to-date on a cache hit. Called unlocked;
+ * may block.
+ *
+ * Return either 1) oldResult itself (the same object, by reference equality), in which
+ * case we just return oldResult as the result of the cache query, 2) a new object, which
+ * replaces oldResult in the cache and which we return as the result of the cache query
+ * after performing another property read to make sure that the result hasn't changed in
+ * the meantime (if the nonce has changed in the meantime, we drop the cache and try the
+ * whole query again), or 3) null, which causes the old value to be removed from the cache
+ * and null to be returned as the result of the cache query.
+ */
+ protected Result refresh(Result oldResult, Query query) {
+ return oldResult;
+ }
+
+ private long getCurrentNonce() {
+ SystemProperties.Handle handle = mPropertyHandle;
+ if (handle == null) {
+ handle = SystemProperties.find(mPropertyName);
+ if (handle == null) {
+ return NONCE_UNSET;
+ }
+ mPropertyHandle = handle;
+ }
+ return handle.getLong(NONCE_UNSET);
+ }
+
+ /**
+ * Disable the use of this cache in this process.
+ */
+ public final void disableLocal() {
+ synchronized (mLock) {
+ mDisabled = true;
+ mCache.clear();
+ }
+ }
+
+ /**
+ * Return whether the cache is disabled in this process.
+ */
+ public final boolean isDisabledLocal() {
+ return mDisabled;
+ }
+
+ /**
+ * Get a value from the cache or recompute it.
+ */
+ public Result query(Query query) {
+ // Let access to mDisabled race: it's atomic anyway.
+ long currentNonce = (ENABLE && !mDisabled) ? getCurrentNonce() : NONCE_DISABLED;
+ for (;;) {
+ if (currentNonce == NONCE_DISABLED || currentNonce == NONCE_UNSET) {
+ if (DEBUG) {
+ Log.d(TAG,
+ String.format("cache %s for %s",
+ currentNonce == NONCE_DISABLED ? "disabled" : "unset",
+ query));
+ }
+ return recompute(query);
+ }
+ final Result cachedResult;
+ synchronized (mLock) {
+ if (currentNonce == mLastSeenNonce) {
+ cachedResult = mCache.get(query);
+ } else {
+ if (DEBUG) {
+ Log.d(TAG,
+ String.format("clearing cache because nonce changed [%s] -> [%s]",
+ mLastSeenNonce, currentNonce));
+ }
+ mCache.clear();
+ mLastSeenNonce = currentNonce;
+ cachedResult = null;
+ }
+ }
+ // Cache hit --- but we're not quite done yet. A value in the cache might need to
+ // be augmented in a "refresh" operation. The refresh operation can combine the
+ // old and the new nonce values. In order to make sure the new parts of the value
+ // are consistent with the old, possibly-reused parts, we check the property value
+ // again after the refresh and do the whole fetch again if the property invalidated
+ // us while we were refreshing.
+ if (cachedResult != null) {
+ final Result refreshedResult = refresh(cachedResult, query);
+ if (refreshedResult != cachedResult) {
+ if (DEBUG) {
+ Log.d(TAG, "cache refresh for " + query);
+ }
+ final long afterRefreshNonce = getCurrentNonce();
+ if (currentNonce != afterRefreshNonce) {
+ currentNonce = afterRefreshNonce;
+ if (DEBUG) {
+ Log.d(TAG, "restarting query because nonce changed in refresh");
+ }
+ continue;
+ }
+ synchronized (mLock) {
+ if (currentNonce != mLastSeenNonce) {
+ // Do nothing: cache is already out of date. Just return the value
+ // we already have: there's no guarantee that the contents of mCache
+ // won't become invalid as soon as we return.
+ } else if (refreshedResult == null) {
+ mCache.remove(query);
+ } else {
+ mCache.put(query, refreshedResult);
+ }
+ }
+ return refreshedResult;
+ }
+ if (DEBUG) {
+ Log.d(TAG, "cache hit for " + query);
+ }
+ return cachedResult;
+ }
+ // Cache miss: make the value from scratch.
+ if (DEBUG) {
+ Log.d(TAG, "cache miss for " + query);
+ }
+ final Result result = recompute(query);
+ synchronized (mLock) {
+ // If someone else invalidated the cache while we did the recomputation, don't
+ // update the cache with a potentially stale result.
+ if (mLastSeenNonce == currentNonce && result != null) {
+ mCache.put(query, result);
+ }
+ }
+ return result;
+ }
+ }
+
+ // Inner class avoids initialization in processes that don't do any invalidation
+ private static final class NoPreloadHolder {
+ private static final AtomicLong sNextNonce = new AtomicLong((new Random()).nextLong());
+ public static long next() {
+ return sNextNonce.getAndIncrement();
+ }
+ }
+
+ /**
+ * Non-static convenience version of disableSystemWide() for situations in which only a
+ * single PropertyInvalidatedCache is keyed on a particular property value.
+ *
+ * When multiple caches share a single property value, using an instance method on one of
+ * the cache objects to invalidate all of the cache objects becomes confusing and you should
+ * just use the static version of this function.
+ */
+ public final void disableSystemWide() {
+ disableSystemWide(mPropertyName);
+ }
+
+ /**
+ * Disable all caches system-wide that are keyed on {@var name}. This
+ * function is synchronous: caches are invalidated and disabled upon return.
+ *
+ * @param name Name of the cache-key property to invalidate
+ */
+ public static void disableSystemWide(@NonNull String name) {
+ SystemProperties.set(name, Long.toString(NONCE_DISABLED));
+ }
+
+ /**
+ * Non-static convenience version of invalidateCache() for situations in which only a single
+ * PropertyInvalidatedCache is keyed on a particular property value.
+ */
+ public final void invalidateCache() {
+ invalidateCache(mPropertyName);
+ }
+
+ /**
+ * Invalidate PropertyInvalidatedCache caches in all processes that are keyed on
+ * {@var name}. This function is synchronous: caches are invalidated upon return.
+ *
+ * @param name Name of the cache-key property to invalidate
+ */
+ public static void invalidateCache(@NonNull String name) {
+ // There's no race here: we don't require that values strictly increase, but instead
+ // only that each is unique in a single runtime-restart session.
+ final long nonce = SystemProperties.getLong(name, NONCE_UNSET);
+ if (nonce == NONCE_DISABLED) {
+ if (DEBUG) {
+ Log.d(TAG, "refusing to invalidate disabled cache: " + name);
+ }
+ return;
+ }
+ long newValue;
+ do {
+ newValue = NoPreloadHolder.next();
+ } while (newValue == NONCE_UNSET || newValue == NONCE_DISABLED);
+ final String newValueString = Long.toString(newValue);
+ if (DEBUG) {
+ Log.d(TAG,
+ String.format("invalidating cache [%s]: [%s] -> [%s]",
+ name,
+ nonce,
+ newValueString));
+ }
+ SystemProperties.set(name, newValueString);
+ }
+}
diff --git a/core/java/android/app/SearchManager.java b/core/java/android/app/SearchManager.java
index acca6fc..b10c3e2 100644
--- a/core/java/android/app/SearchManager.java
+++ b/core/java/android/app/SearchManager.java
@@ -16,6 +16,8 @@
package android.app;
+import android.annotation.Nullable;
+import android.annotation.SystemApi;
import android.annotation.SystemService;
import android.annotation.UnsupportedAppUsage;
import android.content.ActivityNotFoundException;
@@ -973,37 +975,22 @@
}
/**
- * Starts the assistant.
+ * Starts the {@link android.provider.Settings.Secure#ASSISTANT assistant}.
*
- * @param args the args to pass to the assistant
+ * @param args a {@code Bundle} that will be passed to the assistant's
+ * {@link android.service.voice.VoiceInteractionSession#onShow VoiceInteractionSession}
+ * (or as {@link Intent#getExtras() extras} along
+ * {@link Intent#ACTION_ASSIST ACTION_ASSIST} for legacy assistants)
*
* @hide
*/
- @UnsupportedAppUsage
- public void launchAssist(Bundle args) {
+ @SystemApi
+ public void launchAssist(@Nullable Bundle args) {
try {
if (mService == null) {
return;
}
- mService.launchAssist(args);
- } catch (RemoteException re) {
- throw re.rethrowFromSystemServer();
- }
- }
-
- /**
- * Starts the legacy assistant (i.e. the {@link Intent#ACTION_ASSIST}).
- *
- * @param args the args to pass to the assistant
- *
- * @hide
- */
- public boolean launchLegacyAssist(String hint, int userHandle, Bundle args) {
- try {
- if (mService == null) {
- return false;
- }
- return mService.launchLegacyAssist(hint, userHandle, args);
+ mService.launchAssist(mContext.getUserId(), args);
} catch (RemoteException re) {
throw re.rethrowFromSystemServer();
}
diff --git a/core/java/android/app/SystemServiceRegistry.java b/core/java/android/app/SystemServiceRegistry.java
index 0bfd2c6..1829f74 100644
--- a/core/java/android/app/SystemServiceRegistry.java
+++ b/core/java/android/app/SystemServiceRegistry.java
@@ -19,6 +19,7 @@
import android.accounts.AccountManager;
import android.accounts.IAccountManager;
import android.annotation.NonNull;
+import android.annotation.SystemApi;
import android.app.ContextImpl.ServiceInitializationState;
import android.app.admin.DevicePolicyManager;
import android.app.admin.IDevicePolicyManager;
@@ -33,6 +34,7 @@
import android.app.slice.SliceManager;
import android.app.timedetector.TimeDetector;
import android.app.timezone.RulesManager;
+import android.app.timezonedetector.TimeZoneDetector;
import android.app.trust.TrustManager;
import android.app.usage.IStorageStatsManager;
import android.app.usage.IUsageStatsManager;
@@ -193,6 +195,7 @@
*
* @hide
*/
+@SystemApi
public final class SystemServiceRegistry {
private static final String TAG = "SystemServiceRegistry";
@@ -1123,6 +1126,14 @@
return new TimeDetector();
}});
+ registerService(Context.TIME_ZONE_DETECTOR_SERVICE, TimeZoneDetector.class,
+ new CachedServiceFetcher<TimeZoneDetector>() {
+ @Override
+ public TimeZoneDetector createService(ContextImpl ctx)
+ throws ServiceNotFoundException {
+ return new TimeZoneDetector();
+ }});
+
registerService(Context.PERMISSION_SERVICE, PermissionManager.class,
new CachedServiceFetcher<PermissionManager>() {
@Override
@@ -1191,7 +1202,6 @@
try {
// Note: the following functions need to be @SystemApis, once they become mainline
// modules.
-
JobSchedulerFrameworkInitializer.registerServiceWrappers();
BlobStoreManagerFrameworkInitializer.initialize();
TelephonyFrameworkInitializer.registerServiceWrappers();
@@ -1246,18 +1256,20 @@
/**
* Callback interface used as a parameter to {@link #registerStaticService(
- * String, Class, StaticServiceProducerNoBinder)}, which generates a service wrapper instance
- * that's not tied to any context and does not take a service binder object in the constructor.
+ * String, Class, StaticServiceProducerWithoutBinder)}, which generates a service wrapper
+ * instance that's not tied to any context and does not take a service binder object in the
+ * constructor.
*
* @param <TServiceClass> type of the service wrapper class.
*
* @hide
*/
- //@SystemApi TODO Make it a system API.
- public interface StaticServiceProducerNoBinder<TServiceClass> {
+ @SystemApi
+ public interface StaticServiceProducerWithoutBinder<TServiceClass> {
/**
* Return a new service wrapper of type {@code TServiceClass}.
*/
+ @NonNull
TServiceClass createService();
}
@@ -1270,18 +1282,19 @@
*
* @hide
*/
- //@SystemApi TODO Make it a system API.
+ @SystemApi
public interface StaticServiceProducerWithBinder<TServiceClass> {
/**
* Return a new service wrapper of type {@code TServiceClass} backed by a given
* service binder object.
*/
- TServiceClass createService(IBinder serviceBinder);
+ @NonNull
+ TServiceClass createService(@NonNull IBinder serviceBinder);
}
/**
* Callback interface used as a parameter to {@link #registerContextAwareService(
- * String, Class, ContextAwareServiceProducerNoBinder)},
+ * String, Class, ContextAwareServiceProducerWithoutBinder)},
* which generates a service wrapper instance
* that's tied to a specific context and does not take a service binder object in the
* constructor.
@@ -1290,15 +1303,15 @@
*
* @hide
*/
- //@SystemApi TODO Make it a system API.
- public interface ContextAwareServiceProducerNoBinder<TServiceClass> {
+ @SystemApi
+ public interface ContextAwareServiceProducerWithoutBinder<TServiceClass> {
/**
* Return a new service wrapper of type {@code TServiceClass} tied to a given
* {@code context}.
- *
- * TODO Do we need to pass the "base context" too?
*/
- TServiceClass createService(Context context);
+ @NonNull
+ //TODO Do we need to pass the "base context" too?
+ TServiceClass createService(@NonNull Context context);
}
/**
@@ -1311,15 +1324,15 @@
*
* @hide
*/
- //@SystemApi TODO Make it a system API.
+ @SystemApi
public interface ContextAwareServiceProducerWithBinder<TServiceClass> {
/**
* Return a new service wrapper of type {@code TServiceClass} backed by a given
* service binder object that's tied to a given {@code context}.
- *
- * TODO Do we need to pass the "base context" too?
*/
- TServiceClass createService(Context context, IBinder serviceBinder);
+ @NonNull
+ //TODO Do we need to pass the "base context" too?
+ TServiceClass createService(@NonNull Context context, @NonNull IBinder serviceBinder);
}
/**
@@ -1337,7 +1350,7 @@
*
* @hide
*/
- //@SystemApi TODO Make it a system API.
+ @SystemApi
public static <TServiceClass> void registerStaticService(
@NonNull String serviceName, @NonNull Class<TServiceClass> serviceWrapperClass,
@NonNull StaticServiceProducerWithBinder<TServiceClass> serviceProducer) {
@@ -1361,10 +1374,10 @@
*
* @hide
*/
- //@SystemApi TODO Make it a system API.
+ @SystemApi
public static <TServiceClass> void registerStaticService(
@NonNull String serviceName, @NonNull Class<TServiceClass> serviceWrapperClass,
- @NonNull StaticServiceProducerNoBinder<TServiceClass> serviceProducer) {
+ @NonNull StaticServiceProducerWithoutBinder<TServiceClass> serviceProducer) {
ensureInitializing("registerStaticService");
Preconditions.checkStringNotEmpty(serviceName);
Preconditions.checkNotNull(serviceWrapperClass);
@@ -1394,7 +1407,7 @@
*
* @hide
*/
- //@SystemApi TODO Make it a system API.
+ @SystemApi
public static <TServiceClass> void registerContextAwareService(
@NonNull String serviceName, @NonNull Class<TServiceClass> serviceWrapperClass,
@NonNull ContextAwareServiceProducerWithBinder<TServiceClass> serviceProducer) {
@@ -1422,10 +1435,10 @@
*
* @hide
*/
- //@SystemApi TODO Make it a system API.
+ @SystemApi
public static <TServiceClass> void registerContextAwareService(
@NonNull String serviceName, @NonNull Class<TServiceClass> serviceWrapperClass,
- @NonNull ContextAwareServiceProducerNoBinder<TServiceClass> serviceProducer) {
+ @NonNull ContextAwareServiceProducerWithoutBinder<TServiceClass> serviceProducer) {
ensureInitializing("registerContextAwareService");
Preconditions.checkStringNotEmpty(serviceName);
Preconditions.checkNotNull(serviceWrapperClass);
diff --git a/core/java/android/app/TaskEmbedder.java b/core/java/android/app/TaskEmbedder.java
index a8dc7bc..79d88fd 100644
--- a/core/java/android/app/TaskEmbedder.java
+++ b/core/java/android/app/TaskEmbedder.java
@@ -25,9 +25,12 @@
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
+import android.content.pm.LauncherApps;
+import android.content.pm.ShortcutInfo;
import android.graphics.Insets;
import android.graphics.Matrix;
import android.graphics.Point;
+import android.graphics.Rect;
import android.graphics.Region;
import android.hardware.display.DisplayManager;
import android.hardware.display.VirtualDisplay;
@@ -346,6 +349,26 @@
}
/**
+ * Launch an activity represented by {@link ShortcutInfo} into this container.
+ * <p>The owner of this container must be allowed to access the shortcut information,
+ * as defined in {@link LauncherApps#hasShortcutHostPermission()} to use this method.
+ *
+ * @param shortcut the shortcut used to launch the activity.
+ * @param options options for the activity.
+ * @param sourceBounds the rect containing the source bounds of the clicked icon to open
+ * this shortcut.
+ *
+ * @see #startActivity(Intent)
+ */
+ public void startShortcutActivity(@NonNull ShortcutInfo shortcut,
+ @NonNull ActivityOptions options, @Nullable Rect sourceBounds) {
+ LauncherApps service =
+ (LauncherApps) mContext.getSystemService(Context.LAUNCHER_APPS_SERVICE);
+ options.setLaunchDisplayId(mVirtualDisplay.getDisplay().getDisplayId());
+ service.startShortcut(shortcut, sourceBounds, options.toBundle());
+ }
+
+ /**
* Check if container is ready to launch and create {@link ActivityOptions} to target the
* virtual display.
*/
diff --git a/core/java/android/app/admin/DevicePolicyManager.java b/core/java/android/app/admin/DevicePolicyManager.java
index 50adb7c..39dc51e 100644
--- a/core/java/android/app/admin/DevicePolicyManager.java
+++ b/core/java/android/app/admin/DevicePolicyManager.java
@@ -88,7 +88,6 @@
import android.util.ArraySet;
import android.util.Log;
-import com.android.internal.R;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.os.BackgroundThread;
import com.android.internal.util.Preconditions;
@@ -4198,6 +4197,12 @@
* The calling device admin must have requested {@link DeviceAdminInfo#USES_POLICY_WIPE_DATA} to
* be able to call this method; if it has not, a security exception will be thrown.
*
+ * If the caller is a profile owner of an organization-owned managed profile, it may
+ * additionally call this method on the parent instance.
+ * Calling this method on the parent {@link DevicePolicyManager} instance would wipe the
+ * entire device, while calling it on the current profile instance would relinquish the device
+ * for personal use, removing the work profile and all policies set by the profile owner.
+ *
* @param flags Bit mask of additional options: currently supported flags are
* {@link #WIPE_EXTERNAL_STORAGE}, {@link #WIPE_RESET_PROTECTION_DATA},
* {@link #WIPE_EUICC} and {@link #WIPE_SILENTLY}.
@@ -4205,10 +4210,7 @@
* that uses {@link DeviceAdminInfo#USES_POLICY_WIPE_DATA}
*/
public void wipeData(int flags) {
- throwIfParentInstance("wipeData");
- final String wipeReasonForUser = mContext.getString(
- R.string.work_profile_deleted_description_dpm_wipe);
- wipeDataInternal(flags, wipeReasonForUser);
+ wipeDataInternal(flags, "");
}
/**
@@ -4221,6 +4223,12 @@
* The calling device admin must have requested {@link DeviceAdminInfo#USES_POLICY_WIPE_DATA} to
* be able to call this method; if it has not, a security exception will be thrown.
*
+ * If the caller is a profile owner of an organization-owned managed profile, it may
+ * additionally call this method on the parent instance.
+ * Calling this method on the parent {@link DevicePolicyManager} instance would wipe the
+ * entire device, while calling it on the current profile instance would relinquish the device
+ * for personal use, removing the work profile and all policies set by the profile owner.
+ *
* @param flags Bit mask of additional options: currently supported flags are
* {@link #WIPE_EXTERNAL_STORAGE}, {@link #WIPE_RESET_PROTECTION_DATA} and
* {@link #WIPE_EUICC}.
@@ -4232,7 +4240,6 @@
* {@link #WIPE_SILENTLY} is set.
*/
public void wipeData(int flags, @NonNull CharSequence reason) {
- throwIfParentInstance("wipeData");
Preconditions.checkNotNull(reason, "reason string is null");
Preconditions.checkStringNotEmpty(reason, "reason string is empty");
Preconditions.checkArgument((flags & WIPE_SILENTLY) == 0, "WIPE_SILENTLY cannot be set");
@@ -4250,7 +4257,7 @@
private void wipeDataInternal(int flags, @NonNull String wipeReasonForUser) {
if (mService != null) {
try {
- mService.wipeDataWithReason(flags, wipeReasonForUser);
+ mService.wipeDataWithReason(flags, wipeReasonForUser, mParentInstance);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -4994,14 +5001,15 @@
* <p>Device owner, profile owner and their delegated certificate installer can use
* {@link #ID_TYPE_BASE_INFO} to request inclusion of the general device information
* including manufacturer, model, brand, device and product in the attestation record.
- * Only device owner and their delegated certificate installer can use
- * {@link #ID_TYPE_SERIAL}, {@link #ID_TYPE_IMEI} and {@link #ID_TYPE_MEID} to request
- * unique device identifiers to be attested (the serial number, IMEI and MEID correspondingly),
- * if supported by the device (see {@link #isDeviceIdAttestationSupported()}).
- * Additionally, device owner and their delegated certificate installer can also request the
- * attestation record to be signed using an individual attestation certificate by specifying
- * the {@link #ID_TYPE_INDIVIDUAL_ATTESTATION} flag (if supported by the device, see
- * {@link #isUniqueDeviceAttestationSupported()}).
+ * Only device owner, profile owner on an organization-owned device and their delegated
+ * certificate installers can use {@link #ID_TYPE_SERIAL}, {@link #ID_TYPE_IMEI} and
+ * {@link #ID_TYPE_MEID} to request unique device identifiers to be attested (the serial number,
+ * IMEI and MEID correspondingly), if supported by the device
+ * (see {@link #isDeviceIdAttestationSupported()}).
+ * Additionally, device owner, profile owner on an organization-owned device and their delegated
+ * certificate installers can also request the attestation record to be signed using an
+ * individual attestation certificate by specifying the {@link #ID_TYPE_INDIVIDUAL_ATTESTATION}
+ * flag (if supported by the device, see {@link #isUniqueDeviceAttestationSupported()}).
* <p>
* If any of {@link #ID_TYPE_SERIAL}, {@link #ID_TYPE_IMEI} and {@link #ID_TYPE_MEID}
* is set, it is implicitly assumed that {@link #ID_TYPE_BASE_INFO} is also set.
@@ -5689,11 +5697,21 @@
* <p>
* The calling device admin must be a device owner, or alternatively a profile owner from
* Android 8.0 (API level 26) or higher. If it is not, a security exception will be thrown.
+ * <p>
+ * Staring from Android 11, this API switches to use
+ * {@link UserManager#DISALLOW_CONFIG_DATE_TIME} to enforce the auto time settings. Calling
+ * this API to enforce auto time will result in
+ * {@link UserManager#DISALLOW_CONFIG_DATE_TIME} being set, while calling this API to lift
+ * the requirement will result in {@link UserManager#DISALLOW_CONFIG_DATE_TIME} being cleared.
*
* @param admin Which {@link DeviceAdminReceiver} this request is associated with.
* @param required Whether auto time is set required or not.
* @throws SecurityException if {@code admin} is not a device owner.
+ * @deprecated From {@link android.os.Build.VERSION_CODES#R}. Use {@link #setAutoTime}
+ * to turn auto time on or off and use {@link UserManager#DISALLOW_CONFIG_DATE_TIME}
+ * to prevent the user from changing this setting.
*/
+ @Deprecated
public void setAutoTimeRequired(@NonNull ComponentName admin, boolean required) {
throwIfParentInstance("setAutoTimeRequired");
if (mService != null) {
@@ -5707,7 +5725,9 @@
/**
* @return true if auto time is required.
+ * @deprecated From {@link android.os.Build.VERSION_CODES#R}. Use {@link #getAutoTime}
*/
+ @Deprecated
public boolean getAutoTimeRequired() {
throwIfParentInstance("getAutoTimeRequired");
if (mService != null) {
@@ -5721,6 +5741,47 @@
}
/**
+ * Called by a device owner, a profile owner for the primary user or a profile
+ * owner of an organization-owned managed profile to turn auto time on and off.
+ * Callers are recommended to use {@link UserManager#DISALLOW_CONFIG_DATE_TIME}
+ * to prevent the user from changing this setting.
+ * <p>
+ * If user restriction {@link UserManager#DISALLOW_CONFIG_DATE_TIME} is used,
+ * no user will be able set the date and time. Instead, the network date
+ * and time will be used.
+ *
+ * @param admin Which {@link DeviceAdminReceiver} this request is associated with.
+ * @param enabled Whether time should be obtained automatically from the network or not.
+ * @throws SecurityException if caller is not a device owner, a profile owner for the
+ * primary user, or a profile owner of an organization-owned managed profile.
+ */
+ public void setAutoTime(@NonNull ComponentName admin, boolean enabled) {
+ if (mService != null) {
+ try {
+ mService.setAutoTime(admin, enabled);
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+ }
+
+ /**
+ * @return true if auto time is enabled on the device.
+ * @throws SecurityException if caller is not a device owner, a profile owner for the
+ * primary user, or a profile owner of an organization-owned managed profile.
+ */
+ public boolean getAutoTime(@NonNull ComponentName admin) {
+ if (mService != null) {
+ try {
+ return mService.getAutoTime(admin);
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+ return false;
+ }
+
+ /**
* Called by a device owner to set whether all users created on the device should be ephemeral.
* <p>
* The system user is exempt from this policy - it is never ephemeral.
@@ -6356,6 +6417,9 @@
/**
* Sets the device owner information to be shown on the lock screen.
* <p>
+ * Device owner information set using this method overrides any owner information manually set
+ * by the user and prevents the user from further changing it.
+ * <p>
* If the device owner information is {@code null} or empty then the device owner info is
* cleared and the user owner info is shown on the lock screen if it is set.
* <p>
@@ -6365,6 +6429,8 @@
* If the device owner information needs to be localized, it is the responsibility of the
* {@link DeviceAdminReceiver} to listen to the {@link Intent#ACTION_LOCALE_CHANGED} broadcast
* and set a new version of this string accordingly.
+ * <p>
+ * May be called by the device owner or the profile owner of an organization-owned device.
*
* @param admin The name of the admin component to check.
* @param info Device owner information which will be displayed instead of the user owner info.
@@ -9287,6 +9353,12 @@
* <li>{@link #setRequiredStrongAuthTimeout}</li>
* </ul>
*
+ * <p>The following methods can be called by the profile owner of a managed profile
+ * on an organization-owned device:
+ * <ul>
+ * <li>{@link #wipeData}</li>
+ * </ul>
+ *
* @return a new instance of {@link DevicePolicyManager} that acts on the parent profile.
* @throws SecurityException if {@code admin} is not a profile owner.
*/
@@ -10819,28 +10891,38 @@
}
/**
- * Grants the profile owner of the given user access to device identifiers (such as
- * serial number, IMEI and MEID).
+ * Deprecated. Use {@code markProfileOwnerOnOrganizationOwnedDevice} instead.
+ * Throws UnsupportedOperationException when called.
*
- * <p>This lets the profile owner request inclusion of device identifiers when calling
- * {@link generateKeyPair}.
- *
- * <p>This grant is necessary to guarantee that profile owners can access device identifiers.
- *
- * <p>Privileged system API - meant to be called by the system, particularly the managed
- * provisioning app, when a work profile is set up.
+ * @deprecated Use {@link #markProfileOwnerOnOrganizationOwnedDevice} instead.
*
* @hide
*/
+ @Deprecated
@SystemApi
@RequiresPermission(value = android.Manifest.permission.GRANT_PROFILE_OWNER_DEVICE_IDS_ACCESS,
conditional = true)
public void setProfileOwnerCanAccessDeviceIds(@NonNull ComponentName who) {
+ throw new UnsupportedOperationException(
+ "This method is deprecated. use markProfileOwnerOnOrganizationOwnedDevice instead"
+ + ".");
+ }
+
+ /**
+ * Marks the profile owner of the given user as managing an organization-owned device.
+ * That will give it access to device identifiers (such as serial number, IMEI and MEID)
+ * as well as other privileges.
+ *
+ * @hide
+ */
+ @RequiresPermission(value = android.Manifest.permission.MARK_DEVICE_ORGANIZATION_OWNED,
+ conditional = true)
+ public void markProfileOwnerOnOrganizationOwnedDevice(@NonNull ComponentName who) {
if (mService == null) {
return;
}
try {
- mService.grantDeviceIdsAccessToProfileOwner(who, myUserId());
+ mService.markProfileOwnerOnOrganizationOwnedDevice(who, myUserId());
} catch (RemoteException re) {
throw re.rethrowFromSystemServer();
}
diff --git a/core/java/android/app/admin/IDevicePolicyManager.aidl b/core/java/android/app/admin/IDevicePolicyManager.aidl
index 4894751..f55026c 100644
--- a/core/java/android/app/admin/IDevicePolicyManager.aidl
+++ b/core/java/android/app/admin/IDevicePolicyManager.aidl
@@ -102,7 +102,7 @@
void lockNow(int flags, boolean parent);
- void wipeDataWithReason(int flags, String wipeReasonForUser);
+ void wipeDataWithReason(int flags, String wipeReasonForUser, boolean parent);
ComponentName setGlobalProxy(in ComponentName admin, String proxySpec, String exclusionList);
ComponentName getGlobalProxyAdmin(int userHandle);
@@ -295,6 +295,9 @@
void setAutoTimeRequired(in ComponentName who, boolean required);
boolean getAutoTimeRequired();
+ void setAutoTime(in ComponentName who, boolean enabled);
+ boolean getAutoTime(in ComponentName who);
+
void setForceEphemeralUsers(in ComponentName who, boolean forceEpehemeralUsers);
boolean getForceEphemeralUsers(in ComponentName who);
@@ -426,7 +429,7 @@
int getGlobalPrivateDnsMode(in ComponentName admin);
String getGlobalPrivateDnsHost(in ComponentName admin);
- void grantDeviceIdsAccessToProfileOwner(in ComponentName who, int userId);
+ void markProfileOwnerOnOrganizationOwnedDevice(in ComponentName who, int userId);
void installUpdateFromFile(in ComponentName admin, in ParcelFileDescriptor updateFileDescriptor, in StartInstallingUpdateCallback listener);
diff --git a/core/java/android/app/backup/BackupManager.java b/core/java/android/app/backup/BackupManager.java
index 25caaaa..93d1e71 100644
--- a/core/java/android/app/backup/BackupManager.java
+++ b/core/java/android/app/backup/BackupManager.java
@@ -34,6 +34,8 @@
import android.util.Log;
import android.util.Pair;
+import java.util.List;
+
/**
* The interface through which an application interacts with the Android backup service to
* request backup and restore operations.
@@ -948,6 +950,29 @@
return null;
}
+ /**
+ * Excludes keys from KV restore for a given package. The corresponding data will be excluded
+ * from the data set available the backup agent during restore. However, final list of keys
+ * that have been excluded will be passed to the agent to make it aware of the exclusions.
+ *
+ * @param packageName The name of the package for which to exclude keys.
+ * @param keys The list of keys to exclude.
+ *
+ * @hide
+ */
+ @SystemApi
+ @RequiresPermission(android.Manifest.permission.BACKUP)
+ public void excludeKeysFromRestore(@NonNull String packageName, @NonNull List<String> keys) {
+ checkServiceBinder();
+ if (sService != null) {
+ try {
+ sService.excludeKeysFromRestore(packageName, keys);
+ } catch (RemoteException e) {
+ Log.e(TAG, "excludeKeysFromRestore() couldn't connect");
+ }
+ }
+ }
+
/*
* We wrap incoming binder calls with a private class implementation that
* redirects them into main-thread actions. This serializes the backup
diff --git a/core/java/android/app/backup/IBackupManager.aidl b/core/java/android/app/backup/IBackupManager.aidl
index 2dfaad7..099272d 100644
--- a/core/java/android/app/backup/IBackupManager.aidl
+++ b/core/java/android/app/backup/IBackupManager.aidl
@@ -710,4 +710,10 @@
*/
void setAncestralSerialNumber(in long ancestralSerialNumber);
+ /**
+ * Excludes keys from KV restore for a given package. The corresponding data will be excluded
+ * from the data set available the backup agent during restore. However, final list of keys
+ * that have been excluded will be passed to the agent to make it aware of the exclusions.
+ */
+ void excludeKeysFromRestore(String packageName, in List<String> keys);
}
diff --git a/core/java/android/app/prediction/AppTargetEvent.java b/core/java/android/app/prediction/AppTargetEvent.java
index 26ff0c1..f519145 100644
--- a/core/java/android/app/prediction/AppTargetEvent.java
+++ b/core/java/android/app/prediction/AppTargetEvent.java
@@ -38,7 +38,7 @@
/**
* @hide
*/
- @IntDef({ACTION_LAUNCH, ACTION_DISMISS, ACTION_PIN})
+ @IntDef({ACTION_LAUNCH, ACTION_DISMISS, ACTION_PIN, ACTION_UNPIN})
@Retention(RetentionPolicy.SOURCE)
public @interface ActionType {}
@@ -57,6 +57,11 @@
*/
public static final int ACTION_PIN = 3;
+ /**
+ * Event type constant indicating an app target has been un-pinned.
+ */
+ public static final int ACTION_UNPIN = 4;
+
private final AppTarget mTarget;
private final String mLocation;
private final int mAction;
diff --git a/core/java/android/app/timedetector/ITimeDetectorService.aidl b/core/java/android/app/timedetector/ITimeDetectorService.aidl
index ddc4932..9877fc7 100644
--- a/core/java/android/app/timedetector/ITimeDetectorService.aidl
+++ b/core/java/android/app/timedetector/ITimeDetectorService.aidl
@@ -16,6 +16,7 @@
package android.app.timedetector;
+import android.app.timedetector.ManualTimeSuggestion;
import android.app.timedetector.PhoneTimeSuggestion;
/**
@@ -33,4 +34,5 @@
*/
interface ITimeDetectorService {
void suggestPhoneTime(in PhoneTimeSuggestion timeSuggestion);
+ void suggestManualTime(in ManualTimeSuggestion timeSuggestion);
}
diff --git a/core/java/android/app/timedetector/ManualTimeSuggestion.aidl b/core/java/android/app/timedetector/ManualTimeSuggestion.aidl
new file mode 100644
index 0000000..2139404
--- /dev/null
+++ b/core/java/android/app/timedetector/ManualTimeSuggestion.aidl
@@ -0,0 +1,19 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.app.timedetector;
+
+parcelable ManualTimeSuggestion;
diff --git a/core/java/android/app/timedetector/ManualTimeSuggestion.java b/core/java/android/app/timedetector/ManualTimeSuggestion.java
new file mode 100644
index 0000000..e7d619a
--- /dev/null
+++ b/core/java/android/app/timedetector/ManualTimeSuggestion.java
@@ -0,0 +1,127 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.app.timedetector;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.util.TimestampedValue;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * A time signal from a manual (user provided) source. The value consists of the number of
+ * milliseconds elapsed since 1/1/1970 00:00:00 UTC and the time according to the elapsed realtime
+ * clock when that number was established. The elapsed realtime clock is considered accurate but
+ * volatile, so time signals must not be persisted across device resets.
+ *
+ * @hide
+ */
+public final class ManualTimeSuggestion implements Parcelable {
+
+ public static final @NonNull Creator<ManualTimeSuggestion> CREATOR =
+ new Creator<ManualTimeSuggestion>() {
+ public ManualTimeSuggestion createFromParcel(Parcel in) {
+ return ManualTimeSuggestion.createFromParcel(in);
+ }
+
+ public ManualTimeSuggestion[] newArray(int size) {
+ return new ManualTimeSuggestion[size];
+ }
+ };
+
+ @NonNull
+ private final TimestampedValue<Long> mUtcTime;
+ @Nullable
+ private ArrayList<String> mDebugInfo;
+
+ public ManualTimeSuggestion(@NonNull TimestampedValue<Long> utcTime) {
+ mUtcTime = Objects.requireNonNull(utcTime);
+ }
+
+ private static ManualTimeSuggestion createFromParcel(Parcel in) {
+ TimestampedValue<Long> utcTime = in.readParcelable(null /* classLoader */);
+ ManualTimeSuggestion suggestion = new ManualTimeSuggestion(utcTime);
+ @SuppressWarnings("unchecked")
+ ArrayList<String> debugInfo = (ArrayList<String>) in.readArrayList(null /* classLoader */);
+ suggestion.mDebugInfo = debugInfo;
+ return suggestion;
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(@NonNull Parcel dest, int flags) {
+ dest.writeParcelable(mUtcTime, 0);
+ dest.writeList(mDebugInfo);
+ }
+
+ @NonNull
+ public TimestampedValue<Long> getUtcTime() {
+ return mUtcTime;
+ }
+
+ @NonNull
+ public List<String> getDebugInfo() {
+ return Collections.unmodifiableList(mDebugInfo);
+ }
+
+ /**
+ * Associates information with the instance that can be useful for debugging / logging. The
+ * information is present in {@link #toString()} but is not considered for
+ * {@link #equals(Object)} and {@link #hashCode()}.
+ */
+ public void addDebugInfo(String... debugInfos) {
+ if (mDebugInfo == null) {
+ mDebugInfo = new ArrayList<>();
+ }
+ mDebugInfo.addAll(Arrays.asList(debugInfos));
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ ManualTimeSuggestion that = (ManualTimeSuggestion) o;
+ return Objects.equals(mUtcTime, that.mUtcTime);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(mUtcTime);
+ }
+
+ @Override
+ public String toString() {
+ return "ManualTimeSuggestion{"
+ + "mUtcTime=" + mUtcTime
+ + ", mDebugInfo=" + mDebugInfo
+ + '}';
+ }
+}
diff --git a/core/java/android/app/timedetector/PhoneTimeSuggestion.java b/core/java/android/app/timedetector/PhoneTimeSuggestion.java
index 475a4aa..233dbbc 100644
--- a/core/java/android/app/timedetector/PhoneTimeSuggestion.java
+++ b/core/java/android/app/timedetector/PhoneTimeSuggestion.java
@@ -29,7 +29,9 @@
import java.util.Objects;
/**
- * A time signal from a telephony source. The value consists of the number of milliseconds elapsed
+ * A time signal from a telephony source. The value can be {@code null} to indicate that the
+ * telephony source has entered an "un-opinionated" state and any previously sent suggestions are
+ * being withdrawn. When not {@code null}, the value consists of the number of milliseconds elapsed
* since 1/1/1970 00:00:00 UTC and the time according to the elapsed realtime clock when that number
* was established. The elapsed realtime clock is considered accurate but volatile, so time signals
* must not be persisted across device resets.
@@ -50,20 +52,17 @@
};
private final int mPhoneId;
- @NonNull
- private final TimestampedValue<Long> mUtcTime;
- @Nullable
- private ArrayList<String> mDebugInfo;
+ @Nullable private TimestampedValue<Long> mUtcTime;
+ @Nullable private ArrayList<String> mDebugInfo;
- public PhoneTimeSuggestion(int phoneId, @NonNull TimestampedValue<Long> utcTime) {
+ public PhoneTimeSuggestion(int phoneId) {
mPhoneId = phoneId;
- mUtcTime = Objects.requireNonNull(utcTime);
}
private static PhoneTimeSuggestion createFromParcel(Parcel in) {
int phoneId = in.readInt();
- TimestampedValue<Long> utcTime = in.readParcelable(null /* classLoader */);
- PhoneTimeSuggestion suggestion = new PhoneTimeSuggestion(phoneId, utcTime);
+ PhoneTimeSuggestion suggestion = new PhoneTimeSuggestion(phoneId);
+ suggestion.setUtcTime(in.readParcelable(null /* classLoader */));
@SuppressWarnings("unchecked")
ArrayList<String> debugInfo = (ArrayList<String>) in.readArrayList(null /* classLoader */);
suggestion.mDebugInfo = debugInfo;
@@ -86,7 +85,11 @@
return mPhoneId;
}
- @NonNull
+ public void setUtcTime(@Nullable TimestampedValue<Long> utcTime) {
+ mUtcTime = utcTime;
+ }
+
+ @Nullable
public TimestampedValue<Long> getUtcTime() {
return mUtcTime;
}
diff --git a/core/java/android/app/timedetector/TimeDetector.java b/core/java/android/app/timedetector/TimeDetector.java
index 334e958..48d5cd2 100644
--- a/core/java/android/app/timedetector/TimeDetector.java
+++ b/core/java/android/app/timedetector/TimeDetector.java
@@ -17,19 +17,22 @@
package android.app.timedetector;
import android.annotation.NonNull;
+import android.annotation.RequiresPermission;
import android.annotation.SystemService;
import android.content.Context;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.ServiceManager.ServiceNotFoundException;
+import android.os.SystemClock;
import android.util.Log;
+import android.util.TimestampedValue;
/**
* The interface through which system components can send signals to the TimeDetectorService.
* @hide
*/
@SystemService(Context.TIME_DETECTOR_SERVICE)
-public final class TimeDetector {
+public class TimeDetector {
private static final String TAG = "timedetector.TimeDetector";
private static final boolean DEBUG = false;
@@ -41,10 +44,11 @@
}
/**
- * Suggests the current time to the detector. The detector may ignore the signal if better
- * signals are available such as those that come from more reliable sources or were
- * determined more recently.
+ * Suggests the current phone-signal derived time to the detector. The detector may ignore the
+ * signal if better signals are available such as those that come from more reliable sources or
+ * were determined more recently.
*/
+ @RequiresPermission(android.Manifest.permission.SET_TIME)
public void suggestPhoneTime(@NonNull PhoneTimeSuggestion timeSuggestion) {
if (DEBUG) {
Log.d(TAG, "suggestPhoneTime called: " + timeSuggestion);
@@ -56,4 +60,29 @@
}
}
+ /**
+ * Suggests the user's manually entered current time to the detector.
+ */
+ @RequiresPermission(android.Manifest.permission.SET_TIME)
+ public void suggestManualTime(@NonNull ManualTimeSuggestion timeSuggestion) {
+ if (DEBUG) {
+ Log.d(TAG, "suggestManualTime called: " + timeSuggestion);
+ }
+ try {
+ mITimeDetectorService.suggestManualTime(timeSuggestion);
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+
+ /**
+ * A shared utility method to create a {@link ManualTimeSuggestion}.
+ */
+ public static ManualTimeSuggestion createManualTimeSuggestion(long when, String why) {
+ TimestampedValue<Long> utcTime =
+ new TimestampedValue<>(SystemClock.elapsedRealtime(), when);
+ ManualTimeSuggestion manualTimeSuggestion = new ManualTimeSuggestion(utcTime);
+ manualTimeSuggestion.addDebugInfo(why);
+ return manualTimeSuggestion;
+ }
}
diff --git a/core/java/android/app/timezonedetector/ITimeZoneDetectorService.aidl b/core/java/android/app/timezonedetector/ITimeZoneDetectorService.aidl
new file mode 100644
index 0000000..df643831
--- /dev/null
+++ b/core/java/android/app/timezonedetector/ITimeZoneDetectorService.aidl
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.app.timezonedetector;
+
+import android.app.timezonedetector.ManualTimeZoneSuggestion;
+import android.app.timezonedetector.PhoneTimeZoneSuggestion;
+
+/**
+ * System private API to communicate with time zone detector service.
+ *
+ * <p>Used to provide information to the Time Zone Detector Service from other parts of the Android
+ * system that have access to time zone-related signals, e.g. telephony.
+ *
+ * <p>Use the {@link android.app.timezonedetector.TimeZoneDetector} class rather than going through
+ * this Binder interface directly. See {@link android.app.timezonedetector.TimeZoneDetectorService}
+ * for more complete documentation.
+ *
+ *
+ * {@hide}
+ */
+interface ITimeZoneDetectorService {
+ void suggestManualTimeZone(in ManualTimeZoneSuggestion timeZoneSuggestion);
+ void suggestPhoneTimeZone(in PhoneTimeZoneSuggestion timeZoneSuggestion);
+}
diff --git a/core/java/android/app/timezonedetector/ManualTimeZoneSuggestion.aidl b/core/java/android/app/timezonedetector/ManualTimeZoneSuggestion.aidl
new file mode 100644
index 0000000..d1be86a
--- /dev/null
+++ b/core/java/android/app/timezonedetector/ManualTimeZoneSuggestion.aidl
@@ -0,0 +1,19 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.app.timezonedetector;
+
+parcelable ManualTimeZoneSuggestion;
diff --git a/core/java/android/app/timezonedetector/ManualTimeZoneSuggestion.java b/core/java/android/app/timezonedetector/ManualTimeZoneSuggestion.java
new file mode 100644
index 0000000..a6b953b
--- /dev/null
+++ b/core/java/android/app/timezonedetector/ManualTimeZoneSuggestion.java
@@ -0,0 +1,128 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.app.timezonedetector;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * A time signal from a manual (user provided) source. The value consists of the number of
+ * milliseconds elapsed since 1/1/1970 00:00:00 UTC and the time according to the elapsed realtime
+ * clock when that number was established. The elapsed realtime clock is considered accurate but
+ * volatile, so time signals must not be persisted across device resets.
+ *
+ * @hide
+ */
+public final class ManualTimeZoneSuggestion implements Parcelable {
+
+ public static final @NonNull Creator<ManualTimeZoneSuggestion> CREATOR =
+ new Creator<ManualTimeZoneSuggestion>() {
+ public ManualTimeZoneSuggestion createFromParcel(Parcel in) {
+ return ManualTimeZoneSuggestion.createFromParcel(in);
+ }
+
+ public ManualTimeZoneSuggestion[] newArray(int size) {
+ return new ManualTimeZoneSuggestion[size];
+ }
+ };
+
+ @NonNull
+ private final String mZoneId;
+ @Nullable
+ private ArrayList<String> mDebugInfo;
+
+ public ManualTimeZoneSuggestion(@NonNull String zoneId) {
+ mZoneId = Objects.requireNonNull(zoneId);
+ }
+
+ private static ManualTimeZoneSuggestion createFromParcel(Parcel in) {
+ String zoneId = in.readString();
+ ManualTimeZoneSuggestion suggestion = new ManualTimeZoneSuggestion(zoneId);
+ @SuppressWarnings("unchecked")
+ ArrayList<String> debugInfo = (ArrayList<String>) in.readArrayList(null /* classLoader */);
+ suggestion.mDebugInfo = debugInfo;
+ return suggestion;
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(@NonNull Parcel dest, int flags) {
+ dest.writeString(mZoneId);
+ dest.writeList(mDebugInfo);
+ }
+
+ @NonNull
+ public String getZoneId() {
+ return mZoneId;
+ }
+
+ @NonNull
+ public List<String> getDebugInfo() {
+ return mDebugInfo == null
+ ? Collections.emptyList() : Collections.unmodifiableList(mDebugInfo);
+ }
+
+ /**
+ * Associates information with the instance that can be useful for debugging / logging. The
+ * information is present in {@link #toString()} but is not considered for
+ * {@link #equals(Object)} and {@link #hashCode()}.
+ */
+ public void addDebugInfo(String... debugInfos) {
+ if (mDebugInfo == null) {
+ mDebugInfo = new ArrayList<>();
+ }
+ mDebugInfo.addAll(Arrays.asList(debugInfos));
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ ManualTimeZoneSuggestion
+ that = (ManualTimeZoneSuggestion) o;
+ return Objects.equals(mZoneId, that.mZoneId);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(mZoneId);
+ }
+
+ @Override
+ public String toString() {
+ return "ManualTimeSuggestion{"
+ + "mZoneId=" + mZoneId
+ + ", mDebugInfo=" + mDebugInfo
+ + '}';
+ }
+}
diff --git a/core/java/android/app/timezonedetector/PhoneTimeZoneSuggestion.aidl b/core/java/android/app/timezonedetector/PhoneTimeZoneSuggestion.aidl
new file mode 100644
index 0000000..3ad903b
--- /dev/null
+++ b/core/java/android/app/timezonedetector/PhoneTimeZoneSuggestion.aidl
@@ -0,0 +1,19 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.app.timezonedetector;
+
+parcelable PhoneTimeZoneSuggestion;
diff --git a/core/java/android/app/timezonedetector/PhoneTimeZoneSuggestion.java b/core/java/android/app/timezonedetector/PhoneTimeZoneSuggestion.java
new file mode 100644
index 0000000..e8162488
--- /dev/null
+++ b/core/java/android/app/timezonedetector/PhoneTimeZoneSuggestion.java
@@ -0,0 +1,341 @@
+/*
+ * Copyright 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.app.timezonedetector;
+
+import android.annotation.IntDef;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * A suggested time zone from a Phone-based signal, e.g. from MCC and NITZ information.
+ *
+ * @hide
+ */
+public final class PhoneTimeZoneSuggestion implements Parcelable {
+
+ @NonNull
+ public static final Creator<PhoneTimeZoneSuggestion> CREATOR =
+ new Creator<PhoneTimeZoneSuggestion>() {
+ public PhoneTimeZoneSuggestion createFromParcel(Parcel in) {
+ return PhoneTimeZoneSuggestion.createFromParcel(in);
+ }
+
+ public PhoneTimeZoneSuggestion[] newArray(int size) {
+ return new PhoneTimeZoneSuggestion[size];
+ }
+ };
+
+ /**
+ * Creates an empty time zone suggestion, i.e. one that will cancel previous suggestions with
+ * the same {@code phoneId}.
+ */
+ @NonNull
+ public static PhoneTimeZoneSuggestion createEmptySuggestion(
+ int phoneId, @NonNull String debugInfo) {
+ return new Builder(phoneId).addDebugInfo(debugInfo).build();
+ }
+
+ @IntDef({ MATCH_TYPE_NA, MATCH_TYPE_NETWORK_COUNTRY_ONLY, MATCH_TYPE_NETWORK_COUNTRY_AND_OFFSET,
+ MATCH_TYPE_EMULATOR_ZONE_ID, MATCH_TYPE_TEST_NETWORK_OFFSET_ONLY })
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface MatchType {}
+
+ /** Used when match type is not applicable. */
+ public static final int MATCH_TYPE_NA = 0;
+
+ /**
+ * Only the network country is known.
+ */
+ public static final int MATCH_TYPE_NETWORK_COUNTRY_ONLY = 2;
+
+ /**
+ * Both the network county and offset were known.
+ */
+ public static final int MATCH_TYPE_NETWORK_COUNTRY_AND_OFFSET = 3;
+
+ /**
+ * The device is running in an emulator and an NITZ signal was simulated containing an
+ * Android extension with an explicit Olson ID.
+ */
+ public static final int MATCH_TYPE_EMULATOR_ZONE_ID = 4;
+
+ /**
+ * The phone is most likely running in a test network not associated with a country (this is
+ * distinct from the country just not being known yet).
+ * Historically, Android has just picked an arbitrary time zone with the correct offset when
+ * on a test network.
+ */
+ public static final int MATCH_TYPE_TEST_NETWORK_OFFSET_ONLY = 5;
+
+ @IntDef({ QUALITY_NA, QUALITY_SINGLE_ZONE, QUALITY_MULTIPLE_ZONES_WITH_SAME_OFFSET,
+ QUALITY_MULTIPLE_ZONES_WITH_DIFFERENT_OFFSETS })
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface Quality {}
+
+ /** Used when quality is not applicable. */
+ public static final int QUALITY_NA = 0;
+
+ /** There is only one answer */
+ public static final int QUALITY_SINGLE_ZONE = 1;
+
+ /**
+ * There are multiple answers, but they all shared the same offset / DST state at the time
+ * the suggestion was created. i.e. it might be the wrong zone but the user won't notice
+ * immediately if it is wrong.
+ */
+ public static final int QUALITY_MULTIPLE_ZONES_WITH_SAME_OFFSET = 2;
+
+ /**
+ * There are multiple answers with different offsets. The one given is just one possible.
+ */
+ public static final int QUALITY_MULTIPLE_ZONES_WITH_DIFFERENT_OFFSETS = 3;
+
+ /**
+ * The ID of the phone this suggestion is associated with. For multiple-sim devices this
+ * helps to establish origin so filtering / stickiness can be implemented.
+ */
+ private final int mPhoneId;
+
+ /**
+ * The suggestion. {@code null} means there is no current suggestion and any previous suggestion
+ * should be forgotten.
+ */
+ private final String mZoneId;
+
+ /**
+ * The type of "match" used to establish the time zone.
+ */
+ @MatchType
+ private final int mMatchType;
+
+ /**
+ * A measure of the quality of the time zone suggestion, i.e. how confident one could be in
+ * it.
+ */
+ @Quality
+ private final int mQuality;
+
+ /**
+ * Free-form debug information about how the signal was derived. Used for debug only,
+ * intentionally not used in equals(), etc.
+ */
+ private List<String> mDebugInfo;
+
+ private PhoneTimeZoneSuggestion(Builder builder) {
+ mPhoneId = builder.mPhoneId;
+ mZoneId = builder.mZoneId;
+ mMatchType = builder.mMatchType;
+ mQuality = builder.mQuality;
+ mDebugInfo = builder.mDebugInfo != null ? new ArrayList<>(builder.mDebugInfo) : null;
+ }
+
+ @SuppressWarnings("unchecked")
+ private static PhoneTimeZoneSuggestion createFromParcel(Parcel in) {
+ // Use the Builder so we get validation during build().
+ int phoneId = in.readInt();
+ PhoneTimeZoneSuggestion suggestion = new Builder(phoneId)
+ .setZoneId(in.readString())
+ .setMatchType(in.readInt())
+ .setQuality(in.readInt())
+ .build();
+ List<String> debugInfo = in.readArrayList(PhoneTimeZoneSuggestion.class.getClassLoader());
+ if (debugInfo != null) {
+ suggestion.addDebugInfo(debugInfo);
+ }
+ return suggestion;
+ }
+
+ @Override
+ public void writeToParcel(@NonNull Parcel dest, int flags) {
+ dest.writeInt(mPhoneId);
+ dest.writeString(mZoneId);
+ dest.writeInt(mMatchType);
+ dest.writeInt(mQuality);
+ dest.writeList(mDebugInfo);
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ public int getPhoneId() {
+ return mPhoneId;
+ }
+
+ @Nullable
+ public String getZoneId() {
+ return mZoneId;
+ }
+
+ @MatchType
+ public int getMatchType() {
+ return mMatchType;
+ }
+
+ @Quality
+ public int getQuality() {
+ return mQuality;
+ }
+
+ @NonNull
+ public List<String> getDebugInfo() {
+ return mDebugInfo == null
+ ? Collections.emptyList() : Collections.unmodifiableList(mDebugInfo);
+ }
+
+ /**
+ * Associates information with the instance that can be useful for debugging / logging. The
+ * information is present in {@link #toString()} but is not considered for
+ * {@link #equals(Object)} and {@link #hashCode()}.
+ */
+ public void addDebugInfo(@NonNull String debugInfo) {
+ if (mDebugInfo == null) {
+ mDebugInfo = new ArrayList<>();
+ }
+ mDebugInfo.add(debugInfo);
+ }
+
+ /**
+ * Associates information with the instance that can be useful for debugging / logging. The
+ * information is present in {@link #toString()} but is not considered for
+ * {@link #equals(Object)} and {@link #hashCode()}.
+ */
+ public void addDebugInfo(@NonNull List<String> debugInfo) {
+ if (mDebugInfo == null) {
+ mDebugInfo = new ArrayList<>(debugInfo.size());
+ }
+ mDebugInfo.addAll(debugInfo);
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ PhoneTimeZoneSuggestion that = (PhoneTimeZoneSuggestion) o;
+ return mPhoneId == that.mPhoneId
+ && mMatchType == that.mMatchType
+ && mQuality == that.mQuality
+ && Objects.equals(mZoneId, that.mZoneId);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(mPhoneId, mZoneId, mMatchType, mQuality);
+ }
+
+ @Override
+ public String toString() {
+ return "PhoneTimeZoneSuggestion{"
+ + "mPhoneId=" + mPhoneId
+ + ", mZoneId='" + mZoneId + '\''
+ + ", mMatchType=" + mMatchType
+ + ", mQuality=" + mQuality
+ + ", mDebugInfo=" + mDebugInfo
+ + '}';
+ }
+
+ /**
+ * Builds {@link PhoneTimeZoneSuggestion} instances.
+ *
+ * @hide
+ */
+ public static class Builder {
+ private final int mPhoneId;
+ private String mZoneId;
+ @MatchType private int mMatchType;
+ @Quality private int mQuality;
+ private List<String> mDebugInfo;
+
+ public Builder(int phoneId) {
+ mPhoneId = phoneId;
+ }
+
+ /** Returns the builder for call chaining. */
+ public Builder setZoneId(String zoneId) {
+ mZoneId = zoneId;
+ return this;
+ }
+
+ /** Returns the builder for call chaining. */
+ public Builder setMatchType(@MatchType int matchType) {
+ mMatchType = matchType;
+ return this;
+ }
+
+ /** Returns the builder for call chaining. */
+ public Builder setQuality(@Quality int quality) {
+ mQuality = quality;
+ return this;
+ }
+
+ /** Returns the builder for call chaining. */
+ public Builder addDebugInfo(@NonNull String debugInfo) {
+ if (mDebugInfo == null) {
+ mDebugInfo = new ArrayList<>();
+ }
+ mDebugInfo.add(debugInfo);
+ return this;
+ }
+
+ /**
+ * Performs basic structural validation of this instance. e.g. Are all the fields populated
+ * that must be? Are the enum ints set to valid values?
+ */
+ void validate() {
+ int quality = mQuality;
+ int matchType = mMatchType;
+ if (mZoneId == null) {
+ if (quality != QUALITY_NA || matchType != MATCH_TYPE_NA) {
+ throw new RuntimeException("Invalid quality or match type for null zone ID."
+ + " quality=" + quality + ", matchType=" + matchType);
+ }
+ } else {
+ boolean qualityValid = (quality == QUALITY_SINGLE_ZONE
+ || quality == QUALITY_MULTIPLE_ZONES_WITH_SAME_OFFSET
+ || quality == QUALITY_MULTIPLE_ZONES_WITH_DIFFERENT_OFFSETS);
+ boolean matchTypeValid = (matchType == MATCH_TYPE_NETWORK_COUNTRY_ONLY
+ || matchType == MATCH_TYPE_NETWORK_COUNTRY_AND_OFFSET
+ || matchType == MATCH_TYPE_EMULATOR_ZONE_ID
+ || matchType == MATCH_TYPE_TEST_NETWORK_OFFSET_ONLY);
+ if (!qualityValid || !matchTypeValid) {
+ throw new RuntimeException("Invalid quality or match type with zone ID."
+ + " quality=" + quality + ", matchType=" + matchType);
+ }
+ }
+ }
+
+ /** Returns the {@link PhoneTimeZoneSuggestion}. */
+ public PhoneTimeZoneSuggestion build() {
+ validate();
+ return new PhoneTimeZoneSuggestion(this);
+ }
+ }
+}
diff --git a/core/java/android/app/timezonedetector/TimeZoneDetector.java b/core/java/android/app/timezonedetector/TimeZoneDetector.java
new file mode 100644
index 0000000..909cbc2
--- /dev/null
+++ b/core/java/android/app/timezonedetector/TimeZoneDetector.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.app.timezonedetector;
+
+import android.annotation.NonNull;
+import android.annotation.SystemService;
+import android.content.Context;
+import android.os.RemoteException;
+import android.os.ServiceManager;
+import android.os.ServiceManager.ServiceNotFoundException;
+import android.util.Log;
+
+/**
+ * The interface through which system components can send signals to the TimeZoneDetectorService.
+ * @hide
+ */
+@SystemService(Context.TIME_ZONE_DETECTOR_SERVICE)
+public final class TimeZoneDetector {
+ private static final String TAG = "timezonedetector.TimeZoneDetector";
+ private static final boolean DEBUG = false;
+
+ private final ITimeZoneDetectorService mITimeZoneDetectorService;
+
+ public TimeZoneDetector() throws ServiceNotFoundException {
+ mITimeZoneDetectorService = ITimeZoneDetectorService.Stub.asInterface(
+ ServiceManager.getServiceOrThrow(Context.TIME_ZONE_DETECTOR_SERVICE));
+ }
+
+ /**
+ * Suggests the current time zone to the detector. The detector may ignore the signal if better
+ * signals are available such as those that come from more reliable sources or were
+ * determined more recently.
+ */
+ public void suggestPhoneTimeZone(@NonNull PhoneTimeZoneSuggestion timeZoneSuggestion) {
+ if (DEBUG) {
+ Log.d(TAG, "suggestPhoneTimeZone called: " + timeZoneSuggestion);
+ }
+ try {
+ mITimeZoneDetectorService.suggestPhoneTimeZone(timeZoneSuggestion);
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+
+}
diff --git a/core/java/android/app/usage/IUsageStatsManager.aidl b/core/java/android/app/usage/IUsageStatsManager.aidl
index 83c1d61..1211c73 100644
--- a/core/java/android/app/usage/IUsageStatsManager.aidl
+++ b/core/java/android/app/usage/IUsageStatsManager.aidl
@@ -44,7 +44,6 @@
void setAppInactive(String packageName, boolean inactive, int userId);
@UnsupportedAppUsage
boolean isAppInactive(String packageName, int userId);
- void whitelistAppTemporarily(String packageName, long duration, int userId);
void onCarrierPrivilegedAppsChanged();
void reportChooserSelection(String packageName, int userId, String contentType,
in String[] annotations, String action);
diff --git a/core/java/android/app/usage/UsageStatsManager.java b/core/java/android/app/usage/UsageStatsManager.java
index 1f13a1e..fb5645a 100644
--- a/core/java/android/app/usage/UsageStatsManager.java
+++ b/core/java/android/app/usage/UsageStatsManager.java
@@ -29,6 +29,7 @@
import android.content.Context;
import android.content.pm.ParceledListSlice;
import android.os.Build;
+import android.os.PowerWhitelistManager;
import android.os.RemoteException;
import android.os.UserHandle;
import android.os.UserManager;
@@ -159,48 +160,114 @@
public static final int REASON_MAIN_MASK = 0xFF00;
/** @hide */
public static final int REASON_MAIN_DEFAULT = 0x0100;
- /** @hide */
+ /**
+ * The app spent sufficient time in the old bucket without any substantial event so it reached
+ * the timeout threshold to have its bucket lowered.
+ *
+ * @hide
+ */
public static final int REASON_MAIN_TIMEOUT = 0x0200;
- /** @hide */
+ /**
+ * The app was used in some way. Look at the REASON_SUB_USAGE_ reason for more details.
+ * @hide
+ */
public static final int REASON_MAIN_USAGE = 0x0300;
- /** @hide */
+ /**
+ * Forced by a core UID.
+ * @hide
+ */
public static final int REASON_MAIN_FORCED = 0x0400;
- /** @hide */
+ /**
+ * Set by a privileged system app.
+ * @hide
+ */
public static final int REASON_MAIN_PREDICTED = 0x0500;
/** @hide */
public static final int REASON_SUB_MASK = 0x00FF;
- /** @hide */
+ /**
+ * The app was interacted with in some way by the system.
+ * @hide
+ */
public static final int REASON_SUB_USAGE_SYSTEM_INTERACTION = 0x0001;
- /** @hide */
+ /**
+ * A notification was viewed by the user. This does not mean the user interacted with the
+ * notification.
+ * @hide
+ */
public static final int REASON_SUB_USAGE_NOTIFICATION_SEEN = 0x0002;
- /** @hide */
+ /**
+ * The app was interacted with in some way by the user. This includes interacting with
+ * notification.
+ * @hide
+ */
public static final int REASON_SUB_USAGE_USER_INTERACTION = 0x0003;
- /** @hide */
+ /**
+ * An {@link android.app.Activity} moved to the foreground.
+ * @hide
+ */
public static final int REASON_SUB_USAGE_MOVE_TO_FOREGROUND = 0x0004;
- /** @hide */
+ /**
+ * An {@link android.app.Activity} moved to the background.
+ * @hide
+ */
public static final int REASON_SUB_USAGE_MOVE_TO_BACKGROUND = 0x0005;
- /** @hide */
+ /**
+ * There was a system update.
+ * @hide
+ */
public static final int REASON_SUB_USAGE_SYSTEM_UPDATE = 0x0006;
- /** @hide */
+ /**
+ * An app is in an elevated bucket because of an active timeout preventing it from being placed
+ * in a lower bucket.
+ * @hide
+ */
public static final int REASON_SUB_USAGE_ACTIVE_TIMEOUT = 0x0007;
- /** @hide */
+ /**
+ * This system package's sync adapter has been used for another package's content provider.
+ * @hide
+ */
public static final int REASON_SUB_USAGE_SYNC_ADAPTER = 0x0008;
- /** @hide */
+ /**
+ * A slice was pinned by an app.
+ * @hide
+ */
public static final int REASON_SUB_USAGE_SLICE_PINNED = 0x0009;
- /** @hide */
+ /** /**
+ * A slice was pinned by the default launcher or the default assistant.
+ * @hide
+ */
public static final int REASON_SUB_USAGE_SLICE_PINNED_PRIV = 0x000A;
- /** @hide */
+ /**
+ * A sync operation that is exempt from app standby was scheduled when the device wasn't Dozing.
+ * @hide
+ */
public static final int REASON_SUB_USAGE_EXEMPTED_SYNC_SCHEDULED_NON_DOZE = 0x000B;
- /** @hide */
+ /**
+ * A sync operation that is exempt from app standby was scheduled while the device was Dozing.
+ * @hide
+ */
public static final int REASON_SUB_USAGE_EXEMPTED_SYNC_SCHEDULED_DOZE = 0x000C;
- /** @hide */
+ /**
+ * A sync operation that is exempt from app standby started.
+ * @hide
+ */
public static final int REASON_SUB_USAGE_EXEMPTED_SYNC_START = 0x000D;
- /** @hide */
+ /**
+ * A sync operation that is not exempt from app standby was scheduled.
+ * @hide
+ */
public static final int REASON_SUB_USAGE_UNEXEMPTED_SYNC_SCHEDULED = 0x000E;
- /** @hide */
+ /**
+ * A foreground service started.
+ * @hide
+ */
public static final int REASON_SUB_USAGE_FOREGROUND_SERVICE_START = 0x000F;
- /** @hide */
+ /**
+ * The predicted bucket was restored after the app's temporary elevation to the ACTIVE bucket
+ * ended.
+ * @hide
+ */
public static final int REASON_SUB_PREDICTED_RESTORED = 0x0001;
@@ -1044,15 +1111,16 @@
* @param user The user for whom the package should be whitelisted. Passing in a user that is
* not the same as the caller's process will require the INTERACT_ACROSS_USERS permission.
* @see #isAppInactive(String)
+ *
+ * @deprecated Use
+ * {@link android.os.PowerWhitelistManager#whitelistAppTemporarily(String, long)} instead.
*/
@SystemApi
@RequiresPermission(android.Manifest.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST)
+ @Deprecated
public void whitelistAppTemporarily(String packageName, long duration, UserHandle user) {
- try {
- mService.whitelistAppTemporarily(packageName, duration, user.getIdentifier());
- } catch (RemoteException re) {
- throw re.rethrowFromSystemServer();
- }
+ mContext.getSystemService(PowerWhitelistManager.class)
+ .whitelistAppTemporarily(packageName, duration);
}
/**
diff --git a/core/java/android/bluetooth/BluetoothA2dp.java b/core/java/android/bluetooth/BluetoothA2dp.java
index 1fe1b10..accdd8d 100644
--- a/core/java/android/bluetooth/BluetoothA2dp.java
+++ b/core/java/android/bluetooth/BluetoothA2dp.java
@@ -17,10 +17,12 @@
package android.bluetooth;
import android.Manifest;
+import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.RequiresPermission;
import android.annotation.SdkConstant;
import android.annotation.SdkConstant.SdkConstantType;
+import android.annotation.SystemApi;
import android.annotation.UnsupportedAppUsage;
import android.content.Context;
import android.os.Binder;
@@ -439,28 +441,45 @@
* Set priority of the profile
*
* <p> The device should already be paired.
- * Priority can be one of {@link #PRIORITY_ON} orgetBluetoothManager
- * {@link #PRIORITY_OFF},
- *
- * <p>Requires {@link android.Manifest.permission#BLUETOOTH_ADMIN}
- * permission.
+ * Priority can be one of {@link #PRIORITY_ON} or {@link #PRIORITY_OFF},
*
* @param device Paired bluetooth device
* @param priority
* @return true if priority is set, false on error
* @hide
*/
+ @RequiresPermission(Manifest.permission.BLUETOOTH_ADMIN)
public boolean setPriority(BluetoothDevice device, int priority) {
if (DBG) log("setPriority(" + device + ", " + priority + ")");
+ return setConnectionPolicy(device, BluetoothAdapter.priorityToConnectionPolicy(priority));
+ }
+
+ /**
+ * Set connection policy of the profile
+ *
+ * <p> The device should already be paired.
+ * Connection policy can be one of {@link #CONNECTION_POLICY_ALLOWED},
+ * {@link #CONNECTION_POLICY_FORBIDDEN}, {@link #CONNECTION_POLICY_UNKNOWN}
+ *
+ * @param device Paired bluetooth device
+ * @param connectionPolicy is the connection policy to set to for this profile
+ * @return true if connectionPolicy is set, false on error
+ * @hide
+ */
+ @SystemApi
+ @RequiresPermission(Manifest.permission.BLUETOOTH_ADMIN)
+ public boolean setConnectionPolicy(@NonNull BluetoothDevice device,
+ @ConnectionPolicy int connectionPolicy) {
+ if (DBG) log("setConnectionPolicy(" + device + ", " + connectionPolicy + ")");
try {
final IBluetoothA2dp service = getService();
if (service != null && isEnabled()
&& isValidDevice(device)) {
- if (priority != BluetoothProfile.PRIORITY_OFF
- && priority != BluetoothProfile.PRIORITY_ON) {
+ if (connectionPolicy != BluetoothProfile.CONNECTION_POLICY_FORBIDDEN
+ && connectionPolicy != BluetoothProfile.CONNECTION_POLICY_ALLOWED) {
return false;
}
- return service.setPriority(device, priority);
+ return service.setConnectionPolicy(device, connectionPolicy);
}
if (service == null) Log.w(TAG, "Proxy not attached to service");
return false;
@@ -474,8 +493,7 @@
* Get the priority of the profile.
*
* <p> The priority can be any of:
- * {@link #PRIORITY_AUTO_CONNECT}, {@link #PRIORITY_OFF},
- * {@link #PRIORITY_ON}, {@link #PRIORITY_UNDEFINED}
+ * {@link #PRIORITY_OFF}, {@link #PRIORITY_ON}, {@link #PRIORITY_UNDEFINED}
*
* @param device Bluetooth device
* @return priority of the device
@@ -485,17 +503,35 @@
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
public int getPriority(BluetoothDevice device) {
if (VDBG) log("getPriority(" + device + ")");
+ return BluetoothAdapter.connectionPolicyToPriority(getConnectionPolicy(device));
+ }
+
+ /**
+ * Get the connection policy of the profile.
+ *
+ * <p> The connection policy can be any of:
+ * {@link #CONNECTION_POLICY_ALLOWED}, {@link #CONNECTION_POLICY_FORBIDDEN},
+ * {@link #CONNECTION_POLICY_UNKNOWN}
+ *
+ * @param device Bluetooth device
+ * @return connection policy of the device
+ * @hide
+ */
+ @SystemApi
+ @RequiresPermission(Manifest.permission.BLUETOOTH)
+ public @ConnectionPolicy int getConnectionPolicy(@NonNull BluetoothDevice device) {
+ if (VDBG) log("getConnectionPolicy(" + device + ")");
try {
final IBluetoothA2dp service = getService();
if (service != null && isEnabled()
&& isValidDevice(device)) {
- return service.getPriority(device);
+ return service.getConnectionPolicy(device);
}
if (service == null) Log.w(TAG, "Proxy not attached to service");
- return BluetoothProfile.PRIORITY_OFF;
+ return BluetoothProfile.CONNECTION_POLICY_FORBIDDEN;
} catch (RemoteException e) {
Log.e(TAG, "Stack:" + Log.getStackTraceString(new Throwable()));
- return BluetoothProfile.PRIORITY_OFF;
+ return BluetoothProfile.CONNECTION_POLICY_FORBIDDEN;
}
}
diff --git a/core/java/android/bluetooth/BluetoothA2dpSink.java b/core/java/android/bluetooth/BluetoothA2dpSink.java
index 5a8055a..c17834a 100755
--- a/core/java/android/bluetooth/BluetoothA2dpSink.java
+++ b/core/java/android/bluetooth/BluetoothA2dpSink.java
@@ -16,6 +16,9 @@
package android.bluetooth;
+import android.Manifest;
+import android.annotation.RequiresPermission;
+import android.annotation.SystemApi;
import android.annotation.UnsupportedAppUsage;
import android.content.Context;
import android.os.Binder;
@@ -317,27 +320,43 @@
* Set priority of the profile
*
* <p> The device should already be paired.
- * Priority can be one of {@link #PRIORITY_ON} orgetBluetoothManager
- * {@link #PRIORITY_OFF},
- *
- * <p>Requires {@link android.Manifest.permission#BLUETOOTH_ADMIN}
- * permission.
+ * Priority can be one of {@link #PRIORITY_ON} or {@link #PRIORITY_OFF},
*
* @param device Paired bluetooth device
* @param priority
* @return true if priority is set, false on error
* @hide
*/
+ @RequiresPermission(Manifest.permission.BLUETOOTH_ADMIN)
public boolean setPriority(BluetoothDevice device, int priority) {
if (DBG) log("setPriority(" + device + ", " + priority + ")");
+ return setConnectionPolicy(device, BluetoothAdapter.priorityToConnectionPolicy(priority));
+ }
+
+ /**
+ * Set connection policy of the profile
+ *
+ * <p> The device should already be paired.
+ * Connection policy can be one of {@link #CONNECTION_POLICY_ALLOWED},
+ * {@link #CONNECTION_POLICY_FORBIDDEN}, {@link #CONNECTION_POLICY_UNKNOWN}
+ *
+ * @param device Paired bluetooth device
+ * @param connectionPolicy is the connection policy to set to for this profile
+ * @return true if connectionPolicy is set, false on error
+ * @hide
+ */
+ @SystemApi
+ @RequiresPermission(Manifest.permission.BLUETOOTH_ADMIN)
+ public boolean setConnectionPolicy(BluetoothDevice device, int connectionPolicy) {
+ if (DBG) log("setConnectionPolicy(" + device + ", " + connectionPolicy + ")");
final IBluetoothA2dpSink service = getService();
if (service != null && isEnabled() && isValidDevice(device)) {
- if (priority != BluetoothProfile.PRIORITY_OFF
- && priority != BluetoothProfile.PRIORITY_ON) {
+ if (connectionPolicy != BluetoothProfile.CONNECTION_POLICY_FORBIDDEN
+ && connectionPolicy != BluetoothProfile.CONNECTION_POLICY_ALLOWED) {
return false;
}
try {
- return service.setPriority(device, priority);
+ return service.setConnectionPolicy(device, connectionPolicy);
} catch (RemoteException e) {
Log.e(TAG, "Stack:" + Log.getStackTraceString(new Throwable()));
return false;
@@ -351,28 +370,44 @@
* Get the priority of the profile.
*
* <p> The priority can be any of:
- * {@link #PRIORITY_AUTO_CONNECT}, {@link #PRIORITY_OFF},
- * {@link #PRIORITY_ON}, {@link #PRIORITY_UNDEFINED}
- *
- * <p>Requires {@link android.Manifest.permission#BLUETOOTH} permission.
+ * {@link #PRIORITY_OFF}, {@link #PRIORITY_ON}, {@link #PRIORITY_UNDEFINED}
*
* @param device Bluetooth device
* @return priority of the device
* @hide
*/
+ @RequiresPermission(Manifest.permission.BLUETOOTH)
public int getPriority(BluetoothDevice device) {
if (VDBG) log("getPriority(" + device + ")");
+ return BluetoothAdapter.connectionPolicyToPriority(getConnectionPolicy(device));
+ }
+
+ /**
+ * Get the connection policy of the profile.
+ *
+ * <p> The connection policy can be any of:
+ * {@link #CONNECTION_POLICY_ALLOWED}, {@link #CONNECTION_POLICY_FORBIDDEN},
+ * {@link #CONNECTION_POLICY_UNKNOWN}
+ *
+ * @param device Bluetooth device
+ * @return connection policy of the device
+ * @hide
+ */
+ @SystemApi
+ @RequiresPermission(Manifest.permission.BLUETOOTH)
+ public int getConnectionPolicy(BluetoothDevice device) {
+ if (VDBG) log("getConnectionPolicy(" + device + ")");
final IBluetoothA2dpSink service = getService();
if (service != null && isEnabled() && isValidDevice(device)) {
try {
- return service.getPriority(device);
+ return service.getConnectionPolicy(device);
} catch (RemoteException e) {
Log.e(TAG, "Stack:" + Log.getStackTraceString(new Throwable()));
- return BluetoothProfile.PRIORITY_OFF;
+ return BluetoothProfile.CONNECTION_POLICY_FORBIDDEN;
}
}
if (service == null) Log.w(TAG, "Proxy not attached to service");
- return BluetoothProfile.PRIORITY_OFF;
+ return BluetoothProfile.CONNECTION_POLICY_FORBIDDEN;
}
/**
diff --git a/core/java/android/bluetooth/BluetoothAdapter.java b/core/java/android/bluetooth/BluetoothAdapter.java
index 9d152a7..9b5280d 100644
--- a/core/java/android/bluetooth/BluetoothAdapter.java
+++ b/core/java/android/bluetooth/BluetoothAdapter.java
@@ -27,6 +27,7 @@
import android.annotation.SystemApi;
import android.annotation.UnsupportedAppUsage;
import android.app.ActivityThread;
+import android.bluetooth.BluetoothProfile.ConnectionPolicy;
import android.bluetooth.le.BluetoothLeAdvertiser;
import android.bluetooth.le.BluetoothLeScanner;
import android.bluetooth.le.PeriodicAdvertisingManager;
@@ -456,6 +457,37 @@
@Retention(RetentionPolicy.SOURCE)
public @interface IoCapability {}
+ /** @hide */
+ @IntDef(prefix = "ACTIVE_DEVICE_", value = {ACTIVE_DEVICE_AUDIO,
+ ACTIVE_DEVICE_PHONE_CALL, ACTIVE_DEVICE_ALL})
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface ActiveDeviceUse {}
+
+ /**
+ * Use the specified device for audio (a2dp and hearing aid profile)
+ *
+ * @hide
+ */
+ @SystemApi
+ public static final int ACTIVE_DEVICE_AUDIO = 0;
+
+ /**
+ * Use the specified device for phone calls (headset profile and hearing
+ * aid profile)
+ *
+ * @hide
+ */
+ @SystemApi
+ public static final int ACTIVE_DEVICE_PHONE_CALL = 1;
+
+ /**
+ * Use the specified device for a2dp, hearing aid profile, and headset profile
+ *
+ * @hide
+ */
+ @SystemApi
+ public static final int ACTIVE_DEVICE_ALL = 2;
+
/**
* Broadcast Action: The local Bluetooth adapter has started the remote
* device discovery process.
@@ -1734,6 +1766,41 @@
}
/**
+ *
+ * @param device is the remote bluetooth device
+ * @param profiles represents the purpose for which we are setting this as the active device.
+ * Possible values are:
+ * {@link BluetoothAdapter#ACTIVE_DEVICE_AUDIO},
+ * {@link BluetoothAdapter#ACTIVE_DEVICE_PHONE_CALL},
+ * {@link BluetoothAdapter#ACTIVE_DEVICE_ALL}
+ * @return false on immediate error, true otherwise
+ * @hide
+ */
+ @SystemApi
+ @RequiresPermission(Manifest.permission.BLUETOOTH_ADMIN)
+ public boolean setActiveDevice(@Nullable BluetoothDevice device,
+ @ActiveDeviceUse int profiles) {
+ if (profiles != ACTIVE_DEVICE_AUDIO && profiles != ACTIVE_DEVICE_PHONE_CALL
+ && profiles != ACTIVE_DEVICE_ALL) {
+ Log.e(TAG, "Invalid profiles param value in setActiveDevice");
+ return false;
+ }
+
+ try {
+ mServiceLock.readLock().lock();
+ if (mService != null) {
+ return mService.setActiveDevice(device, profiles);
+ }
+ } catch (RemoteException e) {
+ Log.e(TAG, "", e);
+ } finally {
+ mServiceLock.readLock().unlock();
+ }
+
+ return false;
+ }
+
+ /**
* Connects all enabled and supported bluetooth profiles between the local and remote device
*
* @param device is the remote device with which to connect these profiles
@@ -3381,4 +3448,48 @@
void onMetadataChanged(@NonNull BluetoothDevice device, int key,
@Nullable byte[] value);
}
+
+ /**
+ * Converts old constant of priority to the new for connection policy
+ *
+ * @param priority is the priority to convert to connection policy
+ * @return the equivalent connection policy constant to the priority
+ *
+ * @hide
+ */
+ public static @ConnectionPolicy int priorityToConnectionPolicy(int priority) {
+ switch(priority) {
+ case BluetoothProfile.PRIORITY_AUTO_CONNECT:
+ return BluetoothProfile.CONNECTION_POLICY_ALLOWED;
+ case BluetoothProfile.PRIORITY_ON:
+ return BluetoothProfile.CONNECTION_POLICY_ALLOWED;
+ case BluetoothProfile.PRIORITY_OFF:
+ return BluetoothProfile.CONNECTION_POLICY_FORBIDDEN;
+ case BluetoothProfile.PRIORITY_UNDEFINED:
+ return BluetoothProfile.CONNECTION_POLICY_UNKNOWN;
+ default:
+ Log.e(TAG, "setPriority: Invalid priority: " + priority);
+ return BluetoothProfile.CONNECTION_POLICY_UNKNOWN;
+ }
+ }
+
+ /**
+ * Converts new constant of connection policy to the old for priority
+ *
+ * @param connectionPolicy is the connection policy to convert to priority
+ * @return the equivalent priority constant to the connectionPolicy
+ *
+ * @hide
+ */
+ public static int connectionPolicyToPriority(@ConnectionPolicy int connectionPolicy) {
+ switch(connectionPolicy) {
+ case BluetoothProfile.CONNECTION_POLICY_ALLOWED:
+ return BluetoothProfile.PRIORITY_ON;
+ case BluetoothProfile.CONNECTION_POLICY_FORBIDDEN:
+ return BluetoothProfile.PRIORITY_OFF;
+ case BluetoothProfile.CONNECTION_POLICY_UNKNOWN:
+ return BluetoothProfile.PRIORITY_UNDEFINED;
+ }
+ return BluetoothProfile.PRIORITY_UNDEFINED;
+ }
}
diff --git a/core/java/android/bluetooth/BluetoothHeadset.java b/core/java/android/bluetooth/BluetoothHeadset.java
index 672174f..ea3831a 100644
--- a/core/java/android/bluetooth/BluetoothHeadset.java
+++ b/core/java/android/bluetooth/BluetoothHeadset.java
@@ -17,6 +17,7 @@
package android.bluetooth;
import android.Manifest;
+import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.RequiresPermission;
import android.annotation.SdkConstant;
@@ -560,26 +561,45 @@
* Priority can be one of {@link BluetoothProfile#PRIORITY_ON} or
* {@link BluetoothProfile#PRIORITY_OFF},
*
- * <p>Requires {@link android.Manifest.permission#BLUETOOTH_ADMIN}
- * permission.
- *
* @param device Paired bluetooth device
* @param priority
* @return true if priority is set, false on error
* @hide
+ * @deprecated Replaced with {@link #setConnectionPolicy(BluetoothDevice, int)}
*/
+ @Deprecated
@SystemApi
@RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN)
public boolean setPriority(BluetoothDevice device, int priority) {
if (DBG) log("setPriority(" + device + ", " + priority + ")");
+ return setConnectionPolicy(device, BluetoothAdapter.priorityToConnectionPolicy(priority));
+ }
+
+ /**
+ * Set connection policy of the profile
+ *
+ * <p> The device should already be paired.
+ * Connection policy can be one of {@link #CONNECTION_POLICY_ALLOWED},
+ * {@link #CONNECTION_POLICY_FORBIDDEN}, {@link #CONNECTION_POLICY_UNKNOWN}
+ *
+ * @param device Paired bluetooth device
+ * @param connectionPolicy is the connection policy to set to for this profile
+ * @return true if connectionPolicy is set, false on error
+ * @hide
+ */
+ @SystemApi
+ @RequiresPermission(Manifest.permission.BLUETOOTH_ADMIN)
+ public boolean setConnectionPolicy(@NonNull BluetoothDevice device,
+ @ConnectionPolicy int connectionPolicy) {
+ if (DBG) log("setConnectionPolicy(" + device + ", " + connectionPolicy + ")");
final IBluetoothHeadset service = mService;
if (service != null && isEnabled() && isValidDevice(device)) {
- if (priority != BluetoothProfile.PRIORITY_OFF
- && priority != BluetoothProfile.PRIORITY_ON) {
+ if (connectionPolicy != BluetoothProfile.CONNECTION_POLICY_FORBIDDEN
+ && connectionPolicy != BluetoothProfile.CONNECTION_POLICY_ALLOWED) {
return false;
}
try {
- return service.setPriority(device, priority);
+ return service.setConnectionPolicy(device, connectionPolicy);
} catch (RemoteException e) {
Log.e(TAG, Log.getStackTraceString(new Throwable()));
return false;
@@ -596,26 +616,43 @@
* {@link #PRIORITY_AUTO_CONNECT}, {@link #PRIORITY_OFF},
* {@link #PRIORITY_ON}, {@link #PRIORITY_UNDEFINED}
*
- * <p>Requires {@link android.Manifest.permission#BLUETOOTH} permission.
- *
* @param device Bluetooth device
* @return priority of the device
* @hide
*/
@UnsupportedAppUsage
+ @RequiresPermission(Manifest.permission.BLUETOOTH)
public int getPriority(BluetoothDevice device) {
if (VDBG) log("getPriority(" + device + ")");
+ return BluetoothAdapter.connectionPolicyToPriority(getConnectionPolicy(device));
+ }
+
+ /**
+ * Get the connection policy of the profile.
+ *
+ * <p> The connection policy can be any of:
+ * {@link #CONNECTION_POLICY_ALLOWED}, {@link #CONNECTION_POLICY_FORBIDDEN},
+ * {@link #CONNECTION_POLICY_UNKNOWN}
+ *
+ * @param device Bluetooth device
+ * @return connection policy of the device
+ * @hide
+ */
+ @SystemApi
+ @RequiresPermission(Manifest.permission.BLUETOOTH)
+ public @ConnectionPolicy int getConnectionPolicy(@NonNull BluetoothDevice device) {
+ if (VDBG) log("getConnectionPolicy(" + device + ")");
final IBluetoothHeadset service = mService;
if (service != null && isEnabled() && isValidDevice(device)) {
try {
- return service.getPriority(device);
+ return service.getConnectionPolicy(device);
} catch (RemoteException e) {
Log.e(TAG, Log.getStackTraceString(new Throwable()));
- return PRIORITY_OFF;
+ return BluetoothProfile.CONNECTION_POLICY_FORBIDDEN;
}
}
if (service == null) Log.w(TAG, "Proxy not attached to service");
- return PRIORITY_OFF;
+ return BluetoothProfile.CONNECTION_POLICY_FORBIDDEN;
}
/**
diff --git a/core/java/android/bluetooth/BluetoothHeadsetClient.java b/core/java/android/bluetooth/BluetoothHeadsetClient.java
index 5d00f09..a8e1fd2 100644
--- a/core/java/android/bluetooth/BluetoothHeadsetClient.java
+++ b/core/java/android/bluetooth/BluetoothHeadsetClient.java
@@ -16,6 +16,9 @@
package android.bluetooth;
+import android.Manifest;
+import android.annotation.RequiresPermission;
+import android.annotation.SystemApi;
import android.annotation.UnsupportedAppUsage;
import android.content.Context;
import android.os.Binder;
@@ -553,19 +556,45 @@
/**
* Set priority of the profile
*
- * The device should already be paired.
+ * <p> The device should already be paired.
+ * Priority can be one of {@link #PRIORITY_ON} or {@link #PRIORITY_OFF},
+ *
+ * @param device Paired bluetooth device
+ * @param priority
+ * @return true if priority is set, false on error
+ * @hide
*/
+ @RequiresPermission(Manifest.permission.BLUETOOTH_ADMIN)
public boolean setPriority(BluetoothDevice device, int priority) {
if (DBG) log("setPriority(" + device + ", " + priority + ")");
+ return setConnectionPolicy(device, BluetoothAdapter.priorityToConnectionPolicy(priority));
+ }
+
+ /**
+ * Set connection policy of the profile
+ *
+ * <p> The device should already be paired.
+ * Connection policy can be one of {@link #CONNECTION_POLICY_ALLOWED},
+ * {@link #CONNECTION_POLICY_FORBIDDEN}, {@link #CONNECTION_POLICY_UNKNOWN}
+ *
+ * @param device Paired bluetooth device
+ * @param connectionPolicy is the connection policy to set to for this profile
+ * @return true if connectionPolicy is set, false on error
+ * @hide
+ */
+ @SystemApi
+ @RequiresPermission(Manifest.permission.BLUETOOTH_ADMIN)
+ public boolean setConnectionPolicy(BluetoothDevice device, int connectionPolicy) {
+ if (DBG) log("setConnectionPolicy(" + device + ", " + connectionPolicy + ")");
final IBluetoothHeadsetClient service =
getService();
if (service != null && isEnabled() && isValidDevice(device)) {
- if (priority != BluetoothProfile.PRIORITY_OFF
- && priority != BluetoothProfile.PRIORITY_ON) {
+ if (connectionPolicy != BluetoothProfile.CONNECTION_POLICY_FORBIDDEN
+ && connectionPolicy != BluetoothProfile.CONNECTION_POLICY_ALLOWED) {
return false;
}
try {
- return service.setPriority(device, priority);
+ return service.setConnectionPolicy(device, connectionPolicy);
} catch (RemoteException e) {
Log.e(TAG, Log.getStackTraceString(new Throwable()));
return false;
@@ -577,21 +606,47 @@
/**
* Get the priority of the profile.
+ *
+ * <p> The priority can be any of:
+ * {@link #PRIORITY_OFF}, {@link #PRIORITY_ON}, {@link #PRIORITY_UNDEFINED}
+ *
+ * @param device Bluetooth device
+ * @return priority of the device
+ * @hide
*/
+ @RequiresPermission(Manifest.permission.BLUETOOTH)
public int getPriority(BluetoothDevice device) {
if (VDBG) log("getPriority(" + device + ")");
+ return BluetoothAdapter.connectionPolicyToPriority(getConnectionPolicy(device));
+ }
+
+ /**
+ * Get the connection policy of the profile.
+ *
+ * <p> The connection policy can be any of:
+ * {@link #CONNECTION_POLICY_ALLOWED}, {@link #CONNECTION_POLICY_FORBIDDEN},
+ * {@link #CONNECTION_POLICY_UNKNOWN}
+ *
+ * @param device Bluetooth device
+ * @return connection policy of the device
+ * @hide
+ */
+ @SystemApi
+ @RequiresPermission(Manifest.permission.BLUETOOTH)
+ public int getConnectionPolicy(BluetoothDevice device) {
+ if (VDBG) log("getConnectionPolicy(" + device + ")");
final IBluetoothHeadsetClient service =
getService();
if (service != null && isEnabled() && isValidDevice(device)) {
try {
- return service.getPriority(device);
+ return service.getConnectionPolicy(device);
} catch (RemoteException e) {
Log.e(TAG, Log.getStackTraceString(new Throwable()));
- return PRIORITY_OFF;
+ return BluetoothProfile.CONNECTION_POLICY_FORBIDDEN;
}
}
if (service == null) Log.w(TAG, "Proxy not attached to service");
- return PRIORITY_OFF;
+ return BluetoothProfile.CONNECTION_POLICY_FORBIDDEN;
}
/**
diff --git a/core/java/android/bluetooth/BluetoothHearingAid.java b/core/java/android/bluetooth/BluetoothHearingAid.java
index a812c32..ead8429 100644
--- a/core/java/android/bluetooth/BluetoothHearingAid.java
+++ b/core/java/android/bluetooth/BluetoothHearingAid.java
@@ -22,6 +22,7 @@
import android.annotation.RequiresPermission;
import android.annotation.SdkConstant;
import android.annotation.SdkConstant.SdkConstantType;
+import android.annotation.SystemApi;
import android.annotation.UnsupportedAppUsage;
import android.content.Context;
import android.os.Binder;
@@ -355,28 +356,45 @@
* Set priority of the profile
*
* <p> The device should already be paired.
- * Priority can be one of {@link #PRIORITY_ON} orgetBluetoothManager
- * {@link #PRIORITY_OFF},
- *
- * <p>Requires {@link android.Manifest.permission#BLUETOOTH_ADMIN}
- * permission.
+ * Priority can be one of {@link #PRIORITY_ON} or {@link #PRIORITY_OFF},
*
* @param device Paired bluetooth device
* @param priority
* @return true if priority is set, false on error
* @hide
*/
+ @RequiresPermission(Manifest.permission.BLUETOOTH_ADMIN)
public boolean setPriority(BluetoothDevice device, int priority) {
if (DBG) log("setPriority(" + device + ", " + priority + ")");
+ return setConnectionPolicy(device, BluetoothAdapter.priorityToConnectionPolicy(priority));
+ }
+
+ /**
+ * Set connection policy of the profile
+ *
+ * <p> The device should already be paired.
+ * Connection policy can be one of {@link #CONNECTION_POLICY_ALLOWED},
+ * {@link #CONNECTION_POLICY_FORBIDDEN}, {@link #CONNECTION_POLICY_UNKNOWN}
+ *
+ * @param device Paired bluetooth device
+ * @param connectionPolicy is the connection policy to set to for this profile
+ * @return true if connectionPolicy is set, false on error
+ * @hide
+ */
+ @SystemApi
+ @RequiresPermission(Manifest.permission.BLUETOOTH_ADMIN)
+ public boolean setConnectionPolicy(@NonNull BluetoothDevice device,
+ @ConnectionPolicy int connectionPolicy) {
+ if (DBG) log("setConnectionPolicy(" + device + ", " + connectionPolicy + ")");
final IBluetoothHearingAid service = getService();
try {
if (service != null && isEnabled()
&& isValidDevice(device)) {
- if (priority != BluetoothProfile.PRIORITY_OFF
- && priority != BluetoothProfile.PRIORITY_ON) {
+ if (connectionPolicy != BluetoothProfile.CONNECTION_POLICY_FORBIDDEN
+ && connectionPolicy != BluetoothProfile.CONNECTION_POLICY_ALLOWED) {
return false;
}
- return service.setPriority(device, priority);
+ return service.setConnectionPolicy(device, connectionPolicy);
}
if (service == null) Log.w(TAG, "Proxy not attached to service");
return false;
@@ -390,8 +408,7 @@
* Get the priority of the profile.
*
* <p> The priority can be any of:
- * {@link #PRIORITY_AUTO_CONNECT}, {@link #PRIORITY_OFF},
- * {@link #PRIORITY_ON}, {@link #PRIORITY_UNDEFINED}
+ * {@link #PRIORITY_OFF}, {@link #PRIORITY_ON}, {@link #PRIORITY_UNDEFINED}
*
* @param device Bluetooth device
* @return priority of the device
@@ -400,17 +417,35 @@
@RequiresPermission(Manifest.permission.BLUETOOTH)
public int getPriority(BluetoothDevice device) {
if (VDBG) log("getPriority(" + device + ")");
+ return BluetoothAdapter.connectionPolicyToPriority(getConnectionPolicy(device));
+ }
+
+ /**
+ * Get the connection policy of the profile.
+ *
+ * <p> The connection policy can be any of:
+ * {@link #CONNECTION_POLICY_ALLOWED}, {@link #CONNECTION_POLICY_FORBIDDEN},
+ * {@link #CONNECTION_POLICY_UNKNOWN}
+ *
+ * @param device Bluetooth device
+ * @return connection policy of the device
+ * @hide
+ */
+ @SystemApi
+ @RequiresPermission(Manifest.permission.BLUETOOTH)
+ public @ConnectionPolicy int getConnectionPolicy(@NonNull BluetoothDevice device) {
+ if (VDBG) log("getConnectionPolicy(" + device + ")");
final IBluetoothHearingAid service = getService();
try {
if (service != null && isEnabled()
&& isValidDevice(device)) {
- return service.getPriority(device);
+ return service.getConnectionPolicy(device);
}
if (service == null) Log.w(TAG, "Proxy not attached to service");
- return BluetoothProfile.PRIORITY_OFF;
+ return BluetoothProfile.CONNECTION_POLICY_FORBIDDEN;
} catch (RemoteException e) {
Log.e(TAG, "Stack:" + Log.getStackTraceString(new Throwable()));
- return BluetoothProfile.PRIORITY_OFF;
+ return BluetoothProfile.CONNECTION_POLICY_FORBIDDEN;
}
}
diff --git a/core/java/android/bluetooth/BluetoothHidHost.java b/core/java/android/bluetooth/BluetoothHidHost.java
index 4afb382..8f5cdf0 100644
--- a/core/java/android/bluetooth/BluetoothHidHost.java
+++ b/core/java/android/bluetooth/BluetoothHidHost.java
@@ -16,8 +16,11 @@
package android.bluetooth;
+import android.Manifest;
+import android.annotation.RequiresPermission;
import android.annotation.SdkConstant;
import android.annotation.SdkConstant.SdkConstantType;
+import android.annotation.SystemApi;
import android.content.Context;
import android.os.Binder;
import android.os.IBinder;
@@ -379,27 +382,43 @@
* Set priority of the profile
*
* <p> The device should already be paired.
- * Priority can be one of {@link #PRIORITY_ON} or
- * {@link #PRIORITY_OFF},
- *
- * <p>Requires {@link android.Manifest.permission#BLUETOOTH_ADMIN}
- * permission.
+ * Priority can be one of {@link #PRIORITY_ON} or {@link #PRIORITY_OFF},
*
* @param device Paired bluetooth device
* @param priority
* @return true if priority is set, false on error
* @hide
*/
+ @RequiresPermission(Manifest.permission.BLUETOOTH_ADMIN)
public boolean setPriority(BluetoothDevice device, int priority) {
if (DBG) log("setPriority(" + device + ", " + priority + ")");
+ return setConnectionPolicy(device, BluetoothAdapter.priorityToConnectionPolicy(priority));
+ }
+
+ /**
+ * Set connection policy of the profile
+ *
+ * <p> The device should already be paired.
+ * Connection policy can be one of {@link #CONNECTION_POLICY_ALLOWED},
+ * {@link #CONNECTION_POLICY_FORBIDDEN}, {@link #CONNECTION_POLICY_UNKNOWN}
+ *
+ * @param device Paired bluetooth device
+ * @param connectionPolicy is the connection policy to set to for this profile
+ * @return true if connectionPolicy is set, false on error
+ * @hide
+ */
+ @SystemApi
+ @RequiresPermission(Manifest.permission.BLUETOOTH_ADMIN)
+ public boolean setConnectionPolicy(BluetoothDevice device, int connectionPolicy) {
+ if (DBG) log("setConnectionPolicy(" + device + ", " + connectionPolicy + ")");
final IBluetoothHidHost service = getService();
if (service != null && isEnabled() && isValidDevice(device)) {
- if (priority != BluetoothProfile.PRIORITY_OFF
- && priority != BluetoothProfile.PRIORITY_ON) {
+ if (connectionPolicy != BluetoothProfile.CONNECTION_POLICY_FORBIDDEN
+ && connectionPolicy != BluetoothProfile.CONNECTION_POLICY_ALLOWED) {
return false;
}
try {
- return service.setPriority(device, priority);
+ return service.setConnectionPolicy(device, connectionPolicy);
} catch (RemoteException e) {
Log.e(TAG, "Stack:" + Log.getStackTraceString(new Throwable()));
return false;
@@ -413,28 +432,44 @@
* Get the priority of the profile.
*
* <p> The priority can be any of:
- * {@link #PRIORITY_AUTO_CONNECT}, {@link #PRIORITY_OFF},
- * {@link #PRIORITY_ON}, {@link #PRIORITY_UNDEFINED}
- *
- * <p>Requires {@link android.Manifest.permission#BLUETOOTH} permission.
+ * {@link #PRIORITY_OFF}, {@link #PRIORITY_ON}, {@link #PRIORITY_UNDEFINED}
*
* @param device Bluetooth device
* @return priority of the device
* @hide
*/
+ @RequiresPermission(Manifest.permission.BLUETOOTH)
public int getPriority(BluetoothDevice device) {
if (VDBG) log("getPriority(" + device + ")");
+ return BluetoothAdapter.connectionPolicyToPriority(getConnectionPolicy(device));
+ }
+
+ /**
+ * Get the connection policy of the profile.
+ *
+ * <p> The connection policy can be any of:
+ * {@link #CONNECTION_POLICY_ALLOWED}, {@link #CONNECTION_POLICY_FORBIDDEN},
+ * {@link #CONNECTION_POLICY_UNKNOWN}
+ *
+ * @param device Bluetooth device
+ * @return connection policy of the device
+ * @hide
+ */
+ @SystemApi
+ @RequiresPermission(Manifest.permission.BLUETOOTH)
+ public int getConnectionPolicy(BluetoothDevice device) {
+ if (VDBG) log("getConnectionPolicy(" + device + ")");
final IBluetoothHidHost service = getService();
if (service != null && isEnabled() && isValidDevice(device)) {
try {
- return service.getPriority(device);
+ return service.getConnectionPolicy(device);
} catch (RemoteException e) {
Log.e(TAG, "Stack:" + Log.getStackTraceString(new Throwable()));
- return BluetoothProfile.PRIORITY_OFF;
+ return BluetoothProfile.CONNECTION_POLICY_FORBIDDEN;
}
}
if (service == null) Log.w(TAG, "Proxy not attached to service");
- return BluetoothProfile.PRIORITY_OFF;
+ return BluetoothProfile.CONNECTION_POLICY_FORBIDDEN;
}
private boolean isEnabled() {
diff --git a/core/java/android/bluetooth/BluetoothMap.java b/core/java/android/bluetooth/BluetoothMap.java
index dd2f150..979dfd4 100644
--- a/core/java/android/bluetooth/BluetoothMap.java
+++ b/core/java/android/bluetooth/BluetoothMap.java
@@ -16,6 +16,9 @@
package android.bluetooth;
+import android.Manifest;
+import android.annotation.RequiresPermission;
+import android.annotation.SystemApi;
import android.annotation.UnsupportedAppUsage;
import android.content.Context;
import android.os.Binder;
@@ -271,23 +274,43 @@
* Set priority of the profile
*
* <p> The device should already be paired.
- * Priority can be one of {@link #PRIORITY_ON} or
- * {@link #PRIORITY_OFF},
+ * Priority can be one of {@link #PRIORITY_ON} or {@link #PRIORITY_OFF},
*
* @param device Paired bluetooth device
* @param priority
* @return true if priority is set, false on error
+ * @hide
*/
+ @RequiresPermission(Manifest.permission.BLUETOOTH_ADMIN)
public boolean setPriority(BluetoothDevice device, int priority) {
if (DBG) log("setPriority(" + device + ", " + priority + ")");
+ return setConnectionPolicy(device, BluetoothAdapter.priorityToConnectionPolicy(priority));
+ }
+
+ /**
+ * Set connection policy of the profile
+ *
+ * <p> The device should already be paired.
+ * Connection policy can be one of {@link #CONNECTION_POLICY_ALLOWED},
+ * {@link #CONNECTION_POLICY_FORBIDDEN}, {@link #CONNECTION_POLICY_UNKNOWN}
+ *
+ * @param device Paired bluetooth device
+ * @param connectionPolicy is the connection policy to set to for this profile
+ * @return true if connectionPolicy is set, false on error
+ * @hide
+ */
+ @SystemApi
+ @RequiresPermission(Manifest.permission.BLUETOOTH_ADMIN)
+ public boolean setConnectionPolicy(BluetoothDevice device, int connectionPolicy) {
+ if (DBG) log("setConnectionPolicy(" + device + ", " + connectionPolicy + ")");
final IBluetoothMap service = getService();
if (service != null && isEnabled() && isValidDevice(device)) {
- if (priority != BluetoothProfile.PRIORITY_OFF
- && priority != BluetoothProfile.PRIORITY_ON) {
+ if (connectionPolicy != BluetoothProfile.CONNECTION_POLICY_FORBIDDEN
+ && connectionPolicy != BluetoothProfile.CONNECTION_POLICY_ALLOWED) {
return false;
}
try {
- return service.setPriority(device, priority);
+ return service.setConnectionPolicy(device, connectionPolicy);
} catch (RemoteException e) {
Log.e(TAG, Log.getStackTraceString(new Throwable()));
return false;
@@ -301,25 +324,44 @@
* Get the priority of the profile.
*
* <p> The priority can be any of:
- * {@link #PRIORITY_AUTO_CONNECT}, {@link #PRIORITY_OFF},
- * {@link #PRIORITY_ON}, {@link #PRIORITY_UNDEFINED}
+ * {@link #PRIORITY_OFF}, {@link #PRIORITY_ON}, {@link #PRIORITY_UNDEFINED}
*
* @param device Bluetooth device
* @return priority of the device
+ * @hide
*/
+ @RequiresPermission(Manifest.permission.BLUETOOTH)
public int getPriority(BluetoothDevice device) {
if (VDBG) log("getPriority(" + device + ")");
+ return BluetoothAdapter.connectionPolicyToPriority(getConnectionPolicy(device));
+ }
+
+ /**
+ * Get the connection policy of the profile.
+ *
+ * <p> The connection policy can be any of:
+ * {@link #CONNECTION_POLICY_ALLOWED}, {@link #CONNECTION_POLICY_FORBIDDEN},
+ * {@link #CONNECTION_POLICY_UNKNOWN}
+ *
+ * @param device Bluetooth device
+ * @return connection policy of the device
+ * @hide
+ */
+ @SystemApi
+ @RequiresPermission(Manifest.permission.BLUETOOTH)
+ public int getConnectionPolicy(BluetoothDevice device) {
+ if (VDBG) log("getConnectionPolicy(" + device + ")");
final IBluetoothMap service = getService();
if (service != null && isEnabled() && isValidDevice(device)) {
try {
- return service.getPriority(device);
+ return service.getConnectionPolicy(device);
} catch (RemoteException e) {
Log.e(TAG, Log.getStackTraceString(new Throwable()));
- return PRIORITY_OFF;
+ return BluetoothProfile.CONNECTION_POLICY_FORBIDDEN;
}
}
if (service == null) Log.w(TAG, "Proxy not attached to service");
- return PRIORITY_OFF;
+ return BluetoothProfile.CONNECTION_POLICY_FORBIDDEN;
}
private static void log(String msg) {
diff --git a/core/java/android/bluetooth/BluetoothMapClient.java b/core/java/android/bluetooth/BluetoothMapClient.java
index 69682c6..0ec473c 100644
--- a/core/java/android/bluetooth/BluetoothMapClient.java
+++ b/core/java/android/bluetooth/BluetoothMapClient.java
@@ -16,6 +16,9 @@
package android.bluetooth;
+import android.Manifest;
+import android.annotation.RequiresPermission;
+import android.annotation.SystemApi;
import android.annotation.UnsupportedAppUsage;
import android.app.PendingIntent;
import android.content.Context;
@@ -240,22 +243,44 @@
/**
* Set priority of the profile
*
- * <p> The device should already be paired. Priority can be one of {@link #PRIORITY_ON} or
- * {@link #PRIORITY_OFF},
+ * <p> The device should already be paired.
+ * Priority can be one of {@link #PRIORITY_ON} or {@link #PRIORITY_OFF},
*
* @param device Paired bluetooth device
+ * @param priority
* @return true if priority is set, false on error
+ * @hide
*/
+ @RequiresPermission(Manifest.permission.BLUETOOTH_ADMIN)
public boolean setPriority(BluetoothDevice device, int priority) {
if (DBG) Log.d(TAG, "setPriority(" + device + ", " + priority + ")");
+ return setConnectionPolicy(device, BluetoothAdapter.priorityToConnectionPolicy(priority));
+ }
+
+ /**
+ * Set connection policy of the profile
+ *
+ * <p> The device should already be paired.
+ * Connection policy can be one of {@link #CONNECTION_POLICY_ALLOWED},
+ * {@link #CONNECTION_POLICY_FORBIDDEN}, {@link #CONNECTION_POLICY_UNKNOWN}
+ *
+ * @param device Paired bluetooth device
+ * @param connectionPolicy is the connection policy to set to for this profile
+ * @return true if connectionPolicy is set, false on error
+ * @hide
+ */
+ @SystemApi
+ @RequiresPermission(Manifest.permission.BLUETOOTH_ADMIN)
+ public boolean setConnectionPolicy(BluetoothDevice device, int connectionPolicy) {
+ if (DBG) Log.d(TAG, "setConnectionPolicy(" + device + ", " + connectionPolicy + ")");
final IBluetoothMapClient service = getService();
if (service != null && isEnabled() && isValidDevice(device)) {
- if (priority != BluetoothProfile.PRIORITY_OFF
- && priority != BluetoothProfile.PRIORITY_ON) {
+ if (connectionPolicy != BluetoothProfile.CONNECTION_POLICY_FORBIDDEN
+ && connectionPolicy != BluetoothProfile.CONNECTION_POLICY_ALLOWED) {
return false;
}
try {
- return service.setPriority(device, priority);
+ return service.setConnectionPolicy(device, connectionPolicy);
} catch (RemoteException e) {
Log.e(TAG, Log.getStackTraceString(new Throwable()));
return false;
@@ -269,25 +294,44 @@
* Get the priority of the profile.
*
* <p> The priority can be any of:
- * {@link #PRIORITY_AUTO_CONNECT}, {@link #PRIORITY_OFF},
- * {@link #PRIORITY_ON}, {@link #PRIORITY_UNDEFINED}
+ * {@link #PRIORITY_OFF}, {@link #PRIORITY_ON}, {@link #PRIORITY_UNDEFINED}
*
* @param device Bluetooth device
* @return priority of the device
+ * @hide
*/
+ @RequiresPermission(Manifest.permission.BLUETOOTH)
public int getPriority(BluetoothDevice device) {
if (VDBG) Log.d(TAG, "getPriority(" + device + ")");
+ return BluetoothAdapter.connectionPolicyToPriority(getConnectionPolicy(device));
+ }
+
+ /**
+ * Get the connection policy of the profile.
+ *
+ * <p> The connection policy can be any of:
+ * {@link #CONNECTION_POLICY_ALLOWED}, {@link #CONNECTION_POLICY_FORBIDDEN},
+ * {@link #CONNECTION_POLICY_UNKNOWN}
+ *
+ * @param device Bluetooth device
+ * @return connection policy of the device
+ * @hide
+ */
+ @SystemApi
+ @RequiresPermission(Manifest.permission.BLUETOOTH)
+ public int getConnectionPolicy(BluetoothDevice device) {
+ if (VDBG) Log.d(TAG, "getConnectionPolicy(" + device + ")");
final IBluetoothMapClient service = getService();
if (service != null && isEnabled() && isValidDevice(device)) {
try {
- return service.getPriority(device);
+ return service.getConnectionPolicy(device);
} catch (RemoteException e) {
Log.e(TAG, Log.getStackTraceString(new Throwable()));
- return PRIORITY_OFF;
+ return BluetoothProfile.CONNECTION_POLICY_FORBIDDEN;
}
}
if (service == null) Log.w(TAG, "Proxy not attached to service");
- return PRIORITY_OFF;
+ return BluetoothProfile.CONNECTION_POLICY_FORBIDDEN;
}
/**
diff --git a/core/java/android/bluetooth/BluetoothPan.java b/core/java/android/bluetooth/BluetoothPan.java
index cfb363a08..4e97627 100644
--- a/core/java/android/bluetooth/BluetoothPan.java
+++ b/core/java/android/bluetooth/BluetoothPan.java
@@ -16,8 +16,13 @@
package android.bluetooth;
+import android.annotation.IntDef;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
import android.annotation.SdkConstant;
import android.annotation.SdkConstant.SdkConstantType;
+import android.annotation.SuppressLint;
+import android.annotation.SystemApi;
import android.annotation.UnsupportedAppUsage;
import android.content.Context;
import android.os.Binder;
@@ -25,6 +30,8 @@
import android.os.RemoteException;
import android.util.Log;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
import java.util.List;
@@ -40,6 +47,7 @@
*
* @hide
*/
+@SystemApi
public final class BluetoothPan implements BluetoothProfile {
private static final String TAG = "BluetoothPan";
private static final boolean DBG = true;
@@ -67,6 +75,7 @@
* <p>Requires {@link android.Manifest.permission#BLUETOOTH} permission to
* receive.
*/
+ @SuppressLint("ActionValue")
@SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
public static final String ACTION_CONNECTION_STATE_CHANGED =
"android.bluetooth.pan.profile.action.CONNECTION_STATE_CHANGED";
@@ -76,19 +85,32 @@
* The local role of the PAN profile that the remote device is bound to.
* It can be one of {@link #LOCAL_NAP_ROLE} or {@link #LOCAL_PANU_ROLE}.
*/
+ @SuppressLint("ActionValue")
public static final String EXTRA_LOCAL_ROLE = "android.bluetooth.pan.extra.LOCAL_ROLE";
+ /** @hide */
+ @IntDef({PAN_ROLE_NONE, LOCAL_NAP_ROLE, LOCAL_PANU_ROLE})
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface LocalPanRole {}
+
public static final int PAN_ROLE_NONE = 0;
/**
* The local device is acting as a Network Access Point.
*/
public static final int LOCAL_NAP_ROLE = 1;
- public static final int REMOTE_NAP_ROLE = 1;
/**
* The local device is acting as a PAN User.
*/
public static final int LOCAL_PANU_ROLE = 2;
+
+ /** @hide */
+ @IntDef({PAN_ROLE_NONE, REMOTE_NAP_ROLE, REMOTE_PANU_ROLE})
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface RemotePanRole {}
+
+ public static final int REMOTE_NAP_ROLE = 1;
+
public static final int REMOTE_PANU_ROLE = 2;
/**
@@ -134,6 +156,8 @@
/**
* Create a BluetoothPan proxy object for interacting with the local
* Bluetooth Service which handles the Pan profile
+ *
+ * @hide
*/
@UnsupportedAppUsage
/*package*/ BluetoothPan(Context context, ServiceListener listener) {
@@ -235,7 +259,7 @@
* {@inheritDoc}
*/
@Override
- public List<BluetoothDevice> getConnectedDevices() {
+ public @NonNull List<BluetoothDevice> getConnectedDevices() {
if (VDBG) log("getConnectedDevices()");
final IBluetoothPan service = getService();
if (service != null && isEnabled()) {
@@ -252,6 +276,7 @@
/**
* {@inheritDoc}
+ * @hide
*/
@Override
public List<BluetoothDevice> getDevicesMatchingConnectionStates(int[] states) {
@@ -273,7 +298,7 @@
* {@inheritDoc}
*/
@Override
- public int getConnectionState(BluetoothDevice device) {
+ public int getConnectionState(@Nullable BluetoothDevice device) {
if (VDBG) log("getState(" + device + ")");
final IBluetoothPan service = getService();
if (service != null && isEnabled() && isValidDevice(device)) {
@@ -288,7 +313,11 @@
return BluetoothProfile.STATE_DISCONNECTED;
}
- @UnsupportedAppUsage
+ /**
+ * Turns on/off bluetooth tethering
+ *
+ * @param value is whether to enable or disable bluetooth tethering
+ */
public void setBluetoothTethering(boolean value) {
String pkgName = mContext.getOpPackageName();
if (DBG) log("setBluetoothTethering(" + value + "), calling package:" + pkgName);
@@ -302,7 +331,11 @@
}
}
- @UnsupportedAppUsage
+ /**
+ * Determines whether tethering is enabled
+ *
+ * @return true if tethering is on, false if not or some error occurred
+ */
public boolean isTetheringOn() {
if (VDBG) log("isTetheringOn()");
final IBluetoothPan service = getService();
diff --git a/core/java/android/bluetooth/BluetoothPbapClient.java b/core/java/android/bluetooth/BluetoothPbapClient.java
index d70e1e7..9618ba0 100644
--- a/core/java/android/bluetooth/BluetoothPbapClient.java
+++ b/core/java/android/bluetooth/BluetoothPbapClient.java
@@ -16,6 +16,9 @@
package android.bluetooth;
+import android.Manifest;
+import android.annotation.RequiresPermission;
+import android.annotation.SystemApi;
import android.content.Context;
import android.os.Binder;
import android.os.IBinder;
@@ -241,25 +244,45 @@
* Set priority of the profile
*
* <p> The device should already be paired.
- * Priority can be one of {@link #PRIORITY_ON} or
- * {@link #PRIORITY_OFF},
+ * Priority can be one of {@link #PRIORITY_ON} or {@link #PRIORITY_OFF},
*
* @param device Paired bluetooth device
- * @param priority Priority of this profile
+ * @param priority
* @return true if priority is set, false on error
+ * @hide
*/
+ @RequiresPermission(Manifest.permission.BLUETOOTH_ADMIN)
public boolean setPriority(BluetoothDevice device, int priority) {
+ if (DBG) log("setPriority(" + device + ", " + priority + ")");
+ return setConnectionPolicy(device, BluetoothAdapter.priorityToConnectionPolicy(priority));
+ }
+
+ /**
+ * Set connection policy of the profile
+ *
+ * <p> The device should already be paired.
+ * Connection policy can be one of {@link #CONNECTION_POLICY_ALLOWED},
+ * {@link #CONNECTION_POLICY_FORBIDDEN}, {@link #CONNECTION_POLICY_UNKNOWN}
+ *
+ * @param device Paired bluetooth device
+ * @param connectionPolicy is the connection policy to set to for this profile
+ * @return true if connectionPolicy is set, false on error
+ * @hide
+ */
+ @SystemApi
+ @RequiresPermission(Manifest.permission.BLUETOOTH_ADMIN)
+ public boolean setConnectionPolicy(BluetoothDevice device, int connectionPolicy) {
if (DBG) {
- log("setPriority(" + device + ", " + priority + ")");
+ log("setConnectionPolicy(" + device + ", " + connectionPolicy + ")");
}
final IBluetoothPbapClient service = getService();
if (service != null && isEnabled() && isValidDevice(device)) {
- if (priority != BluetoothProfile.PRIORITY_OFF
- && priority != BluetoothProfile.PRIORITY_ON) {
+ if (connectionPolicy != BluetoothProfile.CONNECTION_POLICY_FORBIDDEN
+ && connectionPolicy != BluetoothProfile.CONNECTION_POLICY_ALLOWED) {
return false;
}
try {
- return service.setPriority(device, priority);
+ return service.setConnectionPolicy(device, connectionPolicy);
} catch (RemoteException e) {
Log.e(TAG, Log.getStackTraceString(new Throwable()));
return false;
@@ -275,28 +298,47 @@
* Get the priority of the profile.
*
* <p> The priority can be any of:
- * {@link #PRIORITY_AUTO_CONNECT}, {@link #PRIORITY_OFF},
- * {@link #PRIORITY_ON}, {@link #PRIORITY_UNDEFINED}
+ * {@link #PRIORITY_OFF}, {@link #PRIORITY_ON}, {@link #PRIORITY_UNDEFINED}
*
* @param device Bluetooth device
* @return priority of the device
+ * @hide
*/
+ @RequiresPermission(Manifest.permission.BLUETOOTH)
public int getPriority(BluetoothDevice device) {
+ if (VDBG) log("getPriority(" + device + ")");
+ return BluetoothAdapter.connectionPolicyToPriority(getConnectionPolicy(device));
+ }
+
+ /**
+ * Get the connection policy of the profile.
+ *
+ * <p> The connection policy can be any of:
+ * {@link #CONNECTION_POLICY_ALLOWED}, {@link #CONNECTION_POLICY_FORBIDDEN},
+ * {@link #CONNECTION_POLICY_UNKNOWN}
+ *
+ * @param device Bluetooth device
+ * @return connection policy of the device
+ * @hide
+ */
+ @SystemApi
+ @RequiresPermission(Manifest.permission.BLUETOOTH)
+ public int getConnectionPolicy(BluetoothDevice device) {
if (VDBG) {
- log("getPriority(" + device + ")");
+ log("getConnectionPolicy(" + device + ")");
}
final IBluetoothPbapClient service = getService();
if (service != null && isEnabled() && isValidDevice(device)) {
try {
- return service.getPriority(device);
+ return service.getConnectionPolicy(device);
} catch (RemoteException e) {
Log.e(TAG, Log.getStackTraceString(new Throwable()));
- return PRIORITY_OFF;
+ return BluetoothProfile.CONNECTION_POLICY_FORBIDDEN;
}
}
if (service == null) {
Log.w(TAG, "Proxy not attached to service");
}
- return PRIORITY_OFF;
+ return BluetoothProfile.CONNECTION_POLICY_FORBIDDEN;
}
}
diff --git a/core/java/android/bluetooth/BluetoothProfile.java b/core/java/android/bluetooth/BluetoothProfile.java
index f5aa014..097a367 100644
--- a/core/java/android/bluetooth/BluetoothProfile.java
+++ b/core/java/android/bluetooth/BluetoothProfile.java
@@ -20,9 +20,9 @@
import android.Manifest;
import android.annotation.IntDef;
import android.annotation.RequiresPermission;
+import android.annotation.SuppressLint;
import android.annotation.SystemApi;
import android.annotation.UnsupportedAppUsage;
-import android.os.Build;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -43,6 +43,7 @@
* This extra represents the current connection state of the profile of the
* Bluetooth device.
*/
+ @SuppressLint("ActionValue")
String EXTRA_STATE = "android.bluetooth.profile.extra.STATE";
/**
@@ -51,6 +52,7 @@
* This extra represents the previous connection state of the profile of the
* Bluetooth device.
*/
+ @SuppressLint("ActionValue")
String EXTRA_PREVIOUS_STATE =
"android.bluetooth.profile.extra.PREVIOUS_STATE";
@@ -106,7 +108,7 @@
*
* @hide
*/
- @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
+ @SystemApi
int PAN = 5;
/**
@@ -223,7 +225,9 @@
* and outgoing connections for the profile
*
* @hide
+ * @deprecated Replaced with {@link #CONNECTION_POLICY_ALLOWED}
**/
+ @Deprecated
@SystemApi
int PRIORITY_ON = 100;
@@ -232,7 +236,9 @@
* connections and outgoing connections for the profile.
*
* @hide
+ * @deprecated Replaced with {@link #CONNECTION_POLICY_FORBIDDEN}
**/
+ @Deprecated
@SystemApi
int PRIORITY_OFF = 0;
@@ -244,6 +250,38 @@
@UnsupportedAppUsage
int PRIORITY_UNDEFINED = -1;
+ /** @hide */
+ @IntDef(prefix = "CONNECTION_POLICY_", value = {CONNECTION_POLICY_ALLOWED,
+ CONNECTION_POLICY_FORBIDDEN, CONNECTION_POLICY_UNKNOWN})
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface ConnectionPolicy{}
+
+ /**
+ * Default connection policy for devices that allow incoming and outgoing connections
+ * for the profile
+ *
+ * @hide
+ **/
+ @SystemApi
+ int CONNECTION_POLICY_ALLOWED = 100;
+
+ /**
+ * Default connection policy for devices that do not allow incoming or outgoing connections
+ * for the profile.
+ *
+ * @hide
+ **/
+ @SystemApi
+ int CONNECTION_POLICY_FORBIDDEN = 0;
+
+ /**
+ * Default connection policy when not set or when the device is unpaired
+ *
+ * @hide
+ */
+ @SystemApi
+ int CONNECTION_POLICY_UNKNOWN = -1;
+
/**
* Get connected devices for this specific profile.
*
diff --git a/core/java/android/bluetooth/BluetoothSap.java b/core/java/android/bluetooth/BluetoothSap.java
index e0610c8..9b4dabc 100644
--- a/core/java/android/bluetooth/BluetoothSap.java
+++ b/core/java/android/bluetooth/BluetoothSap.java
@@ -16,6 +16,9 @@
package android.bluetooth;
+import android.Manifest;
+import android.annotation.RequiresPermission;
+import android.annotation.SystemApi;
import android.annotation.UnsupportedAppUsage;
import android.content.Context;
import android.os.Binder;
@@ -300,22 +303,43 @@
* Set priority of the profile
*
* <p> The device should already be paired.
+ * Priority can be one of {@link #PRIORITY_ON} or {@link #PRIORITY_OFF},
*
* @param device Paired bluetooth device
* @param priority
* @return true if priority is set, false on error
* @hide
*/
+ @RequiresPermission(Manifest.permission.BLUETOOTH_ADMIN)
public boolean setPriority(BluetoothDevice device, int priority) {
if (DBG) log("setPriority(" + device + ", " + priority + ")");
+ return setConnectionPolicy(device, BluetoothAdapter.priorityToConnectionPolicy(priority));
+ }
+
+ /**
+ * Set connection policy of the profile
+ *
+ * <p> The device should already be paired.
+ * Connection policy can be one of {@link #CONNECTION_POLICY_ALLOWED},
+ * {@link #CONNECTION_POLICY_FORBIDDEN}, {@link #CONNECTION_POLICY_UNKNOWN}
+ *
+ * @param device Paired bluetooth device
+ * @param connectionPolicy is the connection policy to set to for this profile
+ * @return true if connectionPolicy is set, false on error
+ * @hide
+ */
+ @SystemApi
+ @RequiresPermission(Manifest.permission.BLUETOOTH_ADMIN)
+ public boolean setConnectionPolicy(BluetoothDevice device, int connectionPolicy) {
+ if (DBG) log("setConnectionPolicy(" + device + ", " + connectionPolicy + ")");
final IBluetoothSap service = getService();
if (service != null && isEnabled() && isValidDevice(device)) {
- if (priority != BluetoothProfile.PRIORITY_OFF
- && priority != BluetoothProfile.PRIORITY_ON) {
+ if (connectionPolicy != BluetoothProfile.CONNECTION_POLICY_FORBIDDEN
+ && connectionPolicy != BluetoothProfile.CONNECTION_POLICY_ALLOWED) {
return false;
}
try {
- return service.setPriority(device, priority);
+ return service.setConnectionPolicy(device, connectionPolicy);
} catch (RemoteException e) {
Log.e(TAG, Log.getStackTraceString(new Throwable()));
return false;
@@ -328,23 +352,45 @@
/**
* Get the priority of the profile.
*
+ * <p> The priority can be any of:
+ * {@link #PRIORITY_OFF}, {@link #PRIORITY_ON}, {@link #PRIORITY_UNDEFINED}
+ *
* @param device Bluetooth device
* @return priority of the device
* @hide
*/
+ @RequiresPermission(Manifest.permission.BLUETOOTH)
public int getPriority(BluetoothDevice device) {
if (VDBG) log("getPriority(" + device + ")");
+ return BluetoothAdapter.connectionPolicyToPriority(getConnectionPolicy(device));
+ }
+
+ /**
+ * Get the connection policy of the profile.
+ *
+ * <p> The connection policy can be any of:
+ * {@link #CONNECTION_POLICY_ALLOWED}, {@link #CONNECTION_POLICY_FORBIDDEN},
+ * {@link #CONNECTION_POLICY_UNKNOWN}
+ *
+ * @param device Bluetooth device
+ * @return connection policy of the device
+ * @hide
+ */
+ @SystemApi
+ @RequiresPermission(Manifest.permission.BLUETOOTH)
+ public int getConnectionPolicy(BluetoothDevice device) {
+ if (VDBG) log("getConnectionPolicy(" + device + ")");
final IBluetoothSap service = getService();
if (service != null && isEnabled() && isValidDevice(device)) {
try {
- return service.getPriority(device);
+ return service.getConnectionPolicy(device);
} catch (RemoteException e) {
Log.e(TAG, Log.getStackTraceString(new Throwable()));
- return PRIORITY_OFF;
+ return BluetoothProfile.CONNECTION_POLICY_FORBIDDEN;
}
}
if (service == null) Log.w(TAG, "Proxy not attached to service");
- return PRIORITY_OFF;
+ return BluetoothProfile.CONNECTION_POLICY_FORBIDDEN;
}
private static void log(String msg) {
diff --git a/core/java/android/content/Context.java b/core/java/android/content/Context.java
index 0fdb513..341b520 100644
--- a/core/java/android/content/Context.java
+++ b/core/java/android/content/Context.java
@@ -2484,6 +2484,48 @@
}
/**
+ * Version of
+ * {@link #sendOrderedBroadcast(Intent, String, BroadcastReceiver, Handler, int, String,
+ * Bundle)} that allows you to specify the App Op to enforce restrictions on which receivers
+ * the broadcast will be sent to as well as supply an optional sending options
+ *
+ * <p>See {@link BroadcastReceiver} for more information on Intent broadcasts.
+ *
+ * @param intent The Intent to broadcast; all receivers matching this
+ * Intent will receive the broadcast.
+ * @param receiverPermission String naming a permissions that
+ * a receiver must hold in order to receive your broadcast.
+ * If null, no permission is required.
+ * @param receiverAppOp The app op associated with the broadcast. If null, no appOp is
+ * required. If both receiverAppOp and receiverPermission are non-null,
+ * a receiver must have both of them to
+ * receive the broadcast
+ * @param options (optional) Additional sending options, generated from a
+ * {@link android.app.BroadcastOptions}.
+ * @param resultReceiver Your own BroadcastReceiver to treat as the final
+ * receiver of the broadcast.
+ * @param scheduler A custom Handler with which to schedule the
+ * resultReceiver callback; if null it will be
+ * scheduled in the Context's main thread.
+ * @param initialCode An initial value for the result code. Often
+ * Activity.RESULT_OK.
+ * @param initialData An initial value for the result data. Often
+ * null.
+ * @param initialExtras An initial value for the result extras. Often
+ * null.
+ *
+ * @see #sendOrderedBroadcast(Intent, String, BroadcastReceiver, Handler, int, String, Bundle)
+ * @see android.app.BroadcastOptions
+ */
+ public void sendOrderedBroadcast(@RequiresPermission @NonNull Intent intent,
+ @Nullable String receiverPermission, @Nullable String receiverAppOp,
+ @Nullable Bundle options, @Nullable BroadcastReceiver resultReceiver,
+ @Nullable Handler scheduler, int initialCode, @Nullable String initialData,
+ @Nullable Bundle initialExtras) {
+ throw new RuntimeException("Not implemented. Must override in a subclass.");
+ }
+
+ /**
* <p>Perform a {@link #sendBroadcast(Intent)} that is "sticky," meaning the
* Intent you are sending stays around after the broadcast is complete,
* so that others can quickly retrieve that data through the return
@@ -3383,7 +3425,9 @@
CROSS_PROFILE_APPS_SERVICE,
//@hide: SYSTEM_UPDATE_SERVICE,
//@hide: TIME_DETECTOR_SERVICE,
+ //@hide: TIME_ZONE_DETECTOR_SERVICE,
PERMISSION_SERVICE,
+ INCREMENTAL_SERVICE,
})
@Retention(RetentionPolicy.SOURCE)
public @interface ServiceName {}
@@ -3864,14 +3908,6 @@
public static final String NETWORK_STACK_SERVICE = "network_stack";
/**
- * Use with {@link android.os.ServiceManager.getService()} to retrieve a
- * {@link android.net.WifiStackClient} IBinder for communicating with the network stack
- * @hide
- * @see android.net.WifiStackClient
- */
- public static final String WIFI_STACK_SERVICE = "wifi_stack";
-
- /**
* Use with {@link #getSystemService(String)} to retrieve a
* {@link android.net.IpSecManager} for encrypting Sockets or Networks with
* IPSec.
@@ -4843,7 +4879,7 @@
/**
* Use with {@link #getSystemService(String)} to retrieve an
- * {@link android.app.timedetector.ITimeDetectorService}.
+ * {@link android.app.timedetector.TimeDetector}.
* @hide
*
* @see #getSystemService(String)
@@ -4851,6 +4887,15 @@
public static final String TIME_DETECTOR_SERVICE = "time_detector";
/**
+ * Use with {@link #getSystemService(String)} to retrieve an
+ * {@link android.app.timezonedetector.TimeZoneDetector}.
+ * @hide
+ *
+ * @see #getSystemService(String)
+ */
+ public static final String TIME_ZONE_DETECTOR_SERVICE = "time_zone_detector";
+
+ /**
* Binder service name for {@link AppBindingService}.
* @hide
*/
@@ -4917,6 +4962,21 @@
public static final String APP_SEARCH_SERVICE = "app_search";
/**
+ * Use with {@link #getSystemService(String)} to retrieve an
+ * {@link android.content.integrity.AppIntegrityManager}.
+ * @hide
+ */
+ @SystemApi
+ public static final String APP_INTEGRITY_SERVICE = "app_integrity";
+
+ /**
+ * Use with {@link #getSystemService(String)} to retrieve an
+ * {@link android.os.incremental.IncrementalManager}.
+ * @hide
+ */
+ public static final String INCREMENTAL_SERVICE = "incremental";
+
+ /**
* Determine whether the given permission is allowed for a particular
* process and user ID running in the system.
*
diff --git a/core/java/android/content/ContextWrapper.java b/core/java/android/content/ContextWrapper.java
index e44d6ae..d6442e2 100644
--- a/core/java/android/content/ContextWrapper.java
+++ b/core/java/android/content/ContextWrapper.java
@@ -590,6 +590,16 @@
}
@Override
+ public void sendOrderedBroadcast(@RequiresPermission @NonNull Intent intent,
+ @Nullable String receiverPermission, @Nullable String receiverAppOp,
+ @Nullable Bundle options, @Nullable BroadcastReceiver resultReceiver,
+ @Nullable Handler scheduler, int initialCode, @Nullable String initialData,
+ @Nullable Bundle initialExtras) {
+ mBase.sendOrderedBroadcast(intent, receiverPermission, receiverAppOp, options,
+ resultReceiver, scheduler, initialCode, initialData, initialExtras);
+ }
+
+ @Override
@Deprecated
public void sendStickyBroadcast(Intent intent) {
mBase.sendStickyBroadcast(intent);
diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java
index ca374f93..40aca0e 100644
--- a/core/java/android/content/Intent.java
+++ b/core/java/android/content/Intent.java
@@ -4417,6 +4417,22 @@
@SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
public static final String ACTION_VIEW_LOCUS = "android.intent.action.VIEW_LOCUS";
+ /**
+ * Broadcast Action: Sent to the integrity component when a package
+ * needs to be verified. The data contains the package URI along with other relevant
+ * information.
+ *
+ * <p class="note">
+ * This is a protected intent that can only be sent by the system.
+ * </p>
+ *
+ * @hide
+ */
+ @SystemApi
+ @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
+ public static final String ACTION_PACKAGE_NEEDS_INTEGRITY_VERIFICATION =
+ "android.intent.action.PACKAGE_NEEDS_INTEGRITY_VERIFICATION";
+
// ---------------------------------------------------------------------
// ---------------------------------------------------------------------
// Standard intent categories (see addCategory()).
diff --git a/services/core/java/com/android/server/integrity/model/AppInstallMetadata.java b/core/java/android/content/integrity/AppInstallMetadata.java
similarity index 98%
rename from services/core/java/com/android/server/integrity/model/AppInstallMetadata.java
rename to core/java/android/content/integrity/AppInstallMetadata.java
index dfc373b..c963475 100644
--- a/services/core/java/com/android/server/integrity/model/AppInstallMetadata.java
+++ b/core/java/android/content/integrity/AppInstallMetadata.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.server.integrity.model;
+package android.content.integrity;
import static com.android.internal.util.Preconditions.checkArgument;
import static com.android.internal.util.Preconditions.checkNotNull;
diff --git a/core/java/android/content/integrity/AppIntegrityManager.java b/core/java/android/content/integrity/AppIntegrityManager.java
new file mode 100644
index 0000000..e53ef66
--- /dev/null
+++ b/core/java/android/content/integrity/AppIntegrityManager.java
@@ -0,0 +1,103 @@
+/*
+ * Copyright (C) 2019 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.integrity;
+
+import android.annotation.NonNull;
+import android.annotation.SystemApi;
+import android.annotation.SystemService;
+import android.content.Context;
+import android.content.IntentSender;
+import android.content.pm.ParceledListSlice;
+import android.os.RemoteException;
+
+/**
+ * Class for pushing rules used to check the integrity of app installs.
+ *
+ * <p>Note: applications using methods of this class must be a system app and have their package
+ * name whitelisted as an integrity rule provider. Otherwise a {@link SecurityException} will be
+ * thrown.
+ *
+ * @hide
+ */
+@SystemApi
+@SystemService(Context.APP_INTEGRITY_SERVICE)
+public class AppIntegrityManager {
+
+ /** The operation succeeded. */
+ public static final int STATUS_SUCCESS = 0;
+
+ /** The operation failed. */
+ public static final int STATUS_FAILURE = 1;
+
+ /**
+ * Current status of an operation. Will be one of {@link #STATUS_SUCCESS}, {@link
+ * #STATUS_FAILURE}.
+ *
+ * <p>More information about a status may be available through additional extras; see the
+ * individual status documentation for details.
+ *
+ * @see android.content.Intent#getIntExtra(String, int)
+ */
+ public static final String EXTRA_STATUS = "android.content.integrity.extra.STATUS";
+
+ IAppIntegrityManager mManager;
+
+ /** @hide */
+ public AppIntegrityManager(IAppIntegrityManager manager) {
+ mManager = manager;
+ }
+
+ /**
+ * Update the rules to evaluate during install time.
+ *
+ * @param updateRequest request containing the data of the rule set update
+ * @param statusReceiver Called when the state of the session changes. Intents sent to this
+ * receiver contain {@link #EXTRA_STATUS}. Refer to the individual status codes on how to
+ * handle them.
+ */
+ public void updateRuleSet(
+ @NonNull RuleSet updateRequest, @NonNull IntentSender statusReceiver) {
+ try {
+ mManager.updateRuleSet(
+ updateRequest.getVersion(),
+ new ParceledListSlice<>(updateRequest.getRules()),
+ statusReceiver);
+ } catch (RemoteException e) {
+ throw e.rethrowAsRuntimeException();
+ }
+ }
+
+ /** Get the current version of the rule set. */
+ @NonNull
+ public String getCurrentRuleSetVersion() {
+ try {
+ return mManager.getCurrentRuleSetVersion();
+ } catch (RemoteException e) {
+ throw e.rethrowAsRuntimeException();
+ }
+ }
+
+ /** Get the name of the package that provided the current rule set. */
+ @NonNull
+ public String getCurrentRuleSetProvider() {
+ try {
+ return mManager.getCurrentRuleSetProvider();
+ } catch (RemoteException e) {
+ throw e.rethrowAsRuntimeException();
+ }
+ }
+}
diff --git a/services/core/java/com/android/server/integrity/model/AtomicFormula.java b/core/java/android/content/integrity/AtomicFormula.java
similarity index 81%
rename from services/core/java/com/android/server/integrity/model/AtomicFormula.java
rename to core/java/android/content/integrity/AtomicFormula.java
index 70ab98c..c8e164f 100644
--- a/services/core/java/com/android/server/integrity/model/AtomicFormula.java
+++ b/core/java/android/content/integrity/AtomicFormula.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.server.integrity.model;
+package android.content.integrity;
import static com.android.internal.util.Preconditions.checkArgument;
@@ -46,12 +46,12 @@
@IntDef(
value = {
- PACKAGE_NAME,
- APP_CERTIFICATE,
- INSTALLER_NAME,
- INSTALLER_CERTIFICATE,
- VERSION_CODE,
- PRE_INSTALLED,
+ PACKAGE_NAME,
+ APP_CERTIFICATE,
+ INSTALLER_NAME,
+ INSTALLER_CERTIFICATE,
+ VERSION_CODE,
+ PRE_INSTALLED,
})
@Retention(RetentionPolicy.SOURCE)
public @interface Key {}
@@ -60,11 +60,47 @@
@Retention(RetentionPolicy.SOURCE)
public @interface Operator {}
+ /**
+ * Package name of the app.
+ *
+ * <p>Can only be used in {@link StringAtomicFormula}.
+ */
public static final int PACKAGE_NAME = 0;
+
+ /**
+ * SHA-256 of the app certificate of the app.
+ *
+ * <p>Can only be used in {@link StringAtomicFormula}.
+ */
public static final int APP_CERTIFICATE = 1;
+
+ /**
+ * Package name of the installer. Will be empty string if installed by the system (e.g., adb).
+ *
+ * <p>Can only be used in {@link StringAtomicFormula}.
+ */
public static final int INSTALLER_NAME = 2;
+
+ /**
+ * SHA-256 of the cert of the installer. Will be empty string if installed by the system (e.g.,
+ * adb).
+ *
+ * <p>Can only be used in {@link StringAtomicFormula}.
+ */
public static final int INSTALLER_CERTIFICATE = 3;
+
+ /**
+ * Version code of the app.
+ *
+ * <p>Can only be used in {@link IntAtomicFormula}.
+ */
public static final int VERSION_CODE = 4;
+
+ /**
+ * If the app is pre-installed on the device.
+ *
+ * <p>Can only be used in {@link BooleanAtomicFormula}.
+ */
public static final int PRE_INSTALLED = 5;
public static final int EQ = 0;
@@ -76,6 +112,7 @@
private final @Key int mKey;
public AtomicFormula(@Key int key) {
+ checkArgument(isValidKey(key), String.format("Unknown key: %d", key));
mKey = key;
}
@@ -91,13 +128,15 @@
* specified by {@code key} is of the correct relationship to {@code value} as specified by
* {@code operator}.
*
- * @throws IllegalArgumentException if {@code key} is not {@link #VERSION_CODE}
+ * @throws IllegalArgumentException if {@code key} cannot be used with integer value
*/
public IntAtomicFormula(@Key int key, @Operator int operator, int value) {
super(key);
checkArgument(
key == VERSION_CODE,
String.format("Key %s cannot be used with IntAtomicFormula", keyToString(key)));
+ checkArgument(isValidOperator(operator),
+ String.format("Unknown operator: %d", operator));
mOperator = operator;
mValue = value;
}
@@ -143,6 +182,11 @@
}
@Override
+ public int getTag() {
+ return Formula.INT_ATOMIC_FORMULA_TAG;
+ }
+
+ @Override
public String toString() {
return String.format(
"(%s %s %s)", keyToString(getKey()), operatorToString(mOperator), mValue);
@@ -157,7 +201,9 @@
return false;
}
IntAtomicFormula that = (IntAtomicFormula) o;
- return getKey() == that.getKey() && mValue == that.mValue;
+ return getKey() == that.getKey()
+ && mValue == that.mValue
+ && mOperator == that.mOperator;
}
@Override
@@ -194,11 +240,21 @@
"Unexpected key in IntAtomicFormula" + getKey());
}
}
+
+ private static boolean isValidOperator(int operator) {
+ return operator == EQ
+ || operator == LT
+ || operator == LE
+ || operator == GT
+ || operator == GE;
+ }
}
/** An {@link AtomicFormula} with a key and string value. */
public static final class StringAtomicFormula extends AtomicFormula implements Parcelable {
private final String mValue;
+ // Indicates whether the value is the actual value or the hashed value.
+ private final boolean mIsHashedValue;
/**
* Constructs a new {@link StringAtomicFormula}.
@@ -206,11 +262,11 @@
* <p>This formula will hold if and only if the corresponding information of an install
* specified by {@code key} equals {@code value}.
*
- * @throws IllegalArgumentException if {@code key} is not one of {@link #PACKAGE_NAME},
- * {@link #APP_CERTIFICATE}, {@link #INSTALLER_NAME} and {@link #INSTALLER_CERTIFICATE}
+ * @throws IllegalArgumentException if {@code key} cannot be used with string value
*/
- public StringAtomicFormula(@Key int key, @NonNull String value) {
+ public StringAtomicFormula(@Key int key, @NonNull String value, boolean isHashedValue) {
super(key);
+ mIsHashedValue = isHashedValue;
checkArgument(
key == PACKAGE_NAME
|| key == APP_CERTIFICATE
@@ -224,6 +280,7 @@
StringAtomicFormula(Parcel in) {
super(in.readInt());
mValue = in.readStringNoHelper();
+ mIsHashedValue = in.readByte() != 0;
}
@NonNull
@@ -247,6 +304,11 @@
}
@Override
+ public int getTag() {
+ return Formula.STRING_ATOMIC_FORMULA_TAG;
+ }
+
+ @Override
public String toString() {
return String.format("(%s %s %s)", keyToString(getKey()), operatorToString(EQ), mValue);
}
@@ -277,12 +339,18 @@
public void writeToParcel(@NonNull Parcel dest, int flags) {
dest.writeInt(getKey());
dest.writeStringNoHelper(mValue);
+ dest.writeByte((byte) (mIsHashedValue ? 1 : 0));
}
+ @NonNull
public String getValue() {
return mValue;
}
+ public boolean getIsHashedValue() {
+ return mIsHashedValue;
+ }
+
private String getMetadataValueByKey(AppInstallMetadata appInstallMetadata) {
switch (getKey()) {
case PACKAGE_NAME:
@@ -310,7 +378,7 @@
* <p>This formula will hold if and only if the corresponding information of an install
* specified by {@code key} equals {@code value}.
*
- * @throws IllegalArgumentException if {@code key} is not {@link #PRE_INSTALLED}
+ * @throws IllegalArgumentException if {@code key} cannot be used with boolean value
*/
public BooleanAtomicFormula(@Key int key, boolean value) {
super(key);
@@ -347,6 +415,11 @@
}
@Override
+ public int getTag() {
+ return Formula.BOOLEAN_ATOMIC_FORMULA_TAG;
+ }
+
+ @Override
public String toString() {
return String.format("(%s %s %s)", keyToString(getKey()), operatorToString(EQ), mValue);
}
@@ -398,7 +471,7 @@
return mKey;
}
- String keyToString(int key) {
+ static String keyToString(int key) {
switch (key) {
case PACKAGE_NAME:
return "PACKAGE_NAME";
@@ -417,7 +490,7 @@
}
}
- String operatorToString(int op) {
+ static String operatorToString(int op) {
switch (op) {
case EQ:
return "EQ";
@@ -433,4 +506,13 @@
throw new IllegalArgumentException("Unknown operator " + op);
}
}
+
+ private static boolean isValidKey(int key) {
+ return key == PACKAGE_NAME
+ || key == APP_CERTIFICATE
+ || key == VERSION_CODE
+ || key == INSTALLER_NAME
+ || key == INSTALLER_CERTIFICATE
+ || key == PRE_INSTALLED;
+ }
}
diff --git a/services/core/java/com/android/server/integrity/model/OpenFormula.java b/core/java/android/content/integrity/CompoundFormula.java
similarity index 80%
rename from services/core/java/com/android/server/integrity/model/OpenFormula.java
rename to core/java/android/content/integrity/CompoundFormula.java
index f29706a..53a9953 100644
--- a/services/core/java/com/android/server/integrity/model/OpenFormula.java
+++ b/core/java/android/content/integrity/CompoundFormula.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.server.integrity.model;
+package android.content.integrity;
import static com.android.internal.util.Preconditions.checkArgument;
@@ -35,7 +35,8 @@
import java.util.Objects;
/**
- * Represents a complex formula consisting of other simple and complex formulas.
+ * Represents a compound formula formed by joining other simple and complex formulas with boolean
+ * connectors.
*
* <p>Instances of this class are immutable.
*
@@ -43,12 +44,12 @@
*/
@SystemApi
@VisibleForTesting
-public final class OpenFormula implements Formula, Parcelable {
+public final class CompoundFormula implements Formula, Parcelable {
private static final String TAG = "OpenFormula";
@IntDef(
value = {
- AND, OR, NOT,
+ AND, OR, NOT,
})
@Retention(RetentionPolicy.SOURCE)
public @interface Connector {}
@@ -63,19 +64,19 @@
public static final int NOT = 2;
private final @Connector int mConnector;
- private final List<Formula> mFormulas;
+ private final @NonNull List<Formula> mFormulas;
@NonNull
- public static final Creator<OpenFormula> CREATOR =
- new Creator<OpenFormula>() {
+ public static final Creator<CompoundFormula> CREATOR =
+ new Creator<CompoundFormula>() {
@Override
- public OpenFormula createFromParcel(Parcel in) {
- return new OpenFormula(in);
+ public CompoundFormula createFromParcel(Parcel in) {
+ return new CompoundFormula(in);
}
@Override
- public OpenFormula[] newArray(int size) {
- return new OpenFormula[size];
+ public CompoundFormula[] newArray(int size) {
+ return new CompoundFormula[size];
}
};
@@ -85,13 +86,15 @@
* @throws IllegalArgumentException if the number of operands is not matching the requirements
* for that operator (at least 2 for {@link #AND} and {@link #OR}, 1 for {@link #NOT}).
*/
- public OpenFormula(@Connector int connector, @NonNull List<Formula> formulas) {
+ public CompoundFormula(@Connector int connector, @NonNull List<Formula> formulas) {
+ checkArgument(
+ isValidConnector(connector), String.format("Unknown connector: %d", connector));
validateFormulas(connector, formulas);
this.mConnector = connector;
this.mFormulas = Collections.unmodifiableList(formulas);
}
- OpenFormula(Parcel in) {
+ CompoundFormula(Parcel in) {
mConnector = in.readInt();
int length = in.readInt();
checkArgument(length >= 0, "Must have non-negative length. Got " + length);
@@ -99,6 +102,7 @@
for (int i = 0; i < length; i++) {
mFormulas.add(Formula.readFromParcel(in));
}
+ validateFormulas(mConnector, mFormulas);
}
public @Connector int getConnector() {
@@ -128,6 +132,11 @@
}
@Override
+ public int getTag() {
+ return Formula.COMPOUND_FORMULA_TAG;
+ }
+
+ @Override
public String toString() {
StringBuilder sb = new StringBuilder();
if (mFormulas.size() == 1) {
@@ -152,7 +161,7 @@
if (o == null || getClass() != o.getClass()) {
return false;
}
- OpenFormula that = (OpenFormula) o;
+ CompoundFormula that = (CompoundFormula) o;
return mConnector == that.mConnector && mFormulas.equals(that.mFormulas);
}
@@ -175,7 +184,7 @@
}
}
- private void validateFormulas(@Connector int connector, List<Formula> formulas) {
+ private static void validateFormulas(@Connector int connector, List<Formula> formulas) {
switch (connector) {
case AND:
case OR:
@@ -195,7 +204,7 @@
}
}
- private String connectorToString(int connector) {
+ private static String connectorToString(int connector) {
switch (connector) {
case AND:
return "AND";
@@ -207,4 +216,8 @@
throw new IllegalArgumentException("Unknown connector " + connector);
}
}
+
+ private static boolean isValidConnector(int connector) {
+ return connector == AND || connector == OR || connector == NOT;
+ }
}
diff --git a/services/core/java/com/android/server/integrity/model/Formula.java b/core/java/android/content/integrity/Formula.java
similarity index 67%
rename from services/core/java/com/android/server/integrity/model/Formula.java
rename to core/java/android/content/integrity/Formula.java
index 852ece5..030ff6b 100644
--- a/services/core/java/com/android/server/integrity/model/Formula.java
+++ b/core/java/android/content/integrity/Formula.java
@@ -14,17 +14,21 @@
* limitations under the License.
*/
-package com.android.server.integrity.model;
+package android.content.integrity;
+import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.SystemApi;
+import android.content.integrity.AtomicFormula.BooleanAtomicFormula;
+import android.content.integrity.AtomicFormula.IntAtomicFormula;
+import android.content.integrity.AtomicFormula.StringAtomicFormula;
import android.os.Parcel;
import android.os.Parcelable;
import com.android.internal.annotations.VisibleForTesting;
-import com.android.server.integrity.model.AtomicFormula.BooleanAtomicFormula;
-import com.android.server.integrity.model.AtomicFormula.IntAtomicFormula;
-import com.android.server.integrity.model.AtomicFormula.StringAtomicFormula;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
/**
* Represents a rule logic/content.
@@ -34,8 +38,17 @@
@SystemApi
@VisibleForTesting
public interface Formula {
+ @IntDef(
+ value = {
+ COMPOUND_FORMULA_TAG,
+ STRING_ATOMIC_FORMULA_TAG,
+ INT_ATOMIC_FORMULA_TAG,
+ BOOLEAN_ATOMIC_FORMULA_TAG
+ })
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface Tag {}
- int OPEN_FORMULA_TAG = 0;
+ int COMPOUND_FORMULA_TAG = 0;
int STRING_ATOMIC_FORMULA_TAG = 1;
int INT_ATOMIC_FORMULA_TAG = 2;
int BOOLEAN_ATOMIC_FORMULA_TAG = 3;
@@ -46,6 +59,9 @@
*/
boolean isSatisfied(@NonNull AppInstallMetadata appInstallMetadata);
+ /** Returns the tag that identifies the current class. */
+ @Tag int getTag();
+
/**
* Write a {@link Formula} to {@link android.os.Parcel}.
*
@@ -55,21 +71,8 @@
* @throws IllegalArgumentException if {@link Formula} is not a recognized subclass
*/
static void writeToParcel(@NonNull Formula formula, @NonNull Parcel dest, int flags) {
- if (formula instanceof OpenFormula) {
- dest.writeInt(OPEN_FORMULA_TAG);
- ((OpenFormula) formula).writeToParcel(dest, flags);
- } else if (formula instanceof StringAtomicFormula) {
- dest.writeInt(STRING_ATOMIC_FORMULA_TAG);
- ((StringAtomicFormula) formula).writeToParcel(dest, flags);
- } else if (formula instanceof IntAtomicFormula) {
- dest.writeInt(INT_ATOMIC_FORMULA_TAG);
- ((IntAtomicFormula) formula).writeToParcel(dest, flags);
- } else if (formula instanceof BooleanAtomicFormula) {
- dest.writeInt(BOOLEAN_ATOMIC_FORMULA_TAG);
- ((BooleanAtomicFormula) formula).writeToParcel(dest, flags);
- } else {
- throw new IllegalArgumentException("Unrecognized class " + formula.getClass());
- }
+ dest.writeInt(formula.getTag());
+ ((Parcelable) formula).writeToParcel(dest, flags);
}
/**
@@ -84,8 +87,8 @@
static Formula readFromParcel(@NonNull Parcel in) {
int tag = in.readInt();
switch (tag) {
- case OPEN_FORMULA_TAG:
- return OpenFormula.CREATOR.createFromParcel(in);
+ case COMPOUND_FORMULA_TAG:
+ return CompoundFormula.CREATOR.createFromParcel(in);
case STRING_ATOMIC_FORMULA_TAG:
return StringAtomicFormula.CREATOR.createFromParcel(in);
case INT_ATOMIC_FORMULA_TAG:
diff --git a/core/java/android/content/integrity/IAppIntegrityManager.aidl b/core/java/android/content/integrity/IAppIntegrityManager.aidl
new file mode 100644
index 0000000..6b73fd7
--- /dev/null
+++ b/core/java/android/content/integrity/IAppIntegrityManager.aidl
@@ -0,0 +1,28 @@
+/*
+**
+** Copyright 2019, 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.integrity;
+
+import android.content.integrity.Rule;
+import android.content.IntentSender;
+import android.content.pm.ParceledListSlice;
+
+/** @hide */
+interface IAppIntegrityManager {
+ void updateRuleSet(String version, in ParceledListSlice<Rule> rules, in IntentSender statusReceiver);
+ String getCurrentRuleSetVersion();
+ String getCurrentRuleSetProvider();
+}
diff --git a/core/java/android/content/integrity/Rule.aidl b/core/java/android/content/integrity/Rule.aidl
new file mode 100644
index 0000000..a6634ee
--- /dev/null
+++ b/core/java/android/content/integrity/Rule.aidl
@@ -0,0 +1,19 @@
+/*
+**
+** Copyright 2007, 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.integrity;
+
+parcelable Rule;
diff --git a/services/core/java/com/android/server/integrity/model/Rule.java b/core/java/android/content/integrity/Rule.java
similarity index 86%
rename from services/core/java/com/android/server/integrity/model/Rule.java
rename to core/java/android/content/integrity/Rule.java
index 14dcb26..914f147 100644
--- a/services/core/java/com/android/server/integrity/model/Rule.java
+++ b/core/java/android/content/integrity/Rule.java
@@ -14,8 +14,9 @@
* limitations under the License.
*/
-package com.android.server.integrity.model;
+package android.content.integrity;
+import static com.android.internal.util.Preconditions.checkArgument;
import static com.android.internal.util.Preconditions.checkNotNull;
import android.annotation.IntDef;
@@ -58,10 +59,11 @@
*/
public static final int FORCE_ALLOW = 1;
- private final Formula mFormula;
+ private final @NonNull Formula mFormula;
private final @Effect int mEffect;
public Rule(@NonNull Formula formula, @Effect int effect) {
+ checkArgument(isValidEffect(effect), String.format("Unknown effect: %d", effect));
this.mFormula = checkNotNull(formula);
this.mEffect = effect;
}
@@ -119,7 +121,7 @@
return false;
}
Rule that = (Rule) o;
- return Objects.equals(mFormula, that.mFormula) && mEffect == that.mEffect;
+ return mEffect == that.mEffect && Objects.equals(mFormula, that.mFormula);
}
@Override
@@ -127,7 +129,7 @@
return Objects.hash(mFormula, mEffect);
}
- private String effectToString(int effect) {
+ private static String effectToString(int effect) {
switch (effect) {
case DENY:
return "DENY";
@@ -137,4 +139,9 @@
throw new IllegalArgumentException("Unknown effect " + effect);
}
}
+
+ private static boolean isValidEffect(int effect) {
+ return effect == DENY
+ || effect == FORCE_ALLOW;
+ }
}
diff --git a/core/java/android/content/integrity/RuleSet.java b/core/java/android/content/integrity/RuleSet.java
new file mode 100644
index 0000000..a78f8c9
--- /dev/null
+++ b/core/java/android/content/integrity/RuleSet.java
@@ -0,0 +1,92 @@
+/*
+ * Copyright (C) 2019 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.integrity;
+
+import static com.android.internal.util.Preconditions.checkNotNull;
+
+import android.annotation.NonNull;
+import android.annotation.SystemApi;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * Immutable data class encapsulating all parameters of a rule set.
+ *
+ * @hide
+ */
+@SystemApi
+public class RuleSet {
+ private final String mVersion;
+ private final List<Rule> mRules;
+
+ private RuleSet(String version, List<Rule> rules) {
+ mVersion = version;
+ mRules = Collections.unmodifiableList(rules);
+ }
+
+ /** @see Builder#setVersion(String). */
+ @NonNull
+ public String getVersion() {
+ return mVersion;
+ }
+
+ /** @see Builder#addRules(List). */
+ @NonNull
+ public List<Rule> getRules() {
+ return mRules;
+ }
+
+ /** Builder class for RuleSetUpdateRequest. */
+ public static class Builder {
+ private String mVersion;
+ private List<Rule> mRules;
+
+ public Builder() {
+ mRules = new ArrayList<>();
+ }
+
+ /**
+ * Set a version string to identify this rule set. This can be retrieved by {@link
+ * AppIntegrityManager#getCurrentRuleSetVersion()}.
+ */
+ @NonNull
+ public Builder setVersion(@NonNull String version) {
+ mVersion = version;
+ return this;
+ }
+
+ /** Add the rules to include. */
+ @NonNull
+ public Builder addRules(@NonNull List<Rule> rules) {
+ mRules.addAll(rules);
+ return this;
+ }
+
+ /**
+ * Builds a {@link RuleSet}.
+ *
+ * @throws IllegalArgumentException if version is null
+ */
+ @NonNull
+ public RuleSet build() {
+ checkNotNull(mVersion);
+ return new RuleSet(mVersion, mRules);
+ }
+ }
+}
diff --git a/core/java/android/content/pm/IPackageInstallerSession.aidl b/core/java/android/content/pm/IPackageInstallerSession.aidl
index 04e15c7..b740617 100644
--- a/core/java/android/content/pm/IPackageInstallerSession.aidl
+++ b/core/java/android/content/pm/IPackageInstallerSession.aidl
@@ -36,7 +36,7 @@
void close();
void commit(in IntentSender statusReceiver, boolean forTransferred);
- void transfer(in String packageName);
+ void transfer(in String packageName, in IntentSender statusReceiver);
void abandon();
boolean isMultiPackage();
diff --git a/core/java/android/content/pm/PackageInstaller.java b/core/java/android/content/pm/PackageInstaller.java
index 0c52979..4ab6f3c 100644
--- a/core/java/android/content/pm/PackageInstaller.java
+++ b/core/java/android/content/pm/PackageInstaller.java
@@ -29,6 +29,8 @@
import android.annotation.UnsupportedAppUsage;
import android.app.ActivityManager;
import android.app.AppGlobals;
+import android.content.IIntentReceiver;
+import android.content.IIntentSender;
import android.content.Intent;
import android.content.IntentSender;
import android.content.pm.PackageManager.DeleteFlags;
@@ -36,9 +38,11 @@
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Build;
+import android.os.Bundle;
import android.os.FileBridge;
import android.os.Handler;
import android.os.HandlerExecutor;
+import android.os.IBinder;
import android.os.Parcel;
import android.os.ParcelFileDescriptor;
import android.os.Parcelable;
@@ -67,6 +71,8 @@
import java.util.Iterator;
import java.util.List;
import java.util.Set;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutionException;
import java.util.concurrent.Executor;
import java.util.stream.Collectors;
@@ -176,7 +182,7 @@
* {@link #STATUS_PENDING_USER_ACTION}, {@link #STATUS_SUCCESS},
* {@link #STATUS_FAILURE}, {@link #STATUS_FAILURE_ABORTED},
* {@link #STATUS_FAILURE_BLOCKED}, {@link #STATUS_FAILURE_CONFLICT},
- * {@link #STATUS_FAILURE_INCOMPATIBLE}, {@link #STATUS_FAILURE_INVALID}, or
+ * {@link #STATUS_FAILURE_INCOMPATIBLE}, {@link #STATUS_FAILURE_INVALID},
* {@link #STATUS_FAILURE_STORAGE}.
* <p>
* More information about a status may be available through additional
@@ -316,6 +322,34 @@
*/
public static final int STATUS_FAILURE_INCOMPATIBLE = 7;
+ /**
+ * The transfer failed because a target package can't be found. For example
+ * transferring a session to a non-existing package.
+ * <p>
+ * The result may also contain {@link #EXTRA_OTHER_PACKAGE_NAME} with the
+ * missing package.
+ *
+ * @see #EXTRA_STATUS_MESSAGE
+ * @see #EXTRA_OTHER_PACKAGE_NAME
+ */
+ public static final int STATUS_FAILURE_NAME_NOT_FOUND = 8;
+
+ /**
+ * The transfer failed because a session is in invalid state. For example
+ * transferring an already committed session.
+ *
+ * @see #EXTRA_STATUS_MESSAGE
+ */
+ public static final int STATUS_FAILURE_ILLEGAL_STATE = 9;
+
+ /**
+ * The transfer failed for security reasons. For example transferring
+ * to a package which does not have INSTALL_PACKAGES permission.
+ *
+ * @see #EXTRA_STATUS_MESSAGE
+ */
+ public static final int STATUS_FAILURE_SECURITY = 10;
+
private final IPackageInstaller mInstaller;
private final int mUserId;
private final String mInstallerPackageName;
@@ -1052,7 +1086,8 @@
}
/**
- * Attempt to commit a session that has been {@link #transfer(String) transferred}.
+ * Attempt to commit a session that has been {@link #transfer(String, IntentSender)
+ * transferred}.
*
* <p>If the device reboots before the session has been finalized, you may commit the
* session again.
@@ -1093,6 +1128,38 @@
*
* @param packageName The package of the new owner. Needs to hold the INSTALL_PACKAGES
* permission.
+ * @param statusReceiver Called when the state of the session changes. Intents sent to this
+ * receiver contain {@link #EXTRA_STATUS}. Refer to the individual
+ * transfer status codes on how to handle them.
+ *
+ * @throws PackageManager.NameNotFoundException if the new owner could not be found.
+ * @throws SecurityException if called after the session has been committed or abandoned.
+ * @throws SecurityException if the session does not update the original installer
+ * @throws SecurityException if streams opened through
+ * {@link #openWrite(String, long, long) are still open.
+ */
+ public void transfer(@NonNull String packageName, @NonNull IntentSender statusReceiver)
+ throws PackageManager.NameNotFoundException {
+ Preconditions.checkNotNull(statusReceiver);
+ Preconditions.checkNotNull(packageName);
+
+ try {
+ mSession.transfer(packageName, statusReceiver);
+ } catch (ParcelableException e) {
+ e.maybeRethrow(PackageManager.NameNotFoundException.class);
+ throw new RuntimeException(e);
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+
+ /**
+ * Transfer the session to a new owner.
+ * This is a convenience blocking wrapper around {@link #transfer(String, IntentSender)}.
+ * Converts all statuses into exceptions.
+ *
+ * @param packageName The package of the new owner. Needs to hold the INSTALL_PACKAGES
+ * permission.
*
* @throws PackageManager.NameNotFoundException if the new owner could not be found.
* @throws SecurityException if called after the session has been committed or abandoned.
@@ -1104,13 +1171,43 @@
throws PackageManager.NameNotFoundException {
Preconditions.checkNotNull(packageName);
+ CompletableFuture<Intent> intentFuture = new CompletableFuture<Intent>();
try {
- mSession.transfer(packageName);
+ IIntentSender localSender = new IIntentSender.Stub() {
+ @Override
+ public void send(int code, Intent intent, String resolvedType,
+ IBinder whitelistToken,
+ IIntentReceiver finishedReceiver, String requiredPermission,
+ Bundle options) {
+ intentFuture.complete(intent);
+ }
+ };
+ transfer(packageName, new IntentSender(localSender));
} catch (ParcelableException e) {
e.maybeRethrow(PackageManager.NameNotFoundException.class);
throw new RuntimeException(e);
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
+ }
+
+ try {
+ Intent intent = intentFuture.get();
+ final int status = intent.getIntExtra(EXTRA_STATUS, Integer.MIN_VALUE);
+ final String statusMessage = intent.getStringExtra(EXTRA_STATUS_MESSAGE);
+ switch (status) {
+ case STATUS_SUCCESS:
+ break;
+ case STATUS_FAILURE_NAME_NOT_FOUND:
+ throw new PackageManager.NameNotFoundException(statusMessage);
+ case STATUS_FAILURE_ILLEGAL_STATE:
+ throw new IllegalStateException(statusMessage);
+ case STATUS_FAILURE_SECURITY:
+ throw new SecurityException(statusMessage);
+ default:
+ throw new RuntimeException(statusMessage);
+ }
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ } catch (ExecutionException e) {
+ throw new RuntimeException(e);
}
}
diff --git a/core/java/android/content/pm/PermissionInfo.java b/core/java/android/content/pm/PermissionInfo.java
index aa6f58e..c77c53f 100644
--- a/core/java/android/content/pm/PermissionInfo.java
+++ b/core/java/android/content/pm/PermissionInfo.java
@@ -248,17 +248,6 @@
@TestApi
public static final int PROTECTION_FLAG_TELEPHONY = 0x400000;
- /**
- * Additional flag for {@link #protectionLevel}, corresponding
- * to the <code>wifi</code> value of
- * {@link android.R.attr#protectionLevel}.
- *
- * @hide
- */
- @SystemApi
- @TestApi
- public static final int PROTECTION_FLAG_WIFI = 0x800000;
-
/** @hide */
@IntDef(flag = true, prefix = { "PROTECTION_FLAG_" }, value = {
PROTECTION_FLAG_PRIVILEGED,
@@ -281,7 +270,6 @@
PROTECTION_FLAG_INCIDENT_REPORT_APPROVER,
PROTECTION_FLAG_APP_PREDICTOR,
PROTECTION_FLAG_TELEPHONY,
- PROTECTION_FLAG_WIFI,
})
@Retention(RetentionPolicy.SOURCE)
public @interface ProtectionFlags {}
@@ -528,9 +516,6 @@
if ((level & PermissionInfo.PROTECTION_FLAG_TELEPHONY) != 0) {
protLevel += "|telephony";
}
- if ((level & PermissionInfo.PROTECTION_FLAG_WIFI) != 0) {
- protLevel += "|wifi";
- }
return protLevel;
}
diff --git a/core/java/android/content/pm/UserInfo.java b/core/java/android/content/pm/UserInfo.java
index a83c3da..fff9cf3 100644
--- a/core/java/android/content/pm/UserInfo.java
+++ b/core/java/android/content/pm/UserInfo.java
@@ -26,6 +26,8 @@
import android.os.UserManager;
import android.util.DebugUtils;
+import com.android.internal.annotations.VisibleForTesting;
+
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -385,6 +387,13 @@
}
}
+ // TODO(b/142482943): Get rid of this (after removing it from all tests) if feasible.
+ /**
+ * @deprecated This is dangerous since it doesn't set the mandatory fields. Use a different
+ * constructor instead.
+ */
+ @Deprecated
+ @VisibleForTesting
public UserInfo() {
}
diff --git a/core/java/android/hardware/camera2/legacy/RequestQueue.java b/core/java/android/hardware/camera2/legacy/RequestQueue.java
index 407e5e6..fb44402 100644
--- a/core/java/android/hardware/camera2/legacy/RequestQueue.java
+++ b/core/java/android/hardware/camera2/legacy/RequestQueue.java
@@ -30,7 +30,7 @@
public class RequestQueue {
private static final String TAG = "RequestQueue";
- private static final long INVALID_FRAME = -1;
+ public static final long INVALID_FRAME = -1;
private BurstHolder mRepeatingRequest = null;
private final ArrayDeque<BurstHolder> mRequestQueue = new ArrayDeque<BurstHolder>();
diff --git a/core/java/android/hardware/camera2/legacy/RequestThreadManager.java b/core/java/android/hardware/camera2/legacy/RequestThreadManager.java
index 32411fb..f9a5029 100644
--- a/core/java/android/hardware/camera2/legacy/RequestThreadManager.java
+++ b/core/java/android/hardware/camera2/legacy/RequestThreadManager.java
@@ -948,8 +948,13 @@
Log.d(TAG, "Stopped repeating request. Last frame number is " +
lastFrameNumber);
}
- mDeviceState.setRepeatingRequestError(lastFrameNumber,
- burstHolder.getRequestId());
+ if (lastFrameNumber != RequestQueue.INVALID_FRAME) {
+ mDeviceState.setRepeatingRequestError(lastFrameNumber,
+ burstHolder.getRequestId());
+ } else {
+ Log.e(TAG, "Repeating request id: " + burstHolder.getRequestId() +
+ " already canceled!");
+ }
}
if (DEBUG) {
diff --git a/core/java/android/net/ConnectivityManager.java b/core/java/android/net/ConnectivityManager.java
index 194068c..d95da91 100644
--- a/core/java/android/net/ConnectivityManager.java
+++ b/core/java/android/net/ConnectivityManager.java
@@ -1006,7 +1006,7 @@
*
* @hide
*/
- @RequiresPermission(android.Manifest.permission.CONNECTIVITY_INTERNAL)
+ @RequiresPermission(android.Manifest.permission.NETWORK_STACK)
@Nullable
public Network getActiveNetworkForUid(int uid) {
return getActiveNetworkForUid(uid, false);
@@ -1135,7 +1135,7 @@
*
* {@hide}
*/
- @RequiresPermission(android.Manifest.permission.CONNECTIVITY_INTERNAL)
+ @RequiresPermission(android.Manifest.permission.NETWORK_STACK)
@UnsupportedAppUsage
public NetworkInfo getActiveNetworkInfoForUid(int uid) {
return getActiveNetworkInfoForUid(uid, false);
@@ -1370,10 +1370,14 @@
* The system network validation may be using different strategies to detect captive portals,
* so this method does not necessarily return a URL used by the system. It only returns a URL
* that may be relevant for other components trying to detect captive portals.
+ *
* @hide
+ * @deprecated This API returns URL which is not guaranteed to be one of the URLs used by the
+ * system.
*/
+ @Deprecated
@SystemApi
- @RequiresPermission(android.Manifest.permission.LOCAL_MAC_ADDRESS)
+ @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS)
public String getCaptivePortalServerUrl() {
try {
return mService.getCaptivePortalServerUrl();
@@ -2399,6 +2403,7 @@
* @return an array of 0 or more {@code String} of tethered dhcp ranges.
* {@hide}
*/
+ @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS)
public String[] getTetheredDhcpRanges() {
try {
return mService.getTetheredDhcpRanges();
@@ -2978,7 +2983,7 @@
* HTTP proxy. A {@code null} value will clear the global HTTP proxy.
* @hide
*/
- @RequiresPermission(android.Manifest.permission.CONNECTIVITY_INTERNAL)
+ @RequiresPermission(android.Manifest.permission.NETWORK_STACK)
public void setGlobalProxy(ProxyInfo p) {
try {
mService.setGlobalProxy(p);
@@ -3123,6 +3128,7 @@
* Get the mobile provisioning url.
* {@hide}
*/
+ @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS)
public String getMobileProvisioningUrl() {
try {
return mService.getMobileProvisioningUrl();
@@ -3169,6 +3175,7 @@
/** {@hide} - returns the factory serial number */
@UnsupportedAppUsage
+ @RequiresPermission(android.Manifest.permission.NETWORK_FACTORY)
public int registerNetworkFactory(Messenger messenger, String name) {
try {
return mService.registerNetworkFactory(messenger, name);
@@ -3179,6 +3186,7 @@
/** {@hide} */
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
+ @RequiresPermission(android.Manifest.permission.NETWORK_FACTORY)
public void unregisterNetworkFactory(Messenger messenger) {
try {
mService.unregisterNetworkFactory(messenger);
@@ -3196,6 +3204,7 @@
* Register a NetworkAgent with ConnectivityService.
* @return NetID corresponding to NetworkAgent.
*/
+ @RequiresPermission(android.Manifest.permission.NETWORK_FACTORY)
public int registerNetworkAgent(Messenger messenger, NetworkInfo ni, LinkProperties lp,
NetworkCapabilities nc, int score, NetworkMisc misc) {
return registerNetworkAgent(messenger, ni, lp, nc, score, misc,
@@ -3207,6 +3216,7 @@
* Register a NetworkAgent with ConnectivityService.
* @return NetID corresponding to NetworkAgent.
*/
+ @RequiresPermission(android.Manifest.permission.NETWORK_FACTORY)
public int registerNetworkAgent(Messenger messenger, NetworkInfo ni, LinkProperties lp,
NetworkCapabilities nc, int score, NetworkMisc misc, int factorySerialNumber) {
try {
@@ -4201,7 +4211,7 @@
*
* @hide
*/
- @RequiresPermission(android.Manifest.permission.CONNECTIVITY_INTERNAL)
+ @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS)
public void startCaptivePortalApp(Network network) {
try {
mService.startCaptivePortalApp(network);
@@ -4317,6 +4327,7 @@
* Resets all connectivity manager settings back to factory defaults.
* @hide
*/
+ @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS)
public void factoryReset() {
try {
mService.factoryReset();
diff --git a/core/java/android/net/IpConfiguration.java b/core/java/android/net/IpConfiguration.java
index 2af82d7..dddb64d 100644
--- a/core/java/android/net/IpConfiguration.java
+++ b/core/java/android/net/IpConfiguration.java
@@ -16,6 +16,10 @@
package android.net;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.annotation.SuppressLint;
+import android.annotation.SystemApi;
import android.annotation.UnsupportedAppUsage;
import android.net.StaticIpConfiguration;
import android.os.Parcel;
@@ -27,13 +31,17 @@
* A class representing a configured network.
* @hide
*/
-public class IpConfiguration implements Parcelable {
+@SystemApi
+public final class IpConfiguration implements Parcelable {
private static final String TAG = "IpConfiguration";
+ // This enum has been used by apps through reflection for many releases.
+ // Therefore they can't just be removed. Duplicating these constants to
+ // give an alternate SystemApi is a worse option than exposing them.
+ @SuppressLint("Enum")
public enum IpAssignment {
/* Use statically configured IP settings. Configuration can be accessed
* with staticIpConfiguration */
- @UnsupportedAppUsage
STATIC,
/* Use dynamically configured IP settings */
DHCP,
@@ -42,14 +50,19 @@
UNASSIGNED
}
+ /** @hide */
public IpAssignment ipAssignment;
+ /** @hide */
public StaticIpConfiguration staticIpConfiguration;
+ // This enum has been used by apps through reflection for many releases.
+ // Therefore they can't just be removed. Duplicating these constants to
+ // give an alternate SystemApi is a worse option than exposing them.
+ @SuppressLint("Enum")
public enum ProxySettings {
/* No proxy is to be used. Any existing proxy settings
* should be cleared. */
- @UnsupportedAppUsage
NONE,
/* Use statically configured proxy. Configuration can be accessed
* with httpProxy. */
@@ -62,8 +75,10 @@
PAC
}
+ /** @hide */
public ProxySettings proxySettings;
+ /** @hide */
@UnsupportedAppUsage
public ProxyInfo httpProxy;
@@ -83,6 +98,7 @@
init(IpAssignment.UNASSIGNED, ProxySettings.UNASSIGNED, null, null);
}
+ /** @hide */
@UnsupportedAppUsage
public IpConfiguration(IpAssignment ipAssignment,
ProxySettings proxySettings,
@@ -91,7 +107,7 @@
init(ipAssignment, proxySettings, staticIpConfiguration, httpProxy);
}
- public IpConfiguration(IpConfiguration source) {
+ public IpConfiguration(@NonNull IpConfiguration source) {
this();
if (source != null) {
init(source.ipAssignment, source.proxySettings,
@@ -99,35 +115,35 @@
}
}
- public IpAssignment getIpAssignment() {
+ public @NonNull IpAssignment getIpAssignment() {
return ipAssignment;
}
- public void setIpAssignment(IpAssignment ipAssignment) {
+ public void setIpAssignment(@NonNull IpAssignment ipAssignment) {
this.ipAssignment = ipAssignment;
}
- public StaticIpConfiguration getStaticIpConfiguration() {
+ public @Nullable StaticIpConfiguration getStaticIpConfiguration() {
return staticIpConfiguration;
}
- public void setStaticIpConfiguration(StaticIpConfiguration staticIpConfiguration) {
+ public void setStaticIpConfiguration(@Nullable StaticIpConfiguration staticIpConfiguration) {
this.staticIpConfiguration = staticIpConfiguration;
}
- public ProxySettings getProxySettings() {
+ public @NonNull ProxySettings getProxySettings() {
return proxySettings;
}
- public void setProxySettings(ProxySettings proxySettings) {
+ public void setProxySettings(@NonNull ProxySettings proxySettings) {
this.proxySettings = proxySettings;
}
- public ProxyInfo getHttpProxy() {
+ public @Nullable ProxyInfo getHttpProxy() {
return httpProxy;
}
- public void setHttpProxy(ProxyInfo httpProxy) {
+ public void setHttpProxy(@Nullable ProxyInfo httpProxy) {
this.httpProxy = httpProxy;
}
@@ -180,8 +196,8 @@
return 0;
}
- /** Implement the Parcelable interface */
- public void writeToParcel(Parcel dest, int flags) {
+ /** Implement the Parcelable interface */
+ public void writeToParcel(@NonNull Parcel dest, int flags) {
dest.writeString(ipAssignment.name());
dest.writeString(proxySettings.name());
dest.writeParcelable(staticIpConfiguration, flags);
@@ -189,7 +205,7 @@
}
/** Implement the Parcelable interface */
- public static final @android.annotation.NonNull Creator<IpConfiguration> CREATOR =
+ public static final @NonNull Creator<IpConfiguration> CREATOR =
new Creator<IpConfiguration>() {
public IpConfiguration createFromParcel(Parcel in) {
IpConfiguration config = new IpConfiguration();
diff --git a/core/java/android/net/LinkProperties.java b/core/java/android/net/LinkProperties.java
index 0706e75..8e18341 100644
--- a/core/java/android/net/LinkProperties.java
+++ b/core/java/android/net/LinkProperties.java
@@ -762,10 +762,7 @@
* Returns the NAT64 prefix in use on this link, if any.
*
* @return the NAT64 prefix or {@code null}.
- * @hide
*/
- @SystemApi
- @TestApi
public @Nullable IpPrefix getNat64Prefix() {
return mNat64Prefix;
}
@@ -777,10 +774,7 @@
* 128-bit IPv6 address) are supported or {@code null} for no prefix.
*
* @param prefix the NAT64 prefix.
- * @hide
*/
- @SystemApi
- @TestApi
public void setNat64Prefix(@Nullable IpPrefix prefix) {
if (prefix != null && prefix.getPrefixLength() != 96) {
throw new IllegalArgumentException("Only 96-bit prefixes are supported: " + prefix);
diff --git a/core/java/android/net/NetworkIdentity.java b/core/java/android/net/NetworkIdentity.java
index ce2de85..febc730 100644
--- a/core/java/android/net/NetworkIdentity.java
+++ b/core/java/android/net/NetworkIdentity.java
@@ -25,7 +25,6 @@
import android.net.wifi.WifiManager;
import android.os.Build;
import android.service.NetworkIdentityProto;
-import android.telephony.TelephonyManager;
import android.util.Slog;
import android.util.proto.ProtoOutputStream;
@@ -98,8 +97,6 @@
builder.append(", subType=");
if (COMBINE_SUBTYPE_ENABLED) {
builder.append("COMBINED");
- } else if (ConnectivityManager.isNetworkTypeMobile(mType)) {
- builder.append(TelephonyManager.getNetworkTypeName(mSubType));
} else {
builder.append(mSubType);
}
diff --git a/core/java/android/net/NetworkKey.java b/core/java/android/net/NetworkKey.java
index 4254240..47c08a4 100644
--- a/core/java/android/net/NetworkKey.java
+++ b/core/java/android/net/NetworkKey.java
@@ -16,6 +16,7 @@
package android.net;
+import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SystemApi;
@@ -27,6 +28,8 @@
import android.text.TextUtils;
import android.util.Log;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
import java.util.Objects;
/**
@@ -48,6 +51,13 @@
/** A wifi network, for which {@link #wifiKey} will be populated. */
public static final int TYPE_WIFI = 1;
+ /** @hide */
+ @Retention(RetentionPolicy.SOURCE)
+ @IntDef(prefix = {"TYPE_"}, value = {
+ TYPE_WIFI
+ })
+ public @interface NetworkType {}
+
/**
* The type of this network.
* @see #TYPE_WIFI
@@ -65,7 +75,6 @@
*
* @return A new {@link NetworkKey} instance or <code>null</code> if the given
* {@link ScanResult} instance is malformed.
- * @hide
*/
@Nullable
public static NetworkKey createFromScanResult(@Nullable ScanResult result) {
diff --git a/core/java/android/net/NetworkScore.java b/core/java/android/net/NetworkScore.java
index 1ab6335..13f2994 100644
--- a/core/java/android/net/NetworkScore.java
+++ b/core/java/android/net/NetworkScore.java
@@ -154,4 +154,9 @@
}
return true;
}
+
+ /** Convert to a string */
+ public String toString() {
+ return "NetworkScore[" + mExtensions.toString() + "]";
+ }
}
diff --git a/core/java/android/net/NetworkScoreManager.java b/core/java/android/net/NetworkScoreManager.java
index 50dd468..f6dc525 100644
--- a/core/java/android/net/NetworkScoreManager.java
+++ b/core/java/android/net/NetworkScoreManager.java
@@ -17,7 +17,9 @@
package android.net;
import android.Manifest.permission;
+import android.annotation.CallbackExecutor;
import android.annotation.IntDef;
+import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.RequiresPermission;
import android.annotation.SdkConstant;
@@ -25,13 +27,16 @@
import android.annotation.SystemApi;
import android.annotation.SystemService;
import android.content.Context;
+import android.os.Binder;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.ServiceManager.ServiceNotFoundException;
+import android.util.Log;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.List;
+import java.util.concurrent.Executor;
/**
* Class that manages communication between network subsystems and a network scorer.
@@ -50,19 +55,25 @@
@SystemApi
@SystemService(Context.NETWORK_SCORE_SERVICE)
public class NetworkScoreManager {
+ private static final String TAG = "NetworkScoreManager";
+
/**
* Activity action: ask the user to change the active network scorer. This will show a dialog
* that asks the user whether they want to replace the current active scorer with the one
* specified in {@link #EXTRA_PACKAGE_NAME}. The activity will finish with RESULT_OK if the
* active scorer was changed or RESULT_CANCELED if it failed for any reason.
+ * @deprecated No longer sent.
*/
+ @Deprecated
@SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
public static final String ACTION_CHANGE_ACTIVE = "android.net.scoring.CHANGE_ACTIVE";
/**
* Extra used with {@link #ACTION_CHANGE_ACTIVE} to specify the new scorer package. Set with
* {@link android.content.Intent#putExtra(String, String)}.
+ * @deprecated No longer sent.
*/
+ @Deprecated
public static final String EXTRA_PACKAGE_NAME = "packageName";
/**
@@ -73,7 +84,9 @@
* configured by the user as well as any open networks.
*
* <p class="note">This is a protected intent that can only be sent by the system.
+ * @deprecated Use {@link #ACTION_RECOMMEND_NETWORKS} to bind scorer app instead.
*/
+ @Deprecated
@SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
public static final String ACTION_SCORE_NETWORKS = "android.net.scoring.SCORE_NETWORKS";
@@ -81,7 +94,9 @@
* Extra used with {@link #ACTION_SCORE_NETWORKS} to specify the networks to be scored, as an
* array of {@link NetworkKey}s. Can be obtained with
* {@link android.content.Intent#getParcelableArrayExtra(String)}}.
+ * @deprecated Use {@link #ACTION_RECOMMEND_NETWORKS} to bind scorer app instead.
*/
+ @Deprecated
public static final String EXTRA_NETWORKS_TO_SCORE = "networksToScore";
/**
@@ -285,7 +300,7 @@
* @throws SecurityException if the caller is not the active scorer.
*/
@RequiresPermission(android.Manifest.permission.SCORE_NETWORKS)
- public boolean updateScores(ScoredNetwork[] networks) throws SecurityException {
+ public boolean updateScores(@NonNull ScoredNetwork[] networks) throws SecurityException {
try {
return mService.updateScores(networks);
} catch (RemoteException e) {
@@ -359,13 +374,21 @@
/**
* Request scoring for networks.
*
- * @return true if the broadcast was sent, or false if there is no active scorer.
+ * <p>
+ * Note: The results (i.e scores) for these networks, when available will be provided via the
+ * callback registered with {@link #registerNetworkScoreCallback(int, int, Executor,
+ * NetworkScoreCallback)}. The calling module is responsible for registering a callback to
+ * receive the results before requesting new scores via this API.
+ *
+ * @return true if the request was successfully sent, or false if there is no active scorer.
* @throws SecurityException if the caller does not hold the
* {@link permission#REQUEST_NETWORK_SCORES} permission.
+ *
* @hide
*/
+ @SystemApi
@RequiresPermission(android.Manifest.permission.REQUEST_NETWORK_SCORES)
- public boolean requestScores(NetworkKey[] networks) throws SecurityException {
+ public boolean requestScores(@NonNull NetworkKey[] networks) throws SecurityException {
try {
return mService.requestScores(networks);
} catch (RemoteException e) {
@@ -431,6 +454,88 @@
}
/**
+ * Base class for network score cache callback. Should be extended by applications and set
+ * when calling {@link #registerNetworkScoreCallback(int, int, NetworkScoreCallback,
+ * Executor)}
+ *
+ * @hide
+ */
+ @SystemApi
+ public interface NetworkScoreCallback {
+ /**
+ * Called when a new set of network scores are available.
+ * This is triggered in response when the client invokes
+ * {@link #requestScores(NetworkKey[])} to score a new set of networks.
+ *
+ * @param networks List of {@link ScoredNetwork} containing updated scores.
+ */
+ void updateScores(@NonNull List<ScoredNetwork> networks);
+
+ /**
+ * Invokes when all the previously provided scores are no longer valid.
+ */
+ void clearScores();
+ }
+
+ /**
+ * Callback proxy for {@link NetworkScoreCallback} objects.
+ */
+ private class NetworkScoreCallbackProxy extends INetworkScoreCache.Stub {
+ private final Executor mExecutor;
+ private final NetworkScoreCallback mCallback;
+
+ NetworkScoreCallbackProxy(Executor executor, NetworkScoreCallback callback) {
+ mExecutor = executor;
+ mCallback = callback;
+ }
+
+ @Override
+ public void updateScores(@NonNull List<ScoredNetwork> networks) {
+ Binder.clearCallingIdentity();
+ mExecutor.execute(() -> {
+ mCallback.updateScores(networks);
+ });
+ }
+
+ @Override
+ public void clearScores() {
+ Binder.clearCallingIdentity();
+ mExecutor.execute(() -> {
+ mCallback.clearScores();
+ });
+ }
+ }
+
+ /**
+ * Register a network score callback.
+ *
+ * @param networkType the type of network this cache can handle. See {@link NetworkKey#type}
+ * @param filterType the {@link CacheUpdateFilter} to apply
+ * @param callback implementation of {@link NetworkScoreCallback} that will be invoked when the
+ * scores change.
+ * @param executor The executor on which to execute the callbacks.
+ * @throws SecurityException if the caller does not hold the
+ * {@link permission#REQUEST_NETWORK_SCORES} permission.
+ * @throws IllegalArgumentException if a callback is already registered for this type.
+ * @hide
+ */
+ @SystemApi
+ @RequiresPermission(android.Manifest.permission.REQUEST_NETWORK_SCORES)
+ public void registerNetworkScoreCallback(@NetworkKey.NetworkType int networkType,
+ @CacheUpdateFilter int filterType,
+ @NonNull @CallbackExecutor Executor executor,
+ @NonNull NetworkScoreCallback callback) throws SecurityException {
+ if (callback == null || executor == null) {
+ throw new IllegalArgumentException("callback / executor cannot be null");
+ }
+ Log.v(TAG, "registerNetworkScoreCallback: callback=" + callback + ", executor="
+ + executor);
+ // Use the @hide method.
+ registerNetworkScoreCache(
+ networkType, new NetworkScoreCallbackProxy(executor, callback), filterType);
+ }
+
+ /**
* Determine whether the application with the given UID is the enabled scorer.
*
* @param callingUid the UID to check
diff --git a/core/java/android/net/ProxyInfo.java b/core/java/android/net/ProxyInfo.java
index 807c467..9d92db4 100644
--- a/core/java/android/net/ProxyInfo.java
+++ b/core/java/android/net/ProxyInfo.java
@@ -16,7 +16,8 @@
package android.net;
-
+import android.annotation.NonNull;
+import android.annotation.Nullable;
import android.annotation.UnsupportedAppUsage;
import android.os.Parcel;
import android.os.Parcelable;
@@ -89,6 +90,15 @@
}
/**
+ * Construct a {@link ProxyInfo} object that will download and run the PAC script at the
+ * specified URL and port.
+ */
+ @NonNull
+ public static ProxyInfo buildPacProxy(@NonNull Uri pacUrl, int port) {
+ return new ProxyInfo(pacUrl, port);
+ }
+
+ /**
* Create a ProxyProperties that points at a HTTP Proxy.
* @hide
*/
@@ -105,7 +115,7 @@
* Create a ProxyProperties that points at a PAC URL.
* @hide
*/
- public ProxyInfo(Uri pacFileUrl) {
+ public ProxyInfo(@NonNull Uri pacFileUrl) {
mHost = LOCAL_HOST;
mPort = LOCAL_PORT;
mExclusionList = LOCAL_EXCL_LIST;
@@ -132,7 +142,7 @@
* Only used in PacManager after Local Proxy is bound.
* @hide
*/
- public ProxyInfo(Uri pacFileUrl, int localProxyPort) {
+ public ProxyInfo(@NonNull Uri pacFileUrl, int localProxyPort) {
mHost = LOCAL_HOST;
mPort = localProxyPort;
mExclusionList = LOCAL_EXCL_LIST;
@@ -159,11 +169,10 @@
mPacFileUrl = Uri.EMPTY;
}
- // copy constructor instead of clone
/**
- * @hide
+ * A copy constructor to hold proxy properties.
*/
- public ProxyInfo(ProxyInfo source) {
+ public ProxyInfo(@Nullable ProxyInfo source) {
if (source != null) {
mHost = source.getHost();
mPort = source.getPort();
@@ -226,12 +235,13 @@
* comma separated
* @hide
*/
+ @Nullable
public String getExclusionListAsString() {
return mExclusionList;
}
/**
- * @hide
+ * Return true if the pattern of proxy is valid, otherwise return false.
*/
public boolean isValid() {
if (!Uri.EMPTY.equals(mPacFileUrl)) return true;
diff --git a/core/java/android/os/BatteryStats.java b/core/java/android/os/BatteryStats.java
index 95815e4..9fed269 100644
--- a/core/java/android/os/BatteryStats.java
+++ b/core/java/android/os/BatteryStats.java
@@ -27,7 +27,7 @@
import android.server.ServerProtoEnums;
import android.service.batterystats.BatteryStatsServiceDumpHistoryProto;
import android.service.batterystats.BatteryStatsServiceDumpProto;
-import android.telephony.SignalStrength;
+import android.telephony.CellSignalStrength;
import android.telephony.TelephonyManager;
import android.text.format.DateFormat;
import android.util.ArrayMap;
@@ -2529,7 +2529,7 @@
new String[] {"in", "out", "em", "off"}),
new BitDescription(HistoryItem.STATE_PHONE_SIGNAL_STRENGTH_MASK,
HistoryItem.STATE_PHONE_SIGNAL_STRENGTH_SHIFT, "phone_signal_strength", "Pss",
- SignalStrength.SIGNAL_STRENGTH_NAMES,
+ new String[] { "none", "poor", "moderate", "good", "great" },
new String[] { "0", "1", "2", "3", "4" }),
new BitDescription(HistoryItem.STATE_BRIGHTNESS_MASK,
HistoryItem.STATE_BRIGHTNESS_SHIFT, "brightness", "Sb",
@@ -3891,14 +3891,14 @@
dumpLine(pw, 0 /* uid */, category, SCREEN_BRIGHTNESS_DATA, args);
// Dump signal strength stats
- args = new Object[SignalStrength.NUM_SIGNAL_STRENGTH_BINS];
- for (int i=0; i<SignalStrength.NUM_SIGNAL_STRENGTH_BINS; i++) {
+ args = new Object[CellSignalStrength.getNumSignalStrengthLevels()];
+ for (int i = 0; i < CellSignalStrength.getNumSignalStrengthLevels(); i++) {
args[i] = getPhoneSignalStrengthTime(i, rawRealtime, which) / 1000;
}
dumpLine(pw, 0 /* uid */, category, SIGNAL_STRENGTH_TIME_DATA, args);
dumpLine(pw, 0 /* uid */, category, SIGNAL_SCANNING_TIME_DATA,
getPhoneSignalScanningTime(rawRealtime, which) / 1000);
- for (int i=0; i<SignalStrength.NUM_SIGNAL_STRENGTH_BINS; i++) {
+ for (int i = 0; i < CellSignalStrength.getNumSignalStrengthLevels(); i++) {
args[i] = getPhoneSignalStrengthCount(i, which);
}
dumpLine(pw, 0 /* uid */, category, SIGNAL_STRENGTH_COUNT_DATA, args);
@@ -4968,7 +4968,7 @@
"good (-108dBm to -98dBm): ",
"great (greater than -98dBm): "};
didOne = false;
- final int numCellularRxBins = Math.min(SignalStrength.NUM_SIGNAL_STRENGTH_BINS,
+ final int numCellularRxBins = Math.min(CellSignalStrength.getNumSignalStrengthLevels(),
cellularRxSignalStrengthDescription.length);
for (int i=0; i<numCellularRxBins; i++) {
final long time = getPhoneSignalStrengthTime(i, rawRealtime, which);
@@ -8216,7 +8216,7 @@
which);
// Phone signal strength (SIGNAL_STRENGTH_TIME_DATA and SIGNAL_STRENGTH_COUNT_DATA)
- for (int i = 0; i < SignalStrength.NUM_SIGNAL_STRENGTH_BINS; ++i) {
+ for (int i = 0; i < CellSignalStrength.getNumSignalStrengthLevels(); ++i) {
final long pssToken = proto.start(SystemProto.PHONE_SIGNAL_STRENGTH);
proto.write(SystemProto.PhoneSignalStrength.NAME, i);
dumpTimer(proto, SystemProto.PhoneSignalStrength.TOTAL, getPhoneSignalStrengthTimer(i),
diff --git a/core/java/android/os/Binder.java b/core/java/android/os/Binder.java
index ec39199..15ff69e 100644
--- a/core/java/android/os/Binder.java
+++ b/core/java/android/os/Binder.java
@@ -505,6 +505,19 @@
public static final native void restoreCallingWorkSource(long token);
/**
+ * Mark as being built with VINTF-level stability promise. This API should
+ * only ever be invoked by the build system. It means that the interface
+ * represented by this binder is guaranteed to be kept stable for several
+ * years, and the build system also keeps snapshots of these APIs and
+ * invokes the AIDL compiler to make sure that these snapshots are
+ * backwards compatible. Instead of using this API, use an @VintfStability
+ * interface.
+ *
+ * @hide
+ */
+ public final native void markVintfStability();
+
+ /**
* Flush any Binder commands pending in the current thread to the kernel
* driver. This can be
* useful to call before performing an operation that may block for a long
diff --git a/core/java/android/os/BugreportManager.java b/core/java/android/os/BugreportManager.java
index c5cbad3..a3c2cd8 100644
--- a/core/java/android/os/BugreportManager.java
+++ b/core/java/android/os/BugreportManager.java
@@ -25,6 +25,7 @@
import android.annotation.SystemApi;
import android.annotation.SystemService;
import android.annotation.TestApi;
+import android.app.ActivityManager;
import android.content.Context;
import android.util.Log;
@@ -191,6 +192,32 @@
}
}
+ /**
+ * Requests a bugreport.
+ *
+ * <p>This requests the platform/system to take a bugreport and makes the final bugreport
+ * available to the user. The user may choose to share it with another app, but the bugreport
+ * is never given back directly to the app that requested it.
+ *
+ * @param params {@link BugreportParams} that specify what kind of a bugreport should
+ * be taken, please note that not all kinds of bugreport allow for a
+ * progress notification
+ * @param shareTitle title on the final share notification
+ * @param shareDescription description on the final share notification
+ */
+ @RequiresPermission(android.Manifest.permission.DUMP)
+ public void requestBugreport(@NonNull BugreportParams params, @Nullable CharSequence shareTitle,
+ @Nullable CharSequence shareDescription) {
+ try {
+ String title = shareTitle == null ? null : shareTitle.toString();
+ String description = shareDescription == null ? null : shareDescription.toString();
+ ActivityManager.getService().requestBugReportWithDescription(title, description,
+ params.getMode());
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+
private final class DumpstateListener extends IDumpstateListener.Stub {
private final Executor mExecutor;
private final BugreportCallback mCallback;
diff --git a/core/java/android/os/Build.java b/core/java/android/os/Build.java
index 89ccef6..6eaea99 100755
--- a/core/java/android/os/Build.java
+++ b/core/java/android/os/Build.java
@@ -1084,7 +1084,7 @@
return result == 0;
}
- final String system = SystemProperties.get("ro.build.fingerprint");
+ final String system = SystemProperties.get("ro.system.build.fingerprint");
final String vendor = SystemProperties.get("ro.vendor.build.fingerprint");
final String bootimage = SystemProperties.get("ro.bootimage.build.fingerprint");
final String requiredBootloader = SystemProperties.get("ro.build.expect.bootloader");
@@ -1094,7 +1094,7 @@
TelephonyProperties.baseband_version(), "");
if (TextUtils.isEmpty(system)) {
- Slog.e(TAG, "Required ro.build.fingerprint is empty!");
+ Slog.e(TAG, "Required ro.system.build.fingerprint is empty!");
return false;
}
diff --git a/core/java/android/os/FileObserver.java b/core/java/android/os/FileObserver.java
index 4d9ebc2..5b715c0 100644
--- a/core/java/android/os/FileObserver.java
+++ b/core/java/android/os/FileObserver.java
@@ -32,7 +32,7 @@
/**
* Monitors files (using <a href="http://en.wikipedia.org/wiki/Inotify">inotify</a>)
- * to fire an event after files are accessed or changed by by any process on
+ * to fire an event after files are accessed or changed by any process on
* the device (including this one). FileObserver is an abstract class;
* subclasses must implement the event handler {@link #onEvent(int, String)}.
*
diff --git a/core/java/android/os/FileUtils.java b/core/java/android/os/FileUtils.java
index f789b72..2ac3def 100644
--- a/core/java/android/os/FileUtils.java
+++ b/core/java/android/os/FileUtils.java
@@ -1275,7 +1275,13 @@
/**
* Closes the given object quietly, ignoring any checked exceptions. Does
* nothing if the given object is {@code null}.
+ *
+ * @deprecated This method may suppress potentially significant exceptions, particularly when
+ * closing writable resources. With a writable resource, a failure thrown from {@code close()}
+ * should be considered as significant as a failure thrown from a write method because it may
+ * indicate a failure to flush bytes to the underlying resource.
*/
+ @Deprecated
public static void closeQuietly(@Nullable AutoCloseable closeable) {
IoUtils.closeQuietly(closeable);
}
@@ -1283,7 +1289,13 @@
/**
* Closes the given object quietly, ignoring any checked exceptions. Does
* nothing if the given object is {@code null}.
+ *
+ * @deprecated This method may suppress potentially significant exceptions, particularly when
+ * closing writable resources. With a writable resource, a failure thrown from {@code close()}
+ * should be considered as significant as a failure thrown from a write method because it may
+ * indicate a failure to flush bytes to the underlying resource.
*/
+ @Deprecated
public static void closeQuietly(@Nullable FileDescriptor fd) {
IoUtils.closeQuietly(fd);
}
diff --git a/core/java/android/os/IUserManager.aidl b/core/java/android/os/IUserManager.aidl
index 40048d9..e81a505 100644
--- a/core/java/android/os/IUserManager.aidl
+++ b/core/java/android/os/IUserManager.aidl
@@ -87,6 +87,7 @@
void setDefaultGuestRestrictions(in Bundle restrictions);
Bundle getDefaultGuestRestrictions();
boolean markGuestForDeletion(int userId);
+ UserInfo findCurrentGuestUser();
boolean isQuietModeEnabled(int userId);
void setSeedAccountData(int userId, in String accountName,
in String accountType, in PersistableBundle accountOptions, boolean persist);
diff --git a/core/java/android/os/Looper.java b/core/java/android/os/Looper.java
index 3222fc4..d468972 100644
--- a/core/java/android/os/Looper.java
+++ b/core/java/android/os/Looper.java
@@ -112,10 +112,12 @@
/**
* Initialize the current thread as a looper, marking it as an
- * application's main looper. The main looper for your application
- * is created by the Android environment, so you should never need
- * to call this function yourself. See also: {@link #prepare()}
+ * application's main looper. See also: {@link #prepare()}
+ *
+ * @deprecated The main looper for your application is created by the Android environment,
+ * so you should never need to call this function yourself.
*/
+ @Deprecated
public static void prepareMainLooper() {
prepare(false);
synchronized (Looper.class) {
diff --git a/core/java/android/os/ResultReceiver.aidl b/core/java/android/os/ResultReceiver.aidl
index 28ce6d5..9fd5bc9 100644
--- a/core/java/android/os/ResultReceiver.aidl
+++ b/core/java/android/os/ResultReceiver.aidl
@@ -2,19 +2,19 @@
**
** Copyright 2007, 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
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
**
-** http://www.apache.org/licenses/LICENSE-2.0
+** http://www.apache.org/licenses/LICENSE-2.0
**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
** limitations under the License.
*/
package android.os;
-parcelable ResultReceiver;
+@JavaOnlyStableParcelable parcelable ResultReceiver;
diff --git a/core/java/android/os/SystemClock.java b/core/java/android/os/SystemClock.java
index a510e42..c104abd 100644
--- a/core/java/android/os/SystemClock.java
+++ b/core/java/android/os/SystemClock.java
@@ -154,6 +154,7 @@
final IAlarmManager mgr = IAlarmManager.Stub
.asInterface(ServiceManager.getService(Context.ALARM_SERVICE));
if (mgr == null) {
+ Slog.e(TAG, "Unable to set RTC: mgr == null");
return false;
}
diff --git a/core/java/android/os/UserHandle.java b/core/java/android/os/UserHandle.java
index 537cb98..62e83aa 100644
--- a/core/java/android/os/UserHandle.java
+++ b/core/java/android/os/UserHandle.java
@@ -393,8 +393,13 @@
/**
* Generate a text representation of the uid, breaking out its individual
* components -- user, app, isolated, etc.
+ *
+ * @param uid The uid to format
+ * @return A string representing the UID with its individual components broken out
* @hide
*/
+ @SystemApi
+ @NonNull
public static String formatUid(int uid) {
StringBuilder sb = new StringBuilder();
formatUid(sb, uid);
@@ -520,7 +525,7 @@
public int hashCode() {
return mHandle;
}
-
+
public int describeContents() {
return 0;
}
@@ -532,10 +537,10 @@
/**
* Write a UserHandle to a Parcel, handling null pointers. Must be
* read with {@link #readFromParcel(Parcel)}.
- *
+ *
* @param h The UserHandle to be written.
* @param out The Parcel in which the UserHandle will be placed.
- *
+ *
* @see #readFromParcel(Parcel)
*/
public static void writeToParcel(UserHandle h, Parcel out) {
@@ -545,23 +550,23 @@
out.writeInt(USER_NULL);
}
}
-
+
/**
* Read a UserHandle from a Parcel that was previously written
* with {@link #writeToParcel(UserHandle, Parcel)}, returning either
* a null or new object as appropriate.
- *
+ *
* @param in The Parcel from which to read the UserHandle
* @return Returns a new UserHandle matching the previously written
* object, or null if a null had been written.
- *
+ *
* @see #writeToParcel(UserHandle, Parcel)
*/
public static UserHandle readFromParcel(Parcel in) {
int h = in.readInt();
return h != USER_NULL ? new UserHandle(h) : null;
}
-
+
public static final @android.annotation.NonNull Parcelable.Creator<UserHandle> CREATOR
= new Parcelable.Creator<UserHandle>() {
public UserHandle createFromParcel(Parcel in) {
@@ -581,7 +586,7 @@
* must not use this with data written by
* {@link #writeToParcel(UserHandle, Parcel)} since it is not possible
* to handle a null UserHandle here.
- *
+ *
* @param in The Parcel containing the previously written UserHandle,
* positioned at the location in the buffer where it was written.
*/
diff --git a/core/java/android/os/UserManager.java b/core/java/android/os/UserManager.java
index ce91c50..9e9cd92 100644
--- a/core/java/android/os/UserManager.java
+++ b/core/java/android/os/UserManager.java
@@ -46,6 +46,7 @@
import android.graphics.BitmapFactory;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
+import android.location.LocationManager;
import android.provider.Settings;
import android.telephony.TelephonyManager;
import android.view.WindowManager.LayoutParams;
@@ -486,13 +487,13 @@
*
* <p>This user restriction is different from {@link #DISALLOW_SHARE_LOCATION},
* as the device owner or profile owner can still enable or disable location mode via
- * {@link DevicePolicyManager#setSecureSetting} when this restriction is on.
+ * {@link DevicePolicyManager#setLocationEnabled} when this restriction is on.
*
* <p>The default value is <code>false</code>.
*
* <p>Key for user restrictions.
* <p>Type: Boolean
- * @see android.location.LocationManager#isProviderEnabled(String)
+ * @see LocationManager#isLocationEnabled()
* @see DevicePolicyManager#addUserRestriction(ComponentName, String)
* @see DevicePolicyManager#clearUserRestriction(ComponentName, String)
* @see #getUserRestrictions()
@@ -2374,6 +2375,20 @@
}
/**
+ * Gets the existing guest user if it exists. This does not include guest users that are dying.
+ * @return The existing guest user if it exists. Null otherwise.
+ * @hide
+ */
+ @RequiresPermission(android.Manifest.permission.MANAGE_USERS)
+ public UserInfo findCurrentGuestUser() {
+ try {
+ return mService.findCurrentGuestUser();
+ } catch (RemoteException re) {
+ throw re.rethrowFromSystemServer();
+ }
+ }
+
+ /**
* Creates a user with the specified name and options as a profile of another user.
* Requires {@link android.Manifest.permission#MANAGE_USERS} permission.
* The type of profile must be specified using the given flags.
@@ -2708,6 +2723,21 @@
}
/**
+ * Returns information for all users on this device. Requires
+ * {@link android.Manifest.permission#MANAGE_USERS} permission.
+ *
+ * @param excludeDying specify if the list should exclude users being
+ * removed.
+ * @return the list of users that were created.
+ * @hide
+ */
+ @UnsupportedAppUsage
+ public @NonNull List<UserInfo> getUsers(boolean excludeDying) {
+ return getUsers(/*excludePartial= */ true, excludeDying,
+ /* excludePreCreated= */ true);
+ }
+
+ /**
* Returns information for all users on this device, based on the filtering parameters.
*
* @hide
@@ -2723,6 +2753,24 @@
}
/**
+ * Returns the user handles for all users on this device, based on the filtering parameters.
+ *
+ * @param excludeDying specify if the list should exclude users being removed.
+ * @return the list of user handles.
+ * @hide
+ */
+ @SystemApi
+ @RequiresPermission(android.Manifest.permission.MANAGE_USERS)
+ public @NonNull List<UserHandle> getUserHandles(boolean excludeDying) {
+ List<UserInfo> users = getUsers(excludeDying);
+ List<UserHandle> result = new ArrayList<>(users.size());
+ for (UserInfo user : users) {
+ result.add(user.getUserHandle());
+ }
+ return result;
+ }
+
+ /**
* Returns serial numbers of all users on this device.
*
* @param excludeDying specify if the list should exclude users being removed.
@@ -3262,21 +3310,6 @@
}
/**
- * Returns information for all users on this device. Requires
- * {@link android.Manifest.permission#MANAGE_USERS} permission.
- *
- * @param excludeDying specify if the list should exclude users being
- * removed.
- * @return the list of users that were created.
- * @hide
- */
- @UnsupportedAppUsage
- public @NonNull List<UserInfo> getUsers(boolean excludeDying) {
- return getUsers(/*excludePartial= */ true, excludeDying,
- /* excludePreCreated= */ true);
- }
-
- /**
* Removes a user and all associated data.
* Requires {@link android.Manifest.permission#MANAGE_USERS} permission.
* @param userId the integer handle of the user.
diff --git a/core/java/android/os/connectivity/CellularBatteryStats.java b/core/java/android/os/connectivity/CellularBatteryStats.java
index caa4068..b8c1802 100644
--- a/core/java/android/os/connectivity/CellularBatteryStats.java
+++ b/core/java/android/os/connectivity/CellularBatteryStats.java
@@ -22,8 +22,8 @@
import android.os.Parcel;
import android.os.Parcelable;
import android.telephony.Annotation.NetworkType;
+import android.telephony.CellSignalStrength;
import android.telephony.ModemActivityInfo;
-import android.telephony.SignalStrength;
import java.util.Arrays;
import java.util.Objects;
@@ -48,7 +48,7 @@
private long mEnergyConsumedMaMs = 0;
private long[] mTimeInRatMs = new long[BatteryStats.NUM_DATA_CONNECTION_TYPES];
private long[] mTimeInRxSignalStrengthLevelMs =
- new long[SignalStrength.NUM_SIGNAL_STRENGTH_BINS];
+ new long[CellSignalStrength.getNumSignalStrengthLevels()];
private long[] mTxTimeMs = new long[ModemActivityInfo.TX_POWER_LEVELS];
private long mMonitoredRailChargeConsumedMaMs = 0;
@@ -354,7 +354,7 @@
/** @hide **/
public void setTimeInRxSignalStrengthLevelMicros(@NonNull long[] t) {
mTimeInRxSignalStrengthLevelMs = Arrays.copyOfRange(t, 0,
- Math.min(t.length, SignalStrength.NUM_SIGNAL_STRENGTH_BINS));
+ Math.min(t.length, CellSignalStrength.getNumSignalStrengthLevels()));
return;
}
diff --git a/core/java/android/os/connectivity/WifiBatteryStats.java b/core/java/android/os/connectivity/WifiBatteryStats.java
index d10a647..e9b3837 100644
--- a/core/java/android/os/connectivity/WifiBatteryStats.java
+++ b/core/java/android/os/connectivity/WifiBatteryStats.java
@@ -48,9 +48,9 @@
private long[] mTimeInStateMillis =
new long[BatteryStats.NUM_WIFI_STATES];
private long[] mTimeInSupplicantStateMillis =
- new long[BatteryStats.NUM_WIFI_SIGNAL_STRENGTH_BINS];
- private long[] mTimeInRxSignalStrengthLevelMillis =
new long[BatteryStats.NUM_WIFI_SUPPL_STATES];
+ private long[] mTimeInRxSignalStrengthLevelMillis =
+ new long[BatteryStats.NUM_WIFI_SIGNAL_STRENGTH_BINS];
private long mMonitoredRailChargeConsumedMaMillis = 0;
public static final @NonNull Parcelable.Creator<WifiBatteryStats> CREATOR =
diff --git a/core/java/android/os/incremental/IIncrementalService.aidl b/core/java/android/os/incremental/IIncrementalManager.aidl
similarity index 77%
rename from core/java/android/os/incremental/IIncrementalService.aidl
rename to core/java/android/os/incremental/IIncrementalManager.aidl
index 1c832ca..d6446d4 100644
--- a/core/java/android/os/incremental/IIncrementalService.aidl
+++ b/core/java/android/os/incremental/IIncrementalManager.aidl
@@ -19,7 +19,7 @@
import android.os.incremental.IncrementalDataLoaderParamsParcel;
/** @hide */
-interface IIncrementalService {
+interface IIncrementalManager {
/**
* A set of flags for the |createMode| parameters when creating a new Incremental storage.
*/
@@ -53,6 +53,12 @@
int makeDirectory(int storageId, in @utf8InCpp String pathUnderStorage);
/**
+ * Recursively creates a directory under a storage. The target directory is specified by its relative path under the storage.
+ * All the parent directories of the target directory will be created if they do not exist already.
+ */
+ int makeDirectories(int storageId, in @utf8InCpp String pathUnderStorage);
+
+ /**
* Creates a file under a storage, specifying its name, size and metadata.
*/
int makeFile(int storageId, in @utf8InCpp String pathUnderStorage, long size, in byte[] metadata);
@@ -64,10 +70,12 @@
int makeFileFromRange(int storageId, in @utf8InCpp String targetPathUnderStorage, in @utf8InCpp String sourcePathUnderStorage, long start, long end);
/**
- * Creates a hard link between two files in a storage.
- * Both source and destination are specified by relative paths under storage.
+ * Creates a hard link between two files in two storage instances.
+ * Source and dest specified by parent storage IDs and their relative paths under the storage.
+ * The source and dest storage instances should be in the same fs mount.
+ * Note: destStorageId can be the same as sourceStorageId.
*/
- int makeLink(int storageId, in @utf8InCpp String sourcePathUnderStorage, in @utf8InCpp String destPathUnderStorage);
+ int makeLink(int sourceStorageId, in @utf8InCpp String sourcePathUnderStorage, int destStorageId, in @utf8InCpp String destPathUnderStorage);
/**
* Deletes a hard link in a storage, specified by the relative path of the link target under storage.
@@ -85,12 +93,12 @@
byte[] getFileMetadata(int storageId, in @utf8InCpp String pathUnderStorage);
/**
- * Returns the list of file paths under a storage.
- */
- @utf8InCpp String[] getFileList(int storageId);
-
- /**
* Starts loading data for a storage.
*/
boolean startLoading(int storageId);
+
+ /**
+ * Deletes a storage given its ID. Deletes its bind mounts and unmount it. Stop its data loader.
+ */
+ void deleteStorage(int storageId);
}
diff --git a/core/java/android/os/incremental/IncrementalDataLoaderParams.java b/core/java/android/os/incremental/IncrementalDataLoaderParams.java
new file mode 100644
index 0000000..701f1cc
--- /dev/null
+++ b/core/java/android/os/incremental/IncrementalDataLoaderParams.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.os.incremental;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.os.ParcelFileDescriptor;
+
+import java.util.Arrays;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * This class represents the parameters used to configure an Incremental Data Loader.
+ * Hide for now.
+ * @hide
+ */
+public class IncrementalDataLoaderParams {
+ @NonNull private final IncrementalDataLoaderParamsParcel mData;
+
+ public IncrementalDataLoaderParams(@NonNull String url, @NonNull String packageName,
+ @Nullable Map<String, ParcelFileDescriptor> namedFds) {
+ IncrementalDataLoaderParamsParcel data = new IncrementalDataLoaderParamsParcel();
+ data.staticArgs = url;
+ data.packageName = packageName;
+ if (namedFds == null || namedFds.isEmpty()) {
+ data.dynamicArgs = new NamedParcelFileDescriptor[0];
+ } else {
+ data.dynamicArgs = new NamedParcelFileDescriptor[namedFds.size()];
+ int i = 0;
+ for (Map.Entry<String, ParcelFileDescriptor> namedFd : namedFds.entrySet()) {
+ data.dynamicArgs[i] = new NamedParcelFileDescriptor();
+ data.dynamicArgs[i].name = namedFd.getKey();
+ data.dynamicArgs[i].fd = namedFd.getValue();
+ i += 1;
+ }
+ }
+ mData = data;
+ }
+
+ public IncrementalDataLoaderParams(@NonNull IncrementalDataLoaderParamsParcel data) {
+ mData = data;
+ }
+
+ /**
+ * @return static server's URL
+ */
+ public final @NonNull String getStaticArgs() {
+ return mData.staticArgs;
+ }
+
+ /**
+ * @return data loader's package name
+ */
+ public final @NonNull String getPackageName() {
+ return mData.packageName;
+ }
+
+ public final @NonNull IncrementalDataLoaderParamsParcel getData() {
+ return mData;
+ }
+
+ /**
+ * @return data loader's dynamic arguments such as file descriptors
+ */
+ public final @NonNull Map<String, ParcelFileDescriptor> getDynamicArgs() {
+ return Arrays.stream(mData.dynamicArgs).collect(
+ Collectors.toMap(p->p.name, p->p.fd));
+ }
+}
diff --git a/core/java/android/os/incremental/IncrementalDataLoaderParamsParcel.aidl b/core/java/android/os/incremental/IncrementalDataLoaderParamsParcel.aidl
index 50c28f0..cd988dc 100644
--- a/core/java/android/os/incremental/IncrementalDataLoaderParamsParcel.aidl
+++ b/core/java/android/os/incremental/IncrementalDataLoaderParamsParcel.aidl
@@ -23,7 +23,7 @@
* @hide
*/
parcelable IncrementalDataLoaderParamsParcel {
- @utf8InCpp String staticUri;
@utf8InCpp String packageName;
+ @utf8InCpp String staticArgs;
NamedParcelFileDescriptor[] dynamicArgs;
}
diff --git a/core/java/android/os/incremental/IncrementalManager.java b/core/java/android/os/incremental/IncrementalManager.java
new file mode 100644
index 0000000..5aabf86
--- /dev/null
+++ b/core/java/android/os/incremental/IncrementalManager.java
@@ -0,0 +1,327 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.os.incremental;
+
+import android.annotation.IntDef;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.annotation.SystemService;
+import android.content.Context;
+import android.os.RemoteException;
+import android.system.ErrnoException;
+import android.system.Os;
+import android.util.SparseArray;
+
+import com.android.internal.annotations.GuardedBy;
+
+import java.io.File;
+import java.io.IOException;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+/**
+ * Provides operations to open or create an IncrementalStorage, using IIncrementalManager service.
+ * Example Usage:
+ *
+ * <blockquote><pre>
+ * IncrementalManager manager = (IncrementalManager) getSystemService(Context.INCREMENTAL_MANAGER);
+ * IncrementalStorage storage = manager.openStorage("/path/to/incremental/dir");
+ * </pre></blockquote>
+ *
+ * @hide
+ */
+@SystemService(Context.INCREMENTAL_SERVICE)
+public class IncrementalManager {
+ private static final String TAG = "IncrementalManager";
+ private final IIncrementalManager mService;
+ @GuardedBy("mStorages")
+ private final SparseArray<IncrementalStorage> mStorages = new SparseArray<>();
+
+ public static final int CREATE_MODE_TEMPORARY_BIND =
+ IIncrementalManager.CREATE_MODE_TEMPORARY_BIND;
+ public static final int CREATE_MODE_PERMANENT_BIND =
+ IIncrementalManager.CREATE_MODE_PERMANENT_BIND;
+ public static final int CREATE_MODE_CREATE =
+ IIncrementalManager.CREATE_MODE_CREATE;
+ public static final int CREATE_MODE_OPEN_EXISTING =
+ IIncrementalManager.CREATE_MODE_OPEN_EXISTING;
+
+ @Retention(RetentionPolicy.SOURCE)
+ @IntDef(prefix = {"CREATE_MODE_"}, value = {
+ CREATE_MODE_TEMPORARY_BIND,
+ CREATE_MODE_PERMANENT_BIND,
+ CREATE_MODE_CREATE,
+ CREATE_MODE_OPEN_EXISTING,
+ })
+ public @interface CreateMode {
+ }
+
+ public IncrementalManager(@NonNull IIncrementalManager is) {
+ mService = is;
+ }
+
+ /**
+ * Returns a storage object given a storage ID.
+ *
+ * @param storageId The storage ID to identify the storage object.
+ * @return IncrementalStorage object corresponding to storage ID.
+ */
+ @Nullable
+ public IncrementalStorage getStorage(int storageId) {
+ synchronized (mStorages) {
+ return mStorages.get(storageId);
+ }
+ }
+
+ /**
+ * Opens or create an Incremental File System mounted directory and returns an
+ * IncrementalStorage object.
+ *
+ * @param path Absolute path to mount Incremental File System on.
+ * @param params IncrementalDataLoaderParams object to configure data loading.
+ * @param createMode Mode for opening an old Incremental File System mount or
+ * creating a new mount.
+ * @param autoStartDataLoader Set true to immediately start data loader after creating storage.
+ * @return IncrementalStorage object corresponding to the mounted directory.
+ */
+ @Nullable
+ public IncrementalStorage createStorage(@NonNull String path,
+ @NonNull IncrementalDataLoaderParams params, @CreateMode int createMode,
+ boolean autoStartDataLoader) {
+ try {
+ final int id = mService.createStorage(path, params.getData(), createMode);
+ if (id < 0) {
+ return null;
+ }
+ final IncrementalStorage storage = new IncrementalStorage(mService, id);
+ synchronized (mStorages) {
+ mStorages.put(id, storage);
+ }
+ if (autoStartDataLoader) {
+ storage.startLoading();
+ }
+ return storage;
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+
+ /**
+ * Opens an existing Incremental File System mounted directory and returns an
+ * IncrementalStorage object.
+ *
+ * @param path Absolute target path that Incremental File System has been mounted on.
+ * @return IncrementalStorage object corresponding to the mounted directory.
+ */
+ @Nullable
+ public IncrementalStorage openStorage(@NonNull String path) {
+ try {
+ final int id = mService.openStorage(path);
+ if (id < 0) {
+ return null;
+ }
+ final IncrementalStorage storage = new IncrementalStorage(mService, id);
+ synchronized (mStorages) {
+ mStorages.put(id, storage);
+ }
+ return storage;
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+
+ /**
+ * Opens or creates an IncrementalStorage that is linked to another IncrementalStorage.
+ *
+ * @return IncrementalStorage object corresponding to the linked storage.
+ */
+ @Nullable
+ public IncrementalStorage createStorage(@NonNull String path,
+ @NonNull IncrementalStorage linkedStorage, @CreateMode int createMode) {
+ try {
+ final int id = mService.createLinkedStorage(path, linkedStorage.getId(), createMode);
+ if (id < 0) {
+ return null;
+ }
+ final IncrementalStorage storage = new IncrementalStorage(mService, id);
+ synchronized (mStorages) {
+ mStorages.put(id, storage);
+ }
+ return storage;
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+
+ /**
+ * Iterates through path parents to find the base dir of an Incremental Storage.
+ *
+ * @param file Target file to search storage for.
+ * @return Absolute path which is a bind-mount point of Incremental File System.
+ */
+ private Path getStoragePathForFile(File file) {
+ File currentPath = new File(file.getParent());
+ while (currentPath.getParent() != null) {
+ IncrementalStorage storage = openStorage(currentPath.getAbsolutePath());
+ if (storage != null) {
+ return currentPath.toPath();
+ }
+ currentPath = new File(currentPath.getParent());
+ }
+ return null;
+ }
+
+ /**
+ * Renames an Incremental path to a new path. If source path is a file, make a link from the old
+ * Incremental file to the new one. If source path is a dir, unbind old dir from Incremental
+ * Storage and bind the new one.
+ * <ol>
+ * <li> For renaming a dir, dest dir will be created if not exists, and does not need to
+ * be on the same Incremental storage as the source. </li>
+ * <li> For renaming a file, dest file must be on the same Incremental storage as source.
+ * </li>
+ * </ol>
+ *
+ * @param sourcePath Absolute path to the source. Should be the same type as the destPath
+ * (file or dir). Expected to already exist and is an Incremental path.
+ * @param destPath Absolute path to the destination.
+ * @throws IllegalArgumentException when 1) source does not exist,
+ * or 2) source and dest type mismatch (one is file and the other is dir),
+ * or 3) source path is not on Incremental File System,
+ * @throws IOException when 1) cannot find the root path of the Incremental storage of source,
+ * or 2) cannot retrieve the Incremental storage instance of the source,
+ * or 3) renaming a file, but dest is not on the same Incremental Storage,
+ * or 4) renaming a dir, dest dir does not exist but fails to be created.
+ *
+ * TODO(b/136132412): add unit tests
+ */
+ public void rename(@NonNull String sourcePath, @NonNull String destPath) throws IOException {
+ final File source = new File(sourcePath);
+ final File dest = new File(destPath);
+ if (!source.exists()) {
+ throw new IllegalArgumentException("Path not exist: " + sourcePath);
+ }
+ if (dest.exists()) {
+ throw new IllegalArgumentException("Target path already exists: " + destPath);
+ }
+ if (source.isDirectory() && dest.exists() && dest.isFile()) {
+ throw new IllegalArgumentException(
+ "Trying to rename a dir but destination is a file: " + destPath);
+ }
+ if (source.isFile() && dest.exists() && dest.isDirectory()) {
+ throw new IllegalArgumentException(
+ "Trying to rename a file but destination is a dir: " + destPath);
+ }
+ if (!isIncrementalPath(sourcePath)) {
+ throw new IllegalArgumentException("Not an Incremental path: " + sourcePath);
+ }
+
+ Path storagePath = Paths.get(sourcePath);
+ if (source.isFile()) {
+ storagePath = getStoragePathForFile(source);
+ }
+ if (storagePath == null || storagePath.toAbsolutePath() == null) {
+ throw new IOException("Invalid source storage path for: " + sourcePath);
+ }
+ final IncrementalStorage storage = openStorage(storagePath.toAbsolutePath().toString());
+ if (storage == null) {
+ throw new IOException("Failed to retrieve storage from Incremental Service.");
+ }
+ if (source.isFile()) {
+ renameFile(storage, storagePath, source, dest);
+ } else {
+ renameDir(storage, storagePath, source, dest);
+ }
+ }
+
+ private void renameFile(IncrementalStorage storage, Path storagePath,
+ File source, File dest) throws IOException {
+ Path sourcePath = source.toPath();
+ Path destPath = dest.toPath();
+ if (!sourcePath.startsWith(storagePath)) {
+ throw new IOException("Path: " + source.getAbsolutePath() + " is not on storage at: "
+ + storagePath.toString());
+ }
+ if (!destPath.startsWith(storagePath)) {
+ throw new IOException("Path: " + dest.getAbsolutePath() + " is not on storage at: "
+ + storagePath.toString());
+ }
+ final Path sourceRelativePath = storagePath.relativize(sourcePath);
+ final Path destRelativePath = storagePath.relativize(destPath);
+ storage.moveFile(sourceRelativePath.toString(), destRelativePath.toString());
+
+ }
+
+ private void renameDir(IncrementalStorage storage, Path storagePath,
+ File source, File dest) throws IOException {
+ Path destPath = dest.toPath();
+ boolean usedMkdir = false;
+ try {
+ Os.mkdir(dest.getAbsolutePath(), 0755);
+ usedMkdir = true;
+ } catch (ErrnoException e) {
+ // Traditional mkdir fails but maybe we can create it on Incremental File System if
+ // the dest path is on the same Incremental storage as the source.
+ if (destPath.startsWith(storagePath)) {
+ storage.makeDirectories(storagePath.relativize(destPath).toString());
+ } else {
+ throw new IOException("Failed to create directory: " + dest.getAbsolutePath(), e);
+ }
+ }
+ try {
+ storage.moveDir(source.getAbsolutePath(), dest.getAbsolutePath());
+ } catch (Exception ex) {
+ if (usedMkdir) {
+ try {
+ Os.remove(dest.getAbsolutePath());
+ } catch (ErrnoException ignored) {
+ }
+ }
+ throw new IOException(
+ "Failed to move " + source.getAbsolutePath() + " to " + dest.getAbsolutePath());
+ }
+ }
+
+ /**
+ * Closes a storage specified by the absolute path. If the path is not Incremental, do nothing.
+ * Unbinds the target dir and deletes the corresponding storage instance.
+ */
+ public void closeStorage(@NonNull String path) {
+ try {
+ final int id = mService.openStorage(path);
+ if (id < 0) {
+ return;
+ }
+ mService.deleteStorage(id);
+ synchronized (mStorages) {
+ mStorages.remove(id);
+ }
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+
+ /**
+ * Checks if path is mounted on Incremental File System.
+ */
+ public static boolean isIncrementalPath(@NonNull String path) {
+ // TODO(b/136132412): implement native method
+ return false;
+ }
+}
diff --git a/core/java/android/os/incremental/IncrementalStorage.java b/core/java/android/os/incremental/IncrementalStorage.java
new file mode 100644
index 0000000..2bf89ed
--- /dev/null
+++ b/core/java/android/os/incremental/IncrementalStorage.java
@@ -0,0 +1,346 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.os.incremental;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.os.RemoteException;
+
+import java.io.File;
+import java.io.IOException;
+
+/**
+ * Provides operations on an Incremental File System directory, using IncrementalService. Example
+ * usage:
+ *
+ * <blockquote><pre>
+ * IncrementalManager manager = (IncrementalManager) getSystemService(Context.INCREMENTAL_MANAGER);
+ * IncrementalStorage storage = manager.openStorage("/path/to/incremental/dir");
+ * storage.makeDirectory("subdir");
+ * </pre></blockquote>
+ *
+ * @hide
+ */
+public final class IncrementalStorage {
+ private static final String TAG = "IncrementalStorage";
+ private final int mId;
+ private final IIncrementalManager mService;
+
+
+ public IncrementalStorage(@NonNull IIncrementalManager is, int id) {
+ mService = is;
+ mId = id;
+ }
+
+ public int getId() {
+ return mId;
+ }
+
+ /**
+ * Temporarily bind-mounts the current storage directory to a target directory. The bind-mount
+ * will NOT be preserved between device reboots.
+ *
+ * @param targetPath Absolute path to the target directory.
+ */
+ public void bind(@NonNull String targetPath) throws IOException {
+ bind("", targetPath);
+ }
+
+ /**
+ * Temporarily bind-mounts a subdir under the current storage directory to a target directory.
+ * The bind-mount will NOT be preserved between device reboots.
+ *
+ * @param sourcePathUnderStorage Source path as a relative path under current storage
+ * directory.
+ * @param targetPath Absolute path to the target directory.
+ */
+ public void bind(@NonNull String sourcePathUnderStorage, @NonNull String targetPath)
+ throws IOException {
+ try {
+ int res = mService.makeBindMount(mId, sourcePathUnderStorage, targetPath,
+ IIncrementalManager.BIND_TEMPORARY);
+ if (res < 0) {
+ throw new IOException("bind() failed with errno " + -res);
+ }
+ } catch (RemoteException e) {
+ e.rethrowFromSystemServer();
+ }
+ }
+
+
+ /**
+ * Permanently bind-mounts the current storage directory to a target directory. The bind-mount
+ * WILL be preserved between device reboots.
+ *
+ * @param targetPath Absolute path to the target directory.
+ */
+ public void bindPermanent(@NonNull String targetPath) throws IOException {
+ bindPermanent("", targetPath);
+ }
+
+ /**
+ * Permanently bind-mounts a subdir under the current storage directory to a target directory.
+ * The bind-mount WILL be preserved between device reboots.
+ *
+ * @param sourcePathUnderStorage Relative path under the current storage directory.
+ * @param targetPath Absolute path to the target directory.
+ */
+ public void bindPermanent(@NonNull String sourcePathUnderStorage, @NonNull String targetPath)
+ throws IOException {
+ try {
+ int res = mService.makeBindMount(mId, sourcePathUnderStorage, targetPath,
+ IIncrementalManager.BIND_PERMANENT);
+ if (res < 0) {
+ throw new IOException("bind() permanent failed with errno " + -res);
+ }
+ } catch (RemoteException e) {
+ e.rethrowFromSystemServer();
+ }
+ }
+
+ /**
+ * Unbinds a bind mount.
+ *
+ * @param targetPath Absolute path to the target directory.
+ */
+ public void unBind(@NonNull String targetPath) throws IOException {
+ try {
+ int res = mService.deleteBindMount(mId, targetPath);
+ if (res < 0) {
+ throw new IOException("unbind() failed with errno " + -res);
+ }
+ } catch (RemoteException e) {
+ e.rethrowFromSystemServer();
+ }
+ }
+
+ /**
+ * Creates a sub-directory under the current storage directory.
+ *
+ * @param pathUnderStorage Relative path of the sub-directory, e.g., "subdir"
+ */
+ public void makeDirectory(@NonNull String pathUnderStorage) throws IOException {
+ try {
+ int res = mService.makeDirectory(mId, pathUnderStorage);
+ if (res < 0) {
+ throw new IOException("makeDirectory() failed with errno " + -res);
+ }
+ } catch (RemoteException e) {
+ e.rethrowFromSystemServer();
+ }
+ }
+
+ /**
+ * Creates a sub-directory under the current storage directory. If its parent dirs do not exist,
+ * create the parent dirs as well.
+ *
+ * @param pathUnderStorage Relative path of the sub-directory, e.g., "subdir/subsubdir"
+ */
+ public void makeDirectories(@NonNull String pathUnderStorage) throws IOException {
+ try {
+ int res = mService.makeDirectories(mId, pathUnderStorage);
+ if (res < 0) {
+ throw new IOException("makeDirectory() failed with errno " + -res);
+ }
+ } catch (RemoteException e) {
+ e.rethrowFromSystemServer();
+ }
+ }
+
+ /**
+ * Creates a file under the current storage directory.
+ *
+ * @param pathUnderStorage Relative path of the new file.
+ * @param size Size of the new file in bytes.
+ * @param metadata Metadata bytes.
+ */
+ public void makeFile(@NonNull String pathUnderStorage, long size,
+ @Nullable byte[] metadata) throws IOException {
+ try {
+ int res = mService.makeFile(mId, pathUnderStorage, size, metadata);
+ if (res < 0) {
+ throw new IOException("makeFile() failed with errno " + -res);
+ }
+ } catch (RemoteException e) {
+ e.rethrowFromSystemServer();
+ }
+ }
+
+ /**
+ * Creates a file in Incremental storage. The content of the file is mapped from a range inside
+ * a source file in the same storage.
+ *
+ * @param destRelativePath Target relative path under storage.
+ * @param sourceRelativePath Source relative path under storage.
+ * @param rangeStart Starting offset (in bytes) in the source file.
+ * @param rangeEnd Ending offset (in bytes) in the source file.
+ */
+ public void makeFileFromRange(@NonNull String destRelativePath,
+ @NonNull String sourceRelativePath, long rangeStart, long rangeEnd) throws IOException {
+ try {
+ int res = mService.makeFileFromRange(mId, destRelativePath, sourceRelativePath,
+ rangeStart, rangeEnd);
+ if (res < 0) {
+ throw new IOException("makeFileFromRange() failed, errno " + -res);
+ }
+ } catch (RemoteException e) {
+ e.rethrowFromSystemServer();
+ }
+ }
+
+ /**
+ * Creates a hard-link between two paths, which can be under different storages but in the same
+ * Incremental File System.
+ *
+ * @param sourcePathUnderStorage The relative path of the source.
+ * @param destStorage The target storage of the link target.
+ * @param destPathUnderStorage The relative path of the target.
+ */
+ public void makeLink(@NonNull String sourcePathUnderStorage, IncrementalStorage destStorage,
+ @NonNull String destPathUnderStorage) throws IOException {
+ try {
+ int res = mService.makeLink(mId, sourcePathUnderStorage, destStorage.getId(),
+ destPathUnderStorage);
+ if (res < 0) {
+ throw new IOException("makeLink() failed with errno " + -res);
+ }
+ } catch (RemoteException e) {
+ e.rethrowFromSystemServer();
+ }
+ }
+
+ /**
+ * Deletes a hard-link under the current storage directory.
+ *
+ * @param pathUnderStorage The relative path of the target.
+ */
+ public void unlink(@NonNull String pathUnderStorage) throws IOException {
+ try {
+ int res = mService.unlink(mId, pathUnderStorage);
+ if (res < 0) {
+ throw new IOException("unlink() failed with errno " + -res);
+ }
+ } catch (RemoteException e) {
+ e.rethrowFromSystemServer();
+ }
+ }
+
+ /**
+ * Rename an old file name to a new file name under the current storage directory.
+ *
+ * @param sourcePathUnderStorage Old file path as a relative path to the storage directory.
+ * @param destPathUnderStorage New file path as a relative path to the storage directory.
+ */
+ public void moveFile(@NonNull String sourcePathUnderStorage,
+ @NonNull String destPathUnderStorage) throws IOException {
+ try {
+ int res = mService.makeLink(mId, sourcePathUnderStorage, mId, destPathUnderStorage);
+ if (res < 0) {
+ throw new IOException("moveFile() failed at makeLink(), errno " + -res);
+ }
+ } catch (RemoteException e) {
+ e.rethrowFromSystemServer();
+ }
+ try {
+ mService.unlink(mId, sourcePathUnderStorage);
+ } catch (RemoteException ignored) {
+ }
+ }
+
+ /**
+ * Move a directory, which is bind-mounted to a given storage, to a new location. The bind mount
+ * will be persistent between reboots.
+ *
+ * @param sourcePath The old path of the directory as an absolute path.
+ * @param destPath The new path of the directory as an absolute path, expected to already
+ * exist.
+ */
+ public void moveDir(@NonNull String sourcePath, @NonNull String destPath) throws IOException {
+ if (!new File(destPath).exists()) {
+ throw new IOException("moveDir() requires that destination dir already exists.");
+ }
+ try {
+ int res = mService.makeBindMount(mId, "", destPath, IIncrementalManager.BIND_PERMANENT);
+ if (res < 0) {
+ throw new IOException("moveDir() failed at making bind mount, errno " + -res);
+ }
+ } catch (RemoteException e) {
+ e.rethrowFromSystemServer();
+ }
+ try {
+ mService.deleteBindMount(mId, sourcePath);
+ } catch (RemoteException ignored) {
+ }
+ }
+
+ /**
+ * Checks whether a file under the current storage directory is fully loaded.
+ *
+ * @param pathUnderStorage The relative path of the file.
+ * @return True if the file is fully loaded.
+ */
+ public boolean isFileFullyLoaded(@NonNull String pathUnderStorage) {
+ return isFileRangeLoaded(pathUnderStorage, 0, -1);
+ }
+
+ /**
+ * Checks whether a range in a file if loaded.
+ *
+ * @param pathUnderStorage The relative path of the file.
+ * @param start The starting offset of the range.
+ * @param end The ending offset of the range.
+ * @return True if the file is fully loaded.
+ */
+ public boolean isFileRangeLoaded(@NonNull String pathUnderStorage, long start, long end) {
+ try {
+ return mService.isFileRangeLoaded(mId, pathUnderStorage, start, end);
+ } catch (RemoteException e) {
+ e.rethrowFromSystemServer();
+ return false;
+ }
+ }
+
+ /**
+ * Returns the metadata object of an IncFs File.
+ *
+ * @param pathUnderStorage The relative path of the file.
+ * @return Byte array that contains metadata bytes.
+ */
+ @Nullable
+ public byte[] getFileMetadata(@NonNull String pathUnderStorage) {
+ try {
+ return mService.getFileMetadata(mId, pathUnderStorage);
+ } catch (RemoteException e) {
+ e.rethrowFromSystemServer();
+ return null;
+ }
+ }
+
+ /**
+ * Informs the data loader service associated with the current storage to start data loader
+ *
+ * @return True if data loader is successfully started.
+ */
+ public boolean startLoading() {
+ try {
+ return mService.startLoading(mId);
+ } catch (RemoteException e) {
+ e.rethrowFromSystemServer();
+ return false;
+ }
+ }
+}
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index 7a63b59..fa8896e 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -89,7 +89,6 @@
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
-import java.util.Locale;
import java.util.Map;
import java.util.Set;
@@ -833,8 +832,7 @@
/**
* Activity Action: Show screen for controlling which apps can draw on top of other apps.
* <p>
- * In some cases, a matching Activity may not exist, so ensure you
- * safeguard against this.
+ * In some cases, a matching Activity may not exist, so ensure you safeguard against this.
* <p>
* Input: Optionally, in versions of Android prior to 11, the Intent's data URI can specify the
* application package name to directly invoke the management GUI specific to the package name.
@@ -847,6 +845,31 @@
"android.settings.action.MANAGE_OVERLAY_PERMISSION";
/**
+ * Activity Action: Show screen for controlling if the app specified in the data URI of the
+ * intent can draw on top of other apps.
+ * <p>
+ * Unlike {@link #ACTION_MANAGE_OVERLAY_PERMISSION}, which in Android 11 can't be used to show
+ * a GUI for a specific package, permission {@code android.permission.INTERNAL_SYSTEM_WINDOW} is
+ * needed to start an activity with this intent.
+ * <p>
+ * In some cases, a matching Activity may not exist, so ensure you
+ * safeguard against this.
+ * <p>
+ * Input: The Intent's data URI MUST specify the application package name whose ability of
+ * drawing on top of other apps you want to control.
+ * For example "package:com.my.app".
+ * <p>
+ * Output: Nothing.
+ *
+ * @hide
+ */
+ @TestApi
+ @SystemApi
+ @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
+ public static final String ACTION_MANAGE_APP_OVERLAY_PERMISSION =
+ "android.settings.MANAGE_APP_OVERLAY_PERMISSION";
+
+ /**
* Activity Action: Show screen for controlling which apps are allowed to write/modify
* system settings.
* <p>
@@ -4953,7 +4976,6 @@
MOVED_TO_GLOBAL.add(Settings.Global.WIFI_WATCHDOG_POOR_NETWORK_TEST_ENABLED);
MOVED_TO_GLOBAL.add(Settings.Global.WIFI_P2P_PENDING_FACTORY_RESET);
MOVED_TO_GLOBAL.add(Settings.Global.WIMAX_NETWORKS_AVAILABLE_NOTIFICATION_ON);
- MOVED_TO_GLOBAL.add(Settings.Global.PACKAGE_VERIFIER_ENABLE);
MOVED_TO_GLOBAL.add(Settings.Global.PACKAGE_VERIFIER_TIMEOUT);
MOVED_TO_GLOBAL.add(Settings.Global.PACKAGE_VERIFIER_DEFAULT_RESPONSE);
MOVED_TO_GLOBAL.add(Settings.Global.DATA_STALL_ALARM_NON_AGGRESSIVE_DELAY_IN_MS);
@@ -5715,6 +5737,18 @@
"managed_provisioning_dpc_downloaded";
/**
+ * Indicates whether the device is under restricted secure FRP mode.
+ * Secure FRP mode is enabled when the device is under FRP. On solving of FRP challenge,
+ * device is removed from this mode.
+ * <p>
+ * Type: int (0 for false, 1 for true)
+ *
+ * @hide
+ */
+ @SystemApi
+ public static final String SECURE_FRP_MODE = "secure_frp_mode";
+
+ /**
* Indicates whether the current user has completed setup via the setup wizard.
* <p>
* Type: int (0 for false, 1 for true)
@@ -6191,8 +6225,12 @@
"accessibility_shortcut_dialog_shown";
/**
- * Setting specifying the accessibility service to be toggled via the accessibility
- * shortcut. Must be its flattened {@link ComponentName}.
+ * Setting specifying the accessibility services, accessibility shortcut targets,
+ * or features to be toggled via the accessibility shortcut.
+ *
+ * <p> This is a colon-separated string list which contains the flattened
+ * {@link ComponentName} and the class name of a system class implementing a supported
+ * accessibility feature.
* @hide
*/
@UnsupportedAppUsage
@@ -6201,9 +6239,11 @@
"accessibility_shortcut_target_service";
/**
- * Setting specifying the accessibility service or feature to be toggled via the
- * accessibility button in the navigation bar. This is either a flattened
- * {@link ComponentName} or the class name of a system class implementing a supported
+ * Setting specifying the accessibility services, accessibility shortcut targets,
+ * or features to be toggled via the accessibility button in the navigation bar.
+ *
+ * <p> This is a colon-separated string list which contains the flattened
+ * {@link ComponentName} and the class name of a system class implementing a supported
* accessibility feature.
* @hide
*/
@@ -6364,6 +6404,9 @@
* zoom in the display content and is targeted to low vision users. The current
* magnification scale is controlled by {@link #ACCESSIBILITY_DISPLAY_MAGNIFICATION_SCALE}.
*
+ * @deprecated Use {@link #ACCESSIBILITY_BUTTON_TARGET_COMPONENT} instead.
+ * {@link #ACCESSIBILITY_BUTTON_TARGET_COMPONENT} holds the magnification system class name
+ * when navigation bar magnification is enabled.
* @hide
*/
@SystemApi
@@ -7170,16 +7213,6 @@
public static final String VOICE_RECOGNITION_SERVICE = "voice_recognition_service";
/**
- * Stores whether an user has consented to have apps verified through PAM.
- * The value is boolean (1 or 0).
- *
- * @hide
- */
- @UnsupportedAppUsage
- public static final String PACKAGE_VERIFIER_USER_CONSENT =
- "package_verifier_user_consent";
-
- /**
* The {@link ComponentName} string of the selected spell checker service which is
* one of the services managed by the text service manager.
*
@@ -8157,6 +8190,15 @@
public static final String NOTIFICATION_BADGING = "notification_badging";
/**
+ * When enabled the system will maintain a rolling history of received notifications. When
+ * disabled the history will be disabled and deleted.
+ *
+ * The value 1 - enable, 0 - disable
+ * @hide
+ */
+ public static final String NOTIFICATION_HISTORY_ENABLED = "notification_history_enabled";
+
+ /**
* Whether notifications are dismissed by a right-to-left swipe (instead of a left-to-right
* swipe).
*
@@ -9264,16 +9306,6 @@
@SystemApi
public static final String OTA_DISABLE_AUTOMATIC_UPDATE = "ota_disable_automatic_update";
- /**
- * Whether the package manager should send package verification broadcasts for verifiers to
- * review apps prior to installation.
- * 1 = request apps to be verified prior to installation, if a verifier exists.
- * 0 = do not verify apps before installation
- * @hide
- */
- @UnsupportedAppUsage
- public static final String PACKAGE_VERIFIER_ENABLE = "package_verifier_enable";
-
/** Timeout for package verification.
* @hide */
public static final String PACKAGE_VERIFIER_TIMEOUT = "verifier_timeout";
@@ -10626,6 +10658,7 @@
/** {@hide} */
public static final String
BLUETOOTH_HEARING_AID_PRIORITY_PREFIX = "bluetooth_hearing_aid_priority_";
+
/**
* Enable/disable radio bug detection
*
@@ -11443,105 +11476,6 @@
"adb_allowed_connection_time";
/**
- * Get the key that retrieves a bluetooth headset's priority.
- * @hide
- */
- public static final String getBluetoothHeadsetPriorityKey(String address) {
- return BLUETOOTH_HEADSET_PRIORITY_PREFIX + address.toUpperCase(Locale.ROOT);
- }
-
- /**
- * Get the key that retrieves a bluetooth a2dp sink's priority.
- * @hide
- */
- public static final String getBluetoothA2dpSinkPriorityKey(String address) {
- return BLUETOOTH_A2DP_SINK_PRIORITY_PREFIX + address.toUpperCase(Locale.ROOT);
- }
-
- /**
- * Get the key that retrieves a bluetooth a2dp src's priority.
- * @hide
- */
- public static final String getBluetoothA2dpSrcPriorityKey(String address) {
- return BLUETOOTH_A2DP_SRC_PRIORITY_PREFIX + address.toUpperCase(Locale.ROOT);
- }
-
- /**
- * Get the key that retrieves a bluetooth a2dp device's ability to support optional codecs.
- * @hide
- */
- public static final String getBluetoothA2dpSupportsOptionalCodecsKey(String address) {
- return BLUETOOTH_A2DP_SUPPORTS_OPTIONAL_CODECS_PREFIX +
- address.toUpperCase(Locale.ROOT);
- }
-
- /**
- * Get the key that retrieves whether a bluetooth a2dp device should have optional codecs
- * enabled.
- * @hide
- */
- public static final String getBluetoothA2dpOptionalCodecsEnabledKey(String address) {
- return BLUETOOTH_A2DP_OPTIONAL_CODECS_ENABLED_PREFIX +
- address.toUpperCase(Locale.ROOT);
- }
-
- /**
- * Get the key that retrieves a bluetooth Input Device's priority.
- * @hide
- */
- public static final String getBluetoothHidHostPriorityKey(String address) {
- return BLUETOOTH_INPUT_DEVICE_PRIORITY_PREFIX + address.toUpperCase(Locale.ROOT);
- }
-
- /**
- * Get the key that retrieves a bluetooth pan client priority.
- * @hide
- */
- public static final String getBluetoothPanPriorityKey(String address) {
- return BLUETOOTH_PAN_PRIORITY_PREFIX + address.toUpperCase(Locale.ROOT);
- }
-
- /**
- * Get the key that retrieves a bluetooth hearing aid priority.
- * @hide
- */
- public static final String getBluetoothHearingAidPriorityKey(String address) {
- return BLUETOOTH_HEARING_AID_PRIORITY_PREFIX + address.toUpperCase(Locale.ROOT);
- }
-
- /**
- * Get the key that retrieves a bluetooth map priority.
- * @hide
- */
- public static final String getBluetoothMapPriorityKey(String address) {
- return BLUETOOTH_MAP_PRIORITY_PREFIX + address.toUpperCase(Locale.ROOT);
- }
-
- /**
- * Get the key that retrieves a bluetooth map client priority.
- * @hide
- */
- public static final String getBluetoothMapClientPriorityKey(String address) {
- return BLUETOOTH_MAP_CLIENT_PRIORITY_PREFIX + address.toUpperCase(Locale.ROOT);
- }
-
- /**
- * Get the key that retrieves a bluetooth pbap client priority.
- * @hide
- */
- public static final String getBluetoothPbapClientPriorityKey(String address) {
- return BLUETOOTH_PBAP_CLIENT_PRIORITY_PREFIX + address.toUpperCase(Locale.ROOT);
- }
-
- /**
- * Get the key that retrieves a bluetooth sap priority.
- * @hide
- */
- public static final String getBluetoothSapPriorityKey(String address) {
- return BLUETOOTH_SAP_PRIORITY_PREFIX + address.toUpperCase(Locale.ROOT);
- }
-
- /**
* Scaling factor for normal window animations. Setting to 0 will
* disable window animations.
*/
diff --git a/telephony/java/android/provider/Telephony.java b/core/java/android/provider/Telephony.java
similarity index 99%
rename from telephony/java/android/provider/Telephony.java
rename to core/java/android/provider/Telephony.java
index add0316..9e454e6 100644
--- a/telephony/java/android/provider/Telephony.java
+++ b/core/java/android/provider/Telephony.java
@@ -4155,20 +4155,6 @@
public static final String CID = "cid";
/**
- * Message code. <em>OBSOLETE: merged into SERIAL_NUMBER.</em>
- * <P>Type: INTEGER</P>
- * @hide
- */
- public static final String V1_MESSAGE_CODE = "message_code";
-
- /**
- * Message identifier. <em>OBSOLETE: renamed to SERVICE_CATEGORY.</em>
- * <P>Type: INTEGER</P>
- * @hide
- */
- public static final String V1_MESSAGE_IDENTIFIER = "message_id";
-
- /**
* Service category which represents the general topic of the message.
* <p>
* For GSM/UMTS: message identifier (see 3GPP TS 23.041 section 9.4.1.2.2)
diff --git a/core/java/android/service/autofill/SaveInfo.java b/core/java/android/service/autofill/SaveInfo.java
index 48ba429..4df4362 100644
--- a/core/java/android/service/autofill/SaveInfo.java
+++ b/core/java/android/service/autofill/SaveInfo.java
@@ -216,10 +216,21 @@
*/
public static final int NEGATIVE_BUTTON_STYLE_REJECT = 1;
+ /**
+ * Style for the negative button of the save UI to never do the
+ * save operation. This means that the user does not need to save
+ * any data on this activity or application. Once the user tapping
+ * the negative button, the service should never trigger the save
+ * UI again. In addition to this, must consider providing restore
+ * options for the user.
+ */
+ public static final int NEGATIVE_BUTTON_STYLE_NEVER = 2;
+
/** @hide */
@IntDef(prefix = { "NEGATIVE_BUTTON_STYLE_" }, value = {
NEGATIVE_BUTTON_STYLE_CANCEL,
- NEGATIVE_BUTTON_STYLE_REJECT
+ NEGATIVE_BUTTON_STYLE_REJECT,
+ NEGATIVE_BUTTON_STYLE_NEVER
})
@Retention(RetentionPolicy.SOURCE)
@interface NegativeButtonStyle{}
@@ -571,6 +582,7 @@
*
* @see #NEGATIVE_BUTTON_STYLE_CANCEL
* @see #NEGATIVE_BUTTON_STYLE_REJECT
+ * @see #NEGATIVE_BUTTON_STYLE_NEVER
*
* @throws IllegalArgumentException If the style is invalid
*/
@@ -578,11 +590,7 @@
@Nullable IntentSender listener) {
throwIfDestroyed();
Preconditions.checkArgumentInRange(style, NEGATIVE_BUTTON_STYLE_CANCEL,
- NEGATIVE_BUTTON_STYLE_REJECT, "style");
- if (style != NEGATIVE_BUTTON_STYLE_CANCEL
- && style != NEGATIVE_BUTTON_STYLE_REJECT) {
- throw new IllegalArgumentException("Invalid style: " + style);
- }
+ NEGATIVE_BUTTON_STYLE_NEVER, "style");
mNegativeButtonStyle = style;
mNegativeActionListener = listener;
return this;
diff --git a/core/java/android/telephony/CellBroadcastIntents.java b/core/java/android/telephony/CellBroadcastIntents.java
new file mode 100644
index 0000000..4474f3e
--- /dev/null
+++ b/core/java/android/telephony/CellBroadcastIntents.java
@@ -0,0 +1,96 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.annotation.SystemApi;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.UserHandle;
+import android.util.Log;
+
+/**
+ * A static helper class used to send Intents with prepopulated flags.
+ * <p>
+ * This is intended to be used by the CellBroadcastService and will throw a security exception if
+ * used from a UID besides the network stack UID.
+ *
+ * @hide
+ */
+@SystemApi
+public class CellBroadcastIntents {
+ private static final String LOG_TAG = "CellBroadcastIntents";
+
+ /**
+ * @hide
+ */
+ private CellBroadcastIntents() {
+ }
+
+ /**
+ * Returns an intent which can be received by background BroadcastReceivers. This is only
+ * intended to be used by the CellBroadcastService and will throw a security exception if called
+ * from another UID.
+ *
+ * @param context The context from which to send the broadcast
+ * @param user The user from which to send the broadcast
+ * @param intent The Intent to broadcast; all receivers matching this Intent will
+ * receive the broadcast.
+ * @param receiverPermission String naming a permissions that a receiver must hold in order to
+ * receive your broadcast. If null, no permission is required.
+ * @param receiverAppOp The app op associated with the broadcast. If null, no appOp is
+ * required. If both receiverAppOp and receiverPermission are
+ * non-null, a receiver must have both of them to receive the
+ * broadcast
+ * @param resultReceiver Your own BroadcastReceiver to treat as the final receiver of the
+ * broadcast.
+ * @param scheduler A custom Handler with which to schedule the resultReceiver
+ * callback; if null it will be scheduled in the Context's main
+ * thread.
+ * @param initialCode An initial value for the result code. Often Activity.RESULT_OK.
+ * @param initialData An initial value for the result data. Often null.
+ * @param initialExtras An initial value for the result extras. Often null.
+ */
+ public static void sendOrderedBroadcastForBackgroundReceivers(@NonNull Context context,
+ @Nullable UserHandle user, @NonNull Intent intent, @Nullable String receiverPermission,
+ @Nullable String receiverAppOp, @Nullable BroadcastReceiver resultReceiver,
+ @Nullable Handler scheduler, int initialCode, @Nullable String initialData,
+ @Nullable Bundle initialExtras) {
+ Log.d(LOG_TAG, "sendOrderedBroadcastForBackgroundReceivers intent=" + intent.getAction());
+ int status = context.checkCallingOrSelfPermission(
+ "android.permission.GRANT_RUNTIME_PERMISSIONS_TO_TELEPHONY_DEFAULTS");
+ if (status == PackageManager.PERMISSION_DENIED) {
+ throw new SecurityException(
+ "Caller does not have permission to send broadcast for background receivers");
+ }
+ intent.setFlags(Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND);
+ if (user != null) {
+ context.createContextAsUser(user, 0).sendOrderedBroadcast(intent, receiverPermission,
+ receiverAppOp, resultReceiver, scheduler, initialCode, initialData,
+ initialExtras);
+ } else {
+ context.sendOrderedBroadcast(intent, receiverPermission,
+ receiverAppOp, resultReceiver, scheduler, initialCode, initialData,
+ initialExtras);
+ }
+ }
+}
diff --git a/core/java/android/telephony/PhoneStateListener.java b/core/java/android/telephony/PhoneStateListener.java
index a65c8fd..716a522 100644
--- a/core/java/android/telephony/PhoneStateListener.java
+++ b/core/java/android/telephony/PhoneStateListener.java
@@ -286,14 +286,6 @@
public static final int LISTEN_USER_MOBILE_DATA_STATE = 0x00080000;
/**
- * Listen for changes to the physical channel configuration.
- *
- * @see #onPhysicalChannelConfigurationChanged
- * @hide
- */
- public static final int LISTEN_PHYSICAL_CHANNEL_CONFIGURATION = 0x00100000;
-
- /**
* Listen for changes to the phone capability.
*
* @see #onPhoneCapabilityChanged
@@ -831,24 +823,6 @@
}
/**
- * Callback invoked when the current physical channel configuration has changed on the
- * registered subscription.
- * Note, the registration subId comes from {@link TelephonyManager} object which registers
- * PhoneStateListener by {@link TelephonyManager#listen(PhoneStateListener, int)}.
- * If this TelephonyManager object was created with
- * {@link TelephonyManager#createForSubscriptionId(int)}, then the callback applies to the
- * subId. Otherwise, this callback applies to
- * {@link SubscriptionManager#getDefaultSubscriptionId()}.
- *
- * @param configs List of the current {@link PhysicalChannelConfig}s
- * @hide
- */
- public void onPhysicalChannelConfigurationChanged(
- @NonNull List<PhysicalChannelConfig> configs) {
- // default implementation empty
- }
-
- /**
* Callback invoked when the current emergency number list has changed on the registered
* subscription.
* Note, the registration subId comes from {@link TelephonyManager} object which registers
@@ -1194,15 +1168,6 @@
() -> mExecutor.execute(() -> psl.onCarrierNetworkChange(active)));
}
- public void onPhysicalChannelConfigurationChanged(List<PhysicalChannelConfig> configs) {
- PhoneStateListener psl = mPhoneStateListenerWeakRef.get();
- if (psl == null) return;
-
- Binder.withCleanCallingIdentity(
- () -> mExecutor.execute(
- () -> psl.onPhysicalChannelConfigurationChanged(configs)));
- }
-
public void onEmergencyNumberListChanged(Map emergencyNumberList) {
PhoneStateListener psl = mPhoneStateListenerWeakRef.get();
if (psl == null) return;
diff --git a/core/java/android/text/LoginFilter.java b/core/java/android/text/LoginFilter.java
index e2d1596..0e4eec44 100644
--- a/core/java/android/text/LoginFilter.java
+++ b/core/java/android/text/LoginFilter.java
@@ -19,7 +19,10 @@
/**
* Abstract class for filtering login-related text (user names and passwords)
*
+ * @deprecated Password requirements should not be hardcoded in clients. This class also does not
+ * handle non-BMP characters.
*/
+@Deprecated
public abstract class LoginFilter implements InputFilter {
private boolean mAppendInvalid; // whether to append or ignore invalid characters
/**
@@ -130,7 +133,9 @@
* account creation. It prevents the user from entering user names with characters other than
* [a-zA-Z0-9.].
*
+ * @deprecated Do not encode assumptions about Google account names into client applications.
*/
+ @Deprecated
public static class UsernameFilterGMail extends LoginFilter {
public UsernameFilterGMail() {
@@ -190,8 +195,12 @@
/**
* This filter is compatible with GMail passwords which restricts characters to
* the Latin-1 (ISO8859-1) char set.
- *
+ *
+ * @deprecated Do not handle a user's Google password. Refer to
+ * <a href="https://support.google.com/accounts/answer/32040">Google Help</a> for
+ * password restriction information.
*/
+ @Deprecated
public static class PasswordFilterGMail extends LoginFilter {
public PasswordFilterGMail() {
diff --git a/core/java/android/util/FeatureFlagUtils.java b/core/java/android/util/FeatureFlagUtils.java
index 7e09740..236e5ae 100644
--- a/core/java/android/util/FeatureFlagUtils.java
+++ b/core/java/android/util/FeatureFlagUtils.java
@@ -41,6 +41,7 @@
public static final String SCREENRECORD_LONG_PRESS = "settings_screenrecord_long_press";
public static final String DYNAMIC_SYSTEM = "settings_dynamic_system";
public static final String SETTINGS_WIFITRACKER2 = "settings_wifitracker2";
+ public static final String SETTINGS_FUSE_FLAG = "settings_fuse";
private static final Map<String, String> DEFAULT_FLAGS;
@@ -48,6 +49,7 @@
DEFAULT_FLAGS = new HashMap<>();
DEFAULT_FLAGS.put("settings_audio_switcher", "true");
DEFAULT_FLAGS.put("settings_systemui_theme", "true");
+ DEFAULT_FLAGS.put(SETTINGS_FUSE_FLAG, "false");
DEFAULT_FLAGS.put(DYNAMIC_SYSTEM, "false");
DEFAULT_FLAGS.put(SEAMLESS_TRANSFER, "false");
DEFAULT_FLAGS.put(HEARING_AID_SETTINGS, "false");
diff --git a/core/java/android/util/SparseArray.java b/core/java/android/util/SparseArray.java
index 484894f..d3367c10 100644
--- a/core/java/android/util/SparseArray.java
+++ b/core/java/android/util/SparseArray.java
@@ -106,6 +106,9 @@
/**
* Returns true if the key exists in the array. This is equivalent to
* {@link #indexOfKey(int)} >= 0.
+ *
+ * @param key Potential key in the mapping
+ * @return true if the key is defined in the mapping
*/
public boolean contains(int key) {
return indexOfKey(key) >= 0;
diff --git a/core/java/android/util/StatsLog.java b/core/java/android/util/StatsLog.java
index f7077bb..64e15cf 100644
--- a/core/java/android/util/StatsLog.java
+++ b/core/java/android/util/StatsLog.java
@@ -224,12 +224,35 @@
/**
* Write an event to stats log using the raw format.
*
- * @param buffer The encoded buffer of data to write..
+ * @param buffer The encoded buffer of data to write.
* @param size The number of bytes from the buffer to write.
* @hide
*/
+ // TODO(b/144935988): Mark deprecated.
@SystemApi
- public static native void writeRaw(@NonNull byte[] buffer, int size);
+ public static void writeRaw(@NonNull byte[] buffer, int size) {
+ // TODO(b/144935988): make this no-op once clients have migrated to StatsEvent.
+ writeImpl(buffer, size, 0);
+ }
+
+ /**
+ * Write an event to stats log using the raw format.
+ *
+ * @param buffer The encoded buffer of data to write.
+ * @param size The number of bytes from the buffer to write.
+ * @param atomId The id of the atom to which the event belongs.
+ */
+ private static native void writeImpl(@NonNull byte[] buffer, int size, int atomId);
+
+ /**
+ * Write an event to stats log using the raw format encapsulated in StatsEvent.
+ *
+ * @param statsEvent The StatsEvent object containing the encoded buffer of data to write.
+ * @hide
+ */
+ public static void write(@NonNull final StatsEvent statsEvent) {
+ writeImpl(statsEvent.getBytes(), statsEvent.getNumBytes(), statsEvent.getAtomId());
+ }
private static void enforceDumpCallingPermission(Context context) {
context.enforceCallingPermission(android.Manifest.permission.DUMP, "Need DUMP permission.");
diff --git a/core/java/android/util/TimingLogger.java b/core/java/android/util/TimingLogger.java
index be442da..5a4a512 100644
--- a/core/java/android/util/TimingLogger.java
+++ b/core/java/android/util/TimingLogger.java
@@ -44,7 +44,14 @@
* D/TAG ( 3459): methodA: 6 ms, work C
* D/TAG ( 3459): methodA: end, 16 ms
* </pre>
+ *
+ * @deprecated Use {@link android.os.Trace}, or
+ * <a href="https://developer.android.com/studio/profile/benchmark">Android Studio</a>. In
+ * general, milliseconds is the wrong granularity for method-level tracing. Rounding errors
+ * can overemphasize cheap operations, or underemphasize repeated operations. This timing
+ * system also does not take CPU scheduling or frequency into account.
*/
+@Deprecated
public class TimingLogger {
/**
diff --git a/core/java/android/view/IPinnedStackListener.aidl b/core/java/android/view/IPinnedStackListener.aidl
index f4bee57..d01c933 100644
--- a/core/java/android/view/IPinnedStackListener.aidl
+++ b/core/java/android/view/IPinnedStackListener.aidl
@@ -67,20 +67,20 @@
void onActionsChanged(in ParceledListSlice actions);
/**
- * Called by the window manager to notify the listener to save the reentry fraction,
+ * Called by the window manager to notify the listener to save the reentry fraction and size,
* typically when an Activity leaves PiP (picture-in-picture) mode to fullscreen.
* {@param componentName} represents the application component of PiP window
* while {@param bounds} is the current PiP bounds used to calculate the
- * reentry snap fraction.
+ * reentry snap fraction and size.
*/
- void onSaveReentrySnapFraction(in ComponentName componentName, in Rect bounds);
+ void onSaveReentryBounds(in ComponentName componentName, in Rect bounds);
/**
- * Called by the window manager to notify the listener to reset saved reentry fraction,
+ * Called by the window manager to notify the listener to reset saved reentry fraction and size,
* typically when an Activity enters PiP (picture-in-picture) mode from fullscreen.
* {@param componentName} represents the application component of PiP window.
*/
- void onResetReentrySnapFraction(in ComponentName componentName);
+ void onResetReentryBounds(in ComponentName componentName);
/**
* Called when the window manager has detected change on DisplayInfo, or
diff --git a/core/java/android/view/IWindowManager.aidl b/core/java/android/view/IWindowManager.aidl
index 258b1ae..b829c9f 100644
--- a/core/java/android/view/IWindowManager.aidl
+++ b/core/java/android/view/IWindowManager.aidl
@@ -66,6 +66,22 @@
interface IWindowManager
{
/**
+ * No overridden behavior is provided in terms of fixing rotation to user rotation. Use
+ * other flags to derive the default behavior, such as {@link WindowManagerService#mIsPc}
+ * and {@link WindowManagerService#mForceDesktopModeOnExternalDisplays}.
+ */
+ const int FIXED_TO_USER_ROTATION_DEFAULT = 0;
+ /**
+ * Don't fix display rotation to {@link DisplayRotation#mUserRotation} only. Always allow
+ * other factors to play a role in deciding display rotation.
+ */
+ const int FIXED_TO_USER_ROTATION_DISABLED = 1;
+ /**
+ * Only use {@link DisplayRotation#mUserRotation} as the display rotation.
+ */
+ const int FIXED_TO_USER_ROTATION_ENABLED = 2;
+
+ /**
* ===== NOTICE =====
* The first three methods must remain the first three methods. Scripts
* and tools rely on their transaction number to work properly.
@@ -273,6 +289,11 @@
boolean isDisplayRotationFrozen(int displayId);
/**
+ * Sets if display rotation is fixed to user specified value for given displayId.
+ */
+ void setFixedToUserRotation(int displayId, int fixedToUserRotation);
+
+ /**
* Screenshot the current wallpaper layer, including the whole screen.
*/
Bitmap screenshotWallpaper();
diff --git a/core/java/android/view/MotionEvent.java b/core/java/android/view/MotionEvent.java
index be4c598..1c94e02 100644
--- a/core/java/android/view/MotionEvent.java
+++ b/core/java/android/view/MotionEvent.java
@@ -1440,7 +1440,7 @@
public static final int TOOL_TYPE_STYLUS = 2;
/**
- * Tool type constant: The tool is a mouse or trackpad.
+ * Tool type constant: The tool is a mouse.
*
* @see #getToolType
*/
diff --git a/core/java/android/view/SurfaceControl.java b/core/java/android/view/SurfaceControl.java
index 6458737..fc80e00 100644
--- a/core/java/android/view/SurfaceControl.java
+++ b/core/java/android/view/SurfaceControl.java
@@ -161,6 +161,8 @@
private static native boolean nativeSetAllowedDisplayConfigs(IBinder displayToken,
int[] allowedConfigs);
private static native int[] nativeGetAllowedDisplayConfigs(IBinder displayToken);
+ private static native boolean nativeSetDesiredDisplayConfigSpecs(IBinder displayToken,
+ SurfaceControl.DesiredDisplayConfigSpecs desiredDisplayConfigSpecs);
private static native int[] nativeGetDisplayColorModes(IBinder displayToken);
private static native SurfaceControl.DisplayPrimaries nativeGetDisplayNativePrimaries(
IBinder displayToken);
@@ -1490,6 +1492,50 @@
}
/**
+ * Contains information about desired display configuration.
+ *
+ * @hide
+ */
+ public static final class DesiredDisplayConfigSpecs {
+ /**
+ * @hide
+ */
+ public int mDefaultModeId;
+
+ /**
+ * @hide
+ */
+ public float mMinRefreshRate;
+
+ /**
+ * @hide
+ */
+ public float mMaxRefreshRate;
+
+ /**
+ * @hide
+ */
+ public DesiredDisplayConfigSpecs(
+ int defaultModeId, float minRefreshRate, float maxRefreshRate) {
+ mDefaultModeId = defaultModeId;
+ mMinRefreshRate = minRefreshRate;
+ mMaxRefreshRate = maxRefreshRate;
+ }
+ }
+
+ /**
+ * @hide
+ */
+ public static boolean setDesiredDisplayConfigSpecs(IBinder displayToken,
+ SurfaceControl.DesiredDisplayConfigSpecs desiredDisplayConfigSpecs) {
+ if (displayToken == null) {
+ throw new IllegalArgumentException("displayToken must not be null");
+ }
+
+ return nativeSetDesiredDisplayConfigSpecs(displayToken, desiredDisplayConfigSpecs);
+ }
+
+ /**
* @hide
*/
public static int[] getDisplayColorModes(IBinder displayToken) {
@@ -1863,7 +1909,9 @@
*
* @param layer The root layer to capture.
* @param sourceCrop The portion of the root surface to capture; caller may pass in 'new
- * Rect()' or null if no cropping is desired.
+ * Rect()' or null if no cropping is desired. If the root layer does not
+ * have a buffer or a crop set, then a non-empty source crop must be
+ * specified.
* @param frameScale The desired scale of the returned buffer; the raw
* screen will be scaled up/down.
*
@@ -1880,7 +1928,9 @@
*
* @param layer The root layer to capture.
* @param sourceCrop The portion of the root surface to capture; caller may pass in 'new
- * Rect()' or null if no cropping is desired.
+ * Rect()' or null if no cropping is desired. If the root layer does not
+ * have a buffer or a crop set, then a non-empty source crop must be
+ * specified.
* @param frameScale The desired scale of the returned buffer; the raw
* screen will be scaled up/down.
* @param format The desired pixel format of the returned buffer.
diff --git a/core/java/android/view/WindowlessViewRoot.java b/core/java/android/view/WindowlessViewRoot.java
index addf8e2..68f2bde 100644
--- a/core/java/android/view/WindowlessViewRoot.java
+++ b/core/java/android/view/WindowlessViewRoot.java
@@ -32,6 +32,14 @@
public class WindowlessViewRoot {
private ViewRootImpl mViewRoot;
private WindowlessWindowManager mWm;
+
+ /** @hide */
+ public WindowlessViewRoot(@NonNull Context c, @NonNull Display d,
+ @NonNull WindowlessWindowManager wwm) {
+ mWm = wwm;
+ mViewRoot = new ViewRootImpl(c, d, mWm);
+ }
+
public WindowlessViewRoot(@NonNull Context c, @NonNull Display d,
@NonNull SurfaceControl rootSurface,
@Nullable IBinder hostInputToken) {
@@ -55,4 +63,12 @@
public void dispose() {
mViewRoot.dispatchDetachedFromWindow();
}
+
+ /**
+ * Tell this viewroot to clean itself up.
+ * @hide
+ */
+ public void die() {
+ mViewRoot.die(false /* immediate */);
+ }
}
diff --git a/core/java/android/view/WindowlessWindowManager.java b/core/java/android/view/WindowlessWindowManager.java
index 0ff6063..2ba0975 100644
--- a/core/java/android/view/WindowlessWindowManager.java
+++ b/core/java/android/view/WindowlessWindowManager.java
@@ -34,7 +34,7 @@
* By parcelling the root surface, the app can offer another app content for embedding.
* @hide
*/
-class WindowlessWindowManager implements IWindowSession {
+public class WindowlessWindowManager implements IWindowSession {
private final static String TAG = "WindowlessWindowManager";
private class State {
@@ -45,6 +45,7 @@
mParams.copyFrom(p);
}
};
+
/**
* Used to store SurfaceControl we've built for clients to
* reconfigure them if relayout is called.
@@ -67,13 +68,18 @@
private int mForceHeight = -1;
private int mForceWidth = -1;
- WindowlessWindowManager(Configuration c, SurfaceControl rootSurface, IBinder hostInputToken) {
+ public WindowlessWindowManager(Configuration c, SurfaceControl rootSurface,
+ IBinder hostInputToken) {
mRootSurface = rootSurface;
mConfiguration = new Configuration(c);
mRealWm = WindowManagerGlobal.getWindowSession();
mHostInputToken = hostInputToken;
}
+ protected void setConfiguration(Configuration configuration) {
+ mConfiguration.setTo(configuration);
+ }
+
/**
* Utility API.
*/
@@ -103,8 +109,7 @@
}
if (((attrs.inputFeatures &
- WindowManager.LayoutParams.INPUT_FEATURE_NO_INPUT_CHANNEL) == 0) &&
- (mHostInputToken != null)) {
+ WindowManager.LayoutParams.INPUT_FEATURE_NO_INPUT_CHANNEL) == 0)) {
try {
mRealWm.grantInputChannel(displayId, sc, window, mHostInputToken, outInputChannel);
} catch (RemoteException e) {
@@ -126,6 +131,17 @@
@Override
public void remove(android.view.IWindow window) throws RemoteException {
mRealWm.remove(window);
+ State state;
+ synchronized (this) {
+ state = mStateForWindow.remove(window.asBinder());
+ }
+ if (state == null) {
+ throw new IllegalArgumentException(
+ "Invalid window token (never added or removed already)");
+ }
+ try (SurfaceControl.Transaction t = new SurfaceControl.Transaction()) {
+ t.remove(state.mSurfaceControl).apply();
+ }
}
private boolean isOpaque(WindowManager.LayoutParams attrs) {
@@ -166,10 +182,14 @@
int height = surfaceInsets != null ?
attrs.height + surfaceInsets.top + surfaceInsets.bottom : attrs.height;
- t.show(sc)
- .setBufferSize(sc, width, height)
- .setOpaque(sc, isOpaque(attrs))
- .apply();
+ t.setBufferSize(sc, width, height)
+ .setOpaque(sc, isOpaque(attrs));
+ if (viewFlags == View.VISIBLE) {
+ t.show(sc);
+ } else {
+ t.hide(sc);
+ }
+ t.apply();
outSurfaceControl.copyFrom(sc);
outFrame.set(0, 0, attrs.width, attrs.height);
diff --git a/core/java/android/view/accessibility/AccessibilityEvent.java b/core/java/android/view/accessibility/AccessibilityEvent.java
index 32b0f41..34654ed 100644
--- a/core/java/android/view/accessibility/AccessibilityEvent.java
+++ b/core/java/android/view/accessibility/AccessibilityEvent.java
@@ -17,6 +17,7 @@
package android.view.accessibility;
import android.annotation.IntDef;
+import android.annotation.NonNull;
import android.annotation.UnsupportedAppUsage;
import android.os.Build;
import android.os.Parcel;
@@ -796,10 +797,32 @@
private ArrayList<AccessibilityRecord> mRecords;
- /*
- * Hide constructor from clients.
+ /**
+ * Creates a new {@link AccessibilityEvent}.
*/
- private AccessibilityEvent() {
+ public AccessibilityEvent() {
+ if (DEBUG_ORIGIN) originStackTrace = Thread.currentThread().getStackTrace();
+ }
+
+
+ /**
+ * Creates a new {@link AccessibilityEvent} with the given <code>eventType</code>.
+ *
+ * @param eventType The event type.
+ */
+ public AccessibilityEvent(int eventType) {
+ mEventType = eventType;
+ if (DEBUG_ORIGIN) originStackTrace = Thread.currentThread().getStackTrace();
+ }
+
+ /**
+ * Copy constructor. Creates a new {@link AccessibilityEvent}, and this instance is initialized
+ * from the given <code>event</code>.
+ *
+ * @param event The other event.
+ */
+ public AccessibilityEvent(@NonNull AccessibilityEvent event) {
+ init(event);
}
/**
@@ -816,6 +839,15 @@
mWindowChangeTypes = event.mWindowChangeTypes;
mEventTime = event.mEventTime;
mPackageName = event.mPackageName;
+ if (event.mRecords != null) {
+ final int recordCount = event.mRecords.size();
+ mRecords = new ArrayList<>(recordCount);
+ for (int i = 0; i < recordCount; i++) {
+ final AccessibilityRecord record = event.mRecords.get(i);
+ final AccessibilityRecord recordClone = new AccessibilityRecord(record);
+ mRecords.add(recordClone);
+ }
+ }
if (DEBUG_ORIGIN) originStackTrace = event.originStackTrace;
}
@@ -1109,6 +1141,9 @@
* Returns a cached instance if such is available or a new one is
* instantiated with its type property set.
*
+ * <p>In most situations object pooling is not beneficial. Create a new instance using the
+ * constructor {@link #AccessibilityEvent(int)} instead.
+ *
* @param eventType The event type.
* @return An instance.
*/
@@ -1123,23 +1158,15 @@
* created. The returned instance is initialized from the given
* <code>event</code>.
*
+ * <p>In most situations object pooling is not beneficial. Create a new instance using the
+ * constructor {@link #AccessibilityEvent(AccessibilityEvent)} instead.
+ *
* @param event The other event.
* @return An instance.
*/
public static AccessibilityEvent obtain(AccessibilityEvent event) {
AccessibilityEvent eventClone = AccessibilityEvent.obtain();
eventClone.init(event);
-
- if (event.mRecords != null) {
- final int recordCount = event.mRecords.size();
- eventClone.mRecords = new ArrayList<AccessibilityRecord>(recordCount);
- for (int i = 0; i < recordCount; i++) {
- final AccessibilityRecord record = event.mRecords.get(i);
- final AccessibilityRecord recordClone = AccessibilityRecord.obtain(record);
- eventClone.mRecords.add(recordClone);
- }
- }
-
return eventClone;
}
@@ -1147,6 +1174,9 @@
* Returns a cached instance if such is available or a new one is
* instantiated.
*
+ * <p>In most situations object pooling is not beneficial. Create a new instance using the
+ * constructor {@link #AccessibilityEvent()} instead.
+ *
* @return An instance.
*/
public static AccessibilityEvent obtain() {
@@ -1162,6 +1192,8 @@
* <b>Note: You must not touch the object after calling this function.</b>
* </p>
*
+ * <p>In most situations object pooling is not beneficial, and recycling is not necessary.
+ *
* @throws IllegalStateException If the event is already recycled.
*/
@Override
diff --git a/core/java/android/view/accessibility/AccessibilityNodeInfo.java b/core/java/android/view/accessibility/AccessibilityNodeInfo.java
index a389555..f2f84cd 100644
--- a/core/java/android/view/accessibility/AccessibilityNodeInfo.java
+++ b/core/java/android/view/accessibility/AccessibilityNodeInfo.java
@@ -529,6 +529,20 @@
public static final String ACTION_ARGUMENT_ACCESSIBLE_CLICKABLE_SPAN =
"android.view.accessibility.action.ACTION_ARGUMENT_ACCESSIBLE_CLICKABLE_SPAN";
+ /**
+ * Argument to represent the duration in milliseconds to press and hold a node.
+ * <p>
+ * <strong>Type:</strong> int<br>
+ * <strong>Actions:</strong>
+ * <ul>
+ * <li>{@link AccessibilityAction#ACTION_PRESS_AND_HOLD}</li>
+ * </ul>
+ *
+ * @see AccessibilityAction#ACTION_PRESS_AND_HOLD
+ */
+ public static final String ACTION_ARGUMENT_PRESS_HOLD_DURATION_MILLIS_INT =
+ "android.view.accessibility.action.ARGUMENT_PRESS_HOLD_DURATION_MILLIS_INT";
+
// Focus types
/**
@@ -775,15 +789,38 @@
private TouchDelegateInfo mTouchDelegateInfo;
/**
- * Hide constructor from clients.
+ * Creates a new {@link AccessibilityNodeInfo}.
*/
- private AccessibilityNodeInfo() {
- /* do nothing */
+ public AccessibilityNodeInfo() {
}
- /** @hide */
- AccessibilityNodeInfo(AccessibilityNodeInfo info) {
- init(info);
+ /**
+ * Creates a new {@link AccessibilityNodeInfo} with the given <code>source</code>.
+ *
+ * @param source The source view.
+ */
+ public AccessibilityNodeInfo(@NonNull View source) {
+ setSource(source);
+ }
+
+ /**
+ * Creates a new {@link AccessibilityNodeInfo} with the given <code>source</code>.
+ *
+ * @param root The root of the virtual subtree.
+ * @param virtualDescendantId The id of the virtual descendant.
+ */
+ public AccessibilityNodeInfo(@NonNull View root, int virtualDescendantId) {
+ setSource(root, virtualDescendantId);
+ }
+
+ /**
+ * Copy constructor. Creates a new {@link AccessibilityNodeInfo}, and this new instance is
+ * initialized from the given <code>info</code>.
+ *
+ * @param info The other info.
+ */
+ public AccessibilityNodeInfo(@NonNull AccessibilityNodeInfo info) {
+ init(info, false /* usePoolingInfo */);
}
/**
@@ -911,7 +948,7 @@
// when it is obtained. Enforce sealing again before we init to fail when a node has been
// recycled during a refresh to catch such errors earlier.
enforceSealed();
- init(refreshedInfo);
+ init(refreshedInfo, true /* usePoolingInfo */);
refreshedInfo.recycle();
return true;
}
@@ -3299,6 +3336,9 @@
* Returns a cached instance if such is available otherwise a new one
* and sets the source.
*
+ * <p>In most situations object pooling is not beneficial. Create a new instance using the
+ * constructor {@link #AccessibilityNodeInfo(View)} instead.
+ *
* @param source The source view.
* @return An instance.
*
@@ -3314,6 +3354,9 @@
* Returns a cached instance if such is available otherwise a new one
* and sets the source.
*
+ * <p>In most situations object pooling is not beneficial. Create a new instance using the
+ * constructor {@link #AccessibilityNodeInfo(View, int)} instead.
+ *
* @param root The root of the virtual subtree.
* @param virtualDescendantId The id of the virtual descendant.
* @return An instance.
@@ -3329,6 +3372,9 @@
/**
* Returns a cached instance if such is available otherwise a new one.
*
+ * <p>In most situations object pooling is not beneficial. Create a new instance using the
+ * constructor {@link #AccessibilityNodeInfo()} instead.
+ *
* @return An instance.
*/
public static AccessibilityNodeInfo obtain() {
@@ -3344,12 +3390,15 @@
* create. The returned instance is initialized from the given
* <code>info</code>.
*
+ * <p>In most situations object pooling is not beneficial. Create a new instance using the
+ * constructor {@link #AccessibilityNodeInfo(AccessibilityNodeInfo)} instead.
+ *
* @param info The other info.
* @return An instance.
*/
public static AccessibilityNodeInfo obtain(AccessibilityNodeInfo info) {
AccessibilityNodeInfo infoClone = AccessibilityNodeInfo.obtain();
- infoClone.init(info);
+ infoClone.init(info, true /* usePoolingInfo */);
return infoClone;
}
@@ -3358,6 +3407,8 @@
* <p>
* <strong>Note:</strong> You must not touch the object after calling this function.
*
+ * <p>In most situations object pooling is not beneficial, and recycling is not necessary.
+ *
* @throws IllegalStateException If the info is already recycled.
*/
public void recycle() {
@@ -3647,8 +3698,9 @@
* Initializes this instance from another one.
*
* @param other The other instance.
+ * @param usePoolingInfos whether using pooled object internally or not
*/
- private void init(AccessibilityNodeInfo other) {
+ private void init(AccessibilityNodeInfo other, boolean usePoolingInfos) {
mSealed = other.mSealed;
mSourceNodeId = other.mSourceNodeId;
mParentNodeId = other.mParentNodeId;
@@ -3707,6 +3759,18 @@
mExtras = other.mExtras != null ? new Bundle(other.mExtras) : null;
+ if (usePoolingInfos) {
+ initPoolingInfos(other);
+ } else {
+ initCopyInfos(other);
+ }
+
+ final TouchDelegateInfo otherInfo = other.mTouchDelegateInfo;
+ mTouchDelegateInfo = (otherInfo != null)
+ ? new TouchDelegateInfo(otherInfo.mTargetMap, true) : null;
+ }
+
+ private void initPoolingInfos(AccessibilityNodeInfo other) {
if (mRangeInfo != null) mRangeInfo.recycle();
mRangeInfo = (other.mRangeInfo != null)
? RangeInfo.obtain(other.mRangeInfo) : null;
@@ -3716,10 +3780,20 @@
if (mCollectionItemInfo != null) mCollectionItemInfo.recycle();
mCollectionItemInfo = (other.mCollectionItemInfo != null)
? CollectionItemInfo.obtain(other.mCollectionItemInfo) : null;
+ }
- final TouchDelegateInfo otherInfo = other.mTouchDelegateInfo;
- mTouchDelegateInfo = (otherInfo != null)
- ? new TouchDelegateInfo(otherInfo.mTargetMap, true) : null;
+ private void initCopyInfos(AccessibilityNodeInfo other) {
+ RangeInfo ri = other.mRangeInfo;
+ mRangeInfo = (ri == null) ? null
+ : new RangeInfo(ri.mType, ri.mMin, ri.mMax, ri.mCurrent);
+ CollectionInfo ci = other.mCollectionInfo;
+ mCollectionInfo = (ci == null) ? null
+ : new CollectionInfo(ci.mRowCount, ci.mColumnCount,
+ ci.mHierarchical, ci.mSelectionMode);
+ CollectionItemInfo cii = other.mCollectionItemInfo;
+ mCollectionItemInfo = (cii == null) ? null
+ : new CollectionItemInfo(cii.mRowIndex, cii.mRowSpan, cii.mColumnIndex,
+ cii.mColumnSpan, cii.mHeading, cii.mSelected);
}
/**
@@ -3854,7 +3928,7 @@
* Clears the state of this instance.
*/
private void clear() {
- init(DEFAULT);
+ init(DEFAULT, true /* usePoolingInfo */);
}
private static boolean isDefaultStandardAction(AccessibilityAction action) {
@@ -3975,6 +4049,8 @@
return "ACTION_SHOW_TOOLTIP";
case R.id.accessibilityActionHideTooltip:
return "ACTION_HIDE_TOOLTIP";
+ case R.id.accessibilityActionPressAndHold:
+ return "ACTION_PRESS_AND_HOLD";
default:
return "ACTION_UNKNOWN";
}
@@ -4566,6 +4642,31 @@
public static final AccessibilityAction ACTION_HIDE_TOOLTIP =
new AccessibilityAction(R.id.accessibilityActionHideTooltip);
+ /**
+ * Action that presses and holds a node.
+ * <p>
+ * This action is for nodes that have distinct behavior that depends on how long a press is
+ * held. Nodes having a single action for long press should use {@link #ACTION_LONG_CLICK}
+ * instead of this action, and nodes should not expose both actions.
+ * <p>
+ * Use {@link #ACTION_ARGUMENT_PRESS_HOLD_DURATION_MILLIS_INT} to specify how long the
+ * node is pressed. To ensure reasonable behavior, the first value of this argument should
+ * be 0 and the others should greater than 0 and less than 10,000. UIs requested to hold for
+ * times outside of this range should ignore the action.
+ * <p>
+ * The total time the element is held could be specified by an accessibility user up-front,
+ * or may depend on what happens on the UI as the user continues to request the hold.
+ * <p>
+ * <strong>Note:</strong> The time between dispatching the action and it arriving in the
+ * UI process is not guaranteed. It is possible on a busy system for the time to expire
+ * unexpectedly. For the case of holding down a key for a repeating action, a delayed
+ * arrival should be benign. Please do not use this sort of action in cases where such
+ * delays will lead to unexpected UI behavior.
+ * <p>
+ */
+ @NonNull public static final AccessibilityAction ACTION_PRESS_AND_HOLD =
+ new AccessibilityAction(R.id.accessibilityActionPressAndHold);
+
private final int mActionId;
private final CharSequence mLabel;
@@ -4709,6 +4810,10 @@
/**
* Obtains a pooled instance that is a clone of another one.
*
+ * <p>In most situations object pooling is not beneficial. Create a new instance using the
+ * constructor {@link AccessibilityNodeInfo.RangeInfo#AccessibilityNodeInfo.RangeInfo(int,
+ * float, float, float)} instead.
+ *
* @param other The instance to clone.
*
* @hide
@@ -4720,6 +4825,10 @@
/**
* Obtains a pooled instance.
*
+ * <p>In most situations object pooling is not beneficial. Create a new instance using the
+ * constructor {@link AccessibilityNodeInfo.RangeInfo#AccessibilityNodeInfo.RangeInfo(int,
+ * float, float, float)} instead.
+ *
* @param type The type of the range.
* @param min The minimum value. Use {@code Float.NEGATIVE_INFINITY} if the range has no
* minimum.
@@ -4750,7 +4859,7 @@
* maximum.
* @param current The current value.
*/
- private RangeInfo(int type, float min, float max, float current) {
+ public RangeInfo(int type, float min, float max, float current) {
mType = type;
mMin = min;
mMax = max;
@@ -4799,6 +4908,8 @@
/**
* Recycles this instance.
+ *
+ * <p>In most situations object pooling is not beneficial, and recycling is not necessary.
*/
void recycle() {
clear();
@@ -4849,6 +4960,10 @@
/**
* Obtains a pooled instance that is a clone of another one.
*
+ * <p>In most situations object pooling is not beneficial. Create a new instance using the
+ * constructor {@link
+ * AccessibilityNodeInfo.CollectionInfo#AccessibilityNodeInfo.CollectionInfo} instead.
+ *
* @param other The instance to clone.
* @hide
*/
@@ -4860,6 +4975,11 @@
/**
* Obtains a pooled instance.
*
+ * <p>In most situations object pooling is not beneficial. Create a new instance using the
+ * constructor {@link
+ * AccessibilityNodeInfo.CollectionInfo#AccessibilityNodeInfo.CollectionInfo(int, int,
+ * boolean)} instead.
+ *
* @param rowCount The number of rows, or -1 if count is unknown.
* @param columnCount The number of columns, or -1 if count is unknown.
* @param hierarchical Whether the collection is hierarchical.
@@ -4872,6 +4992,11 @@
/**
* Obtains a pooled instance.
*
+ * <p>In most situations object pooling is not beneficial. Create a new instance using the
+ * constructor {@link
+ * AccessibilityNodeInfo.CollectionInfo#AccessibilityNodeInfo.CollectionInfo(int, int,
+ * boolean, int)} instead.
+ *
* @param rowCount The number of rows.
* @param columnCount The number of columns.
* @param hierarchical Whether the collection is hierarchical.
@@ -4902,9 +5027,20 @@
* @param rowCount The number of rows.
* @param columnCount The number of columns.
* @param hierarchical Whether the collection is hierarchical.
+ */
+ public CollectionInfo(int rowCount, int columnCount, boolean hierarchical) {
+ this(rowCount, columnCount, hierarchical, SELECTION_MODE_NONE);
+ }
+
+ /**
+ * Creates a new instance.
+ *
+ * @param rowCount The number of rows.
+ * @param columnCount The number of columns.
+ * @param hierarchical Whether the collection is hierarchical.
* @param selectionMode The collection's selection mode.
*/
- private CollectionInfo(int rowCount, int columnCount, boolean hierarchical,
+ public CollectionInfo(int rowCount, int columnCount, boolean hierarchical,
int selectionMode) {
mRowCount = rowCount;
mColumnCount = columnCount;
@@ -4955,6 +5091,8 @@
/**
* Recycles this instance.
+ *
+ * <p>In most situations object pooling is not beneficial, and recycling is not necessary.
*/
void recycle() {
clear();
@@ -4991,6 +5129,11 @@
/**
* Obtains a pooled instance that is a clone of another one.
*
+ * <p>In most situations object pooling is not beneficial. Create a new instance using the
+ * constructor {@link
+ * AccessibilityNodeInfo.CollectionItemInfo#AccessibilityNodeInfo.CollectionItemInfo}
+ * instead.
+ *
* @param other The instance to clone.
* @hide
*/
@@ -5002,6 +5145,11 @@
/**
* Obtains a pooled instance.
*
+ * <p>In most situations object pooling is not beneficial. Create a new instance using the
+ * constructor {@link
+ * AccessibilityNodeInfo.CollectionItemInfo#AccessibilityNodeInfo.CollectionItemInfo(int,
+ * int, int, int, boolean)} instead.
+ *
* @param rowIndex The row index at which the item is located.
* @param rowSpan The number of rows the item spans.
* @param columnIndex The column index at which the item is located.
@@ -5017,6 +5165,11 @@
/**
* Obtains a pooled instance.
*
+ * <p>In most situations object pooling is not beneficial. Creates a new instance using the
+ * constructor {@link
+ * AccessibilityNodeInfo.CollectionItemInfo#AccessibilityNodeInfo.CollectionItemInfo(int,
+ * int, int, int, boolean, boolean)} instead.
+ *
* @param rowIndex The row index at which the item is located.
* @param rowSpan The number of rows the item spans.
* @param columnIndex The column index at which the item is located.
@@ -5058,7 +5211,22 @@
* @param columnSpan The number of columns the item spans.
* @param heading Whether the item is a heading.
*/
- private CollectionItemInfo(int rowIndex, int rowSpan, int columnIndex, int columnSpan,
+ public CollectionItemInfo(int rowIndex, int rowSpan, int columnIndex, int columnSpan,
+ boolean heading) {
+ this(rowIndex, rowSpan, columnIndex, columnSpan, heading, false);
+ }
+
+ /**
+ * Creates a new instance.
+ *
+ * @param rowIndex The row index at which the item is located.
+ * @param rowSpan The number of rows the item spans.
+ * @param columnIndex The column index at which the item is located.
+ * @param columnSpan The number of columns the item spans.
+ * @param heading Whether the item is a heading.
+ * @param selected Whether the item is selected.
+ */
+ public CollectionItemInfo(int rowIndex, int rowSpan, int columnIndex, int columnSpan,
boolean heading, boolean selected) {
mRowIndex = rowIndex;
mRowSpan = rowSpan;
@@ -5126,6 +5294,8 @@
/**
* Recycles this instance.
+ *
+ * <p>In most situations object pooling is not beneficial, and recycling is not necessary.
*/
void recycle() {
clear();
diff --git a/core/java/android/view/accessibility/AccessibilityRecord.java b/core/java/android/view/accessibility/AccessibilityRecord.java
index d7d7e21..4f6c9ef 100644
--- a/core/java/android/view/accessibility/AccessibilityRecord.java
+++ b/core/java/android/view/accessibility/AccessibilityRecord.java
@@ -18,6 +18,7 @@
import static com.android.internal.util.CollectionUtils.isEmpty;
+import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.UnsupportedAppUsage;
import android.os.Parcelable;
@@ -113,10 +114,20 @@
int mConnectionId = UNDEFINED;
- /*
- * Hide constructor.
+ /**
+ * Creates a new {@link AccessibilityRecord}.
*/
- AccessibilityRecord() {
+ public AccessibilityRecord() {
+ }
+
+ /**
+ * Copy constructor. Creates a new {@link AccessibilityRecord}, and this instance is initialized
+ * with data from the given <code>record</code>.
+ *
+ * @param record The other record.
+ */
+ public AccessibilityRecord(@NonNull AccessibilityRecord record) {
+ init(record);
}
/**
@@ -790,6 +801,9 @@
* instantiated. The instance is initialized with data from the
* given record.
*
+ * <p>In most situations object pooling is not beneficial. Create a new instance using the
+ * constructor {@link #AccessibilityRecord(AccessibilityRecord)} instead.
+ *
* @return An instance.
*/
public static AccessibilityRecord obtain(AccessibilityRecord record) {
@@ -802,6 +816,9 @@
* Returns a cached instance if such is available or a new one is
* instantiated.
*
+ * <p>In most situations object pooling is not beneficial. Create a new instance using the
+ * constructor {@link #AccessibilityRecord()} instead.
+ *
* @return An instance.
*/
public static AccessibilityRecord obtain() {
@@ -823,6 +840,8 @@
* <p>
* <strong>Note:</strong> You must not touch the object after calling this function.
*
+ * <p>In most situations object pooling is not beneficial, and recycling is not necessary.
+ *
* @throws IllegalStateException If the record is already recycled.
*/
public void recycle() {
diff --git a/core/java/android/view/accessibility/AccessibilityWindowInfo.java b/core/java/android/view/accessibility/AccessibilityWindowInfo.java
index 5fa8a6e..2cc6e9a 100644
--- a/core/java/android/view/accessibility/AccessibilityWindowInfo.java
+++ b/core/java/android/view/accessibility/AccessibilityWindowInfo.java
@@ -119,12 +119,19 @@
private int mConnectionId = UNDEFINED_WINDOW_ID;
- private AccessibilityWindowInfo() {
- /* do nothing - hide constructor */
+ /**
+ * Creates a new {@link AccessibilityWindowInfo}.
+ */
+ public AccessibilityWindowInfo() {
}
- /** @hide */
- AccessibilityWindowInfo(AccessibilityWindowInfo info) {
+ /**
+ * Copy constructor. Creates a new {@link AccessibilityWindowInfo}, and this new instance is
+ * initialized from given <code>info</code>.
+ *
+ * @param info The other info.
+ */
+ public AccessibilityWindowInfo(@NonNull AccessibilityWindowInfo info) {
init(info);
}
@@ -469,6 +476,9 @@
* Returns a cached instance if such is available or a new one is
* created.
*
+ * <p>In most situations object pooling is not beneficial. Create a new instance using the
+ * constructor {@link #AccessibilityWindowInfo()} instead.
+ *
* @return An instance.
*/
public static AccessibilityWindowInfo obtain() {
@@ -487,6 +497,9 @@
* created. The returned instance is initialized from the given
* <code>info</code>.
*
+ * <p>In most situations object pooling is not beneficial. Create a new instance using the
+ * constructor {@link #AccessibilityWindowInfo(AccessibilityWindowInfo)} instead.
+ *
* @param info The other info.
* @return An instance.
*/
@@ -514,6 +527,8 @@
* <strong>Note:</strong> You must not touch the object after calling this function.
* </p>
*
+ * <p>In most situations object pooling is not beneficial, and recycling is not necessary.
+ *
* @throws IllegalStateException If the info is already recycled.
*/
public void recycle() {
diff --git a/core/java/android/view/accessibility/TEST_MAPPING b/core/java/android/view/accessibility/TEST_MAPPING
index d2bd6ea..9b1b677 100644
--- a/core/java/android/view/accessibility/TEST_MAPPING
+++ b/core/java/android/view/accessibility/TEST_MAPPING
@@ -36,6 +36,9 @@
],
"postsubmit": [
{
+ "name": "CtsAccessibilityServiceSdk29TestCases"
+ },
+ {
"name": "CtsAccessibilityServiceTestCases"
},
{
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java
index 2af7ac7..4b47927 100644
--- a/core/java/android/webkit/WebView.java
+++ b/core/java/android/webkit/WebView.java
@@ -125,7 +125,7 @@
*
* @param webview the WebView to transport
*/
- public synchronized void setWebView(WebView webview) {
+ public synchronized void setWebView(@Nullable WebView webview) {
mWebview = webview;
}
@@ -134,6 +134,7 @@
*
* @return the transported WebView object
*/
+ @Nullable
public synchronized WebView getWebView() {
return mWebview;
}
@@ -309,7 +310,7 @@
*
* @param context an Activity Context to access application assets
*/
- public WebView(Context context) {
+ public WebView(@NonNull Context context) {
this(context, null);
}
@@ -319,7 +320,7 @@
* @param context an Activity Context to access application assets
* @param attrs an AttributeSet passed to our parent
*/
- public WebView(Context context, AttributeSet attrs) {
+ public WebView(@NonNull Context context, @Nullable AttributeSet attrs) {
this(context, attrs, com.android.internal.R.attr.webViewStyle);
}
@@ -332,7 +333,7 @@
* reference to a style resource that supplies default values for
* the view. Can be 0 to not look for defaults.
*/
- public WebView(Context context, AttributeSet attrs, int defStyleAttr) {
+ public WebView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
this(context, attrs, defStyleAttr, 0);
}
@@ -349,7 +350,8 @@
* defStyleAttr is 0 or can not be found in the theme. Can be 0
* to not look for defaults.
*/
- public WebView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
+ public WebView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr,
+ int defStyleRes) {
this(context, attrs, defStyleAttr, defStyleRes, null, false);
}
@@ -370,7 +372,7 @@
* and {@link WebStorage} for fine-grained control of privacy data.
*/
@Deprecated
- public WebView(Context context, AttributeSet attrs, int defStyleAttr,
+ public WebView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr,
boolean privateBrowsing) {
this(context, attrs, defStyleAttr, 0, null, privateBrowsing);
}
@@ -395,8 +397,8 @@
* be added synchronously, before a subsequent loadUrl call takes effect.
*/
@UnsupportedAppUsage
- protected WebView(Context context, AttributeSet attrs, int defStyleAttr,
- Map<String, Object> javaScriptInterfaces, boolean privateBrowsing) {
+ protected WebView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr,
+ @Nullable Map<String, Object> javaScriptInterfaces, boolean privateBrowsing) {
this(context, attrs, defStyleAttr, 0, javaScriptInterfaces, privateBrowsing);
}
@@ -405,8 +407,9 @@
*/
@SuppressWarnings("deprecation") // for super() call into deprecated base class constructor.
@UnsupportedAppUsage
- protected WebView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes,
- Map<String, Object> javaScriptInterfaces, boolean privateBrowsing) {
+ protected WebView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr,
+ int defStyleRes, @Nullable Map<String, Object> javaScriptInterfaces,
+ boolean privateBrowsing) {
super(context, attrs, defStyleAttr, defStyleRes);
// WebView is important by default, unless app developer overrode attribute.
@@ -642,7 +645,7 @@
* method fails.
*/
@Nullable
- public WebBackForwardList saveState(Bundle outState) {
+ public WebBackForwardList saveState(@NonNull Bundle outState) {
checkThread();
return mProvider.saveState(outState);
}
@@ -695,7 +698,7 @@
* @return the restored back/forward list or {@code null} if restoreState failed
*/
@Nullable
- public WebBackForwardList restoreState(Bundle inState) {
+ public WebBackForwardList restoreState(@NonNull Bundle inState) {
checkThread();
return mProvider.restoreState(inState);
}
@@ -713,7 +716,7 @@
* controlling caching, accept types or the User-Agent, their
* values may be overridden by this WebView's defaults.
*/
- public void loadUrl(String url, Map<String, String> additionalHttpHeaders) {
+ public void loadUrl(@NonNull String url, @NonNull Map<String, String> additionalHttpHeaders) {
checkThread();
mProvider.loadUrl(url, additionalHttpHeaders);
}
@@ -725,7 +728,7 @@
*
* @param url the URL of the resource to load
*/
- public void loadUrl(String url) {
+ public void loadUrl(@NonNull String url) {
checkThread();
mProvider.loadUrl(url);
}
@@ -739,7 +742,7 @@
* @param postData the data will be passed to "POST" request, which must be
* be "application/x-www-form-urlencoded" encoded.
*/
- public void postUrl(String url, byte[] postData) {
+ public void postUrl(@NonNull String url, @NonNull byte[] postData) {
checkThread();
if (URLUtil.isNetworkUrl(url)) {
mProvider.postUrl(url, postData);
@@ -803,7 +806,8 @@
* @param mimeType the MIME type of the data, e.g. 'text/html'.
* @param encoding the encoding of the data
*/
- public void loadData(String data, @Nullable String mimeType, @Nullable String encoding) {
+ public void loadData(@NonNull String data, @Nullable String mimeType,
+ @Nullable String encoding) {
checkThread();
mProvider.loadData(data, mimeType, encoding);
}
@@ -850,7 +854,7 @@
* @param historyUrl the URL to use as the history entry. If {@code null} defaults
* to 'about:blank'. If non-null, this must be a valid URL.
*/
- public void loadDataWithBaseURL(@Nullable String baseUrl, String data,
+ public void loadDataWithBaseURL(@Nullable String baseUrl, @NonNull String data,
@Nullable String mimeType, @Nullable String encoding, @Nullable String historyUrl) {
checkThread();
mProvider.loadDataWithBaseURL(baseUrl, data, mimeType, encoding, historyUrl);
@@ -873,7 +877,8 @@
* completes with the result of the execution (if any).
* May be {@code null} if no notification of the result is required.
*/
- public void evaluateJavascript(String script, @Nullable ValueCallback<String> resultCallback) {
+ public void evaluateJavascript(@NonNull String script, @Nullable ValueCallback<String>
+ resultCallback) {
checkThread();
mProvider.evaluateJavaScript(script, resultCallback);
}
@@ -883,7 +888,7 @@
*
* @param filename the filename where the archive should be placed
*/
- public void saveWebArchive(String filename) {
+ public void saveWebArchive(@NonNull String filename) {
checkThread();
mProvider.saveWebArchive(filename);
}
@@ -900,8 +905,8 @@
* under which the file was saved, or {@code null} if saving the
* file failed.
*/
- public void saveWebArchive(String basename, boolean autoname, @Nullable ValueCallback<String>
- callback) {
+ public void saveWebArchive(@NonNull String basename, boolean autoname,
+ @Nullable ValueCallback<String> callback) {
checkThread();
mProvider.saveWebArchive(basename, autoname, callback);
}
@@ -1064,7 +1069,7 @@
* requests with callbacks.
* @param callback The callback to be invoked.
*/
- public void postVisualStateCallback(long requestId, VisualStateCallback callback) {
+ public void postVisualStateCallback(long requestId, @NonNull VisualStateCallback callback) {
checkThread();
mProvider.insertVisualStateCallback(requestId, callback);
}
@@ -1131,7 +1136,8 @@
* @param documentName The user-facing name of the printed document. See
* {@link android.print.PrintDocumentInfo}
*/
- public PrintDocumentAdapter createPrintDocumentAdapter(String documentName) {
+ @NonNull
+ public PrintDocumentAdapter createPrintDocumentAdapter(@NonNull String documentName) {
checkThread();
return mProvider.createPrintDocumentAdapter(documentName);
}
@@ -1203,6 +1209,7 @@
* and the email is set in the "extra" field of HitTestResult. Otherwise,
* HitTestResult type is set to UNKNOWN_TYPE.
*/
+ @NonNull
public HitTestResult getHitTestResult() {
checkThread();
return mProvider.getHitTestResult();
@@ -1233,7 +1240,7 @@
* @param msg the message to be dispatched with the result of the request
* as the data member with "url" as key. The result can be {@code null}.
*/
- public void requestImageRef(Message msg) {
+ public void requestImageRef(@NonNull Message msg) {
checkThread();
mProvider.requestImageRef(msg);
}
@@ -1243,10 +1250,11 @@
* passed to WebViewClient.onPageStarted because although the load for
* that URL has begun, the current page may not have changed.
*
- * @return the URL for the current page
+ * @return the URL for the current page or {@code null} if no page has been loaded
*/
@InspectableProperty(hasAttributeId = false)
@ViewDebug.ExportedProperty(category = "webview")
+ @Nullable
public String getUrl() {
checkThread();
return mProvider.getUrl();
@@ -1259,10 +1267,12 @@
* Also, there may have been redirects resulting in a different URL to that
* originally requested.
*
- * @return the URL that was originally requested for the current page
+ * @return the URL that was originally requested for the current page or
+ * {@code null} if no page has been loaded
*/
@InspectableProperty(hasAttributeId = false)
@ViewDebug.ExportedProperty(category = "webview")
+ @Nullable
public String getOriginalUrl() {
checkThread();
return mProvider.getOriginalUrl();
@@ -1272,10 +1282,11 @@
* Gets the title for the current page. This is the title of the current page
* until WebViewClient.onReceivedTitle is called.
*
- * @return the title for the current page
+ * @return the title for the current page or {@code null} if no page has been loaded
*/
@InspectableProperty(hasAttributeId = false)
@ViewDebug.ExportedProperty(category = "webview")
+ @Nullable
public String getTitle() {
checkThread();
return mProvider.getTitle();
@@ -1285,9 +1296,11 @@
* Gets the favicon for the current page. This is the favicon of the current
* page until WebViewClient.onReceivedIcon is called.
*
- * @return the favicon for the current page
+ * @return the favicon for the current page or {@code null} if the page doesn't
+ * have one or if no page has been loaded
*/
@InspectableProperty(hasAttributeId = false)
+ @Nullable
public Bitmap getFavicon() {
checkThread();
return mProvider.getFavicon();
@@ -1523,6 +1536,7 @@
* different objects. The object returned from this method will not be
* updated to reflect any new state.
*/
+ @NonNull
public WebBackForwardList copyBackForwardList() {
checkThread();
return mProvider.copyBackForwardList();
@@ -1535,7 +1549,7 @@
*
* @param listener an implementation of {@link FindListener}
*/
- public void setFindListener(FindListener listener) {
+ public void setFindListener(@Nullable FindListener listener) {
checkThread();
setupFindListenerIfNeeded();
mFindListener.mUserFindListener = listener;
@@ -1580,7 +1594,7 @@
* @param find the string to find.
* @see #setFindListener
*/
- public void findAllAsync(String find) {
+ public void findAllAsync(@NonNull String find) {
checkThread();
mProvider.findAllAsync(find);
}
@@ -1682,7 +1696,7 @@
*
* @param response the message that will be dispatched with the result
*/
- public void documentHasImages(Message response) {
+ public void documentHasImages(@NonNull Message response) {
checkThread();
mProvider.documentHasImages(response);
}
@@ -1694,7 +1708,7 @@
* @param client an implementation of WebViewClient
* @see #getWebViewClient
*/
- public void setWebViewClient(WebViewClient client) {
+ public void setWebViewClient(@NonNull WebViewClient client) {
checkThread();
mProvider.setWebViewClient(client);
}
@@ -1705,6 +1719,7 @@
* @return the WebViewClient, or a default client if not yet set
* @see #setWebViewClient
*/
+ @NonNull
public WebViewClient getWebViewClient() {
checkThread();
return mProvider.getWebViewClient();
@@ -1798,7 +1813,7 @@
*
* @param listener an implementation of DownloadListener
*/
- public void setDownloadListener(DownloadListener listener) {
+ public void setDownloadListener(@Nullable DownloadListener listener) {
checkThread();
mProvider.setDownloadListener(listener);
}
@@ -1811,7 +1826,7 @@
* @param client an implementation of WebChromeClient
* @see #getWebChromeClient
*/
- public void setWebChromeClient(WebChromeClient client) {
+ public void setWebChromeClient(@Nullable WebChromeClient client) {
checkThread();
mProvider.setWebChromeClient(client);
}
@@ -1898,7 +1913,7 @@
* context. {@code null} values are ignored.
* @param name the name used to expose the object in JavaScript
*/
- public void addJavascriptInterface(Object object, String name) {
+ public void addJavascriptInterface(@NonNull Object object, @NonNull String name) {
checkThread();
mProvider.addJavascriptInterface(object, name);
}
@@ -1926,6 +1941,7 @@
*
* @return the two message ports that form the message channel.
*/
+ @NonNull
public WebMessagePort[] createWebMessageChannel() {
checkThread();
return mProvider.createWebMessageChannel();
@@ -1950,7 +1966,7 @@
* @param message the WebMessage
* @param targetOrigin the target origin.
*/
- public void postWebMessage(WebMessage message, Uri targetOrigin) {
+ public void postWebMessage(@NonNull WebMessage message, @NonNull Uri targetOrigin) {
checkThread();
mProvider.postMessageToMainFrame(message, targetOrigin);
}
@@ -1962,6 +1978,7 @@
* @return a WebSettings object that can be used to control this WebView's
* settings
*/
+ @NonNull
public WebSettings getSettings() {
checkThread();
return mProvider.getSettings();
@@ -2026,7 +2043,7 @@
* in the current process.
* @throws IllegalArgumentException if the suffix contains a path separator.
*/
- public static void setDataDirectorySuffix(String suffix) {
+ public static void setDataDirectorySuffix(@NonNull String suffix) {
WebViewFactory.setDataDirectorySuffix(suffix);
}
diff --git a/core/java/android/widget/ArrayAdapter.java b/core/java/android/widget/ArrayAdapter.java
index 2bf1ba5..f7225d0 100644
--- a/core/java/android/widget/ArrayAdapter.java
+++ b/core/java/android/widget/ArrayAdapter.java
@@ -49,9 +49,6 @@
* To customize what type of view is used for the data object,
* override {@link #getView(int, View, ViewGroup)}
* and inflate a view resource.
- * For a code example, see
- * the <a href="https://github.com/googlesamples/android-CustomChoiceList/#readme">
- * CustomChoiceList</a> sample.
* </p>
* <p>
* For an example of using an array adapter with a ListView, see the
diff --git a/core/java/com/android/internal/app/SuspendedAppActivity.java b/core/java/com/android/internal/app/SuspendedAppActivity.java
index 712774a..33b2113 100644
--- a/core/java/com/android/internal/app/SuspendedAppActivity.java
+++ b/core/java/com/android/internal/app/SuspendedAppActivity.java
@@ -16,6 +16,8 @@
package com.android.internal.app;
+import static android.content.pm.PackageManager.MATCH_DIRECT_BOOT_AWARE;
+import static android.content.pm.PackageManager.MATCH_DIRECT_BOOT_UNAWARE;
import static android.content.res.Resources.ID_NULL;
import android.Manifest;
@@ -64,7 +66,8 @@
final Intent moreDetailsIntent = new Intent(Intent.ACTION_SHOW_SUSPENDED_APP_DETAILS)
.setPackage(suspendingPackage);
final String requiredPermission = Manifest.permission.SEND_SHOW_SUSPENDED_APP_DETAILS;
- final ResolveInfo resolvedInfo = mPm.resolveActivityAsUser(moreDetailsIntent, 0, userId);
+ final ResolveInfo resolvedInfo = mPm.resolveActivityAsUser(moreDetailsIntent,
+ MATCH_DIRECT_BOOT_UNAWARE | MATCH_DIRECT_BOOT_AWARE, userId);
if (resolvedInfo != null && resolvedInfo.activityInfo != null
&& requiredPermission.equals(resolvedInfo.activityInfo.permission)) {
moreDetailsIntent.putExtra(Intent.EXTRA_PACKAGE_NAME, suspendedPackage)
diff --git a/core/java/com/android/internal/config/sysui/SystemUiDeviceConfigFlags.java b/core/java/com/android/internal/config/sysui/SystemUiDeviceConfigFlags.java
index 58e80c7..9e23c28 100644
--- a/core/java/com/android/internal/config/sysui/SystemUiDeviceConfigFlags.java
+++ b/core/java/com/android/internal/config/sysui/SystemUiDeviceConfigFlags.java
@@ -136,13 +136,6 @@
*/
public static final String HASH_SALT_MAX_DAYS = "hash_salt_max_days";
- // Flag related to Privacy Indicators
-
- /**
- * Whether the Permissions Hub is showing.
- */
- public static final String PROPERTY_PERMISSIONS_HUB_ENABLED = "permissions_hub_enabled";
-
// Flags related to Assistant
/**
diff --git a/core/java/com/android/internal/content/NativeLibraryHelper.java b/core/java/com/android/internal/content/NativeLibraryHelper.java
index fee8345..0847fbd 100644
--- a/core/java/com/android/internal/content/NativeLibraryHelper.java
+++ b/core/java/com/android/internal/content/NativeLibraryHelper.java
@@ -33,7 +33,6 @@
import android.content.pm.PackageParser.PackageParserException;
import android.os.Build;
import android.os.SELinux;
-import android.os.SystemProperties;
import android.system.ErrnoException;
import android.system.Os;
import android.util.Slog;
@@ -444,6 +443,24 @@
return sum;
}
+ /**
+ * Configure the native library files managed by Incremental Service. Makes sure Incremental
+ * Service will create native library directories and set up native library binary files in the
+ * same structure as they are in non-incremental installations.
+ *
+ * @param pkg The package to be installed, including all the APK files.
+ * @param handle The pointer to an zip archive.
+ * @param libraryRoot The root directory of the native library files, e.g., lib/
+ * @param abiList The list of ABIs that are supported by the current device.
+ * @param useIsaSubdir Whether or not to set up a sub dir for the ISA.
+ * @return ABI code if installation succeeds or error code if installation fails.
+ */
+ public static int configureNativeBinariesForSupportedAbi(Package pkg, Handle handle,
+ File libraryRoot, String[] abiList, boolean useIsaSubdir) {
+ // TODO(b/136132412): Implement this.
+ return -1;
+ }
+
// We don't care about the other return values for now.
private static final int BITCODE_PRESENT = 1;
diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java
index 75a5804..25fa65e 100644
--- a/core/java/com/android/internal/os/BatteryStatsImpl.java
+++ b/core/java/com/android/internal/os/BatteryStatsImpl.java
@@ -58,6 +58,7 @@
import android.os.connectivity.GpsBatteryStats;
import android.os.connectivity.WifiBatteryStats;
import android.provider.Settings;
+import android.telephony.CellSignalStrength;
import android.telephony.DataConnectionRealTimeInfo;
import android.telephony.ModemActivityInfo;
import android.telephony.ModemActivityInfo.TransmitPower;
@@ -832,7 +833,7 @@
int mPhoneSignalStrengthBin = -1;
int mPhoneSignalStrengthBinRaw = -1;
final StopwatchTimer[] mPhoneSignalStrengthsTimer =
- new StopwatchTimer[SignalStrength.NUM_SIGNAL_STRENGTH_BINS];
+ new StopwatchTimer[CellSignalStrength.getNumSignalStrengthLevels()];
StopwatchTimer mPhoneSignalScanningTimer;
@@ -1870,6 +1871,7 @@
mCount = computeCurrentCountLocked();
mUnpluggedReportedTotalTime = mCurrentReportedTotalTime = 0;
mUnpluggedReportedCount = mCurrentReportedCount = 0;
+ mTrackingReportedValues = false;
}
public void setUpdateVersion(int version) {
@@ -5130,7 +5132,7 @@
void stopAllPhoneSignalStrengthTimersLocked(int except) {
final long elapsedRealtime = mClocks.elapsedRealtime();
- for (int i = 0; i < SignalStrength.NUM_SIGNAL_STRENGTH_BINS; i++) {
+ for (int i = 0; i < CellSignalStrength.getNumSignalStrengthLevels(); i++) {
if (i == except) {
continue;
}
@@ -5145,7 +5147,7 @@
// In this case we will always be STATE_OUT_OF_SERVICE, so need
// to infer that we are scanning from other data.
if (state == ServiceState.STATE_OUT_OF_SERVICE
- && signalBin > SignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN) {
+ && signalBin > CellSignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN) {
state = ServiceState.STATE_IN_SERVICE;
}
}
@@ -5168,7 +5170,7 @@
// In this case we will always be STATE_OUT_OF_SERVICE, so need
// to infer that we are scanning from other data.
if (state == ServiceState.STATE_OUT_OF_SERVICE
- && strengthBin > SignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN) {
+ && strengthBin > CellSignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN) {
state = ServiceState.STATE_IN_SERVICE;
}
}
@@ -5185,7 +5187,7 @@
// bin and have the scanning bit set.
} else if (state == ServiceState.STATE_OUT_OF_SERVICE) {
scanning = true;
- strengthBin = SignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
+ strengthBin = CellSignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
if (!mPhoneSignalScanningTimer.isRunningLocked()) {
mHistoryCur.states |= HistoryItem.STATE_PHONE_SCANNING_FLAG;
newHistory = true;
@@ -9785,7 +9787,7 @@
mDeviceLightIdlingTimer = new StopwatchTimer(mClocks, null, -15, null, mOnBatteryTimeBase);
mDeviceIdlingTimer = new StopwatchTimer(mClocks, null, -12, null, mOnBatteryTimeBase);
mPhoneOnTimer = new StopwatchTimer(mClocks, null, -3, null, mOnBatteryTimeBase);
- for (int i=0; i<SignalStrength.NUM_SIGNAL_STRENGTH_BINS; i++) {
+ for (int i = 0; i < CellSignalStrength.getNumSignalStrengthLevels(); i++) {
mPhoneSignalStrengthsTimer[i] = new StopwatchTimer(mClocks, null, -200-i, null,
mOnBatteryTimeBase);
}
@@ -10494,7 +10496,7 @@
mFlashlightOnTimer.reset(false);
mCameraOnTimer.reset(false);
mBluetoothScanTimer.reset(false);
- for (int i=0; i<SignalStrength.NUM_SIGNAL_STRENGTH_BINS; i++) {
+ for (int i = 0; i < CellSignalStrength.getNumSignalStrengthLevels(); i++) {
mPhoneSignalStrengthsTimer[i].reset(false);
}
mPhoneSignalScanningTimer.reset(false);
@@ -10800,10 +10802,10 @@
mHasWifiReporting = true;
// Measured in mAms
- final long txTimeMs = info.getControllerTxTimeMillis();
- final long rxTimeMs = info.getControllerRxTimeMillis();
- final long scanTimeMs = info.getControllerScanTimeMillis();
- final long idleTimeMs = info.getControllerIdleTimeMillis();
+ final long txTimeMs = info.getControllerTxDurationMillis();
+ final long rxTimeMs = info.getControllerRxDurationMillis();
+ final long scanTimeMs = info.getControllerScanDurationMillis();
+ final long idleTimeMs = info.getControllerIdleDurationMillis();
final long totalTimeMs = txTimeMs + rxTimeMs + idleTimeMs;
long leftOverRxTimeMs = rxTimeMs;
@@ -10946,13 +10948,14 @@
// Update WiFi controller stats.
- mWifiActivity.getRxTimeCounter().addCountLocked(info.getControllerRxTimeMillis());
+ mWifiActivity.getRxTimeCounter().addCountLocked(
+ info.getControllerRxDurationMillis());
mWifiActivity.getTxTimeCounters()[0].addCountLocked(
- info.getControllerTxTimeMillis());
+ info.getControllerTxDurationMillis());
mWifiActivity.getScanTimeCounter().addCountLocked(
- info.getControllerScanTimeMillis());
+ info.getControllerScanDurationMillis());
mWifiActivity.getIdleTimeCounter().addCountLocked(
- info.getControllerIdleTimeMillis());
+ info.getControllerIdleDurationMillis());
// POWER_WIFI_CONTROLLER_OPERATING_VOLTAGE is measured in mV, so convert to V.
final double opVolt = mPowerProfile.getAveragePower(
@@ -10960,7 +10963,7 @@
if (opVolt != 0) {
// We store the power drain as mAms.
mWifiActivity.getPowerCounter().addCountLocked(
- (long) (info.getControllerEnergyUsed() / opVolt));
+ (long) (info.getControllerEnergyUsedMicroJoules() / opVolt));
}
// Converting uWs to mAms.
// Conversion: (uWs * (1000ms / 1s) * (1mW / 1000uW)) / mV = mAms
@@ -11055,7 +11058,7 @@
mPowerProfile.getAveragePower(PowerProfile.POWER_MODEM_CONTROLLER_RX);
List<TransmitPower> txPowerInfo = deltaInfo.getTransmitPowerInfo();
for (int i = 0; i < Math.min(txPowerInfo.size(),
- SignalStrength.NUM_SIGNAL_STRENGTH_BINS); i++) {
+ CellSignalStrength.getNumSignalStrengthLevels()); i++) {
energyUsed += txPowerInfo.get(i).getTimeInMillis() * mPowerProfile
.getAveragePower(PowerProfile.POWER_MODEM_CONTROLLER_TX, i);
}
@@ -12606,7 +12609,8 @@
for (int i = 0; i < timeInRatMs.length; i++) {
timeInRatMs[i] = getPhoneDataConnectionTime(i, rawRealTime, which) / 1000;
}
- long[] timeInRxSignalStrengthLevelMs = new long[SignalStrength.NUM_SIGNAL_STRENGTH_BINS];
+ long[] timeInRxSignalStrengthLevelMs =
+ new long[CellSignalStrength.getNumSignalStrengthLevels()];
for (int i = 0; i < timeInRxSignalStrengthLevelMs.length; i++) {
timeInRxSignalStrengthLevelMs[i]
= getPhoneSignalStrengthTime(i, rawRealTime, which) / 1000;
@@ -13614,7 +13618,7 @@
mDeviceLightIdlingTimer.readSummaryFromParcelLocked(in);
mDeviceIdlingTimer.readSummaryFromParcelLocked(in);
mPhoneOnTimer.readSummaryFromParcelLocked(in);
- for (int i=0; i<SignalStrength.NUM_SIGNAL_STRENGTH_BINS; i++) {
+ for (int i = 0; i < CellSignalStrength.getNumSignalStrengthLevels(); i++) {
mPhoneSignalStrengthsTimer[i].readSummaryFromParcelLocked(in);
}
mPhoneSignalScanningTimer.readSummaryFromParcelLocked(in);
@@ -14099,7 +14103,7 @@
mDeviceLightIdlingTimer.writeSummaryFromParcelLocked(out, NOWREAL_SYS);
mDeviceIdlingTimer.writeSummaryFromParcelLocked(out, NOWREAL_SYS);
mPhoneOnTimer.writeSummaryFromParcelLocked(out, NOWREAL_SYS);
- for (int i=0; i<SignalStrength.NUM_SIGNAL_STRENGTH_BINS; i++) {
+ for (int i = 0; i < CellSignalStrength.getNumSignalStrengthLevels(); i++) {
mPhoneSignalStrengthsTimer[i].writeSummaryFromParcelLocked(out, NOWREAL_SYS);
}
mPhoneSignalScanningTimer.writeSummaryFromParcelLocked(out, NOWREAL_SYS);
@@ -14577,7 +14581,7 @@
mOnBatteryTimeBase, in);
mDeviceIdlingTimer = new StopwatchTimer(mClocks, null, -12, null, mOnBatteryTimeBase, in);
mPhoneOnTimer = new StopwatchTimer(mClocks, null, -3, null, mOnBatteryTimeBase, in);
- for (int i=0; i<SignalStrength.NUM_SIGNAL_STRENGTH_BINS; i++) {
+ for (int i = 0; i < CellSignalStrength.getNumSignalStrengthLevels(); i++) {
mPhoneSignalStrengthsTimer[i] = new StopwatchTimer(mClocks, null, -200-i,
null, mOnBatteryTimeBase, in);
}
@@ -14796,7 +14800,7 @@
mDeviceLightIdlingTimer.writeToParcel(out, uSecRealtime);
mDeviceIdlingTimer.writeToParcel(out, uSecRealtime);
mPhoneOnTimer.writeToParcel(out, uSecRealtime);
- for (int i=0; i<SignalStrength.NUM_SIGNAL_STRENGTH_BINS; i++) {
+ for (int i = 0; i < CellSignalStrength.getNumSignalStrengthLevels(); i++) {
mPhoneSignalStrengthsTimer[i].writeToParcel(out, uSecRealtime);
}
mPhoneSignalScanningTimer.writeToParcel(out, uSecRealtime);
@@ -14987,7 +14991,7 @@
mDeviceIdlingTimer.logState(pr, " ");
pr.println("*** Phone timer:");
mPhoneOnTimer.logState(pr, " ");
- for (int i=0; i<SignalStrength.NUM_SIGNAL_STRENGTH_BINS; i++) {
+ for (int i = 0; i < CellSignalStrength.getNumSignalStrengthLevels(); i++) {
pr.println("*** Phone signal strength #" + i + ":");
mPhoneSignalStrengthsTimer[i].logState(pr, " ");
}
diff --git a/core/java/com/android/internal/os/MobileRadioPowerCalculator.java b/core/java/com/android/internal/os/MobileRadioPowerCalculator.java
index 9e8f06d..7c77d28 100644
--- a/core/java/com/android/internal/os/MobileRadioPowerCalculator.java
+++ b/core/java/com/android/internal/os/MobileRadioPowerCalculator.java
@@ -16,14 +16,14 @@
package com.android.internal.os;
import android.os.BatteryStats;
-import android.telephony.SignalStrength;
+import android.telephony.CellSignalStrength;
import android.util.Log;
public class MobileRadioPowerCalculator extends PowerCalculator {
private static final String TAG = "MobileRadioPowerController";
private static final boolean DEBUG = BatteryStatsHelper.DEBUG;
private final double mPowerRadioOn;
- private final double[] mPowerBins = new double[SignalStrength.NUM_SIGNAL_STRENGTH_BINS];
+ private final double[] mPowerBins = new double[CellSignalStrength.getNumSignalStrengthLevels()];
private final double mPowerScan;
private BatteryStats mStats;
private long mTotalAppMobileActiveMs = 0;
diff --git a/core/java/com/android/internal/os/Zygote.java b/core/java/com/android/internal/os/Zygote.java
index f3de34b..fbacdd7 100644
--- a/core/java/com/android/internal/os/Zygote.java
+++ b/core/java/com/android/internal/os/Zygote.java
@@ -956,9 +956,9 @@
// This function is called from native code in com_android_internal_os_Zygote.cpp
@SuppressWarnings("unused")
- private static void callPostForkSystemServerHooks() {
+ private static void callPostForkSystemServerHooks(int runtimeFlags) {
// SystemServer specific post fork hooks run before child post fork hooks.
- ZygoteHooks.postForkSystemServer();
+ ZygoteHooks.postForkSystemServer(runtimeFlags);
}
// This function is called from native code in com_android_internal_os_Zygote.cpp
diff --git a/core/java/com/android/internal/os/ZygoteInit.java b/core/java/com/android/internal/os/ZygoteInit.java
index 865ec27..9ee79ea 100644
--- a/core/java/com/android/internal/os/ZygoteInit.java
+++ b/core/java/com/android/internal/os/ZygoteInit.java
@@ -254,18 +254,6 @@
InputStream is;
try {
- // If we are profiling the boot image, avoid preloading classes.
- // Can't use device_config since we are the zygote.
- String prop = SystemProperties.get(
- "persist.device_config.runtime_native_boot.profilebootclasspath", "");
- // Might be empty if the property is unset since the default is "".
- if (prop.length() == 0) {
- prop = SystemProperties.get("dalvik.vm.profilebootclasspath", "");
- }
- if ("true".equals(prop)) {
- return;
- }
-
is = new FileInputStream(PRELOADED_CLASSES);
} catch (FileNotFoundException e) {
Log.e(TAG, "Couldn't find " + PRELOADED_CLASSES + ".");
@@ -345,6 +333,22 @@
runtime.preloadDexCaches();
Trace.traceEnd(Trace.TRACE_TAG_DALVIK);
+ // If we are profiling the boot image, reset the Jit counters after preloading the
+ // classes. We want to preload for performance, and we can use method counters to
+ // infer what clases are used after calling resetJitCounters, for profile purposes.
+ // Can't use device_config since we are the zygote.
+ String prop = SystemProperties.get(
+ "persist.device_config.runtime_native_boot.profilebootclasspath", "");
+ // Might be empty if the property is unset since the default is "".
+ if (prop.length() == 0) {
+ prop = SystemProperties.get("dalvik.vm.profilebootclasspath", "");
+ }
+ if ("true".equals(prop)) {
+ Trace.traceBegin(Trace.TRACE_TAG_DALVIK, "ResetJitCounters");
+ runtime.resetJitCounters();
+ Trace.traceEnd(Trace.TRACE_TAG_DALVIK);
+ }
+
// Bring back root. We'll need it later if we're in the zygote.
if (droppedPriviliges) {
try {
diff --git a/core/java/com/android/internal/policy/PhoneWindow.java b/core/java/com/android/internal/policy/PhoneWindow.java
index 227ef28..764d4a59 100644
--- a/core/java/com/android/internal/policy/PhoneWindow.java
+++ b/core/java/com/android/internal/policy/PhoneWindow.java
@@ -3109,8 +3109,9 @@
// On TVs, if the app doesn't implement search, we want to launch assist.
Bundle args = new Bundle();
args.putInt(Intent.EXTRA_ASSIST_INPUT_DEVICE_ID, event.getDeviceId());
- return ((SearchManager)getContext().getSystemService(Context.SEARCH_SERVICE))
- .launchLegacyAssist(null, getContext().getUserId(), args);
+ ((SearchManager) getContext().getSystemService(Context.SEARCH_SERVICE))
+ .launchAssist(args);
+ return true;
}
return result;
}
diff --git a/core/java/com/android/internal/policy/PipSnapAlgorithm.java b/core/java/com/android/internal/policy/PipSnapAlgorithm.java
index 1afc67b..e3623c5 100644
--- a/core/java/com/android/internal/policy/PipSnapAlgorithm.java
+++ b/core/java/com/android/internal/policy/PipSnapAlgorithm.java
@@ -360,6 +360,28 @@
}
/**
+ * @return the adjusted size so that it conforms to the given aspectRatio, ensuring that the
+ * minimum edge is at least minEdgeSize.
+ */
+ public Size getSizeForAspectRatio(Size size, float aspectRatio, float minEdgeSize) {
+ final int smallestSize = Math.min(size.getWidth(), size.getHeight());
+ final int minSize = (int) Math.max(minEdgeSize, smallestSize);
+
+ final int width;
+ final int height;
+ if (aspectRatio <= 1) {
+ // Portrait, width is the minimum size.
+ width = minSize;
+ height = Math.round(width / aspectRatio);
+ } else {
+ // Landscape, height is the minimum size
+ height = minSize;
+ width = Math.round(height * aspectRatio);
+ }
+ return new Size(width, height);
+ }
+
+ /**
* @return the closest point in {@param points} to the given {@param x} and {@param y}.
*/
private Point findClosestPoint(int x, int y, Point[] points) {
diff --git a/core/java/com/android/internal/telephony/IPhoneStateListener.aidl b/core/java/com/android/internal/telephony/IPhoneStateListener.aidl
index 084a3cc..01f5743 100644
--- a/core/java/com/android/internal/telephony/IPhoneStateListener.aidl
+++ b/core/java/com/android/internal/telephony/IPhoneStateListener.aidl
@@ -21,7 +21,6 @@
import android.telephony.CellInfo;
import android.telephony.DataConnectionRealTimeInfo;
import android.telephony.PhoneCapability;
-import android.telephony.PhysicalChannelConfig;
import android.telephony.PreciseCallState;
import android.telephony.PreciseDataConnectionState;
import android.telephony.ServiceState;
@@ -44,7 +43,6 @@
void onDataConnectionStateChanged(int state, int networkType);
void onDataActivity(int direction);
void onSignalStrengthsChanged(in SignalStrength signalStrength);
- void onPhysicalChannelConfigurationChanged(in List<PhysicalChannelConfig> configs);
void onOtaspChanged(in int otaspMode);
void onCellInfoChanged(in List<CellInfo> cellInfo);
void onPreciseCallStateChanged(in PreciseCallState callState);
diff --git a/core/java/com/android/internal/telephony/ITelephonyRegistry.aidl b/core/java/com/android/internal/telephony/ITelephonyRegistry.aidl
index 9ae0ba5..2f34aa0 100644
--- a/core/java/com/android/internal/telephony/ITelephonyRegistry.aidl
+++ b/core/java/com/android/internal/telephony/ITelephonyRegistry.aidl
@@ -24,7 +24,6 @@
import android.telephony.CellInfo;
import android.telephony.ims.ImsReasonInfo;
import android.telephony.PhoneCapability;
-import android.telephony.PhysicalChannelConfig;
import android.telephony.ServiceState;
import android.telephony.SignalStrength;
import android.telephony.emergency.EmergencyNumber;
@@ -78,8 +77,6 @@
void notifyOtaspChanged(in int subId, in int otaspMode);
@UnsupportedAppUsage
void notifyCellInfo(in List<CellInfo> cellInfo);
- void notifyPhysicalChannelConfigurationForSubscriber(in int phoneId, in int subId,
- in List<PhysicalChannelConfig> configs);
void notifyPreciseCallState(int phoneId, int subId, int ringingCallState,
int foregroundCallState, int backgroundCallState);
void notifyDisconnectCause(int phoneId, int subId, int disconnectCause,
diff --git a/core/java/com/android/internal/util/BitUtils.java b/core/java/com/android/internal/util/BitUtils.java
index b4bab80..154ea52 100644
--- a/core/java/com/android/internal/util/BitUtils.java
+++ b/core/java/com/android/internal/util/BitUtils.java
@@ -68,9 +68,9 @@
int[] result = new int[size];
int index = 0;
int bitPos = 0;
- while (val > 0) {
+ while (val != 0) {
if ((val & 1) == 1) result[index++] = bitPos;
- val = val >> 1;
+ val = val >>> 1;
bitPos++;
}
return result;
@@ -79,7 +79,7 @@
public static long packBits(int[] bits) {
long packed = 0;
for (int b : bits) {
- packed |= (1 << b);
+ packed |= (1L << b);
}
return packed;
}
diff --git a/core/jni/Android.bp b/core/jni/Android.bp
index 51f8fcc..148b0a2 100644
--- a/core/jni/Android.bp
+++ b/core/jni/Android.bp
@@ -110,6 +110,7 @@
"android_view_InputEventReceiver.cpp",
"android_view_InputEventSender.cpp",
"android_view_InputQueue.cpp",
+ "android_view_FrameMetricsObserver.cpp",
"android_view_KeyCharacterMap.cpp",
"android_view_KeyEvent.cpp",
"android_view_MotionEvent.cpp",
@@ -424,9 +425,9 @@
android: {
srcs: [ // sources that depend on android only libraries
"android/graphics/apex/android_canvas.cpp",
+ "android/graphics/apex/renderthread.cpp",
"android/graphics/apex/jni_runtime.cpp",
- "android_view_FrameMetricsObserver.cpp",
"android_view_TextureLayer.cpp",
"android_view_ThreadedRenderer.cpp",
"android/graphics/BitmapRegionDecoder.cpp",
diff --git a/core/jni/android/graphics/Bitmap.cpp b/core/jni/android/graphics/Bitmap.cpp
index 2dec4b3..984f93c 100755
--- a/core/jni/android/graphics/Bitmap.cpp
+++ b/core/jni/android/graphics/Bitmap.cpp
@@ -12,7 +12,6 @@
#include "SkWebpEncoder.h"
#include "android_os_Parcel.h"
-#include "android_util_Binder.h"
#include "android_nio_utils.h"
#include "CreateJavaOutputStreamAdaptor.h"
#include <hwui/Paint.h>
diff --git a/core/jni/android/graphics/BitmapRegionDecoder.cpp b/core/jni/android/graphics/BitmapRegionDecoder.cpp
index 6ffa72a..f18632d 100644
--- a/core/jni/android/graphics/BitmapRegionDecoder.cpp
+++ b/core/jni/android/graphics/BitmapRegionDecoder.cpp
@@ -25,18 +25,13 @@
#include "SkBitmapRegionDecoder.h"
#include "SkCodec.h"
#include "SkData.h"
-#include "SkUtils.h"
-#include "SkPixelRef.h"
#include "SkStream.h"
-#include "android_nio_utils.h"
-#include "android_util_Binder.h"
#include "core_jni_helpers.h"
#include <HardwareBitmapUploader.h>
#include <nativehelper/JNIHelp.h>
#include <androidfw/Asset.h>
-#include <binder/Parcel.h>
#include <jni.h>
#include <sys/stat.h>
diff --git a/core/jni/android/graphics/CreateJavaOutputStreamAdaptor.cpp b/core/jni/android/graphics/CreateJavaOutputStreamAdaptor.cpp
index 7a9fea7..4de6c86 100644
--- a/core/jni/android/graphics/CreateJavaOutputStreamAdaptor.cpp
+++ b/core/jni/android/graphics/CreateJavaOutputStreamAdaptor.cpp
@@ -7,6 +7,7 @@
#include "Utils.h"
#include <nativehelper/JNIHelp.h>
+#include <log/log.h>
#include <memory>
static jmethodID gInputStream_readMethodID;
diff --git a/core/jni/android/graphics/Path.cpp b/core/jni/android/graphics/Path.cpp
index d73affc..4814452 100644
--- a/core/jni/android/graphics/Path.cpp
+++ b/core/jni/android/graphics/Path.cpp
@@ -132,14 +132,14 @@
static void addRect(JNIEnv* env, jclass clazz, jlong objHandle,
jfloat left, jfloat top, jfloat right, jfloat bottom, jint dirHandle) {
SkPath* obj = reinterpret_cast<SkPath*>(objHandle);
- SkPath::Direction dir = static_cast<SkPath::Direction>(dirHandle);
+ SkPathDirection dir = static_cast<SkPathDirection>(dirHandle);
obj->addRect(left, top, right, bottom, dir);
}
static void addOval(JNIEnv* env, jclass clazz, jlong objHandle,
jfloat left, jfloat top, jfloat right, jfloat bottom, jint dirHandle) {
SkPath* obj = reinterpret_cast<SkPath*>(objHandle);
- SkPath::Direction dir = static_cast<SkPath::Direction>(dirHandle);
+ SkPathDirection dir = static_cast<SkPathDirection>(dirHandle);
SkRect oval = SkRect::MakeLTRB(left, top, right, bottom);
obj->addOval(oval, dir);
}
@@ -147,7 +147,7 @@
static void addCircle(JNIEnv* env, jclass clazz, jlong objHandle, jfloat x, jfloat y,
jfloat radius, jint dirHandle) {
SkPath* obj = reinterpret_cast<SkPath*>(objHandle);
- SkPath::Direction dir = static_cast<SkPath::Direction>(dirHandle);
+ SkPathDirection dir = static_cast<SkPathDirection>(dirHandle);
obj->addCircle(x, y, radius, dir);
}
@@ -162,7 +162,7 @@
jfloat right, jfloat bottom, jfloat rx, jfloat ry, jint dirHandle) {
SkRect rect = SkRect::MakeLTRB(left, top, right, bottom);
SkPath* obj = reinterpret_cast<SkPath*>(objHandle);
- SkPath::Direction dir = static_cast<SkPath::Direction>(dirHandle);
+ SkPathDirection dir = static_cast<SkPathDirection>(dirHandle);
obj->addRoundRect(rect, rx, ry, dir);
}
@@ -170,7 +170,7 @@
jfloat right, jfloat bottom, jfloatArray array, jint dirHandle) {
SkRect rect = SkRect::MakeLTRB(left, top, right, bottom);
SkPath* obj = reinterpret_cast<SkPath*>(objHandle);
- SkPath::Direction dir = static_cast<SkPath::Direction>(dirHandle);
+ SkPathDirection dir = static_cast<SkPathDirection>(dirHandle);
AutoJavaFloatArray afa(env, array, 8);
#ifdef SK_SCALAR_IS_FLOAT
const float* src = afa.ptr();
@@ -419,7 +419,7 @@
float errorSquared = acceptableError * acceptableError;
float errorConic = acceptableError / 2; // somewhat arbitrary
- while ((verb = pathIter.next(points, false)) != SkPath::kDone_Verb) {
+ while ((verb = pathIter.next(points)) != SkPath::kDone_Verb) {
createVerbSegments(pathIter, verb, points, segmentPoints, lengths,
errorSquared, errorConic);
}
@@ -497,12 +497,12 @@
static jint getFillType(CRITICAL_JNI_PARAMS_COMMA jlong objHandle) {
SkPath* obj = reinterpret_cast<SkPath*>(objHandle);
- return obj->getFillType();
+ return static_cast<int>(obj->getFillType());
}
static void setFillType(CRITICAL_JNI_PARAMS_COMMA jlong pathHandle, jint ftHandle) {;
SkPath* path = reinterpret_cast<SkPath*>(pathHandle);
- SkPath::FillType ft = static_cast<SkPath::FillType>(ftHandle);
+ SkPathFillType ft = static_cast<SkPathFillType>(ftHandle);
path->setFillType(ft);
}
};
@@ -555,8 +555,8 @@
int register_android_graphics_Path(JNIEnv* env) {
return RegisterMethodsOrDie(env, "android/graphics/Path", methods, NELEM(methods));
- static_assert(0 == SkPath::kCW_Direction, "direction_mismatch");
- static_assert(1 == SkPath::kCCW_Direction, "direction_mismatch");
+ static_assert(0 == (int)SkPathDirection::kCW, "direction_mismatch");
+ static_assert(1 == (int)SkPathDirection::kCCW, "direction_mismatch");
}
}
diff --git a/core/jni/android/graphics/Shader.cpp b/core/jni/android/graphics/Shader.cpp
index bd28fe0..6095ffa 100644
--- a/core/jni/android/graphics/Shader.cpp
+++ b/core/jni/android/graphics/Shader.cpp
@@ -5,6 +5,7 @@
#include "SkShader.h"
#include "SkBlendMode.h"
#include "core_jni_helpers.h"
+#include "src/shaders/SkRTShader.h"
#include <jni.h>
@@ -212,6 +213,44 @@
///////////////////////////////////////////////////////////////////////////////////////////////
+static jlong RuntimeShader_create(JNIEnv* env, jobject, jlong shaderFactory, jlong matrixPtr,
+ jbyteArray inputs, jlong colorSpaceHandle) {
+ SkRuntimeShaderFactory* factory = reinterpret_cast<SkRuntimeShaderFactory*>(shaderFactory);
+ AutoJavaByteArray arInputs(env, inputs);
+
+ sk_sp<SkData> fData;
+ fData = SkData::MakeWithCopy(arInputs.ptr(), arInputs.length());
+ const SkMatrix* matrix = reinterpret_cast<const SkMatrix*>(matrixPtr);
+ sk_sp<SkShader> shader = factory->make(fData, matrix);
+ ThrowIAE_IfNull(env, shader);
+
+ return reinterpret_cast<jlong>(shader.release());
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////
+
+static jlong RuntimeShader_createShaderFactory(JNIEnv* env, jobject, jstring sksl,
+ jboolean isOpaque) {
+ ScopedUtfChars strSksl(env, sksl);
+ SkRuntimeShaderFactory* shaderFactory = new SkRuntimeShaderFactory(SkString(strSksl.c_str()),
+ isOpaque == JNI_TRUE);
+ ThrowIAE_IfNull(env, shaderFactory);
+
+ return reinterpret_cast<jlong>(shaderFactory);
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////
+
+static void RuntimeShader_delete(SkRuntimeShaderFactory* shaderFactory) {
+ delete shaderFactory;
+}
+
+static jlong RuntimeShader_getNativeFinalizer(JNIEnv*, jobject) {
+ return static_cast<jlong>(reinterpret_cast<uintptr_t>(&RuntimeShader_delete));
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////
+
static const JNINativeMethod gColorMethods[] = {
{ "nativeRGBToHSV", "(III[F)V", (void*)Color_RGBToHSV },
{ "nativeHSVToColor", "(I[F)I", (void*)Color_HSVToColor }
@@ -241,6 +280,13 @@
{ "nativeCreate", "(JJJI)J", (void*)ComposeShader_create },
};
+static const JNINativeMethod gRuntimeShaderMethods[] = {
+ { "nativeGetFinalizer", "()J", (void*)RuntimeShader_getNativeFinalizer },
+ { "nativeCreate", "(JJ[BJ)J", (void*)RuntimeShader_create },
+ { "nativeCreateShaderFactory", "(Ljava/lang/String;Z)J",
+ (void*)RuntimeShader_createShaderFactory },
+};
+
int register_android_graphics_Shader(JNIEnv* env)
{
android::RegisterMethodsOrDie(env, "android/graphics/Color", gColorMethods,
@@ -257,6 +303,8 @@
NELEM(gSweepGradientMethods));
android::RegisterMethodsOrDie(env, "android/graphics/ComposeShader", gComposeShaderMethods,
NELEM(gComposeShaderMethods));
+ android::RegisterMethodsOrDie(env, "android/graphics/RuntimeShader", gRuntimeShaderMethods,
+ NELEM(gRuntimeShaderMethods));
return 0;
}
diff --git a/core/jni/android/graphics/Typeface.cpp b/core/jni/android/graphics/Typeface.cpp
index 9603a10..4ce56ba 100644
--- a/core/jni/android/graphics/Typeface.cpp
+++ b/core/jni/android/graphics/Typeface.cpp
@@ -22,8 +22,6 @@
#include <nativehelper/ScopedPrimitiveArray.h>
#include <nativehelper/ScopedUtfChars.h>
#include "SkTypeface.h"
-#include <android_runtime/android_util_AssetManager.h>
-#include <androidfw/AssetManager.h>
#include <hwui/Typeface.h>
#include <minikin/FontFamily.h>
#include <minikin/SystemFonts.h>
diff --git a/core/jni/android/graphics/Utils.cpp b/core/jni/android/graphics/Utils.cpp
index 462d052..17c194d 100644
--- a/core/jni/android/graphics/Utils.cpp
+++ b/core/jni/android/graphics/Utils.cpp
@@ -18,6 +18,8 @@
#include "SkUtils.h"
#include "SkData.h"
+#include <log/log.h>
+
using namespace android;
AssetStreamAdaptor::AssetStreamAdaptor(Asset* asset)
diff --git a/core/jni/android/graphics/Utils.h b/core/jni/android/graphics/Utils.h
index ac291ea..8925517 100644
--- a/core/jni/android/graphics/Utils.h
+++ b/core/jni/android/graphics/Utils.h
@@ -19,8 +19,6 @@
#include "SkStream.h"
-#include "android_util_Binder.h"
-
#include <jni.h>
#include <androidfw/Asset.h>
diff --git a/core/jni/android/graphics/apex/include/android/graphics/renderthread.h b/core/jni/android/graphics/apex/include/android/graphics/renderthread.h
new file mode 100644
index 0000000..0a790af
--- /dev/null
+++ b/core/jni/android/graphics/apex/include/android/graphics/renderthread.h
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2019 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.
+ */
+#ifndef ANDROID_GRAPHICS_RENDERTHREAD_H
+#define ANDROID_GRAPHICS_RENDERTHREAD_H
+
+#include <sys/cdefs.h>
+
+__BEGIN_DECLS
+
+/**
+ * Dumps a textual representation of the graphics stats for this process.
+ * @param fd The file descriptor that the available graphics stats will be appended to. The
+ * function requires a valid fd, but does not persist or assume ownership of the fd
+ * outside the scope of this function.
+ */
+void ARenderThread_dumpGraphicsMemory(int fd);
+
+__END_DECLS
+
+#endif // ANDROID_GRAPHICS_RENDERTHREAD_H
diff --git a/core/jni/android/graphics/apex/renderthread.cpp b/core/jni/android/graphics/apex/renderthread.cpp
new file mode 100644
index 0000000..5d26afe
--- /dev/null
+++ b/core/jni/android/graphics/apex/renderthread.cpp
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2019 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.
+ */
+
+#include "android/graphics/renderthread.h"
+
+#include <renderthread/RenderProxy.h>
+
+using namespace android;
+
+void ARenderThread_dumpGraphicsMemory(int fd) {
+ uirenderer::renderthread::RenderProxy::dumpGraphicsMemory(fd);
+}
diff --git a/core/jni/android_app_ActivityThread.cpp b/core/jni/android_app_ActivityThread.cpp
index ca8b8de..5aa684d 100644
--- a/core/jni/android_app_ActivityThread.cpp
+++ b/core/jni/android_app_ActivityThread.cpp
@@ -17,13 +17,11 @@
#include "jni.h"
#include <nativehelper/JNIHelp.h>
-#include <minikin/Layout.h>
-#include <renderthread/RenderProxy.h>
-
#include "core_jni_helpers.h"
#include <unistd.h>
#include <bionic/malloc.h>
+#include <android/graphics/renderthread.h>
namespace android {
@@ -35,7 +33,7 @@
static void
android_app_ActivityThread_dumpGraphics(JNIEnv* env, jobject clazz, jobject javaFileDescriptor) {
int fd = jniGetFDFromFileDescriptor(env, javaFileDescriptor);
- android::uirenderer::renderthread::RenderProxy::dumpGraphicsMemory(fd);
+ ARenderThread_dumpGraphicsMemory(fd);
}
static void android_app_ActivityThread_initZygoteChildHeapProfiling(JNIEnv* env, jobject clazz) {
diff --git a/core/jni/android_hardware_camera2_legacy_LegacyCameraDevice.cpp b/core/jni/android_hardware_camera2_legacy_LegacyCameraDevice.cpp
index cb7f0dd..f2a51ad 100644
--- a/core/jni/android_hardware_camera2_legacy_LegacyCameraDevice.cpp
+++ b/core/jni/android_hardware_camera2_legacy_LegacyCameraDevice.cpp
@@ -396,9 +396,8 @@
}
static sp<ANativeWindow> getSurfaceTextureNativeWindow(JNIEnv* env, jobject thiz) {
- sp<SurfaceTexture> surfaceTexture(SurfaceTexture_getSurfaceTexture(env, thiz));
sp<IGraphicBufferProducer> producer(SurfaceTexture_getProducer(env, thiz));
- sp<Surface> surfaceTextureClient(surfaceTexture != NULL ? new Surface(producer) : NULL);
+ sp<Surface> surfaceTextureClient(producer != NULL ? new Surface(producer) : NULL);
return surfaceTextureClient;
}
diff --git a/core/jni/android_util_Binder.cpp b/core/jni/android_util_Binder.cpp
index 2232393..0992beb 100644
--- a/core/jni/android_util_Binder.cpp
+++ b/core/jni/android_util_Binder.cpp
@@ -30,12 +30,13 @@
#include <unistd.h>
#include <android-base/stringprintf.h>
-#include <binder/IInterface.h>
-#include <binder/IServiceManager.h>
-#include <binder/IPCThreadState.h>
-#include <binder/Parcel.h>
#include <binder/BpBinder.h>
+#include <binder/IInterface.h>
+#include <binder/IPCThreadState.h>
+#include <binder/IServiceManager.h>
+#include <binder/Parcel.h>
#include <binder/ProcessState.h>
+#include <binder/Stability.h>
#include <cutils/atomic.h>
#include <log/log.h>
#include <utils/KeyedVector.h>
@@ -459,6 +460,9 @@
sp<JavaBBinder> b = mBinder.promote();
if (b == NULL) {
b = new JavaBBinder(env, obj);
+ if (mVintf) {
+ ::android::internal::Stability::markVintf(b.get());
+ }
mBinder = b;
ALOGV("Creating JavaBinder %p (refs %p) for Object %p, weakCount=%" PRId32 "\n",
b.get(), b->getWeakRefs(), obj, b->getWeakRefs()->getWeakCount());
@@ -473,9 +477,18 @@
return mBinder.promote();
}
+ void markVintf() {
+ mVintf = true;
+ }
+
private:
Mutex mLock;
wp<JavaBBinder> mBinder;
+
+ // in the future, we might condense this into int32_t stability, or if there
+ // is too much binder state here, we can think about making JavaBBinder an
+ // sp here (avoid recreating it)
+ bool mVintf = false;
};
// ----------------------------------------------------------------------------
@@ -965,6 +978,12 @@
IPCThreadState::self()->restoreCallingWorkSource(token);
}
+static void android_os_Binder_markVintfStability(JNIEnv* env, jobject clazz) {
+ JavaBBinderHolder* jbh =
+ (JavaBBinderHolder*) env->GetLongField(clazz, gBinderOffsets.mObject);
+ jbh->markVintf();
+}
+
static void android_os_Binder_flushPendingCommands(JNIEnv* env, jobject clazz)
{
IPCThreadState::self()->flushCommands();
@@ -1041,6 +1060,7 @@
// @CriticalNative
{ "clearCallingWorkSource", "()J", (void*)android_os_Binder_clearCallingWorkSource },
{ "restoreCallingWorkSource", "(J)V", (void*)android_os_Binder_restoreCallingWorkSource },
+ { "markVintfStability", "()V", (void*)android_os_Binder_markVintfStability},
{ "flushPendingCommands", "()V", (void*)android_os_Binder_flushPendingCommands },
{ "getNativeBBinderHolder", "()J", (void*)android_os_Binder_getNativeBBinderHolder },
{ "getNativeFinalizer", "()J", (void*)android_os_Binder_getNativeFinalizer },
diff --git a/core/jni/android_util_StatsLog.cpp b/core/jni/android_util_StatsLog.cpp
index e749d34..9225fc2 100644
--- a/core/jni/android_util_StatsLog.cpp
+++ b/core/jni/android_util_StatsLog.cpp
@@ -18,18 +18,17 @@
#define LOG_TAG "StatsLog_println"
#include <assert.h>
-#include <cutils/properties.h>
#include "jni.h"
#include <nativehelper/JNIHelp.h>
#include "utils/misc.h"
#include "core_jni_helpers.h"
-#include "stats_event_list.h"
+#include "stats_buffer_writer.h"
namespace android {
-static void android_util_StatsLog_writeRaw(JNIEnv* env, jobject clazz, jbyteArray buf, jint size)
-{
+static void android_util_StatsLog_write(JNIEnv* env, jobject clazz, jbyteArray buf, jint size,
+ jint atomId) {
if (buf == NULL) {
return;
}
@@ -42,13 +41,8 @@
if (bufferArray == NULL) {
return;
}
- const uint32_t statsEventTag = 1937006964;
- struct iovec vec[2];
- vec[0].iov_base = (void*) &statsEventTag;
- vec[0].iov_len = sizeof(statsEventTag);
- vec[1].iov_base = (void*) bufferArray;
- vec[1].iov_len = size;
- write_to_statsd(vec, 2);
+
+ write_buffer_to_statsd((void*) bufferArray, size, atomId);
env->ReleaseByteArrayElements(buf, bufferArray, 0);
}
@@ -58,7 +52,7 @@
*/
static const JNINativeMethod gMethods[] = {
/* name, signature, funcPtr */
- { "writeRaw", "([BI)V", (void*) android_util_StatsLog_writeRaw },
+ { "writeImpl", "([BII)V", (void*) android_util_StatsLog_write },
};
int register_android_util_StatsLog(JNIEnv* env)
diff --git a/core/jni/android_view_DisplayEventReceiver.cpp b/core/jni/android_view_DisplayEventReceiver.cpp
index ba538a8..3531cf2 100644
--- a/core/jni/android_view_DisplayEventReceiver.cpp
+++ b/core/jni/android_view_DisplayEventReceiver.cpp
@@ -23,11 +23,10 @@
#include <inttypes.h>
#include <android_runtime/AndroidRuntime.h>
-#include <androidfw/DisplayEventDispatcher.h>
+#include <gui/DisplayEventDispatcher.h>
#include <utils/Log.h>
#include <utils/Looper.h>
#include <utils/threads.h>
-#include <gui/DisplayEventReceiver.h>
#include "android_os_MessageQueue.h"
#include <nativehelper/ScopedLocalRef.h>
@@ -59,7 +58,6 @@
private:
jobject mReceiverWeakGlobal;
sp<MessageQueue> mMessageQueue;
- DisplayEventReceiver mReceiver;
void dispatchVsync(nsecs_t timestamp, PhysicalDisplayId displayId, uint32_t count) override;
void dispatchHotplug(nsecs_t timestamp, PhysicalDisplayId displayId, bool connected) override;
diff --git a/core/jni/android_view_SurfaceControl.cpp b/core/jni/android_view_SurfaceControl.cpp
index 9f20388..c6e678ab 100644
--- a/core/jni/android_view_SurfaceControl.cpp
+++ b/core/jni/android_view_SurfaceControl.cpp
@@ -138,6 +138,14 @@
jmethodID builder;
} gScreenshotGraphicBufferClassInfo;
+static struct {
+ jclass clazz;
+ jmethodID ctor;
+ jfieldID defaultModeId;
+ jfieldID minRefreshRate;
+ jfieldID maxRefreshRate;
+} gDesiredDisplayConfigSpecsClassInfo;
+
class JNamedColorSpace {
public:
// ColorSpace.Named.SRGB.ordinal() = 0;
@@ -810,6 +818,23 @@
return allowedConfigsArray;
}
+static jboolean nativeSetDesiredDisplayConfigSpecs(JNIEnv* env, jclass clazz, jobject tokenObj,
+ jobject desiredDisplayConfigSpecs) {
+ sp<IBinder> token(ibinderForJavaObject(env, tokenObj));
+ if (token == nullptr) return JNI_FALSE;
+
+ jint defaultModeId = env->GetIntField(desiredDisplayConfigSpecs,
+ gDesiredDisplayConfigSpecsClassInfo.defaultModeId);
+ jfloat minRefreshRate = env->GetFloatField(desiredDisplayConfigSpecs,
+ gDesiredDisplayConfigSpecsClassInfo.minRefreshRate);
+ jfloat maxRefreshRate = env->GetFloatField(desiredDisplayConfigSpecs,
+ gDesiredDisplayConfigSpecsClassInfo.maxRefreshRate);
+
+ size_t result = SurfaceComposerClient::setDesiredDisplayConfigSpecs(
+ token, defaultModeId, minRefreshRate, maxRefreshRate);
+ return result == NO_ERROR ? JNI_TRUE : JNI_FALSE;
+}
+
static jint nativeGetActiveConfig(JNIEnv* env, jclass clazz, jobject tokenObj) {
sp<IBinder> token(ibinderForJavaObject(env, tokenObj));
if (token == NULL) return -1;
@@ -1366,6 +1391,9 @@
(void*)nativeSetAllowedDisplayConfigs },
{"nativeGetAllowedDisplayConfigs", "(Landroid/os/IBinder;)[I",
(void*)nativeGetAllowedDisplayConfigs },
+ {"nativeSetDesiredDisplayConfigSpecs",
+ "(Landroid/os/IBinder;Landroid/view/SurfaceControl$DesiredDisplayConfigSpecs;)Z",
+ (void*)nativeSetDesiredDisplayConfigSpecs },
{"nativeGetDisplayColorModes", "(Landroid/os/IBinder;)[I",
(void*)nativeGetDisplayColorModes},
{"nativeGetDisplayNativePrimaries", "(Landroid/os/IBinder;)Landroid/view/SurfaceControl$DisplayPrimaries;",
@@ -1535,6 +1563,19 @@
gDisplayPrimariesClassInfo.white = GetFieldIDOrDie(env, displayPrimariesClazz, "white",
"Landroid/view/SurfaceControl$CieXyz;");
+ jclass desiredDisplayConfigSpecsClazz =
+ FindClassOrDie(env, "android/view/SurfaceControl$DesiredDisplayConfigSpecs");
+ gDesiredDisplayConfigSpecsClassInfo.clazz =
+ MakeGlobalRefOrDie(env, desiredDisplayConfigSpecsClazz);
+ gDesiredDisplayConfigSpecsClassInfo.ctor =
+ GetMethodIDOrDie(env, gDesiredDisplayConfigSpecsClassInfo.clazz, "<init>", "(IFF)V");
+ gDesiredDisplayConfigSpecsClassInfo.defaultModeId =
+ GetFieldIDOrDie(env, desiredDisplayConfigSpecsClazz, "mDefaultModeId", "I");
+ gDesiredDisplayConfigSpecsClassInfo.minRefreshRate =
+ GetFieldIDOrDie(env, desiredDisplayConfigSpecsClazz, "mMinRefreshRate", "F");
+ gDesiredDisplayConfigSpecsClassInfo.maxRefreshRate =
+ GetFieldIDOrDie(env, desiredDisplayConfigSpecsClazz, "mMaxRefreshRate", "F");
+
return err;
}
diff --git a/core/jni/android_view_TextureLayer.cpp b/core/jni/android_view_TextureLayer.cpp
index 6475151..5491a33 100644
--- a/core/jni/android_view_TextureLayer.cpp
+++ b/core/jni/android_view_TextureLayer.cpp
@@ -17,7 +17,6 @@
#define LOG_TAG "OpenGLRenderer"
#include "jni.h"
-#include "GraphicsJNI.h"
#include <nativehelper/JNIHelp.h>
#include "core_jni_helpers.h"
@@ -27,12 +26,8 @@
#include <gui/surfacetexture/surface_texture_platform.h>
#include <gui/surfacetexture/SurfaceTexture.h>
#include <hwui/Paint.h>
-
#include <SkMatrix.h>
-
#include <DeferredLayerUpdater.h>
-#include <Rect.h>
-#include <RenderNode.h>
namespace android {
diff --git a/core/jni/com_android_internal_os_Zygote.cpp b/core/jni/com_android_internal_os_Zygote.cpp
index 3516dce..f28c422 100644
--- a/core/jni/com_android_internal_os_Zygote.cpp
+++ b/core/jni/com_android_internal_os_Zygote.cpp
@@ -1156,7 +1156,7 @@
UnsetChldSignalHandler();
if (is_system_server) {
- env->CallStaticVoidMethod(gZygoteClass, gCallPostForkSystemServerHooks);
+ env->CallStaticVoidMethod(gZygoteClass, gCallPostForkSystemServerHooks, runtime_flags);
if (env->ExceptionCheck()) {
fail_fn("Error calling post fork system server hooks.");
}
@@ -1802,7 +1802,7 @@
gZygoteClass = MakeGlobalRefOrDie(env, FindClassOrDie(env, kZygoteClassName));
gCallPostForkSystemServerHooks = GetStaticMethodIDOrDie(env, gZygoteClass,
"callPostForkSystemServerHooks",
- "()V");
+ "(I)V");
gCallPostForkChildHooks = GetStaticMethodIDOrDie(env, gZygoteClass, "callPostForkChildHooks",
"(IZZLjava/lang/String;)V");
diff --git a/core/jni/fd_utils.cpp b/core/jni/fd_utils.cpp
index 3704ccd..fd6984b 100644
--- a/core/jni/fd_utils.cpp
+++ b/core/jni/fd_utils.cpp
@@ -34,7 +34,9 @@
// Static whitelist of open paths that the zygote is allowed to keep open.
static const char* kPathWhitelist[] = {
"/apex/com.android.conscrypt/javalib/conscrypt.jar",
+ "/apex/com.android.ipsec/javalib/ike.jar",
"/apex/com.android.media/javalib/updatable-media.jar",
+ "/apex/com.android.sdkext/javalib/framework-sdkext.jar",
"/dev/null",
"/dev/socket/zygote",
"/dev/socket/zygote_secondary",
diff --git a/core/proto/android/app/settings_enums.proto b/core/proto/android/app/settings_enums.proto
index 1008a0d..ab97fdd 100644
--- a/core/proto/android/app/settings_enums.proto
+++ b/core/proto/android/app/settings_enums.proto
@@ -688,6 +688,17 @@
// ACTION: Settings > Initialize Search bar > Verify Slice > Other exception
ACTION_VERIFY_SLICE_OTHER_EXCEPTION = 1727;
+
+ // Custom tag to evaluate the consuming time of the Controller.updateState.
+ // CATEGORY: SETTINGS
+ // OS: R
+ ACTION_CONTROLLER_UPDATE_STATE = 1728;
+
+ // Custom tag to evaluate the consuming time from onAttach to
+ // DashboardFragment.updatePreferenceStates.
+ // CATEGORY: SETTINGS
+ // OS: R
+ ACTION_DASHBOARD_VISIBLE_TIME = 1729;
}
/**
@@ -2446,4 +2457,14 @@
// CATEGORY: SETTINGS
// OS: R
SETTINGS_PLATFORM_COMPAT_DASHBOARD = 1805;
+
+ // OPEN: Settings > Location -> Work profile tab
+ // CATEGORY: SETTINGS
+ // OS: R
+ LOCATION_WORK = 1806;
+
+ // OPEN: Settings > Account -> Work profile tab
+ // CATEGORY: SETTINGS
+ // OS: R
+ ACCOUNT_WORK = 1807;
}
diff --git a/core/proto/android/stats/devicepolicy/device_policy_enums.proto b/core/proto/android/stats/devicepolicy/device_policy_enums.proto
index 15813a1..f8c304c 100644
--- a/core/proto/android/stats/devicepolicy/device_policy_enums.proto
+++ b/core/proto/android/stats/devicepolicy/device_policy_enums.proto
@@ -151,4 +151,5 @@
PROVISIONING_FLOW_TYPE = 124;
CROSS_PROFILE_APPS_GET_TARGET_USER_PROFILES = 125;
CROSS_PROFILE_APPS_START_ACTIVITY_AS_USER = 126;
+ SET_AUTO_TIME = 127;
}
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index c63d2aa..f6e91ef 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -48,6 +48,7 @@
<protected-broadcast android:name="android.intent.action.PACKAGE_RESTARTED" />
<protected-broadcast android:name="android.intent.action.PACKAGE_DATA_CLEARED" />
<protected-broadcast android:name="android.intent.action.PACKAGE_FIRST_LAUNCH" />
+ <protected-broadcast android:name="android.intent.action.PACKAGE_NEEDS_INTEGRITY_VERIFICATION" />
<protected-broadcast android:name="android.intent.action.PACKAGE_NEEDS_VERIFICATION" />
<protected-broadcast android:name="android.intent.action.PACKAGE_VERIFIED" />
<protected-broadcast android:name="android.intent.action.PACKAGES_SUSPENDED" />
@@ -108,8 +109,8 @@
<protected-broadcast android:name="android.app.action.ENTER_CAR_MODE" />
<protected-broadcast android:name="android.app.action.EXIT_CAR_MODE" />
- <protected-broadcast android:name="android.app.action.ENTER_CAR_MODE_PRIVILEGED" />
- <protected-broadcast android:name="android.app.action.EXIT_CAR_MODE_PRIVILEGED" />
+ <protected-broadcast android:name="android.app.action.ENTER_CAR_MODE_PRIORITIZED" />
+ <protected-broadcast android:name="android.app.action.EXIT_CAR_MODE_PRIORITIZED" />
<protected-broadcast android:name="android.app.action.ENTER_DESK_MODE" />
<protected-broadcast android:name="android.app.action.EXIT_DESK_MODE" />
<protected-broadcast android:name="android.app.action.NEXT_ALARM_CLOCK_CHANGED" />
@@ -499,7 +500,6 @@
<protected-broadcast android:name="android.telephony.action.CARRIER_CONFIG_CHANGED" />
<protected-broadcast android:name="android.telephony.action.DEFAULT_SUBSCRIPTION_CHANGED" />
<protected-broadcast android:name="android.telephony.action.DEFAULT_SMS_SUBSCRIPTION_CHANGED" />
- <protected-broadcast android:name="android.telephony.action.OTA_EMERGENCY_NUMBER_DB_INSTALLED" />
<protected-broadcast android:name="android.telephony.action.SECRET_CODE" />
<protected-broadcast android:name="android.telephony.action.SHOW_VOICEMAIL_NOTIFICATION" />
<protected-broadcast android:name="android.telephony.action.SUBSCRIPTION_PLANS_CHANGED" />
@@ -635,6 +635,11 @@
<protected-broadcast android:name="android.intent.action.DEVICE_CUSTOMIZATION_READY" />
+ <!-- NETWORK_SET_TIME / NETWORK_SET_TIMEZONE moved from com.android.phone to system server.
+ They should ultimately be removed. -->
+ <protected-broadcast android:name="android.intent.action.NETWORK_SET_TIME" />
+ <protected-broadcast android:name="android.intent.action.NETWORK_SET_TIMEZONE" />
+
<!-- For tether entitlement recheck-->
<protected-broadcast
android:name="com.android.server.connectivity.tethering.PROVISIONING_RECHECK_ALARM" />
@@ -1599,7 +1604,7 @@
recommendations and scores from the NetworkScoreService.
<p>Not for use by third-party applications. @hide -->
<permission android:name="android.permission.REQUEST_NETWORK_SCORES"
- android:protectionLevel="signature|setup|privileged" />
+ android:protectionLevel="signature|setup" />
<!-- Allows network stack services (Connectivity and Wifi) to coordinate
<p>Not for use by third-party or privileged applications.
@@ -1609,6 +1614,14 @@
<permission android:name="android.permission.NETWORK_STACK"
android:protectionLevel="signature" />
+ <!-- @SystemApi @hide Allows an application to observe network policy changes. -->
+ <permission android:name="android.permission.OBSERVE_NETWORK_POLICY"
+ android:protectionLevel="signature" />
+
+ <!-- @SystemApi @hide Allows applications to register network factory or agent -->
+ <permission android:name="android.permission.NETWORK_FACTORY"
+ android:protectionLevel="signature" />
+
<!-- Allows Settings and SystemUI to call methods in Networking services
<p>Not for use by third-party or privileged applications.
@SystemApi
@@ -1668,13 +1681,13 @@
<permission android:name="android.permission.NETWORK_BYPASS_PRIVATE_DNS"
android:protectionLevel="signature" />
- <!-- #SystemApi @hide Allows device mobility state to be set so that Wifi scan interval can be increased
- when the device is stationary in order to save power.
+ <!-- @SystemApi @hide Allows device mobility state to be set so that Wifi scan interval can
+ be increased when the device is stationary in order to save power.
<p>Not for use by third-party applications. -->
<permission android:name="android.permission.WIFI_SET_DEVICE_MOBILITY_STATE"
android:protectionLevel="signature|privileged" />
- <!-- #SystemApi @hide Allows privileged system APK to update Wifi usability stats and score.
+ <!-- @SystemApi @hide Allows privileged system APK to update Wifi usability stats and score.
<p>Not for use by third-party applications. -->
<permission android:name="android.permission.WIFI_UPDATE_USABILITY_STATS_SCORE"
android:protectionLevel="signature|privileged" />
@@ -1739,7 +1752,11 @@
<permission android:name="android.permission.NFC_TRANSACTION_EVENT"
android:protectionLevel="normal" />
- <!-- @SystemApi Allows an internal user to use privileged ConnectivityManager APIs.
+ <!-- @deprecated This permission used to allow too broad access to sensitive methods and all its
+ uses have been replaced by a more appropriate permission. Most uses have been replaced with
+ a NETWORK_STACK or NETWORK_SETTINGS check. Please look up the documentation of the
+ individual functions to figure out what permission now protects the individual function.
+ @SystemApi Allows an internal user to use privileged ConnectivityManager APIs.
@hide -->
<permission android:name="android.permission.CONNECTIVITY_INTERNAL"
android:protectionLevel="signature|privileged" />
@@ -2270,7 +2287,7 @@
types of interactions
@hide -->
<permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL"
- android:protectionLevel="signature|installer|telephony|wifi" />
+ android:protectionLevel="signature|installer|telephony" />
<!-- @SystemApi Allows an application to start its own activities, but on a different profile
associated with the user. For example, an application running on the main profile of a user
@@ -2952,7 +2969,7 @@
@hide
-->
<permission android:name="android.permission.INTERNAL_SYSTEM_WINDOW"
- android:protectionLevel="signature|telephony|wifi" />
+ android:protectionLevel="signature|telephony" />
<!-- @SystemApi Allows an application to use
{@link android.view.WindowManager.LayoutsParams#SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS}
@@ -3531,9 +3548,10 @@
android:protectionLevel="signature|privileged" />
<!-- @SystemApi Allows an application to manage the holders of a role.
- @hide -->
+ @hide
+ STOPSHIP b/145526313: Remove wellbeing protection flag from MANAGE_ROLE_HOLDERS. -->
<permission android:name="android.permission.MANAGE_ROLE_HOLDERS"
- android:protectionLevel="signature|installer|telephony" />
+ android:protectionLevel="signature|installer|telephony|wellbeing" />
<!-- @SystemApi Allows an application to observe role holder changes.
@hide -->
@@ -3543,7 +3561,7 @@
<!-- Allows an application to manage the companion devices.
@hide -->
<permission android:name="android.permission.MANAGE_COMPANION_DEVICES"
- android:protectionLevel="signature|wifi" />
+ android:protectionLevel="signature" />
<!-- @SystemApi Allows an application to use SurfaceFlinger's low level features.
<p>Not for use by third-party applications.
@@ -4596,10 +4614,17 @@
<!-- @SystemApi Allows an app to grant a profile owner access to device identifiers.
<p>Not for use by third-party applications.
+ @deprecated
@hide -->
<permission android:name="android.permission.GRANT_PROFILE_OWNER_DEVICE_IDS_ACCESS"
android:protectionLevel="signature" />
+ <!-- Allows an app to mark a profile owner as managing an organization-owned device.
+ <p>Not for use by third-party applications.
+ @hide -->
+ <permission android:name="android.permission.MARK_DEVICE_ORGANIZATION_OWNED"
+ android:protectionLevel="signature" />
+
<!-- Allows financial apps to read filtered sms messages.
Protection level: signature|appop -->
<permission android:name="android.permission.SMS_FINANCIAL_TRANSACTIONS"
diff --git a/core/res/res/layout/shutdown_dialog.xml b/core/res/res/layout/shutdown_dialog.xml
index 2d214b3..ec67aa8 100644
--- a/core/res/res/layout/shutdown_dialog.xml
+++ b/core/res/res/layout/shutdown_dialog.xml
@@ -32,6 +32,19 @@
android:layout_height="32sp"
android:text="@string/shutdown_progress"
android:textDirection="locale"
+ android:textSize="18sp"
+ android:textAppearance="?attr/textAppearanceMedium"
+ android:gravity="center"
+ android:layout_marginBottom="24dp"
+ android:visibility="gone"
+ android:fontFamily="@string/config_headlineFontFamily"/>
+
+ <TextView
+ android:id="@+id/text2"
+ android:layout_width="wrap_content"
+ android:layout_height="32sp"
+ android:text="@string/shutdown_progress"
+ android:textDirection="locale"
android:textSize="24sp"
android:textAppearance="?attr/textAppearanceLarge"
android:gravity="center"
diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml
index db5b2cb..4acdeeb 100644
--- a/core/res/res/values-af/strings.xml
+++ b/core/res/res/values-af/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"Die werkprofiel se administrasieprogram ontbreek of is korrup. Gevolglik is jou werkprofiel en verwante data uitgevee. Kontak jou administrateur vir bystand."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Jou werkprofiel is nie meer op hierdie toestel beskikbaar nie"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Te veel wagwoordpogings"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"Toestel word bestuur"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Jou organisasie bestuur hierdie toestel en kan netwerkverkeer monitor. Tik vir besonderhede."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Jou toestel sal uitgevee word"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"Laai tans..."</string>
<string name="capital_on" msgid="2770685323900821829">"AAN"</string>
<string name="capital_off" msgid="7443704171014626777">"AF"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"gemerk"</string>
+ <string name="not_checked" msgid="7972320087569023342">"nie gemerk nie"</string>
<string name="whichApplication" msgid="5432266899591255759">"Voltooi handeling met"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Voltooi handeling met gebruik van %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Voltooi handeling"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"Dien in"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Bestuurprogram werk tans"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Tik om die bestuurprogram te verlaat."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Verbinding of Wi-Fi-warmkol aktief"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Tik om op te stel."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"Verbinding is gedeaktiveer"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Kontak jou administrateur vir besonderhede"</string>
<string name="back_button_label" msgid="4078224038025043387">"Terug"</string>
<string name="next_button_label" msgid="6040209156399907780">"Volgende"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Slaan oor"</string>
diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml
index 4e84c66..c6e55c3 100644
--- a/core/res/res/values-am/strings.xml
+++ b/core/res/res/values-am/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"የሥራ መገለጫ አስተዳዳሪ መተግበሪያው ወይም ይጎድላል ወይም ተበላሽቷል። በዚህ ምክንያት የሥራ መገለጫዎ እና ተዛማጅ ውሂብ ተሰርዘዋል። እርዳታን ለማግኘት አስተዳዳሪዎን ያነጋግሩ።"</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"የሥራ መገለጫዎ ከዚህ በኋላ በዚህ መሣሪያ ላይ አይገኝም"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"በጣም ብዙ የይለፍ ቃል ሙከራዎች"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"መሣሪያው የሚተዳደር ነው"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"የእርስዎ ድርጅት ይህን መሣሪያ ያስተዳድራል፣ እና የአውታረ መረብ ትራፊክን ሊከታተል ይችላል። ዝርዝሮችን ለማግኘት መታ ያድርጉ።"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"የእርስዎ መሣሪያ ይደመሰሳል"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"በመጫን ላይ…"</string>
<string name="capital_on" msgid="2770685323900821829">"በ"</string>
<string name="capital_off" msgid="7443704171014626777">"ውጪ"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"ምልክት ተደርጎበታል"</string>
+ <string name="not_checked" msgid="7972320087569023342">"ምልክት አልተደረገበትም"</string>
<string name="whichApplication" msgid="5432266899591255759">"... በመጠቀም ድርጊቱን አጠናቅ"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"%1$sን ተጠቅመው እርምጃ ያጠናቅቁ"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"እርምጃውን አጠናቅቅ"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"አስረክብ"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"የመንዳት መተግበሪያ እያሄደ ነው"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"ከመንዳት መተግበሪያ ለመውጣት መታ ያድርጉ።"</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"መሰካት ወይም ገባሪ ድረስ ነጥብ"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"ለማዋቀር መታ ያድርጉ።"</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"እንደ ሞደም መሰካት ተሰናክሏል"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"ለዝርዝሮች የእርስዎን አስተዳዳሪ ያነጋግሩ"</string>
<string name="back_button_label" msgid="4078224038025043387">"ተመለስ"</string>
<string name="next_button_label" msgid="6040209156399907780">"ቀጥሎ"</string>
<string name="skip_button_label" msgid="3566599811326688389">"ዝለል"</string>
@@ -2004,6 +2000,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"የተከፈለ ማያን ቀያይር"</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"የማያ ገጽ ቁልፍ"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"ቅጽበታዊ ገጽ እይታ"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"የ<xliff:g id="APP_NAME">%1$s</xliff:g> መተግበሪያ በብቅ-ባይ መስኮት ውስጥ።"</string>
</resources>
diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml
index bf9eeb2..609b77e 100644
--- a/core/res/res/values-ar/strings.xml
+++ b/core/res/res/values-ar/strings.xml
@@ -196,6 +196,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"تطبيق المشرف للملف الشخصي للعمل مفقود أو تالف لذا تم حذف الملف الشخصي للعمل والبيانات ذات الصلة. اتصل بالمشرف للحصول على المساعدة."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"لم يعد ملفك الشخصي للعمل متاحًا على هذا الجهاز"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"تم إجراء محاولات كثيرة جدًا لإدخال كلمة المرور"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"تتم إدارة الجهاز"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"تدير مؤسستك هذا الجهاز ويمكنها مراقبة حركة بيانات الشبكة. يمكنك النقر للحصول على تفاصيل."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"سيتم محو بيانات جهازك."</string>
@@ -1196,10 +1198,8 @@
<string name="loading" msgid="3138021523725055037">"جارٍ التحميل…"</string>
<string name="capital_on" msgid="2770685323900821829">"مفعّلة"</string>
<string name="capital_off" msgid="7443704171014626777">"إيقاف"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"تم وضع علامة"</string>
+ <string name="not_checked" msgid="7972320087569023342">"لم يتم وضع علامة"</string>
<string name="whichApplication" msgid="5432266899591255759">"إكمال الإجراء باستخدام"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"إكمال الإجراء باستخدام %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"إكمال الإجراء"</string>
@@ -1509,10 +1509,6 @@
<string name="submit" msgid="862795280643405865">"إرسال"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"تطبيق القيادة قيد التشغيل"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"انقر للخروج من تطبيق القيادة."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"النطاق أو نقطة الاتصال نشطة"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"انقر للإعداد."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"تم إيقاف التوصيل"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"اتصل بالمشرف للحصول على التفاصيل"</string>
<string name="back_button_label" msgid="4078224038025043387">"رجوع"</string>
<string name="next_button_label" msgid="6040209156399907780">"التالي"</string>
<string name="skip_button_label" msgid="3566599811326688389">"التخطي"</string>
@@ -2140,6 +2136,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"تبديل \"تقسيم الشاشة\""</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"شاشة القفل"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"لقطة شاشة"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"تطبيق <xliff:g id="APP_NAME">%1$s</xliff:g> في نافذة منبثقة"</string>
</resources>
diff --git a/core/res/res/values-as/strings.xml b/core/res/res/values-as/strings.xml
index 7fa36deb..091b563f 100644
--- a/core/res/res/values-as/strings.xml
+++ b/core/res/res/values-as/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"কৰ্মস্থানৰ প্ৰ\'ফাইলৰ প্ৰশাসক এপ্ নাই বা ব্যৱহাৰযোগ্য হৈ থকা নাই। যাৰ ফলত আপোনাৰ কৰ্মস্থানৰ প্ৰ\'ফাইল আৰু ইয়াৰ লগত জড়িত অন্য ডেটাসমূহ মচা হৈছে। সহায়ৰ বাবে আপোনাৰ প্ৰশাসকৰ সৈতে সম্পর্ক কৰক।"</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"আপোনাৰ কৰ্মস্থানৰ প্ৰ\'ফাইল এই ডিভাইচটোত আৰু উপলব্ধ নহয়"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"বহুতবাৰ ভুলকৈ পাছৱৰ্ড দিয়া হৈছে"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"পৰিচালিত ডিভাইচ"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"আপোনাৰ প্ৰতিষ্ঠানটোৱে এই ডিভাইচটো পৰিচালনা কৰে আৰু ই নেটৱৰ্কৰ ট্ৰেফিক পৰ্যবেক্ষণ কৰিব পাৰে। সবিশেষ জানিবলৈ টিপক।"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"আপোনাৰ ডিভাইচৰ ডেটা মচা হ\'ব"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"ল\'ড কৰি থকা হৈছে…"</string>
<string name="capital_on" msgid="2770685323900821829">"অন কৰক"</string>
<string name="capital_off" msgid="7443704171014626777">"অফ কৰক"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"টিক চিহ্ন দিয়া হৈছে"</string>
+ <string name="not_checked" msgid="7972320087569023342">"টিক চিহ্ন দিয়া হোৱা নাই"</string>
<string name="whichApplication" msgid="5432266899591255759">"এয়া ব্যৱহাৰ কৰি কার্য সম্পূর্ণ কৰক"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"%1$s ব্যৱহাৰ কৰি কাৰ্যটো সম্পূৰ্ণ কৰক"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"কাৰ্য সম্পূৰ্ণ কৰক"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"দাখিল কৰক"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"ড্ৰাইভিং এপ্ চলি আছে"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"ড্ৰাইভিং এপৰ পৰা বাহিৰ হ\'বলৈ টিপক।"</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"টেডাৰিং বা হটস্প\'ট সক্ৰিয় অৱস্থাত আছে"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"ছেট আপ কৰিবলৈ টিপক।"</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"টেডাৰিং অক্ষম কৰি থোৱা হৈছে"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"সবিশেষ জানিবলৈ আপোনাৰ প্ৰশাসকৰ সৈতে যোগাযোগ কৰক"</string>
<string name="back_button_label" msgid="4078224038025043387">"উভতি যাওক"</string>
<string name="next_button_label" msgid="6040209156399907780">"পৰৱৰ্তী"</string>
<string name="skip_button_label" msgid="3566599811326688389">"এৰি যাওক"</string>
@@ -2004,6 +2000,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"বিভাজিত স্ক্ৰীন ট’গল কৰক"</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"লক স্ক্ৰীন"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"স্ক্ৰীণশ্বট"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"পপ আপ ৱিণ্ড’ত <xliff:g id="APP_NAME">%1$s</xliff:g> এপ্।"</string>
</resources>
diff --git a/core/res/res/values-az/strings.xml b/core/res/res/values-az/strings.xml
index 85186fa..359dfb7 100644
--- a/core/res/res/values-az/strings.xml
+++ b/core/res/res/values-az/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"İş profili admin tətbiqi ya yoxdur, ya da korlanıb. Nəticədə iş profili və onunla bağlı data silinib. Kömək üçün admin ilə əlaqə saxlayın."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"İş profili artıq bu cihazda əlçatan deyil"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Həddindən çox parol cəhdi"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"Cihaz idarə olunur"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Təşkilat bu cihazı idarə edir və şəbəkənin ötürülməsinə nəzarət edə bilər. Detallar üçün klikləyin."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Cihazınız təmizlənəcəkdir"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"Yüklənir…"</string>
<string name="capital_on" msgid="2770685323900821829">"AÇIQ"</string>
<string name="capital_off" msgid="7443704171014626777">"QAPALI"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"yoxlanılıb"</string>
+ <string name="not_checked" msgid="7972320087569023342">"yoxlanılmayıb"</string>
<string name="whichApplication" msgid="5432266899591255759">"Əməliyyatı tamamlayın:"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"%1$s istifadə edərək əməliyyatı tamamlayın"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Əməliyyatı tamamlayın"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"Göndər"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Sürücülük tətbiqi işləyir"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Sürücülük tətbiqindən çıxmaq üçün klikləyin."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Tezerinq və ya hotspot aktivdir"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Quraşdırmaq üçün tıklayın."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"Birləşmə deaktivdir"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Məlumat üçün adminlə əlaqə saxlayın"</string>
<string name="back_button_label" msgid="4078224038025043387">"Geri"</string>
<string name="next_button_label" msgid="6040209156399907780">"Növbəti"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Keç"</string>
@@ -2004,6 +2000,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Bölünmüş Ekrana keçid"</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Kilid Ekranı"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Ekran şəkli"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"Açilən pəncərədə <xliff:g id="APP_NAME">%1$s</xliff:g> tətbiqi."</string>
</resources>
diff --git a/core/res/res/values-b+sr+Latn/strings.xml b/core/res/res/values-b+sr+Latn/strings.xml
index d576e8c..a27d359 100644
--- a/core/res/res/values-b+sr+Latn/strings.xml
+++ b/core/res/res/values-b+sr+Latn/strings.xml
@@ -190,6 +190,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"Aplikacija za administratore na profilu za Work nedostaje ili je oštećena. Zbog toga su profil za Work i povezani podaci izbrisani. Obratite se administratoru za pomoć."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Profil za Work više nije dostupan na ovom uređaju"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Previše pokušaja unosa lozinke"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"Uređajem se upravlja"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Organizacija upravlja ovim uređajem i može da nadgleda mrežni saobraćaj. Dodirnite za detalje."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Uređaj će biti obrisan"</string>
@@ -1136,10 +1138,8 @@
<string name="loading" msgid="3138021523725055037">"Učitava se…"</string>
<string name="capital_on" msgid="2770685323900821829">"DA"</string>
<string name="capital_off" msgid="7443704171014626777">"NE"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"označeno je"</string>
+ <string name="not_checked" msgid="7972320087569023342">"nije označeno"</string>
<string name="whichApplication" msgid="5432266899591255759">"Dovršavanje radnje pomoću"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Završite radnju pomoću aplikacije %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Završi radnju"</string>
@@ -1449,10 +1449,6 @@
<string name="submit" msgid="862795280643405865">"Pošalji"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Aplikacija za vožnju je pokrenuta"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Dodirnite da biste izašli iz aplikacije za vožnju."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Aktivno povezivanje sa internetom preko mobilnog uređaja ili hotspot"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Dodirnite da biste podesili."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"Privezivanje je onemogućeno"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Potražite detalje od administratora"</string>
<string name="back_button_label" msgid="4078224038025043387">"Nazad"</string>
<string name="next_button_label" msgid="6040209156399907780">"Next"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Preskoči"</string>
diff --git a/core/res/res/values-be/strings.xml b/core/res/res/values-be/strings.xml
index f2fb72e..fb0fa33 100644
--- a/core/res/res/values-be/strings.xml
+++ b/core/res/res/values-be/strings.xml
@@ -192,6 +192,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"Праграма адміністратара для працоўнага профілю адсутнічае або пашкоджана. У выніку гэтага ваш працоўны профіль і звязаныя з ім даныя былі выдалены. Звярніцеся па дапамогу да адміністратара."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Ваш працоўны профіль больш не даступны на гэтай прыладзе"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Занадта шмат спроб уводу пароля"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"Прылада знаходзіцца пад кіраваннем"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Ваша арганізацыя кіруе гэтай прыладай і можа сачыць за сеткавым трафікам. Дакраніцеся для атрымання дадатковай інфармацыі."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Даныя вашай прылады будуць сцерты"</string>
@@ -1156,10 +1158,8 @@
<string name="loading" msgid="3138021523725055037">"Загрузка..."</string>
<string name="capital_on" msgid="2770685323900821829">"Уключыць"</string>
<string name="capital_off" msgid="7443704171014626777">"Выключана"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"пазначана"</string>
+ <string name="not_checked" msgid="7972320087569023342">"не пазначана"</string>
<string name="whichApplication" msgid="5432266899591255759">"Завяршыць дзеянне з дапамогай"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Завяршыць дзеянне з дапамогай %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Завяршыць дзеянне"</string>
@@ -1469,10 +1469,6 @@
<string name="submit" msgid="862795280643405865">"Перадаць"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Праграма для ваджэння ўключана"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Націсніце, каб выйсці з праграмы для ваджэння."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"USB-мадэм або хот-спот Wi-Fi актыўныя"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Дакраніцеся, каб наладзіць."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"Рэжым мадэма адключаны"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Звярніцеся да адміністратара па падрабязную інфармацыю"</string>
<string name="back_button_label" msgid="4078224038025043387">"Назад"</string>
<string name="next_button_label" msgid="6040209156399907780">"Далей"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Прапусціць"</string>
@@ -2072,6 +2068,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Пераключальнік падзеленага экрана"</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Экран блакіроўкі"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Здымак экрана"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"Праграма \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" ва ўсплывальным акне."</string>
</resources>
diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml
index f89b985..69c998d 100644
--- a/core/res/res/values-bg/strings.xml
+++ b/core/res/res/values-bg/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"Приложението за администриране на служебния потребителски профил липсва или е повредено. В резултат на това той и свързаните с него данни са изтрити. За съдействие се свържете с администратора си."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Служебният ви потребителски профил вече не е налице на това устройство"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Опитите за паролата са твърде много"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"Устройството се управлява"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Организацията ви управлява това устройство и може да наблюдава мрежовия трафик. Докоснете за подробности."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Данните на устройството ви ще бъдат изтрити"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"Зарежда се..."</string>
<string name="capital_on" msgid="2770685323900821829">"ВКЛ"</string>
<string name="capital_off" msgid="7443704171014626777">"ИЗКЛ"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"с отметка"</string>
+ <string name="not_checked" msgid="7972320087569023342">"без отметка"</string>
<string name="whichApplication" msgid="5432266899591255759">"Изпълняване на действието чрез"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Завършване на действието посредством %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Изпълняване на действието"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"Изпращане"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Приложението за шофиране е включено"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Докоснете, за да излезете от приложението за шофиране."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Има активна споделена връзка или безжична точка за достъп"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Докоснете, за да настроите."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"Функцията за тетъринг е деактивирана"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Свържете се с администратора си за подробности"</string>
<string name="back_button_label" msgid="4078224038025043387">"Назад"</string>
<string name="next_button_label" msgid="6040209156399907780">"Напред"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Пропускане"</string>
@@ -2004,6 +2000,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Превключване на разделения екран"</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Заключен екран"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Екранна снимка"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"Приложението <xliff:g id="APP_NAME">%1$s</xliff:g> в изскачащ прозорец."</string>
</resources>
diff --git a/core/res/res/values-bn/strings.xml b/core/res/res/values-bn/strings.xml
index 2086da7..e335396 100644
--- a/core/res/res/values-bn/strings.xml
+++ b/core/res/res/values-bn/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"কর্মস্থলের প্রোফাইলের প্রশাসক অ্যাপটি হয় নেই, অথবা সেটি ক্ষতিগ্রস্ত হয়েছে৷ এর ফলে আপনার কর্মস্থলের প্রোফাইল এবং সম্পর্কিত ডেটা মুছে ফেলা হয়েছে৷ সহায়তার জন্য আপনার প্রশাসকের সাথে যোগাযোগ করুন৷"</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"আপনার কর্মস্থলের প্রোফাইলটি আর এই ডিভাইসে নেই"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"বহুবার ভুল পাসওয়ার্ড দিয়েছেন"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"ডিভাইসটি পরিচালনা করা হচ্ছে"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"আপনার প্রতিষ্ঠান এই ডিভাইসটি পরিচালনা করে এবং এটির নেটওয়ার্ক ট্রাফিকের উপরে নজর রাখতে পারে। বিশদ বিবরণের জন্য ট্যাপ করুন।,"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"আপনার ডিভাইসটি মুছে ফেলা হবে"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"লোড হচ্ছে..."</string>
<string name="capital_on" msgid="2770685323900821829">"চালু"</string>
<string name="capital_off" msgid="7443704171014626777">"বন্ধ আছে"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"টিকচিহ্ন দেওয়া আছে"</string>
+ <string name="not_checked" msgid="7972320087569023342">"টিকচিহ্ন দেওয়া নেই"</string>
<string name="whichApplication" msgid="5432266899591255759">"এটি ব্যবহার করে ক্রিয়াকলাপ সম্পূর্ণ করুন"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"%1$s ব্যবহার করে ক্রিয়াকলাপ সম্পূর্ণ করুন"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"ক্রিয়াকলাপ সম্পূর্ণ করুন"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"জমা দিন"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"ড্রাইভিং অ্যাপ চালু আছে"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"ড্রাইভিং অ্যাপ বন্ধ করতে ট্যাপ করুন।"</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"টিথারিং বা হটস্পট সক্রিয় আছে"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"সেট-আপ করার জন্য আলতো চাপুন৷"</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"টিথারিং অক্ষম করা আছে"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"বিশদ বিবরণের জন্য প্রশাসকের সাথে যোগাযোগ করুন"</string>
<string name="back_button_label" msgid="4078224038025043387">"ফিরুন"</string>
<string name="next_button_label" msgid="6040209156399907780">"পরবর্তী"</string>
<string name="skip_button_label" msgid="3566599811326688389">"এড়িয়ে যান"</string>
@@ -2004,6 +2000,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"স্প্লিট স্ক্রিন টগল করুন"</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"লক স্ক্রিন"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"স্ক্রিনশট"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"পপ-আপ উইন্ডোতে <xliff:g id="APP_NAME">%1$s</xliff:g> অ্যাপ।"</string>
</resources>
diff --git a/core/res/res/values-bs/strings.xml b/core/res/res/values-bs/strings.xml
index b30ea426..d7bd7a1 100644
--- a/core/res/res/values-bs/strings.xml
+++ b/core/res/res/values-bs/strings.xml
@@ -190,6 +190,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"Nedostaje aplikacija administratora za radni profil ili je neispravna. Zbog toga su vaš radni profil i povezani podaci izbrisani. Obratite administratoru za pomoć."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Radni profil više nije dostupan na ovom uređaju"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Previše puta ste pokušali otključati uređaj"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"Uređajem se upravlja."</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Vaša organizacija upravlja ovim uređajem i može pratiti mrežni saobraćaj. Dodirnite za detalje."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Uređaj će biti izbrisan"</string>
@@ -1136,10 +1138,8 @@
<string name="loading" msgid="3138021523725055037">"Učitavanje..."</string>
<string name="capital_on" msgid="2770685323900821829">"Uključeno"</string>
<string name="capital_off" msgid="7443704171014626777">"Isključeno"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"označeno"</string>
+ <string name="not_checked" msgid="7972320087569023342">"nije označeno"</string>
<string name="whichApplication" msgid="5432266899591255759">"Izvrši akciju koristeći"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Dovršite akciju koristeći %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Izvršiti akciju"</string>
@@ -1451,10 +1451,6 @@
<string name="submit" msgid="862795280643405865">"Potvrdi"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Aplikacija za vožnju je pokrenuta"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Dodirnite za izlaz iz aplikacije za vožnju."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Uređaj dijeli vezu ili djeluje kao pristupna tačka"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Dodirnite za postavke"</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"Povezivanje putem mobitela je onemogućeno"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Kontaktirajte svog administratora za dodatne detalje"</string>
<string name="back_button_label" msgid="4078224038025043387">"Nazad"</string>
<string name="next_button_label" msgid="6040209156399907780">"Naprijed"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Preskoči"</string>
diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml
index 560e493..1f7d82e 100644
--- a/core/res/res/values-ca/strings.xml
+++ b/core/res/res/values-ca/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"Falta l\'aplicació d\'administració del perfil professional o està malmesa. Com a conseqüència, s\'han suprimit el teu perfil professional i les dades relacionades. Contacta amb l\'administrador per obtenir ajuda."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"El teu perfil professional ja no està disponible en aquest dispositiu"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Has intentat introduir la contrasenya massa vegades"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"El dispositiu està gestionat"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"La teva organització gestiona aquest dispositiu i és possible que supervisi el trànsit de xarxa. Toca per obtenir més informació."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"El contingut del dispositiu s\'esborrarà"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"S\'està carregant…"</string>
<string name="capital_on" msgid="2770685323900821829">"SÍ"</string>
<string name="capital_off" msgid="7443704171014626777">"NO"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"seleccionat"</string>
+ <string name="not_checked" msgid="7972320087569023342">"no seleccionat"</string>
<string name="whichApplication" msgid="5432266899591255759">"Completa l\'acció mitjançant"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Completa l\'acció amb %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Completa l\'acció"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"Envia"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"S\'està executant l\'aplicació de conducció"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Toca per sortir de l\'aplicació de conducció."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Compartició de xarxa o punt d\'accés Wi-Fi activat"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Toca per configurar."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"La compartició de xarxa està desactivada"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Contacta amb el teu administrador per obtenir més informació"</string>
<string name="back_button_label" msgid="4078224038025043387">"Enrere"</string>
<string name="next_button_label" msgid="6040209156399907780">"Següent"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Omet"</string>
@@ -2004,6 +2000,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Commuta Pantalla dividida"</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Pantalla de bloqueig"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Captura de pantalla"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"Aplicació <xliff:g id="APP_NAME">%1$s</xliff:g> a la finestra emergent."</string>
</resources>
diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml
index 9527c15..e05f299 100644
--- a/core/res/res/values-cs/strings.xml
+++ b/core/res/res/values-cs/strings.xml
@@ -192,6 +192,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"Aplikace pro správu pracovního profilu chybí nebo je poškozena. Váš pracovní profil a související data proto byla smazána. Požádejte o pomoc administrátora."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Váš pracovní profil v tomto zařízení již není k dispozici"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Příliš mnoho pokusů o zadání hesla"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"Zařízení je spravováno"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Toto zařízení je spravováno vaší organizací, která může sledovat síťový provoz. Podrobnosti zobrazíte klepnutím."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Zařízení bude vymazáno"</string>
@@ -1156,10 +1158,8 @@
<string name="loading" msgid="3138021523725055037">"Načítání..."</string>
<string name="capital_on" msgid="2770685323900821829">"I"</string>
<string name="capital_off" msgid="7443704171014626777">"O"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"vybráno"</string>
+ <string name="not_checked" msgid="7972320087569023342">"nevybráno"</string>
<string name="whichApplication" msgid="5432266899591255759">"Dokončit akci pomocí aplikace"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Dokončit akci pomocí aplikace %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Dokončit akci"</string>
@@ -1469,10 +1469,6 @@
<string name="submit" msgid="862795280643405865">"Odeslat"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Jízdní aplikace je spuštěna"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Jízdní aplikaci zavřete klepnutím."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Sdílené připojení nebo hotspot je aktivní."</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Klepnutím zahájíte nastavení."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"Tethering je zakázán"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"O podrobnosti požádejte administrátora"</string>
<string name="back_button_label" msgid="4078224038025043387">"Zpět"</string>
<string name="next_button_label" msgid="6040209156399907780">"Další"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Přeskočit"</string>
diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml
index 852256e..772b7b0 100644
--- a/core/res/res/values-da/strings.xml
+++ b/core/res/res/values-da/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"Administrationsappen til arbejdsprofilen mangler eller er beskadiget. Derfor er din arbejdsprofil og dine relaterede data blevet slettet. Kontakt din administrator for at få hjælp."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Din arbejdsprofil er ikke længere tilgængelig på denne enhed"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"For mange mislykkede adgangskodeforsøg"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"Dette er en administreret enhed"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Din organisation administrerer denne enhed og kan overvåge netværkstrafik. Tryk for at se info."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Enheden slettes"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"Indlæser…"</string>
<string name="capital_on" msgid="2770685323900821829">"TIL"</string>
<string name="capital_off" msgid="7443704171014626777">"FRA"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"slået til"</string>
+ <string name="not_checked" msgid="7972320087569023342">"slået fra"</string>
<string name="whichApplication" msgid="5432266899591255759">"Brug"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Gennemfør handling ved hjælp af %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Afslut handling"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"Send"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Bilkørselsappen er aktiv"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Tryk for at lukke bilkørselsappen."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Netdeling eller hotspot er aktivt"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Tryk for at konfigurere"</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"Netdeling er deaktiveret"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Kontakt din administrator for at få oplysninger"</string>
<string name="back_button_label" msgid="4078224038025043387">"Tilbage"</string>
<string name="next_button_label" msgid="6040209156399907780">"Næste"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Spring over"</string>
diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml
index 8d86317..bb29a0e 100644
--- a/core/res/res/values-de/strings.xml
+++ b/core/res/res/values-de/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"Die Admin-App für das Arbeitsprofil fehlt oder ist beschädigt. Daher wurden dein Arbeitsprofil und alle zugehörigen Daten gelöscht. Bitte wende dich für weitere Hilfe an deinen Administrator."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Dein Arbeitsprofil ist auf diesem Gerät nicht mehr verfügbar"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Zu viele falsche Passworteingaben"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"Dies ist ein verwaltetes Gerät"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Deine Organisation verwaltet dieses Gerät und überprüft unter Umständen den Netzwerkverkehr. Tippe hier, um weitere Informationen zu erhalten."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Die Daten auf deinem Gerät werden gelöscht."</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"Wird geladen…"</string>
<string name="capital_on" msgid="2770685323900821829">"AN"</string>
<string name="capital_off" msgid="7443704171014626777">"AUS"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"aktiviert"</string>
+ <string name="not_checked" msgid="7972320087569023342">"deaktiviert"</string>
<string name="whichApplication" msgid="5432266899591255759">"Aktion durchführen mit"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Aktion mit %1$s abschließen"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Abschließen"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"Senden"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Fahr-App wird ausgeführt"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Tippen, um die Fahr-App zu beenden."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Tethering oder Hotspot aktiv"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Zum Einrichten tippen."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"Tethering ist deaktiviert"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Bitte wende dich für weitere Informationen an den Administrator"</string>
<string name="back_button_label" msgid="4078224038025043387">"Zurück"</string>
<string name="next_button_label" msgid="6040209156399907780">"Weiter"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Überspringen"</string>
@@ -1539,7 +1535,7 @@
<string name="launchBrowserDefault" msgid="6328349989932924119">"Browser starten?"</string>
<string name="SetupCallDefault" msgid="5581740063237175247">"Anruf annehmen?"</string>
<string name="activity_resolver_use_always" msgid="5575222334666843269">"Immer"</string>
- <string name="activity_resolver_set_always" msgid="4142825808921411476">"Auf \"Immer öffnen\" festlegen"</string>
+ <string name="activity_resolver_set_always" msgid="4142825808921411476">"Immer damit öffnen"</string>
<string name="activity_resolver_use_once" msgid="948462794469672658">"Nur diesmal"</string>
<string name="activity_resolver_app_settings" msgid="6758823206817748026">"Einstellungen"</string>
<string name="activity_resolver_work_profiles_support" msgid="4071345609235361269">"Das Arbeitsprofil wird von %1$s nicht unterstützt."</string>
diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml
index 890a548..807c4c2 100644
--- a/core/res/res/values-el/strings.xml
+++ b/core/res/res/values-el/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"Η εφαρμογή διαχείρισης προφίλ εργασίας είτε λείπει είτε είναι κατεστραμμένη. Ως αποτέλεσμα, διαγράφηκε το προφίλ εργασίας και τα σχετικά δεδομένα. Επικοινωνήστε με τον διαχειριστή σας για βοήθεια."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Το προφίλ εργασίας σας δεν είναι πια διαθέσιμο σε αυτήν τη συσκευή"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Πάρα πολλές προσπάθειες εισαγωγής κωδικού πρόσβασης"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"Η συσκευή είναι διαχειριζόμενη"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Ο οργανισμός σας διαχειρίζεται αυτήν τη συσκευή και ενδέχεται να παρακολουθεί την επισκεψιμότητα δικτύου. Πατήστε για λεπτομέρειες."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Η συσκευή σας θα διαγραφεί"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"Φόρτωση…"</string>
<string name="capital_on" msgid="2770685323900821829">"Ενεργό"</string>
<string name="capital_off" msgid="7443704171014626777">"Ανενεργό"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"επιλεγμένο"</string>
+ <string name="not_checked" msgid="7972320087569023342">"μη επιλεγμένο"</string>
<string name="whichApplication" msgid="5432266899591255759">"Ολοκλήρωση ενέργειας με τη χρήση"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Ολοκληρωμένη ενέργεια με χρήση %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Ολοκλήρωση ενέργειας"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"Υποβολή"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Η εφαρμογή οδήγησης εκτελείται"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Πατήστε για να εξέλθετε από την εφαρμογή οδήγησης."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Πρόσδεση ή σύνδεση σημείου πρόσβασης ενεργή"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Πατήστε για ρύθμιση."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"Η σύνδεση είναι απενεργοποιημένη"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Επικοινωνήστε με τον διαχειριστή σας για λεπτομέρειες"</string>
<string name="back_button_label" msgid="4078224038025043387">"Πίσω"</string>
<string name="next_button_label" msgid="6040209156399907780">"Επόμενο"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Παράλειψη"</string>
diff --git a/core/res/res/values-en-rAU/strings.xml b/core/res/res/values-en-rAU/strings.xml
index 468b9a3..8d2f805 100644
--- a/core/res/res/values-en-rAU/strings.xml
+++ b/core/res/res/values-en-rAU/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"The work profile admin app is either missing or corrupted. As a result, your work profile and related data have been deleted. Contact your admin for assistance."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Your work profile is no longer available on this device"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Too many password attempts"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"Device is managed"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Your organisation manages this device and may monitor network traffic. Tap for details."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Your device will be erased"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"Loading…"</string>
<string name="capital_on" msgid="2770685323900821829">"ON"</string>
<string name="capital_off" msgid="7443704171014626777">"OFF"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"ticked"</string>
+ <string name="not_checked" msgid="7972320087569023342">"not ticked"</string>
<string name="whichApplication" msgid="5432266899591255759">"Complete action using"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Complete action using %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Complete action"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"Submit"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Driving app is running"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Tap to exit driving app."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Tethering or hotspot active"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Tap to set up."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"Tethering is disabled"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Contact your admin for details"</string>
<string name="back_button_label" msgid="4078224038025043387">"Back"</string>
<string name="next_button_label" msgid="6040209156399907780">"Next"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Skip"</string>
diff --git a/core/res/res/values-en-rCA/strings.xml b/core/res/res/values-en-rCA/strings.xml
index 2c71577..e538587 100644
--- a/core/res/res/values-en-rCA/strings.xml
+++ b/core/res/res/values-en-rCA/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"The work profile admin app is either missing or corrupted. As a result, your work profile and related data have been deleted. Contact your admin for assistance."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Your work profile is no longer available on this device"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Too many password attempts"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"Device is managed"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Your organisation manages this device and may monitor network traffic. Tap for details."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Your device will be erased"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"Loading…"</string>
<string name="capital_on" msgid="2770685323900821829">"ON"</string>
<string name="capital_off" msgid="7443704171014626777">"OFF"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"ticked"</string>
+ <string name="not_checked" msgid="7972320087569023342">"not ticked"</string>
<string name="whichApplication" msgid="5432266899591255759">"Complete action using"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Complete action using %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Complete action"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"Submit"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Driving app is running"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Tap to exit driving app."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Tethering or hotspot active"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Tap to set up."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"Tethering is disabled"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Contact your admin for details"</string>
<string name="back_button_label" msgid="4078224038025043387">"Back"</string>
<string name="next_button_label" msgid="6040209156399907780">"Next"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Skip"</string>
diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml
index 468b9a3..8d2f805 100644
--- a/core/res/res/values-en-rGB/strings.xml
+++ b/core/res/res/values-en-rGB/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"The work profile admin app is either missing or corrupted. As a result, your work profile and related data have been deleted. Contact your admin for assistance."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Your work profile is no longer available on this device"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Too many password attempts"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"Device is managed"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Your organisation manages this device and may monitor network traffic. Tap for details."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Your device will be erased"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"Loading…"</string>
<string name="capital_on" msgid="2770685323900821829">"ON"</string>
<string name="capital_off" msgid="7443704171014626777">"OFF"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"ticked"</string>
+ <string name="not_checked" msgid="7972320087569023342">"not ticked"</string>
<string name="whichApplication" msgid="5432266899591255759">"Complete action using"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Complete action using %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Complete action"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"Submit"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Driving app is running"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Tap to exit driving app."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Tethering or hotspot active"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Tap to set up."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"Tethering is disabled"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Contact your admin for details"</string>
<string name="back_button_label" msgid="4078224038025043387">"Back"</string>
<string name="next_button_label" msgid="6040209156399907780">"Next"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Skip"</string>
diff --git a/core/res/res/values-en-rIN/strings.xml b/core/res/res/values-en-rIN/strings.xml
index 468b9a3..8d2f805 100644
--- a/core/res/res/values-en-rIN/strings.xml
+++ b/core/res/res/values-en-rIN/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"The work profile admin app is either missing or corrupted. As a result, your work profile and related data have been deleted. Contact your admin for assistance."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Your work profile is no longer available on this device"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Too many password attempts"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"Device is managed"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Your organisation manages this device and may monitor network traffic. Tap for details."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Your device will be erased"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"Loading…"</string>
<string name="capital_on" msgid="2770685323900821829">"ON"</string>
<string name="capital_off" msgid="7443704171014626777">"OFF"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"ticked"</string>
+ <string name="not_checked" msgid="7972320087569023342">"not ticked"</string>
<string name="whichApplication" msgid="5432266899591255759">"Complete action using"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Complete action using %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Complete action"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"Submit"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Driving app is running"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Tap to exit driving app."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Tethering or hotspot active"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Tap to set up."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"Tethering is disabled"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Contact your admin for details"</string>
<string name="back_button_label" msgid="4078224038025043387">"Back"</string>
<string name="next_button_label" msgid="6040209156399907780">"Next"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Skip"</string>
diff --git a/core/res/res/values-en-rXC/strings.xml b/core/res/res/values-en-rXC/strings.xml
index 03ed6a5..1436692 100644
--- a/core/res/res/values-en-rXC/strings.xml
+++ b/core/res/res/values-en-rXC/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"The work profile admin app is either missing or corrupted. As a result, your work profile and related data have been deleted. Contact your admin for assistance."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Your work profile is no longer available on this device"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Too many password attempts"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"Device is managed"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Your organization manages this device and may monitor network traffic. Tap for details."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Your device will be erased"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"Loading…"</string>
<string name="capital_on" msgid="2770685323900821829">"ON"</string>
<string name="capital_off" msgid="7443704171014626777">"OFF"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"checked"</string>
+ <string name="not_checked" msgid="7972320087569023342">"not checked"</string>
<string name="whichApplication" msgid="5432266899591255759">"Complete action using"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Complete action using %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Complete action"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"Submit"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Driving app is running"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Tap to exit driving app."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Tethering or hotspot active"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Tap to set up."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"Tethering is disabled"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Contact your admin for details"</string>
<string name="back_button_label" msgid="4078224038025043387">"Back"</string>
<string name="next_button_label" msgid="6040209156399907780">"Next"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Skip"</string>
diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml
index 6d0caff..b04882a 100644
--- a/core/res/res/values-es-rUS/strings.xml
+++ b/core/res/res/values-es-rUS/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"La app de administración de perfil de trabajo no se encuentra o está dañada. Por lo tanto, se borraron tu perfil de trabajo y los datos relacionados. Para obtener asistencia, comunícate con el administrador."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Tu perfil de trabajo ya no está disponible en este dispositivo"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Demasiados intentos para ingresar la contraseña"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"Dispositivo administrado"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Tu organización administra este dispositivo y es posible que controle el tráfico de red. Presiona para obtener más información."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Se borrarán los datos del dispositivo"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"Cargando…"</string>
<string name="capital_on" msgid="2770685323900821829">"Sí"</string>
<string name="capital_off" msgid="7443704171014626777">"No"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"activado"</string>
+ <string name="not_checked" msgid="7972320087569023342">"desactivado"</string>
<string name="whichApplication" msgid="5432266899591255759">"Completar la acción mediante"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Completar acción con %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Completar acción"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"Enviar"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Se está ejecutando la app de conducción"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Presiona para salir de la app de conducción."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Anclaje a red o zona activa conectados"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Presiona para configurar."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"Se inhabilitó la conexión mediante dispositivo portátil"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Para obtener más información, comunícate con el administrador"</string>
<string name="back_button_label" msgid="4078224038025043387">"Atrás"</string>
<string name="next_button_label" msgid="6040209156399907780">"Siguiente"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Omitir"</string>
diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml
index ca5097b..81f210b 100644
--- a/core/res/res/values-es/strings.xml
+++ b/core/res/res/values-es/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"Falta la aplicación de administración del perfil de trabajo o está dañada. Por ello, se han eliminado tu perfil de trabajo y los datos relacionados. Ponte en contacto con el administrador para obtener ayuda."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Tu perfil de trabajo ya no está disponible en este dispositivo"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Has fallado demasiadas veces al introducir la contraseña"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"El dispositivo está administrado"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Tu organización administra este dispositivo y puede supervisar el tráfico de red. Toca la notificación para obtener más información."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Tu dispositivo se borrará"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"Cargando..."</string>
<string name="capital_on" msgid="2770685323900821829">"ACTIVADO"</string>
<string name="capital_off" msgid="7443704171014626777">"DESACTIVADO"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"seleccionado"</string>
+ <string name="not_checked" msgid="7972320087569023342">"no seleccionado"</string>
<string name="whichApplication" msgid="5432266899591255759">"Completar acción utilizando"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Completar acción con %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Completar acción"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"Enviar"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Aplicación de conducción en uso"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Toca para salir de la aplicación de conducción."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Compartir conexión/Zona Wi-Fi activada"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Toca para configurar."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"La conexión compartida está inhabilitada"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Ponte en contacto con el administrador para obtener más información"</string>
<string name="back_button_label" msgid="4078224038025043387">"Atrás"</string>
<string name="next_button_label" msgid="6040209156399907780">"Siguiente"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Saltar"</string>
diff --git a/core/res/res/values-et/strings.xml b/core/res/res/values-et/strings.xml
index 6b01527..61b18bb 100644
--- a/core/res/res/values-et/strings.xml
+++ b/core/res/res/values-et/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"Tööprofiili administraatori rakendus puudub või on rikutud. Seetõttu on teie tööprofiil ja seotud andmed kustutatud. Abi saamiseks võtke ühendust administraatoriga."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Teie tööprofiil pole selles seadmes enam saadaval"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Liiga palju paroolikatseid"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"Seade on hallatud"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Teie organisatsioon haldab seda seadet ja võib jälgida võrguliiklust. Puudutage üksikasjade vaatamiseks."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Seade kustutatakse"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"Laadimine ..."</string>
<string name="capital_on" msgid="2770685323900821829">"SEES"</string>
<string name="capital_off" msgid="7443704171014626777">"VÄLJAS"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"märgitud"</string>
+ <string name="not_checked" msgid="7972320087569023342">"märkimata"</string>
<string name="whichApplication" msgid="5432266899591255759">"Lõpetage toiming rakendusega"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Toimingu lõpetamine, kasutades rakendust %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Vii toiming lõpule"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"Saada"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Sõidurakendus töötab"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Puudutage sõidurakendusest väljumiseks."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Jagamine või kuumkoht on aktiivne"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Puudutage seadistamiseks."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"Jagamine on keelatud"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Lisateabe saamiseks võtke ühendust oma administraatoriga"</string>
<string name="back_button_label" msgid="4078224038025043387">"Tagasi"</string>
<string name="next_button_label" msgid="6040209156399907780">"Järgmine"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Jäta vahele"</string>
@@ -2004,6 +2000,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Vaheta jagatud ekraanikuva"</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Lukustuskuva"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Ekraanipilt"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"Rakendus <xliff:g id="APP_NAME">%1$s</xliff:g> on hüpikaknas."</string>
</resources>
diff --git a/core/res/res/values-eu/strings.xml b/core/res/res/values-eu/strings.xml
index 66672dd..fda8565 100644
--- a/core/res/res/values-eu/strings.xml
+++ b/core/res/res/values-eu/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"Laneko profila administratzeko aplikazioa falta da edo hondatuta dago. Ondorioz, ezabatu egin dira laneko profila bera eta harekin erlazionatutako datuak. Laguntza lortzeko, jarri administratzailearekin harremanetan."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Laneko profila ez dago erabilgarri gailu honetan"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Gehiegitan saiatu zara pasahitza idazten"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"Jabeak kudeatzen du gailua"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Erakundeak kudeatzen du gailua eta baliteke sareko trafikoa gainbegiratzea. Sakatu hau xehetasunak ikusteko."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Gailuko datuak ezabatu egingo dira"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"Kargatzen…"</string>
<string name="capital_on" msgid="2770685323900821829">"AKTIBATUTA"</string>
<string name="capital_off" msgid="7443704171014626777">"DESAKTIBATUTA"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"markatuta"</string>
+ <string name="not_checked" msgid="7972320087569023342">"markatu gabe"</string>
<string name="whichApplication" msgid="5432266899591255759">"Gauzatu ekintza hau erabilita:"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Osatu ekintza %1$s erabiliz"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Osatu ekintza"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"Bidali"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Abian da gidatzeko aplikazioa"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Sakatu gidatzeko aplikaziotik irteteko."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Konexioa partekatzea edo sare publikoa aktibo"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Sakatu konfiguratzeko."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"Desgaituta dago konexioa partekatzeko aukera"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Xehetasunak lortzeko, jarri administratzailearekin harremanetan"</string>
<string name="back_button_label" msgid="4078224038025043387">"Atzera"</string>
<string name="next_button_label" msgid="6040209156399907780">"Hurrengoa"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Saltatu"</string>
diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml
index c10dba5..433d4f3 100644
--- a/core/res/res/values-fa/strings.xml
+++ b/core/res/res/values-fa/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"برنامه سرپرست نمایه کاری یا وجود ندارد یا خراب است. در نتیجه، نمایه کاری شما و دادههای مرتبط با آن حذف شده است. برای دریافت راهنمایی با سرپرست سیستم تماس بگیرید."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"نمایه کاری شما دیگر در این دستگاه دردسترس نیست"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"تلاشهای بسیار زیادی برای وارد کردن گذرواژه انجام شده است"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"دستگاه مدیریت میشود"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"سازمانتان این دستگاه را مدیریت میکند و ممکن است ترافیک شبکه را پایش کند. برای اطلاع از جزئیات، ضربه بزنید."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"دستگاهتان پاک خواهد شد"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"درحال بارکردن…"</string>
<string name="capital_on" msgid="2770685323900821829">"روشن"</string>
<string name="capital_off" msgid="7443704171014626777">"خاموش"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"علامتزدهشده"</string>
+ <string name="not_checked" msgid="7972320087569023342">"بدون علامت"</string>
<string name="whichApplication" msgid="5432266899591255759">"تکمیل عملکرد با استفاده از"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"تکمیل عملکرد با استفاده از %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"تکمیل عملکرد"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"ارسال"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"برنامه رانندگی درحال اجرا است"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"برای خروج از برنامه رانندگی ضربه بزنید."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"اشتراکگذاری اینترنت یا نقطه اتصال فعال"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"برای راهاندازی ضربه بزنید."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"اشتراکگذاری اینترنت غیرفعال است"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"برای جزئیات، با سرپرستتان تماس بگیرید"</string>
<string name="back_button_label" msgid="4078224038025043387">"برگشت"</string>
<string name="next_button_label" msgid="6040209156399907780">"بعدی"</string>
<string name="skip_button_label" msgid="3566599811326688389">"رد شدن"</string>
@@ -2004,6 +2000,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"تغییر وضعیت صفحهٔ دونیمه"</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"صفحه قفل"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"عکس صفحهنمایش"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"برنامه <xliff:g id="APP_NAME">%1$s</xliff:g> در پنجره بالاپر."</string>
</resources>
diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml
index 35addd1..0c7bd77 100644
--- a/core/res/res/values-fi/strings.xml
+++ b/core/res/res/values-fi/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"Työprofiilin hallintasovellus puuttuu tai se on vioittunut. Tästä syystä työprofiilisi ja siihen liittyvät tiedot on poistettu. Pyydä ohjeita järjestelmänvalvojaltasi."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Työprofiilisi ei ole enää käytettävissä tällä laitteella."</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Liikaa salasanayrityksiä"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"Hallinnoitu laite"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Organisaatiosi hallinnoi tätä laitetta ja voi tarkkailla verkkoliikennettä. Katso lisätietoja napauttamalla."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Laitteen tiedot poistetaan"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"Ladataan…"</string>
<string name="capital_on" msgid="2770685323900821829">"PÄÄLLÄ"</string>
<string name="capital_off" msgid="7443704171014626777">"POIS"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"valittu"</string>
+ <string name="not_checked" msgid="7972320087569023342">"ei valittu"</string>
<string name="whichApplication" msgid="5432266899591255759">"Tee toiminto käyttäen sovellusta"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Suorita sovelluksella %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Suorita toiminto"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"Lähetä"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Ajosovellus on käynnissä"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Poistu ajosovelluksesta napauttamalla."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Internetin jakaminen tai yhteyspiste käytössä"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Määritä napauttamalla."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"Yhteyden jakaminen poistettu käytöstä"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Kysy lisätietoja järjestelmänvalvojalta."</string>
<string name="back_button_label" msgid="4078224038025043387">"Takaisin"</string>
<string name="next_button_label" msgid="6040209156399907780">"Seuraava"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Ohita"</string>
diff --git a/core/res/res/values-fr-rCA/strings.xml b/core/res/res/values-fr-rCA/strings.xml
index 39dd905..3c8f75f 100644
--- a/core/res/res/values-fr-rCA/strings.xml
+++ b/core/res/res/values-fr-rCA/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"Le profil professionnel de l\'application d\'administration est manquant ou corrompu. Votre profil professionnel et ses données connexes ont donc été supprimés. Communiquez avec votre administrateur pour obtenir de l\'assistance."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Votre profil professionnel n\'est plus accessible sur cet appareil"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Trop de tentatives d\'entrée du mot de passe"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"L\'appareil est géré"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Votre organisation gère cet appareil et peut surveiller le trafic réseau. Touchez ici pour obtenir plus d\'information."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Le contenu de votre appareil sera effacé"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"Chargement en cours..."</string>
<string name="capital_on" msgid="2770685323900821829">"OUI"</string>
<string name="capital_off" msgid="7443704171014626777">"NON"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"coché"</string>
+ <string name="not_checked" msgid="7972320087569023342">"non coché"</string>
<string name="whichApplication" msgid="5432266899591255759">"Continuer avec"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Continuer avec %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Terminer l\'action"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"Envoyer"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"L\'application de conduite est en cours d\'exécution"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Touchez pour quitter l\'application de conduite."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Partage de connexion ou point d\'accès sans fil activé"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Touchez pour configurer."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"Le partage de connexion est désactivé"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Communiquez avec votre administrateur pour obtenir plus de détails"</string>
<string name="back_button_label" msgid="4078224038025043387">"Précédent"</string>
<string name="next_button_label" msgid="6040209156399907780">"Suivante"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Passer"</string>
@@ -2004,6 +2000,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Basculer l\'écran partagé"</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Écran de verrouillage"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Capture d\'écran"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"Application <xliff:g id="APP_NAME">%1$s</xliff:g> dans une fenêtre contextuelle."</string>
</resources>
diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml
index edc050c..1b53bd9 100644
--- a/core/res/res/values-fr/strings.xml
+++ b/core/res/res/values-fr/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"L\'application d\'administration du profil professionnel est manquante ou endommagée. Par conséquent, votre profil professionnel et toutes les données associées ont été supprimés. Pour obtenir de l\'aide, contactez l\'administrateur."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Votre profil professionnel n\'est plus disponible sur cet appareil"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Trop de tentatives de saisie du mot de passe"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"L\'appareil est géré"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Votre organisation gère cet appareil et peut surveiller le trafic réseau. Appuyez ici pour obtenir plus d\'informations."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Les données de votre appareil vont être effacées"</string>
@@ -1066,7 +1068,7 @@
<string name="selectAll" msgid="1532369154488982046">"Tout sélectionner"</string>
<string name="cut" msgid="2561199725874745819">"Couper"</string>
<string name="copy" msgid="5472512047143665218">"Copier"</string>
- <string name="failed_to_copy_to_clipboard" msgid="725919885138539875">"Échec de la copie dans le Presse-papiers"</string>
+ <string name="failed_to_copy_to_clipboard" msgid="725919885138539875">"Échec de la copie dans le presse-papiers"</string>
<string name="paste" msgid="461843306215520225">"Coller"</string>
<string name="paste_as_plain_text" msgid="7664800665823182587">"Coller au format texte brut"</string>
<string name="replace" msgid="7842675434546657444">"Remplacer..."</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"Chargement…"</string>
<string name="capital_on" msgid="2770685323900821829">"OUI"</string>
<string name="capital_off" msgid="7443704171014626777">"NON"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"activé"</string>
+ <string name="not_checked" msgid="7972320087569023342">"désactivé"</string>
<string name="whichApplication" msgid="5432266899591255759">"Continuer avec"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Terminer l\'action avec %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Terminer l\'action"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"Envoyer"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"L\'application de conduite est en cours d\'exécution"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Appuyez ici pour quitter l\'application de conduite."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Partage de connexion ou point d\'accès sans fil activé"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Appuyez ici pour configurer."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"Le partage de connexion est désactivé"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Pour en savoir plus, contactez votre administrateur"</string>
<string name="back_button_label" msgid="4078224038025043387">"Retour"</string>
<string name="next_button_label" msgid="6040209156399907780">"Suivant"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Ignorer"</string>
diff --git a/core/res/res/values-gl/strings.xml b/core/res/res/values-gl/strings.xml
index 583cadf..4572db7 100644
--- a/core/res/res/values-gl/strings.xml
+++ b/core/res/res/values-gl/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"Falta a aplicación de administración do perfil de traballo ou ben está danada. Como resultado, eliminouse o teu perfil de traballo e os datos relacionados. Para obter asistencia, contacta co administrador."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"O teu perfil de traballo xa non está dispoñible neste dispositivo"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Demasiados intentos de introdución do contrasinal"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"O dispositivo está xestionado"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"A túa organización xestiona este dispositivo e pode controlar o tráfico de rede. Toca para obter máis detalles."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Borrarase o teu dispositivo"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"Cargando..."</string>
<string name="capital_on" msgid="2770685323900821829">"SI"</string>
<string name="capital_off" msgid="7443704171014626777">"NON"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"seleccionado"</string>
+ <string name="not_checked" msgid="7972320087569023342">"non seleccionado"</string>
<string name="whichApplication" msgid="5432266899591255759">"Completar a acción usando"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Completar a acción usando %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Completar acción"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"Enviar"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Estase executando a aplicación de condución"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Toca para saír da aplicación de condución."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Conexión compartida ou zona wifi activada"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Tocar para configurar."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"A conexión compartida está desactivada"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Contacta co administrador para obter información"</string>
<string name="back_button_label" msgid="4078224038025043387">"Volver"</string>
<string name="next_button_label" msgid="6040209156399907780">"Seguinte"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Omitir"</string>
@@ -2004,6 +2000,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Activar/desactivar pantalla dividida"</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Pantalla de bloqueo"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Captura de pantalla"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"Aplicación <xliff:g id="APP_NAME">%1$s</xliff:g> nunha ventá emerxente."</string>
</resources>
diff --git a/core/res/res/values-gu/strings.xml b/core/res/res/values-gu/strings.xml
index de31542..5e4f753 100644
--- a/core/res/res/values-gu/strings.xml
+++ b/core/res/res/values-gu/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"કાર્ય પ્રોફાઇલ વ્યવસ્થાપક ઍપ્લિકેશન ખૂટે છે અથવા તો દૂષિત છે. પરિણામે, તમારી કાર્યાલયની પ્રોફાઇલ અને તે સંબંધિત ડેટા કાઢી નાખવામાં આવ્યો છે. સહાયતા માટે તમારા વ્યવસ્થાપકનો સંપર્ક કરો."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"આ ઉપકરણ પર તમારી કાર્યાલયની પ્રોફાઇલ હવે ઉપલબ્ધ નથી"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"પાસવર્ડના ઘણા વધુ પ્રયત્નો"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"ઉપકરણ સંચાલિત છે"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"તમારી સંસ્થા આ ઉપકરણનું સંચાલન કરે છે અને નેટવર્ક ટ્રાફિફનું નિયમન કરી શકે છે. વિગતો માટે ટૅપ કરો."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"તમારું ઉપકરણ કાઢી નાખવામાં આવશે"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"લોડ કરી રહ્યું છે…"</string>
<string name="capital_on" msgid="2770685323900821829">"ચાલુ"</string>
<string name="capital_off" msgid="7443704171014626777">"બંધ"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"ચેક કર્યું"</string>
+ <string name="not_checked" msgid="7972320087569023342">"ચેક કર્યું નથી"</string>
<string name="whichApplication" msgid="5432266899591255759">"આના ઉપયોગથી ક્રિયા પૂર્ણ કરો"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"%1$s ઉપયોગથી ક્રિયા પૂર્ણ કરો"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"ક્રિયા પૂર્ણ કરો"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"સબમિટ કરો"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"ડ્રાઇવિંગ ઍપ ચાલી રહી છે"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"ડ્રાઇવિંગ ઍપથી બહાર નીકળવા માટે ટૅપ કરો."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"ટિથરિંગ અથવા હૉટસ્પૉટ સક્રિય"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"સેટ કરવા માટે ટૅપ કરો."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"ટિથરિંગ અક્ષમ કરેલ છે"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"વિગતો માટે તમારા વ્યવસ્થાપકનો સંપર્ક કરો"</string>
<string name="back_button_label" msgid="4078224038025043387">"પાછળ"</string>
<string name="next_button_label" msgid="6040209156399907780">"આગલું"</string>
<string name="skip_button_label" msgid="3566599811326688389">"છોડો"</string>
@@ -2004,6 +2000,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"સ્ક્રીનને વિભાજિત કરવાની ક્રિયા ટૉગલ કરો"</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"લૉક સ્ક્રીન"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"સ્ક્રીનશૉટ"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"પૉપ-અપ વિંડોમાં <xliff:g id="APP_NAME">%1$s</xliff:g> ઍપ."</string>
</resources>
diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml
index 5a422d8..eecfd5b 100644
--- a/core/res/res/values-hi/strings.xml
+++ b/core/res/res/values-hi/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"वर्क प्रोफ़ाइल व्यवस्थापक ऐप्लिकेशन या तो मौजूद नहीं है या वह खराब हो गया है. परिणामस्वरूप, आपकी वर्क प्रोफ़ाइल और उससे जुड़े डेटा को हटा दिया गया है. सहायता के लिए अपने व्यवस्थापक से संपर्क करें."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"आपकी वर्क प्रोफ़ाइल अब इस डिवाइस पर उपलब्ध नहीं है"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"कई बार गलत पासवर्ड डाला गया"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"डिवाइस प्रबंधित है"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"आपका संगठन इस डिवाइस का प्रबंधन करता है और वह नेटवर्क ट्रैफ़िक की निगरानी भी कर सकता है. विवरण के लिए टैप करें."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"आपके डिवाइस को मिटा दिया जाएगा"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"लोड हो रहे हैं..."</string>
<string name="capital_on" msgid="2770685323900821829">"ऑन"</string>
<string name="capital_off" msgid="7443704171014626777">"बंद"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"चालू है"</string>
+ <string name="not_checked" msgid="7972320087569023342">"बंद है"</string>
<string name="whichApplication" msgid="5432266899591255759">"इसका इस्तेमाल करके कार्रवाई को पूरा करें"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"%1$s का उपयोग करके कार्रवाई पूरी करें"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"कार्रवाई पूरी करें"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"सबमिट करें"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"ड्राइविंग ऐप्लिकेशन चल रहा है"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"ड्राइविंग ऐप्लिकेशन से निकलने के लिए टैप करें."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"टेदरिंग या हॉटस्पॉट सक्रिय"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"सेट करने के लिए टैप करें."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"टेदरिंग अक्षम है"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"जानकारी के लिए अपने एडमिन से संपर्क करें"</string>
<string name="back_button_label" msgid="4078224038025043387">"वापस जाएं"</string>
<string name="next_button_label" msgid="6040209156399907780">"आगे बढ़ें"</string>
<string name="skip_button_label" msgid="3566599811326688389">"अभी नहीं"</string>
@@ -2004,6 +2000,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"स्प्लिट स्क्रीन पर टॉगल करें"</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"स्क्रीन लॉक करें"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"स्क्रीनशॉट लें"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"पॉप-अप विंडो में <xliff:g id="APP_NAME">%1$s</xliff:g> ऐप्लिकेशन."</string>
</resources>
diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml
index ed7234b..e8f02b2 100644
--- a/core/res/res/values-hr/strings.xml
+++ b/core/res/res/values-hr/strings.xml
@@ -190,6 +190,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"Administratorska aplikacija radnog profila nedostaje ili je oštećena. Zbog toga su radni profil i povezani podaci izbrisani. Za pomoć se obratite svom administratoru."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Vaš radni profil više nije dostupan na ovom uređaju"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Previše pokušaja unosa zaporke"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"Uređaj je upravljan"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Vaša organizacija upravlja ovim uređajem i može nadzirati mrežni promet. Dodirnite za pojedinosti."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Uređaj će se izbrisati"</string>
@@ -1136,10 +1138,8 @@
<string name="loading" msgid="3138021523725055037">"Učitavanje…"</string>
<string name="capital_on" msgid="2770685323900821829">"Uklj."</string>
<string name="capital_off" msgid="7443704171014626777">"Isklj."</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"potvrđeno"</string>
+ <string name="not_checked" msgid="7972320087569023342">"nije potvrđeno"</string>
<string name="whichApplication" msgid="5432266899591255759">"Radnju dovrši pomoću stavke"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Dovršavanje radnje pomoću aplikacije %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Dovrši radnju"</string>
@@ -1449,10 +1449,6 @@
<string name="submit" msgid="862795280643405865">"Pošalji"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Pokrenuta je aplikacija za vožnju"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Dodirnite za zatvaranje aplikacije za vožnju."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Ograničenje ili aktivan hotspot"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Dodirnite da biste postavili."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"Modemsko je povezivanje onemogućeno"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Obratite se administratoru da biste saznali pojedinosti"</string>
<string name="back_button_label" msgid="4078224038025043387">"Natrag"</string>
<string name="next_button_label" msgid="6040209156399907780">"Dalje"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Preskoči"</string>
diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml
index aab5298..1d1b994 100644
--- a/core/res/res/values-hu/strings.xml
+++ b/core/res/res/values-hu/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"A munkaprofil rendszergazdai alkalmazása hiányzik vagy sérült. A rendszer ezért törölte a munkaprofilt, és az ahhoz kapcsolódó adatokat. Ha segítségre van szüksége, vegye fel a kapcsolatot rendszergazdájával."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Munkaprofilja már nem hozzáférhető ezen az eszközön."</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Túl sok jelszómegadási kísérlet"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"Felügyelt eszköz"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Ezt az eszközt szervezete kezeli, és lehetséges, hogy a hálózati forgalmat is figyelik. További részletekért koppintson."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"A rendszer törölni fogja eszközét"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"Betöltés..."</string>
<string name="capital_on" msgid="2770685323900821829">"Be"</string>
<string name="capital_off" msgid="7443704171014626777">"Ki"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"kiválasztva"</string>
+ <string name="not_checked" msgid="7972320087569023342">"nincs kiválasztva"</string>
<string name="whichApplication" msgid="5432266899591255759">"Művelet végrehajtása a következővel:"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Művelet elvégzése a(z) %1$s segítségével"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Művelet végrehajtása"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"Elküldés"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Az autós alkalmazás fut"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Koppintson ide az autós alkalmazásból való kilépéshez."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Megosztás vagy aktív hotspot"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Koppintson a beállításhoz."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"Az internetmegosztás le van tiltva"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"A részletekért forduljon rendszergazdájához"</string>
<string name="back_button_label" msgid="4078224038025043387">"Vissza"</string>
<string name="next_button_label" msgid="6040209156399907780">"Tovább"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Kihagyás"</string>
diff --git a/core/res/res/values-hy/strings.xml b/core/res/res/values-hy/strings.xml
index ee461f5..599ce86 100644
--- a/core/res/res/values-hy/strings.xml
+++ b/core/res/res/values-hy/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"Աշխատանքային պրոֆիլի ադմինիստրատորի հավելվածը բացակայում է կամ վնասված է: Արդյունքում ձեր աշխատանքային պրոֆիլը և առնչվող տվյալները ջնջվել են: Օգնության համար դիմեք ձեր ադմինիստրատորին:"</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Ձեր աշխատանքային պրոֆիլն այս սարքում այլևս հասանելի չէ"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Գաղտնաբառը մուտքագրելու չափից շատ փորձեր են կատարվել"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"Սարքը կառավարվում է"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Ձեր կազմակերպությունը կառավարում է այս սարքը և կարող է վերահսկել ցանցի թրաֆիկը: Հպեք՝ մանրամասները դիտելու համար:"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Ձեր սարքը ջնջվելու է"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"Բեռնում..."</string>
<string name="capital_on" msgid="2770685323900821829">"I"</string>
<string name="capital_off" msgid="7443704171014626777">"O"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"նշված է"</string>
+ <string name="not_checked" msgid="7972320087569023342">"նշված չէ"</string>
<string name="whichApplication" msgid="5432266899591255759">"Ավարտել գործողությունը` օգտագործելով"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Եզրափակել գործողությունը՝ օգտագործելով %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Ավարտել գործողությունը"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"Ուղարկել"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Հավելվածն աշխատում է"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Հպեք՝ հավելվածը փակելու համար:"</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Մոդեմի ռեժիմը միացված է"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Հպեք՝ կարգավորելու համար:"</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"Մոդեմի ռեժիմն անջատված է"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Մանրամասների համար դիմեք ձեր ադմինիստրատորին"</string>
<string name="back_button_label" msgid="4078224038025043387">"Հետ"</string>
<string name="next_button_label" msgid="6040209156399907780">"Հաջորդը"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Բաց թողնել"</string>
@@ -2004,6 +2000,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Միացնել/անջատել էկրանի տրոհումը"</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Կողպէկրան"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Սքրինշոթ"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"<xliff:g id="APP_NAME">%1$s</xliff:g> հավելվածը ելնող պատուհանում։"</string>
</resources>
diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml
index ece3a6c..1f81eb5 100644
--- a/core/res/res/values-in/strings.xml
+++ b/core/res/res/values-in/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"Aplikasi admin profil kerja tidak ada atau rusak. Akibatnya, profil kerja dan data terkait telah dihapus. Hubungi admin untuk meminta bantuan."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Profil kerja tidak tersedia lagi di perangkat ini"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Terlalu banyak percobaan memasukkan sandi"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"Perangkat ini ada yang mengelola"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Organisasi mengelola perangkat ini dan mungkin memantau traffic jaringan. Ketuk untuk melihat detailnya."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Perangkat akan dihapus"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"Memuat..."</string>
<string name="capital_on" msgid="2770685323900821829">"AKTIF"</string>
<string name="capital_off" msgid="7443704171014626777">"MATI"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"dicentang"</string>
+ <string name="not_checked" msgid="7972320087569023342">"tidak dicentang"</string>
<string name="whichApplication" msgid="5432266899591255759">"Tindakan lengkap menggunakan"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Selesaikan tindakan menggunakan %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Selesaikan tindakan"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"Kirim"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Aplikasi mengemudi sedang berjalan"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Ketuk untuk keluar dari aplikasi mengemudi."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Tethering (Penambatan) atau hotspot aktif"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Ketuk untuk menyiapkan."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"Tethering dinonaktifkan"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Hubungi admin untuk mengetahui detailnya"</string>
<string name="back_button_label" msgid="4078224038025043387">"Kembali"</string>
<string name="next_button_label" msgid="6040209156399907780">"Selanjutnya"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Lewati"</string>
diff --git a/core/res/res/values-is/strings.xml b/core/res/res/values-is/strings.xml
index 3bcdda6..d23cf5f 100644
--- a/core/res/res/values-is/strings.xml
+++ b/core/res/res/values-is/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"Stjórnunarforrit vinnusniðsins vantar eða er skemmt. Vinnusniðinu og gögnum því tengdu hefur því verið eytt. Hafðu samband við kerfisstjórann til að fá frekari aðstoð."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Vinnusniðið þitt er ekki lengur í boði á þessu tæki"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Of margar tilraunir til að slá inn aðgangsorð"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"Tækinu er stjórnað"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Fyrirtækið þitt stjórnar þessu tæki og kann að fylgjast með netnotkun. Ýttu hér til að fá upplýsingar."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Tækið verður hreinsað"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"Hleður…"</string>
<string name="capital_on" msgid="2770685323900821829">"KVEIKT"</string>
<string name="capital_off" msgid="7443704171014626777">"SLÖKKT"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"valið"</string>
+ <string name="not_checked" msgid="7972320087569023342">"ekki valið"</string>
<string name="whichApplication" msgid="5432266899591255759">"Ljúka aðgerð með"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Ljúka aðgerð með %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Ljúka aðgerð"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"Senda"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Akstursforrit er í gangi"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Ýttu til að loka akstursforritinu."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Kveikt á tjóðrun eða aðgangsstað"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Ýttu til að setja upp."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"Slökkt er á tjóðrun"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Hafðu samband við kerfisstjórann til að fá upplýsingar"</string>
<string name="back_button_label" msgid="4078224038025043387">"Til baka"</string>
<string name="next_button_label" msgid="6040209156399907780">"Áfram"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Sleppa"</string>
@@ -2004,6 +2000,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Breyta skjáskiptingu"</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Lásskjár"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Skjámynd"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"Forritið <xliff:g id="APP_NAME">%1$s</xliff:g> í sprettiglugga."</string>
</resources>
diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml
index 01bb136..8ebcb0e 100644
--- a/core/res/res/values-it/strings.xml
+++ b/core/res/res/values-it/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"L\'app di amministrazione dei profili di lavoro manca o è danneggiata. Di conseguenza, il tuo profilo di lavoro e i relativi dati sono stati eliminati. Contatta l\'amministratore per ricevere assistenza."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Il tuo profilo di lavoro non è più disponibile sul dispositivo"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Troppi tentativi di inserimento della password"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"Il dispositivo è gestito"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Questo dispositivo è gestito dalla tua organizzazione, che potrebbe monitorare il traffico di rete. Tocca per i dettagli."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Il dispositivo verrà resettato"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"Caricamento..."</string>
<string name="capital_on" msgid="2770685323900821829">"ON"</string>
<string name="capital_off" msgid="7443704171014626777">"OFF"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"selezionato"</string>
+ <string name="not_checked" msgid="7972320087569023342">"deselezionato"</string>
<string name="whichApplication" msgid="5432266899591255759">"Completa l\'azione con"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Completamento azione con %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Completa azione"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"Invia"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"App di guida in esecuzione"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Tocca per uscire dall\'app di guida."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Tethering oppure hotspot attivo"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Tocca per impostare."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"Tethering disattivato"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Contatta il tuo amministratore per avere informazioni dettagliate"</string>
<string name="back_button_label" msgid="4078224038025043387">"Indietro"</string>
<string name="next_button_label" msgid="6040209156399907780">"Avanti"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Ignora"</string>
diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml
index ed2e66a..85d0f3b 100644
--- a/core/res/res/values-iw/strings.xml
+++ b/core/res/res/values-iw/strings.xml
@@ -192,6 +192,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"אפליקציית הניהול של פרופיל העבודה חסרה או פגומה. כתוצאה מכך, פרופיל העבודה שלך נמחק, כולל כל הנתונים הקשורים אליו. לקבלת עזרה, פנה למנהל המערכת."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"פרופיל העבודה שלך אינו זמין עוד במכשיר הזה"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"בוצעו ניסיונות רבים מדי להזנת סיסמה"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"המכשיר מנוהל"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"הארגון שלך מנהל מכשיר זה ועשוי לנטר את התנועה ברשת. הקש לקבלת פרטים."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"תתבצע מחיקה של המכשיר"</string>
@@ -1156,10 +1158,8 @@
<string name="loading" msgid="3138021523725055037">"טוען..."</string>
<string name="capital_on" msgid="2770685323900821829">"מופעל"</string>
<string name="capital_off" msgid="7443704171014626777">"כבוי"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"מסומן"</string>
+ <string name="not_checked" msgid="7972320087569023342">"לא מסומן"</string>
<string name="whichApplication" msgid="5432266899591255759">"השלמת פעולה באמצעות"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"להשלמת הפעולה באמצעות %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"השלם פעולה"</string>
@@ -1469,10 +1469,6 @@
<string name="submit" msgid="862795280643405865">"שלח"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"אפליקציית הנהיגה פועלת"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"יש להקיש כדי לצאת מאפליקציית הנהיגה."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"שיתוף אינטרנט פעיל"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"הקש כדי להגדיר."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"שיתוף האינטרנט בין ניידים מושבת"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"לפרטים, יש לפנות למנהל המערכת"</string>
<string name="back_button_label" msgid="4078224038025043387">"הקודם"</string>
<string name="next_button_label" msgid="6040209156399907780">"הבא"</string>
<string name="skip_button_label" msgid="3566599811326688389">"דילוג"</string>
@@ -2072,6 +2068,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"החלפת מצב של מסך מפוצל"</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"מסך הנעילה"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"צילום מסך"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"האפליקציה <xliff:g id="APP_NAME">%1$s</xliff:g> בחלון קופץ."</string>
</resources>
diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml
index 7ad1bc2..e21035f 100644
--- a/core/res/res/values-ja/strings.xml
+++ b/core/res/res/values-ja/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"仕事用プロファイルの管理アプリがないか、破損しています。そのため仕事用プロファイルと関連データが削除されました。管理者にサポートをご依頼ください。"</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"お使いの仕事用プロファイルはこのデバイスで使用できなくなりました"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"パスワード入力回数が上限を超えました"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"管理対象のデバイス"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"このデバイスは組織によって管理され、ネットワーク トラフィックが監視される場合があります。詳しくはタップしてください。"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"デバイスのデータが消去されます"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"読み込んでいます..."</string>
<string name="capital_on" msgid="2770685323900821829">"ON"</string>
<string name="capital_off" msgid="7443704171014626777">"OFF"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"ON"</string>
+ <string name="not_checked" msgid="7972320087569023342">"OFF"</string>
<string name="whichApplication" msgid="5432266899591255759">"アプリケーションを選択"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"%1$sを使用してアクションを完了"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"アクションを実行"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"送信"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"運転アプリを実行しています"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"運転アプリを終了するにはタップしてください。"</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"テザリングまたはアクセスポイントが有効です"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"タップしてセットアップします。"</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"テザリングは無効に設定されています"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"詳しくは、管理者にお問い合わせください"</string>
<string name="back_button_label" msgid="4078224038025043387">"戻る"</string>
<string name="next_button_label" msgid="6040209156399907780">"次へ"</string>
<string name="skip_button_label" msgid="3566599811326688389">"スキップ"</string>
@@ -2004,6 +2000,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"分割画面の切り替え"</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"ロック画面"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"スクリーンショット"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"<xliff:g id="APP_NAME">%1$s</xliff:g> アプリがポップアップ ウィンドウで開きます。"</string>
</resources>
diff --git a/core/res/res/values-ka/strings.xml b/core/res/res/values-ka/strings.xml
index 7e4035d..941dbbd 100644
--- a/core/res/res/values-ka/strings.xml
+++ b/core/res/res/values-ka/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"სამსახურის პროფილის ადმინისტრატორის აპი მიუწვდომელია ან დაზიანებულია. ამის გამო, თქვენი სამსახურის პროფილი და დაკავშირებული მონაცემები წაიშალა. დახმარებისთვის დაუკავშირდით თქვენს ადმინისტრატორს."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"თქვენი სამსახურის პროფილი აღარ არის ხელმისაწვდომი ამ მოწყობილობაზე"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"დაფიქსირდა პაროლის შეყვანის ზედმეტად ბევრი მცდელობა"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"მოწყობილობა მართულია"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"ამ მოწყობილობას თქვენი ორგანიზაცია მართავს და მას ქსელის ტრაფიკის მონიტორინგი შეუძლია. შეეხეთ დამატებითი დეტალებისთვის."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"თქვენი მოწყობილობა წაიშლება"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"ჩატვირთვა…"</string>
<string name="capital_on" msgid="2770685323900821829">"ჩართ."</string>
<string name="capital_off" msgid="7443704171014626777">"გამორთ."</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"მონიშნულია"</string>
+ <string name="not_checked" msgid="7972320087569023342">"არ არის მონიშნული"</string>
<string name="whichApplication" msgid="5432266899591255759">"რა გამოვიყენოთ?"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"მოქმედების %1$s-ის გამოყენებით დასრულება"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"მოქმედების დასრულება"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"გაგზავნა"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"მართვის აპი გაშვებულია"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"შეეხეთ მართვის აპიდან გასასვლელად."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"ტეტერინგი ან უსადენო ქსელი აქტიურია"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"შეეხეთ დასაყენებლად."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"ტეტერინგი გათიშულია"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"დამატებითი ინფორმაციისთვის დაუკავშირდით თქვენს ადმინისტრატორს"</string>
<string name="back_button_label" msgid="4078224038025043387">"უკან"</string>
<string name="next_button_label" msgid="6040209156399907780">"მომდევნო"</string>
<string name="skip_button_label" msgid="3566599811326688389">"გამოტოვება"</string>
@@ -2004,6 +2000,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"გაყოფილი ეკრანის გადართვა"</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"ჩაკეტილი ეკრანი"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"ეკრანის ანაბეჭდი"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"<xliff:g id="APP_NAME">%1$s</xliff:g> აპი ამომხტარ ფანჯარაში."</string>
</resources>
diff --git a/core/res/res/values-kk/strings.xml b/core/res/res/values-kk/strings.xml
index 661f7c1..b142e58 100644
--- a/core/res/res/values-kk/strings.xml
+++ b/core/res/res/values-kk/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"Жұмыс профилінің әкімші қолданбасы жоқ немесе бүлінген. Нәтижесінде жұмыс профиліңіз және қатысты деректер жойылды. Көмек алу үшін әкімшіге хабарласыңыз."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Жұмыс профиліңіз осы құрылғыда енді қолжетімді емес"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Құпия сөз көп рет қате енгізілді"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"Құрылғы басқарылады"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Ұйымыңыз осы құрылғыны басқарады және желі трафигін бақылауы мүмкін. Мәліметтер алу үшін түртіңіз."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Құрылғыңыздағы деректер өшіріледі"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"Жүктелуде…"</string>
<string name="capital_on" msgid="2770685323900821829">"Қосулы"</string>
<string name="capital_off" msgid="7443704171014626777">"Өшірулі"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"белгіленген"</string>
+ <string name="not_checked" msgid="7972320087569023342">"белгіленбеген"</string>
<string name="whichApplication" msgid="5432266899591255759">"Әрекетті аяқтау"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Әрекетті %1$s қолданбасын пайдаланып аяқтау"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Әрекетті аяқтау"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"Жіберу"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Көлік жүргізу қолданбасы қосулы"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Көлік жүргізу қолданбасынан шығу үшін түртіңіз."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Тетеринг немесе хотспот қосулы"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Реттеу үшін түртіңіз."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"Тетеринг өшірілді"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Мәліметтерді әкімшіден алыңыз"</string>
<string name="back_button_label" msgid="4078224038025043387">"Артқа"</string>
<string name="next_button_label" msgid="6040209156399907780">"Келесі"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Өткізіп жіберу"</string>
@@ -2004,6 +2000,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Экранды бөлу мүмкіндігін қосу/өшіру"</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Құлып экраны"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Скриншот"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"Қалқымалы терезедегі <xliff:g id="APP_NAME">%1$s</xliff:g> қолданбасы"</string>
</resources>
diff --git a/core/res/res/values-km/strings.xml b/core/res/res/values-km/strings.xml
index ded2999..43289eb 100644
--- a/core/res/res/values-km/strings.xml
+++ b/core/res/res/values-km/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"កម្មវិធីអ្នកគ្រប់គ្រងកម្រងព័ត៌មានការងារនេះអាចបាត់ ឬមានបញ្ហា។ ដូច្នេះហើយទើបកម្រងព័ត៌មានការងាររបស់អ្នក និងទិន្នន័យដែលពាក់ព័ន្ធត្រូវបានលុប។ សូមទាក់ទងទៅអ្នកគ្រប់គ្រងរបស់អ្នក ដើម្បីទទួលបានជំនួយ។"</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"កម្រងព័ត៌មានការងាររបស់អ្នកលែងមាននៅលើឧបករណ៍នេះទៀតហើយ"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"ការព្យាយាមបញ្ចូលពាក្យសម្ងាត់ច្រើនដងពេកហើយ"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"ឧបករណ៍ស្ថិតក្រោមការគ្រប់គ្រង"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"ស្ថាប័នរបស់អ្នកគ្រប់គ្រងឧបករណ៍នេះ ហើយអាចនឹងតាមដានចរាចរណ៍បណ្តាញ។ ចុចដើម្បីទទួលបានព័ត៌មានលម្អិត។"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"ឧបករណ៍របស់អ្នកនឹងត្រូវបានលុប"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"កំពុងផ្ទុក..."</string>
<string name="capital_on" msgid="2770685323900821829">"បើក"</string>
<string name="capital_off" msgid="7443704171014626777">"បិទ"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"បានធីក"</string>
+ <string name="not_checked" msgid="7972320087569023342">"មិនបានធីក"</string>
<string name="whichApplication" msgid="5432266899591255759">"បញ្ចប់សកម្មភាពដោយប្រើ"</string>
<!-- String.format failed for translation -->
<!-- no translation found for whichApplicationNamed (6969946041713975681) -->
@@ -1431,10 +1431,6 @@
<string name="submit" msgid="862795280643405865">"ដាក់ស្នើ"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"កម្មវិធីបើកបរកំពុងដំណើរការ"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"ចុចដើម្បីចាកចេញពីកម្មវិធីបើកបរ។"</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"ភ្ជាប់ ឬហតស្ពតសកម្ម"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"ប៉ះដើម្បីកំណត់"</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"ការភ្ជាប់ត្រូវបានបិទ"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"ទាក់ទងអ្នកគ្រប់គ្រងរបស់អ្នកសម្រាប់ព័ត៌មានលម្អិត"</string>
<string name="back_button_label" msgid="4078224038025043387">"ថយក្រោយ"</string>
<string name="next_button_label" msgid="6040209156399907780">"បន្ទាប់"</string>
<string name="skip_button_label" msgid="3566599811326688389">"រំលង"</string>
@@ -2006,6 +2002,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"បិទ/បើកមុខងារបំបែកអេក្រង់"</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"អេក្រង់ចាក់សោ"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"រូបថតអេក្រង់"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"កម្មវិធី <xliff:g id="APP_NAME">%1$s</xliff:g> នៅក្នុងវិនដូលោតឡើង។"</string>
</resources>
diff --git a/core/res/res/values-kn/strings.xml b/core/res/res/values-kn/strings.xml
index 10930af..6ebe7b4 100644
--- a/core/res/res/values-kn/strings.xml
+++ b/core/res/res/values-kn/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"ಉದ್ಯೋಗ ಪ್ರೊಫೈಲ್ ನಿರ್ವಾಹಕ ಅಪ್ಲಿಕೇಶನ್ ಕಳೆದು ಹೋಗಿದೆ ಅಥವಾ ಹಾಳಾಗಿದೆ. ಇದರ ಪರಿಣಾಮವಾಗಿ ನಿಮ್ಮ ಉದ್ಯೋಗ ಪ್ರೊಫೈಲ್ ಮತ್ತು ಅದಕ್ಕೆ ಸಂಬಂಧಿಸಿದ ಡೇಟಾವನ್ನು ಅಳಿಸಲಾಗಿದೆ. ಸಹಾಯಕ್ಕಾಗಿ ನಿಮ್ಮ ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"ನಿಮ್ಮ ಉದ್ಯೋಗ ಪ್ರೊಫೈಲ್ ಈ ಸಾಧನದಲ್ಲಿ ಈಗ ಲಭ್ಯವಿಲ್ಲ"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"ಹಲವಾರು ಪಾಸ್ವರ್ಡ್ ಪ್ರಯತ್ನಗಳು"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"ಸಾಧನವನ್ನು ನಿರ್ವಹಿಸಲಾಗುತ್ತಿದೆ"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"ನಿಮ್ಮ ಸಂಸ್ಥೆಯು ಈ ಸಾಧನವನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ ಮತ್ತು ಅದು ನೆಟ್ವರ್ಕ್ ಟ್ರಾಫಿಕ್ ಮೇಲೆ ಗಮನವಿರಿಸಬಹುದು. ವಿವರಗಳಿಗಾಗಿ ಟ್ಯಾಪ್ ಮಾಡಿ."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"ನಿಮ್ಮ ಸಾಧನವನ್ನು ಅಳಿಸಲಾಗುತ್ತದೆ"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"ಲೋಡ್ ಮಾಡಲಾಗುತ್ತಿದೆ..."</string>
<string name="capital_on" msgid="2770685323900821829">"ಆನ್ ಮಾಡಿ"</string>
<string name="capital_off" msgid="7443704171014626777">"ಆಫ್ ಮಾಡು"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"ಪರಿಶೀಲಿಸಲಾಗಿದೆ"</string>
+ <string name="not_checked" msgid="7972320087569023342">"ಪರಿಶೀಲಿಸಲಾಗಿಲ್ಲ"</string>
<string name="whichApplication" msgid="5432266899591255759">"ಇದನ್ನು ಬಳಸಿಕೊಂಡು ಕ್ರಿಯೆಯನ್ನು ಪೂರ್ಣಗೊಳಿಸಿ"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"%1$s ಬಳಸಿಕೊಂಡು ಕ್ರಿಯೆಯನ್ನು ಪೂರ್ಣಗೊಳಿಸಿ"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"ಕ್ರಿಯೆಯನ್ನು ಪೂರ್ಣಗೊಳಿಸಿ"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"ಸಲ್ಲಿಸು"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"ಡ್ರೈವಿಂಗ್ ಅಪ್ಲಿಕೇಶನ್ ಚಾಲನೆಯಲ್ಲಿದೆ"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"ಡ್ರೈವಿಂಗ್ ಅಪ್ಲಿಕೇಶನ್ ನಿರ್ಗಮಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"ಟೆಥರಿಂಗ್ ಅಥವಾ ಹಾಟ್ಸ್ಪಾಟ್ ಸಕ್ರಿಯವಾಗಿದೆ"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"ಹೊಂದಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"ಟೆಥರಿಂಗ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"ವಿವರಗಳಿಗಾಗಿ ನಿಮ್ಮ ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ"</string>
<string name="back_button_label" msgid="4078224038025043387">"ಹಿಂದೆ"</string>
<string name="next_button_label" msgid="6040209156399907780">"ಮುಂದಿನದು"</string>
<string name="skip_button_label" msgid="3566599811326688389">"ಸ್ಕಿಪ್"</string>
@@ -2004,6 +2000,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"ಸ್ಪ್ಲಿಟ್-ಸ್ಕ್ರೀನ್ ಟಾಗಲ್ ಮಾಡಿ"</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"ಲಾಕ್ ಸ್ಕ್ರೀನ್"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"ಸ್ಕ್ರೀನ್ಶಾಟ್"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"ಪಾಪ್-ಅಪ್ ಸ್ಪೇಸ್ ವಿಂಡೋದಲ್ಲಿ <xliff:g id="APP_NAME">%1$s</xliff:g> ಆ್ಯಪ್."</string>
</resources>
diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml
index 431af17..c6caedf 100644
--- a/core/res/res/values-ko/strings.xml
+++ b/core/res/res/values-ko/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"직장 프로필 관리 앱이 없거나 손상되어 직장 프로필 및 관련 데이터가 삭제되었습니다. 도움이 필요한 경우 관리자에게 문의하세요."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"직장 프로필을 이 기기에서 더 이상 사용할 수 없습니다."</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"비밀번호 입력을 너무 많이 시도함"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"관리되는 기기"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"조직에서 이 기기를 관리하며 네트워크 트래픽을 모니터링할 수도 있습니다. 자세한 내용을 보려면 탭하세요."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"기기가 삭제됩니다."</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"로드 중.."</string>
<string name="capital_on" msgid="2770685323900821829">"ON"</string>
<string name="capital_off" msgid="7443704171014626777">"OFF"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"선택함"</string>
+ <string name="not_checked" msgid="7972320087569023342">"선택 안함"</string>
<string name="whichApplication" msgid="5432266899591255759">"작업을 수행할 때 사용하는 애플리케이션"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"%1$s을(를) 사용하여 작업 완료"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"작업 완료"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"제출"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"운전 앱 실행 중"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"운전 앱을 종료하려면 탭하세요."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"테더링 또는 핫스팟 사용"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"설정하려면 탭하세요."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"테더링이 사용 중지됨"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"자세한 정보는 관리자에게 문의하세요."</string>
<string name="back_button_label" msgid="4078224038025043387">"뒤로"</string>
<string name="next_button_label" msgid="6040209156399907780">"다음"</string>
<string name="skip_button_label" msgid="3566599811326688389">"건너뛰기"</string>
@@ -2004,6 +2000,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"화면 분할 모드 전환"</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"잠금 화면"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"스크린샷"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"팝업 창의 <xliff:g id="APP_NAME">%1$s</xliff:g> 앱"</string>
</resources>
diff --git a/core/res/res/values-ky/strings.xml b/core/res/res/values-ky/strings.xml
index c8116cc..341c996 100644
--- a/core/res/res/values-ky/strings.xml
+++ b/core/res/res/values-ky/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"Жумуш профилинин башкаруучу колдонмосу жок же бузулгандыктан, жумуш профилиңиз жана ага байланыштуу дайындар жок кылынды. Жардам алуу үчүн администраторуңузга кайрылыңыз."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Жумуш профилиңиз бул түзмөктөн жок кылынды"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Өтө көп жолу сырсөздү киргизүү аракети жасалды"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"Түзмөктү ишкана башкарат"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Ишканаңыз бул түзмөктү башкарат жана тармак трафигин көзөмөлдөшү мүмкүн. Чоо-жайын көрүү үчүн таптап коюңуз."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Түзмөгүңүз тазаланат"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"Жүктөлүүдө…"</string>
<string name="capital_on" msgid="2770685323900821829">"ЖАНДЫРЫЛГАН"</string>
<string name="capital_off" msgid="7443704171014626777">"ӨЧҮК"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"белгиленген"</string>
+ <string name="not_checked" msgid="7972320087569023342">"белгилене элек"</string>
<string name="whichApplication" msgid="5432266899591255759">"Аракет колдонууну бүтүрүү"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"%1$s аркылуу аракетти аягына чейин чыгаруу"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Аракетти аягына чыгаруу"</string>
@@ -1307,8 +1307,7 @@
<string name="usb_unsupported_audio_accessory_message" msgid="1300168007129796621">"Тиркелген түзмөк бул телефонго шайкеш келбейт. Көбүрөөк маалымат алуу үчүн таптап коюңуз."</string>
<string name="adb_active_notification_title" msgid="408390247354560331">"Мүчүлүштүктөрдү USB аркылуу оңдоо иштеп жатат"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"Өчүрүү үчүн тийип коюңуз"</string>
- <!-- no translation found for adb_active_notification_message (6624498401272780855) -->
- <skip />
+ <string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"USB аркылуу мүчүлүштүктөрдү оңдоону өчүрүүнү тандаңыз."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Сыноо программасынын режими иштетилди"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Сыноо программасынын режимин өчүрүү үчүн, баштапкы жөндөөлөргө кайтарыңыз."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Сериялык консоль иштетилди"</string>
@@ -1430,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"Тапшыруу"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Унаа айдоо колдонмосу иштеп жатат"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Унаа айдоо колдонмосунан чыгуу үчүн таптаңыз."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Жалгаштыруу же хотспот жандырылган"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Жөндөө үчүн таптап коюңуз."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"Жалгаштыруу функциясы өчүрүлгөн"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Кеңири маалымат үчүн администраторуңузга кайрылыңыз"</string>
<string name="back_button_label" msgid="4078224038025043387">"Артка"</string>
<string name="next_button_label" msgid="6040209156399907780">"Кийинки"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Өткөрүп жиберүү"</string>
@@ -2005,6 +2000,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Экранды бөлүүнү күйгүзүү же өчүрүү"</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Кулпуланган экран"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Скриншот"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"<xliff:g id="APP_NAME">%1$s</xliff:g> колдонмосу Калкыма терезеде көрүндү."</string>
</resources>
diff --git a/core/res/res/values-lo/strings.xml b/core/res/res/values-lo/strings.xml
index 9acb031..e0da206 100644
--- a/core/res/res/values-lo/strings.xml
+++ b/core/res/res/values-lo/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"ບໍ່ມີແອັບຜູ້ເບິ່ງແຍງລະບົບໂປຣໄຟລ໌ບ່ອນເຮັດວຽກ ຫຼື ເສຍຫາຍ. ຜົນກໍຄື, ໂປຣໄຟລ໌ບ່ອນເຮັດວຽກ ແລະ ຂໍ້ມູນທີ່ກ່ຽວຂ້ອງຂອງທ່ານຖືກລຶບອອກແລ້ວ. ໃຫ້ຕິດຕໍ່ຜູ້ເບິ່ງແຍງລະບົບສຳລັບການຊ່ວຍເຫຼືອ."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"ໂປຣໄຟລ໌ບ່ອນເຮັດວຽກຂອງທ່ານບໍ່ສາມາດໃຊ້ໄດ້ໃນອຸປະກອນນີ້ອີກຕໍ່ໄປ"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"ລອງໃສ່ລະຫັດຜ່ານຫຼາຍເທື່ອເກີນໄປ"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"ອຸປະກອນມີການຈັດການ"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"ອົງກອນຂອງທ່ານຈັດການອຸປະກອນນີ້ ແລະ ອາດກວດສອບທຣາບຟິກເຄືອຂ່າຍນຳ. ແຕະເພື່ອເບິ່ງລາຍລະອຽດ."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"ອຸປະກອນຂອງທ່ານຈະຖືກລຶບ"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"ກຳລັງໂຫລດ..."</string>
<string name="capital_on" msgid="2770685323900821829">"ເປີດ"</string>
<string name="capital_off" msgid="7443704171014626777">"ປິດ"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"ໝາຍຖືກແລ້ວ"</string>
+ <string name="not_checked" msgid="7972320087569023342">"ບໍ່ໄດ້ໝາຍຖືກ"</string>
<string name="whichApplication" msgid="5432266899591255759">"ດຳເນີນການໂດຍໃຊ້"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"ສຳເລັດການດຳເນີນການໂດຍໃຊ້ %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"ສຳເລັດຄຳສັ່ງ"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"ສົ່ງຂໍ້ມູນ"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"ແອັບຂັບລົດກຳລັງເຮັດວຽກຢູ່"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"ແຕະເພື່ອອອກຈາກແອັບຂັບລົດ."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"ເປີດການປ່ອຍສັນຍານ ຫຼືຮັອດສະປອດແລ້ວ"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"ແຕະເພື່ອຕັ້ງຄ່າ."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"ການປ່ອຍສັນຍານຖືກປິດໄວ້"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"ຕິດຕໍ່ຜູ້ເບິ່ງແຍງລະບົບສຳລັບລາຍລະອຽດ"</string>
<string name="back_button_label" msgid="4078224038025043387">"ກັບຄືນ"</string>
<string name="next_button_label" msgid="6040209156399907780">"ຕໍ່ໄປ"</string>
<string name="skip_button_label" msgid="3566599811326688389">"ຂ້າມ"</string>
@@ -2004,6 +2000,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"ເປີດ/ປິດການແບ່ງໜ້າຈໍ"</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"ໜ້າຈໍລັອກ"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"ຮູບໜ້າຈໍ"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"ແອັບ <xliff:g id="APP_NAME">%1$s</xliff:g> ໃນໜ້າຈໍປັອບອັບ."</string>
</resources>
diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml
index 30b551e..1212aa4 100644
--- a/core/res/res/values-lt/strings.xml
+++ b/core/res/res/values-lt/strings.xml
@@ -192,6 +192,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"Trūksta darbo profilio administratoriaus programos arba ji sugadinta. Todėl darbo profilis ir susiję duomenys buvo ištrinti. Jei reikia pagalbos, susisiekite su administratoriumi."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Darbo profilis nebepasiekiamas šiame įrenginyje"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Per daug slaptažodžio bandymų"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"Įrenginys yra tvarkomas"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Šį įrenginį tvarko organizacija ir gali stebėti tinklo srautą. Palieskite, kad gautumėte daugiau informacijos."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Įrenginys bus ištrintas"</string>
@@ -1156,10 +1158,8 @@
<string name="loading" msgid="3138021523725055037">"Įkeliama..."</string>
<string name="capital_on" msgid="2770685323900821829">"ĮJ."</string>
<string name="capital_off" msgid="7443704171014626777">"IŠJ."</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"pažymėta"</string>
+ <string name="not_checked" msgid="7972320087569023342">"nepažymėta"</string>
<string name="whichApplication" msgid="5432266899591255759">"Užbaigti veiksmą naudojant"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Užbaigti veiksmą naudojant %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Užbaigti veiksmą"</string>
@@ -1469,10 +1469,6 @@
<string name="submit" msgid="862795280643405865">"Pateikti"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Veikia vairavimo programa"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Palieskite, kad išeitumėte iš vairavimo programos."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Susietas ar aktyvus"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Palieskite, kad nustatytumėte."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"Įrenginio kaip modemo naudojimas išjungtas"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Jei reikia išsamios informacijos, susisiekite su administratoriumi"</string>
<string name="back_button_label" msgid="4078224038025043387">"Atgal"</string>
<string name="next_button_label" msgid="6040209156399907780">"Kitas"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Praleisti"</string>
diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml
index ae1831b..547b6c9 100644
--- a/core/res/res/values-lv/strings.xml
+++ b/core/res/res/values-lv/strings.xml
@@ -190,6 +190,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"Trūkst darba profila administratora lietotnes, vai šī lietotne ir bojāta. Šī iemesla dēļ jūsu darba profils un saistītie dati tika dzēsti. Lai saņemtu palīdzību, sazinieties ar administratoru."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Jūsu darba profils šai ierīcē vairs nav pieejams."</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Veikts pārāk daudz paroles ievadīšanas mēģinājumu."</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"Ierīce tiek pārvaldīta"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Jūsu organizācija pārvalda šo ierīci un var uzraudzīt tīkla datplūsmu. Pieskarieties, lai saņemtu detalizētu informāciju."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Jūsu ierīces dati tiks dzēsti"</string>
@@ -1136,10 +1138,8 @@
<string name="loading" msgid="3138021523725055037">"Notiek ielāde..."</string>
<string name="capital_on" msgid="2770685323900821829">"IESLĒGT"</string>
<string name="capital_off" msgid="7443704171014626777">"IZSL."</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"atzīmēts"</string>
+ <string name="not_checked" msgid="7972320087569023342">"nav atzīmēts"</string>
<string name="whichApplication" msgid="5432266899591255759">"Izvēlieties lietotni"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Pabeigt darbību, izmantojot %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Pabeigt darbību"</string>
@@ -1449,10 +1449,6 @@
<string name="submit" msgid="862795280643405865">"Iesniegt"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Autovadīšanas lietotne darbojas"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Pieskarieties, lai izietu no autovadīšanas lietotnes"</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Piesaiste vai tīklājs ir aktīvs."</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Pieskarieties, lai iestatītu."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"Piesaiste ir atspējota"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Lai iegūtu detalizētu informāciju, sazinieties ar savu administratoru."</string>
<string name="back_button_label" msgid="4078224038025043387">"Atpakaļ"</string>
<string name="next_button_label" msgid="6040209156399907780">"Tālāk"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Izlaist"</string>
@@ -2038,6 +2034,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Pārslēgt ekrāna sadalīšanu"</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Bloķēt ekrānu"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Ekrānuzņēmums"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"Lietotne <xliff:g id="APP_NAME">%1$s</xliff:g> uznirstošajā logā."</string>
</resources>
diff --git a/core/res/res/values-mk/strings.xml b/core/res/res/values-mk/strings.xml
index 480561f..93f2da1 100644
--- a/core/res/res/values-mk/strings.xml
+++ b/core/res/res/values-mk/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"Апликацијата на администраторот за работниот профил или исчезна или е оштетена. Како резултат на тоа, вашиот работен профил и поврзаните податоци ќе се избришат. За помош, контактирајте со администраторот."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Вашиот работен профил веќе не е достапен на уредов"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Премногу обиди за внесување лозинка"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"Некој управува со уредот"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Вашата организација управува со уредов и можно е да го следи сообраќајот на мрежата. Допрете за детали."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Уредот ќе се избрише"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"Се вчитува..."</string>
<string name="capital_on" msgid="2770685323900821829">"ВКЛУЧЕНО"</string>
<string name="capital_off" msgid="7443704171014626777">"ИСКЛУЧЕНО"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"штиклирано"</string>
+ <string name="not_checked" msgid="7972320087569023342">"не е штиклирано"</string>
<string name="whichApplication" msgid="5432266899591255759">"Заврши дејство со"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Остварете го дејството со %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Заврши го дејството"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"Поднеси"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Апликацијата за возење работи"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Допрете за да излезете од апликацијата за возење."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Поврзувањето или точката на пристап се активни"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Допрете за поставување."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"Врзувањето е оневозможено"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Контактирајте со администраторот за детали"</string>
<string name="back_button_label" msgid="4078224038025043387">"Назад"</string>
<string name="next_button_label" msgid="6040209156399907780">"Следно"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Прескокни"</string>
diff --git a/core/res/res/values-ml/strings.xml b/core/res/res/values-ml/strings.xml
index d3b9123..c220cdd 100644
--- a/core/res/res/values-ml/strings.xml
+++ b/core/res/res/values-ml/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"ഔദ്യോഗിക പ്രൊഫൈൽ അഡ്മിൻ ആപ്പ് വിട്ടുപോയിരിക്കുന്നു അല്ലെങ്കിൽ കേടായിരിക്കുന്നു. ഫലമായി, നിങ്ങളുടെ ഔദ്യോഗിക പ്രൊഫൈലും ബന്ധപ്പെട്ട വിവരങ്ങളും ഇല്ലാതാക്കിയിരിക്കുന്നു. സഹായത്തിന് അഡ്മിനെ ബന്ധപ്പെടുക."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"ഈ ഉപകരണത്തിൽ തുടർന്നങ്ങോട്ട് നിങ്ങളുടെ ഔദ്യോഗിക പ്രൊഫൈൽ ലഭ്യമല്ല"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"വളരെയധികം പാസ്വേഡ് ശ്രമങ്ങൾ"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"ഉപകരണം മാനേജുചെയ്യുന്നുണ്ട്"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"നിങ്ങളുടെ സ്ഥാപനമാണ് ഈ ഉപകരണം മാനേജുചെയ്യുന്നത്, നെറ്റ്വർക്ക് ട്രാഫിക്ക് നിരീക്ഷിക്കുകയും ചെയ്തേക്കാം, വിശദാംശങ്ങൾ അറിയാൻ ടാപ്പുചെയ്യുക."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"നിങ്ങളുടെ ഉപകരണം മായ്ക്കും"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"ലോഡുചെയ്യുന്നു..."</string>
<string name="capital_on" msgid="2770685323900821829">"ഓൺ"</string>
<string name="capital_off" msgid="7443704171014626777">"ഓഫ്"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"പരിശോധിച്ചത്"</string>
+ <string name="not_checked" msgid="7972320087569023342">"പരിശോധിക്കാത്തത്"</string>
<string name="whichApplication" msgid="5432266899591255759">"പൂർണ്ണമായ പ്രവർത്തനം ഉപയോഗിക്കുന്നു"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"%1$s ഉപയോഗിച്ച് പ്രവർത്തനം പൂർത്തിയാക്കുക"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"പ്രവർത്തനം പൂർത്തിയാക്കുക"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"സമർപ്പിക്കുക"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"ഡ്രൈവിംഗ് ആപ്പ് റൺ ചെയ്യുകയാണ്"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"ഡ്രൈവിംഗ് ആപ്പിൽ നിന്ന് പുറത്തുകടക്കാൻ ടാപ്പ് ചെയ്യുക."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"ടെതറിംഗ് അല്ലെങ്കിൽ ഹോട്ട്സ്പോട്ട് സജീവമാണ്"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"സജ്ജമാക്കാൻ ടാപ്പുചെയ്യുക."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"ടെതറിംഗ് പ്രവർത്തനരഹിതമാക്കിയിരിക്കുന്നു"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"വിശദവിവരങ്ങൾക്ക് നിങ്ങളുടെ അഡ്മിനെ ബന്ധപ്പെടുക"</string>
<string name="back_button_label" msgid="4078224038025043387">"മടങ്ങുക"</string>
<string name="next_button_label" msgid="6040209156399907780">"അടുത്തത്"</string>
<string name="skip_button_label" msgid="3566599811326688389">"ഒഴിവാക്കുക"</string>
@@ -2004,6 +2000,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"സ്ക്രീൻ വിഭജന മോഡ് മാറ്റുക"</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"ലോക്ക് സ്ക്രീൻ"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"സ്ക്രീൻഷോട്ട്"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"പോപ്പ്-അപ്പ് വിൻഡോയിലെ <xliff:g id="APP_NAME">%1$s</xliff:g> ആപ്പ്."</string>
</resources>
diff --git a/core/res/res/values-mn/strings.xml b/core/res/res/values-mn/strings.xml
index e8f6a50..8c26113 100644
--- a/core/res/res/values-mn/strings.xml
+++ b/core/res/res/values-mn/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"Ажлын профайлын админ апп байхгүй эсвэл эвдэрсэн байна. Үүний улмаас таны ажлын профайл болон холбогдох мэдээллийг устгасан болно. Тусламж хэрэгтэй бол админтай холбогдоно уу."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Таны ажлын профайл энэ төхөөрөмжид боломжгүй байна"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Нууц үгийг хэт олон удаа буруу оруулсан байна"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"Төхөөрөмжийг удирдсан"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Таны байгууллага энэ төхөөрөмжийг удирдаж, сүлжээний ачааллыг хянадаг. Дэлгэрэнгүй мэдээлэл авах бол товшино уу."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Таны төхөөрөмж устах болно."</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"Ачааллаж байна..."</string>
<string name="capital_on" msgid="2770685323900821829">"Идэвхтэй"</string>
<string name="capital_off" msgid="7443704171014626777">"Идэвхгүй"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"тэмдэглэсэн"</string>
+ <string name="not_checked" msgid="7972320087569023342">"тэмдэглээгүй"</string>
<string name="whichApplication" msgid="5432266899591255759">"Үйлдлийг дуусгах"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"%1$s ашиглан үйлдлийг гүйцээх"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Үйлдлийг дуусгах"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"Илгээх"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Жолоо барих апп ажиллаж байна"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Жолооны аппаас гарахын тулд товшино уу."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Модем болгох эсвэл идэвхтэй цэг болгох"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Тохируулахын тулд товшино уу."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"Модем болгох боломжгүй байна"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Дэлгэрэнгүй мэдээлэл авахын тулд админтайгаа холбогдоно уу"</string>
<string name="back_button_label" msgid="4078224038025043387">"Буцах"</string>
<string name="next_button_label" msgid="6040209156399907780">"Дараах"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Алгасах"</string>
@@ -2004,6 +2000,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Дэлгэц хуваахыг унтраах/асаах"</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Дэлгэцийг түгжих"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Дэлгэцийн зураг дарах"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"Үзэгдэх цонхонд байгаа <xliff:g id="APP_NAME">%1$s</xliff:g> апп."</string>
</resources>
diff --git a/core/res/res/values-mr/strings.xml b/core/res/res/values-mr/strings.xml
index 18f0911..2782caf 100644
--- a/core/res/res/values-mr/strings.xml
+++ b/core/res/res/values-mr/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"कार्य प्रोफाइल प्रशासक अॅप गहाळ आहे किंवा करप्ट आहे. परिणामी, तुमचे कार्य प्रोफाइल आणि संबंधित डेटा हटवले गेले आहेत. सहाय्यासाठी आपल्या प्रशासकाशी संपर्क साधा."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"तुमचे कार्य प्रोफाइल आता या डिव्हाइसवर उपलब्ध नाही"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"बर्याचदा पासवर्ड टाकण्याचा प्रयत्न केला"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"डिव्हाइस व्यवस्थापित केले आहे"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"तुमची संस्था हे डिव्हाइस व्यवस्थापित करते आणि नेटवर्क रहदारीचे निरीक्षण करू शकते. तपशीलांसाठी टॅप करा."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"तुमचे डिव्हाइस मिटविले जाईल"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"लोड करत आहे..."</string>
<string name="capital_on" msgid="2770685323900821829">"सुरू"</string>
<string name="capital_off" msgid="7443704171014626777">"बंद"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"तपासले"</string>
+ <string name="not_checked" msgid="7972320087569023342">"तपासले नाही"</string>
<string name="whichApplication" msgid="5432266899591255759">"याचा वापर करून क्रिया पूर्ण करा"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"%1$s वापरून क्रिया पूर्ण करा"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"क्रिया पूर्ण झाली"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"सबमिट करा"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"ड्रायव्हिंग अॅप चालू आहे"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"ड्रायव्हिंग ॲपमधून बाहेर पाडण्यासाठी टॅप करा."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"टेदरिंग किंवा हॉटस्पॉट सक्रिय"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"सेट करण्यासाठी टॅप करा."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"टेदरिंग बंद आहे"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"तपशीलांसाठी तुमच्या प्रशासकाशी संपर्क साधा"</string>
<string name="back_button_label" msgid="4078224038025043387">"मागे"</string>
<string name="next_button_label" msgid="6040209156399907780">"पुढील"</string>
<string name="skip_button_label" msgid="3566599811326688389">"वगळा"</string>
@@ -2004,6 +2000,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"विभाजित स्क्रीन टॉगल करा"</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"स्क्रीन लॉक करा"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"स्क्रीनशॉट"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"पॉप-अप विंडोमध्ये <xliff:g id="APP_NAME">%1$s</xliff:g> ॲप."</string>
</resources>
diff --git a/core/res/res/values-ms/strings.xml b/core/res/res/values-ms/strings.xml
index 0a404e7..a40eca0 100644
--- a/core/res/res/values-ms/strings.xml
+++ b/core/res/res/values-ms/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"Apl pentadbir profil kerja tiada atau rosak. Akibatnya, profil kerja anda dan data yang berkaitan telah dipadamkan. Hubungi pentadbir anda untuk mendapatkan bantuan."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Profil kerja anda tidak lagi tersedia pada peranti ini"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Terlalu banyak percubaan kata laluan"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"Peranti ini diurus"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Organisasi anda mengurus peranti ini dan mungkin memantau trafik rangkaian. Ketik untuk mendapatkan butiran."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Peranti anda akan dipadam"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"Memuatkan…"</string>
<string name="capital_on" msgid="2770685323900821829">"HIDUP"</string>
<string name="capital_off" msgid="7443704171014626777">"MATIKAN"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"ditandai"</string>
+ <string name="not_checked" msgid="7972320087569023342">"tidak ditandai"</string>
<string name="whichApplication" msgid="5432266899591255759">"Selesaikan tindakan menggunakan"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Selesaikan tindakan menggunakan %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Selesaikan tindakan"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"Serah"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Apl memandu sedang berjalan"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Ketik untuk keluar daripada apl memandu."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Penambatan atau titik panas aktif"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Ketik untuk membuat persediaan."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"Penambatan dilumpuhkan"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Hubungi pentadbir anda untuk maklumat lanjut"</string>
<string name="back_button_label" msgid="4078224038025043387">"Kembali"</string>
<string name="next_button_label" msgid="6040209156399907780">"Seterusnya"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Langkau"</string>
@@ -2004,6 +2000,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Togol Skrin Pisah"</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Skrin Kunci"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Tangkapan skrin"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"Apl <xliff:g id="APP_NAME">%1$s</xliff:g> dalam tetingkap Timbul."</string>
</resources>
diff --git a/core/res/res/values-my/strings.xml b/core/res/res/values-my/strings.xml
index e34190d..64e2376 100644
--- a/core/res/res/values-my/strings.xml
+++ b/core/res/res/values-my/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"အလုပ်ပရိုဖိုင် စီမံခန့်ခွဲရန်အက်ပ် မရှိပါ သို့မဟုတ် ပျက်စီးနေပါသည်။ ထို့ကြောင့် သင်၏ အလုပ်ပရိုဖိုင်နှင့် ဆက်စပ်နေသော ဒေတာများကို ဖျက်လိုက်ပါပြီ။ အကူအညီရယူရန် သင်၏စီမံခန့်ခွဲသူကို ဆက်သွယ်ပါ။"</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"ဤစက်ပစ္စည်းတွင် သင်၏ အလုပ်ပရိုဖိုင်မရှိတော့ပါ"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"စကားဝှက်ထည့်သွင်းရန် ကြိုးစားသည့် အကြိမ်အရေအတွက် အလွန်များသွား၍ ဖြစ်ပါသည်"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"စက်ပစ္စည်းကို စီမံခန့်ခွဲထားပါသည်"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"ဤစက်ပစ္စည်းကို သင်၏ အဖွဲ့အစည်းက စီမံပြီး ကွန်ရက်အသွားအလာကို စောင့်ကြည့်နိုင်ပါသည်။ ထပ်မံလေ့လာရန် တို့ပါ။"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"သင့်ကိရိယာအား ပယ်ဖျက်လိမ့်မည်"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"တင်နေ…"</string>
<string name="capital_on" msgid="2770685323900821829">"ဖွင့်ရန်"</string>
<string name="capital_off" msgid="7443704171014626777">"ပိတ်"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"အမှန်ခြစ်ပြီး"</string>
+ <string name="not_checked" msgid="7972320087569023342">"ခြစ် မထား"</string>
<string name="whichApplication" msgid="5432266899591255759">"အသုံးပြု၍ ဆောင်ရွက်မှုအားပြီးဆုံးစေခြင်း"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"%1$s ကို သုံးပြီး လုပ်ဆောင်ချက် ပြီးဆုံးပါစေ"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"လုပ်ဆောင်ချက်ကို အပြီးသတ်ပါ"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"ပေးပို့ရန်"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"ကားမောင်းသည့်အက်ပ် ပွင့်နေပါသည်"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"ကားမောင်းသည့်အက်ပ်မှ ထွက်ရန် တို့ပါ။"</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"တဆင့်ပြန်လည်လွှင့်ခြင်း သို့မဟုတ် ဟော့စပေါ့ ဖွင့်ထားသည်"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"စနစ်ထည့်သွင်းရန် တို့ပါ။"</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"မိုဘိုင်းဖုန်းကို မိုဒမ်အဖြစ်သုံးခြင်းအား ပိတ်ထားသည်"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"အသေးစိတ်အချက်အလက်များအတွက် သင့်စီမံခန့်ခွဲသူကို ဆက်သွယ်ပါ"</string>
<string name="back_button_label" msgid="4078224038025043387">"နောက်သို့"</string>
<string name="next_button_label" msgid="6040209156399907780">"ရှေ့သို့"</string>
<string name="skip_button_label" msgid="3566599811326688389">"ကျော်ရန်"</string>
@@ -2004,6 +2000,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"မျက်နှာပြင် ခွဲ၍ပြသခြင်းကို နှိပ်ပါ"</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"လော့ခ်မျက်နှာပြင်"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"ဖန်သားပြင်ဓာတ်ပုံ"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"ပေါ့ပ်အပ်ဝင်းဒိုးတွင်ရှိသော <xliff:g id="APP_NAME">%1$s</xliff:g>အက်ပ်။"</string>
</resources>
diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml
index 69ee017..69e341e 100644
--- a/core/res/res/values-nb/strings.xml
+++ b/core/res/res/values-nb/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"Administratorappen for jobbprofilen mangler eller er skadet. Dette har ført til at jobbprofilen og alle data knyttet til den, har blitt slettet. Ta kontakt med administratoren for å få hjelp."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Jobbprofilen din er ikke lenger tilgjengelig på denne enheten"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"For mange passordforsøk"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"Enheten administreres"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Organisasjonen din kontrollerer denne enheten og kan overvåke nettverkstrafikk. Trykk for å få mer informasjon."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Enheten blir slettet"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"Laster inn …"</string>
<string name="capital_on" msgid="2770685323900821829">"På"</string>
<string name="capital_off" msgid="7443704171014626777">"Av"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"avmerket"</string>
+ <string name="not_checked" msgid="7972320087569023342">"ikke avmerket"</string>
<string name="whichApplication" msgid="5432266899591255759">"Fullfør med"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Fullfør handlingen med %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Fullfør handlingen"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"Send inn"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Kjøreappen kjører"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Trykk for å lukke kjøreappen."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Internettdeling eller trådløs sone er aktiv"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Trykk for å konfigurere."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"Internettdeling er slått av"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Ta kontakt med administratoren din for å få mer informasjon"</string>
<string name="back_button_label" msgid="4078224038025043387">"Tilbake"</string>
<string name="next_button_label" msgid="6040209156399907780">"Neste"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Hopp over"</string>
@@ -1539,7 +1535,7 @@
<string name="launchBrowserDefault" msgid="6328349989932924119">"Vil du starte nettleseren?"</string>
<string name="SetupCallDefault" msgid="5581740063237175247">"Vil du besvare anropet?"</string>
<string name="activity_resolver_use_always" msgid="5575222334666843269">"Alltid"</string>
- <string name="activity_resolver_set_always" msgid="4142825808921411476">"Angi som alltid åpen"</string>
+ <string name="activity_resolver_set_always" msgid="4142825808921411476">"Alltid"</string>
<string name="activity_resolver_use_once" msgid="948462794469672658">"Bare én gang"</string>
<string name="activity_resolver_app_settings" msgid="6758823206817748026">"Innstillinger"</string>
<string name="activity_resolver_work_profiles_support" msgid="4071345609235361269">"%1$s støtter ikke arbeidsprofiler"</string>
@@ -2004,6 +2000,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Slå delt skjerm av/på"</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Låseskjerm"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Skjermdump"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"<xliff:g id="APP_NAME">%1$s</xliff:g>-appen i forgrunnsvindu."</string>
</resources>
diff --git a/core/res/res/values-ne/strings.xml b/core/res/res/values-ne/strings.xml
index cabb5c0..0fb2213 100644
--- a/core/res/res/values-ne/strings.xml
+++ b/core/res/res/values-ne/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"उक्त कार्य प्रोफाइलको प्रशासकीय अनुप्रयोग छैन वा बिग्रेको छ। त्यसले गर्दा, तपाईंको कार्य प्रोफाइल र सम्बन्धित डेटालाई मेटिएको छ। सहायताका लागि आफ्ना प्रशासकलाई सम्पर्क गर्नुहोस्।"</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"तपाईंको कार्य प्रोफाइल अब उप्रान्त यस यन्त्रमा उपलब्ध छैन"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"पासवर्ड प्रविष्ट गर्ने अत्यधिक गलत प्रयासहरू भए"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"यन्त्र व्यवस्थित गरिएको छ"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"तपाईंको संगठनले यस यन्त्रको व्यवस्थापन गर्दछ र नेटवर्क ट्राफिकको अनुगमन गर्न सक्छ। विवरणहरूका लागि ट्याप गर्नुहोस्।"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"तपाईंको यन्त्र मेटिनेछ"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"लोड हुँदै..."</string>
<string name="capital_on" msgid="2770685323900821829">"चालु"</string>
<string name="capital_off" msgid="7443704171014626777">"बन्द"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"जाँच गरिएको"</string>
+ <string name="not_checked" msgid="7972320087569023342">"जाँच गरिएको छैन"</string>
<string name="whichApplication" msgid="5432266899591255759">"प्रयोग गरेर कारबाही पुरा गर्नुहोस्"</string>
<!-- String.format failed for translation -->
<!-- no translation found for whichApplicationNamed (6969946041713975681) -->
@@ -1435,10 +1435,6 @@
<string name="submit" msgid="862795280643405865">"पेस गर्नुहोस्"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"ड्राइभिङ अनुप्रयोग चलिरहेको छ"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"ड्राइभिङ अनुप्रयोगबाट बाहिर निस्कन ट्याप गर्नुहोस्।"</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"टेथर गर्ने वा हटस्पट सक्रिय"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"सेटअप गर्न ट्याप गर्नुहोस्।"</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"टेदरिङलाई असक्षम पारिएको छ"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"विवरणहरूका लागि आफ्ना प्रशासकलाई सम्पर्क गर्नुहोस्"</string>
<string name="back_button_label" msgid="4078224038025043387">"पछाडि"</string>
<string name="next_button_label" msgid="6040209156399907780">"अर्को"</string>
<string name="skip_button_label" msgid="3566599811326688389">"छोड्नुहोस्"</string>
@@ -2010,6 +2006,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"विभाजित स्क्रिन टगल गर्नुहोस्"</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"लक स्क्रिन"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"स्क्रिनसट"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"पपअप विन्डोमा <xliff:g id="APP_NAME">%1$s</xliff:g> अनुप्रयोग छ।"</string>
</resources>
diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml
index 28fdfa5..363c3c3 100644
--- a/core/res/res/values-nl/strings.xml
+++ b/core/res/res/values-nl/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"De beheer-app van het werkprofiel ontbreekt of is beschadigd. Als gevolg hiervan zijn je werkprofiel en alle gerelateerde gegevens verwijderd. Neem contact op met je beheerder voor hulp."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Je werkprofiel is niet meer beschikbaar op dit apparaat"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Te veel wachtwoordpogingen"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"Apparaat wordt beheerd"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Dit apparaat wordt beheerd door je organisatie. Het netwerkverkeer kan worden bijgehouden. Tik voor meer informatie."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Je apparaat wordt gewist"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"Laden..."</string>
<string name="capital_on" msgid="2770685323900821829">"AAN"</string>
<string name="capital_off" msgid="7443704171014626777">"UIT"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"aangevinkt"</string>
+ <string name="not_checked" msgid="7972320087569023342">"niet aangevinkt"</string>
<string name="whichApplication" msgid="5432266899591255759">"Actie voltooien met"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Actie voltooien via %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Actie voltooien"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"Verzenden"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Auto-app wordt uitgevoerd"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Tik om de auto-app te sluiten."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Tethering of hotspot actief"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Tik om in te stellen."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"Tethering is uitgeschakeld"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Neem contact op met je beheerder voor meer informatie"</string>
<string name="back_button_label" msgid="4078224038025043387">"Vorige"</string>
<string name="next_button_label" msgid="6040209156399907780">"Volgende"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Overslaan"</string>
diff --git a/core/res/res/values-or/strings.xml b/core/res/res/values-or/strings.xml
index 23e04b7..566d778 100644
--- a/core/res/res/values-or/strings.xml
+++ b/core/res/res/values-or/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"ଆଡମିନ୍ ଆପ୍ ନାହିଁ କିମ୍ବା ଭୁଲ ଅଛି। ଫଳସ୍ୱରୂପ, ଆପଣଙ୍କ ୱାର୍କ ପ୍ରୋଫାଇଲ୍ ଏବଂ ସମ୍ବନ୍ଧୀୟ ଡାଟା ଡିଲିଟ୍ କରାଯାଇଛି। ସହାୟତା ପାଇଁ ଆପଣଙ୍କ ଆଡମିନଙ୍କୁ ଯୋଗାଯୋଗ କରନ୍ତୁ।"</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"ଏହି ଡିଭାଇସରେ ଆପଣଙ୍କ ୱର୍କ ପ୍ରୋଫାଇଲ୍ ଆଉ ଉପଲବ୍ଧ ନାହିଁ"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"ବହୁତ ଥର ଭୁଲ ପାସ୍ୱର୍ଡ ଲେଖିଛନ୍ତି"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"ଡିଭାଇସକୁ ପରିଚାଳନା କରାଯାଉଛି"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"ଆପଣଙ୍କ ସଂସ୍ଥା ଏହି ଡିଭାଇସକୁ ପରିଚାଳନା କରନ୍ତି ଏବଂ ନେଟୱର୍କ ଟ୍ରାଫିକ୍ ନୀରିକ୍ଷଣ କରନ୍ତି। ବିବରଣୀ ପାଇଁ ଟାପ୍ କରନ୍ତୁ।"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"ଆପଣଙ୍କ ଡିଭାଇସ୍ ବର୍ତ୍ତମାନ ଲିଭାଯିବ"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"ଲୋଡ୍ କରାଯାଉଛି…"</string>
<string name="capital_on" msgid="2770685323900821829">"ଅନ୍"</string>
<string name="capital_off" msgid="7443704171014626777">"ଅଫ୍"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"ଯାଞ୍ଚ ହୋଇଛି"</string>
+ <string name="not_checked" msgid="7972320087569023342">"ଯାଞ୍ଚ ହୋଇନାହିଁ"</string>
<string name="whichApplication" msgid="5432266899591255759">"ବ୍ୟବହାର କରି କାର୍ଯ୍ୟ ସମ୍ପୂର୍ଣ୍ଣ କରନ୍ତୁ"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"%1$s ବ୍ୟବହାର କରି କାର୍ଯ୍ୟ ସମ୍ପୂର୍ଣ୍ଣ କରନ୍ତୁ"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"କାର୍ଯ୍ୟ ସମ୍ପୂର୍ଣ୍ଣ କରନ୍ତୁ"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"ଦାଖଲ କରନ୍ତୁ"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"ଡ୍ରାଇଭିଙ୍ଗ ଆପ୍ ଚାଲୁଛି"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"ଡ୍ରାଇଭିଙ୍ଗ ଆପ୍ରୁ ବାହାରିବା ପାଇଁ ଟାପ୍ କରନ୍ତୁ।"</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"ଟିଥରିଙ୍ଗ କିମ୍ୱା ହଟସ୍ପଟ୍ ସକ୍ରିୟ ଅଛି"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"ସେଟଅପ୍ କରିବାକୁ ଟାପ୍ କରନ୍ତୁ।"</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"ଟିଥରିଙ୍ଗ ଅକ୍ଷମ କରାଯାଇଛି"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"ବିବରଣୀ ପାଇଁ ନିଜ ଆଡମିନ୍ଙ୍କ ସହ ଯୋଗାଯୋଗ କରନ୍ତୁ"</string>
<string name="back_button_label" msgid="4078224038025043387">"ଫେରନ୍ତୁ"</string>
<string name="next_button_label" msgid="6040209156399907780">"ପରବର୍ତ୍ତୀ"</string>
<string name="skip_button_label" msgid="3566599811326688389">"ଛାଡ଼ିଦିଅନ୍ତୁ"</string>
@@ -2004,6 +2000,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"ଦୁଇଟି ସ୍କ୍ରିନ୍ ମଧ୍ୟରେ ଟୋଗଲ୍ କରନ୍ତୁ"</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"ସ୍କ୍ରିନ୍ ଲକ୍ କରନ୍ତୁ"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"ସ୍କ୍ରିନ୍ସଟ୍ ନିଅନ୍ତୁ"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"ପପ୍-ଅପ୍ ୱିଣ୍ଡୋରେ <xliff:g id="APP_NAME">%1$s</xliff:g> ଆପ୍"</string>
</resources>
diff --git a/core/res/res/values-pa/strings.xml b/core/res/res/values-pa/strings.xml
index 891f1f1..7760db0 100644
--- a/core/res/res/values-pa/strings.xml
+++ b/core/res/res/values-pa/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"ਕਾਰਜ ਪ੍ਰੋਫਾਈਲ ਪ੍ਰਸ਼ਾਸਕ ਐਪ ਜਾਂ ਤਾਂ ਗੁੰਮਸ਼ੁਦਾ ਹੈ ਜਾਂ ਖਰਾਬ ਹੈ। ਨਤੀਜੇ ਵਜੋਂ, ਤੁਹਾਡੀ ਕਾਰਜ ਪ੍ਰੋਫਾਈਲ ਅਤੇ ਸਬੰਧਿਤ ਡਾਟਾ ਮਿਟਾਇਆ ਗਿਆ ਹੈ। ਸਹਾਇਤਾ ਲਈ ਆਪਣੇ ਪ੍ਰਸ਼ਾਸਕ ਨਾਲ ਸੰਪਰਕ ਕਰੋ।"</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"ਤੁਹਾਡਾ ਕਾਰਜ ਪ੍ਰੋਫਾਈਲ ਹੁਣ ਇਸ ਡੀਵਾਈਸ \'ਤੇ ਉਪਲਬਧ ਨਹੀਂ ਹੈ"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"ਕਈ ਵਾਰ ਗਲਤ ਪਾਸਵਰਡ ਦਾਖਲ ਕੀਤਾ ਗਿਆ"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"ਡੀਵਾਈਸ ਪ੍ਰਬੰਧਨ ਅਧੀਨ ਹੈ"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"ਤੁਹਾਡਾ ਸੰਗਠਨ ਇਸ ਡੀਵਾਈਸ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਦਾ ਹੈ ਅਤੇ ਨੈੱਟਵਰਕ ਟਰੈਫਿਕ ਦੀ ਨਿਗਰਾਨੀ ਕਰ ਸਕਦਾ ਹੈ। ਵੇਰਵਿਆਂ ਲਈ ਟੈਪ ਕਰੋ।"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"ਤੁਹਾਡਾ ਡੀਵਾਈਸ ਮਿਟਾਇਆ ਜਾਏਗਾ"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"ਲੋਡ ਹੋ ਰਿਹਾ ਹੈ..."</string>
<string name="capital_on" msgid="2770685323900821829">"ਚਾਲੂ"</string>
<string name="capital_off" msgid="7443704171014626777">"ਬੰਦ"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"ਨਿਸ਼ਾਨਬੱਧ ਕੀਤਾ ਗਿਆ"</string>
+ <string name="not_checked" msgid="7972320087569023342">"ਨਿਸ਼ਾਨਬੱਧ ਨਹੀਂ ਕੀਤਾ ਗਿਆ"</string>
<string name="whichApplication" msgid="5432266899591255759">"ਇਸਨੂੰ ਵਰਤਦੇ ਹੋਏ ਕਾਰਵਾਈ ਪੂਰੀ ਕਰੋ"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"%1$s ਵਰਤਦੇ ਹੋਏ ਕਾਰਵਾਈ ਪੂਰੀ ਕਰੋ"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"ਕਾਰਵਾਈ ਪੂਰੀ ਕਰੋ"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"ਪ੍ਰਸਤੁਤ ਕਰੋ"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"ਗੱਡੀ ਚਲਾਉਣ ਸੰਬੰਧੀ ਐਪ ਚੱਲ ਰਹੀ ਹੈ"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"ਗੱਡੀ ਚਲਾਉਣ ਸੰਬੰਧੀ ਐਪ ਤੋਂ ਬਾਹਰ ਜਾਣ ਲਈ ਟੈਪ ਕਰੋ।"</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"ਟੈਦਰਿੰਗ ਜਾਂ ਹੌਟਸਪੌਟ ਕਿਰਿਆਸ਼ੀਲ"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"ਸਥਾਪਤ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ।"</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"ਟੈਦਰਿੰਗ ਨੂੰ ਅਯੋਗ ਬਣਾਇਆ ਗਿਆ ਹੈ"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"ਵੇਰਵਿਆਂ ਲਈ ਆਪਣੇ ਪ੍ਰਸ਼ਾਸਕ ਨੂੰ ਸੰਪਰਕ ਕਰੋ"</string>
<string name="back_button_label" msgid="4078224038025043387">"ਪਿੱਛੇ"</string>
<string name="next_button_label" msgid="6040209156399907780">"ਅੱਗੇ"</string>
<string name="skip_button_label" msgid="3566599811326688389">"ਛੱਡੋ"</string>
@@ -2004,6 +2000,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"ਸਪਲਿਟ ਸਕ੍ਰੀਨ ਨੂੰ ਟੌਗਲ ਕਰੋ"</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"ਲਾਕ ਸਕ੍ਰੀਨ"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"ਸਕ੍ਰੀਨਸ਼ਾਟ"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"ਪੌਪ-ਅੱਪ ਵਿੰਡੋ ਵਿੱਚ <xliff:g id="APP_NAME">%1$s</xliff:g> ਐਪ।"</string>
</resources>
diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml
index 811c5d8..4ff7cc4 100644
--- a/core/res/res/values-pl/strings.xml
+++ b/core/res/res/values-pl/strings.xml
@@ -192,6 +192,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"Brakuje aplikacji administratora profilu do pracy lub jest ona uszkodzona. Dlatego Twój profil służbowy i związane z nim dane zostały usunięte. Skontaktuj się ze swoim administratorem, by uzyskać pomoc."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Twój profil służbowy nie jest już dostępny na tym urządzeniu"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Zbyt wiele prób podania hasła"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"Urządzenie jest zarządzane"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Twoja organizacja zarządza tym urządzeniem i może monitorować ruch w sieci. Kliknij, by dowiedzieć się więcej."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Twoje urządzenie zostanie wyczyszczone"</string>
@@ -1156,10 +1158,8 @@
<string name="loading" msgid="3138021523725055037">"Wczytuję…"</string>
<string name="capital_on" msgid="2770685323900821829">"Wł."</string>
<string name="capital_off" msgid="7443704171014626777">"Wył."</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"wybrano"</string>
+ <string name="not_checked" msgid="7972320087569023342">"nie wybrano"</string>
<string name="whichApplication" msgid="5432266899591255759">"Wykonaj czynność przez..."</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Wykonaj czynność w aplikacji %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Wykonaj działanie"</string>
@@ -1469,10 +1469,6 @@
<string name="submit" msgid="862795280643405865">"Prześlij"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Tryb samochodowy jest włączony"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Kliknij, by zakończyć tryb samochodowy."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Aktywny tethering lub punkt dostępu"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Kliknij, by skonfigurować."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"Tethering został wyłączony"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Aby uzyskać szczegółowe informacje, skontaktuj się z administratorem"</string>
<string name="back_button_label" msgid="4078224038025043387">"Wróć"</string>
<string name="next_button_label" msgid="6040209156399907780">"Dalej"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Pomiń"</string>
@@ -2072,6 +2068,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Przełącz podzielony ekran"</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Ekran blokady"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Zrzut ekranu"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"Aplikacja <xliff:g id="APP_NAME">%1$s</xliff:g> w wyskakującym okienku."</string>
</resources>
diff --git a/core/res/res/values-pt-rBR/strings.xml b/core/res/res/values-pt-rBR/strings.xml
index ecd10c3..1750d2a 100644
--- a/core/res/res/values-pt-rBR/strings.xml
+++ b/core/res/res/values-pt-rBR/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"O app para administrador do perfil de trabalho não foi encontrado ou está corrompido. Consequentemente, seu perfil de trabalho e os dados relacionados foram excluídos. Entre em contato com seu administrador para receber assistência."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Seu perfil de trabalho não está mais disponível neste dispositivo"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Muitas tentativas de senha"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"O dispositivo é gerenciado"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Sua organização gerencia este dispositivo e pode monitorar o tráfego de rede. Toque para ver detalhes."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Seu dispositivo será limpo"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"Carregando…"</string>
<string name="capital_on" msgid="2770685323900821829">"LIG"</string>
<string name="capital_off" msgid="7443704171014626777">"DESL"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"marcado"</string>
+ <string name="not_checked" msgid="7972320087569023342">"não marcado"</string>
<string name="whichApplication" msgid="5432266899591255759">"Complete a ação usando"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Concluir a ação usando %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Concluir ação"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"Enviar"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"O app para carro está sendo usado"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Toque para sair do app para carro."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Ponto de acesso ou tethering ativo"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Toque para configurar."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"Tethering desativado"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Fale com seu administrador para saber detalhes"</string>
<string name="back_button_label" msgid="4078224038025043387">"Voltar"</string>
<string name="next_button_label" msgid="6040209156399907780">"Avançar"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Pular"</string>
diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml
index 0cfbf8c..5c21c0d 100644
--- a/core/res/res/values-pt-rPT/strings.xml
+++ b/core/res/res/values-pt-rPT/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"A aplicação de administração do perfil de trabalho está em falta ou danificada. Consequentemente, o seu perfil de trabalho e os dados relacionados foram eliminados. Contacte o gestor para obter assistência."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"O seu perfil de trabalho já não está disponível neste dispositivo"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Demasiadas tentativas de introdução da palavra-passe"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"O dispositivo é gerido"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"A sua entidade gere este dispositivo e pode monitorizar o tráfego de rede. Toque para obter mais detalhes."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"O seu dispositivo será apagado"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"A carregar…"</string>
<string name="capital_on" msgid="2770685323900821829">"Ativado"</string>
<string name="capital_off" msgid="7443704171014626777">"Desativado"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"selecionado"</string>
+ <string name="not_checked" msgid="7972320087569023342">"não selecionado"</string>
<string name="whichApplication" msgid="5432266899591255759">"Concluir ação utilizando"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Concluir ação utilizando %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Concluir ação"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"Enviar"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"A aplicação de condução está em execução."</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Toque para sair da aplicação de condução."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Ligação ponto a ponto ou hotspot activos"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Toque para configurar."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"A ligação (à Internet) via telemóvel está desativada."</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Contacte o gestor para obter detalhes."</string>
<string name="back_button_label" msgid="4078224038025043387">"Anterior"</string>
<string name="next_button_label" msgid="6040209156399907780">"Seguinte"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Ignorar"</string>
diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml
index ecd10c3..1750d2a 100644
--- a/core/res/res/values-pt/strings.xml
+++ b/core/res/res/values-pt/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"O app para administrador do perfil de trabalho não foi encontrado ou está corrompido. Consequentemente, seu perfil de trabalho e os dados relacionados foram excluídos. Entre em contato com seu administrador para receber assistência."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Seu perfil de trabalho não está mais disponível neste dispositivo"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Muitas tentativas de senha"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"O dispositivo é gerenciado"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Sua organização gerencia este dispositivo e pode monitorar o tráfego de rede. Toque para ver detalhes."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Seu dispositivo será limpo"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"Carregando…"</string>
<string name="capital_on" msgid="2770685323900821829">"LIG"</string>
<string name="capital_off" msgid="7443704171014626777">"DESL"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"marcado"</string>
+ <string name="not_checked" msgid="7972320087569023342">"não marcado"</string>
<string name="whichApplication" msgid="5432266899591255759">"Complete a ação usando"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Concluir a ação usando %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Concluir ação"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"Enviar"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"O app para carro está sendo usado"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Toque para sair do app para carro."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Ponto de acesso ou tethering ativo"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Toque para configurar."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"Tethering desativado"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Fale com seu administrador para saber detalhes"</string>
<string name="back_button_label" msgid="4078224038025043387">"Voltar"</string>
<string name="next_button_label" msgid="6040209156399907780">"Avançar"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Pular"</string>
diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml
index f501032..397525a 100644
--- a/core/res/res/values-ro/strings.xml
+++ b/core/res/res/values-ro/strings.xml
@@ -190,6 +190,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"Aplicația de administrare a profilului de serviciu lipsește sau este deteriorată. Prin urmare, profilul de serviciu și datele asociate au fost șterse. Pentru asistență, contactați administratorul."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Profilul de serviciu nu mai este disponibil pe acest dispozitiv"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Prea multe încercări de introducere a parolei"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"Dispozitivul este gestionat"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Organizația dvs. gestionează acest dispozitiv și poate monitoriza traficul în rețea. Atingeți pentru mai multe detalii."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Datele de pe dispozitiv vor fi șterse"</string>
@@ -1136,10 +1138,8 @@
<string name="loading" msgid="3138021523725055037">"Se încarcă…"</string>
<string name="capital_on" msgid="2770685323900821829">"DA"</string>
<string name="capital_off" msgid="7443704171014626777">"NU"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"bifat"</string>
+ <string name="not_checked" msgid="7972320087569023342">"nebifat"</string>
<string name="whichApplication" msgid="5432266899591255759">"Finalizare acțiune utilizând"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Finalizați acțiunea utilizând %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Finalizați acțiunea"</string>
@@ -1449,10 +1449,6 @@
<string name="submit" msgid="862795280643405865">"Trimiteți"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Aplicația pentru condus rulează"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Atingeți ca să ieșiți din aplicația pentru condus."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Tethering sau hotspot activ"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Atingeți ca să configurați."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"Tetheringul este dezactivat"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Contactați administratorul pentru detalii"</string>
<string name="back_button_label" msgid="4078224038025043387">"Înapoi"</string>
<string name="next_button_label" msgid="6040209156399907780">"Înainte"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Omiteți"</string>
@@ -2038,6 +2034,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Activați ecranul împărțit"</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Ecran de blocare"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Captură de ecran"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"Aplicația <xliff:g id="APP_NAME">%1$s</xliff:g> în fereastră pop-up."</string>
</resources>
diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml
index aefc373..a7abbff 100644
--- a/core/res/res/values-ru/strings.xml
+++ b/core/res/res/values-ru/strings.xml
@@ -192,6 +192,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"Приложение для администрирования рабочего профиля отсутствует или повреждено. Из-за этого рабочий профиль и связанные с ним данные были удалены. Если у вас возникли вопросы, обратитесь к администратору."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Ваш рабочий профиль больше не доступен на этом устройстве"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Слишком много попыток ввести пароль."</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"Это управляемое устройство"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Ваша организация управляет этим устройством и может отслеживать сетевой трафик. Подробнее…"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Все данные с устройства будут удалены"</string>
@@ -1156,10 +1158,8 @@
<string name="loading" msgid="3138021523725055037">"Загрузка…"</string>
<string name="capital_on" msgid="2770685323900821829">"I"</string>
<string name="capital_off" msgid="7443704171014626777">"O"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"отмечено"</string>
+ <string name="not_checked" msgid="7972320087569023342">"не отмечено"</string>
<string name="whichApplication" msgid="5432266899591255759">"Что использовать?"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Выполнить с помощью приложения \"%1$s\""</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Выполнить действие"</string>
@@ -1469,10 +1469,6 @@
<string name="submit" msgid="862795280643405865">"Отправить"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Приложение для вождения включено"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Нажмите, чтобы выйти из приложения для вождения."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Включен режим модема"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Нажмите, чтобы настроить."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"Включить режим модема нельзя"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Обратитесь к администратору, чтобы узнать подробности."</string>
<string name="back_button_label" msgid="4078224038025043387">"Назад"</string>
<string name="next_button_label" msgid="6040209156399907780">"Далее"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Пропустить"</string>
@@ -2072,6 +2068,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Включить или выключить разделение экрана"</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Заблокированный экран"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Скриншот"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"Приложение \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" в всплывающем окне."</string>
</resources>
diff --git a/core/res/res/values-si/strings.xml b/core/res/res/values-si/strings.xml
index 67dfbd3..7d3f80d 100644
--- a/core/res/res/values-si/strings.xml
+++ b/core/res/res/values-si/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"කාර්යාල පැතිකඩ පාලක යෙදුම නොමැති හෝ දූෂණය වී ඇත. ප්රතිඵලයක් ලෙස ඔබගේ කාර්යාල පැතිකඩ සහ අදාළ දත්ත මකා දමා ඇත. සහය සඳහා ඔබගේ පරිපාලකයා සම්බන්ධ කර ගන්න."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"ඔබේ කාර්යාල පැතිකඩ මෙම උපාංගය මත තවදුරටත් ලබා ගැනීමට නොහැකිය"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"මුරපද උත්සාහ කිරීම් ඉතා වැඩි ගණනකි"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"උපාංගය කළමනාකරණය කෙරේ"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"ඔබගේ ආයතනය මෙම උපාංගය කළමනාකරණය කරන අතර එය ජාල තදබදය නිරීක්ෂණය කළ හැක. විස්තර සඳහා තට්ටු කරන්න."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"ඔබගේ උපාංගය මකා දැමෙනු ඇත"</string>
@@ -1118,10 +1120,8 @@
<string name="loading" msgid="3138021523725055037">"පූරණය වෙමින්..."</string>
<string name="capital_on" msgid="2770685323900821829">"සක්රීයයි"</string>
<string name="capital_off" msgid="7443704171014626777">"ක්රියාවිරහිතයි"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"පරීක්ෂා කර ඇත"</string>
+ <string name="not_checked" msgid="7972320087569023342">"පරීක්ෂා කර නැත"</string>
<string name="whichApplication" msgid="5432266899591255759">"පහත භාවිතයෙන් ක්රියාව සම්පූර්ණ කරන්න"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"%1$s භාවිතා කරමින් ක්රියාව සම්පුර්ණ කරන්න"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"ක්රියාව සම්පූර්ණ කරන්න"</string>
@@ -1431,10 +1431,6 @@
<string name="submit" msgid="862795280643405865">"යොමු කරන්න"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"රියදුරු යෙදුම ධාවනය වේ."</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"රියදුරු යෙදුමෙන් පිටවීම සඳහා තට්ටු කරන්න."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"ටෙදරින් හෝ හොට්ස්පොට් සක්රීයයි"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"පිහිටුවීමට තට්ටු කරන්න."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"ටෙදරින් අබල කර ඇත"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"විස්තර සඳහා ඔබගේ පරිපාලක අමතන්න"</string>
<string name="back_button_label" msgid="4078224038025043387">"ආපසු"</string>
<string name="next_button_label" msgid="6040209156399907780">"මීලඟ"</string>
<string name="skip_button_label" msgid="3566599811326688389">"මඟ හරින්න"</string>
@@ -2006,6 +2002,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"බෙදුම් තිරය ටොගල කරන්න"</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"අගුලු තිරය"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"තිර රුව"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"උත්පතන කවුළුව තුළ <xliff:g id="APP_NAME">%1$s</xliff:g> යෙදුම."</string>
</resources>
diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml
index c1eec99..3a81468c 100644
--- a/core/res/res/values-sk/strings.xml
+++ b/core/res/res/values-sk/strings.xml
@@ -192,6 +192,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"Aplikácia na správu pracovného profilu buď chýba, alebo je poškodená. Z toho dôvodu bol odstránený pracovný profil aj k nemu priradené dáta. Ak potrebujete pomoc, kontaktujte svojho správcu."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Váš pracovný profil už v tomto zariadení nie je k dispozícii"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Príliš veľa pokusov o zadanie hesla"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"Zariadenie je spravované"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Vaša organizácia spravuje toto zariadenie a môže sledovať sieťovú premávku. Klepnutím zobrazíte podrobnosti."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Vaše zariadenie bude vymazané"</string>
@@ -1156,10 +1158,8 @@
<string name="loading" msgid="3138021523725055037">"Načítava sa…"</string>
<string name="capital_on" msgid="2770685323900821829">"I"</string>
<string name="capital_off" msgid="7443704171014626777">"O"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"začiarknuté"</string>
+ <string name="not_checked" msgid="7972320087569023342">"nezačiarknuté"</string>
<string name="whichApplication" msgid="5432266899591255759">"Dokončiť akciu pomocou aplikácie"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Dokončiť akciu pomocou aplikácie %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Dokončiť akciu"</string>
@@ -1469,10 +1469,6 @@
<string name="submit" msgid="862795280643405865">"Odoslať"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Aplikácia na šoférovanie je spustená"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Klepnutím ukončíte aplikáciu na šoférovanie"</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Tethering alebo prístupový bod je aktívny"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Klepnutím prejdete na nastavenie."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"Tethering je deaktivovaný"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"O podrobnosti požiadajte svojho správcu"</string>
<string name="back_button_label" msgid="4078224038025043387">"Späť"</string>
<string name="next_button_label" msgid="6040209156399907780">"Ďalej"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Preskočiť"</string>
@@ -2072,6 +2068,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Prepnúť rozdelenú obrazovku"</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Uzamknúť obrazovku"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Snímka obrazovky"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"Aplikácia <xliff:g id="APP_NAME">%1$s</xliff:g> vo vyskakovacom okne."</string>
</resources>
diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml
index d15d6a9..c28384c 100644
--- a/core/res/res/values-sl/strings.xml
+++ b/core/res/res/values-sl/strings.xml
@@ -192,6 +192,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"Skrbniška aplikacija delovnega profila manjka ali pa je poškodovana, zaradi česar je bil delovni profil s povezanimi podatki izbrisan. Za pomoč se obrnite na skrbnika."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Vaš delovni profil ni več na voljo v tej napravi"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Preveč poskusov vnosa gesla"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"Naprava je upravljana"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Vaša organizacija upravlja to napravo in lahko nadzira omrežni promet. Dotaknite se za podrobnosti."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Podatki v napravi bodo izbrisani"</string>
@@ -1156,10 +1158,8 @@
<string name="loading" msgid="3138021523725055037">"Nalaganje …"</string>
<string name="capital_on" msgid="2770685323900821829">"VKLOPLJENO"</string>
<string name="capital_off" msgid="7443704171014626777">"IZKLOPLJENO"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"potrjeno"</string>
+ <string name="not_checked" msgid="7972320087569023342">"ni potrjeno"</string>
<string name="whichApplication" msgid="5432266899591255759">"Dokončanje dejanja z"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Dokončanje dejanja z aplikacijo %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Izvedba dejanja"</string>
@@ -1469,10 +1469,6 @@
<string name="submit" msgid="862795280643405865">"Pošlji"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Aplikacija za vožnjo se izvaja"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Dotaknite se, če želite zapreti aplikacijo za vožnjo."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Aktivna povezava z internetom ali dostopna točka sta aktivni"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Dotaknite se, če želite nastaviti."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"Povezava z internetom prek mobilnega telefona je onemogočena"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Za podrobnosti se obrnite na skrbnika"</string>
<string name="back_button_label" msgid="4078224038025043387">"Nazaj"</string>
<string name="next_button_label" msgid="6040209156399907780">"Naprej"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Preskoči"</string>
@@ -2072,6 +2068,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Preklop razdeljenega zaslona"</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Zaklenjen zaslon"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Posnetek zaslona"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> v pojavnem oknu."</string>
</resources>
diff --git a/core/res/res/values-sq/strings.xml b/core/res/res/values-sq/strings.xml
index 6bf8184..39f7377 100644
--- a/core/res/res/values-sq/strings.xml
+++ b/core/res/res/values-sq/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"Aplikacioni i administratorit të profilit të punës mungon ose është dëmtuar. Si rezultat i kësaj, profili yt i punës dhe të dhënat përkatëse janë fshirë. Kontakto me administratorin për ndihmë."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Profili yt i punës nuk është më i disponueshëm në këtë pajisje"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Shumë përpjekje për fjalëkalimin"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"Pajisja është e menaxhuar"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Organizata jote e menaxhon këtë pajisje dhe mund të monitorojë trafikun e rrjetit. Trokit për detaje."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Pajisja do të spastrohet"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"Po ngarkohet..."</string>
<string name="capital_on" msgid="2770685323900821829">"Aktivizuar"</string>
<string name="capital_off" msgid="7443704171014626777">"Çaktivizuar"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"u përzgjodh"</string>
+ <string name="not_checked" msgid="7972320087569023342">"nuk u përzgjodh"</string>
<string name="whichApplication" msgid="5432266899591255759">"Përfundo veprimin duke përdorur"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Përfundo veprimin duke përdorur %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Përfundo veprimin"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"Dërgo"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Aplikacioni i drejtimit të makinës është në ekzekutim"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Trokit për të dalë nga aplikacioni i drejtimit të makinës."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Lidhja e çiftimit ose ajo e qasjes në zona publike interneti është aktive"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Trokit për ta konfiguruar."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"Lidhja e çiftimit është çaktivizuar"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Kontakto me administratorin për detaje"</string>
<string name="back_button_label" msgid="4078224038025043387">"Prapa"</string>
<string name="next_button_label" msgid="6040209156399907780">"Përpara"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Kapërce"</string>
@@ -2004,6 +2000,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Kalo tek ekrani i ndarë"</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Ekrani i kyçjes"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Pamja e ekranit"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"Aplikacioni <xliff:g id="APP_NAME">%1$s</xliff:g> në dritaren kërcyese."</string>
</resources>
diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml
index 37410a7..e93c852 100644
--- a/core/res/res/values-sr/strings.xml
+++ b/core/res/res/values-sr/strings.xml
@@ -190,6 +190,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"Апликација за администраторе на профилу за Work недостаје или је оштећена. Због тога су профил за Work и повезани подаци избрисани. Обратите се администратору за помоћ."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Профил за Work више није доступан на овом уређају"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Превише покушаја уноса лозинке"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"Уређајем се управља"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Организација управља овим уређајем и може да надгледа мрежни саобраћај. Додирните за детаље."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Уређај ће бити обрисан"</string>
@@ -1136,10 +1138,8 @@
<string name="loading" msgid="3138021523725055037">"Учитава се…"</string>
<string name="capital_on" msgid="2770685323900821829">"ДА"</string>
<string name="capital_off" msgid="7443704171014626777">"НЕ"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"означено је"</string>
+ <string name="not_checked" msgid="7972320087569023342">"није означено"</string>
<string name="whichApplication" msgid="5432266899591255759">"Довршавање радње помоћу"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Завршите радњу помоћу апликације %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Заврши радњу"</string>
@@ -1449,10 +1449,6 @@
<string name="submit" msgid="862795280643405865">"Пошаљи"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Апликација за вожњу је покренута"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Додирните да бисте изашли из апликације за вожњу."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Активно повезивање са интернетом преко мобилног уређаја или хотспот"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Додирните да бисте подесили."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"Привезивање је онемогућено"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Потражите детаље од администратора"</string>
<string name="back_button_label" msgid="4078224038025043387">"Назад"</string>
<string name="next_button_label" msgid="6040209156399907780">"Next"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Прескочи"</string>
diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml
index a5b657a..cf0e0bb 100644
--- a/core/res/res/values-sv/strings.xml
+++ b/core/res/res/values-sv/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"Administratörsappen för jobbprofilen saknas eller är skadad. Det innebär att jobbprofilen och all relaterad data har raderats. Kontakta administratören om du vill ha hjälp."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Jobbprofilen är inte längre tillgänglig på enheten"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"För många försök med lösenord"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"Enheten hanteras"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Organisationen hanterar den här enheten och kan övervaka nätverkstrafiken. Tryck om du vill veta mer."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Enheten kommer att rensas"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"Läser in …"</string>
<string name="capital_on" msgid="2770685323900821829">"PÅ"</string>
<string name="capital_off" msgid="7443704171014626777">"AV"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"markerad"</string>
+ <string name="not_checked" msgid="7972320087569023342">"inte markerad"</string>
<string name="whichApplication" msgid="5432266899591255759">"Slutför åtgärd genom att använda"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Slutför åtgärden med %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Slutför åtgärd"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"Skicka"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Bilkörningsappen körs"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Tryck här om du vill avsluta bilkörningsappen."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Internetdelning eller surfzon aktiverad"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Tryck om du vill konfigurera."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"Internetdelning har inaktiverats"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Kontakta administratören om du vill veta mer"</string>
<string name="back_button_label" msgid="4078224038025043387">"Tillbaka"</string>
<string name="next_button_label" msgid="6040209156399907780">"Nästa"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Hoppa över"</string>
diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml
index d587e25..f8cd19c 100644
--- a/core/res/res/values-sw/strings.xml
+++ b/core/res/res/values-sw/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"Programu ya msimamizi wa wasifu wa kazini imepotea au ina hitilafu. Kwa sababu hiyo, wasifu wako wa kazini na data husika imefutwa. Wasiliana na msimamizi wako kwa usaidizi."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Wasifu wako wa kazini haupatikani tena kwenye kifaa hiki"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Umejaribu kuweka nenosiri mara nyingi mno"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"Kifaa kinadhibitiwa"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Shirika lako linadhibiti kifaa hiki na huenda likafuatilia shughuli kwenye mtandao. Gusa ili upate maelezo zaidi."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Data iliyomo kwenye kifaa chako itafutwa"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"Inapakia…"</string>
<string name="capital_on" msgid="2770685323900821829">"Washa"</string>
<string name="capital_off" msgid="7443704171014626777">"ZIMA"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"imeteuliwa"</string>
+ <string name="not_checked" msgid="7972320087569023342">"haijateuliwa"</string>
<string name="whichApplication" msgid="5432266899591255759">"Kamilisha kitendo ukitumia"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Kamilisha kitendo ukitumia %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Kamilisha kitendo"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"Wasilisha"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Umewasha programu ya kuendesha gari"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Gusa ili ufunge programu ya kuendesha gari."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Kushiriki au kusambaza intaneti kumewashwa"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Gusa ili uweke mipangilio."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"Umezima kipengele cha kusambaza mtandao"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Wasiliana na msimamizi wako ili upate maelezo zaidi"</string>
<string name="back_button_label" msgid="4078224038025043387">"Nyuma"</string>
<string name="next_button_label" msgid="6040209156399907780">"Endelea"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Ruka"</string>
@@ -2004,6 +2000,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Geuza Skrini Iliyogawanywa"</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Skrini Iliyofungwa"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Picha ya skrini"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"Programu ya <xliff:g id="APP_NAME">%1$s</xliff:g> katika dirisha Ibukizi."</string>
</resources>
diff --git a/core/res/res/values-ta/strings.xml b/core/res/res/values-ta/strings.xml
index 90b8bc8..ac284d3 100644
--- a/core/res/res/values-ta/strings.xml
+++ b/core/res/res/values-ta/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"பணிக் கணக்கு நிர்வாகி ஆப்ஸ் இல்லை அல்லது அது சிதைந்துள்ளது. இதன் விளைவாக, உங்கள் பணிக் கணக்குமும் அதனுடன் தொடர்புடைய தரவும் நீக்கப்பட்டன. உதவிக்கு, நிர்வாகியைத் தொடர்புகொள்ளவும்."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"இந்தச் சாதனத்தில் இனி பணிக் கணக்கு கிடைக்காது"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"கடவுச்சொல்லை அதிக முறை தவறாக முயற்சித்துவிட்டீர்கள்"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"சாதனம் நிர்வகிக்கப்படுகிறது"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"உங்கள் நிறுவனம் இந்தச் சாதனத்தை நிர்வகிக்கும், அத்துடன் அது நெட்வொர்க் ட்ராஃபிக்கைக் கண்காணிக்கலாம். விவரங்களுக்கு, தட்டவும்."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"சாதனத் தரவு அழிக்கப்படும்"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"ஏற்றுகிறது..."</string>
<string name="capital_on" msgid="2770685323900821829">"ஆன்"</string>
<string name="capital_off" msgid="7443704171014626777">"ஆஃப்"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"இயக்கப்பட்டுள்ளது"</string>
+ <string name="not_checked" msgid="7972320087569023342">"முடக்கப்பட்டுள்ளது"</string>
<string name="whichApplication" msgid="5432266899591255759">"இதைப் பயன்படுத்தி செயலை நிறைவுசெய்"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"%1$s ஐப் பயன்படுத்தி செயலை முடிக்கவும்"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"செயலை முடி"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"சமர்ப்பி"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"\'வாகனம் ஓட்டும் பயன்முறை’ ஆனில் உள்ளது"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"வாகனம் ஓட்டும் பயன்முறையிலிருந்து வெளியேற, தட்டவும்."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"டெதெரிங்/ஹாட்ஸ்பாட் இயங்குகிறது"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"அமைக்க, தட்டவும்."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"இணைப்பு முறை முடக்கப்பட்டுள்ளது"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"விவரங்களுக்கு, உங்கள் நிர்வாகியைத் தொடர்புகொள்ளவும்"</string>
<string name="back_button_label" msgid="4078224038025043387">"முந்தையது"</string>
<string name="next_button_label" msgid="6040209156399907780">"அடுத்து"</string>
<string name="skip_button_label" msgid="3566599811326688389">"தவிர்"</string>
@@ -2004,6 +2000,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"திரைப் பிரிப்பை நிலைமாற்று"</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"பூட்டுத் திரை"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"ஸ்கிரீன்ஷாட்"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"<xliff:g id="APP_NAME">%1$s</xliff:g> ஆப்ஸில் உள்ள பாப் அப் சாளரம்."</string>
</resources>
diff --git a/core/res/res/values-te/strings.xml b/core/res/res/values-te/strings.xml
index 63821aa..6641c41 100644
--- a/core/res/res/values-te/strings.xml
+++ b/core/res/res/values-te/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"కార్యాలయ ప్రొఫైల్ నిర్వాహక యాప్ లేదు లేదా పాడైంది. తత్ఫలితంగా, మీ కార్యాలయ ప్రొఫైల్ మరియు సంబంధిత డేటా తొలగించబడ్డాయి. సహాయం కోసం మీ నిర్వాహకులను సంప్రదించండి."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"ఈ పరికరంలో మీ కార్యాలయ ప్రొఫైల్ ఇప్పుడు అందుబాటులో లేదు"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"చాలా ఎక్కువ పాస్వర్డ్ ప్రయత్నాలు చేసారు"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"పరికరం నిర్వహించబడింది"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"మీ సంస్థ ఈ పరికరాన్ని నిర్వహిస్తుంది మరియు నెట్వర్క్ ట్రాఫిక్ని పర్యవేక్షించవచ్చు. వివరాల కోసం నొక్కండి."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"మీ పరికరంలోని డేటా తొలగించబడుతుంది"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"లోడ్ చేస్తోంది…"</string>
<string name="capital_on" msgid="2770685323900821829">"ఆన్లో ఉంది"</string>
<string name="capital_off" msgid="7443704171014626777">"ఆఫ్"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"ఎంచుకోబడింది"</string>
+ <string name="not_checked" msgid="7972320087569023342">"ఎంచుకోలేదు"</string>
<string name="whichApplication" msgid="5432266899591255759">"దీన్ని ఉపయోగించి చర్యను పూర్తి చేయండి"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"%1$sను ఉపయోగించి చర్యను పూర్తి చేయి"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"చర్యను పూర్తి చేయి"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"సమర్పించు"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"డ్రైవింగ్ యాప్ అమలవుతోంది"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"డ్రైవింగ్ యాప్ నుండి నిష్క్రమించడం కోసం నొక్కండి."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"టీథర్ చేయబడినది లేదా హాట్స్పాట్ సక్రియంగా ఉండేది"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"సెటప్ చేయడానికి నొక్కండి."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"టెథెరింగ్ నిలిపివేయబడింది"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"వివరాల కోసం మీ నిర్వాహకులను సంప్రదించండి"</string>
<string name="back_button_label" msgid="4078224038025043387">"వెనుకకు"</string>
<string name="next_button_label" msgid="6040209156399907780">"తర్వాత"</string>
<string name="skip_button_label" msgid="3566599811326688389">"దాటవేయి"</string>
@@ -2004,6 +2000,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"స్క్రీన్ విభజనను టోగుల్ చేయి"</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"స్క్రీన్ను లాక్ చేయి"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"స్క్రీన్షాట్"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"పాప్-అప్ విండోలో <xliff:g id="APP_NAME">%1$s</xliff:g> యాప్ ఉంది."</string>
</resources>
diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml
index d4646b9..bc4b79e 100644
--- a/core/res/res/values-th/strings.xml
+++ b/core/res/res/values-th/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"แอปผู้ดูแลระบบโปรไฟล์งานไม่มีอยู่หรือเสียหาย ระบบจึงทำการลบโปรไฟล์งานและข้อมูลที่เกี่ยวข้องของคุณออก โปรดติดต่อผู้ดูแลระบบเพื่อรับความช่วยเหลือ"</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"โปรไฟล์งานของคุณไม่สามารถใช้ในอุปกรณ์นี้อีกต่อไป"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"ลองป้อนรหัสผ่านหลายครั้งเกินไป"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"อุปกรณ์มีการจัดการ"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"องค์กรของคุณจัดการอุปกรณ์นี้และอาจตรวจสอบการจราจรของข้อมูลในเครือข่าย แตะเพื่อดูรายละเอียด"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"ระบบจะลบข้อมูลในอุปกรณ์ของคุณ"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"กำลังโหลด..."</string>
<string name="capital_on" msgid="2770685323900821829">"เปิด"</string>
<string name="capital_off" msgid="7443704171014626777">"ปิด"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"เลือกไว้"</string>
+ <string name="not_checked" msgid="7972320087569023342">"ยังไม่เลือก"</string>
<string name="whichApplication" msgid="5432266899591255759">"ทำงานให้เสร็จโดยใช้"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"ดำเนินการให้เสร็จสมบูรณ์โดยใช้ %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"ทำงานให้เสร็จสิ้น"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"ส่ง"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"แอปสำหรับการขับขี่ทำงานอยู่"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"แตะเพื่อออกจากแอปสำหรับการขับขี่"</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"การปล่อยสัญญาณหรือฮอตสปอตทำงานอยู่"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"แตะเพื่อตั้งค่า"</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"ปิดใช้การเชื่อมต่ออินเทอร์เน็ตผ่านมือถือแล้ว"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"ติดต่อผู้ดูแลระบบเพื่อขอรายละเอียด"</string>
<string name="back_button_label" msgid="4078224038025043387">"กลับ"</string>
<string name="next_button_label" msgid="6040209156399907780">"ถัดไป"</string>
<string name="skip_button_label" msgid="3566599811326688389">"ข้าม"</string>
@@ -2004,6 +2000,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"เปิด/ปิดการแบ่งหน้าจอ"</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"หน้าจอล็อก"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"ภาพหน้าจอ"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"แอป <xliff:g id="APP_NAME">%1$s</xliff:g> ในหน้าต่างป๊อปอัป"</string>
</resources>
diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml
index 93ec517..b24e95a 100644
--- a/core/res/res/values-tl/strings.xml
+++ b/core/res/res/values-tl/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"Nawawala o nasira ang admin app ng profile sa trabaho. Dahil dito, na-delete ang profile mo sa trabaho at nauugnay na data. Makipag-ugnayan sa iyong admin para sa tulong."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Hindi na available sa device na ito ang iyong profile sa trabaho"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Masyadong maraming pagsubok sa password"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"Pinamamahalaan ang device"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Pinamamahalaan ng iyong organisasyon ang device na ito, at maaari nitong subaybayan ang trapiko sa network. I-tap para sa mga detalye."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Buburahin ang iyong device"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"Naglo-load…"</string>
<string name="capital_on" msgid="2770685323900821829">"I-ON"</string>
<string name="capital_off" msgid="7443704171014626777">"I-OFF"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"nilagyan ng check"</string>
+ <string name="not_checked" msgid="7972320087569023342">"hindi nilagyan ng check"</string>
<string name="whichApplication" msgid="5432266899591255759">"Kumpletuhin ang pagkilos gamit ang"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Tapusin ang pagkilos gamit ang %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Gawin ang pagkilos"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"Isumite"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Tumatakbo ang driving app"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Mag-tap para lumabas sa app sa pagmamaneho."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Pagsasama o aktibong hotspot"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"I-tap upang i-set up."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"Naka-disable ang pag-tether"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Makipag-ugnayan sa iyong admin para sa mga detalye"</string>
<string name="back_button_label" msgid="4078224038025043387">"Bumalik"</string>
<string name="next_button_label" msgid="6040209156399907780">"Susunod"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Laktawan"</string>
@@ -2004,6 +2000,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"I-toggle ang Split Screen"</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Lock Screen"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Screenshot"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"<xliff:g id="APP_NAME">%1$s</xliff:g> app sa Pop-up na window."</string>
</resources>
diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml
index 1a4d532..326ace9 100644
--- a/core/res/res/values-tr/strings.xml
+++ b/core/res/res/values-tr/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"İş profili yönetici uygulaması eksik ya da bozuk. Bunun sonucunda iş profiliniz ve ilgili veriler silindi. Yardım almak için yöneticiniz ile iletişim kurun."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"İş profiliniz arık bu cihazda kullanılamıyor"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Çok fazla şifre denemesi yapıldı"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"Cihaz yönetiliyor"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Kuruluşunuz bu cihazı yönetmekte olup ağ trafiğini izleyebilir. Ayrıntılar için dokunun."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Cihazınız silinecek"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"Yükleniyor..."</string>
<string name="capital_on" msgid="2770685323900821829">"AÇIK"</string>
<string name="capital_off" msgid="7443704171014626777">"KAPALI"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"işaretli"</string>
+ <string name="not_checked" msgid="7972320087569023342">"işaretli değil"</string>
<string name="whichApplication" msgid="5432266899591255759">"İşlemi şunu kullanarak tamamla"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"İşlemi %1$s kullanarak tamamla"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"İşlemi tamamla"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"Gönder"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Sürüş uygulaması çalışıyor"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Sürüş uygulamasından çıkmak için dokunun."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Tethering veya hotspot etkin"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Ayarlamak için dokunun."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"Tethering devre dışı bırakıldı"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Ayrıntılı bilgi için yöneticinize başvurun"</string>
<string name="back_button_label" msgid="4078224038025043387">"Geri"</string>
<string name="next_button_label" msgid="6040209156399907780">"İleri"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Atla"</string>
@@ -2004,6 +2000,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Bölünmüş Ekranı aç/kapat"</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Kilit Ekranı"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Ekran görüntüsü"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"Pop-up pencerede <xliff:g id="APP_NAME">%1$s</xliff:g> uygulaması."</string>
</resources>
diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml
index b785e06..8007f9e 100644
--- a/core/res/res/values-uk/strings.xml
+++ b/core/res/res/values-uk/strings.xml
@@ -192,6 +192,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"Додаток адміністратора в робочому профілі відсутній або пошкоджений. У результаті ваш робочий профіль і пов’язані з ним дані видалено. Зверніться до свого адміністратора по допомогу."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Робочий профіль більше не доступний на цьому пристрої"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Забагато спроб ввести пароль"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"Пристрій контролюється"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Адміністратор вашої організації контролює цей пристрій і відстежує мережевий трафік. Торкніться, щоб дізнатися більше."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"З вашого пристрою буде стерто всі дані"</string>
@@ -1156,10 +1158,8 @@
<string name="loading" msgid="3138021523725055037">"Завантаження..."</string>
<string name="capital_on" msgid="2770685323900821829">"УВІМК"</string>
<string name="capital_off" msgid="7443704171014626777">"ВИМК"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"вибрано"</string>
+ <string name="not_checked" msgid="7972320087569023342">"не вибрано"</string>
<string name="whichApplication" msgid="5432266899591255759">"Завершити дію за доп."</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Завершити дію за допомогою %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Завершити дію"</string>
@@ -1469,10 +1469,6 @@
<string name="submit" msgid="862795280643405865">"Надіслати"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Працює додаток для автомобілів"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Торкніться, щоб вийти з додатка для автомобілів."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Прив\'язка чи точка дост. активна"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Торкніться, щоб налаштувати."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"Використання телефона в режимі модема вимкнено"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Щоб дізнатися більше, зв’яжіться з адміністратором"</string>
<string name="back_button_label" msgid="4078224038025043387">"Назад"</string>
<string name="next_button_label" msgid="6040209156399907780">"Далі"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Пропустити"</string>
@@ -2072,6 +2068,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Розділити екран"</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Заблокувати екран"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Знімок екрана"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"Додаток <xliff:g id="APP_NAME">%1$s</xliff:g> у спливаючому вікні."</string>
</resources>
diff --git a/core/res/res/values-ur/strings.xml b/core/res/res/values-ur/strings.xml
index b54653e..312aed7d 100644
--- a/core/res/res/values-ur/strings.xml
+++ b/core/res/res/values-ur/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"دفتری پروفائل کی منتظم ایپ یا تو غائب ہے یا خراب ہے۔ اس کی وجہ سے، آپ کا دفتری پروفائل اور متعلقہ ڈیٹا حذف کر دیے گئے ہیں۔ مدد کیلئے اپنے منتظم سے رابطہ کریں۔"</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"آپ کا دفتری پروفائل اس آلہ پر مزید دستیاب نہیں ہے"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"پاس ورڈ کی بہت ساری کوششیں"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"آلہ زیر انتظام ہے"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"آپ کی تنظیم اس آلے کا نظم کرتی ہے اور وہ نیٹ ورک ٹریفک کی نگرانی کر سکتی ہے۔ تفاصیل کیلئے تھپتھپائیں۔"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"آپ کا آلہ صاف کر دیا جائے گا"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"لوڈ ہو رہا ہے…"</string>
<string name="capital_on" msgid="2770685323900821829">"آن"</string>
<string name="capital_off" msgid="7443704171014626777">"آف"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"چیک کیا گیا"</string>
+ <string name="not_checked" msgid="7972320087569023342">"چیک نہیں کیا گیا"</string>
<string name="whichApplication" msgid="5432266899591255759">"اس کا استعمال کرکے کارروائی مکمل کریں"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"%1$s کا استعمال کر کے کارروائی مکمل کریں"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"کارروائی مکمل کریں"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"جمع کرائیں"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"ڈرائیونگ ایپ چل رہی ہے"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"ڈرائیونگ ایپ سے باہر نکلنے کے لئے تھپتھپائيں۔"</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"ٹیدرنگ یا ہاٹ اسپاٹ فعال"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"سیٹ اپ کرنے کیلئے تھپتھپائیں۔"</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"ٹیدرنگ غیر فعال ہے"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"تفصیلات کے لئے اپنے منتظم سے رابطہ کریں"</string>
<string name="back_button_label" msgid="4078224038025043387">"واپس جائیں"</string>
<string name="next_button_label" msgid="6040209156399907780">"اگلا"</string>
<string name="skip_button_label" msgid="3566599811326688389">"نظر انداز کریں"</string>
@@ -2004,6 +2000,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"اسپلٹ اسکرین ٹوگل کریں"</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"مقفل اسکرین"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"اسکرین شاٹ"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"پوپ-اپ ونڈو میں <xliff:g id="APP_NAME">%1$s</xliff:g> ایپ۔"</string>
</resources>
diff --git a/core/res/res/values-uz/strings.xml b/core/res/res/values-uz/strings.xml
index c440e53..c7987d1 100644
--- a/core/res/res/values-uz/strings.xml
+++ b/core/res/res/values-uz/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"Ishchi profilning administrator ilovasi yo‘q yoki buzilgan. Shuning uchun, ishchi profilingiz va unga aloqador ma’lumotlar o‘chirib tashlandi. Yordam olish uchun administratoringizga murojaat qiling."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Bu qurilmada endi ishchi profilingiz mavjud emas"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Parol ko‘p marta xato kiritildi"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"Bu – boshqariladigan qurilma"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Tashkilotingiz bu qurilmani boshqaradi va tarmoq trafigini nazorat qilishi mumkin. Tafsilotlar uchun bosing."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Qurilmangizdagi ma’lumotlar o‘chirib tashlanadi"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"Yuklanmoqda…"</string>
<string name="capital_on" msgid="2770685323900821829">"I"</string>
<string name="capital_off" msgid="7443704171014626777">"O"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"belgilandi"</string>
+ <string name="not_checked" msgid="7972320087569023342">"belgilanmadi"</string>
<string name="whichApplication" msgid="5432266899591255759">"Ilovani tanlang"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"“%1$s” bilan ochish"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Amalni bajarish"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"Yuborish"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Avtomobil ilovasi ishlayapti"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Avtomobil ilovasidan chiqish uchun bosing"</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Modem rejimi yoniq"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Sozlash uchun bosing."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"Modem rejimi faolsizlantirildi"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Tafsilotlari uchun administratoringizga murojaat qiling"</string>
<string name="back_button_label" msgid="4078224038025043387">"Orqaga"</string>
<string name="next_button_label" msgid="6040209156399907780">"Keyingisi"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Tashlab o‘tish"</string>
diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml
index e362382..13c75f6 100644
--- a/core/res/res/values-vi/strings.xml
+++ b/core/res/res/values-vi/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"Ứng dụng quản trị hồ sơ công việc bị thiếu hoặc hỏng. Do vậy, hồ sơ công việc của bạn và dữ liệu liên quan đã bị xóa. Hãy liên hệ với quản trị viên của bạn để được trợ giúp."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Hồ sơ công việc của bạn không có sẵn trên thiết bị này nữa"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Quá nhiều lần nhập mật khẩu"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"Thiết bị được quản lý"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Tổ chức của bạn sẽ quản lý thiết bị này và có thể theo dõi lưu lượng truy cập mạng. Nhấn để biết chi tiết."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Thiết bị của bạn sẽ bị xóa"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"Đang tải…"</string>
<string name="capital_on" msgid="2770685323900821829">"BẬT"</string>
<string name="capital_off" msgid="7443704171014626777">"TẮT"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"đã chọn"</string>
+ <string name="not_checked" msgid="7972320087569023342">"chưa chọn"</string>
<string name="whichApplication" msgid="5432266899591255759">"Hoàn tất tác vụ đang sử dụng"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Hoàn tất tác vụ bằng %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Hoàn thành tác vụ"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"Gửi"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Ứng dụng lái xe đang chạy"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Nhấn để thoát khỏi ứng dụng lái xe."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Chức năng điểm truy cập Internet hoặc điểm phát sóng đang hoạt động"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Nhấn để thiết lập."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"Đã tắt tính năng chia sẻ kết nối"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Hãy liên hệ với quản trị viên của bạn để biết chi tiết"</string>
<string name="back_button_label" msgid="4078224038025043387">"Quay lại"</string>
<string name="next_button_label" msgid="6040209156399907780">"Tiếp theo"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Bỏ qua"</string>
@@ -2004,6 +2000,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Bật/tắt chế độ chia đôi màn hình"</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Khóa màn hình"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Chụp ảnh màn hình"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"Ứng dụng <xliff:g id="APP_NAME">%1$s</xliff:g> trong Cửa sổ bật lên."</string>
</resources>
diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml
index 6df232a..1df2a40 100644
--- a/core/res/res/values-zh-rCN/strings.xml
+++ b/core/res/res/values-zh-rCN/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"工作资料管理应用缺失或损坏,因此系统已删除您的工作资料及相关数据。如需帮助,请与您的管理员联系。"</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"您的工作资料已不在此设备上"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"密码尝试次数过多"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"设备为受管理设备"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"贵单位会管理该设备,且可能会监控网络流量。点按即可了解详情。"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"系统将清空您的设备"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"正在加载..."</string>
<string name="capital_on" msgid="2770685323900821829">"开启"</string>
<string name="capital_off" msgid="7443704171014626777">"关闭"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"已勾选"</string>
+ <string name="not_checked" msgid="7972320087569023342">"未勾选"</string>
<string name="whichApplication" msgid="5432266899591255759">"选择要使用的应用:"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"使用%1$s完成操作"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"完成操作"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"提交"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"驾驶应用正在运行"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"点按即可退出驾驶应用。"</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"网络共享或热点已启用"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"点按即可进行设置。"</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"网络共享已停用"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"请与您的管理员联系以了解详情"</string>
<string name="back_button_label" msgid="4078224038025043387">"上一步"</string>
<string name="next_button_label" msgid="6040209156399907780">"下一步"</string>
<string name="skip_button_label" msgid="3566599811326688389">"跳过"</string>
@@ -2004,6 +2000,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"开启/关闭分屏"</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"锁定屏幕"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"屏幕截图"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"以弹出式窗口形式打开的<xliff:g id="APP_NAME">%1$s</xliff:g>应用。"</string>
</resources>
diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml
index 41dcbed..d4d1f7c 100644
--- a/core/res/res/values-zh-rHK/strings.xml
+++ b/core/res/res/values-zh-rHK/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"工作設定檔管理員應用程式已遺失或損毀。因此,您的工作設定檔和相關資料已刪除。請聯絡您的管理員以取得協助。"</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"您的工作設定檔無法再在此裝置上使用"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"密碼輸入錯誤的次數過多"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"裝置已受管理"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"您的機構會管理此裝置,並可能會監控網絡流量。輕按即可瞭解詳情。"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"您的裝置將被清除"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"正在載入..."</string>
<string name="capital_on" msgid="2770685323900821829">"開啟"</string>
<string name="capital_off" msgid="7443704171014626777">"關"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"已勾選"</string>
+ <string name="not_checked" msgid="7972320087569023342">"未勾選"</string>
<string name="whichApplication" msgid="5432266899591255759">"完成操作需使用"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"完成操作需使用 %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"完成操作"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"提交"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"駕駛應用程式執行中"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"輕按即可退出駕駛應用程式。"</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"已啟用網絡共享或熱點"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"輕按即可設定。"</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"網絡共享已停用"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"請聯絡您的管理員以瞭解詳情"</string>
<string name="back_button_label" msgid="4078224038025043387">"返回"</string>
<string name="next_button_label" msgid="6040209156399907780">"繼續"</string>
<string name="skip_button_label" msgid="3566599811326688389">"略過"</string>
@@ -2004,6 +2000,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"切換分割螢幕"</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"將畫面上鎖"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"螢幕截圖"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」應用程式在彈出式視窗中顯示。"</string>
</resources>
diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml
index d49df97..9997b68 100644
--- a/core/res/res/values-zh-rTW/strings.xml
+++ b/core/res/res/values-zh-rTW/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"工作資料夾管理員應用程式遺失或已毀損,因此系統刪除了你的工作資料夾和相關資料。如需協助,請與你的管理員聯絡。"</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"你的工作資料夾已不在這個裝置上"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"密碼輸入錯誤的次數過多"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"裝置受到管理"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"貴機構會管理這個裝置,且可能監控網路流量。輕觸即可瞭解詳情。"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"你的裝置資料將遭到清除"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"載入中…"</string>
<string name="capital_on" msgid="2770685323900821829">"開啟"</string>
<string name="capital_off" msgid="7443704171014626777">"關閉"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"已勾選"</string>
+ <string name="not_checked" msgid="7972320087569023342">"未勾選"</string>
<string name="whichApplication" msgid="5432266899591255759">"選擇要使用的應用程式"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"完成操作需使用 %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"完成操作"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"提交"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"行車應用程式執行中"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"輕觸即可結束行車應用程式。"</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"網路共用或無線基地台已啟用"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"輕觸即可進行設定。"</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"數據連線已停用"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"詳情請洽你的管理員"</string>
<string name="back_button_label" msgid="4078224038025043387">"返回"</string>
<string name="next_button_label" msgid="6040209156399907780">"繼續"</string>
<string name="skip_button_label" msgid="3566599811326688389">"略過"</string>
@@ -2004,6 +2000,5 @@
<string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"切換分割畫面模式"</string>
<string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"螢幕鎖定"</string>
<string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"擷取螢幕畫面"</string>
- <!-- no translation found for accessibility_freeform_caption (7873194416838321119) -->
- <skip />
+ <string name="accessibility_freeform_caption" msgid="7873194416838321119">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」應用程式顯示在彈出式視窗中。"</string>
</resources>
diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml
index e99b592..5838a93 100644
--- a/core/res/res/values-zu/strings.xml
+++ b/core/res/res/values-zu/strings.xml
@@ -188,6 +188,8 @@
<string name="work_profile_deleted_details" msgid="3773706828364418016">"Uhlelo lokusebenza lokulawula lephrofayela yomsebenzi kungenzeka alukho noma lonakele. Njengomphumela, iphrofayela yakho yomsebenzi nedatha ehlobene isusiwe. Xhumana nomlawuli wakho ukuze uthole usizo."</string>
<string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Iphrofayela yakho yomsebenzi ayisatholakali kule divayisi"</string>
<string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Imizamo yamaphasiwedi eminingi kakhulu"</string>
+ <!-- no translation found for device_ownership_relinquished (4080886992183195724) -->
+ <skip />
<string name="network_logging_notification_title" msgid="554983187553845004">"Idivayisi iphethwe"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Inhlangano yakho iphethe le divayisi futhi kungenzeka ingaqaphi ithrafikhi yenethiwekhi. Thephela imininingwane."</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Idivayisi yakho izosulwa"</string>
@@ -1116,10 +1118,8 @@
<string name="loading" msgid="3138021523725055037">"Iyalayisha…"</string>
<string name="capital_on" msgid="2770685323900821829">"VULIWE"</string>
<string name="capital_off" msgid="7443704171014626777">"VALIWE"</string>
- <!-- no translation found for checked (9179896827054513119) -->
- <skip />
- <!-- no translation found for not_checked (7972320087569023342) -->
- <skip />
+ <string name="checked" msgid="9179896827054513119">"kuhloliwe"</string>
+ <string name="not_checked" msgid="7972320087569023342">"akuhloliwe"</string>
<string name="whichApplication" msgid="5432266899591255759">"Qedela isenzo usebenzisa"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Qedela isenzo usebenzisa i-%1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Qedela isenzo"</string>
@@ -1429,10 +1429,6 @@
<string name="submit" msgid="862795280643405865">"Hambisa"</string>
<string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Uhlelo lokusebenza lokushayela luyasebenza"</string>
<string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Thepha ukuze uphume kuhlelo lokusebenza lokushayela."</string>
- <string name="tethered_notification_title" msgid="2700523927485687353">"Ukusebenzisa njengemodemu noma i-hotspot ephathekayo kuvuliwe"</string>
- <string name="tethered_notification_message" msgid="6228080755828019453">"Thepha ukuze usethe."</string>
- <string name="disable_tether_notification_title" msgid="7158047514545848391">"Ukusebenzisa ifoni njengemodemu kukhutshaziwe"</string>
- <string name="disable_tether_notification_message" msgid="98281313984014775">"Xhumana nomphathi wakho ukuze uthole imininingwane"</string>
<string name="back_button_label" msgid="4078224038025043387">"Emuva"</string>
<string name="next_button_label" msgid="6040209156399907780">"Okulandelayo"</string>
<string name="skip_button_label" msgid="3566599811326688389">"Yeqa"</string>
diff --git a/core/res/res/values/attrs_manifest.xml b/core/res/res/values/attrs_manifest.xml
index ffcfe43..166cde0 100644
--- a/core/res/res/values/attrs_manifest.xml
+++ b/core/res/res/values/attrs_manifest.xml
@@ -298,9 +298,6 @@
<!-- Additional flag from base permission type: this permission can be automatically
granted to the system telephony apps -->
<flag name="telephony" value="0x400000" />
- <!-- Additional flag from base permission type: this permission can be automatically
- granted to the system wifi app-->
- <flag name="wifi" value="0x800000" />
</attr>
<!-- Flags indicating more context for a permission group. -->
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index 74bb2cf..fc9fa85 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -508,7 +508,7 @@
-->
<string translatable="false" name="config_mobile_hotspot_provision_app_no_ui"></string>
<!-- Sent in response to a provisioning check. The caller must hold the
- permission android.permission.CONNECTIVITY_INTERNAL for Settings to
+ permission android.permission.TETHER_PRIVILEGED for Settings to
receive this response.
See config_mobile_hotspot_provision_response
@@ -2148,8 +2148,6 @@
<integer name="config_dreamsBatteryLevelDrainCutoff">5</integer>
<!-- Limit of how long the device can remain unlocked due to attention checking. -->
<integer name="config_attentionMaximumExtension">330000</integer> <!-- 5 minutes and 30 sec.-->
- <!-- How long we should wait until we give up on receiving an attention API callback. -->
- <integer name="config_attentionApiTimeout">2000</integer> <!-- 2 seconds -->
<!-- ComponentName of a dream to show whenever the system would otherwise have
gone to sleep. When the PowerManager is asked to go to sleep, it will instead
@@ -2363,9 +2361,11 @@
1 (0b001) - enforce (only install system packages if they are whitelisted)
2 (0b010) - log (log when a non-whitelisted package is run)
4 (0b100) - treat any package not mentioned in the whitelist file as implicitly whitelisted
+ 8 (0b1000) - ignore OTAs (don't install system packages during OTAs)
Note: This list must be kept current with PACKAGE_WHITELIST_MODE_PROP in
frameworks/base/services/core/java/com/android/server/pm/UserSystemPackageInstaller.java -->
- <integer name="config_userTypePackageWhitelistMode">5</integer> <!-- 0b101 -->
+ <integer name="config_userTypePackageWhitelistMode">13</integer> <!-- 0b1101 -->
+ <!-- TODO(b/143200798): Change to value 5, i.e. 0b0101, when b/143200798 is resolved. -->
<!-- Whether UI for multi user should be shown -->
<bool name="config_enableMultiUserUI">false</bool>
@@ -3517,6 +3517,7 @@
-->
<string name="config_defaultWellbeingPackage" translatable="false"></string>
+
<!-- The package name for the system telephony apps.
This package must be trusted, as it will be granted with permissions with special telephony
protection level. Note, framework by default support multiple telephony apps, each package
@@ -3525,13 +3526,6 @@
-->
<string name="config_telephonyPackages" translatable="false">"com.android.phone,com.android.stk,com.android.providers.telephony,com.android.ons,com.android.cellbroadcastservice"</string>
- <!-- The package name for the default system wifi app.
- This package must be trusted, as it has the permissions to control wifi
- connectivity on the device.
- Example: "com.android.wifi"
- -->
- <string name="config_wifiPackage" translatable="false">"com.android.wifi"</string>
-
<!-- The component name for the default system attention service.
This service must be trusted, as it can be activated without explicit consent of the user.
See android.attention.AttentionManagerService.
@@ -4179,4 +4173,10 @@
<!-- Whether or not to show the built-in charging animation when the device begins charging
wirelessly. -->
<bool name="config_showBuiltinWirelessChargingAnim">true</bool>
+
+ <!-- A list of potential packages, in priority order, that can supply rules to
+ AppIntegrityManager. These need to be apps on the system partition. -->
+ <string-array name="config_integrityRuleProviderPackages" translatable="false">
+ <!-- Add packages here -->
+ </string-array>
</resources>
diff --git a/core/res/res/values/ids.xml b/core/res/res/values/ids.xml
index b52f535..ddd9ba4 100644
--- a/core/res/res/values/ids.xml
+++ b/core/res/res/values/ids.xml
@@ -220,4 +220,7 @@
<!-- Accessibility action identifier for {@link android.accessibilityservice.AccessibilityService#GLOBAL_ACTION_TAKE_SCREENSHOT}. -->
<item type="id" name="accessibilitySystemActionTakeScreenshot" />
+
+ <!-- Accessibility action identifier for {@link android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction#ACTION_PRESS_AND_HOLD}. -->
+ <item type="id" name="accessibilityActionPressAndHold" />
</resources>
diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml
index cde95aa..57e0e1b 100644
--- a/core/res/res/values/public.xml
+++ b/core/res/res/values/public.xml
@@ -3013,6 +3013,7 @@
</public-group>
<public-group type="id" first-id="0x0102004a">
+ <public name="accessibilityActionPressAndHold" />
</public-group>
<public-group type="string" first-id="0x01040025">
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
index a5bbab6..dcf7379 100644
--- a/core/res/res/values/strings.xml
+++ b/core/res/res/values/strings.xml
@@ -404,6 +404,8 @@
<!-- Content text for a notification. The Title of the notification is "Work profile deleted",
This indicates that a work profile has been deleted because the maximum failed password attempts as been reached. [CHAR LIMIT=NONE]-->
<string name="work_profile_deleted_reason_maximum_password_failure">Too many password attempts</string>
+ <!-- Shows up as the reason for the work profile deletion when the admin of an organization-owend device relinquishes it. [CHAR LIMIT=NONE] -->
+ <string name="device_ownership_relinquished">Admin relinquished device for personal use</string>
<!-- Content title for a notification. This notification indicates that the device is managed
and network logging was activated by a device owner. [CHAR LIMIT=NONE]-->
@@ -3836,18 +3838,6 @@
<string name="car_mode_disable_notification_title">Driving app is running</string>
<string name="car_mode_disable_notification_message">Tap to exit driving app.</string>
- <!-- Strings for tethered notification -->
- <!-- Shown when the device is tethered -->
- <string name="tethered_notification_title">Tethering or hotspot active</string>
- <string name="tethered_notification_message">Tap to set up.</string>
-
- <!-- Strings for tether disabling notification -->
- <!-- This notification is shown when tethering has been disabled on a user's device.
- The device is managed by the user's employer. Tethering can't be turned on unless the
- IT administrator allows it. The noun "admin" is another reference for "IT administrator." -->
- <string name="disable_tether_notification_title">Tethering is disabled</string>
- <string name="disable_tether_notification_message">Contact your admin for details</string>
-
<!-- Strings for possible PreferenceActivity Back/Next buttons -->
<string name="back_button_label">Back</string>
<string name="next_button_label">Next</string>
@@ -5081,11 +5071,14 @@
data (for example, username, password and credit card info) [CHAR LIMIT=NONE] -->
<string name="autofill_update_title_with_3types">Update these items in <b><xliff:g id="label" example="MyPass">%4$s</xliff:g></b>: <xliff:g id="type" example="Username">%1$s</xliff:g>, <xliff:g id="type" example="Password">%2$s</xliff:g>, and <xliff:g id="type" example="Credit Card">%3$s</xliff:g> ?</string>
-
<!-- Label for the autofill save button [CHAR LIMIT=NONE] -->
<string name="autofill_save_yes">Save</string>
<!-- Label for the autofill cancel button [CHAR LIMIT=NONE] -->
<string name="autofill_save_no">No thanks</string>
+ <!-- Label for the autofill cancel button, saying not to save the filled data at this moment. [CHAR LIMIT=NONE] -->
+ <string name="autofill_save_notnow">Not now</string>
+ <!-- Label for the autofill reject button, saying never to save the filled data. [CHAR LIMIT=NONE] -->
+ <string name="autofill_save_never">Never</string>
<!-- Label for the autofill update button [CHAR LIMIT=NONE] -->
<string name="autofill_update_yes">Update</string>
<!-- Label for the autofill continue button [CHAR LIMIT=NONE] -->
@@ -5331,5 +5324,5 @@
<string name="accessibility_system_action_screenshot_label">Screenshot</string>
<!-- Accessibility description of caption view -->
- <string name="accessibility_freeform_caption"><xliff:g id="app_name">%1$s</xliff:g> app in Pop-up window.</string>
+ <string name="accessibility_freeform_caption">Caption bar of <xliff:g id="app_name">%1$s</xliff:g>.</string>
</resources>
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index 5a1c652..c6c9094 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -456,6 +456,7 @@
<java-symbol type="string" name="config_deviceSpecificDevicePolicyManagerService" />
<java-symbol type="string" name="config_deviceSpecificAudioService" />
<java-symbol type="integer" name="config_num_physical_slots" />
+ <java-symbol type="array" name="config_integrityRuleProviderPackages" />
<java-symbol type="color" name="tab_indicator_text_v4" />
@@ -1193,6 +1194,7 @@
<java-symbol type="string" name="work_profile_deleted_details" />
<java-symbol type="string" name="work_profile_deleted_description_dpm_wipe" />
<java-symbol type="string" name="work_profile_deleted_reason_maximum_password_failure" />
+ <java-symbol type="string" name="device_ownership_relinquished" />
<java-symbol type="string" name="network_logging_notification_title" />
<java-symbol type="string" name="network_logging_notification_text" />
<java-symbol type="string" name="factory_reset_warning" />
@@ -1891,9 +1893,6 @@
<java-symbol type="drawable" name="stat_sys_battery_charge" />
<java-symbol type="drawable" name="stat_sys_battery_unknown" />
<java-symbol type="drawable" name="stat_sys_data_usb" />
- <java-symbol type="drawable" name="stat_sys_tether_bluetooth" />
- <java-symbol type="drawable" name="stat_sys_tether_general" />
- <java-symbol type="drawable" name="stat_sys_tether_usb" />
<java-symbol type="drawable" name="stat_sys_throttled" />
<java-symbol type="drawable" name="vpn_connected" />
<java-symbol type="drawable" name="vpn_disconnected" />
@@ -2069,10 +2068,6 @@
<java-symbol type="string" name="select_keyboard_layout_notification_message" />
<java-symbol type="string" name="smv_application" />
<java-symbol type="string" name="smv_process" />
- <java-symbol type="string" name="tethered_notification_message" />
- <java-symbol type="string" name="tethered_notification_title" />
- <java-symbol type="string" name="disable_tether_notification_message" />
- <java-symbol type="string" name="disable_tether_notification_title" />
<java-symbol type="string" name="adb_debugging_notification_channel_tv" />
<java-symbol type="string" name="usb_accessory_notification_title" />
<java-symbol type="string" name="usb_mtp_notification_title" />
@@ -3246,6 +3241,8 @@
<java-symbol type="string" name="autofill_save_title_with_3types" />
<java-symbol type="string" name="autofill_save_yes" />
<java-symbol type="string" name="autofill_save_no" />
+ <java-symbol type="string" name="autofill_save_notnow" />
+ <java-symbol type="string" name="autofill_save_never" />
<java-symbol type="string" name="autofill_save_type_password" />
<java-symbol type="string" name="autofill_save_type_address" />
<java-symbol type="string" name="autofill_save_type_credit_card" />
@@ -3359,7 +3356,6 @@
<java-symbol type="array" name="config_defaultTextClassifierPackages" />
<java-symbol type="string" name="config_defaultWellbeingPackage" />
<java-symbol type="string" name="config_telephonyPackages" />
- <java-symbol type="string" name="config_wifiPackage" />
<java-symbol type="string" name="config_defaultContentCaptureService" />
<java-symbol type="string" name="config_defaultAugmentedAutofillService" />
<java-symbol type="string" name="config_defaultAppPredictionService" />
@@ -3649,7 +3645,6 @@
<!-- For Attention Service -->
<java-symbol type="integer" name="config_attentionMaximumExtension" />
- <java-symbol type="integer" name="config_attentionApiTimeout" />
<java-symbol type="string" name="config_incidentReportApproverPackage" />
<java-symbol type="array" name="config_restrictedImagesServices" />
diff --git a/core/tests/ConnectivityManagerTest/AndroidManifest.xml b/core/tests/ConnectivityManagerTest/AndroidManifest.xml
index a391e1f..796d7e8 100644
--- a/core/tests/ConnectivityManagerTest/AndroidManifest.xml
+++ b/core/tests/ConnectivityManagerTest/AndroidManifest.xml
@@ -73,9 +73,9 @@
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
- <!-- This permission is added for API call setAirplaneMode() in ConnectivityManager -->
- <uses-permission android:name="android.permission.CONNECTIVITY_INTERNAL" />
<uses-permission android:name="android.permission.TETHER_PRIVILEGED" />
+ <!-- This permission is added for API call setAirplaneMode() in ConnectivityManager -->
+ <uses-permission android:name="android.permission.NETWORK_SETTINGS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.DEVICE_POWER" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
diff --git a/core/tests/coretests/src/android/app/timedetector/PhoneTimeSuggestionTest.java b/core/tests/coretests/src/android/app/timedetector/PhoneTimeSuggestionTest.java
index 1b5ad88..c9a86dc 100644
--- a/core/tests/coretests/src/android/app/timedetector/PhoneTimeSuggestionTest.java
+++ b/core/tests/coretests/src/android/app/timedetector/PhoneTimeSuggestionTest.java
@@ -30,17 +30,22 @@
@Test
public void testEquals() {
- PhoneTimeSuggestion one =
- new PhoneTimeSuggestion(PHONE_ID, new TimestampedValue<>(1111L, 2222L));
+ PhoneTimeSuggestion one = new PhoneTimeSuggestion(PHONE_ID);
assertEquals(one, one);
- PhoneTimeSuggestion two =
- new PhoneTimeSuggestion(PHONE_ID, new TimestampedValue<>(1111L, 2222L));
+ PhoneTimeSuggestion two = new PhoneTimeSuggestion(PHONE_ID);
assertEquals(one, two);
assertEquals(two, one);
- PhoneTimeSuggestion three =
- new PhoneTimeSuggestion(PHONE_ID + 1, new TimestampedValue<>(1111L, 2222L));
+ one.setUtcTime(new TimestampedValue<>(1111L, 2222L));
+ assertEquals(one, one);
+
+ two.setUtcTime(new TimestampedValue<>(1111L, 2222L));
+ assertEquals(one, two);
+ assertEquals(two, one);
+
+ PhoneTimeSuggestion three = new PhoneTimeSuggestion(PHONE_ID + 1);
+ three.setUtcTime(new TimestampedValue<>(1111L, 2222L));
assertNotEquals(one, three);
assertNotEquals(three, one);
@@ -52,8 +57,10 @@
@Test
public void testParcelable() {
- PhoneTimeSuggestion one =
- new PhoneTimeSuggestion(PHONE_ID, new TimestampedValue<>(1111L, 2222L));
+ PhoneTimeSuggestion one = new PhoneTimeSuggestion(PHONE_ID);
+ assertEquals(one, roundTripParcelable(one));
+
+ one.setUtcTime(new TimestampedValue<>(1111L, 2222L));
assertEquals(one, roundTripParcelable(one));
// DebugInfo should also be stored (but is not checked by equals()
diff --git a/core/tests/coretests/src/android/app/timezonedetector/ManualTimeZoneSuggestionTest.java b/core/tests/coretests/src/android/app/timezonedetector/ManualTimeZoneSuggestionTest.java
new file mode 100644
index 0000000..02ed0ed
--- /dev/null
+++ b/core/tests/coretests/src/android/app/timezonedetector/ManualTimeZoneSuggestionTest.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.app.timezonedetector;
+
+import static android.app.timezonedetector.ParcelableTestSupport.assertRoundTripParcelable;
+import static android.app.timezonedetector.ParcelableTestSupport.roundTripParcelable;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
+
+import org.junit.Test;
+
+public class ManualTimeZoneSuggestionTest {
+
+ private static final String ARBITRARY_ZONE_ID1 = "Europe/London";
+ private static final String ARBITRARY_ZONE_ID2 = "Europe/Paris";
+
+ @Test
+ public void testEquals() {
+ ManualTimeZoneSuggestion one = new ManualTimeZoneSuggestion(ARBITRARY_ZONE_ID1);
+ assertEquals(one, one);
+
+ ManualTimeZoneSuggestion two = new ManualTimeZoneSuggestion(ARBITRARY_ZONE_ID1);
+ assertEquals(one, two);
+ assertEquals(two, one);
+
+ ManualTimeZoneSuggestion three = new ManualTimeZoneSuggestion(ARBITRARY_ZONE_ID2);
+ assertNotEquals(one, three);
+ assertNotEquals(three, one);
+
+ // DebugInfo must not be considered in equals().
+ one.addDebugInfo("Debug info 1");
+ two.addDebugInfo("Debug info 2");
+ assertEquals(one, two);
+ }
+
+ @Test
+ public void testParcelable() {
+ ManualTimeZoneSuggestion suggestion = new ManualTimeZoneSuggestion(ARBITRARY_ZONE_ID1);
+ assertRoundTripParcelable(suggestion);
+
+ // DebugInfo should also be stored (but is not checked by equals()
+ suggestion.addDebugInfo("This is debug info");
+ ManualTimeZoneSuggestion rtSuggestion = roundTripParcelable(suggestion);
+ assertEquals(suggestion.getDebugInfo(), rtSuggestion.getDebugInfo());
+ }
+}
diff --git a/core/tests/coretests/src/android/app/timezonedetector/ParcelableTestSupport.java b/core/tests/coretests/src/android/app/timezonedetector/ParcelableTestSupport.java
new file mode 100644
index 0000000..0073d86
--- /dev/null
+++ b/core/tests/coretests/src/android/app/timezonedetector/ParcelableTestSupport.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.app.timezonedetector;
+
+import static org.junit.Assert.assertEquals;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import java.lang.reflect.Field;
+
+/** Utility methods related to {@link Parcelable} objects used in several tests. */
+public final class ParcelableTestSupport {
+
+ private ParcelableTestSupport() {}
+
+ /** Returns the result of parceling and unparceling the argument. */
+ @SuppressWarnings("unchecked")
+ public static <T extends Parcelable> T roundTripParcelable(T parcelable) {
+ Parcel parcel = Parcel.obtain();
+ parcel.writeTypedObject(parcelable, 0);
+ parcel.setDataPosition(0);
+
+ Parcelable.Creator<T> creator;
+ try {
+ Field creatorField = parcelable.getClass().getField("CREATOR");
+ creator = (Parcelable.Creator<T>) creatorField.get(null);
+ } catch (NoSuchFieldException | IllegalAccessException e) {
+ throw new AssertionError(e);
+ }
+ T toReturn = parcel.readTypedObject(creator);
+ parcel.recycle();
+ return toReturn;
+ }
+
+ public static <T extends Parcelable> void assertRoundTripParcelable(T instance) {
+ assertEquals(instance, roundTripParcelable(instance));
+ }
+}
diff --git a/core/tests/coretests/src/android/app/timezonedetector/PhoneTimeZoneSuggestionTest.java b/core/tests/coretests/src/android/app/timezonedetector/PhoneTimeZoneSuggestionTest.java
new file mode 100644
index 0000000..0108a0b
--- /dev/null
+++ b/core/tests/coretests/src/android/app/timezonedetector/PhoneTimeZoneSuggestionTest.java
@@ -0,0 +1,155 @@
+/*
+ * Copyright 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.app.timezonedetector;
+
+import static android.app.timezonedetector.ParcelableTestSupport.assertRoundTripParcelable;
+import static android.app.timezonedetector.ParcelableTestSupport.roundTripParcelable;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertTrue;
+
+import org.junit.Test;
+
+public class PhoneTimeZoneSuggestionTest {
+ private static final int PHONE_ID = 99999;
+
+ @Test
+ public void testEquals() {
+ PhoneTimeZoneSuggestion.Builder builder1 = new PhoneTimeZoneSuggestion.Builder(PHONE_ID);
+ {
+ PhoneTimeZoneSuggestion one = builder1.build();
+ assertEquals(one, one);
+ }
+
+ PhoneTimeZoneSuggestion.Builder builder2 = new PhoneTimeZoneSuggestion.Builder(PHONE_ID);
+ {
+ PhoneTimeZoneSuggestion one = builder1.build();
+ PhoneTimeZoneSuggestion two = builder2.build();
+ assertEquals(one, two);
+ assertEquals(two, one);
+ }
+
+ PhoneTimeZoneSuggestion.Builder builder3 =
+ new PhoneTimeZoneSuggestion.Builder(PHONE_ID + 1);
+ {
+ PhoneTimeZoneSuggestion one = builder1.build();
+ PhoneTimeZoneSuggestion three = builder3.build();
+ assertNotEquals(one, three);
+ assertNotEquals(three, one);
+ }
+
+ builder1.setZoneId("Europe/London");
+ builder1.setMatchType(PhoneTimeZoneSuggestion.MATCH_TYPE_NETWORK_COUNTRY_ONLY);
+ builder1.setQuality(PhoneTimeZoneSuggestion.QUALITY_SINGLE_ZONE);
+ {
+ PhoneTimeZoneSuggestion one = builder1.build();
+ PhoneTimeZoneSuggestion two = builder2.build();
+ assertNotEquals(one, two);
+ }
+
+ builder2.setZoneId("Europe/Paris");
+ builder2.setMatchType(PhoneTimeZoneSuggestion.MATCH_TYPE_NETWORK_COUNTRY_ONLY);
+ builder2.setQuality(PhoneTimeZoneSuggestion.QUALITY_SINGLE_ZONE);
+ {
+ PhoneTimeZoneSuggestion one = builder1.build();
+ PhoneTimeZoneSuggestion two = builder2.build();
+ assertNotEquals(one, two);
+ }
+
+ builder1.setZoneId("Europe/Paris");
+ {
+ PhoneTimeZoneSuggestion one = builder1.build();
+ PhoneTimeZoneSuggestion two = builder2.build();
+ assertEquals(one, two);
+ }
+
+ builder1.setMatchType(PhoneTimeZoneSuggestion.MATCH_TYPE_EMULATOR_ZONE_ID);
+ builder2.setMatchType(PhoneTimeZoneSuggestion.MATCH_TYPE_NETWORK_COUNTRY_ONLY);
+ {
+ PhoneTimeZoneSuggestion one = builder1.build();
+ PhoneTimeZoneSuggestion two = builder2.build();
+ assertNotEquals(one, two);
+ }
+
+ builder1.setMatchType(PhoneTimeZoneSuggestion.MATCH_TYPE_NETWORK_COUNTRY_ONLY);
+ {
+ PhoneTimeZoneSuggestion one = builder1.build();
+ PhoneTimeZoneSuggestion two = builder2.build();
+ assertEquals(one, two);
+ }
+
+ builder1.setQuality(PhoneTimeZoneSuggestion.QUALITY_SINGLE_ZONE);
+ builder2.setQuality(PhoneTimeZoneSuggestion.QUALITY_MULTIPLE_ZONES_WITH_DIFFERENT_OFFSETS);
+ {
+ PhoneTimeZoneSuggestion one = builder1.build();
+ PhoneTimeZoneSuggestion two = builder2.build();
+ assertNotEquals(one, two);
+ }
+
+ builder1.setQuality(PhoneTimeZoneSuggestion.QUALITY_MULTIPLE_ZONES_WITH_DIFFERENT_OFFSETS);
+ {
+ PhoneTimeZoneSuggestion one = builder1.build();
+ PhoneTimeZoneSuggestion two = builder2.build();
+ assertEquals(one, two);
+ }
+
+ // DebugInfo must not be considered in equals().
+ {
+ PhoneTimeZoneSuggestion one = builder1.build();
+ PhoneTimeZoneSuggestion two = builder2.build();
+ one.addDebugInfo("Debug info 1");
+ two.addDebugInfo("Debug info 2");
+ assertEquals(one, two);
+ }
+ }
+
+ @Test(expected = RuntimeException.class)
+ public void testBuilderValidates_emptyZone_badMatchType() {
+ PhoneTimeZoneSuggestion.Builder builder = new PhoneTimeZoneSuggestion.Builder(PHONE_ID);
+ // No zone ID, so match type should be left unset.
+ builder.setMatchType(PhoneTimeZoneSuggestion.MATCH_TYPE_NETWORK_COUNTRY_AND_OFFSET);
+ builder.build();
+ }
+
+ @Test(expected = RuntimeException.class)
+ public void testBuilderValidates_zoneSet_badMatchType() {
+ PhoneTimeZoneSuggestion.Builder builder = new PhoneTimeZoneSuggestion.Builder(PHONE_ID);
+ builder.setZoneId("Europe/London");
+ builder.setQuality(PhoneTimeZoneSuggestion.QUALITY_SINGLE_ZONE);
+ builder.build();
+ }
+
+ @Test
+ public void testParcelable() {
+ PhoneTimeZoneSuggestion.Builder builder = new PhoneTimeZoneSuggestion.Builder(PHONE_ID);
+ assertRoundTripParcelable(builder.build());
+
+ builder.setZoneId("Europe/London");
+ builder.setMatchType(PhoneTimeZoneSuggestion.MATCH_TYPE_EMULATOR_ZONE_ID);
+ builder.setQuality(PhoneTimeZoneSuggestion.QUALITY_SINGLE_ZONE);
+ PhoneTimeZoneSuggestion suggestion1 = builder.build();
+ assertRoundTripParcelable(suggestion1);
+
+ // DebugInfo should also be stored (but is not checked by equals()
+ String debugString = "This is debug info";
+ suggestion1.addDebugInfo(debugString);
+ PhoneTimeZoneSuggestion suggestion1_2 = roundTripParcelable(suggestion1);
+ assertEquals(suggestion1, suggestion1_2);
+ assertTrue(suggestion1_2.getDebugInfo().contains(debugString));
+ }
+}
diff --git a/services/tests/servicestests/src/com/android/server/integrity/model/AtomicFormulaTest.java b/core/tests/coretests/src/android/content/integrity/AtomicFormulaTest.java
similarity index 81%
rename from services/tests/servicestests/src/com/android/server/integrity/model/AtomicFormulaTest.java
rename to core/tests/coretests/src/android/content/integrity/AtomicFormulaTest.java
index c8c5eca..e48f1c3 100644
--- a/services/tests/servicestests/src/com/android/server/integrity/model/AtomicFormulaTest.java
+++ b/core/tests/coretests/src/android/content/integrity/AtomicFormulaTest.java
@@ -14,20 +14,19 @@
* limitations under the License.
*/
-package com.android.server.integrity.model;
+package android.content.integrity;
-import static com.android.server.testutils.TestUtils.assertExpectException;
+import static android.content.integrity.TestUtils.assertExpectException;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
+import android.content.integrity.AtomicFormula.BooleanAtomicFormula;
+import android.content.integrity.AtomicFormula.IntAtomicFormula;
+import android.content.integrity.AtomicFormula.StringAtomicFormula;
import android.os.Parcel;
-import com.android.server.integrity.model.AtomicFormula.BooleanAtomicFormula;
-import com.android.server.integrity.model.AtomicFormula.IntAtomicFormula;
-import com.android.server.integrity.model.AtomicFormula.StringAtomicFormula;
-
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -38,7 +37,8 @@
@Test
public void testValidAtomicFormula_stringValue() {
StringAtomicFormula stringAtomicFormula =
- new StringAtomicFormula(AtomicFormula.PACKAGE_NAME, "com.test.app");
+ new StringAtomicFormula(
+ AtomicFormula.PACKAGE_NAME, "com.test.app", /* isHashedValue= */ false);
assertEquals(AtomicFormula.PACKAGE_NAME, stringAtomicFormula.getKey());
}
@@ -64,9 +64,12 @@
assertExpectException(
IllegalArgumentException.class,
/* expectedExceptionMessageRegex */
- String.format(
- "Key VERSION_CODE cannot be used with StringAtomicFormula"),
- () -> new StringAtomicFormula(AtomicFormula.VERSION_CODE, "test-value"));
+ String.format("Key VERSION_CODE cannot be used with StringAtomicFormula"),
+ () ->
+ new StringAtomicFormula(
+ AtomicFormula.VERSION_CODE,
+ "test-value",
+ /* isHashedValue= */ false));
}
@Test
@@ -74,8 +77,7 @@
assertExpectException(
IllegalArgumentException.class,
/* expectedExceptionMessageRegex */
- String.format(
- "Key PACKAGE_NAME cannot be used with IntAtomicFormula"),
+ String.format("Key PACKAGE_NAME cannot be used with IntAtomicFormula"),
() -> new IntAtomicFormula(AtomicFormula.PACKAGE_NAME, AtomicFormula.EQ, 1));
}
@@ -84,15 +86,15 @@
assertExpectException(
IllegalArgumentException.class,
/* expectedExceptionMessageRegex */
- String.format(
- "Key PACKAGE_NAME cannot be used with BooleanAtomicFormula"),
+ String.format("Key PACKAGE_NAME cannot be used with BooleanAtomicFormula"),
() -> new BooleanAtomicFormula(AtomicFormula.PACKAGE_NAME, true));
}
@Test
public void testIsSatisfiable_string_true() {
StringAtomicFormula stringAtomicFormula =
- new StringAtomicFormula(AtomicFormula.PACKAGE_NAME, "com.test.app");
+ new StringAtomicFormula(
+ AtomicFormula.PACKAGE_NAME, "com.test.app", /* isHashedValue= */ false);
AppInstallMetadata appInstallMetadata =
getAppInstallMetadataBuilder().setPackageName("com.test.app").build();
@@ -102,7 +104,8 @@
@Test
public void testIsSatisfiable_string_false() {
StringAtomicFormula stringAtomicFormula =
- new StringAtomicFormula(AtomicFormula.PACKAGE_NAME, "com.test.app");
+ new StringAtomicFormula(
+ AtomicFormula.PACKAGE_NAME, "com.test.app", /* isHashedValue= */ false);
AppInstallMetadata appInstallMetadata =
getAppInstallMetadataBuilder().setPackageName("com.foo.bar").build();
@@ -231,7 +234,9 @@
@Test
public void testParcelUnparcel_string() {
- StringAtomicFormula formula = new StringAtomicFormula(AtomicFormula.PACKAGE_NAME, "abc");
+ StringAtomicFormula formula =
+ new StringAtomicFormula(
+ AtomicFormula.PACKAGE_NAME, "abc", /* isHashedValue= */ false);
Parcel p = Parcel.obtain();
formula.writeToParcel(p, 0);
p.setDataPosition(0);
@@ -263,6 +268,22 @@
assertEquals(formula, newFormula);
}
+ @Test
+ public void testInvalidAtomicFormula_invalidKey() {
+ assertExpectException(
+ IllegalArgumentException.class,
+ /* expectedExceptionMessageRegex */ "Unknown key: -1",
+ () -> new IntAtomicFormula(/* key= */ -1, AtomicFormula.EQ, 0));
+ }
+
+ @Test
+ public void testInvalidAtomicFormula_invalidOperator() {
+ assertExpectException(
+ IllegalArgumentException.class,
+ /* expectedExceptionMessageRegex */ "Unknown operator: -1",
+ () -> new IntAtomicFormula(AtomicFormula.VERSION_CODE, /* operator= */ -1, 0));
+ }
+
/** Returns a builder with all fields filled with some dummy data. */
private AppInstallMetadata.Builder getAppInstallMetadataBuilder() {
return new AppInstallMetadata.Builder()
diff --git a/services/tests/servicestests/src/com/android/server/integrity/model/OpenFormulaTest.java b/core/tests/coretests/src/android/content/integrity/CompoundFormulaTest.java
similarity index 60%
rename from services/tests/servicestests/src/com/android/server/integrity/model/OpenFormulaTest.java
rename to core/tests/coretests/src/android/content/integrity/CompoundFormulaTest.java
index ecabb527..927e4db 100644
--- a/services/tests/servicestests/src/com/android/server/integrity/model/OpenFormulaTest.java
+++ b/core/tests/coretests/src/android/content/integrity/CompoundFormulaTest.java
@@ -14,9 +14,9 @@
* limitations under the License.
*/
-package com.android.server.integrity.model;
+package android.content.integrity;
-import static com.android.server.testutils.TestUtils.assertExpectException;
+import static android.content.integrity.TestUtils.assertExpectException;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
@@ -32,20 +32,23 @@
import java.util.Collections;
@RunWith(JUnit4.class)
-public class OpenFormulaTest {
+public class CompoundFormulaTest {
private static final AtomicFormula ATOMIC_FORMULA_1 =
- new AtomicFormula.StringAtomicFormula(AtomicFormula.PACKAGE_NAME, "test1");
+ new AtomicFormula.StringAtomicFormula(
+ AtomicFormula.PACKAGE_NAME, "test1", /* isHashedValue= */ false);
private static final AtomicFormula ATOMIC_FORMULA_2 =
new AtomicFormula.IntAtomicFormula(AtomicFormula.VERSION_CODE, AtomicFormula.EQ, 1);
@Test
- public void testValidOpenFormula() {
- OpenFormula openFormula =
- new OpenFormula(OpenFormula.AND, Arrays.asList(ATOMIC_FORMULA_1, ATOMIC_FORMULA_2));
+ public void testValidCompoundFormula() {
+ CompoundFormula compoundFormula =
+ new CompoundFormula(
+ CompoundFormula.AND, Arrays.asList(ATOMIC_FORMULA_1, ATOMIC_FORMULA_2));
- assertEquals(OpenFormula.AND, openFormula.getConnector());
- assertEquals(Arrays.asList(ATOMIC_FORMULA_1, ATOMIC_FORMULA_2), openFormula.getFormulas());
+ assertEquals(CompoundFormula.AND, compoundFormula.getConnector());
+ assertEquals(
+ Arrays.asList(ATOMIC_FORMULA_1, ATOMIC_FORMULA_2), compoundFormula.getFormulas());
}
@Test
@@ -53,10 +56,10 @@
assertExpectException(
IllegalArgumentException.class,
/* expectedExceptionMessageRegex */
- String.format("Connector AND must have at least 2 formulas"),
+ "Connector AND must have at least 2 formulas",
() ->
- new OpenFormula(
- OpenFormula.AND, Collections.singletonList(ATOMIC_FORMULA_1)));
+ new CompoundFormula(
+ CompoundFormula.AND, Collections.singletonList(ATOMIC_FORMULA_1)));
}
@Test
@@ -64,151 +67,173 @@
assertExpectException(
IllegalArgumentException.class,
/* expectedExceptionMessageRegex */
- String.format("Connector NOT must have 1 formula only"),
+ "Connector NOT must have 1 formula only",
() ->
- new OpenFormula(
- OpenFormula.NOT,
+ new CompoundFormula(
+ CompoundFormula.NOT,
Arrays.asList(ATOMIC_FORMULA_1, ATOMIC_FORMULA_2)));
}
@Test
public void testIsSatisfiable_notFalse_true() {
- OpenFormula openFormula = new OpenFormula(OpenFormula.NOT, Arrays.asList(ATOMIC_FORMULA_1));
+ CompoundFormula compoundFormula =
+ new CompoundFormula(CompoundFormula.NOT, Arrays.asList(ATOMIC_FORMULA_1));
AppInstallMetadata appInstallMetadata =
getAppInstallMetadataBuilder().setPackageName("test2").build();
// validate assumptions about the metadata
assertFalse(ATOMIC_FORMULA_1.isSatisfied(appInstallMetadata));
- assertTrue(openFormula.isSatisfied(appInstallMetadata));
+ assertTrue(compoundFormula.isSatisfied(appInstallMetadata));
}
@Test
public void testIsSatisfiable_notTrue_false() {
- OpenFormula openFormula = new OpenFormula(OpenFormula.NOT, Arrays.asList(ATOMIC_FORMULA_1));
+ CompoundFormula compoundFormula =
+ new CompoundFormula(CompoundFormula.NOT, Arrays.asList(ATOMIC_FORMULA_1));
AppInstallMetadata appInstallMetadata =
getAppInstallMetadataBuilder().setPackageName("test1").build();
// validate assumptions about the metadata
assertTrue(ATOMIC_FORMULA_1.isSatisfied(appInstallMetadata));
- assertFalse(openFormula.isSatisfied(appInstallMetadata));
+ assertFalse(compoundFormula.isSatisfied(appInstallMetadata));
}
@Test
public void testIsSatisfiable_trueAndTrue_true() {
- OpenFormula openFormula =
- new OpenFormula(OpenFormula.AND, Arrays.asList(ATOMIC_FORMULA_1, ATOMIC_FORMULA_2));
+ CompoundFormula compoundFormula =
+ new CompoundFormula(
+ CompoundFormula.AND, Arrays.asList(ATOMIC_FORMULA_1, ATOMIC_FORMULA_2));
AppInstallMetadata appInstallMetadata =
getAppInstallMetadataBuilder().setPackageName("test1").setVersionCode(1).build();
// validate assumptions about the metadata
assertTrue(ATOMIC_FORMULA_1.isSatisfied(appInstallMetadata));
assertTrue(ATOMIC_FORMULA_2.isSatisfied(appInstallMetadata));
- assertTrue(openFormula.isSatisfied(appInstallMetadata));
+ assertTrue(compoundFormula.isSatisfied(appInstallMetadata));
}
@Test
public void testIsSatisfiable_trueAndFalse_false() {
- OpenFormula openFormula =
- new OpenFormula(OpenFormula.AND, Arrays.asList(ATOMIC_FORMULA_1, ATOMIC_FORMULA_2));
+ CompoundFormula compoundFormula =
+ new CompoundFormula(
+ CompoundFormula.AND, Arrays.asList(ATOMIC_FORMULA_1, ATOMIC_FORMULA_2));
AppInstallMetadata appInstallMetadata =
getAppInstallMetadataBuilder().setPackageName("test1").setVersionCode(2).build();
// validate assumptions about the metadata
assertTrue(ATOMIC_FORMULA_1.isSatisfied(appInstallMetadata));
assertFalse(ATOMIC_FORMULA_2.isSatisfied(appInstallMetadata));
- assertFalse(openFormula.isSatisfied(appInstallMetadata));
+ assertFalse(compoundFormula.isSatisfied(appInstallMetadata));
}
@Test
public void testIsSatisfiable_falseAndTrue_false() {
- OpenFormula openFormula =
- new OpenFormula(OpenFormula.AND, Arrays.asList(ATOMIC_FORMULA_1, ATOMIC_FORMULA_2));
+ CompoundFormula compoundFormula =
+ new CompoundFormula(
+ CompoundFormula.AND, Arrays.asList(ATOMIC_FORMULA_1, ATOMIC_FORMULA_2));
AppInstallMetadata appInstallMetadata =
getAppInstallMetadataBuilder().setPackageName("test2").setVersionCode(1).build();
// validate assumptions about the metadata
assertFalse(ATOMIC_FORMULA_1.isSatisfied(appInstallMetadata));
assertTrue(ATOMIC_FORMULA_2.isSatisfied(appInstallMetadata));
- assertFalse(openFormula.isSatisfied(appInstallMetadata));
+ assertFalse(compoundFormula.isSatisfied(appInstallMetadata));
}
@Test
public void testIsSatisfiable_falseAndFalse_false() {
- OpenFormula openFormula =
- new OpenFormula(OpenFormula.AND, Arrays.asList(ATOMIC_FORMULA_1, ATOMIC_FORMULA_2));
+ CompoundFormula compoundFormula =
+ new CompoundFormula(
+ CompoundFormula.AND, Arrays.asList(ATOMIC_FORMULA_1, ATOMIC_FORMULA_2));
AppInstallMetadata appInstallMetadata =
getAppInstallMetadataBuilder().setPackageName("test2").setVersionCode(2).build();
// validate assumptions about the metadata
assertFalse(ATOMIC_FORMULA_1.isSatisfied(appInstallMetadata));
assertFalse(ATOMIC_FORMULA_2.isSatisfied(appInstallMetadata));
- assertFalse(openFormula.isSatisfied(appInstallMetadata));
+ assertFalse(compoundFormula.isSatisfied(appInstallMetadata));
}
@Test
public void testIsSatisfiable_trueOrTrue_true() {
- OpenFormula openFormula =
- new OpenFormula(OpenFormula.OR, Arrays.asList(ATOMIC_FORMULA_1, ATOMIC_FORMULA_2));
+ CompoundFormula compoundFormula =
+ new CompoundFormula(
+ CompoundFormula.OR, Arrays.asList(ATOMIC_FORMULA_1, ATOMIC_FORMULA_2));
AppInstallMetadata appInstallMetadata =
getAppInstallMetadataBuilder().setPackageName("test1").setVersionCode(1).build();
// validate assumptions about the metadata
assertTrue(ATOMIC_FORMULA_1.isSatisfied(appInstallMetadata));
assertTrue(ATOMIC_FORMULA_2.isSatisfied(appInstallMetadata));
- assertTrue(openFormula.isSatisfied(appInstallMetadata));
+ assertTrue(compoundFormula.isSatisfied(appInstallMetadata));
}
@Test
public void testIsSatisfiable_trueOrFalse_true() {
- OpenFormula openFormula =
- new OpenFormula(OpenFormula.OR, Arrays.asList(ATOMIC_FORMULA_1, ATOMIC_FORMULA_2));
+ CompoundFormula compoundFormula =
+ new CompoundFormula(
+ CompoundFormula.OR, Arrays.asList(ATOMIC_FORMULA_1, ATOMIC_FORMULA_2));
AppInstallMetadata appInstallMetadata =
getAppInstallMetadataBuilder().setPackageName("test1").setVersionCode(2).build();
// validate assumptions about the metadata
assertTrue(ATOMIC_FORMULA_1.isSatisfied(appInstallMetadata));
assertFalse(ATOMIC_FORMULA_2.isSatisfied(appInstallMetadata));
- assertTrue(openFormula.isSatisfied(appInstallMetadata));
+ assertTrue(compoundFormula.isSatisfied(appInstallMetadata));
}
@Test
public void testIsSatisfiable_falseOrTrue_true() {
- OpenFormula openFormula =
- new OpenFormula(OpenFormula.OR, Arrays.asList(ATOMIC_FORMULA_1, ATOMIC_FORMULA_2));
+ CompoundFormula compoundFormula =
+ new CompoundFormula(
+ CompoundFormula.OR, Arrays.asList(ATOMIC_FORMULA_1, ATOMIC_FORMULA_2));
AppInstallMetadata appInstallMetadata =
getAppInstallMetadataBuilder().setPackageName("test2").setVersionCode(1).build();
// validate assumptions about the metadata
assertFalse(ATOMIC_FORMULA_1.isSatisfied(appInstallMetadata));
assertTrue(ATOMIC_FORMULA_2.isSatisfied(appInstallMetadata));
- assertTrue(openFormula.isSatisfied(appInstallMetadata));
+ assertTrue(compoundFormula.isSatisfied(appInstallMetadata));
}
@Test
public void testIsSatisfiable_falseOrFalse_false() {
- OpenFormula openFormula =
- new OpenFormula(OpenFormula.OR, Arrays.asList(ATOMIC_FORMULA_1, ATOMIC_FORMULA_2));
+ CompoundFormula compoundFormula =
+ new CompoundFormula(
+ CompoundFormula.OR, Arrays.asList(ATOMIC_FORMULA_1, ATOMIC_FORMULA_2));
AppInstallMetadata appInstallMetadata =
getAppInstallMetadataBuilder().setPackageName("test2").setVersionCode(2).build();
// validate assumptions about the metadata
assertFalse(ATOMIC_FORMULA_1.isSatisfied(appInstallMetadata));
assertFalse(ATOMIC_FORMULA_2.isSatisfied(appInstallMetadata));
- assertFalse(openFormula.isSatisfied(appInstallMetadata));
+ assertFalse(compoundFormula.isSatisfied(appInstallMetadata));
}
@Test
public void testParcelUnparcel() {
- OpenFormula formula =
- new OpenFormula(OpenFormula.AND, Arrays.asList(ATOMIC_FORMULA_2, ATOMIC_FORMULA_1));
+ CompoundFormula formula =
+ new CompoundFormula(
+ CompoundFormula.AND, Arrays.asList(ATOMIC_FORMULA_2, ATOMIC_FORMULA_1));
Parcel p = Parcel.obtain();
formula.writeToParcel(p, 0);
p.setDataPosition(0);
- OpenFormula newFormula = OpenFormula.CREATOR.createFromParcel(p);
+ CompoundFormula newFormula = CompoundFormula.CREATOR.createFromParcel(p);
assertEquals(formula, newFormula);
}
+ @Test
+ public void testInvalidCompoundFormula_invalidConnector() {
+ assertExpectException(
+ IllegalArgumentException.class,
+ /* expectedExceptionMessageRegex */ "Unknown connector: -1",
+ () ->
+ new CompoundFormula(
+ /* connector= */ -1,
+ Arrays.asList(ATOMIC_FORMULA_1, ATOMIC_FORMULA_2)));
+ }
+
/** Returns a builder with all fields filled with some dummy data. */
private AppInstallMetadata.Builder getAppInstallMetadataBuilder() {
return new AppInstallMetadata.Builder()
diff --git a/services/tests/servicestests/src/com/android/server/integrity/model/RuleTest.java b/core/tests/coretests/src/android/content/integrity/RuleTest.java
similarity index 76%
rename from services/tests/servicestests/src/com/android/server/integrity/model/RuleTest.java
rename to core/tests/coretests/src/android/content/integrity/RuleTest.java
index e0c36fd..19e74e6 100644
--- a/services/tests/servicestests/src/com/android/server/integrity/model/RuleTest.java
+++ b/core/tests/coretests/src/android/content/integrity/RuleTest.java
@@ -14,9 +14,9 @@
* limitations under the License.
*/
-package com.android.server.integrity.model;
+package android.content.integrity;
-import static com.android.server.testutils.TestUtils.assertExpectException;
+import static android.content.integrity.TestUtils.assertExpectException;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;
@@ -36,9 +36,11 @@
private static final String PACKAGE_NAME = "com.test.app";
private static final String APP_CERTIFICATE = "test_cert";
private static final Formula PACKAGE_NAME_ATOMIC_FORMULA =
- new AtomicFormula.StringAtomicFormula(AtomicFormula.PACKAGE_NAME, PACKAGE_NAME);
+ new AtomicFormula.StringAtomicFormula(AtomicFormula.PACKAGE_NAME, PACKAGE_NAME,
+ /* isHashedValue= */ false);
private static final Formula APP_CERTIFICATE_ATOMIC_FORMULA =
- new AtomicFormula.StringAtomicFormula(AtomicFormula.APP_CERTIFICATE, APP_CERTIFICATE);
+ new AtomicFormula.StringAtomicFormula(AtomicFormula.APP_CERTIFICATE, APP_CERTIFICATE,
+ /* isHashedValue= */ false);
@Test
public void testValidRule() {
@@ -58,11 +60,11 @@
@Test
public void testToString() {
- OpenFormula openFormula =
- new OpenFormula(
- OpenFormula.AND,
+ CompoundFormula compoundFormula =
+ new CompoundFormula(
+ CompoundFormula.AND,
Arrays.asList(PACKAGE_NAME_ATOMIC_FORMULA, APP_CERTIFICATE_ATOMIC_FORMULA));
- Rule rule = new Rule(openFormula, Rule.DENY);
+ Rule rule = new Rule(compoundFormula, Rule.DENY);
assertEquals(
String.format(
@@ -91,12 +93,12 @@
public void testParcelUnparcel() {
Rule rule =
new Rule(
- new OpenFormula(
- OpenFormula.AND,
+ new CompoundFormula(
+ CompoundFormula.AND,
Arrays.asList(
APP_CERTIFICATE_ATOMIC_FORMULA,
- new OpenFormula(
- OpenFormula.NOT,
+ new CompoundFormula(
+ CompoundFormula.NOT,
Arrays.asList(PACKAGE_NAME_ATOMIC_FORMULA)))),
Rule.DENY);
Parcel p = Parcel.obtain();
@@ -106,4 +108,12 @@
assertEquals(newRule, rule);
}
+
+ @Test
+ public void testInvalidRule_invalidEffect() {
+ assertExpectException(
+ IllegalArgumentException.class,
+ /* expectedExceptionMessageRegex */ "Unknown effect: -1",
+ () -> new Rule(PACKAGE_NAME_ATOMIC_FORMULA, /* effect= */ -1));
+ }
}
diff --git a/core/tests/coretests/src/android/content/integrity/TEST_MAPPING b/core/tests/coretests/src/android/content/integrity/TEST_MAPPING
new file mode 100644
index 0000000..2920716
--- /dev/null
+++ b/core/tests/coretests/src/android/content/integrity/TEST_MAPPING
@@ -0,0 +1,12 @@
+{
+ "presubmit": [
+ {
+ "name": "FrameworksCoreTests",
+ "options": [
+ {
+ "include-filter": "android.content.integrity."
+ }
+ ]
+ }
+ ]
+}
diff --git a/core/tests/coretests/src/android/content/integrity/TestUtils.java b/core/tests/coretests/src/android/content/integrity/TestUtils.java
new file mode 100644
index 0000000..af984cf
--- /dev/null
+++ b/core/tests/coretests/src/android/content/integrity/TestUtils.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2019 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.integrity;
+
+import android.test.MoreAsserts;
+
+import junit.framework.Assert;
+
+/** Helper methods used in tests. */
+class TestUtils {
+ private TestUtils() {}
+
+ public interface ExceptionRunnable {
+ void run() throws Exception;
+ }
+
+ public static void assertExpectException(
+ Class<? extends Throwable> expectedExceptionType,
+ String expectedExceptionMessageRegex,
+ ExceptionRunnable r) {
+ try {
+ r.run();
+ } catch (Throwable e) {
+ Assert.assertTrue(
+ "Expected exception type was "
+ + expectedExceptionType.getName()
+ + " but caught "
+ + e.getClass().getName(),
+ expectedExceptionType.isAssignableFrom(e.getClass()));
+ if (expectedExceptionMessageRegex != null) {
+ MoreAsserts.assertContainsRegex(expectedExceptionMessageRegex, e.getMessage());
+ }
+ return; // Pass.
+ }
+ Assert.fail(
+ "Expected exception type " + expectedExceptionType.getName() + " was not thrown");
+ }
+}
diff --git a/core/tests/coretests/src/android/util/StatsEventTest.java b/core/tests/coretests/src/android/util/StatsEventTest.java
new file mode 100644
index 0000000..93f11db
--- /dev/null
+++ b/core/tests/coretests/src/android/util/StatsEventTest.java
@@ -0,0 +1,466 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.util;
+
+import static com.google.common.truth.Truth.assertThat;
+import static com.google.common.truth.Truth.assertWithMessage;
+
+import static java.nio.charset.StandardCharsets.UTF_8;
+
+import android.os.SystemClock;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
+import com.google.common.collect.Range;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+
+/**
+ * Internal tests for {@link StatsEvent}.
+ */
+@SmallTest
+@RunWith(AndroidJUnit4.class)
+public class StatsEventTest {
+
+ @Test
+ public void testNoFields() {
+ final long minTimestamp = SystemClock.elapsedRealtimeNanos();
+ final StatsEvent statsEvent = StatsEvent.newBuilder().build();
+ final long maxTimestamp = SystemClock.elapsedRealtimeNanos();
+
+ final int expectedAtomId = 0;
+ assertThat(statsEvent.getAtomId()).isEqualTo(expectedAtomId);
+
+ final ByteBuffer buffer =
+ ByteBuffer.wrap(statsEvent.getBytes()).order(ByteOrder.LITTLE_ENDIAN);
+
+ assertWithMessage("Root element in buffer is not TYPE_ERRORS")
+ .that(buffer.get()).isEqualTo(StatsEvent.TYPE_ERRORS);
+
+ assertWithMessage("Incorrect number of elements in root object")
+ .that(buffer.get()).isEqualTo(3);
+
+ assertWithMessage("First element is not timestamp")
+ .that(buffer.get()).isEqualTo(StatsEvent.TYPE_LONG);
+
+ assertWithMessage("Incorrect timestamp")
+ .that(buffer.getLong()).isIn(Range.closed(minTimestamp, maxTimestamp));
+
+ assertWithMessage("Second element is not atom id")
+ .that(buffer.get()).isEqualTo(StatsEvent.TYPE_INT);
+
+ assertWithMessage("Incorrect atom id")
+ .that(buffer.getInt()).isEqualTo(expectedAtomId);
+
+ final int errorMask = buffer.getInt();
+
+ assertWithMessage("ERROR_NO_ATOM_ID should be the only error in the error mask")
+ .that(errorMask).isEqualTo(StatsEvent.ERROR_NO_ATOM_ID);
+
+ assertThat(statsEvent.getNumBytes()).isEqualTo(buffer.position());
+
+ statsEvent.release();
+ }
+
+ @Test
+ public void testIntBooleanIntInt() {
+ final int expectedAtomId = 109;
+ final int field1 = 1;
+ final boolean field2 = true;
+ final int field3 = 3;
+ final int field4 = 4;
+
+ final long minTimestamp = SystemClock.elapsedRealtimeNanos();
+ final StatsEvent statsEvent = StatsEvent.newBuilder()
+ .setAtomId(expectedAtomId)
+ .writeInt(field1)
+ .writeBoolean(field2)
+ .writeInt(field3)
+ .writeInt(field4)
+ .build();
+ final long maxTimestamp = SystemClock.elapsedRealtimeNanos();
+
+ assertThat(statsEvent.getAtomId()).isEqualTo(expectedAtomId);
+
+ final ByteBuffer buffer =
+ ByteBuffer.wrap(statsEvent.getBytes()).order(ByteOrder.LITTLE_ENDIAN);
+
+ assertWithMessage("Root element in buffer is not TYPE_OBJECT")
+ .that(buffer.get()).isEqualTo(StatsEvent.TYPE_OBJECT);
+
+ assertWithMessage("Incorrect number of elements in root object")
+ .that(buffer.get()).isEqualTo(6);
+
+ assertWithMessage("First element is not timestamp")
+ .that(buffer.get()).isEqualTo(StatsEvent.TYPE_LONG);
+
+ assertWithMessage("Incorrect timestamp")
+ .that(buffer.getLong()).isIn(Range.closed(minTimestamp, maxTimestamp));
+
+ assertWithMessage("Second element is not atom id")
+ .that(buffer.get()).isEqualTo(StatsEvent.TYPE_INT);
+
+ assertWithMessage("Incorrect atom id")
+ .that(buffer.getInt()).isEqualTo(expectedAtomId);
+
+ assertWithMessage("First field is not Int")
+ .that(buffer.get()).isEqualTo(StatsEvent.TYPE_INT);
+
+ assertWithMessage("Incorrect field 1")
+ .that(buffer.getInt()).isEqualTo(field1);
+
+ assertWithMessage("Second field is not Boolean")
+ .that(buffer.get()).isEqualTo(StatsEvent.TYPE_BOOLEAN);
+
+ assertWithMessage("Incorrect field 2")
+ .that(buffer.get()).isEqualTo(1);
+
+ assertWithMessage("Third field is not Int")
+ .that(buffer.get()).isEqualTo(StatsEvent.TYPE_INT);
+
+ assertWithMessage("Incorrect field 3")
+ .that(buffer.getInt()).isEqualTo(field3);
+
+ assertWithMessage("Fourth field is not Int")
+ .that(buffer.get()).isEqualTo(StatsEvent.TYPE_INT);
+
+ assertWithMessage("Incorrect field 4")
+ .that(buffer.getInt()).isEqualTo(field4);
+
+ assertThat(statsEvent.getNumBytes()).isEqualTo(buffer.position());
+
+ statsEvent.release();
+ }
+
+ @Test
+ public void testStringFloatByteArray() {
+ final int expectedAtomId = 109;
+ final String field1 = "Str 1";
+ final float field2 = 9.334f;
+ final byte[] field3 = new byte[] { 56, 23, 89, -120 };
+
+ final long minTimestamp = SystemClock.elapsedRealtimeNanos();
+ final StatsEvent statsEvent = StatsEvent.newBuilder()
+ .setAtomId(expectedAtomId)
+ .writeString(field1)
+ .writeFloat(field2)
+ .writeByteArray(field3)
+ .build();
+ final long maxTimestamp = SystemClock.elapsedRealtimeNanos();
+
+ assertThat(statsEvent.getAtomId()).isEqualTo(expectedAtomId);
+
+ final ByteBuffer buffer =
+ ByteBuffer.wrap(statsEvent.getBytes()).order(ByteOrder.LITTLE_ENDIAN);
+
+ assertWithMessage("Root element in buffer is not TYPE_OBJECT")
+ .that(buffer.get()).isEqualTo(StatsEvent.TYPE_OBJECT);
+
+ assertWithMessage("Incorrect number of elements in root object")
+ .that(buffer.get()).isEqualTo(5);
+
+ assertWithMessage("First element is not timestamp")
+ .that(buffer.get()).isEqualTo(StatsEvent.TYPE_LONG);
+
+ assertWithMessage("Incorrect timestamp")
+ .that(buffer.getLong()).isIn(Range.closed(minTimestamp, maxTimestamp));
+
+ assertWithMessage("Second element is not atom id")
+ .that(buffer.get()).isEqualTo(StatsEvent.TYPE_INT);
+
+ assertWithMessage("Incorrect atom id")
+ .that(buffer.getInt()).isEqualTo(expectedAtomId);
+
+ assertWithMessage("First field is not String")
+ .that(buffer.get()).isEqualTo(StatsEvent.TYPE_STRING);
+
+ final String field1Actual = getStringFromByteBuffer(buffer);
+ assertWithMessage("Incorrect field 1")
+ .that(field1Actual).isEqualTo(field1);
+
+ assertWithMessage("Second field is not Float")
+ .that(buffer.get()).isEqualTo(StatsEvent.TYPE_FLOAT);
+
+ assertWithMessage("Incorrect field 2")
+ .that(buffer.getFloat()).isEqualTo(field2);
+
+ assertWithMessage("Third field is not byte array")
+ .that(buffer.get()).isEqualTo(StatsEvent.TYPE_BYTE_ARRAY);
+
+ final byte[] field3Actual = getByteArrayFromByteBuffer(buffer);
+ assertWithMessage("Incorrect field 3")
+ .that(field3Actual).isEqualTo(field3);
+
+ assertThat(statsEvent.getNumBytes()).isEqualTo(buffer.position());
+
+ statsEvent.release();
+ }
+
+ @Test
+ public void testAttributionChainLong() {
+ final int expectedAtomId = 109;
+ final int[] uids = new int[] { 1, 2, 3, 4, 5 };
+ final String[] tags = new String[] { "1", "2", "3", "4", "5" };
+ final long field2 = -230909823L;
+
+ final long minTimestamp = SystemClock.elapsedRealtimeNanos();
+ final StatsEvent statsEvent = StatsEvent.newBuilder()
+ .setAtomId(expectedAtomId)
+ .writeAttributionChain(uids, tags)
+ .writeLong(field2)
+ .build();
+ final long maxTimestamp = SystemClock.elapsedRealtimeNanos();
+
+ assertThat(statsEvent.getAtomId()).isEqualTo(expectedAtomId);
+
+ final ByteBuffer buffer =
+ ByteBuffer.wrap(statsEvent.getBytes()).order(ByteOrder.LITTLE_ENDIAN);
+
+ assertWithMessage("Root element in buffer is not TYPE_OBJECT")
+ .that(buffer.get()).isEqualTo(StatsEvent.TYPE_OBJECT);
+
+ assertWithMessage("Incorrect number of elements in root object")
+ .that(buffer.get()).isEqualTo(4);
+
+ assertWithMessage("First element is not timestamp")
+ .that(buffer.get()).isEqualTo(StatsEvent.TYPE_LONG);
+
+ assertWithMessage("Incorrect timestamp")
+ .that(buffer.getLong()).isIn(Range.closed(minTimestamp, maxTimestamp));
+
+ assertWithMessage("Second element is not atom id")
+ .that(buffer.get()).isEqualTo(StatsEvent.TYPE_INT);
+
+ assertWithMessage("Incorrect atom id")
+ .that(buffer.getInt()).isEqualTo(expectedAtomId);
+
+ assertWithMessage("First field is not Attribution Chain")
+ .that(buffer.get()).isEqualTo(StatsEvent.TYPE_ATTRIBUTION_CHAIN);
+
+ assertWithMessage("Incorrect number of attribution nodes")
+ .that(buffer.get()).isEqualTo((byte) uids.length);
+
+ for (int i = 0; i < tags.length; i++) {
+ assertWithMessage("Incorrect uid in Attribution Chain")
+ .that(buffer.getInt()).isEqualTo(uids[i]);
+
+ final String tag = getStringFromByteBuffer(buffer);
+ assertWithMessage("Incorrect tag in Attribution Chain")
+ .that(tag).isEqualTo(tags[i]);
+ }
+
+ assertWithMessage("Second field is not Long")
+ .that(buffer.get()).isEqualTo(StatsEvent.TYPE_LONG);
+
+ assertWithMessage("Incorrect field 2")
+ .that(buffer.getLong()).isEqualTo(field2);
+
+ assertThat(statsEvent.getNumBytes()).isEqualTo(buffer.position());
+
+ statsEvent.release();
+ }
+
+ @Test
+ public void testKeyValuePairs() {
+ final int expectedAtomId = 109;
+ final SparseIntArray intMap = new SparseIntArray();
+ final SparseLongArray longMap = new SparseLongArray();
+ final SparseArray<String> stringMap = new SparseArray<>();
+ final SparseArray<Float> floatMap = new SparseArray<>();
+ intMap.put(1, -1);
+ intMap.put(2, -2);
+ stringMap.put(3, "abc");
+ stringMap.put(4, "2h");
+ floatMap.put(9, -234.344f);
+
+ final long minTimestamp = SystemClock.elapsedRealtimeNanos();
+ final StatsEvent statsEvent = StatsEvent.newBuilder()
+ .setAtomId(expectedAtomId)
+ .writeKeyValuePairs(intMap, longMap, stringMap, floatMap)
+ .build();
+ final long maxTimestamp = SystemClock.elapsedRealtimeNanos();
+
+ assertThat(statsEvent.getAtomId()).isEqualTo(expectedAtomId);
+
+ final ByteBuffer buffer =
+ ByteBuffer.wrap(statsEvent.getBytes()).order(ByteOrder.LITTLE_ENDIAN);
+
+ assertWithMessage("Root element in buffer is not TYPE_OBJECT")
+ .that(buffer.get()).isEqualTo(StatsEvent.TYPE_OBJECT);
+
+ assertWithMessage("Incorrect number of elements in root object")
+ .that(buffer.get()).isEqualTo(3);
+
+ assertWithMessage("First element is not timestamp")
+ .that(buffer.get()).isEqualTo(StatsEvent.TYPE_LONG);
+
+ assertWithMessage("Incorrect timestamp")
+ .that(buffer.getLong()).isIn(Range.closed(minTimestamp, maxTimestamp));
+
+ assertWithMessage("Second element is not atom id")
+ .that(buffer.get()).isEqualTo(StatsEvent.TYPE_INT);
+
+ assertWithMessage("Incorrect atom id")
+ .that(buffer.getInt()).isEqualTo(expectedAtomId);
+
+ assertWithMessage("First field is not KeyValuePairs")
+ .that(buffer.get()).isEqualTo(StatsEvent.TYPE_KEY_VALUE_PAIRS);
+
+ assertWithMessage("Incorrect number of key value pairs")
+ .that(buffer.get()).isEqualTo(
+ (byte) (intMap.size() + longMap.size() + stringMap.size()
+ + floatMap.size()));
+
+ for (int i = 0; i < intMap.size(); i++) {
+ assertWithMessage("Incorrect key in intMap")
+ .that(buffer.getInt()).isEqualTo(intMap.keyAt(i));
+ assertWithMessage("The type id of the value should be TYPE_INT in intMap")
+ .that(buffer.get()).isEqualTo(StatsEvent.TYPE_INT);
+ assertWithMessage("Incorrect value in intMap")
+ .that(buffer.getInt()).isEqualTo(intMap.valueAt(i));
+ }
+
+ for (int i = 0; i < longMap.size(); i++) {
+ assertWithMessage("Incorrect key in longMap")
+ .that(buffer.getInt()).isEqualTo(longMap.keyAt(i));
+ assertWithMessage("The type id of the value should be TYPE_LONG in longMap")
+ .that(buffer.get()).isEqualTo(StatsEvent.TYPE_LONG);
+ assertWithMessage("Incorrect value in longMap")
+ .that(buffer.getLong()).isEqualTo(longMap.valueAt(i));
+ }
+
+ for (int i = 0; i < stringMap.size(); i++) {
+ assertWithMessage("Incorrect key in stringMap")
+ .that(buffer.getInt()).isEqualTo(stringMap.keyAt(i));
+ assertWithMessage("The type id of the value should be TYPE_STRING in stringMap")
+ .that(buffer.get()).isEqualTo(StatsEvent.TYPE_STRING);
+ final String value = getStringFromByteBuffer(buffer);
+ assertWithMessage("Incorrect value in stringMap")
+ .that(value).isEqualTo(stringMap.valueAt(i));
+ }
+
+ for (int i = 0; i < floatMap.size(); i++) {
+ assertWithMessage("Incorrect key in floatMap")
+ .that(buffer.getInt()).isEqualTo(floatMap.keyAt(i));
+ assertWithMessage("The type id of the value should be TYPE_FLOAT in floatMap")
+ .that(buffer.get()).isEqualTo(StatsEvent.TYPE_FLOAT);
+ assertWithMessage("Incorrect value in floatMap")
+ .that(buffer.getFloat()).isEqualTo(floatMap.valueAt(i));
+ }
+
+ assertThat(statsEvent.getNumBytes()).isEqualTo(buffer.position());
+
+ statsEvent.release();
+ }
+
+ @Test
+ public void testSingleAnnotations() {
+ final int expectedAtomId = 109;
+ final int field1 = 1;
+ final byte field1AnnotationId = 45;
+ final boolean field1AnnotationValue = false;
+ final boolean field2 = true;
+ final byte field2AnnotationId = 1;
+ final int field2AnnotationValue = 23;
+
+ final long minTimestamp = SystemClock.elapsedRealtimeNanos();
+ final StatsEvent statsEvent = StatsEvent.newBuilder()
+ .setAtomId(expectedAtomId)
+ .writeInt(field1)
+ .addBooleanAnnotation(field1AnnotationId, field1AnnotationValue)
+ .writeBoolean(field2)
+ .addIntAnnotation(field2AnnotationId, field2AnnotationValue)
+ .build();
+ final long maxTimestamp = SystemClock.elapsedRealtimeNanos();
+
+ assertThat(statsEvent.getAtomId()).isEqualTo(expectedAtomId);
+
+ final ByteBuffer buffer =
+ ByteBuffer.wrap(statsEvent.getBytes()).order(ByteOrder.LITTLE_ENDIAN);
+
+ assertWithMessage("Root element in buffer is not TYPE_OBJECT")
+ .that(buffer.get()).isEqualTo(StatsEvent.TYPE_OBJECT);
+
+ assertWithMessage("Incorrect number of elements in root object")
+ .that(buffer.get()).isEqualTo(4);
+
+ assertWithMessage("First element is not timestamp")
+ .that(buffer.get()).isEqualTo(StatsEvent.TYPE_LONG);
+
+ assertWithMessage("Incorrect timestamp")
+ .that(buffer.getLong()).isIn(Range.closed(minTimestamp, maxTimestamp));
+
+ assertWithMessage("Second element is not atom id")
+ .that(buffer.get()).isEqualTo(StatsEvent.TYPE_INT);
+
+ assertWithMessage("Incorrect atom id")
+ .that(buffer.getInt()).isEqualTo(expectedAtomId);
+
+ final byte field1Header = buffer.get();
+ final int field1AnnotationValueCount = field1Header >> 4;
+ final byte field1Type = (byte) (field1Header & 0x0F);
+ assertWithMessage("First field is not Int")
+ .that(field1Type).isEqualTo(StatsEvent.TYPE_INT);
+ assertWithMessage("First field annotation count is wrong")
+ .that(field1AnnotationValueCount).isEqualTo(1);
+ assertWithMessage("Incorrect field 1")
+ .that(buffer.getInt()).isEqualTo(field1);
+ assertWithMessage("First field's annotation id is wrong")
+ .that(buffer.get()).isEqualTo(field1AnnotationId);
+ assertWithMessage("First field's annotation type is wrong")
+ .that(buffer.get()).isEqualTo(StatsEvent.TYPE_BOOLEAN);
+ assertWithMessage("First field's annotation value is wrong")
+ .that(buffer.get()).isEqualTo(field1AnnotationValue ? 1 : 0);
+
+ final byte field2Header = buffer.get();
+ final int field2AnnotationValueCount = field2Header >> 4;
+ final byte field2Type = (byte) (field2Header & 0x0F);
+ assertWithMessage("Second field is not boolean")
+ .that(field2Type).isEqualTo(StatsEvent.TYPE_BOOLEAN);
+ assertWithMessage("Second field annotation count is wrong")
+ .that(field2AnnotationValueCount).isEqualTo(1);
+ assertWithMessage("Incorrect field 2")
+ .that(buffer.get()).isEqualTo(field2 ? 1 : 0);
+ assertWithMessage("Second field's annotation id is wrong")
+ .that(buffer.get()).isEqualTo(field2AnnotationId);
+ assertWithMessage("Second field's annotation type is wrong")
+ .that(buffer.get()).isEqualTo(StatsEvent.TYPE_INT);
+ assertWithMessage("Second field's annotation value is wrong")
+ .that(buffer.getInt()).isEqualTo(field2AnnotationValue);
+
+ assertThat(statsEvent.getNumBytes()).isEqualTo(buffer.position());
+
+ statsEvent.release();
+ }
+
+ private static byte[] getByteArrayFromByteBuffer(final ByteBuffer buffer) {
+ final int numBytes = buffer.getInt();
+ byte[] bytes = new byte[numBytes];
+ buffer.get(bytes);
+ return bytes;
+ }
+
+ private static String getStringFromByteBuffer(final ByteBuffer buffer) {
+ final byte[] bytes = getByteArrayFromByteBuffer(buffer);
+ return new String(bytes, UTF_8);
+ }
+}
diff --git a/core/tests/coretests/src/android/view/textclassifier/TextClassifierTest.java b/core/tests/coretests/src/android/view/textclassifier/TextClassifierTest.java
index 17fe61d..deb0f18 100644
--- a/core/tests/coretests/src/android/view/textclassifier/TextClassifierTest.java
+++ b/core/tests/coretests/src/android/view/textclassifier/TextClassifierTest.java
@@ -548,8 +548,10 @@
}
@Test
- public void testSuggetsConversationActions_deduplicate() {
- if (isTextClassifierDisabled()) return;
+ public void testSuggestConversationActions_deduplicate() {
+ Context context = new FakeContextBuilder()
+ .setIntentComponent(Intent.ACTION_SENDTO, FakeContextBuilder.DEFAULT_COMPONENT)
+ .build();
ConversationActions.Message message =
new ConversationActions.Message.Builder(
ConversationActions.Message.PERSON_USER_OTHERS)
@@ -560,7 +562,8 @@
.setMaxSuggestions(3)
.build();
- ConversationActions conversationActions = mClassifier.suggestConversationActions(request);
+ TextClassifier classifier = new TextClassifierImpl(context, TC_CONSTANTS);
+ ConversationActions conversationActions = classifier.suggestConversationActions(request);
Truth.assertThat(conversationActions.getConversationActions()).isEmpty();
}
diff --git a/core/tests/systemproperties/src/android/os/PropertyInvalidatedCacheTest.java b/core/tests/systemproperties/src/android/os/PropertyInvalidatedCacheTest.java
new file mode 100644
index 0000000..c4080e8
--- /dev/null
+++ b/core/tests/systemproperties/src/android/os/PropertyInvalidatedCacheTest.java
@@ -0,0 +1,168 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.os;
+
+import android.app.PropertyInvalidatedCache;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import junit.framework.TestCase;
+
+public class PropertyInvalidatedCacheTest extends TestCase {
+ private static final String KEY = "sys.testkey";
+ private static final String UNSET_KEY = "Aiw7woh6ie4toh7W";
+
+ private static class TestCache extends PropertyInvalidatedCache<Integer, String> {
+ TestCache() {
+ this(KEY);
+ }
+
+ TestCache(String key) {
+ super(4, key);
+ }
+
+ @Override
+ protected String recompute(Integer qv) {
+ mRecomputeCount += 1;
+ return "foo" + qv.toString();
+ }
+
+ int getRecomputeCount() {
+ return mRecomputeCount;
+ }
+
+ private int mRecomputeCount = 0;
+ }
+
+ @Override
+ protected void setUp() {
+ SystemProperties.set(KEY, "");
+ }
+
+ @SmallTest
+ public void testCacheRecompute() throws Exception {
+ TestCache cache = new TestCache();
+ cache.invalidateCache();
+ assertEquals("foo5", cache.query(5));
+ assertEquals(1, cache.getRecomputeCount());
+ assertEquals("foo5", cache.query(5));
+ assertEquals(1, cache.getRecomputeCount());
+ assertEquals("foo6", cache.query(6));
+ assertEquals(2, cache.getRecomputeCount());
+ cache.invalidateCache();
+ assertEquals("foo5", cache.query(5));
+ assertEquals("foo5", cache.query(5));
+ assertEquals(3, cache.getRecomputeCount());
+ }
+
+ @SmallTest
+ public void testCacheInitialState() throws Exception {
+ TestCache cache = new TestCache();
+ assertEquals("foo5", cache.query(5));
+ assertEquals("foo5", cache.query(5));
+ assertEquals(2, cache.getRecomputeCount());
+ cache.invalidateCache();
+ assertEquals("foo5", cache.query(5));
+ assertEquals("foo5", cache.query(5));
+ assertEquals(3, cache.getRecomputeCount());
+ }
+
+ @SmallTest
+ public void testCachePropertyUnset() throws Exception {
+ TestCache cache = new TestCache(UNSET_KEY);
+ assertEquals("foo5", cache.query(5));
+ assertEquals("foo5", cache.query(5));
+ assertEquals(2, cache.getRecomputeCount());
+ }
+
+ @SmallTest
+ public void testCacheDisableState() throws Exception {
+ TestCache cache = new TestCache();
+ assertEquals("foo5", cache.query(5));
+ assertEquals("foo5", cache.query(5));
+ assertEquals(2, cache.getRecomputeCount());
+ cache.invalidateCache();
+ assertEquals("foo5", cache.query(5));
+ assertEquals("foo5", cache.query(5));
+ assertEquals(3, cache.getRecomputeCount());
+ cache.disableSystemWide();
+ assertEquals("foo5", cache.query(5));
+ assertEquals("foo5", cache.query(5));
+ assertEquals(5, cache.getRecomputeCount());
+ cache.invalidateCache(); // Should not reenable
+ assertEquals("foo5", cache.query(5));
+ assertEquals("foo5", cache.query(5));
+ assertEquals(7, cache.getRecomputeCount());
+ }
+
+ @SmallTest
+ public void testRefreshSameObject() throws Exception {
+ int[] refreshCount = new int[1];
+ TestCache cache = new TestCache() {
+ @Override
+ protected String refresh(String oldResult, Integer query) {
+ refreshCount[0] += 1;
+ return oldResult;
+ }
+ };
+ cache.invalidateCache();
+ String result1 = cache.query(5);
+ assertEquals("foo5", result1);
+ String result2 = cache.query(5);
+ assertSame(result1, result2);
+ assertEquals(1, cache.getRecomputeCount());
+ assertEquals(1, refreshCount[0]);
+ assertEquals("foo5", cache.query(5));
+ assertEquals(2, refreshCount[0]);
+ }
+
+ @SmallTest
+ public void testRefreshInvalidateRace() throws Exception {
+ int[] refreshCount = new int[1];
+ TestCache cache = new TestCache() {
+ @Override
+ protected String refresh(String oldResult, Integer query) {
+ refreshCount[0] += 1;
+ invalidateCache();
+ return new String(oldResult);
+ }
+ };
+ cache.invalidateCache();
+ String result1 = cache.query(5);
+ assertEquals("foo5", result1);
+ String result2 = cache.query(5);
+ assertEquals(result1, result2);
+ assertNotSame(result1, result2);
+ assertEquals(2, cache.getRecomputeCount());
+ }
+
+ @SmallTest
+ public void testLocalProcessDisable() throws Exception {
+ TestCache cache = new TestCache();
+ cache.invalidateCache();
+ assertEquals("foo5", cache.query(5));
+ assertEquals(1, cache.getRecomputeCount());
+ assertEquals("foo5", cache.query(5));
+ assertEquals(1, cache.getRecomputeCount());
+ assertEquals(cache.isDisabledLocal(), false);
+ cache.disableLocal();
+ assertEquals(cache.isDisabledLocal(), true);
+ assertEquals("foo5", cache.query(5));
+ assertEquals("foo5", cache.query(5));
+ assertEquals(3, cache.getRecomputeCount());
+ }
+
+}
diff --git a/core/tests/systemproperties/src/android/os/SystemPropertiesTest.java b/core/tests/systemproperties/src/android/os/SystemPropertiesTest.java
index b48ac33..9f70538 100644
--- a/core/tests/systemproperties/src/android/os/SystemPropertiesTest.java
+++ b/core/tests/systemproperties/src/android/os/SystemPropertiesTest.java
@@ -26,6 +26,7 @@
public class SystemPropertiesTest extends TestCase {
private static final String KEY = "sys.testkey";
+ private static final String UNSET_KEY = "Aiw7woh6ie4toh7W";
private static final String PERSIST_KEY = "persist.sys.testkey";
@SmallTest
@@ -133,6 +134,15 @@
}
@SmallTest
+ public void testUnset() throws Exception {
+ assertEquals("abc", SystemProperties.get(UNSET_KEY, "abc"));
+ assertEquals(true, SystemProperties.getBoolean(UNSET_KEY, true));
+ assertEquals(false, SystemProperties.getBoolean(UNSET_KEY, false));
+ assertEquals(5, SystemProperties.getInt(UNSET_KEY, 5));
+ assertEquals(-10, SystemProperties.getLong(UNSET_KEY, -10));
+ }
+
+ @SmallTest
@SuppressWarnings("null")
public void testNullKey() throws Exception {
try {
diff --git a/core/tests/utiltests/AndroidManifest.xml b/core/tests/utiltests/AndroidManifest.xml
index 4ef4b1f..8e0f1d2 100644
--- a/core/tests/utiltests/AndroidManifest.xml
+++ b/core/tests/utiltests/AndroidManifest.xml
@@ -30,7 +30,6 @@
<uses-permission android:name="android.permission.MANAGE_NETWORK_POLICY" />
<uses-permission android:name="android.permission.READ_NETWORK_USAGE_HISTORY" />
- <uses-permission android:name="android.permission.CONNECTIVITY_INTERNAL" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.MANAGE_USERS" />
<uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" />
diff --git a/data/etc/Android.bp b/data/etc/Android.bp
index befa637..c49d663 100644
--- a/data/etc/Android.bp
+++ b/data/etc/Android.bp
@@ -49,7 +49,7 @@
prebuilt_etc {
name: "privapp_whitelist_com.android.carrierconfig",
- product_specific: true,
+ system_ext_specific: true,
sub_dir: "permissions",
src: "com.android.carrierconfig.xml",
filename_from_src: true,
@@ -73,7 +73,7 @@
prebuilt_etc {
name: "privapp_whitelist_com.android.emergency",
- product_specific: true,
+ system_ext_specific: true,
sub_dir: "permissions",
src: "com.android.emergency.xml",
filename_from_src: true,
@@ -96,7 +96,7 @@
prebuilt_etc {
name: "privapp_whitelist_com.android.provision",
- product_specific: true,
+ system_ext_specific: true,
sub_dir: "permissions",
src: "com.android.provision.xml",
filename_from_src: true,
diff --git a/data/etc/CleanSpec.mk b/data/etc/CleanSpec.mk
new file mode 100644
index 0000000..cffb1ba
--- /dev/null
+++ b/data/etc/CleanSpec.mk
@@ -0,0 +1,54 @@
+# Copyright (C) 2019 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.
+#
+
+# If you don't need to do a full clean build but would like to touch
+# a file or delete some intermediate files, add a clean step to the end
+# of the list. These steps will only be run once, if they haven't been
+# run before.
+#
+# E.g.:
+# $(call add-clean-step, touch -c external/sqlite/sqlite3.h)
+# $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libz_intermediates)
+#
+# Always use "touch -c" and "rm -f" or "rm -rf" to gracefully deal with
+# files that are missing or have been moved.
+#
+# Use $(PRODUCT_OUT) to get to the "out/target/product/blah/" directory.
+# Use $(OUT_DIR) to refer to the "out" directory.
+#
+# If you need to re-do something that's already mentioned, just copy
+# the command and add it to the bottom of the list. E.g., if a change
+# that you made last week required touching a file and a change you
+# made today requires touching the same file, just copy the old
+# touch step and add it to the end of the list.
+#
+# *****************************************************************
+# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST ABOVE THE BANNER
+# *****************************************************************
+
+# For example:
+#$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/APPS/AndroidTests_intermediates)
+#$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/core_intermediates)
+#$(call add-clean-step, find $(OUT_DIR) -type f -name "IGTalkSession*" -print0 | xargs -0 rm -f)
+#$(call add-clean-step, rm -rf $(PRODUCT_OUT)/data/*)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/product/etc/permissions/com.android.carrierconfig.xml)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/product/etc/permissions/com.android.carrierconfig.xml)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/product/etc/permissions/com.android.emergency.xml)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/product/etc/permissions/com.android.emergency.xml)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/product/etc/permissions/com.android.provision.xml)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/product/etc/permissions/com.android.provision.xml)
+# ******************************************************************
+# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST ABOVE THIS BANNER
+# ******************************************************************
diff --git a/data/etc/com.android.settings.xml b/data/etc/com.android.settings.xml
index 1882c3f..ba877f8 100644
--- a/data/etc/com.android.settings.xml
+++ b/data/etc/com.android.settings.xml
@@ -34,15 +34,14 @@
<permission name="android.permission.MANAGE_USER_OEM_UNLOCK_STATE" />
<permission name="android.permission.MASTER_CLEAR"/>
<permission name="android.permission.MEDIA_CONTENT_CONTROL"/>
- <permission name="android.permission.READ_PRIVILEGED_PHONE_STATE"/>
<permission name="android.permission.MODIFY_PHONE_STATE"/>
<permission name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<permission name="android.permission.MOVE_PACKAGE"/>
<permission name="android.permission.OVERRIDE_WIFI_CONFIG"/>
<permission name="android.permission.PACKAGE_USAGE_STATS"/>
+ <permission name="android.permission.READ_PRIVILEGED_PHONE_STATE"/>
<permission name="android.permission.READ_SEARCH_INDEXABLES"/>
<permission name="android.permission.REBOOT"/>
- <permission name="android.permission.REQUEST_NETWORK_SCORES"/>
<permission name="android.permission.SET_TIME"/>
<permission name="android.permission.STATUS_BAR"/>
<permission name="android.permission.TETHER_PRIVILEGED"/>
diff --git a/data/etc/preinstalled-packages-platform.xml b/data/etc/preinstalled-packages-platform.xml
index ccd8b5bb..604b407 100644
--- a/data/etc/preinstalled-packages-platform.xml
+++ b/data/etc/preinstalled-packages-platform.xml
@@ -16,26 +16,37 @@
<!--
This XML file declares which system packages should be initially installed for new users based on
-the type of user. All system packages on the device should ideally have an entry in an xml file
-(keys by its manifest name).
+their user type. All system packages on the device should ideally have an entry in an xml file
+(keyed by its manifest name).
-Main user-types (every user will be at least one of these types) are:
+Base user-types (every user will be at least one of these types) are:
SYSTEM (user 0)
FULL (any non-profile human user)
PROFILE (profile human user)
-
-Additional optional types are: GUEST, RESTRICTED, MANAGED_PROFILE, EPHEMERAL, DEMO
-
-The meaning of each of these user types is delineated by flags in
+the precise meaning of which is defined in
frameworks/base/core/java/android/content/pm/UserInfo.java.
-See frameworks/base/services/core/java/com/android/server/pm/UserSystemPackageInstaller#getFlagsFromUserTypes
+TODO(b/143784345): When UserInfo flags are categorized, reference the "base type" category here.
+
+More granular control is also available by specifying individual user types (every user is exactly
+one of these user types).
+This includes AOSP user types defined in frameworks/base/core/java/android/os/UserManager.java, like
+ android.os.usertype.full.SYSTEM
+ android.os.usertype.full.SECONDARY
+ android.os.usertype.full.GUEST
+ android.os.usertype.full.DEMO
+ android.os.usertype.full.RESTRICTED
+ android.os.usertype.profile.MANAGED
+ android.os.usertype.system.HEADLESS
+as well as any OEM custom user types defined using
+frameworks/base/services/core/java/com/android/server/pm/UserTypeFactory.java.
+Any specified user types must be valid user types on the device (i.e. created in UserTypeFactory).
The following three examples should cover most normal cases:
1. For a system package to be pre-installed only in user 0:
<install-in-user-type package="com.android.example">
- <install-in user-type="SYSTEM">
+ <install-in user-type="SYSTEM" />
</install-in-user-type>
@@ -43,8 +54,8 @@
installed on any user of type type FULL or PROFILE (since this covers all human users):
<install-in-user-type package="com.android.example">
- <install-in user-type="FULL">
- <install-in user-type="PROFILE">
+ <install-in user-type="FULL" />
+ <install-in user-type="PROFILE" />
</install-in-user-type>
@@ -52,27 +63,35 @@
wallpaper app, since profiles cannot display wallpaper):
<install-in-user-type package="com.android.example">
- <install-in user-type="FULL">
+ <install-in user-type="FULL" />
</install-in-user-type>
Some system packages truly are required to be on all users, regardless of type, in which case use:
<install-in-user-type package="com.android.example">
<install-in user-type="SYSTEM">
- <install-in user-type="FULL">
- <install-in user-type="PROFILE">
+ <install-in user-type="FULL" />
+ <install-in user-type="PROFILE" />
</install-in-user-type>
-More fine-grained options are also available (see below). Additionally, packages can blacklist
-user types. Blacklists override any whitelisting (in any file).
+More fine-grained options are also available by specifying individual user types.
+E.g.
+ <install-in-user-type package="com.android.example">
+ <install-in user-type="android.os.usertype.profile.MANAGED" />
+ <install-in user-type="android.os.usertype.full.GUEST" />
+ <install-in user-type="SYSTEM">
+ </install-in-user-type>
+which installs this package on any user whose user type is a managed profile or a guest, or is of
+a SYSTEM base type.
+
+Additionally, packages can blacklist user types. Blacklists override any whitelisting (in any file).
E.g.
<install-in-user-type package="com.android.example">
<install-in user-type="FULL" />
- <do-not-install-in user-type="GUEST" />
+ <do-not-install-in user-type="android.os.usertype.full.GUEST" />
</install-in-user-type>
-
-If a user is of type FULL and GUEST, this package will NOT be installed, because the
-'do-not-install-in' takes precedence over 'install-in'.
+If a user is of type android.os.usertype.full.GUEST (which itself is a subtype of FULL), this
+package will NOT be installed, because the 'do-not-install-in' takes precedence over 'install-in'.
The way that a device treats system packages that do not have any entry (for any user type) at all
is determined by the config resource value config_userTypePackageWhitelistMode.
diff --git a/data/etc/privapp-permissions-platform.xml b/data/etc/privapp-permissions-platform.xml
index fe539e4..cf3f51d 100644
--- a/data/etc/privapp-permissions-platform.xml
+++ b/data/etc/privapp-permissions-platform.xml
@@ -339,8 +339,10 @@
<permission name="android.permission.SYSTEM_CAMERA" />
<!-- Permission required to test ExplicitHealthCheckServiceImpl. -->
<permission name="android.permission.BIND_EXPLICIT_HEALTH_CHECK_SERVICE"/>
- <!-- Permission required for UiModeManager cts test. -->
+ <!-- Permission required for UiModeManager CTS test. -->
<permission name="android.permission.ENTER_CAR_MODE_PRIORITIZED"/>
+ <!-- Permission required for Telecom car mode CTS tests. -->
+ <permission name="android.permission.CONTROL_INCALL_EXPERIENCE"/>
</privapp-permissions>
<privapp-permissions package="com.android.statementservice">
@@ -367,22 +369,4 @@
<permission name="android.permission.REBOOT"/>
<permission name="android.permission.MANAGE_DYNAMIC_SYSTEM"/>
</privapp-permissions>
-
- <privapp-permissions package="com.android.wifi">
- <permission name="android.permission.CHANGE_CONFIGURATION"/>
- <permission name="android.permission.CONNECTIVITY_INTERNAL"/>
- <permission name="android.permission.DUMP"/>
- <permission name="android.permission.INTERACT_ACROSS_USERS_FULL"/>
- <permission name="android.permission.INTERNAL_SYSTEM_WINDOW"/>
- <permission name="android.permission.LOCAL_MAC_ADDRESS"/>
- <permission name="android.permission.MANAGE_USERS"/>
- <permission name="android.permission.PACKAGE_USAGE_STATS"/>
- <permission name="android.permission.READ_DEVICE_CONFIG"/>
- <permission name="android.permission.READ_PRIVILEGED_PHONE_STATE"/>
- <permission name="android.permission.REQUEST_NETWORK_SCORES"/>
- <permission name="android.permission.WRITE_SECURE_SETTINGS"/>
- <permission name="android.permission.UPDATE_DEVICE_STATS"/>
- <permission name="android.permission.UPDATE_APP_OPS_STATS"/>
- <permission name="android.permission.LOCATION_HARDWARE"/>
- </privapp-permissions>
</permissions>
diff --git a/graphics/java/android/graphics/RuntimeShader.java b/graphics/java/android/graphics/RuntimeShader.java
new file mode 100644
index 0000000..613ce90
--- /dev/null
+++ b/graphics/java/android/graphics/RuntimeShader.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright 2019 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.graphics;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+
+import libcore.util.NativeAllocationRegistry;
+
+/**
+ * Shader that calculates pixel output with a program (fragment shader) running on a GPU.
+ * @hide
+ */
+public class RuntimeShader extends Shader {
+
+ private static class NoImagePreloadHolder {
+ public static final NativeAllocationRegistry sRegistry =
+ NativeAllocationRegistry.createMalloced(
+ RuntimeShader.class.getClassLoader(), nativeGetFinalizer());
+ }
+
+ private byte[] mUniforms;
+
+ /**
+ * Current native shader factory instance.
+ */
+ private long mNativeInstanceRuntimeShaderFactory;
+
+ /**
+ * Creates a new RuntimeShader.
+ *
+ * @param sksl The text of SKSL program to run on the GPU.
+ * @param uniforms Array of parameters passed by the SKSL shader. Array size depends
+ * on number of uniforms declared by sksl.
+ * @param isOpaque True if all pixels have alpha 1.0f.
+ */
+ public RuntimeShader(@NonNull String sksl, @Nullable byte[] uniforms, boolean isOpaque) {
+ this(sksl, uniforms, isOpaque, ColorSpace.get(ColorSpace.Named.SRGB));
+ }
+
+ private RuntimeShader(@NonNull String sksl, @Nullable byte[] uniforms, boolean isOpaque,
+ ColorSpace colorSpace) {
+ super(colorSpace);
+ mUniforms = uniforms;
+ mNativeInstanceRuntimeShaderFactory = nativeCreateShaderFactory(sksl, isOpaque);
+ NoImagePreloadHolder.sRegistry.registerNativeAllocation(this,
+ mNativeInstanceRuntimeShaderFactory);
+ }
+
+ /**
+ * Sets new value for shader parameters.
+ *
+ * @param uniforms Array of parameters passed by the SKSL shader. Array size depends
+ * on number of uniforms declared by mSksl.
+ */
+ public void updateUniforms(@Nullable byte[] uniforms) {
+ mUniforms = uniforms;
+ discardNativeInstance();
+ }
+
+ @Override
+ long createNativeInstance(long nativeMatrix) {
+ return nativeCreate(mNativeInstanceRuntimeShaderFactory, nativeMatrix, mUniforms,
+ colorSpace().getNativeInstance());
+ }
+
+ private static native long nativeCreate(long shaderFactory, long matrix, byte[] inputs,
+ long colorSpaceHandle);
+
+ private static native long nativeCreateShaderFactory(String sksl, boolean isOpaque);
+
+ private static native long nativeGetFinalizer();
+}
+
diff --git a/keystore/java/android/security/Credentials.java b/keystore/java/android/security/Credentials.java
index f25910b..572fa8c 100644
--- a/keystore/java/android/security/Credentials.java
+++ b/keystore/java/android/security/Credentials.java
@@ -68,6 +68,9 @@
/** Key prefix for WIFI. */
public static final String WIFI = "WIFI_";
+ /** Key prefix for App Source certificates. */
+ public static final String APP_SOURCE_CERTIFICATE = "FSV_";
+
/** Key containing suffix of lockdown VPN profile. */
public static final String LOCKDOWN_VPN = "LOCKDOWN_VPN";
@@ -80,6 +83,9 @@
/** Name of WIFI certificate usage. */
public static final String CERTIFICATE_USAGE_WIFI = "wifi";
+ /** Name of App Source certificate usage. */
+ public static final String CERTIFICATE_USAGE_APP_SOURCE = "appsrc";
+
/** Data type for public keys. */
public static final String EXTRA_PUBLIC_KEY = "KEY";
diff --git a/libs/androidfw/Android.bp b/libs/androidfw/Android.bp
index 4f52a88..8765719 100644
--- a/libs/androidfw/Android.bp
+++ b/libs/androidfw/Android.bp
@@ -67,7 +67,6 @@
"BackupData.cpp",
"BackupHelpers.cpp",
"CursorWindow.cpp",
- "DisplayEventDispatcher.cpp",
],
shared_libs: [
"libziparchive",
@@ -75,7 +74,6 @@
"libbinder",
"liblog",
"libcutils",
- "libgui",
"libutils",
"libz",
],
diff --git a/libs/androidfw/DisplayEventDispatcher.cpp b/libs/androidfw/DisplayEventDispatcher.cpp
deleted file mode 100644
index d8a3f426..0000000
--- a/libs/androidfw/DisplayEventDispatcher.cpp
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#define LOG_TAG "DisplayEventDispatcher"
-
-#include <cinttypes>
-#include <cstdint>
-
-#include <androidfw/DisplayEventDispatcher.h>
-#include <gui/DisplayEventReceiver.h>
-#include <utils/Log.h>
-#include <utils/Looper.h>
-
-#include <utils/Timers.h>
-
-namespace android {
-
-// Number of events to read at a time from the DisplayEventDispatcher pipe.
-// The value should be large enough that we can quickly drain the pipe
-// using just a few large reads.
-static const size_t EVENT_BUFFER_SIZE = 100;
-
-DisplayEventDispatcher::DisplayEventDispatcher(const sp<Looper>& looper,
- ISurfaceComposer::VsyncSource vsyncSource,
- ISurfaceComposer::ConfigChanged configChanged) :
- mLooper(looper), mReceiver(vsyncSource, configChanged), mWaitingForVsync(false) {
- ALOGV("dispatcher %p ~ Initializing display event dispatcher.", this);
-}
-
-status_t DisplayEventDispatcher::initialize() {
- status_t result = mReceiver.initCheck();
- if (result) {
- ALOGW("Failed to initialize display event receiver, status=%d", result);
- return result;
- }
-
- int rc = mLooper->addFd(mReceiver.getFd(), 0, Looper::EVENT_INPUT,
- this, NULL);
- if (rc < 0) {
- return UNKNOWN_ERROR;
- }
- return OK;
-}
-
-void DisplayEventDispatcher::dispose() {
- ALOGV("dispatcher %p ~ Disposing display event dispatcher.", this);
-
- if (!mReceiver.initCheck()) {
- mLooper->removeFd(mReceiver.getFd());
- }
-}
-
-status_t DisplayEventDispatcher::scheduleVsync() {
- if (!mWaitingForVsync) {
- ALOGV("dispatcher %p ~ Scheduling vsync.", this);
-
- // Drain all pending events.
- nsecs_t vsyncTimestamp;
- PhysicalDisplayId vsyncDisplayId;
- uint32_t vsyncCount;
- if (processPendingEvents(&vsyncTimestamp, &vsyncDisplayId, &vsyncCount)) {
- ALOGE("dispatcher %p ~ last event processed while scheduling was for %" PRId64 "",
- this, ns2ms(static_cast<nsecs_t>(vsyncTimestamp)));
- }
-
- status_t status = mReceiver.requestNextVsync();
- if (status) {
- ALOGW("Failed to request next vsync, status=%d", status);
- return status;
- }
-
- mWaitingForVsync = true;
- }
- return OK;
-}
-
-int DisplayEventDispatcher::handleEvent(int, int events, void*) {
- if (events & (Looper::EVENT_ERROR | Looper::EVENT_HANGUP)) {
- ALOGE("Display event receiver pipe was closed or an error occurred. "
- "events=0x%x", events);
- return 0; // remove the callback
- }
-
- if (!(events & Looper::EVENT_INPUT)) {
- ALOGW("Received spurious callback for unhandled poll event. "
- "events=0x%x", events);
- return 1; // keep the callback
- }
-
- // Drain all pending events, keep the last vsync.
- nsecs_t vsyncTimestamp;
- PhysicalDisplayId vsyncDisplayId;
- uint32_t vsyncCount;
- if (processPendingEvents(&vsyncTimestamp, &vsyncDisplayId, &vsyncCount)) {
- ALOGV("dispatcher %p ~ Vsync pulse: timestamp=%" PRId64 ", displayId=%"
- ANDROID_PHYSICAL_DISPLAY_ID_FORMAT ", count=%d",
- this, ns2ms(vsyncTimestamp), vsyncDisplayId, vsyncCount);
- mWaitingForVsync = false;
- dispatchVsync(vsyncTimestamp, vsyncDisplayId, vsyncCount);
- }
-
- return 1; // keep the callback
-}
-
-bool DisplayEventDispatcher::processPendingEvents(
- nsecs_t* outTimestamp, PhysicalDisplayId* outDisplayId, uint32_t* outCount) {
- bool gotVsync = false;
- DisplayEventReceiver::Event buf[EVENT_BUFFER_SIZE];
- ssize_t n;
- while ((n = mReceiver.getEvents(buf, EVENT_BUFFER_SIZE)) > 0) {
- ALOGV("dispatcher %p ~ Read %d events.", this, int(n));
- for (ssize_t i = 0; i < n; i++) {
- const DisplayEventReceiver::Event& ev = buf[i];
- switch (ev.header.type) {
- case DisplayEventReceiver::DISPLAY_EVENT_VSYNC:
- // Later vsync events will just overwrite the info from earlier
- // ones. That's fine, we only care about the most recent.
- gotVsync = true;
- *outTimestamp = ev.header.timestamp;
- *outDisplayId = ev.header.displayId;
- *outCount = ev.vsync.count;
- break;
- case DisplayEventReceiver::DISPLAY_EVENT_HOTPLUG:
- dispatchHotplug(ev.header.timestamp, ev.header.displayId, ev.hotplug.connected);
- break;
- case DisplayEventReceiver::DISPLAY_EVENT_CONFIG_CHANGED:
- dispatchConfigChanged(ev.header.timestamp, ev.header.displayId, ev.config.configId);
- break;
- default:
- ALOGW("dispatcher %p ~ ignoring unknown event type %#x", this, ev.header.type);
- break;
- }
- }
- }
- if (n < 0) {
- ALOGW("Failed to get events from display event dispatcher, status=%d", status_t(n));
- }
- return gotVsync;
-}
-}
diff --git a/libs/androidfw/include/androidfw/DisplayEventDispatcher.h b/libs/androidfw/include/androidfw/DisplayEventDispatcher.h
deleted file mode 100644
index 8bc2520..0000000
--- a/libs/androidfw/include/androidfw/DisplayEventDispatcher.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (C) 2015 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.
- */
-
-#include <gui/DisplayEventReceiver.h>
-#include <utils/Log.h>
-#include <utils/Looper.h>
-
-namespace android {
-
-class DisplayEventDispatcher : public LooperCallback {
-public:
- explicit DisplayEventDispatcher(const sp<Looper>& looper,
- ISurfaceComposer::VsyncSource vsyncSource = ISurfaceComposer::eVsyncSourceApp,
- ISurfaceComposer::ConfigChanged configChanged = ISurfaceComposer::eConfigChangedSuppress);
-
- status_t initialize();
- void dispose();
- status_t scheduleVsync();
-
-protected:
- virtual ~DisplayEventDispatcher() = default;
-
-private:
- sp<Looper> mLooper;
- DisplayEventReceiver mReceiver;
- bool mWaitingForVsync;
-
- virtual void dispatchVsync(nsecs_t timestamp, PhysicalDisplayId displayId, uint32_t count) = 0;
- virtual void dispatchHotplug(nsecs_t timestamp, PhysicalDisplayId displayId,
- bool connected) = 0;
- virtual void dispatchConfigChanged(nsecs_t timestamp, PhysicalDisplayId displayId,
- int32_t configId) = 0;
-
- virtual int handleEvent(int receiveFd, int events, void* data);
- bool processPendingEvents(nsecs_t* outTimestamp, PhysicalDisplayId* outDisplayId,
- uint32_t* outCount);
-};
-}
diff --git a/libs/hwui/DeviceInfo.cpp b/libs/hwui/DeviceInfo.cpp
index 41e9b4b..e53f3db 100644
--- a/libs/hwui/DeviceInfo.cpp
+++ b/libs/hwui/DeviceInfo.cpp
@@ -15,9 +15,8 @@
*/
#include <DeviceInfo.h>
-#include <gui/SurfaceComposerClient.h>
#include <log/log.h>
-#include <ui/GraphicTypes.h>
+#include <utils/Errors.h>
#include <mutex>
#include <thread>
@@ -32,44 +31,6 @@
return &sDeviceInfo;
}
-static void queryWideColorGamutPreference(sk_sp<SkColorSpace>* colorSpace, SkColorType* colorType) {
- if (Properties::isolatedProcess) {
- *colorSpace = SkColorSpace::MakeSRGB();
- *colorType = SkColorType::kN32_SkColorType;
- return;
- }
- ui::Dataspace defaultDataspace, wcgDataspace;
- ui::PixelFormat defaultPixelFormat, wcgPixelFormat;
- status_t status =
- SurfaceComposerClient::getCompositionPreference(&defaultDataspace, &defaultPixelFormat,
- &wcgDataspace, &wcgPixelFormat);
- LOG_ALWAYS_FATAL_IF(status, "Failed to get composition preference, error %d", status);
- switch (wcgDataspace) {
- case ui::Dataspace::DISPLAY_P3:
- *colorSpace = SkColorSpace::MakeRGB(SkNamedTransferFn::kSRGB, SkNamedGamut::kDCIP3);
- break;
- case ui::Dataspace::V0_SCRGB:
- *colorSpace = SkColorSpace::MakeSRGB();
- break;
- case ui::Dataspace::V0_SRGB:
- // when sRGB is returned, it means wide color gamut is not supported.
- *colorSpace = SkColorSpace::MakeSRGB();
- break;
- default:
- LOG_ALWAYS_FATAL("Unreachable: unsupported wide color space.");
- }
- switch (wcgPixelFormat) {
- case ui::PixelFormat::RGBA_8888:
- *colorType = SkColorType::kN32_SkColorType;
- break;
- case ui::PixelFormat::RGBA_FP16:
- *colorType = SkColorType::kRGBA_F16_SkColorType;
- break;
- default:
- LOG_ALWAYS_FATAL("Unreachable: unsupported pixel format.");
- }
-}
-
DeviceInfo::DeviceInfo() {
#if HWUI_NULL_GPU
mMaxTextureSize = NULL_GPU_MAX_TEXTURE_SIZE;
@@ -77,7 +38,6 @@
mMaxTextureSize = -1;
#endif
updateDisplayInfo();
- queryWideColorGamutPreference(&mWideColorSpace, &mWideColorType);
}
DeviceInfo::~DeviceInfo() {
ADisplay_release(mDisplays);
@@ -113,9 +73,45 @@
}
}
LOG_ALWAYS_FATAL_IF(mPhysicalDisplayIndex < 0, "Failed to find a connected physical display!");
- mMaxRefreshRate = ADisplay_getMaxSupportedFps(mDisplays[mPhysicalDisplayIndex]);
+
+
+ // Since we now just got the primary display for the first time, then
+ // store the primary display metadata here.
+ ADisplay* primaryDisplay = mDisplays[mPhysicalDisplayIndex];
+ mMaxRefreshRate = ADisplay_getMaxSupportedFps(primaryDisplay);
+ ADataSpace dataspace;
+ AHardwareBuffer_Format format;
+ ADisplay_getPreferredWideColorFormat(primaryDisplay, &dataspace, &format);
+ switch (dataspace) {
+ case ADATASPACE_DISPLAY_P3:
+ mWideColorSpace =
+ SkColorSpace::MakeRGB(SkNamedTransferFn::kSRGB, SkNamedGamut::kDCIP3);
+ break;
+ case ADATASPACE_SCRGB:
+ mWideColorSpace = SkColorSpace::MakeSRGB();
+ break;
+ case ADATASPACE_SRGB:
+ // when sRGB is returned, it means wide color gamut is not supported.
+ mWideColorSpace = SkColorSpace::MakeSRGB();
+ break;
+ default:
+ LOG_ALWAYS_FATAL("Unreachable: unsupported wide color space.");
+ }
+ switch (format) {
+ case AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM:
+ mWideColorType = SkColorType::kN32_SkColorType;
+ break;
+ case AHARDWAREBUFFER_FORMAT_R16G16B16A16_FLOAT:
+ mWideColorType = SkColorType::kRGBA_F16_SkColorType;
+ break;
+ default:
+ LOG_ALWAYS_FATAL("Unreachable: unsupported pixel format.");
+ }
}
- status_t status = ADisplay_getCurrentConfig(mDisplays[mPhysicalDisplayIndex], &mCurrentConfig);
+ // This method may have been called when the display config changed, so
+ // sync with the current configuration.
+ ADisplay* primaryDisplay = mDisplays[mPhysicalDisplayIndex];
+ status_t status = ADisplay_getCurrentConfig(primaryDisplay, &mCurrentConfig);
LOG_ALWAYS_FATAL_IF(status, "Failed to get display config, error %d", status);
mWidth = ADisplayConfig_getWidth(mCurrentConfig);
mHeight = ADisplayConfig_getHeight(mCurrentConfig);
diff --git a/libs/hwui/DeviceInfo.h b/libs/hwui/DeviceInfo.h
index 3431583..a420746 100644
--- a/libs/hwui/DeviceInfo.h
+++ b/libs/hwui/DeviceInfo.h
@@ -58,8 +58,8 @@
~DeviceInfo();
int mMaxTextureSize;
- sk_sp<SkColorSpace> mWideColorSpace;
- SkColorType mWideColorType;
+ sk_sp<SkColorSpace> mWideColorSpace = SkColorSpace::MakeSRGB();
+ SkColorType mWideColorType = SkColorType::kN32_SkColorType;
ADisplayConfig* mCurrentConfig = nullptr;
ADisplay** mDisplays = nullptr;
int mDisplaysSize = 0;
diff --git a/libs/hwui/VectorDrawable.cpp b/libs/hwui/VectorDrawable.cpp
index 217b0c4..cd908354 100644
--- a/libs/hwui/VectorDrawable.cpp
+++ b/libs/hwui/VectorDrawable.cpp
@@ -135,8 +135,7 @@
bool setFillPath = properties.getFillGradient() != nullptr ||
properties.getFillColor() != SK_ColorTRANSPARENT;
if (setFillPath) {
- SkPath::FillType ft = static_cast<SkPath::FillType>(properties.getFillType());
- outPath->setFillType(ft);
+ outPath->setFillType(static_cast<SkPathFillType>(properties.getFillType()));
}
return *outPath;
}
diff --git a/libs/hwui/tests/unit/VectorDrawableTests.cpp b/libs/hwui/tests/unit/VectorDrawableTests.cpp
index 60fd7a7..6d4c574 100644
--- a/libs/hwui/tests/unit/VectorDrawableTests.cpp
+++ b/libs/hwui/tests/unit/VectorDrawableTests.cpp
@@ -85,9 +85,9 @@
outPath->rCubicTo(8.0, 8.0, 8.0, 8.0, 8.0, 8.0);
outPath->cubicTo(16.0, 16.0, 9.0, 9.0, 9.0, 9.0);
outPath->rCubicTo(0.0, 0.0, 9.0, 9.0, 9.0, 9.0);
- outPath->arcTo(10.0, 10.0, 0.0, SkPath::kLarge_ArcSize, SkPath::kCW_Direction, 10.0,
+ outPath->arcTo(10.0, 10.0, 0.0, SkPath::kLarge_ArcSize, SkPathDirection::kCW, 10.0,
10.0);
- outPath->arcTo(10.0, 10.0, 0.0, SkPath::kLarge_ArcSize, SkPath::kCW_Direction, 20.0,
+ outPath->arcTo(10.0, 10.0, 0.0, SkPath::kLarge_ArcSize, SkPathDirection::kCW, 20.0,
20.0);
}},
@@ -159,7 +159,7 @@
},
[](SkPath* outPath) {
outPath->moveTo(300.0, 70.0);
- outPath->arcTo(230.0, 230.0, 0.0, SkPath::kLarge_ArcSize, SkPath::kCCW_Direction,
+ outPath->arcTo(230.0, 230.0, 0.0, SkPath::kLarge_ArcSize, SkPathDirection::kCCW,
301.0, 70.0);
outPath->close();
outPath->moveTo(300.0, 70.0);
diff --git a/libs/hwui/utils/VectorDrawableUtils.cpp b/libs/hwui/utils/VectorDrawableUtils.cpp
index 6b8f315..bd963df 100644
--- a/libs/hwui/utils/VectorDrawableUtils.cpp
+++ b/libs/hwui/utils/VectorDrawableUtils.cpp
@@ -300,7 +300,7 @@
// (rx ry x-axis-rotation large-arc-flag sweep-flag x y)
outPath->arcTo(points->at(k + 0), points->at(k + 1), points->at(k + 2),
(SkPath::ArcSize) (points->at(k + 3) != 0),
- (SkPath::Direction) (points->at(k + 4) == 0),
+ (SkPathDirection) (points->at(k + 4) == 0),
points->at(k + 5) + currentX, points->at(k + 6) + currentY);
currentX += points->at(k + 5);
currentY += points->at(k + 6);
@@ -310,7 +310,7 @@
case 'A': // Draws an elliptical arc
outPath->arcTo(points->at(k + 0), points->at(k + 1), points->at(k + 2),
(SkPath::ArcSize) (points->at(k + 3) != 0),
- (SkPath::Direction) (points->at(k + 4) == 0),
+ (SkPathDirection) (points->at(k + 4) == 0),
points->at(k + 5), points->at(k + 6));
currentX = points->at(k + 5);
currentY = points->at(k + 6);
diff --git a/location/TEST_MAPPING b/location/TEST_MAPPING
index 2f386271..a9dbda4 100644
--- a/location/TEST_MAPPING
+++ b/location/TEST_MAPPING
@@ -1,10 +1,13 @@
{
"presubmit": [
{
+ "name": "CtsLocationFineTestCases"
+ },
+ {
"name": "CtsLocationCoarseTestCases"
},
{
"name": "CtsLocationNoneTestCases"
}
]
-}
+}
\ No newline at end of file
diff --git a/location/java/android/location/GnssMeasurement.java b/location/java/android/location/GnssMeasurement.java
index 9013a96..70abbb3 100644
--- a/location/java/android/location/GnssMeasurement.java
+++ b/location/java/android/location/GnssMeasurement.java
@@ -16,9 +16,11 @@
package android.location;
+import android.annotation.FloatRange;
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.TestApi;
+import android.hardware.gnss.V1_0.IGnssMeasurementCallback.GnssMeasurementFlags;
import android.os.Parcel;
import android.os.Parcelable;
@@ -37,6 +39,7 @@
private long mReceivedSvTimeNanos;
private long mReceivedSvTimeUncertaintyNanos;
private double mCn0DbHz;
+ private double mBasebandCn0DbHz;
private double mPseudorangeRateMetersPerSecond;
private double mPseudorangeRateUncertaintyMetersPerSecond;
private int mAccumulatedDeltaRangeState;
@@ -51,16 +54,20 @@
private double mAutomaticGainControlLevelInDb;
@NonNull private String mCodeType;
- // The following enumerations must be in sync with the values declared in gps.h
+ // The following enumerations must be in sync with the values declared in GNSS HAL.
private static final int HAS_NO_FLAGS = 0;
- private static final int HAS_SNR = (1<<0);
- private static final int HAS_CARRIER_FREQUENCY = (1<<9);
- private static final int HAS_CARRIER_CYCLES = (1<<10);
- private static final int HAS_CARRIER_PHASE = (1<<11);
- private static final int HAS_CARRIER_PHASE_UNCERTAINTY = (1<<12);
- private static final int HAS_AUTOMATIC_GAIN_CONTROL = (1<<13);
+ private static final int HAS_SNR = GnssMeasurementFlags.HAS_SNR;
+ private static final int HAS_CARRIER_FREQUENCY = GnssMeasurementFlags.HAS_CARRIER_FREQUENCY;
+ private static final int HAS_CARRIER_CYCLES = GnssMeasurementFlags.HAS_CARRIER_CYCLES;
+ private static final int HAS_CARRIER_PHASE = GnssMeasurementFlags.HAS_CARRIER_PHASE;
+ private static final int HAS_CARRIER_PHASE_UNCERTAINTY =
+ GnssMeasurementFlags.HAS_CARRIER_PHASE_UNCERTAINTY;
+ private static final int HAS_AUTOMATIC_GAIN_CONTROL =
+ GnssMeasurementFlags.HAS_AUTOMATIC_GAIN_CONTROL;
+
private static final int HAS_CODE_TYPE = (1 << 14);
+ private static final int HAS_BASEBAND_CN0 = (1 << 15);
/**
* The status of the multipath indicator.
@@ -240,6 +247,7 @@
mReceivedSvTimeNanos = measurement.mReceivedSvTimeNanos;
mReceivedSvTimeUncertaintyNanos = measurement.mReceivedSvTimeUncertaintyNanos;
mCn0DbHz = measurement.mCn0DbHz;
+ mBasebandCn0DbHz = measurement.mBasebandCn0DbHz;
mPseudorangeRateMetersPerSecond = measurement.mPseudorangeRateMetersPerSecond;
mPseudorangeRateUncertaintyMetersPerSecond =
measurement.mPseudorangeRateUncertaintyMetersPerSecond;
@@ -788,6 +796,49 @@
}
/**
+ * Returns {@code true} if {@link #getBasebandCn0DbHz()} is available, {@code false} otherwise.
+ */
+ public boolean hasBasebandCn0DbHz() {
+ return isFlagSet(HAS_BASEBAND_CN0);
+ }
+
+ /**
+ * Gets the baseband carrier-to-noise density in dB-Hz.
+ *
+ * <p>Typical range: 0-50 dB-Hz.
+ *
+ * <p>The value contains the measured C/N0 for the signal at the baseband. This is typically
+ * a few dB weaker than the value estimated for C/N0 at the antenna port, which is reported
+ * in {@link #getCn0DbHz()}.
+ */
+ @FloatRange(from = 0, to = 50)
+ public double getBasebandCn0DbHz() {
+ return mBasebandCn0DbHz;
+ }
+
+ /**
+ * Sets the baseband carrier-to-noise density in dB-Hz.
+ *
+ * @hide
+ */
+ @TestApi
+ public void setBasebandCn0DbHz(double value) {
+ setFlag(HAS_BASEBAND_CN0);
+ mBasebandCn0DbHz = value;
+ }
+
+ /**
+ * Resets the baseband carrier-to-noise density in dB-Hz.
+ *
+ * @hide
+ */
+ @TestApi
+ public void resetBasebandCn0DbHz() {
+ resetFlag(HAS_BASEBAND_CN0);
+ mBasebandCn0DbHz = Double.NaN;
+ }
+
+ /**
* Gets the Pseudorange rate at the timestamp in m/s.
*
* <p>The error estimate for this value is
@@ -1400,6 +1451,7 @@
gnssMeasurement.mSnrInDb = parcel.readDouble();
gnssMeasurement.mAutomaticGainControlLevelInDb = parcel.readDouble();
gnssMeasurement.mCodeType = parcel.readString();
+ gnssMeasurement.mBasebandCn0DbHz = parcel.readDouble();
return gnssMeasurement;
}
@@ -1433,6 +1485,7 @@
parcel.writeDouble(mSnrInDb);
parcel.writeDouble(mAutomaticGainControlLevelInDb);
parcel.writeString(mCodeType);
+ parcel.writeDouble(mBasebandCn0DbHz);
}
@Override
@@ -1461,6 +1514,9 @@
builder.append(String.format(format, "Cn0DbHz", mCn0DbHz));
+ builder.append(String.format(format, "BasebandCn0DbHz",
+ hasBasebandCn0DbHz() ? mBasebandCn0DbHz : null));
+
builder.append(String.format(
formatWithUncertainty,
"PseudorangeRateMetersPerSecond",
@@ -1536,6 +1592,7 @@
resetSnrInDb();
resetAutomaticGainControlLevel();
resetCodeType();
+ resetBasebandCn0DbHz();
}
private void setFlag(int flag) {
diff --git a/location/java/android/location/GnssStatus.java b/location/java/android/location/GnssStatus.java
index 2f1eeda..89a3bc0 100644
--- a/location/java/android/location/GnssStatus.java
+++ b/location/java/android/location/GnssStatus.java
@@ -34,7 +34,7 @@
*/
public final class GnssStatus {
- // these must match the definitions in gps.h
+ // These must match the definitions in GNSS HAL.
//
// Note: these constants are also duplicated in GnssStatusCompat.java in the androidx support
// library. if adding a constellation, please update that file as well.
@@ -63,9 +63,10 @@
private static final int SVID_FLAGS_HAS_ALMANAC_DATA = (1 << 1);
private static final int SVID_FLAGS_USED_IN_FIX = (1 << 2);
private static final int SVID_FLAGS_HAS_CARRIER_FREQUENCY = (1 << 3);
+ private static final int SVID_FLAGS_HAS_BASEBAND_CN0 = (1 << 4);
- private static final int SVID_SHIFT_WIDTH = 8;
- private static final int CONSTELLATION_TYPE_SHIFT_WIDTH = 4;
+ private static final int SVID_SHIFT_WIDTH = 12;
+ private static final int CONSTELLATION_TYPE_SHIFT_WIDTH = 8;
private static final int CONSTELLATION_TYPE_MASK = 0xf;
/**
@@ -123,9 +124,10 @@
*/
@NonNull
public static GnssStatus wrap(int svCount, int[] svidWithFlags, float[] cn0DbHzs,
- float[] elevations, float[] azimuths, float[] carrierFrequencies) {
+ float[] elevations, float[] azimuths, float[] carrierFrequencies,
+ float[] basebandCn0DbHzs) {
return new GnssStatus(svCount, svidWithFlags, cn0DbHzs, elevations, azimuths,
- carrierFrequencies);
+ carrierFrequencies, basebandCn0DbHzs);
}
private final int mSvCount;
@@ -134,15 +136,17 @@
private final float[] mElevations;
private final float[] mAzimuths;
private final float[] mCarrierFrequencies;
+ private final float[] mBasebandCn0DbHzs;
private GnssStatus(int svCount, int[] svidWithFlags, float[] cn0DbHzs, float[] elevations,
- float[] azimuths, float[] carrierFrequencies) {
+ float[] azimuths, float[] carrierFrequencies, float[] basebandCn0DbHzs) {
mSvCount = svCount;
mSvidWithFlags = svidWithFlags;
mCn0DbHzs = cn0DbHzs;
mElevations = elevations;
mAzimuths = azimuths;
mCarrierFrequencies = carrierFrequencies;
+ mBasebandCn0DbHzs = basebandCn0DbHzs;
}
/**
@@ -284,6 +288,26 @@
}
/**
+ * Reports whether a valid {@link #getBasebandCn0DbHz(int satelliteIndex)} is available.
+ *
+ * @param satelliteIndex An index from zero to {@link #getSatelliteCount()} - 1
+ */
+ public boolean hasBasebandCn0DbHz(@IntRange(from = 0) int satelliteIndex) {
+ return (mSvidWithFlags[satelliteIndex] & SVID_FLAGS_HAS_BASEBAND_CN0) != 0;
+ }
+
+ /**
+ * Retrieves the baseband carrier-to-noise density of the satellite at the specified index in
+ * dB-Hz.
+ *
+ * @param satelliteIndex An index from zero to {@link #getSatelliteCount()} - 1
+ */
+ @FloatRange(from = 0, to = 63)
+ public float getBasebandCn0DbHz(@IntRange(from = 0) int satelliteIndex) {
+ return mBasebandCn0DbHzs[satelliteIndex];
+ }
+
+ /**
* Returns the string representation of a constellation type.
*
* @param constellationType the constellation type.
@@ -334,6 +358,8 @@
* @param usedInFix whether the satellite was used in the most recent location fix
* @param hasCarrierFrequency whether carrier frequency data is available
* @param carrierFrequency satellite carrier frequency in Hz
+ * @param hasBasebandCn0DbHz whether baseband carrier-to-noise density is available
+ * @param basebandCn0DbHz baseband carrier-to-noise density in dB-Hz
*/
@NonNull
public Builder addSatellite(@ConstellationType int constellationType,
@@ -345,9 +371,12 @@
boolean hasAlmanac,
boolean usedInFix,
boolean hasCarrierFrequency,
- @FloatRange(from = 0) float carrierFrequency) {
+ @FloatRange(from = 0) float carrierFrequency,
+ boolean hasBasebandCn0DbHz,
+ @FloatRange(from = 0, to = 63) float basebandCn0DbHz) {
mSatellites.add(new GnssSvInfo(constellationType, svid, cn0DbHz, elevation, azimuth,
- hasEphemeris, hasAlmanac, usedInFix, hasCarrierFrequency, carrierFrequency));
+ hasEphemeris, hasAlmanac, usedInFix, hasCarrierFrequency, carrierFrequency,
+ hasBasebandCn0DbHz, basebandCn0DbHz));
return this;
}
@@ -371,6 +400,7 @@
float[] elevations = new float[svCount];
float[] azimuths = new float[svCount];
float[] carrierFrequencies = new float[svCount];
+ float[] basebandCn0DbHzs = new float[svCount];
for (int i = 0; i < svidWithFlags.length; i++) {
svidWithFlags[i] = mSatellites.get(i).mSvidWithFlags;
@@ -387,9 +417,12 @@
for (int i = 0; i < carrierFrequencies.length; i++) {
carrierFrequencies[i] = mSatellites.get(i).mCarrierFrequency;
}
+ for (int i = 0; i < basebandCn0DbHzs.length; i++) {
+ basebandCn0DbHzs[i] = mSatellites.get(i).mBasebandCn0DbHz;
+ }
return wrap(svCount, svidWithFlags, cn0DbHzs, elevations, azimuths,
- carrierFrequencies);
+ carrierFrequencies, basebandCn0DbHzs);
}
}
@@ -400,21 +433,25 @@
private final float mElevation;
private final float mAzimuth;
private final float mCarrierFrequency;
+ private final float mBasebandCn0DbHz;
private GnssSvInfo(int constellationType, int svid, float cn0DbHz,
float elevation, float azimuth, boolean hasEphemeris, boolean hasAlmanac,
- boolean usedInFix, boolean hasCarrierFrequency, float carrierFrequency) {
+ boolean usedInFix, boolean hasCarrierFrequency, float carrierFrequency,
+ boolean hasBasebandCn0DbHz, float basebandCn0DbHz) {
mSvidWithFlags = (svid << SVID_SHIFT_WIDTH)
| ((constellationType & CONSTELLATION_TYPE_MASK)
<< CONSTELLATION_TYPE_SHIFT_WIDTH)
| (hasEphemeris ? SVID_FLAGS_HAS_EPHEMERIS_DATA : SVID_FLAGS_NONE)
| (hasAlmanac ? SVID_FLAGS_HAS_ALMANAC_DATA : SVID_FLAGS_NONE)
| (usedInFix ? SVID_FLAGS_USED_IN_FIX : SVID_FLAGS_NONE)
- | (hasCarrierFrequency ? SVID_FLAGS_HAS_CARRIER_FREQUENCY : SVID_FLAGS_NONE);
+ | (hasCarrierFrequency ? SVID_FLAGS_HAS_CARRIER_FREQUENCY : SVID_FLAGS_NONE)
+ | (hasBasebandCn0DbHz ? SVID_FLAGS_HAS_BASEBAND_CN0 : SVID_FLAGS_NONE);
mCn0DbHz = cn0DbHz;
mElevation = elevation;
mAzimuth = azimuth;
mCarrierFrequency = carrierFrequency;
+ mBasebandCn0DbHz = basebandCn0DbHz;
}
}
}
diff --git a/location/java/android/location/IGnssStatusListener.aidl b/location/java/android/location/IGnssStatusListener.aidl
index d824cb1..1931a00 100644
--- a/location/java/android/location/IGnssStatusListener.aidl
+++ b/location/java/android/location/IGnssStatusListener.aidl
@@ -28,6 +28,6 @@
void onFirstFix(int ttff);
void onSvStatusChanged(int svCount, in int[] svidWithFlags, in float[] cn0s,
in float[] elevations, in float[] azimuths,
- in float[] carrierFreqs);
+ in float[] carrierFreqs, in float[] basebandCn0s);
void onNmeaReceived(long timestamp, String nmea);
}
diff --git a/location/java/android/location/Location.java b/location/java/android/location/Location.java
index 27274d1..db48ee7 100644
--- a/location/java/android/location/Location.java
+++ b/location/java/android/location/Location.java
@@ -161,7 +161,10 @@
* <p>By default time, latitude and longitude are 0, and the location
* has no bearing, altitude, speed, accuracy or extras.
*
- * @param provider the name of the provider that generated this location
+ * @param provider the source that provides the location. It can be of type
+ * {@link LocationManager#GPS_PROVIDER}, {@link LocationManager#NETWORK_PROVIDER},
+ * or {@link LocationManager#PASSIVE_PROVIDER}. You can also define your own
+ * provider string, in which case an empty string is a valid provider.
*/
public Location(String provider) {
mProvider = provider;
diff --git a/location/java/android/location/LocationManager.java b/location/java/android/location/LocationManager.java
index 75e1cd4..c004172 100644
--- a/location/java/android/location/LocationManager.java
+++ b/location/java/android/location/LocationManager.java
@@ -2818,9 +2818,10 @@
@Override
public void onSvStatusChanged(int svCount, int[] svidWithFlags, float[] cn0s,
- float[] elevations, float[] azimuths, float[] carrierFreqs) {
+ float[] elevations, float[] azimuths, float[] carrierFreqs,
+ float[] basebandCn0s) {
GnssStatus localStatus = GnssStatus.wrap(svCount, svidWithFlags, cn0s,
- elevations, azimuths, carrierFreqs);
+ elevations, azimuths, carrierFreqs, basebandCn0s);
mGnssStatus = localStatus;
execute((callback) -> callback.onSatelliteStatusChanged(localStatus));
}
diff --git a/location/java/android/location/OnNmeaMessageListener.java b/location/java/android/location/OnNmeaMessageListener.java
index ccf6ce8..05647bc 100644
--- a/location/java/android/location/OnNmeaMessageListener.java
+++ b/location/java/android/location/OnNmeaMessageListener.java
@@ -28,7 +28,9 @@
/**
* Called when an NMEA message is received.
* @param message NMEA message
- * @param timestamp milliseconds since January 1, 1970.
+ * @param timestamp Date and time of the location fix, as reported by the GNSS
+ * chipset. The value is specified in milliseconds since 0:00
+ * UTC 1 January 1970.
*/
void onNmeaMessage(String message, long timestamp);
}
diff --git a/location/tests/locationtests/src/android/location/GnssStatusTest.java b/location/tests/locationtests/src/android/location/GnssStatusTest.java
deleted file mode 100644
index 79ea0d6..0000000
--- a/location/tests/locationtests/src/android/location/GnssStatusTest.java
+++ /dev/null
@@ -1,130 +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
- */
-
-package android.location;
-
-import android.test.suitebuilder.annotation.SmallTest;
-import android.util.Log;
-import java.lang.reflect.Constructor;
-import java.util.ArrayList;
-import java.util.List;
-import junit.framework.TestCase;
-
-/**
- * Unit tests for {@link GnssStatus}.
- */
-@SmallTest
-public class GnssStatusTest extends TestCase {
-
- private static final String TAG = GnssStatusTest.class.getSimpleName();
- public void setUp() throws Exception {
- super.setUp();
- }
-
- /*
- * Create {@link GnssStatus} with default value, verify whether its fields are set correctly.
- *
- */
- public void testEmptyGnssStatus() throws Exception {
- Log.i(TAG, "testEmptyGnssStatus");
- List<SatelliteInfo> svInfos = new ArrayList<>();
- GnssStatus gnssStatus = createGnssStatus(svInfos);
- verifyGnssStatus(svInfos, gnssStatus);
- }
-
- /*
- * Create {@link GnssStatus} with only one satellite info, verify whether its fields are set
- * correctly.
- */
- public void testOneSatelliteGnssStatus() throws Exception {
- Log.i(TAG, "testOneSatelliteGnssStatus");
- List<SatelliteInfo> svInfos = new ArrayList<>();
- SatelliteInfo svInfo =
- new SatelliteInfo(100,1, true, true, true, true, 100f, 20.3f, 45.5f, 100.23f);
- svInfos.add(svInfo);
- GnssStatus gnssStatus = createGnssStatus(svInfos);
- verifyGnssStatus(svInfos, gnssStatus);
- }
-
- /*
- * Create {@link GnssStatus} with multiple satellite info, verify whether its fields are set
- * correctly.
- */
- public void testMultipleSatellitesGnssStatus() throws Exception {
- Log.i(TAG, "testMultipleSatellitesGnssStatus");
- List<SatelliteInfo> svInfos = new ArrayList<>();
- SatelliteInfo svInfo1 =
- new SatelliteInfo(20, 1,true, true, true, true, 10.1f, 20.3f, 45.5f, 111.23f);
- SatelliteInfo svInfo2 =
- new SatelliteInfo(50, 2, true, false, true, false, 20.2f, 21.3f, 46.5f, 222.23f);
- SatelliteInfo svInfo3 =
- new SatelliteInfo(192, 3, false, true, false, true, 30.3f, 22.3f, 47.5f, 333.23f);
- SatelliteInfo svInfo4 =
- new SatelliteInfo(250, 4, false, false, false, false, 40.4f, 23.3f, 48.5f, 444.23f);
- svInfos.add(svInfo1);
- svInfos.add(svInfo2);
- svInfos.add(svInfo3);
- svInfos.add(svInfo4);
- GnssStatus gnssStatus = createGnssStatus(svInfos);
- verifyGnssStatus(svInfos, gnssStatus);
- }
-
- private void verifyGnssStatus(List<SatelliteInfo> svInfos, GnssStatus gnssStatus) {
- Log.i(TAG, String.format("Verifing {0} satellites info.",svInfos.size()));
- assertEquals(TAG + "::SatelliteCount", svInfos.size(),
- gnssStatus.getSatelliteCount());
- for (int i = 0; i< svInfos.size(); i++) {
- SatelliteInfo svInfo = svInfos.get(i);
- assertEquals(TAG + "::Svid", svInfo.mSvid, gnssStatus.getSvid(i));
- assertEquals(TAG + "::ConstellationType", svInfo.mConstellationType,
- gnssStatus.getConstellationType(i));
- assertEquals(TAG + "::Cn0DbHz", svInfo.mCn0DbHz, gnssStatus.getCn0DbHz(i));
- assertEquals(TAG + "::Elevation", svInfo.mElevation,
- gnssStatus.getElevationDegrees(i));
- assertEquals(TAG + "::Azimuth", svInfo.mAzimuth, gnssStatus.getAzimuthDegrees(i));
- assertEquals(TAG + "::CarrierFrequencyHz", svInfo.mCarrierFrequency,
- gnssStatus.getCarrierFrequencyHz(i));
- assertEquals(TAG + "::hasEphemerisData", svInfo.mHasEphemris,
- gnssStatus.hasEphemerisData(i));
- assertEquals(TAG + "::HasAlmanacData", svInfo.mHasAlmanac,
- gnssStatus.hasAlmanacData(i));
- assertEquals(TAG + "::UsedInFix", svInfo.mUsedInFix, gnssStatus.usedInFix(i));
- assertEquals(TAG + "::HasCarrierFrequencyHz", svInfo.mHasCarriesFrequency,
- gnssStatus.hasCarrierFrequencyHz(i));
- }
- }
-
- private static GnssStatus createGnssStatus(List<SatelliteInfo> svInfos) throws Exception {
- Class<?> intClass = Integer.TYPE;
- Class<?> floatArrayClass = Class.forName("[F");
- Class<?> intArrayClass = Class.forName("[I");
- Class[] cArg = new Class[6];
- cArg[0] = intClass;
- cArg[1] = intArrayClass;
- cArg[2] = floatArrayClass;
- cArg[3] = floatArrayClass;
- cArg[4] = floatArrayClass;
- cArg[5] = floatArrayClass;
- Constructor<GnssStatus> ctor = GnssStatus.class.getDeclaredConstructor(cArg);
- ctor.setAccessible(true);
- return ctor.newInstance(svInfos.size(),
- SatelliteInfo.getSvidWithFlagsArray(svInfos),
- SatelliteInfo.getCn0sArray(svInfos),
- SatelliteInfo.getElevationsArray(svInfos),
- SatelliteInfo.getAzimuthsArray(svInfos),
- SatelliteInfo.getCarrierFrequencyArray(svInfos));
- }
-}
diff --git a/location/tests/locationtests/src/android/location/SatelliteInfo.java b/location/tests/locationtests/src/android/location/SatelliteInfo.java
deleted file mode 100644
index b6453ef..0000000
--- a/location/tests/locationtests/src/android/location/SatelliteInfo.java
+++ /dev/null
@@ -1,155 +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
- */
-
-package android.location;
-
-import java.util.List;
-
-/*
- * Helper class to store single Satellite info, only used it in the unit test.
- */
-public class SatelliteInfo {
- private static final int SVID_MAX_BIT_INDEX = 32;
- private static final int SVID_SHIFT_WIDTH = 8;
- private static final int CONSTELLATION_TYPE_SHIFT_WIDTH = 4;
-
- // Index for the bits in mSvidWithFlag
- private static final int GNSS_SV_FLAGS_HAS_EPHEMERIS_DATA_BIT_INDEX = 0;
- private static final int GNSS_SV_FLAGS_HAS_ALMANAC_DATA_BIT_INDEX = 1;
- private static final int GNSS_SV_FLAGS_USED_IN_FIX_BIT_INDEX = 2;
- private static final int GNSS_SV_FLAGS_HAS_CARRIER_FREQUENCY_BIT_INDEX = 3;
- public int mSvid;
- public int mSvidWithFlag;
- public float mCn0DbHz;
- public float mElevation;
- public float mAzimuth;
- public float mCarrierFrequency;
-
- /*
- * Flag fields, it stores the same information as svidWithFlag, but in different format, easy for
- * the unit test.
- */
- public int mConstellationType;
- public boolean mHasEphemris;
- public boolean mHasAlmanac;
- public boolean mUsedInFix;
- public boolean mHasCarriesFrequency;
-
- public SatelliteInfo(int svid, int constellationType, boolean hasEphemris, boolean hasAlmanac,
- boolean usedInFix, boolean hasCarriesFrequency, float cn0, float elevation, float azimuth,
- float carrierFrequency) {
- mSvidWithFlag =
- setRange(mSvidWithFlag, constellationType, CONSTELLATION_TYPE_SHIFT_WIDTH, SVID_SHIFT_WIDTH);
- mSvidWithFlag = setRange(mSvidWithFlag, svid, SVID_SHIFT_WIDTH, SVID_MAX_BIT_INDEX);
- mSvidWithFlag = setBit(mSvidWithFlag, hasEphemris, GNSS_SV_FLAGS_HAS_EPHEMERIS_DATA_BIT_INDEX);
- mSvidWithFlag = setBit(mSvidWithFlag, hasAlmanac, GNSS_SV_FLAGS_HAS_ALMANAC_DATA_BIT_INDEX);
- mSvidWithFlag = setBit(mSvidWithFlag, usedInFix, GNSS_SV_FLAGS_USED_IN_FIX_BIT_INDEX);
- mSvidWithFlag =
- setBit(mSvidWithFlag, hasCarriesFrequency, GNSS_SV_FLAGS_HAS_CARRIER_FREQUENCY_BIT_INDEX);
- this.mSvid = svid;
- this.mConstellationType = constellationType;
- this.mCn0DbHz = cn0;
- this.mElevation = elevation;
- this.mAzimuth = azimuth;
- this.mCarrierFrequency = carrierFrequency;
- this.mHasEphemris = hasEphemris;
- this.mHasAlmanac = hasAlmanac;
- this.mUsedInFix = usedInFix;
- this.mHasCarriesFrequency = hasCarriesFrequency;
- }
-
- /*
- * Gernerate svidWithFlags array from svInfos
- */
- public static int[] getSvidWithFlagsArray(List<SatelliteInfo> svInfos) {
- int[] svidWithFlags = new int[svInfos.size()];
- for (int i = 0; i< svInfos.size(); i++) {
- svidWithFlags[i] = svInfos.get(i).mSvidWithFlag;
- }
- return svidWithFlags;
- }
-
- /*
- * Gernerate cn0s array from svInfos
- */
- public static float[] getCn0sArray(List<SatelliteInfo> svInfos) {
- float[] cn0s = new float[svInfos.size()];
- for (int i = 0; i< svInfos.size(); i++) {
- cn0s[i] = svInfos.get(i).mCn0DbHz;
- }
- return cn0s;
- }
-
- /*
- * Gernerate elevations array from svInfos
- */
- public static float[] getElevationsArray(List<SatelliteInfo> svInfos) {
- float[] elevations = new float[svInfos.size()];
- for (int i = 0; i< svInfos.size(); i++) {
- elevations[i] = svInfos.get(i).mElevation;
- }
- return elevations;
- }
-
- /*
- * Gernerate azimuths array from svInfos
- */
- public static float[] getAzimuthsArray(List<SatelliteInfo> svInfos) {
- float[] azimuths = new float[svInfos.size()];
- for (int i = 0; i< svInfos.size(); i++) {
- azimuths[i] = svInfos.get(i).mAzimuth;
- }
- return azimuths;
- }
-
- /*
- * Gernerate carrierFrequency array from svInfos
- */
- public static float[] getCarrierFrequencyArray(List<SatelliteInfo> svInfos) {
- float[] carrierFrequencies = new float[svInfos.size()];
- for (int i = 0; i< svInfos.size(); i++) {
- carrierFrequencies[i] = svInfos.get(i).mCarrierFrequency;
- }
- return carrierFrequencies;
- }
-
- private int setBit(int targetValue, boolean value, int index) {
- if (value) {
- targetValue = targetValue | (1 << index);
- } else {
- targetValue = targetValue & ~(1 << index);
- }
- return targetValue;
- }
-
- /*
- * Set the bit in the range [fromIndex, toIndex), index start from the lowest bit.
- * value -> 1 1 0 1 1 0 1 0
- * index -> 7 6 5 4 3 2 1 0
- * This function will set the bit in the range to the lowest X bits of the value.
- */
- private int setRange(int targetValue, int value, int fromIndex, int toIndex) {
- int rangeLen = toIndex - fromIndex;
- int valueMask = (1 << rangeLen) -1;
- value &= valueMask;
- value = value << fromIndex;
- valueMask = valueMask << fromIndex;
- targetValue &= (~valueMask);
- targetValue |= value;
- return targetValue;
- }
-
-}
\ No newline at end of file
diff --git a/media/java/android/media/IMediaRoute2ProviderClient.aidl b/media/java/android/media/IMediaRoute2ProviderClient.aidl
index 6f44d45..f4fb7f4 100644
--- a/media/java/android/media/IMediaRoute2ProviderClient.aidl
+++ b/media/java/android/media/IMediaRoute2ProviderClient.aidl
@@ -17,10 +17,13 @@
package android.media;
import android.media.MediaRoute2ProviderInfo;
+import android.media.MediaRoute2Info;
+import android.os.Bundle;
/**
* @hide
*/
oneway interface IMediaRoute2ProviderClient {
void updateProviderInfo(in MediaRoute2ProviderInfo info);
+ void notifyRouteSelected(String packageName, String routeId, in Bundle controlHints, int seq);
}
diff --git a/media/java/android/media/IMediaRouterService.aidl b/media/java/android/media/IMediaRouterService.aidl
index 81a7ee2..d803f04 100644
--- a/media/java/android/media/IMediaRouterService.aidl
+++ b/media/java/android/media/IMediaRouterService.aidl
@@ -40,7 +40,6 @@
void setSelectedRoute(IMediaRouterClient client, String routeId, boolean explicit);
void requestSetVolume(IMediaRouterClient client, String routeId, int volume);
void requestUpdateVolume(IMediaRouterClient client, String routeId, int direction);
- void setControlCategories(IMediaRouterClient client, in List<String> categories);
// Methods for media router 2
List<MediaRoute2Info> getSystemRoutes();
@@ -56,7 +55,7 @@
* @param route the route to be selected
*/
void requestSelectRoute2(IMediaRouter2Client client, in @nullable MediaRoute2Info route);
- void setControlCategories2(IMediaRouter2Client client, in List<String> categories);
+ void setControlCategories(IMediaRouter2Client client, in List<String> categories);
void registerManager(IMediaRouter2Manager manager, String packageName);
void unregisterManager(IMediaRouter2Manager manager);
diff --git a/media/java/android/media/MediaDrm.java b/media/java/android/media/MediaDrm.java
index 63657a6..6523e30 100644
--- a/media/java/android/media/MediaDrm.java
+++ b/media/java/android/media/MediaDrm.java
@@ -36,9 +36,12 @@
import java.lang.annotation.RetentionPolicy;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.HashMap;
+import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.Executor;
@@ -203,6 +206,16 @@
securityLevel);
}
+ /**
+ * @return list of crypto schemes (as {@link UUID}s) for which
+ * {@link #isCryptoSchemeSupported(UUID)} returns true; each {@link UUID}
+ * can be used as input to create {@link MediaDrm} objects via {@link #MediaDrm(UUID)}.
+ */
+ public static final @NonNull List<UUID> getSupportedCryptoSchemes(){
+ byte[] uuidBytes = getSupportedCryptoSchemesNative();
+ return getUUIDsFromByteArray(uuidBytes);
+ }
+
private static final byte[] getByteArrayFromUUID(@NonNull UUID uuid) {
long msb = uuid.getMostSignificantBits();
long lsb = uuid.getLeastSignificantBits();
@@ -216,6 +229,28 @@
return uuidBytes;
}
+ private static final UUID getUUIDFromByteArray(@NonNull byte[] uuidBytes, int off) {
+ long msb = 0;
+ long lsb = 0;
+
+ for (int i = 0; i < 8; ++i) {
+ msb = (msb << 8) | (0xffl & uuidBytes[off + i]);
+ lsb = (lsb << 8) | (0xffl & uuidBytes[off + i + 8]);
+ }
+
+ return new UUID(msb, lsb);
+ }
+
+ private static final List<UUID> getUUIDsFromByteArray(@NonNull byte[] uuidBytes) {
+ Set<UUID> uuids = new LinkedHashSet<>();
+ for (int off = 0; off < uuidBytes.length; off+=16) {
+ uuids.add(getUUIDFromByteArray(uuidBytes, off));
+ }
+ return new ArrayList<>(uuids);
+ }
+
+ private static final native byte[] getSupportedCryptoSchemesNative();
+
private static final native boolean isCryptoSchemeSupportedNative(
@NonNull byte[] uuid, @Nullable String mimeType, @SecurityLevel int securityLevel);
diff --git a/media/java/android/media/MediaRoute2ProviderService.java b/media/java/android/media/MediaRoute2ProviderService.java
index 386d2dc..1b6183e 100644
--- a/media/java/android/media/MediaRoute2ProviderService.java
+++ b/media/java/android/media/MediaRoute2ProviderService.java
@@ -18,14 +18,19 @@
import static com.android.internal.util.function.pooled.PooledLambda.obtainMessage;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
import android.app.Service;
import android.content.Intent;
+import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.os.Looper;
import android.os.RemoteException;
import android.util.Log;
+import java.util.Objects;
+
/**
* @hide
*/
@@ -44,7 +49,7 @@
}
@Override
- public IBinder onBind(Intent intent) {
+ public IBinder onBind(@NonNull Intent intent) {
//TODO: Allow binding from media router service only?
if (SERVICE_INTERFACE.equals(intent.getAction())) {
if (mStub == null) {
@@ -57,11 +62,17 @@
/**
* Called when selectRoute is called on a route of the provider.
+ * Once the route is ready to be used , call {@link #notifyRouteSelected(SelectToken, Bundle)}
+ * to notify that.
*
* @param packageName the package name of the application that selected the route
* @param routeId the id of the route being selected
+ * @param token token that contains select info
+ *
+ * @see #notifyRouteSelected
*/
- public abstract void onSelectRoute(String packageName, String routeId);
+ public abstract void onSelectRoute(@NonNull String packageName, @NonNull String routeId,
+ @NonNull SelectToken token);
/**
* Called when unselectRoute is called on a route of the provider.
@@ -69,7 +80,7 @@
* @param packageName the package name of the application that has selected the route.
* @param routeId the id of the route being unselected
*/
- public abstract void onUnselectRoute(String packageName, String routeId);
+ public abstract void onUnselectRoute(@NonNull String packageName, @NonNull String routeId);
/**
* Called when sendControlRequest is called on a route of the provider
@@ -78,21 +89,21 @@
* @param request the media control request intent
*/
//TODO: Discuss what to use for request (e.g., Intent? Request class?)
- public abstract void onControlRequest(String routeId, Intent request);
+ public abstract void onControlRequest(@NonNull String routeId, @NonNull Intent request);
/**
* Called when requestSetVolume is called on a route of the provider
* @param routeId the id of the route
* @param volume the target volume
*/
- public abstract void onSetVolume(String routeId, int volume);
+ public abstract void onSetVolume(@NonNull String routeId, int volume);
/**
* Called when requestUpdateVolume is called on a route of the provider
* @param routeId id of the route
* @param delta the delta to add to the current volume
*/
- public abstract void onUpdateVolume(String routeId, int delta);
+ public abstract void onUpdateVolume(@NonNull String routeId, int delta);
/**
* Updates provider info and publishes routes
@@ -102,6 +113,29 @@
publishState();
}
+ /**
+ * Notifies the client of that the selected route is ready for use. If the selected route can be
+ * controlled, pass a {@link Bundle} that contains how to control it.
+ *
+ * @param token token passed in {@link #onSelectRoute}
+ * @param controlHints a {@link Bundle} that contains how to control the given route.
+ * Pass {@code null} if the route is not available.
+ */
+ public final void notifyRouteSelected(@NonNull SelectToken token,
+ @Nullable Bundle controlHints) {
+ Objects.requireNonNull(token, "token must not be null");
+
+ if (mClient == null) {
+ return;
+ }
+ try {
+ mClient.notifyRouteSelected(token.mPackageName, token.mRouteId,
+ controlHints, token.mSeq);
+ } catch (RemoteException ex) {
+ Log.w(TAG, "Failed to notify route selected");
+ }
+ }
+
void setClient(IMediaRoute2ProviderClient client) {
mClient = client;
publishState();
@@ -118,6 +152,23 @@
}
}
+ /**
+ * Route selection information.
+ *
+ * @see #notifyRouteSelected
+ */
+ public final class SelectToken {
+ final String mPackageName;
+ final String mRouteId;
+ final int mSeq;
+
+ SelectToken(String packageName, String routeId, int seq) {
+ mPackageName = packageName;
+ mRouteId = routeId;
+ mSeq = seq;
+ }
+ }
+
final class ProviderStub extends IMediaRoute2Provider.Stub {
ProviderStub() { }
@@ -129,10 +180,10 @@
@Override
public void requestSelectRoute(String packageName, String id, int seq) {
- // TODO: When introducing MediaRoute2ProviderService#sendConnectionHints(),
- // use the sequence number here properly.
mHandler.sendMessage(obtainMessage(MediaRoute2ProviderService::onSelectRoute,
- MediaRoute2ProviderService.this, packageName, id));
+ MediaRoute2ProviderService.this, packageName, id,
+ new SelectToken(packageName, id, seq)));
+
}
@Override
diff --git a/media/java/android/media/MediaRouter.java b/media/java/android/media/MediaRouter.java
index 9cb7869..d72231f 100644
--- a/media/java/android/media/MediaRouter.java
+++ b/media/java/android/media/MediaRouter.java
@@ -49,8 +49,6 @@
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Objects;
@@ -84,7 +82,6 @@
final ArrayList<RouteInfo> mRoutes = new ArrayList<RouteInfo>();
final ArrayList<RouteCategory> mCategories = new ArrayList<RouteCategory>();
- List<String> mControlCategories = Collections.emptyList();
final RouteCategory mSystemCategory;
@@ -361,18 +358,6 @@
return mDisplayService.getDisplays(DisplayManager.DISPLAY_CATEGORY_PRESENTATION);
}
- public void setControlCategories(Collection<String> controlCategories) {
- List<String> newControlCategories = new ArrayList<>(controlCategories);
- mControlCategories = newControlCategories;
- if (mClient != null) {
- try {
- mMediaRouterService.setControlCategories(mClient, newControlCategories);
- } catch (RemoteException ex) {
- Log.e(TAG, "Unable to set control categories.", ex);
- }
- }
- }
-
private void updatePresentationDisplays(int changedDisplayId) {
final int count = mRoutes.size();
for (int i = 0; i < count; i++) {
@@ -421,7 +406,6 @@
try {
Client client = new Client();
mMediaRouterService.registerClientAsUser(client, mPackageName, userId);
- mMediaRouterService.setControlCategories(client, mControlCategories);
mClient = client;
} catch (RemoteException ex) {
Log.e(TAG, "Unable to register media router client.", ex);
@@ -1318,19 +1302,6 @@
sStatic.rebindAsUser(userId);
}
- /**
- * Sets the control categories of the application.
- * Routes that support at least one of the given control categories only exists and are handled
- * by the media router.
- *
- * @hide
- */
- public void setControlCategories(@NonNull Collection<String> controlCategories) {
- Objects.requireNonNull(controlCategories, "control categories must not be null");
-
- sStatic.setControlCategories(controlCategories);
- }
-
static void updateRoute(final RouteInfo info) {
dispatchRouteChanged(info);
}
diff --git a/media/java/android/media/MediaRouter2.java b/media/java/android/media/MediaRouter2.java
index 94ac77a..3e6f4c0 100644
--- a/media/java/android/media/MediaRouter2.java
+++ b/media/java/android/media/MediaRouter2.java
@@ -57,7 +57,8 @@
@IntDef(value = {
SELECT_REASON_UNKNOWN,
SELECT_REASON_USER_SELECTED,
- SELECT_REASON_FALLBACK})
+ SELECT_REASON_FALLBACK,
+ SELECT_REASON_SYSTEM_SELECTED})
public @interface SelectReason {}
/**
@@ -80,6 +81,13 @@
*/
public static final int SELECT_REASON_FALLBACK = 2;
+ /**
+ * This is passed from {@link com.android.server.media.MediaRouterService} when the route
+ * is selected in response to a request from other apps (e.g. System UI).
+ * @hide
+ */
+ public static final int SELECT_REASON_SYSTEM_SELECTED = 3;
+
private static final String TAG = "MR2";
private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
private static final Object sLock = new Object();
@@ -106,7 +114,7 @@
@GuardedBy("sLock")
private MediaRoute2Info mSelectingRoute;
@GuardedBy("sLock")
- private Client mClient;
+ private Client2 mClient;
final Handler mHandler;
volatile List<MediaRoute2Info> mFilteredRoutes = Collections.emptyList();
@@ -188,10 +196,10 @@
synchronized (sLock) {
if (mClient == null) {
- Client client = new Client();
+ Client2 client = new Client2();
try {
mMediaRouterService.registerClient2(client, mPackageName);
- mMediaRouterService.setControlCategories2(client, mControlCategories);
+ mMediaRouterService.setControlCategories(client, mControlCategories);
mClient = client;
} catch (RemoteException ex) {
Log.e(TAG, "Unable to register media router.", ex);
@@ -280,7 +288,7 @@
public void requestSelectRoute(@NonNull MediaRoute2Info route) {
Objects.requireNonNull(route, "route must not be null");
- Client client;
+ Client2 client;
synchronized (sLock) {
if (mSelectingRoute == route) {
Log.w(TAG, "The route selection request is already sent.");
@@ -310,7 +318,7 @@
Objects.requireNonNull(route, "route must not be null");
Objects.requireNonNull(request, "request must not be null");
- Client client;
+ Client2 client;
synchronized (sLock) {
client = mClient;
}
@@ -334,7 +342,7 @@
public void requestSetVolume(@NonNull MediaRoute2Info route, int volume) {
Objects.requireNonNull(route, "route must not be null");
- Client client;
+ Client2 client;
synchronized (sLock) {
client = mClient;
}
@@ -358,7 +366,7 @@
public void requestUpdateVolume(@NonNull MediaRoute2Info route, int delta) {
Objects.requireNonNull(route, "route must not be null");
- Client client;
+ Client2 client;
synchronized (sLock) {
client = mClient;
}
@@ -390,13 +398,13 @@
List<MediaRoute2Info> filteredRoutes = new ArrayList<>();
mControlCategories = newControlCategories;
- Client client;
+ Client2 client;
synchronized (sLock) {
client = mClient;
}
if (client != null) {
try {
- mMediaRouterService.setControlCategories2(client, mControlCategories);
+ mMediaRouterService.setControlCategories(client, mControlCategories);
} catch (RemoteException ex) {
Log.e(TAG, "Unable to set control categories.", ex);
}
@@ -485,6 +493,9 @@
}
mSelectingRoute = null;
}
+ if (reason == SELECT_REASON_SYSTEM_SELECTED) {
+ reason = SELECT_REASON_USER_SELECTED;
+ }
mSelectedRoute = route;
notifyRouteSelected(route, reason, controlHints);
}
@@ -589,7 +600,7 @@
}
}
- class Client extends IMediaRouter2Client.Stub {
+ class Client2 extends IMediaRouter2Client.Stub {
@Override
public void notifyRestoreRoute() throws RemoteException {}
diff --git a/media/jni/Android.bp b/media/jni/Android.bp
index 2f53cbb..12b3e67 100644
--- a/media/jni/Android.bp
+++ b/media/jni/Android.bp
@@ -41,6 +41,7 @@
"libmedia_omx",
"libmediametrics",
"libmediadrm",
+ "libmediadrmmetrics_consumer",
"libhwui",
"libui",
"liblog",
@@ -58,6 +59,7 @@
"libsonivox",
"android.hardware.cas@1.0",
"android.hardware.cas.native@1.0",
+ "android.hardware.drm@1.3",
"android.hidl.memory@1.0",
"android.hidl.token@1.0-utils",
],
diff --git a/media/jni/android_media_MediaDataSource.h b/media/jni/android_media_MediaDataSource.h
index 378baf4..b65039d3 100644
--- a/media/jni/android_media_MediaDataSource.h
+++ b/media/jni/android_media_MediaDataSource.h
@@ -19,7 +19,7 @@
#include "jni.h"
-#include <media/IDataSource.h>
+#include <android/IDataSource.h>
#include <media/stagefright/foundation/ABase.h>
#include <utils/Errors.h>
#include <utils/Mutex.h>
diff --git a/media/jni/android_media_MediaDrm.cpp b/media/jni/android_media_MediaDrm.cpp
index 3833c6b..f38a29c 100644
--- a/media/jni/android_media_MediaDrm.cpp
+++ b/media/jni/android_media_MediaDrm.cpp
@@ -27,16 +27,19 @@
#include "jni.h"
#include <nativehelper/JNIHelp.h>
+#include <android/hardware/drm/1.3/IDrmFactory.h>
#include <binder/Parcel.h>
#include <binder/PersistableBundle.h>
#include <cutils/properties.h>
#include <media/stagefright/foundation/ADebug.h>
#include <media/stagefright/MediaErrors.h>
+#include <mediadrm/DrmMetricsConsumer.h>
#include <mediadrm/DrmUtils.h>
+#include <mediadrm/IDrmMetricsConsumer.h>
#include <mediadrm/IDrm.h>
using ::android::os::PersistableBundle;
-
+namespace drm = ::android::hardware::drm;
namespace android {
@@ -969,6 +972,26 @@
return level;
}
+static jbyteArray android_media_MediaDrm_getSupportedCryptoSchemesNative(JNIEnv *env) {
+ std::vector<uint8_t> bv;
+ for (auto &factory : DrmUtils::MakeDrmFactories()) {
+ sp<drm::V1_3::IDrmFactory> factoryV1_3 = drm::V1_3::IDrmFactory::castFrom(factory);
+ if (factoryV1_3 == nullptr) {
+ continue;
+ }
+ factoryV1_3->getSupportedCryptoSchemes(
+ [&](const hardware::hidl_vec<hardware::hidl_array<uint8_t, 16>>& schemes) {
+ for (const auto &scheme : schemes) {
+ bv.insert(bv.end(), scheme.data(), scheme.data() + scheme.size());
+ }
+ });
+ }
+
+ jbyteArray jUuidBytes = env->NewByteArray(bv.size());
+ env->SetByteArrayRegion(jUuidBytes, 0, bv.size(), reinterpret_cast<const jbyte *>(bv.data()));
+ return jUuidBytes;
+}
+
static jboolean android_media_MediaDrm_isCryptoSchemeSupportedNative(
JNIEnv *env, jobject /* thiz */, jbyteArray uuidObj, jstring jmimeType,
jint jSecurityLevel) {
@@ -1889,7 +1912,8 @@
// Retrieve current metrics snapshot from drm.
PersistableBundle metrics;
- status_t err = drm->getMetrics(&metrics);
+ sp<IDrmMetricsConsumer> consumer(new DrmMetricsConsumer(&metrics));
+ status_t err = drm->getMetrics(consumer);
if (err != OK) {
ALOGE("getMetrics failed: %d", (int)err);
return (jobject) NULL;
@@ -1938,6 +1962,9 @@
{ "native_setup", "(Ljava/lang/Object;[BLjava/lang/String;)V",
(void *)android_media_MediaDrm_native_setup },
+ { "getSupportedCryptoSchemesNative", "()[B",
+ (void *)android_media_MediaDrm_getSupportedCryptoSchemesNative },
+
{ "isCryptoSchemeSupportedNative", "([BLjava/lang/String;I)Z",
(void *)android_media_MediaDrm_isCryptoSchemeSupportedNative },
diff --git a/media/jni/android_media_Streams.cpp b/media/jni/android_media_Streams.cpp
index b7cbd97..4fd5153 100644
--- a/media/jni/android_media_Streams.cpp
+++ b/media/jni/android_media_Streams.cpp
@@ -28,67 +28,6 @@
namespace android {
-AssetStream::AssetStream(SkStream* stream)
- : mStream(stream), mPosition(0) {
-}
-
-AssetStream::~AssetStream() {
-}
-
-piex::Error AssetStream::GetData(
- const size_t offset, const size_t length, std::uint8_t* data) {
- // Seek first.
- if (mPosition != offset) {
- if (!mStream->seek(offset)) {
- return piex::Error::kFail;
- }
- }
-
- // Read bytes.
- size_t size = mStream->read((void*)data, length);
- mPosition = offset + size;
-
- return size == length ? piex::Error::kOk : piex::Error::kFail;
-}
-
-BufferedStream::BufferedStream(SkStream* stream)
- : mStream(stream) {
-}
-
-BufferedStream::~BufferedStream() {
-}
-
-piex::Error BufferedStream::GetData(
- const size_t offset, const size_t length, std::uint8_t* data) {
- // Seek first.
- if (offset + length > mStreamBuffer.bytesWritten()) {
- size_t sizeToRead = offset + length - mStreamBuffer.bytesWritten();
- if (sizeToRead <= kMinSizeToRead) {
- sizeToRead = kMinSizeToRead;
- }
-
- void* tempBuffer = malloc(sizeToRead);
- if (tempBuffer == NULL) {
- return piex::Error::kFail;
- }
-
- size_t bytesRead = mStream->read(tempBuffer, sizeToRead);
- if (bytesRead != sizeToRead) {
- free(tempBuffer);
- return piex::Error::kFail;
- }
- mStreamBuffer.write(tempBuffer, bytesRead);
- free(tempBuffer);
- }
-
- // Read bytes.
- if (mStreamBuffer.read((void*)data, offset, length)) {
- return piex::Error::kOk;
- } else {
- return piex::Error::kFail;
- }
-}
-
FileStream::FileStream(const int fd)
: mPosition(0) {
mFile = fdopen(fd, "r");
diff --git a/media/jni/android_media_Streams.h b/media/jni/android_media_Streams.h
index d174f9a..800591c 100644
--- a/media/jni/android_media_Streams.h
+++ b/media/jni/android_media_Streams.h
@@ -25,53 +25,9 @@
#include <utils/KeyedVector.h>
#include <utils/String8.h>
#include <utils/StrongPointer.h>
-#include <SkStream.h>
-
namespace android {
-class AssetStream : public piex::StreamInterface {
-private:
- SkStream *mStream;
- size_t mPosition;
-
-public:
- explicit AssetStream(SkStream* stream);
- ~AssetStream();
-
- // Reads 'length' amount of bytes from 'offset' to 'data'. The 'data' buffer
- // provided by the caller, guaranteed to be at least "length" bytes long.
- // On 'kOk' the 'data' pointer contains 'length' valid bytes beginning at
- // 'offset' bytes from the start of the stream.
- // Returns 'kFail' if 'offset' + 'length' exceeds the stream and does not
- // change the contents of 'data'.
- piex::Error GetData(
- const size_t offset, const size_t length, std::uint8_t* data) override;
-};
-
-class BufferedStream : public piex::StreamInterface {
-private:
- SkStream *mStream;
- // Growable memory stream
- SkDynamicMemoryWStream mStreamBuffer;
-
- // Minimum size to read on filling the buffer.
- const size_t kMinSizeToRead = 8192;
-
-public:
- explicit BufferedStream(SkStream* stream);
- ~BufferedStream();
-
- // Reads 'length' amount of bytes from 'offset' to 'data'. The 'data' buffer
- // provided by the caller, guaranteed to be at least "length" bytes long.
- // On 'kOk' the 'data' pointer contains 'length' valid bytes beginning at
- // 'offset' bytes from the start of the stream.
- // Returns 'kFail' if 'offset' + 'length' exceeds the stream and does not
- // change the contents of 'data'.
- piex::Error GetData(
- const size_t offset, const size_t length, std::uint8_t* data) override;
-};
-
class FileStream : public piex::StreamInterface {
private:
FILE *mFile;
diff --git a/media/jni/soundpool/Stream.cpp b/media/jni/soundpool/Stream.cpp
index e7d4d90..809e81b 100644
--- a/media/jni/soundpool/Stream.cpp
+++ b/media/jni/soundpool/Stream.cpp
@@ -179,6 +179,7 @@
{
std::lock_guard lock(mLock);
if (streamID == mStreamID) {
+ ALOGV("%s: track streamID: %d", __func__, streamID);
if (mAudioTrack != nullptr) {
if (mState == PLAYING && !mMuted && (mLeftVolume != 0.f || mRightVolume != 0.f)) {
setVolume_l(0.f, 0.f);
@@ -202,6 +203,7 @@
void Stream::stop_l()
{
if (mState != IDLE) {
+ ALOGV("%s: track streamID: %d", __func__, (int)mStreamID);
if (mAudioTrack != nullptr) {
mAudioTrack->stop();
}
@@ -227,6 +229,7 @@
LOG_ALWAYS_FATAL_IF(pairStream == nullptr, "No pair stream!");
sp<AudioTrack> releaseTracks[2];
{
+ ALOGV("%s: track streamID: %d", __func__, (int)mStreamID);
// TODO: Do we really want to force a simultaneous synchronization between
// the stream and its pair?
diff --git a/media/jni/soundpool/StreamManager.cpp b/media/jni/soundpool/StreamManager.cpp
index 64f81d5..79e4d8a 100644
--- a/media/jni/soundpool/StreamManager.cpp
+++ b/media/jni/soundpool/StreamManager.cpp
@@ -148,16 +148,18 @@
sanityCheckQueue_l();
// find an available stream, prefer one that has matching sound id.
if (mAvailableStreams.size() > 0) {
- newStream = *mAvailableStreams.begin();
for (auto stream : mAvailableStreams) {
if (stream->getSoundID() == soundID) {
newStream = stream;
+ ALOGV("%s: found soundID %d in available queue", __func__, soundID);
break;
}
}
- if (newStream != nullptr) {
- newStream->setStopTimeNs(systemTime());
+ if (newStream == nullptr) {
+ ALOGV("%s: found stream in available queue", __func__);
+ newStream = *mAvailableStreams.begin();
}
+ newStream->setStopTimeNs(systemTime());
fromAvailableQueue = true;
}
@@ -166,10 +168,12 @@
for (auto [unused , stream] : mRestartStreams) {
if (!stream->getPairStream()->hasSound()) {
if (stream->getSoundID() == soundID) {
+ ALOGV("%s: found soundID %d in restart queue", __func__, soundID);
newStream = stream;
fromAvailableQueue = false;
break;
} else if (newStream == nullptr) {
+ ALOGV("%s: found stream in restart queue", __func__);
newStream = stream;
}
}
@@ -183,6 +187,7 @@
if (newStream == nullptr
|| newStream->getPriority() > stream->getPriority()) {
newStream = stream;
+ ALOGV("%s: found stream in active queue", __func__);
}
}
}
@@ -195,6 +200,7 @@
if (newStream == nullptr) {
for (auto [unused, stream] : mRestartStreams) {
if (stream->getPairPriority() <= priority) {
+ ALOGV("%s: evict stream from restart queue", __func__);
newStream = stream;
break;
}
@@ -210,6 +216,8 @@
Stream *pairStream = newStream->getPairStream();
streamID = getNextIdForStream(pairStream);
+ ALOGV("%s: newStream:%p pairStream:%p, streamID:%d",
+ __func__, newStream, pairStream, streamID);
pairStream->setPlay(
streamID, sound, soundID, leftVolume, rightVolume, priority, loop, rate);
if (fromAvailableQueue && kPlayOnCallingThread) {
diff --git a/media/jni/soundpool/tests/build_and_run.sh b/media/jni/soundpool/tests/build_and_run.sh
index 741f2ef..72fd528 100755
--- a/media/jni/soundpool/tests/build_and_run.sh
+++ b/media/jni/soundpool/tests/build_and_run.sh
@@ -23,7 +23,10 @@
adb push $OUT/system/bin/soundpool_stress /system/bin
# test SoundPool playback of all the UI sound samples (loaded twice) looping 10s 1 thread.
-#adb shell /system/bin/soundpool_stress -l -1 $uidir/*.ogg $uidir/*.ogg
+adb shell /system/bin/soundpool_stress -l -1 $uidir/*.ogg $uidir/*.ogg
+
+# test SoundPool playback of all the UI sound samples (repeating 3 times) looping 10s 1 thread.
+adb shell /system/bin/soundpool_stress -l 1 -r 3 $uidir/*.ogg
# performance test SoundPool playback of all the UI sound samples (x2)
# 1 iterations, looping, 1 second playback, 4 threads.
diff --git a/media/jni/soundpool/tests/soundpool_stress.cpp b/media/jni/soundpool/tests/soundpool_stress.cpp
index 212662f..7d9b6a2 100644
--- a/media/jni/soundpool/tests/soundpool_stress.cpp
+++ b/media/jni/soundpool/tests/soundpool_stress.cpp
@@ -49,6 +49,7 @@
printf(" -i #iterations, default 1\n");
printf(" -l #loop looping mode, -1 forever\n");
printf(" -p #playback_seconds, default 10\n");
+ printf(" -r #repeat soundIDs (0 or more times), default 0\n");
printf(" -s #streams for concurrent sound playback, default 20\n");
printf(" -t #threads, default 1\n");
printf(" -z #snoozeSec after stopping, -1 forever, default 0\n");
@@ -112,7 +113,7 @@
}
void testStreams(SoundPool *soundPool, const std::vector<const char *> &filenames,
- int loop, int playSec)
+ int loop, int repeat, int playSec)
{
const int64_t startTimeNs = systemTime();
std::vector<int32_t> soundIDs;
@@ -153,23 +154,25 @@
// TODO: Use SoundPool::setCallback() for wait
for (int32_t soundID : soundIDs) {
- while (true) {
- const int32_t streamID =
+ for (int i = 0; i <= repeat; ++i) {
+ while (true) {
+ const int32_t streamID =
soundPool->play(soundID, silentVol, silentVol, priority, 0 /*loop*/, rate);
- if (streamID != 0) {
- const int32_t events = gCallbackManager.getNumberEvents(soundID);
- if (events != 1) {
- printf("WARNING: successful play for streamID:%d soundID:%d"
- " but callback events(%d) != 1\n", streamID, soundID, events);
- ++gWarnings;
+ if (streamID != 0) {
+ const int32_t events = gCallbackManager.getNumberEvents(soundID);
+ if (events != 1) {
+ printf("WARNING: successful play for streamID:%d soundID:%d"
+ " but callback events(%d) != 1\n", streamID, soundID, events);
+ ++gWarnings;
+ }
+ soundPool->stop(streamID);
+ break;
}
- soundPool->stop(streamID);
- break;
+ usleep(1000);
}
- usleep(1000);
+ printf("[%d]", soundID);
+ fflush(stdout);
}
- printf("[%d]", soundID);
- fflush(stdout);
}
const int64_t loadTimeNs = systemTime();
@@ -178,14 +181,17 @@
// check and play (overlap with above).
std::vector<int32_t> streamIDs;
for (int32_t soundID : soundIDs) {
- printf("\nplaying soundID=%d", soundID);
- const int32_t streamID = soundPool->play(soundID, maxVol, maxVol, priority, loop, rate);
- if (streamID == 0) {
- printf(" failed! ERROR");
- ++gErrors;
- } else {
- printf(" streamID=%d", streamID);
- streamIDs.emplace_back(streamID);
+ for (int i = 0; i <= repeat; ++i) {
+ printf("\nplaying soundID=%d", soundID);
+ const int32_t streamID =
+ soundPool->play(soundID, maxVol, maxVol, priority, loop, rate);
+ if (streamID == 0) {
+ printf(" failed! ERROR");
+ ++gErrors;
+ } else {
+ printf(" streamID=%d", streamID);
+ streamIDs.emplace_back(streamID);
+ }
}
}
const int64_t playTimeNs = systemTime();
@@ -217,9 +223,10 @@
int loop = 0; // disable looping
int maxStreams = 40; // change to have more concurrent playback streams
int playSec = 10;
+ int repeat = 0;
int snoozeSec = 0;
int threadCount = 1;
- for (int ch; (ch = getopt(argc, argv, "i:l:p:s:t:z:")) != -1; ) {
+ for (int ch; (ch = getopt(argc, argv, "i:l:p:r:s:t:z:")) != -1; ) {
switch (ch) {
case 'i':
iterations = atoi(optarg);
@@ -230,6 +237,9 @@
case 'p':
playSec = atoi(optarg);
break;
+ case 'r':
+ repeat = atoi(optarg);
+ break;
case 's':
maxStreams = atoi(optarg);
break;
@@ -280,7 +290,7 @@
printf("testing %zu threads\n", threads.size());
for (auto &thread : threads) {
thread = std::async(std::launch::async,
- [&]{ testStreams(soundPool.get(), filenames, loop, playSec);});
+ [&]{ testStreams(soundPool.get(), filenames, loop, repeat, playSec);});
}
// automatically joins.
}
diff --git a/media/tests/MediaRouteProvider/src/com/android/mediarouteprovider/example/SampleMediaRoute2ProviderService.java b/media/tests/MediaRouteProvider/src/com/android/mediarouteprovider/example/SampleMediaRoute2ProviderService.java
index f4f8d0b..6650f96 100644
--- a/media/tests/MediaRouteProvider/src/com/android/mediarouteprovider/example/SampleMediaRoute2ProviderService.java
+++ b/media/tests/MediaRouteProvider/src/com/android/mediarouteprovider/example/SampleMediaRoute2ProviderService.java
@@ -20,6 +20,7 @@
import android.media.MediaRoute2Info;
import android.media.MediaRoute2ProviderInfo;
import android.media.MediaRoute2ProviderService;
+import android.os.Bundle;
import android.os.IBinder;
import java.util.HashMap;
@@ -95,7 +96,7 @@
}
@Override
- public void onSelectRoute(String packageName, String routeId) {
+ public void onSelectRoute(String packageName, String routeId, SelectToken token) {
MediaRoute2Info route = mRoutes.get(routeId);
if (route == null) {
return;
@@ -104,6 +105,7 @@
.setClientPackageName(packageName)
.build());
publishRoutes();
+ notifyRouteSelected(token, Bundle.EMPTY);
}
@Override
diff --git a/media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRouterManagerTest.java b/media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRouterManagerTest.java
index d0f7c78..c70ad8d 100644
--- a/media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRouterManagerTest.java
+++ b/media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRouterManagerTest.java
@@ -23,23 +23,19 @@
import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
-import static org.mockito.ArgumentMatchers.argThat;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.timeout;
-import static org.mockito.Mockito.verify;
import android.content.Context;
import android.content.Intent;
import android.media.MediaRoute2Info;
import android.media.MediaRouter2;
import android.media.MediaRouter2Manager;
+import android.os.Bundle;
import android.support.test.InstrumentationRegistry;
import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;
import android.text.TextUtils;
-import org.junit.Assert;
+import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -95,9 +91,14 @@
private Executor mExecutor;
private String mPackageName;
+ private final List<MediaRouter2Manager.Callback> mManagerCallbacks = new ArrayList<>();
+ private final List<MediaRouter2.Callback> mRouterCallbacks = new ArrayList<>();
+ private Map<String, MediaRoute2Info> mRoutes;
+
private static final List<String> CATEGORIES_ALL = new ArrayList();
private static final List<String> CATEGORIES_SPECIAL = new ArrayList();
private static final List<String> CATEGORIES_LIVE_AUDIO = new ArrayList<>();
+
static {
CATEGORIES_ALL.add(CATEGORY_SAMPLE);
CATEGORIES_ALL.add(CATEGORY_SPECIAL);
@@ -108,6 +109,7 @@
CATEGORIES_LIVE_AUDIO.add(CATEGORY_LIVE_AUDIO);
}
+
@Before
public void setUp() throws Exception {
mContext = InstrumentationRegistry.getTargetContext();
@@ -116,6 +118,16 @@
//TODO: If we need to support thread pool executors, change this to thread pool executor.
mExecutor = Executors.newSingleThreadExecutor();
mPackageName = mContext.getPackageName();
+
+ // ensure media router 2 client
+ addRouterCallback(new MediaRouter2.Callback());
+ mRoutes = waitAndGetRoutesWithManager(CATEGORIES_ALL);
+ }
+
+ @After
+ public void tearDown() {
+ // unregister callbacks
+ clearCallbacks();
}
//TODO: Move to a separate file
@@ -132,10 +144,13 @@
assertNotEquals(routeInfo1, routeInfo3);
}
+ /**
+ * Tests if routes are added correctly when a new callback is registered.
+ */
@Test
public void testOnRoutesAdded() throws Exception {
CountDownLatch latch = new CountDownLatch(1);
- MediaRouter2Manager.Callback callback = new MediaRouter2Manager.Callback() {
+ addManagerCallback(new MediaRouter2Manager.Callback() {
@Override
public void onRoutesAdded(List<MediaRoute2Info> routes) {
assertTrue(routes.size() > 0);
@@ -145,27 +160,15 @@
}
}
}
- };
- mManager.registerCallback(mExecutor, callback);
+ });
assertTrue(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
-
- mManager.unregisterCallback(callback);
}
@Test
public void testOnRoutesRemoved() throws Exception {
- MediaRouter2Manager.Callback mockCallback = mock(MediaRouter2Manager.Callback.class);
- mManager.registerCallback(mExecutor, mockCallback);
-
- MediaRouter2.Callback routerCallback = new MediaRouter2.Callback();
- mRouter2.registerCallback(mExecutor, routerCallback);
-
- Map<String, MediaRoute2Info> routes =
- waitAndGetRoutesWithManager(CATEGORIES_ALL);
-
CountDownLatch latch = new CountDownLatch(1);
- MediaRouter2Manager.Callback callback = new MediaRouter2Manager.Callback() {
+ addManagerCallback(new MediaRouter2Manager.Callback() {
@Override
public void onRoutesRemoved(List<MediaRoute2Info> routes) {
assertTrue(routes.size() > 0);
@@ -175,16 +178,12 @@
}
}
}
- };
- mManager.registerCallback(mExecutor, callback);
+ });
//TODO: Figure out a more proper way to test.
// (Control requests shouldn't be used in this way.)
- mRouter2.sendControlRequest(routes.get(ROUTE_ID2), new Intent(ACTION_REMOVE_ROUTE));
+ mRouter2.sendControlRequest(mRoutes.get(ROUTE_ID2), new Intent(ACTION_REMOVE_ROUTE));
assertTrue(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
-
- mRouter2.unregisterCallback(routerCallback);
- mManager.unregisterCallback(mockCallback);
}
/**
@@ -192,16 +191,10 @@
*/
@Test
public void testControlCategory() throws Exception {
- MediaRouter2Manager.Callback mockCallback = mock(MediaRouter2Manager.Callback.class);
- mManager.registerCallback(mExecutor, mockCallback);
+ Map<String, MediaRoute2Info> routes = waitAndGetRoutesWithManager(CATEGORIES_SPECIAL);
- Map<String, MediaRoute2Info> routes =
- waitAndGetRoutesWithManager(CATEGORIES_SPECIAL);
-
- Assert.assertEquals(1, routes.size());
- Assert.assertNotNull(routes.get(ROUTE_ID_SPECIAL_CATEGORY));
-
- mManager.unregisterCallback(mockCallback);
+ assertEquals(1, routes.size());
+ assertNotNull(routes.get(ROUTE_ID_SPECIAL_CATEGORY));
}
/**
@@ -209,37 +202,60 @@
*/
@Test
public void testGetRoutes() throws Exception {
- MediaRouter2.Callback mockCallback = mock(MediaRouter2.Callback.class);
- mRouter2.registerCallback(mExecutor, mockCallback);
-
Map<String, MediaRoute2Info> routes = waitAndGetRoutes(CATEGORIES_SPECIAL);
- Assert.assertEquals(1, routes.size());
- Assert.assertNotNull(routes.get(ROUTE_ID_SPECIAL_CATEGORY));
-
- mRouter2.unregisterCallback(mockCallback);
+ assertEquals(1, routes.size());
+ assertNotNull(routes.get(ROUTE_ID_SPECIAL_CATEGORY));
}
+ /**
+ * Tests if MR2.Callback.onRouteSelected is called when a route is selected from MR2Manager.
+ */
@Test
- public void testOnRouteSelected() throws Exception {
- MediaRouter2.Callback routerCallback = new MediaRouter2.Callback();
- MediaRouter2Manager.Callback managerCallback = mock(MediaRouter2Manager.Callback.class);
+ public void testRouterOnRouteSelected() throws Exception {
+ CountDownLatch latch = new CountDownLatch(1);
- mManager.registerCallback(mExecutor, managerCallback);
- mRouter2.registerCallback(mExecutor, routerCallback);
+ addRouterCallback(new MediaRouter2.Callback() {
+ @Override
+ public void onRouteSelected(MediaRoute2Info route, int reason, Bundle controlHints) {
+ if (route != null && TextUtils.equals(route.getId(), ROUTE_ID1)) {
+ latch.countDown();
+ }
+ }
+ });
- Map<String, MediaRoute2Info> routes = waitAndGetRoutesWithManager(CATEGORIES_ALL);
-
- MediaRoute2Info routeToSelect = routes.get(ROUTE_ID1);
+ MediaRoute2Info routeToSelect = mRoutes.get(ROUTE_ID1);
assertNotNull(routeToSelect);
mManager.selectRoute(mPackageName, routeToSelect);
- verify(managerCallback, timeout(TIMEOUT_MS))
- .onRouteSelected(eq(mPackageName),
- argThat(route -> route != null && route.equals(routeToSelect)));
- mRouter2.unregisterCallback(routerCallback);
- mManager.unregisterCallback(managerCallback);
+ assertTrue(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+ }
+
+ /**
+ * Tests if MR2Manager.Callback.onRouteSelected is called
+ * when a route is selected by MR2Manager.
+ */
+ @Test
+ public void testManagerOnRouteSelected() throws Exception {
+ CountDownLatch latch = new CountDownLatch(1);
+
+ addManagerCallback(new MediaRouter2Manager.Callback() {
+ @Override
+ public void onRouteSelected(String packageName, MediaRoute2Info route) {
+ if (TextUtils.equals(mPackageName, packageName)
+ && route != null && TextUtils.equals(route.getId(), ROUTE_ID1)) {
+ latch.countDown();
+ }
+ }
+ });
+
+ MediaRoute2Info routeToSelect = mRoutes.get(ROUTE_ID1);
+ assertNotNull(routeToSelect);
+
+ mManager.selectRoute(mPackageName, routeToSelect);
+
+ assertTrue(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
}
/**
@@ -247,19 +263,13 @@
*/
@Test
public void testSingleProviderSelect() throws Exception {
- MediaRouter2.Callback routerCallback = mock(MediaRouter2.Callback.class);
-
- mRouter2.registerCallback(mExecutor, routerCallback);
-
- Map<String, MediaRoute2Info> routes = waitAndGetRoutesWithManager(CATEGORIES_ALL);
-
awaitOnRouteChangedManager(
- () -> mManager.selectRoute(mPackageName, routes.get(ROUTE_ID1)),
+ () -> mManager.selectRoute(mPackageName, mRoutes.get(ROUTE_ID1)),
ROUTE_ID1,
route -> TextUtils.equals(route.getClientPackageName(), mPackageName));
awaitOnRouteChangedManager(
- () -> mManager.selectRoute(mPackageName, routes.get(ROUTE_ID2)),
+ () -> mManager.selectRoute(mPackageName, mRoutes.get(ROUTE_ID2)),
ROUTE_ID2,
route -> TextUtils.equals(route.getClientPackageName(), mPackageName));
@@ -267,8 +277,6 @@
() -> mManager.unselectRoute(mPackageName),
ROUTE_ID2,
route -> TextUtils.equals(route.getClientPackageName(), null));
-
- mRouter2.unregisterCallback(routerCallback);
}
@Test
@@ -292,12 +300,7 @@
@Test
public void testControlVolumeWithManager() throws Exception {
- MediaRouter2.Callback mockCallback = mock(MediaRouter2.Callback.class);
-
- mRouter2.registerCallback(mExecutor, mockCallback);
- Map<String, MediaRoute2Info> routes = waitAndGetRoutesWithManager(CATEGORIES_ALL);
-
- MediaRoute2Info volRoute = routes.get(ROUTE_ID_VARIABLE_VOLUME);
+ MediaRoute2Info volRoute = mRoutes.get(ROUTE_ID_VARIABLE_VOLUME);
int originalVolume = volRoute.getVolume();
int deltaVolume = (originalVolume == volRoute.getVolumeMax() ? -1 : 1);
@@ -310,24 +313,16 @@
() -> mManager.requestSetVolume(volRoute, originalVolume),
ROUTE_ID_VARIABLE_VOLUME,
(route -> route.getVolume() == originalVolume));
-
- mRouter2.unregisterCallback(mockCallback);
}
@Test
public void testVolumeHandling() throws Exception {
- MediaRouter2.Callback mockCallback = mock(MediaRouter2.Callback.class);
- mRouter2.registerCallback(mExecutor, mockCallback);
- Map<String, MediaRoute2Info> routes = waitAndGetRoutes(CATEGORIES_ALL);
-
- MediaRoute2Info fixedVolumeRoute = routes.get(ROUTE_ID_FIXED_VOLUME);
- MediaRoute2Info variableVolumeRoute = routes.get(ROUTE_ID_VARIABLE_VOLUME);
+ MediaRoute2Info fixedVolumeRoute = mRoutes.get(ROUTE_ID_FIXED_VOLUME);
+ MediaRoute2Info variableVolumeRoute = mRoutes.get(ROUTE_ID_VARIABLE_VOLUME);
assertEquals(PLAYBACK_VOLUME_FIXED, fixedVolumeRoute.getVolumeHandling());
assertEquals(PLAYBACK_VOLUME_VARIABLE, variableVolumeRoute.getVolumeHandling());
assertEquals(VOLUME_MAX, variableVolumeRoute.getVolumeMax());
-
- mRouter2.unregisterCallback(mockCallback);
}
@Test
@@ -368,6 +363,7 @@
latch.countDown();
}
}
+
@Override
public void onControlCategoriesChanged(String packageName) {
if (TextUtils.equals(mPackageName, packageName)) {
@@ -401,7 +397,7 @@
};
mRouter2.registerCallback(mExecutor, callback);
try {
- new Thread(task).start();
+ task.run();
assertTrue(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
} finally {
mRouter2.unregisterCallback(callback);
@@ -422,7 +418,7 @@
};
mManager.registerCallback(mExecutor, callback);
try {
- new Thread(task).start();
+ task.run();
assertTrue(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
} finally {
mManager.unregisterCallback(callback);
@@ -433,9 +429,31 @@
static Map<String, MediaRoute2Info> createRouteMap(List<MediaRoute2Info> routes) {
Map<String, MediaRoute2Info> routeMap = new HashMap<>();
for (MediaRoute2Info route : routes) {
- // intentionally not route.getUniqueId() for convenience.
+ // intentionally not using route.getUniqueId() for convenience.
routeMap.put(route.getId(), route);
}
return routeMap;
}
+
+ private void addManagerCallback(MediaRouter2Manager.Callback callback) {
+ mManagerCallbacks.add(callback);
+ mManager.registerCallback(mExecutor, callback);
+ }
+
+ private void addRouterCallback(MediaRouter2.Callback callback) {
+ mRouterCallbacks.add(callback);
+ mRouter2.registerCallback(mExecutor, callback);
+ }
+
+ private void clearCallbacks() {
+ for (MediaRouter2Manager.Callback callback : mManagerCallbacks) {
+ mManager.unregisterCallback(callback);
+ }
+ mManagerCallbacks.clear();
+
+ for (MediaRouter2.Callback callback : mRouterCallbacks) {
+ mRouter2.unregisterCallback(callback);
+ }
+ mRouterCallbacks.clear();
+ }
}
diff --git a/packages/CarSystemUI/res/values/dimens.xml b/packages/CarSystemUI/res/values/dimens.xml
index ee79653..f68d034 100644
--- a/packages/CarSystemUI/res/values/dimens.xml
+++ b/packages/CarSystemUI/res/values/dimens.xml
@@ -60,21 +60,6 @@
<dimen name="car_keyline_2">96dp</dimen>
<dimen name="car_keyline_3">128dp</dimen>
- <!-- Height of icons in Ongoing App Ops dialog. Both App Op icon and application icon -->
- <dimen name="ongoing_appops_dialog_icon_height">48dp</dimen>
- <!-- Margin between text lines in Ongoing App Ops dialog -->
- <dimen name="ongoing_appops_dialog_text_margin">15dp</dimen>
- <!-- Padding around Ongoing App Ops dialog content -->
- <dimen name="ongoing_appops_dialog_content_padding">24dp</dimen>
- <!-- Margins around the Ongoing App Ops chip. In landscape, the side margins are 0 -->
- <dimen name="ongoing_appops_chip_margin">12dp</dimen>
- <!-- Start and End padding for Ongoing App Ops chip -->
- <dimen name="ongoing_appops_chip_side_padding">6dp</dimen>
- <!-- Padding between background of Ongoing App Ops chip and content -->
- <dimen name="ongoing_appops_chip_bg_padding">4dp</dimen>
- <!-- Radius of Ongoing App Ops chip corners -->
- <dimen name="ongoing_appops_chip_bg_corner_radius">12dp</dimen>
-
<!-- Car volume dimens. -->
<dimen name="car_volume_item_icon_size">@dimen/car_primary_icon_size</dimen>
<dimen name="car_volume_item_height">@*android:dimen/car_single_line_list_item_height</dimen>
diff --git a/packages/CarSystemUI/res/values/integers_car.xml b/packages/CarSystemUI/res/values/integers_car.xml
index e53446e..d245f67 100644
--- a/packages/CarSystemUI/res/values/integers_car.xml
+++ b/packages/CarSystemUI/res/values/integers_car.xml
@@ -32,4 +32,6 @@
<!-- Timeout values in milliseconds for displaying volume dialog-->
<integer name="car_volume_dialog_display_normal_timeout">3000</integer>
<integer name="car_volume_dialog_display_hovering_timeout">16000</integer>
+ <integer name="car_volume_dialog_display_expanded_normal_timeout">6000</integer>
+ <integer name="car_volume_dialog_display_expanded_hovering_timeout">32000</integer>
</resources>
diff --git a/packages/CarSystemUI/src/com/android/systemui/TEST_MAPPING b/packages/CarSystemUI/src/com/android/systemui/TEST_MAPPING
index f90947c..6056ddf 100644
--- a/packages/CarSystemUI/src/com/android/systemui/TEST_MAPPING
+++ b/packages/CarSystemUI/src/com/android/systemui/TEST_MAPPING
@@ -1,5 +1,5 @@
{
- "auto-postsubmit": [
+ "auto-end-to-end-presubmit": [
{
"name": "AndroidAutoUiTests",
"options" : [
diff --git a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java
index bef769d..bcb76d7 100644
--- a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java
+++ b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java
@@ -562,15 +562,7 @@
mCarUxRestrictionManagerWrapper = new CarUxRestrictionManagerWrapper();
mNotificationDataManager = new NotificationDataManager();
- mNotificationDataManager.setOnUnseenCountUpdateListener(
- () -> {
- if (mNotificationDataManager != null) {
- boolean hasUnseen =
- mNotificationDataManager.getUnseenNotificationCount() > 0;
- mCarNavigationBarController.toggleAllNotificationsUnseenIndicator(
- mDeviceProvisionedController.isCurrentUserSetup(), hasUnseen);
- }
- });
+ mNotificationDataManager.setOnUnseenCountUpdateListener(this::onUnseenCountUpdate);
mEnableHeadsUpNotificationWhenNotificationShadeOpen = mContext.getResources().getBoolean(
R.bool.config_enableHeadsUpNotificationWhenNotificationShadeOpen);
@@ -692,6 +684,18 @@
}
/**
+ * This method is called whenever there is an update to the number of unseen notifications.
+ * This method can be extended by OEMs to customize the desired logic.
+ */
+ protected void onUnseenCountUpdate() {
+ if (mNotificationDataManager != null) {
+ boolean hasUnseen = mNotificationDataManager.getUnseenNotificationCount() > 0;
+ mCarNavigationBarController.toggleAllNotificationsUnseenIndicator(
+ mDeviceProvisionedController.isCurrentUserSetup(), hasUnseen);
+ }
+ }
+
+ /**
* @return true if the notification panel is currently visible
*/
boolean isNotificationPanelOpen() {
diff --git a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/UserGridRecyclerView.java b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/UserGridRecyclerView.java
index fb1870a..0a5f80f 100644
--- a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/UserGridRecyclerView.java
+++ b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/UserGridRecyclerView.java
@@ -21,6 +21,7 @@
import static android.os.UserManager.DISALLOW_ADD_USER;
import static android.os.UserManager.SWITCHABILITY_STATUS_OK;
+import android.annotation.Nullable;
import android.app.ActivityManager;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
@@ -266,7 +267,10 @@
if (userRecord.mIsStartGuestSession) {
notifyUserSelected(userRecord);
- mCarUserManagerHelper.startGuestSession(mGuestName);
+ UserInfo guest = createNewOrFindExistingGuest(mContext);
+ if (guest != null) {
+ mCarUserManagerHelper.switchToUser(guest);
+ }
return;
}
@@ -296,14 +300,42 @@
}
}
+ /**
+ * Get the maximum number of real (non-guest, non-managed profile) users that can be created
+ * on the device. This is a dynamic value and it decreases with the increase of the number
+ * of managed profiles on the device.
+ *
+ * <p> It excludes system user in headless system user model.
+ *
+ * @return Maximum number of real users that can be created.
+ */
+ private int getMaxSupportedRealUsers() {
+ int maxSupportedUsers = UserManager.getMaxSupportedUsers();
+ if (UserManager.isHeadlessSystemUserMode()) {
+ maxSupportedUsers -= 1;
+ }
+
+ List<UserInfo> users = mUserManager.getUsers(/* excludeDying= */ true);
+
+ // Count all users that are managed profiles of another user.
+ int managedProfilesCount = 0;
+ for (UserInfo user : users) {
+ if (user.isManagedProfile()) {
+ managedProfilesCount++;
+ }
+ }
+
+ return maxSupportedUsers - managedProfilesCount;
+ }
+
private void showMaxUserLimitReachedDialog() {
AlertDialog maxUsersDialog = new Builder(mContext,
com.android.internal.R.style.Theme_DeviceDefault_Dialog_Alert)
.setTitle(R.string.user_limit_reached_title)
.setMessage(getResources().getQuantityString(
R.plurals.user_limit_reached_message,
- mCarUserManagerHelper.getMaxSupportedRealUsers(),
- mCarUserManagerHelper.getMaxSupportedRealUsers()))
+ getMaxSupportedRealUsers(),
+ getMaxSupportedRealUsers()))
.setPositiveButton(android.R.string.ok, null)
.create();
// Sets window flags for the SysUI dialog
@@ -353,6 +385,24 @@
return circleIcon;
}
+ /**
+ * Finds the existing Guest user, or creates one if it doesn't exist.
+ * @param context App context
+ * @return UserInfo representing the Guest user
+ */
+ @Nullable
+ public UserInfo createNewOrFindExistingGuest(Context context) {
+ // CreateGuest will return null if a guest already exists.
+ UserInfo newGuest = mUserManager.createGuest(context, mGuestName);
+ if (newGuest != null) {
+ new UserIconProvider().assignDefaultIcon(
+ mUserManager, context.getResources(), newGuest);
+ return newGuest;
+ }
+
+ return mUserManager.findCurrentGuestUser();
+ }
+
@Override
public void onClick(DialogInterface dialog, int which) {
if (which == BUTTON_POSITIVE) {
diff --git a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/UserIconProvider.java b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/UserIconProvider.java
index 9464eab..9018290 100644
--- a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/UserIconProvider.java
+++ b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/UserIconProvider.java
@@ -88,7 +88,7 @@
* @param userInfo User whose avatar is set to default icon.
* @return Bitmap of the user icon.
*/
- private Bitmap assignDefaultIcon(
+ public Bitmap assignDefaultIcon(
UserManager userManager, Resources resources, UserInfo userInfo) {
Bitmap bitmap = userInfo.isGuest()
? getGuestUserDefaultIcon(resources)
diff --git a/packages/CarSystemUI/src/com/android/systemui/volume/CarVolumeDialogImpl.java b/packages/CarSystemUI/src/com/android/systemui/volume/CarVolumeDialogImpl.java
index 367959e..c9ac765 100644
--- a/packages/CarSystemUI/src/com/android/systemui/volume/CarVolumeDialogImpl.java
+++ b/packages/CarSystemUI/src/com/android/systemui/volume/CarVolumeDialogImpl.java
@@ -90,6 +90,8 @@
private final KeyguardManager mKeyguard;
private final int mNormalTimeout;
private final int mHoveringTimeout;
+ private final int mExpNormalTimeout;
+ private final int mExpHoveringTimeout;
private Window mWindow;
private CustomDialog mDialog;
@@ -176,6 +178,10 @@
R.integer.car_volume_dialog_display_normal_timeout);
mHoveringTimeout = mContext.getResources().getInteger(
R.integer.car_volume_dialog_display_hovering_timeout);
+ mExpNormalTimeout = mContext.getResources().getInteger(
+ R.integer.car_volume_dialog_display_expanded_normal_timeout);
+ mExpHoveringTimeout = mContext.getResources().getInteger(
+ R.integer.car_volume_dialog_display_expanded_hovering_timeout);
}
/** Sets a {@link CarServiceProvider} which connects to the audio service. */
@@ -290,7 +296,7 @@
mShowing = true;
clearAllAndSetupDefaultCarVolumeLineItem(mCurrentlyDisplayingGroupId);
mDialog.show();
- Events.writeEvent(mContext, Events.EVENT_SHOW_DIALOG, reason, mKeyguard.isKeyguardLocked());
+ Events.writeEvent(Events.EVENT_SHOW_DIALOG, reason, mKeyguard.isKeyguardLocked());
}
private void clearAllAndSetupDefaultCarVolumeLineItem(int groupId) {
@@ -313,7 +319,11 @@
}
private int computeTimeoutH() {
- return mHovering ? mHoveringTimeout : mNormalTimeout;
+ if (mExpanded) {
+ return mHovering ? mExpHoveringTimeout : mExpNormalTimeout;
+ } else {
+ return mHovering ? mHoveringTimeout : mNormalTimeout;
+ }
}
private void dismissH(int reason) {
@@ -349,7 +359,7 @@
}, DISMISS_DELAY_IN_MILLIS))
.start();
- Events.writeEvent(mContext, Events.EVENT_DISMISS_DIALOG, reason);
+ Events.writeEvent(Events.EVENT_DISMISS_DIALOG, reason);
}
private void loadAudioUsageItems() {
@@ -532,6 +542,7 @@
public void onClick(final View v) {
mExpandIcon = v;
toggleDialogExpansion(true);
+ rescheduleTimeoutH();
}
}
diff --git a/packages/CarrierDefaultApp/tests/unit/src/com/android/carrierdefaultapp/CarrierDefaultReceiverTest.java b/packages/CarrierDefaultApp/tests/unit/src/com/android/carrierdefaultapp/CarrierDefaultReceiverTest.java
index 5d84d64..1928ad9 100644
--- a/packages/CarrierDefaultApp/tests/unit/src/com/android/carrierdefaultapp/CarrierDefaultReceiverTest.java
+++ b/packages/CarrierDefaultApp/tests/unit/src/com/android/carrierdefaultapp/CarrierDefaultReceiverTest.java
@@ -21,7 +21,6 @@
import android.content.Intent;
import android.os.PersistableBundle;
import android.telephony.CarrierConfigManager;
-import android.telephony.Rlog;
import android.telephony.TelephonyManager;
import android.test.InstrumentationTestCase;
@@ -90,12 +89,10 @@
Intent intent = new Intent(TelephonyIntents.ACTION_CARRIER_SIGNAL_REDIRECTED);
intent.putExtra(PhoneConstants.SUBSCRIPTION_KEY, subId);
- Rlog.d(TAG, "OnReceive redirection intent");
mReceiver.onReceive(mContext, intent);
mContext.waitForMs(100);
- Rlog.d(TAG, "verify carrier action: showPortalNotification");
verify(mNotificationMgr, times(1)).notify(mString.capture(), mInt.capture(),
mNotification.capture());
assertEquals(PORTAL_NOTIFICATION_ID, (int) mInt.getValue());
@@ -103,7 +100,6 @@
PendingIntent pendingIntent = mNotification.getValue().contentIntent;
assertNotNull(pendingIntent);
- Rlog.d(TAG, "verify carrier action: disable all metered apns");
verify(mTelephonyMgr).setCarrierDataEnabled(eq(false));
}
}
diff --git a/packages/DynamicSystemInstallationService/src/com/android/dynsystem/DynamicSystemInstallationService.java b/packages/DynamicSystemInstallationService/src/com/android/dynsystem/DynamicSystemInstallationService.java
index 142078e..9e49826 100644
--- a/packages/DynamicSystemInstallationService/src/com/android/dynsystem/DynamicSystemInstallationService.java
+++ b/packages/DynamicSystemInstallationService/src/com/android/dynsystem/DynamicSystemInstallationService.java
@@ -32,9 +32,11 @@
import static android.os.image.DynamicSystemClient.STATUS_NOT_STARTED;
import static android.os.image.DynamicSystemClient.STATUS_READY;
+import static com.android.dynsystem.InstallationAsyncTask.RESULT_CANCELLED;
import static com.android.dynsystem.InstallationAsyncTask.RESULT_ERROR_EXCEPTION;
-import static com.android.dynsystem.InstallationAsyncTask.RESULT_ERROR_INVALID_URL;
import static com.android.dynsystem.InstallationAsyncTask.RESULT_ERROR_IO;
+import static com.android.dynsystem.InstallationAsyncTask.RESULT_ERROR_UNSUPPORTED_FORMAT;
+import static com.android.dynsystem.InstallationAsyncTask.RESULT_ERROR_UNSUPPORTED_URL;
import static com.android.dynsystem.InstallationAsyncTask.RESULT_OK;
import android.app.Notification;
@@ -66,11 +68,10 @@
* cancel and confirm commnands.
*/
public class DynamicSystemInstallationService extends Service
- implements InstallationAsyncTask.InstallStatusListener {
+ implements InstallationAsyncTask.ProgressListener {
private static final String TAG = "DynSystemInstallationService";
-
// TODO (b/131866826): This is currently for test only. Will move this to System API.
static final String KEY_ENABLE_WHEN_COMPLETED = "KEY_ENABLE_WHEN_COMPLETED";
@@ -121,9 +122,12 @@
private DynamicSystemManager mDynSystem;
private NotificationManager mNM;
- private long mSystemSize;
- private long mUserdataSize;
- private long mInstalledSize;
+ private int mNumInstalledPartitions;
+
+ private String mCurrentPartitionName;
+ private long mCurrentPartitionSize;
+ private long mCurrentPartitionInstalledSize;
+
private boolean mJustCancelledByUser;
// This is for testing only now
@@ -176,8 +180,12 @@
}
@Override
- public void onProgressUpdate(long installedSize) {
- mInstalledSize = installedSize;
+ public void onProgressUpdate(InstallationAsyncTask.Progress progress) {
+ mCurrentPartitionName = progress.mPartitionName;
+ mCurrentPartitionSize = progress.mPartitionSize;
+ mCurrentPartitionInstalledSize = progress.mInstalledSize;
+ mNumInstalledPartitions = progress.mNumInstalledPartitions;
+
postStatus(STATUS_IN_PROGRESS, CAUSE_NOT_SPECIFIED, null);
}
@@ -197,11 +205,16 @@
resetTaskAndStop();
switch (result) {
+ case RESULT_CANCELLED:
+ postStatus(STATUS_NOT_STARTED, CAUSE_INSTALL_CANCELLED, null);
+ break;
+
case RESULT_ERROR_IO:
postStatus(STATUS_NOT_STARTED, CAUSE_ERROR_IO, detail);
break;
- case RESULT_ERROR_INVALID_URL:
+ case RESULT_ERROR_UNSUPPORTED_URL:
+ case RESULT_ERROR_UNSUPPORTED_FORMAT:
postStatus(STATUS_NOT_STARTED, CAUSE_ERROR_INVALID_URL, detail);
break;
@@ -211,12 +224,6 @@
}
}
- @Override
- public void onCancelled() {
- resetTaskAndStop();
- postStatus(STATUS_NOT_STARTED, CAUSE_INSTALL_CANCELLED, null);
- }
-
private void executeInstallCommand(Intent intent) {
if (!verifyRequest(intent)) {
Log.e(TAG, "Verification failed. Did you use VerificationActivity?");
@@ -234,12 +241,13 @@
}
String url = intent.getDataString();
- mSystemSize = intent.getLongExtra(DynamicSystemClient.KEY_SYSTEM_SIZE, 0);
- mUserdataSize = intent.getLongExtra(DynamicSystemClient.KEY_USERDATA_SIZE, 0);
+ long systemSize = intent.getLongExtra(DynamicSystemClient.KEY_SYSTEM_SIZE, 0);
+ long userdataSize = intent.getLongExtra(DynamicSystemClient.KEY_USERDATA_SIZE, 0);
mEnableWhenCompleted = intent.getBooleanExtra(KEY_ENABLE_WHEN_COMPLETED, false);
+ // TODO: better constructor or builder
mInstallTask = new InstallationAsyncTask(
- url, mSystemSize, mUserdataSize, this, mDynSystem, this);
+ url, systemSize, userdataSize, this, mDynSystem, this);
mInstallTask.execute();
@@ -257,7 +265,7 @@
mJustCancelledByUser = true;
if (mInstallTask.cancel(false)) {
- // Will cleanup and post status in onCancelled()
+ // Will cleanup and post status in onResult()
Log.d(TAG, "Cancel request filed successfully");
} else {
Log.e(TAG, "Trying to cancel installation while it's already completed.");
@@ -288,7 +296,7 @@
private void executeRebootToDynSystemCommand() {
boolean enabled = false;
- if (mInstallTask != null && mInstallTask.getResult() == RESULT_OK) {
+ if (mInstallTask != null && mInstallTask.isCompleted()) {
enabled = mInstallTask.commit();
} else if (isDynamicSystemInstalled()) {
enabled = mDynSystem.setEnable(true, true);
@@ -380,8 +388,16 @@
case STATUS_IN_PROGRESS:
builder.setContentText(getString(R.string.notification_install_inprogress));
- int max = (int) Math.max((mSystemSize + mUserdataSize) >> 20, 1);
- int progress = (int) (mInstalledSize >> 20);
+ int max = 1024;
+ int progress = 0;
+
+ int currentMax = max >> (mNumInstalledPartitions + 1);
+ progress = max - currentMax * 2;
+
+ long currentProgress = (mCurrentPartitionInstalledSize >> 20) * currentMax
+ / Math.max(mCurrentPartitionSize >> 20, 1);
+
+ progress += (int) currentProgress;
builder.setProgress(max, progress, false);
@@ -464,7 +480,8 @@
throws RemoteException {
Bundle bundle = new Bundle();
- bundle.putLong(DynamicSystemClient.KEY_INSTALLED_SIZE, mInstalledSize);
+ // TODO: send more info to the clients
+ bundle.putLong(DynamicSystemClient.KEY_INSTALLED_SIZE, mCurrentPartitionInstalledSize);
if (detail != null) {
bundle.putSerializable(DynamicSystemClient.KEY_EXCEPTION_DETAIL,
@@ -492,9 +509,7 @@
return STATUS_IN_PROGRESS;
case FINISHED:
- int result = mInstallTask.getResult();
-
- if (result == RESULT_OK) {
+ if (mInstallTask.isCompleted()) {
return STATUS_READY;
} else {
throw new IllegalStateException("A failed InstallationTask is not reset");
diff --git a/packages/DynamicSystemInstallationService/src/com/android/dynsystem/InstallationAsyncTask.java b/packages/DynamicSystemInstallationService/src/com/android/dynsystem/InstallationAsyncTask.java
index 19ae970..b206a1f 100644
--- a/packages/DynamicSystemInstallationService/src/com/android/dynsystem/InstallationAsyncTask.java
+++ b/packages/DynamicSystemInstallationService/src/com/android/dynsystem/InstallationAsyncTask.java
@@ -17,7 +17,6 @@
package com.android.dynsystem;
import android.content.Context;
-import android.gsi.GsiProgress;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.MemoryFile;
@@ -27,35 +26,70 @@
import android.webkit.URLUtil;
import java.io.BufferedInputStream;
+import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
+import java.util.Arrays;
+import java.util.Enumeration;
+import java.util.List;
import java.util.Locale;
import java.util.zip.GZIPInputStream;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
+import java.util.zip.ZipInputStream;
-class InstallationAsyncTask extends AsyncTask<String, Long, Throwable> {
+class InstallationAsyncTask extends AsyncTask<String, InstallationAsyncTask.Progress, Throwable> {
private static final String TAG = "InstallationAsyncTask";
private static final int READ_BUFFER_SIZE = 1 << 13;
+ private static final long MIN_PROGRESS_TO_PUBLISH = 1 << 27;
- private class InvalidImageUrlException extends RuntimeException {
- private InvalidImageUrlException(String message) {
+ private static final List<String> UNSUPPORTED_PARTITIONS =
+ Arrays.asList("vbmeta", "boot", "userdata", "dtbo", "super_empty", "system_other");
+
+ private class UnsupportedUrlException extends RuntimeException {
+ private UnsupportedUrlException(String message) {
super(message);
}
}
- /** Not completed, including being cancelled */
- static final int NO_RESULT = 0;
+ private class UnsupportedFormatException extends RuntimeException {
+ private UnsupportedFormatException(String message) {
+ super(message);
+ }
+ }
+
+ /** UNSET means the installation is not completed */
+ static final int RESULT_UNSET = 0;
static final int RESULT_OK = 1;
- static final int RESULT_ERROR_IO = 2;
- static final int RESULT_ERROR_INVALID_URL = 3;
+ static final int RESULT_CANCELLED = 2;
+ static final int RESULT_ERROR_IO = 3;
+ static final int RESULT_ERROR_UNSUPPORTED_URL = 4;
+ static final int RESULT_ERROR_UNSUPPORTED_FORMAT = 5;
static final int RESULT_ERROR_EXCEPTION = 6;
- interface InstallStatusListener {
- void onProgressUpdate(long installedSize);
+ class Progress {
+ String mPartitionName;
+ long mPartitionSize;
+ long mInstalledSize;
+
+ int mNumInstalledPartitions;
+
+ Progress(String partitionName, long partitionSize, long installedSize,
+ int numInstalled) {
+ mPartitionName = partitionName;
+ mPartitionSize = partitionSize;
+ mInstalledSize = installedSize;
+
+ mNumInstalledPartitions = numInstalled;
+ }
+ }
+
+ interface ProgressListener {
+ void onProgressUpdate(Progress progress);
void onResult(int resultCode, Throwable detail);
- void onCancelled();
}
private final String mUrl;
@@ -63,16 +97,17 @@
private final long mUserdataSize;
private final Context mContext;
private final DynamicSystemManager mDynSystem;
- private final InstallStatusListener mListener;
+ private final ProgressListener mListener;
private DynamicSystemManager.Session mInstallationSession;
- private int mResult = NO_RESULT;
+ private boolean mIsZip;
+ private boolean mIsCompleted;
private InputStream mStream;
-
+ private ZipFile mZipFile;
InstallationAsyncTask(String url, long systemSize, long userdataSize, Context context,
- DynamicSystemManager dynSystem, InstallStatusListener listener) {
+ DynamicSystemManager dynSystem, ProgressListener listener) {
mUrl = url;
mSystemSize = systemSize;
mUserdataSize = userdataSize;
@@ -82,133 +117,292 @@
}
@Override
- protected void onPreExecute() {
- mListener.onProgressUpdate(0);
- }
-
- @Override
protected Throwable doInBackground(String... voids) {
Log.d(TAG, "Start doInBackground(), URL: " + mUrl);
try {
- long installedSize = 0;
- long reportedInstalledSize = 0;
+ // call DynamicSystemManager to cleanup stuff
+ mDynSystem.remove();
- long minStepToReport = (mSystemSize + mUserdataSize) / 100;
+ verifyAndPrepare();
- // init input stream before calling startInstallation(), which takes 90 seconds.
- initInputStream();
+ mDynSystem.startInstallation();
- Thread thread =
- new Thread(
- () -> {
- mDynSystem.startInstallation();
- mDynSystem.createPartition("userdata", mUserdataSize, false);
- mInstallationSession =
- mDynSystem.createPartition("system", mSystemSize, true);
- });
-
- thread.start();
-
- while (thread.isAlive()) {
- if (isCancelled()) {
- boolean aborted = mDynSystem.abort();
- Log.d(TAG, "Called DynamicSystemManager.abort(), result = " + aborted);
- return null;
- }
-
- GsiProgress progress = mDynSystem.getInstallationProgress();
- installedSize = progress.bytes_processed;
-
- if (installedSize > reportedInstalledSize + minStepToReport) {
- publishProgress(installedSize);
- reportedInstalledSize = installedSize;
- }
-
- Thread.sleep(10);
+ installUserdata();
+ if (isCancelled()) {
+ mDynSystem.remove();
+ return null;
}
- if (mInstallationSession == null) {
- throw new IOException(
- "Failed to start installation with requested size: "
- + (mSystemSize + mUserdataSize));
+ installImages();
+ if (isCancelled()) {
+ mDynSystem.remove();
+ return null;
}
- installedSize = mUserdataSize;
-
- MemoryFile memoryFile = new MemoryFile("dsu", READ_BUFFER_SIZE);
- byte[] bytes = new byte[READ_BUFFER_SIZE];
- mInstallationSession.setAshmem(
- new ParcelFileDescriptor(memoryFile.getFileDescriptor()), READ_BUFFER_SIZE);
- int numBytesRead;
- Log.d(TAG, "Start installation loop");
- while ((numBytesRead = mStream.read(bytes, 0, READ_BUFFER_SIZE)) != -1) {
- memoryFile.writeBytes(bytes, 0, 0, numBytesRead);
- if (isCancelled()) {
- break;
- }
- if (!mInstallationSession.submitFromAshmem(numBytesRead)) {
- throw new IOException("Failed write() to DynamicSystem");
- }
-
- installedSize += numBytesRead;
-
- if (installedSize > reportedInstalledSize + minStepToReport) {
- publishProgress(installedSize);
- reportedInstalledSize = installedSize;
- }
- }
mDynSystem.finishInstallation();
- return null;
-
} catch (Exception e) {
e.printStackTrace();
+ mDynSystem.remove();
return e;
} finally {
close();
}
+
+ return null;
+ }
+
+ @Override
+ protected void onPostExecute(Throwable detail) {
+ int result = RESULT_UNSET;
+
+ if (detail == null) {
+ result = RESULT_OK;
+ mIsCompleted = true;
+ } else if (detail instanceof IOException) {
+ result = RESULT_ERROR_IO;
+ } else if (detail instanceof UnsupportedUrlException) {
+ result = RESULT_ERROR_UNSUPPORTED_URL;
+ } else if (detail instanceof UnsupportedFormatException) {
+ result = RESULT_ERROR_UNSUPPORTED_FORMAT;
+ } else {
+ result = RESULT_ERROR_EXCEPTION;
+ }
+
+ Log.d(TAG, "onPostExecute(), URL: " + mUrl + ", result: " + result);
+
+ mListener.onResult(result, detail);
}
@Override
protected void onCancelled() {
Log.d(TAG, "onCancelled(), URL: " + mUrl);
- mListener.onCancelled();
- }
-
- @Override
- protected void onPostExecute(Throwable detail) {
- if (detail == null) {
- mResult = RESULT_OK;
- } else if (detail instanceof IOException) {
- mResult = RESULT_ERROR_IO;
- } else if (detail instanceof InvalidImageUrlException) {
- mResult = RESULT_ERROR_INVALID_URL;
+ if (mDynSystem.abort()) {
+ Log.d(TAG, "Installation aborted");
} else {
- mResult = RESULT_ERROR_EXCEPTION;
+ Log.w(TAG, "DynamicSystemManager.abort() returned false");
}
- Log.d(TAG, "onPostExecute(), URL: " + mUrl + ", result: " + mResult);
-
- mListener.onResult(mResult, detail);
+ mListener.onResult(RESULT_CANCELLED, null);
}
@Override
- protected void onProgressUpdate(Long... values) {
- long progress = values[0];
+ protected void onProgressUpdate(Progress... values) {
+ Progress progress = values[0];
mListener.onProgressUpdate(progress);
}
- private void initInputStream() throws IOException, InvalidImageUrlException {
- if (URLUtil.isNetworkUrl(mUrl) || URLUtil.isFileUrl(mUrl)) {
- mStream = new BufferedInputStream(new GZIPInputStream(new URL(mUrl).openStream()));
- } else if (URLUtil.isContentUrl(mUrl)) {
- Uri uri = Uri.parse(mUrl);
- mStream = new BufferedInputStream(new GZIPInputStream(
- mContext.getContentResolver().openInputStream(uri)));
+ private void verifyAndPrepare() throws Exception {
+ String extension = mUrl.substring(mUrl.lastIndexOf('.') + 1);
+
+ if ("gz".equals(extension) || "gzip".equals(extension)) {
+ mIsZip = false;
+ } else if ("zip".equals(extension)) {
+ mIsZip = true;
} else {
- throw new InvalidImageUrlException(
- String.format(Locale.US, "Unsupported file source: %s", mUrl));
+ throw new UnsupportedFormatException(
+ String.format(Locale.US, "Unsupported file format: %s", mUrl));
+ }
+
+ if (URLUtil.isNetworkUrl(mUrl)) {
+ mStream = new URL(mUrl).openStream();
+ } else if (URLUtil.isFileUrl(mUrl)) {
+ if (mIsZip) {
+ mZipFile = new ZipFile(new File(new URL(mUrl).toURI()));
+ } else {
+ mStream = new URL(mUrl).openStream();
+ }
+ } else if (URLUtil.isContentUrl(mUrl)) {
+ mStream = mContext.getContentResolver().openInputStream(Uri.parse(mUrl));
+ } else {
+ throw new UnsupportedUrlException(
+ String.format(Locale.US, "Unsupported URL: %s", mUrl));
+ }
+ }
+
+ private void installUserdata() throws Exception {
+ Thread thread = new Thread(() -> {
+ mInstallationSession = mDynSystem.createPartition("userdata", mUserdataSize, false);
+ });
+
+ Log.d(TAG, "Creating partition: userdata");
+ thread.start();
+
+ long installedSize = 0;
+ Progress progress = new Progress("userdata", mUserdataSize, installedSize, 0);
+
+ while (thread.isAlive()) {
+ if (isCancelled()) {
+ return;
+ }
+
+ installedSize = mDynSystem.getInstallationProgress().bytes_processed;
+
+ if (installedSize > progress.mInstalledSize + MIN_PROGRESS_TO_PUBLISH) {
+ progress.mInstalledSize = installedSize;
+ publishProgress(progress);
+ }
+
+ Thread.sleep(10);
+ }
+
+ if (mInstallationSession == null) {
+ throw new IOException(
+ "Failed to start installation with requested size: " + mUserdataSize);
+ }
+ }
+
+ private void installImages() throws IOException, InterruptedException {
+ if (mStream != null) {
+ if (mIsZip) {
+ installStreamingZipUpdate();
+ } else {
+ installStreamingGzUpdate();
+ }
+ } else {
+ installLocalZipUpdate();
+ }
+ }
+
+ private void installStreamingGzUpdate() throws IOException, InterruptedException {
+ Log.d(TAG, "To install a streaming GZ update");
+ installImage("system", mSystemSize, new GZIPInputStream(mStream), 1);
+ }
+
+ private void installStreamingZipUpdate() throws IOException, InterruptedException {
+ Log.d(TAG, "To install a streaming ZIP update");
+
+ ZipInputStream zis = new ZipInputStream(mStream);
+ ZipEntry zipEntry = null;
+
+ int numInstalledPartitions = 1;
+
+ while ((zipEntry = zis.getNextEntry()) != null) {
+ if (installImageFromAnEntry(zipEntry, zis, numInstalledPartitions)) {
+ numInstalledPartitions++;
+ }
+
+ if (isCancelled()) {
+ break;
+ }
+ }
+ }
+
+ private void installLocalZipUpdate() throws IOException, InterruptedException {
+ Log.d(TAG, "To install a local ZIP update");
+
+ Enumeration<? extends ZipEntry> entries = mZipFile.entries();
+ int numInstalledPartitions = 1;
+
+ while (entries.hasMoreElements()) {
+ ZipEntry entry = entries.nextElement();
+ if (installImageFromAnEntry(
+ entry, mZipFile.getInputStream(entry), numInstalledPartitions)) {
+ numInstalledPartitions++;
+ }
+
+ if (isCancelled()) {
+ break;
+ }
+ }
+ }
+
+ private boolean installImageFromAnEntry(ZipEntry entry, InputStream is,
+ int numInstalledPartitions) throws IOException, InterruptedException {
+ String name = entry.getName();
+
+ Log.d(TAG, "ZipEntry: " + name);
+
+ if (!name.endsWith(".img")) {
+ return false;
+ }
+
+ String partitionName = name.substring(0, name.length() - 4);
+
+ if (UNSUPPORTED_PARTITIONS.contains(partitionName)) {
+ Log.d(TAG, name + " installation is not supported, skip it.");
+ return false;
+ }
+
+ long uncompressedSize = entry.getSize();
+
+ installImage(partitionName, uncompressedSize, is, numInstalledPartitions);
+
+ return true;
+ }
+
+ private void installImage(String partitionName, long uncompressedSize, InputStream is,
+ int numInstalledPartitions) throws IOException, InterruptedException {
+
+ SparseInputStream sis = new SparseInputStream(new BufferedInputStream(is));
+
+ long unsparseSize = sis.getUnsparseSize();
+
+ final long partitionSize;
+
+ if (unsparseSize != -1) {
+ partitionSize = unsparseSize;
+ Log.d(TAG, partitionName + " is sparse, raw size = " + unsparseSize);
+ } else if (uncompressedSize != -1) {
+ partitionSize = uncompressedSize;
+ Log.d(TAG, partitionName + " is already unsparse, raw size = " + uncompressedSize);
+ } else {
+ throw new IOException("Cannot get raw size for " + partitionName);
+ }
+
+ Thread thread = new Thread(() -> {
+ mInstallationSession =
+ mDynSystem.createPartition(partitionName, partitionSize, true);
+ });
+
+ Log.d(TAG, "Start creating partition: " + partitionName);
+ thread.start();
+
+ while (thread.isAlive()) {
+ if (isCancelled()) {
+ return;
+ }
+
+ Thread.sleep(10);
+ }
+
+ if (mInstallationSession == null) {
+ throw new IOException(
+ "Failed to start installation with requested size: " + partitionSize);
+ }
+
+ Log.d(TAG, "Start installing: " + partitionName);
+
+ MemoryFile memoryFile = new MemoryFile("dsu_" + partitionName, READ_BUFFER_SIZE);
+ ParcelFileDescriptor pfd = new ParcelFileDescriptor(memoryFile.getFileDescriptor());
+
+ mInstallationSession.setAshmem(pfd, READ_BUFFER_SIZE);
+
+ long installedSize = 0;
+ Progress progress = new Progress(
+ partitionName, partitionSize, installedSize, numInstalledPartitions);
+
+ byte[] bytes = new byte[READ_BUFFER_SIZE];
+ int numBytesRead;
+
+ while ((numBytesRead = sis.read(bytes, 0, READ_BUFFER_SIZE)) != -1) {
+ if (isCancelled()) {
+ return;
+ }
+
+ memoryFile.writeBytes(bytes, 0, 0, numBytesRead);
+
+ if (!mInstallationSession.submitFromAshmem(numBytesRead)) {
+ throw new IOException("Failed write() to DynamicSystem");
+ }
+
+ installedSize += numBytesRead;
+
+ if (installedSize > progress.mInstalledSize + MIN_PROGRESS_TO_PUBLISH) {
+ progress.mInstalledSize = installedSize;
+ publishProgress(progress);
+ }
}
}
@@ -218,20 +412,20 @@
mStream.close();
mStream = null;
}
+ if (mZipFile != null) {
+ mZipFile.close();
+ mZipFile = null;
+ }
} catch (IOException e) {
// ignore
}
}
- int getResult() {
- return mResult;
+ boolean isCompleted() {
+ return mIsCompleted;
}
boolean commit() {
- if (mInstallationSession == null) {
- return false;
- }
-
- return mInstallationSession.commit();
+ return mDynSystem.setEnable(true, true);
}
}
diff --git a/packages/DynamicSystemInstallationService/src/com/android/dynsystem/SparseInputStream.java b/packages/DynamicSystemInstallationService/src/com/android/dynsystem/SparseInputStream.java
new file mode 100644
index 0000000..72230b4
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/src/com/android/dynsystem/SparseInputStream.java
@@ -0,0 +1,199 @@
+/*
+ * Copyright (C) 2019 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.dynsystem;
+
+import static java.lang.Math.min;
+
+import java.io.BufferedInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+import java.util.Arrays;
+
+/**
+ * SparseInputStream read from upstream and detects the data format. If the upstream is a valid
+ * sparse data, it will unsparse it on the fly. Otherwise, it just passthrough as is.
+ */
+public class SparseInputStream extends InputStream {
+ static final int FILE_HDR_SIZE = 28;
+ static final int CHUNK_HDR_SIZE = 12;
+
+ /**
+ * This class represents a chunk in the Android sparse image.
+ *
+ * @see system/core/libsparse/sparse_format.h
+ */
+ private class SparseChunk {
+ static final short RAW = (short) 0xCAC1;
+ static final short FILL = (short) 0xCAC2;
+ static final short DONTCARE = (short) 0xCAC3;
+ public short mChunkType;
+ public int mChunkSize;
+ public int mTotalSize;
+ public byte[] fill;
+ public String toString() {
+ return String.format(
+ "type: %x, chunk_size: %d, total_size: %d", mChunkType, mChunkSize, mTotalSize);
+ }
+ }
+
+ private byte[] readFull(InputStream in, int size) throws IOException {
+ byte[] buf = new byte[size];
+ for (int done = 0, n = 0; done < size; done += n) {
+ if ((n = in.read(buf, done, size - done)) < 0) {
+ throw new IOException("Failed to readFull");
+ }
+ }
+ return buf;
+ }
+
+ private ByteBuffer readBuffer(InputStream in, int size) throws IOException {
+ return ByteBuffer.wrap(readFull(in, size)).order(ByteOrder.LITTLE_ENDIAN);
+ }
+
+ private SparseChunk readChunk(InputStream in) throws IOException {
+ SparseChunk chunk = new SparseChunk();
+ ByteBuffer buf = readBuffer(in, CHUNK_HDR_SIZE);
+ chunk.mChunkType = buf.getShort();
+ buf.getShort();
+ chunk.mChunkSize = buf.getInt();
+ chunk.mTotalSize = buf.getInt();
+ return chunk;
+ }
+
+ private BufferedInputStream mIn;
+ private boolean mIsSparse;
+ private long mBlockSize;
+ private long mTotalBlocks;
+ private long mTotalChunks;
+ private SparseChunk mCur;
+ private long mLeft;
+ private int mCurChunks;
+
+ public SparseInputStream(BufferedInputStream in) throws IOException {
+ mIn = in;
+ in.mark(FILE_HDR_SIZE * 2);
+ ByteBuffer buf = readBuffer(mIn, FILE_HDR_SIZE);
+ mIsSparse = (buf.getInt() == 0xed26ff3a);
+ if (!mIsSparse) {
+ mIn.reset();
+ return;
+ }
+ int major = buf.getShort();
+ int minor = buf.getShort();
+
+ if (major > 0x1 || minor > 0x0) {
+ throw new IOException("Unsupported sparse version: " + major + "." + minor);
+ }
+
+ if (buf.getShort() != FILE_HDR_SIZE) {
+ throw new IOException("Illegal file header size");
+ }
+ if (buf.getShort() != CHUNK_HDR_SIZE) {
+ throw new IOException("Illegal chunk header size");
+ }
+ mBlockSize = buf.getInt();
+ if ((mBlockSize & 0x3) != 0) {
+ throw new IOException("Illegal block size, must be a multiple of 4");
+ }
+ mTotalBlocks = buf.getInt();
+ mTotalChunks = buf.getInt();
+ mLeft = mCurChunks = 0;
+ }
+
+ /**
+ * Check if it needs to open a new chunk.
+ *
+ * @return true if it's EOF
+ */
+ private boolean prepareChunk() throws IOException {
+ if (mCur == null || mLeft <= 0) {
+ if (++mCurChunks > mTotalChunks) return true;
+ mCur = readChunk(mIn);
+ if (mCur.mChunkType == SparseChunk.FILL) {
+ mCur.fill = readFull(mIn, 4);
+ }
+ mLeft = mCur.mChunkSize * mBlockSize;
+ }
+ return mLeft == 0;
+ }
+
+ /**
+ * It overrides the InputStream.read(byte[] buf)
+ */
+ public int read(byte[] buf) throws IOException {
+ if (!mIsSparse) {
+ return mIn.read(buf);
+ }
+ if (prepareChunk()) return -1;
+ int n = -1;
+ switch (mCur.mChunkType) {
+ case SparseChunk.RAW:
+ n = mIn.read(buf, 0, (int) min(mLeft, buf.length));
+ mLeft -= n;
+ return n;
+ case SparseChunk.DONTCARE:
+ n = (int) min(mLeft, buf.length);
+ Arrays.fill(buf, 0, n - 1, (byte) 0);
+ mLeft -= n;
+ return n;
+ case SparseChunk.FILL:
+ // The FILL type is rarely used, so use a simple implmentation.
+ return super.read(buf);
+ default:
+ throw new IOException("Unsupported Chunk:" + mCur.toString());
+ }
+ }
+
+ /**
+ * It overrides the InputStream.read()
+ */
+ public int read() throws IOException {
+ if (!mIsSparse) {
+ return mIn.read();
+ }
+ if (prepareChunk()) return -1;
+ int ret = -1;
+ switch (mCur.mChunkType) {
+ case SparseChunk.RAW:
+ ret = mIn.read();
+ break;
+ case SparseChunk.DONTCARE:
+ ret = 0;
+ break;
+ case SparseChunk.FILL:
+ ret = mCur.fill[(4 - ((int) mLeft & 0x3)) & 0x3];
+ break;
+ default:
+ throw new IOException("Unsupported Chunk:" + mCur.toString());
+ }
+ mLeft--;
+ return ret;
+ }
+
+ /**
+ * Get the unsparse size
+ * @return -1 if unknown
+ */
+ public long getUnsparseSize() {
+ if (!mIsSparse) {
+ return -1;
+ }
+ return mBlockSize * mTotalBlocks;
+ }
+}
diff --git a/packages/ExternalStorageProvider/src/com/android/externalstorage/ExternalStorageProvider.java b/packages/ExternalStorageProvider/src/com/android/externalstorage/ExternalStorageProvider.java
index 4a50210..7b2922ba 100644
--- a/packages/ExternalStorageProvider/src/com/android/externalstorage/ExternalStorageProvider.java
+++ b/packages/ExternalStorageProvider/src/com/android/externalstorage/ExternalStorageProvider.java
@@ -50,6 +50,7 @@
import android.util.Pair;
import com.android.internal.annotations.GuardedBy;
+import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.content.FileSystemProvider;
import com.android.internal.util.IndentingPrintWriter;
@@ -308,37 +309,26 @@
@Override
protected boolean shouldBlockFromTree(@NonNull String docId) {
try {
- final File dir = getFileForDocId(docId, true /* visible */).getCanonicalFile();
- if (!dir.isDirectory()) {
+ final File dir = getFileForDocId(docId, false /* visible */);
+
+ // the file is null or it is not a directory
+ if (dir == null || !dir.isDirectory()) {
return false;
}
- final String path = dir.getAbsolutePath();
+ final String path = getPathFromDocId(docId);
- // Block Download folder from tree
- if (MediaStore.Downloads.isDownloadDir(path)) {
+ // Block the root of the storage
+ if (path.isEmpty()) {
return true;
}
- final ArrayMap<String, RootInfo> roots = new ArrayMap<>();
-
- synchronized (mRootsLock) {
- roots.putAll(mRoots);
+ // Block Download folder from tree
+ if (TextUtils.equals(Environment.DIRECTORY_DOWNLOADS.toLowerCase(),
+ path.toLowerCase())) {
+ return true;
}
- // block root of storage
- for (int i = 0; i < roots.size(); i++) {
- RootInfo rootInfo = roots.valueAt(i);
- // skip home root
- if (TextUtils.equals(rootInfo.rootId, ROOT_ID_HOME)) {
- continue;
- }
-
- // block the root of storage
- if (TextUtils.equals(path, rootInfo.visiblePath.getAbsolutePath())) {
- return true;
- }
- }
return false;
} catch (IOException e) {
throw new IllegalArgumentException(
@@ -430,6 +420,23 @@
return Pair.create(root, buildFile(root, docId, visible, true));
}
+ @VisibleForTesting
+ static String getPathFromDocId(String docId) {
+ final int splitIndex = docId.indexOf(':', 1);
+ final String path = docId.substring(splitIndex + 1);
+
+ if (path.isEmpty()) {
+ return path;
+ }
+
+ // remove trailing "/"
+ if (path.charAt(path.length() - 1) == '/') {
+ return path.substring(0, path.length() - 1);
+ } else {
+ return path;
+ }
+ }
+
private RootInfo getRootFromDocId(String docId) throws FileNotFoundException {
final int splitIndex = docId.indexOf(':', 1);
final String tag = docId.substring(0, splitIndex);
diff --git a/packages/ExternalStorageProvider/tests/src/com/android/externalstorage/ExternalStorageProviderTest.java b/packages/ExternalStorageProvider/tests/src/com/android/externalstorage/ExternalStorageProviderTest.java
index fbf2e4b..ed8320f 100644
--- a/packages/ExternalStorageProvider/tests/src/com/android/externalstorage/ExternalStorageProviderTest.java
+++ b/packages/ExternalStorageProvider/tests/src/com/android/externalstorage/ExternalStorageProviderTest.java
@@ -17,7 +17,10 @@
package com.android.externalstorage;
import static com.android.externalstorage.ExternalStorageProvider.AUTHORITY;
+import static com.android.externalstorage.ExternalStorageProvider.getPathFromDocId;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.atLeast;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
@@ -51,4 +54,18 @@
verify(spyProvider, atLeast(1)).updateVolumes();
}
+
+ @Test
+ public void testGetPathFromDocId() throws Exception {
+ final String root = "root";
+ final String path = "abc/def/ghi";
+ String docId = root + ":" + path;
+ assertEquals(getPathFromDocId(docId), path);
+
+ docId = root + ":" + path + "/";
+ assertEquals(getPathFromDocId(docId), path);
+
+ docId = root + ":";
+ assertTrue(getPathFromDocId(docId).isEmpty());
+ }
}
diff --git a/packages/SettingsLib/SearchProvider/Android.bp b/packages/SettingsLib/SearchProvider/Android.bp
new file mode 100644
index 0000000..5254dde
--- /dev/null
+++ b/packages/SettingsLib/SearchProvider/Android.bp
@@ -0,0 +1,8 @@
+android_library {
+ name: "SettingsLibSearchProvider",
+
+ srcs: ["src/**/*.java"],
+
+ sdk_version: "system_current",
+ min_sdk_version: "21",
+}
diff --git a/packages/SettingsLib/SearchProvider/AndroidManifest.xml b/packages/SettingsLib/SearchProvider/AndroidManifest.xml
new file mode 100644
index 0000000..2c06673
--- /dev/null
+++ b/packages/SettingsLib/SearchProvider/AndroidManifest.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2019 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
+ -->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.android.settingslib.search">
+
+ <uses-sdk android:minSdkVersion="21" />
+
+</manifest>
diff --git a/packages/SettingsLib/SearchProvider/src/com/android/settingslib/searchprovider/SettingsXmlIndexProvider.java b/packages/SettingsLib/SearchProvider/src/com/android/settingslib/searchprovider/SettingsXmlIndexProvider.java
new file mode 100644
index 0000000..0b711ec
--- /dev/null
+++ b/packages/SettingsLib/SearchProvider/src/com/android/settingslib/searchprovider/SettingsXmlIndexProvider.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 2019 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.searchprovider;
+
+import static android.provider.SearchIndexablesContract.INDEXABLES_XML_RES_COLUMNS;
+
+import android.content.Context;
+import android.database.Cursor;
+import android.database.MatrixCursor;
+import android.provider.SearchIndexableResource;
+import android.provider.SearchIndexablesContract.XmlResource;
+import android.provider.SearchIndexablesProvider;
+import android.text.TextUtils;
+
+import java.util.Collection;
+
+/**
+ * An abstract SearchIndexProvider using {@link SearchIndexableIntentResource} for indexing
+ */
+public abstract class SettingsXmlIndexProvider extends SearchIndexablesProvider {
+ private static final String TAG = "XmlIndexProvider";
+
+ @Override
+ public boolean onCreate() {
+ return true;
+ }
+
+ @Override
+ public Cursor queryXmlResources(String[] projection) {
+ final Context context = getContext();
+ final MatrixCursor cursor = new MatrixCursor(INDEXABLES_XML_RES_COLUMNS);
+ final Collection<SearchIndexableIntentResource> resources = getIntentResources();
+
+ for (SearchIndexableIntentResource indexableResource : resources) {
+ cursor.newRow()
+ .add(XmlResource.COLUMN_RANK, indexableResource.rank)
+ .add(XmlResource.COLUMN_XML_RESID, indexableResource.xmlResId)
+ .add(XmlResource.COLUMN_CLASS_NAME, indexableResource.className)
+ .add(XmlResource.COLUMN_INTENT_ACTION, indexableResource.intentAction)
+ .add(XmlResource.COLUMN_INTENT_TARGET_PACKAGE, context.getPackageName())
+ .add(XmlResource.COLUMN_INTENT_TARGET_CLASS,
+ indexableResource.intentTargetClass);
+ }
+ return cursor;
+ }
+
+ /**
+ * Returns all {@link android.provider.SearchIndexablesContract.RawData}.
+ *
+ * Those are the raw indexable data.
+ *
+ * @param projection list of {@link android.provider.SearchIndexablesContract.RawData} columns
+ * to put into the cursor. If {@code null} all supported columns should be
+ * included.
+ */
+ public Cursor queryRawData(String[] projection) {
+ return null;
+ }
+
+ /**
+ * Returns all {@link android.provider.SearchIndexablesContract.NonIndexableKey}.
+ *
+ * Those are the non indexable data keys.
+ *
+ * @param projection list of {@link android.provider.SearchIndexablesContract.NonIndexableKey}
+ * columns to put into the cursor. If {@code null} all supported columns
+ * should be included.
+ */
+ public Cursor queryNonIndexableKeys(String[] projection) {
+ return null;
+ }
+
+ /**
+ * Returns a Collection of {@link SearchIndexableIntentResource} that should be indexed for
+ * search.
+ */
+ protected abstract Collection<SearchIndexableIntentResource> getIntentResources();
+
+ /**
+ * Wrapper class of {@link SearchIndexableResource}. It is for setting the search indexable
+ * resource of corresponding XML and intent action with class.
+ */
+ public static final class SearchIndexableIntentResource extends SearchIndexableResource {
+ /**
+ * Constructor of {@link SearchIndexableIntentResource}.
+ *
+ * @param xmlResId preference xml of target {@link prefereceFragment}
+ * @param intentAction the intent to open target {@link Activity}
+ * @param className the target {@link Activity} class name
+ */
+ public SearchIndexableIntentResource(int xmlResId, String intentAction,
+ String className) {
+ super(
+ 0 /* rank */,
+ xmlResId,
+ className,
+ 0 /* icon resource id */);
+ if (TextUtils.isEmpty(intentAction)) {
+ this.intentAction = "android.intent.action.MAIN";
+ } else {
+ this.intentAction = intentAction;
+ }
+ this.intentTargetClass = className;
+ }
+ }
+}
diff --git a/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/ActivityTile.java b/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/ActivityTile.java
index 8cd33a5..b739ee6 100644
--- a/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/ActivityTile.java
+++ b/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/ActivityTile.java
@@ -18,6 +18,7 @@
import android.content.Context;
import android.content.Intent;
+import android.content.pm.ActivityInfo;
import android.content.pm.ComponentInfo;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
@@ -33,7 +34,7 @@
public class ActivityTile extends Tile {
private static final String TAG = "ActivityTile";
- public ActivityTile(ComponentInfo info, String category) {
+ public ActivityTile(ActivityInfo info, String category) {
super(info, category);
setMetaData(info.metaData);
}
diff --git a/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/MasterSwitchController.java b/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/MasterSwitchController.java
new file mode 100644
index 0000000..a12aa83
--- /dev/null
+++ b/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/MasterSwitchController.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2019 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.drawer;
+
+import android.os.Bundle;
+
+/**
+ * A controller that manages event for master switch.
+ */
+public abstract class MasterSwitchController extends SwitchController {
+
+ @Override
+ protected final MetaData getMetaData() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ final Bundle getBundle() {
+ throw new UnsupportedOperationException();
+ }
+}
diff --git a/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/ProviderTile.java b/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/ProviderTile.java
index b2ba5de..312d30e 100644
--- a/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/ProviderTile.java
+++ b/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/ProviderTile.java
@@ -42,10 +42,10 @@
private String mAuthority;
private String mKey;
- public ProviderTile(ComponentInfo info, String category, Bundle metaData) {
+ public ProviderTile(ProviderInfo info, String category, Bundle metaData) {
super(info, category);
setMetaData(metaData);
- mAuthority = ((ProviderInfo) info).authority;
+ mAuthority = info.authority;
mKey = metaData.getString(META_DATA_PREFERENCE_KEYHINT);
}
diff --git a/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/SwitchController.java b/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/SwitchController.java
index e48da86..23669b2 100644
--- a/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/SwitchController.java
+++ b/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/SwitchController.java
@@ -108,7 +108,7 @@
Bundle getBundle() {
final MetaData metaData = getMetaData();
if (metaData == null) {
- throw new IllegalArgumentException("Should not return null in getMetaData()");
+ throw new NullPointerException("Should not return null in getMetaData()");
}
final Bundle bundle = metaData.build();
diff --git a/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/SwitchesProvider.java b/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/SwitchesProvider.java
index a05c7d5..73f1a90 100644
--- a/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/SwitchesProvider.java
+++ b/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/SwitchesProvider.java
@@ -55,7 +55,7 @@
private String mAuthority;
private final Map<String, SwitchController> mControllerMap = new LinkedHashMap<>();
- private final List<Bundle> mSwitchList = new ArrayList<>();
+ private final List<Bundle> mSwitchDataList = new ArrayList<>();
/**
* Get a list of {@link SwitchController} for this provider.
@@ -88,7 +88,9 @@
controller.setAuthority(mAuthority);
mControllerMap.put(key, controller);
- mSwitchList.add(controller.getBundle());
+ if (!(controller instanceof MasterSwitchController)) {
+ mSwitchDataList.add(controller.getBundle());
+ }
});
return true;
}
@@ -101,7 +103,7 @@
: null;
if (TextUtils.isEmpty(key)) {
if (METHOD_GET_SWITCH_DATA.equals(method)) {
- bundle.putParcelableList(EXTRA_SWITCH_DATA, mSwitchList);
+ bundle.putParcelableList(EXTRA_SWITCH_DATA, mSwitchDataList);
return bundle;
}
return null;
@@ -114,7 +116,10 @@
switch (method) {
case METHOD_GET_SWITCH_DATA:
- return controller.getBundle();
+ if (!(controller instanceof MasterSwitchController)) {
+ return controller.getBundle();
+ }
+ break;
case METHOD_GET_PROVIDER_ICON:
if (controller instanceof ProviderIcon) {
return ((ProviderIcon) controller).getProviderIcon();
diff --git a/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/TileUtils.java b/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/TileUtils.java
index 71ffff7..f93faeb 100644
--- a/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/TileUtils.java
+++ b/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/TileUtils.java
@@ -244,15 +244,15 @@
// TODO: Needs much optimization, too many PM queries going on here.
if (user.getIdentifier() == ActivityManager.getCurrentUser()) {
// Only add Settings for this user.
- getTilesForAction(context, user, SETTINGS_ACTION, cache, null, tiles, true);
- getTilesForAction(context, user, OPERATOR_SETTINGS, cache,
+ loadTilesForAction(context, user, SETTINGS_ACTION, cache, null, tiles, true);
+ loadTilesForAction(context, user, OPERATOR_SETTINGS, cache,
OPERATOR_DEFAULT_CATEGORY, tiles, false);
- getTilesForAction(context, user, MANUFACTURER_SETTINGS, cache,
+ loadTilesForAction(context, user, MANUFACTURER_SETTINGS, cache,
MANUFACTURER_DEFAULT_CATEGORY, tiles, false);
}
if (setup) {
- getTilesForAction(context, user, EXTRA_SETTINGS_ACTION, cache, null, tiles, false);
- getTilesForAction(context, user, IA_SETTINGS_ACTION, cache, null, tiles, false);
+ loadTilesForAction(context, user, EXTRA_SETTINGS_ACTION, cache, null, tiles, false);
+ loadTilesForAction(context, user, IA_SETTINGS_ACTION, cache, null, tiles, false);
}
}
@@ -284,18 +284,18 @@
}
@VisibleForTesting
- static void getTilesForAction(Context context,
+ static void loadTilesForAction(Context context,
UserHandle user, String action, Map<Pair<String, String>, Tile> addedCache,
String defaultCategory, List<Tile> outTiles, boolean requireSettings) {
final Intent intent = new Intent(action);
if (requireSettings) {
intent.setPackage(SETTING_PKG);
}
- getActivityTiles(context, user, addedCache, defaultCategory, outTiles, intent);
- getProviderTiles(context, user, addedCache, defaultCategory, outTiles, intent);
+ loadActivityTiles(context, user, addedCache, defaultCategory, outTiles, intent);
+ loadProviderTiles(context, user, addedCache, defaultCategory, outTiles, intent);
}
- private static void getActivityTiles(Context context,
+ private static void loadActivityTiles(Context context,
UserHandle user, Map<Pair<String, String>, Tile> addedCache,
String defaultCategory, List<Tile> outTiles, Intent intent) {
final PackageManager pm = context.getPackageManager();
@@ -308,11 +308,11 @@
}
final ActivityInfo activityInfo = resolved.activityInfo;
final Bundle metaData = activityInfo.metaData;
- getTile(user, addedCache, defaultCategory, outTiles, intent, metaData, activityInfo);
+ loadTile(user, addedCache, defaultCategory, outTiles, intent, metaData, activityInfo);
}
}
- private static void getProviderTiles(Context context,
+ private static void loadProviderTiles(Context context,
UserHandle user, Map<Pair<String, String>, Tile> addedCache,
String defaultCategory, List<Tile> outTiles, Intent intent) {
final PackageManager pm = context.getPackageManager();
@@ -330,13 +330,13 @@
continue;
}
for (Bundle metaData : switchData) {
- getTile(user, addedCache, defaultCategory, outTiles, intent, metaData,
+ loadTile(user, addedCache, defaultCategory, outTiles, intent, metaData,
providerInfo);
}
}
}
- private static void getTile(UserHandle user, Map<Pair<String, String>, Tile> addedCache,
+ private static void loadTile(UserHandle user, Map<Pair<String, String>, Tile> addedCache,
String defaultCategory, List<Tile> outTiles, Intent intent, Bundle metaData,
ComponentInfo componentInfo) {
String categoryKey = defaultCategory;
@@ -359,8 +359,8 @@
Tile tile = addedCache.get(key);
if (tile == null) {
tile = isProvider
- ? new ProviderTile(componentInfo, categoryKey, metaData)
- : new ActivityTile(componentInfo, categoryKey);
+ ? new ProviderTile((ProviderInfo) componentInfo, categoryKey, metaData)
+ : new ActivityTile((ActivityInfo) componentInfo, categoryKey);
addedCache.put(key, tile);
} else {
tile.setMetaData(metaData);
@@ -516,7 +516,7 @@
* @param value Boolean associated with the key
* @return Bundle associated with the action, if returned by the content provider
*/
- public static Bundle putBooleanToUri(Context context, Uri uri,
+ public static Bundle putBooleanToUriAndGetResult(Context context, Uri uri,
Map<String, IContentProvider> providerMap, String key, boolean value) {
final Bundle bundle = new Bundle();
bundle.putBoolean(key, value);
diff --git a/packages/SettingsLib/src/com/android/settingslib/RestrictedLockUtilsInternal.java b/packages/SettingsLib/src/com/android/settingslib/RestrictedLockUtilsInternal.java
index 9672fea..9f16d03 100644
--- a/packages/SettingsLib/src/com/android/settingslib/RestrictedLockUtilsInternal.java
+++ b/packages/SettingsLib/src/com/android/settingslib/RestrictedLockUtilsInternal.java
@@ -408,23 +408,6 @@
}
/**
- * Checks if {@link android.app.admin.DevicePolicyManager#setAutoTimeRequired} is enforced
- * on the device.
- *
- * @return EnforcedAdmin Object containing the device owner component and
- * userId the device owner is running as, or {@code null} setAutoTimeRequired is not enforced.
- */
- public static EnforcedAdmin checkIfAutoTimeRequired(Context context) {
- DevicePolicyManager dpm = (DevicePolicyManager) context.getSystemService(
- Context.DEVICE_POLICY_SERVICE);
- if (dpm == null || !dpm.getAutoTimeRequired()) {
- return null;
- }
- ComponentName adminComponent = dpm.getDeviceOwnerComponentOnCallingUser();
- return new EnforcedAdmin(adminComponent, getUserHandleOf(UserHandle.myUserId()));
- }
-
- /**
* Checks if an admin has enforced minimum password quality requirements on the given user.
*
* @return EnforcedAdmin Object containing the enforced admin component and admin user details,
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java
index 0095692..833c4ac 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java
@@ -241,9 +241,7 @@
public void disconnect() {
synchronized (mProfileLock) {
- for (LocalBluetoothProfile profile : mProfiles) {
- disconnect(profile);
- }
+ mLocalAdapter.disconnectAllEnabledProfiles(mDevice);
}
// Disconnect PBAP server in case its connected
// This is to ensure all the profiles are disconnected as some CK/Hs do not
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 1c62879..0a1a122 100644
--- a/packages/SettingsLib/src/com/android/settingslib/core/instrumentation/VisibilityLoggerMixin.java
+++ b/packages/SettingsLib/src/com/android/settingslib/core/instrumentation/VisibilityLoggerMixin.java
@@ -76,6 +76,19 @@
}
/**
+ * Logs the elapsed time from onAttach to calling {@link #writeElapsedTimeMetric(int, String)}.
+ * @param action : The value of the Action Enums.
+ * @param key : The value of special key string.
+ */
+ public void writeElapsedTimeMetric(int action, String key) {
+ if (mMetricsFeature == null || mMetricsCategory == METRICS_CATEGORY_UNKNOWN) {
+ return;
+ }
+ final int elapse = (int) (SystemClock.elapsedRealtime() - mTimestamp);
+ mMetricsFeature.action(METRICS_CATEGORY_UNKNOWN, action, mMetricsCategory, key, elapse);
+ }
+
+ /**
* Sets source metrics category for this logger. Source is the caller that opened this UI.
*/
public void setSourceMetricsCategory(Activity activity) {
diff --git a/packages/SettingsLib/src/com/android/settingslib/graph/SignalDrawable.java b/packages/SettingsLib/src/com/android/settingslib/graph/SignalDrawable.java
index 5ac788e..3b41fa9 100644
--- a/packages/SettingsLib/src/com/android/settingslib/graph/SignalDrawable.java
+++ b/packages/SettingsLib/src/com/android/settingslib/graph/SignalDrawable.java
@@ -32,7 +32,7 @@
import android.graphics.Rect;
import android.graphics.drawable.DrawableWrapper;
import android.os.Handler;
-import android.telephony.SignalStrength;
+import android.telephony.CellSignalStrength;
import android.util.LayoutDirection;
import android.util.PathParser;
@@ -145,7 +145,7 @@
private int unpackLevel(int packedState) {
int numBins = (packedState & NUM_LEVEL_MASK) >> NUM_LEVEL_SHIFT;
- int levelOffset = numBins == (SignalStrength.NUM_SIGNAL_STRENGTH_BINS + 1) ? 10 : 0;
+ int levelOffset = numBins == (CellSignalStrength.getNumSignalStrengthLevels() + 1) ? 10 : 0;
int level = (packedState & LEVEL_MASK);
return level + levelOffset;
}
diff --git a/packages/SettingsLib/src/com/android/settingslib/notification/EnableZenModeDialog.java b/packages/SettingsLib/src/com/android/settingslib/notification/EnableZenModeDialog.java
index f14def1..653c8ad 100644
--- a/packages/SettingsLib/src/com/android/settingslib/notification/EnableZenModeDialog.java
+++ b/packages/SettingsLib/src/com/android/settingslib/notification/EnableZenModeDialog.java
@@ -328,7 +328,6 @@
boolean enabled, int rowId, Uri conditionId) {
if (tag.lines == null) {
tag.lines = row.findViewById(android.R.id.content);
- tag.lines.setAccessibilityLiveRegion(View.ACCESSIBILITY_LIVE_REGION_POLITE);
}
if (tag.line1 == null) {
tag.line1 = (TextView) row.findViewById(android.R.id.text1);
@@ -364,6 +363,7 @@
@Override
public void onClick(View v) {
onClickTimeButton(row, tag, false /*down*/, rowId);
+ tag.lines.setAccessibilityLiveRegion(View.ACCESSIBILITY_LIVE_REGION_POLITE);
}
});
@@ -373,6 +373,7 @@
@Override
public void onClick(View v) {
onClickTimeButton(row, tag, true /*up*/, rowId);
+ tag.lines.setAccessibilityLiveRegion(View.ACCESSIBILITY_LIVE_REGION_POLITE);
}
});
diff --git a/packages/SettingsLib/src/com/android/settingslib/notification/ZenDurationDialog.java b/packages/SettingsLib/src/com/android/settingslib/notification/ZenDurationDialog.java
index 66ee802..01a5789 100644
--- a/packages/SettingsLib/src/com/android/settingslib/notification/ZenDurationDialog.java
+++ b/packages/SettingsLib/src/com/android/settingslib/notification/ZenDurationDialog.java
@@ -234,6 +234,7 @@
@Override
public void onClick(View v) {
onClickTimeButton(row, tag, false /*down*/, rowIndex);
+ tag.lines.setAccessibilityLiveRegion(View.ACCESSIBILITY_LIVE_REGION_POLITE);
}
});
@@ -243,6 +244,7 @@
@Override
public void onClick(View v) {
onClickTimeButton(row, tag, true /*up*/, rowIndex);
+ tag.lines.setAccessibilityLiveRegion(View.ACCESSIBILITY_LIVE_REGION_POLITE);
}
});
diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java
index d577b5a..b0bdf1d 100644
--- a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java
+++ b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java
@@ -33,7 +33,6 @@
import android.net.NetworkScoreManager;
import android.net.NetworkScorerAppData;
import android.net.ScoredNetwork;
-import android.net.wifi.IWifiManager;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiConfiguration.KeyMgmt;
@@ -47,7 +46,6 @@
import android.os.Bundle;
import android.os.Parcelable;
import android.os.RemoteException;
-import android.os.ServiceManager;
import android.os.SystemClock;
import android.os.UserHandle;
import android.provider.Settings;
@@ -1098,16 +1096,12 @@
summary.append(mContext.getString(R.string.wifi_check_password_try_again));
break;
case WifiConfiguration.NetworkSelectionStatus.DISABLED_DHCP_FAILURE:
- case WifiConfiguration.NetworkSelectionStatus.DISABLED_DNS_FAILURE:
summary.append(mContext.getString(R.string.wifi_disabled_network_failure));
break;
case WifiConfiguration.NetworkSelectionStatus.DISABLED_ASSOCIATION_REJECTION:
summary.append(mContext.getString(R.string.wifi_disabled_generic));
break;
}
- } else if (mConfig != null && mConfig.getNetworkSelectionStatus().isNotRecommended()) {
- summary.append(mContext.getString(
- R.string.wifi_disabled_by_recommendation_provider));
} else if (mIsCarrierAp) {
summary.append(String.format(mContext.getString(
R.string.available_via_carrier), mCarrierName));
@@ -1616,13 +1610,8 @@
final ConnectivityManager cm = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (state == DetailedState.CONNECTED) {
- IWifiManager wifiManager = IWifiManager.Stub.asInterface(
- ServiceManager.getService(Context.WIFI_SERVICE));
- NetworkCapabilities nc = null;
-
- try {
- nc = cm.getNetworkCapabilities(wifiManager.getCurrentNetwork());
- } catch (RemoteException e) {}
+ WifiManager wifiManager = context.getSystemService(WifiManager.class);
+ NetworkCapabilities nc = cm.getNetworkCapabilities(wifiManager.getCurrentNetwork());
if (nc != null) {
if (nc.hasCapability(nc.NET_CAPABILITY_CAPTIVE_PORTAL)) {
diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java
index 97fddc0..23b16e8 100644
--- a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java
+++ b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java
@@ -224,9 +224,7 @@
mConnectivityManager = connectivityManager;
// check if verbose logging developer option has been turned on or off
- sVerboseLogging = Settings.Global.getInt(
- mContext.getContentResolver(),
- Settings.Global.WIFI_VERBOSE_LOGGING_ENABLED, 0) > 0;
+ sVerboseLogging = mWifiManager != null && (mWifiManager.getVerboseLoggingLevel() > 0);
mFilter = filter;
@@ -518,8 +516,7 @@
int networkId, final List<WifiConfiguration> configs) {
if (configs != null) {
for (WifiConfiguration config : configs) {
- if (mLastInfo != null && networkId == config.networkId &&
- !(config.selfAdded && config.numAssociation == 0)) {
+ if (mLastInfo != null && networkId == config.networkId) {
return config;
}
}
diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiUtils.java b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiUtils.java
index ee89738..b93b000 100644
--- a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiUtils.java
+++ b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiUtils.java
@@ -30,6 +30,8 @@
public class WifiUtils {
+ private static final int INVALID_RSSI = -127;
+
public static String buildLoggingSummary(AccessPoint accessPoint, WifiConfiguration config) {
final StringBuilder summary = new StringBuilder();
final WifiInfo info = accessPoint.getInfo();
@@ -106,8 +108,8 @@
visibility.append(String.format("rx=%.1f", info.getRxSuccessRate()));
}
- int maxRssi5 = WifiConfiguration.INVALID_RSSI;
- int maxRssi24 = WifiConfiguration.INVALID_RSSI;
+ int maxRssi5 = INVALID_RSSI;
+ int maxRssi24 = INVALID_RSSI;
final int maxDisplayedScans = 4;
int num5 = 0; // number of scanned BSSID on 5GHz band
int num24 = 0; // number of scanned BSSID on 2.4Ghz band
diff --git a/packages/SettingsLib/tests/integ/src/com/android/settingslib/wifi/AccessPointTest.java b/packages/SettingsLib/tests/integ/src/com/android/settingslib/wifi/AccessPointTest.java
index 7139a4f..7b1c382 100644
--- a/packages/SettingsLib/tests/integ/src/com/android/settingslib/wifi/AccessPointTest.java
+++ b/packages/SettingsLib/tests/integ/src/com/android/settingslib/wifi/AccessPointTest.java
@@ -120,7 +120,7 @@
private OsuProvider createOsuProvider() {
Map<String, String> friendlyNames = new HashMap<>();
friendlyNames.put("en", OSU_FRIENDLY_NAME);
- return new OsuProvider((WifiSsid) null, friendlyNames, null, null, null, null, null);
+ return new OsuProvider((WifiSsid) null, friendlyNames, null, null, null, null);
}
@Before
@@ -459,10 +459,11 @@
@Test
public void testSummaryString_showsWrongPasswordLabel() {
- WifiConfiguration configuration = createWifiConfiguration();
- configuration.getNetworkSelectionStatus().setNetworkSelectionStatus(
- WifiConfiguration.NetworkSelectionStatus.NETWORK_SELECTION_PERMANENTLY_DISABLED);
- configuration.getNetworkSelectionStatus().setNetworkSelectionDisableReason(
+ WifiConfiguration configuration = spy(createWifiConfiguration());
+ WifiConfiguration.NetworkSelectionStatus status =
+ mock(WifiConfiguration.NetworkSelectionStatus.class);
+ when(configuration.getNetworkSelectionStatus()).thenReturn(status);
+ when(status.getNetworkSelectionDisableReason()).thenReturn(
WifiConfiguration.NetworkSelectionStatus.DISABLED_BY_WRONG_PASSWORD);
AccessPoint ap = new AccessPoint(mContext, configuration);
diff --git a/packages/SettingsLib/tests/integ/src/com/android/settingslib/wifi/WifiTrackerTest.java b/packages/SettingsLib/tests/integ/src/com/android/settingslib/wifi/WifiTrackerTest.java
index 37fdc34..81cf118 100644
--- a/packages/SettingsLib/tests/integ/src/com/android/settingslib/wifi/WifiTrackerTest.java
+++ b/packages/SettingsLib/tests/integ/src/com/android/settingslib/wifi/WifiTrackerTest.java
@@ -336,7 +336,7 @@
private static OsuProvider buildOsuProvider(String friendlyName) {
Map<String, String> friendlyNames = new HashMap<>();
friendlyNames.put("en", friendlyName);
- return new OsuProvider((WifiSsid) null, friendlyNames, null, null, null, null, null);
+ return new OsuProvider((WifiSsid) null, friendlyNames, null, null, null, null);
}
private WifiTracker createTrackerWithImmediateBroadcastsAndInjectInitialScanResults(
@@ -494,7 +494,6 @@
WifiConfiguration selfAddedNoAssociation = new WifiConfiguration();
selfAddedNoAssociation.ephemeral = true;
- selfAddedNoAssociation.selfAdded = true;
selfAddedNoAssociation.numAssociation = 0;
selfAddedNoAssociation.SSID = SSID_2;
selfAddedNoAssociation.BSSID = BSSID_2;
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/MasterSwitchControllerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/MasterSwitchControllerTest.java
new file mode 100644
index 0000000..69d0f2e
--- /dev/null
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/MasterSwitchControllerTest.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) 2019 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.drawer;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import org.junit.runner.RunWith;
+import org.robolectric.RobolectricTestRunner;
+
+@RunWith(RobolectricTestRunner.class)
+public class MasterSwitchControllerTest {
+
+ @Rule
+ public final ExpectedException thrown = ExpectedException.none();
+
+ private MasterSwitchController mController;
+
+ @Before
+ public void setUp() {
+ mController = new TestMasterSwitchController("123");
+ }
+
+ @Test
+ public void getMetaData_shouldThrowUnsupportedOperationException() {
+ thrown.expect(UnsupportedOperationException.class);
+
+ mController.getMetaData();
+ }
+
+ @Test
+ public void getBundle_shouldThrowUnsupportedOperationException() {
+ thrown.expect(UnsupportedOperationException.class);
+
+ mController.getBundle();
+ }
+
+ static class TestMasterSwitchController extends MasterSwitchController {
+
+ private String mKey;
+
+ TestMasterSwitchController(String key) {
+ mKey = key;
+ }
+
+ @Override
+ public String getSwitchKey() {
+ return mKey;
+ }
+
+ @Override
+ protected boolean isChecked() {
+ return true;
+ }
+
+ @Override
+ protected boolean onCheckedChanged(boolean checked) {
+ return true;
+ }
+
+ @Override
+ protected String getErrorMessage(boolean attemptedChecked) {
+ return null;
+ }
+ }
+}
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/SwitchesProviderTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/SwitchesProviderTest.java
index 27b3697..a740e68 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/SwitchesProviderTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/SwitchesProviderTest.java
@@ -35,6 +35,7 @@
import android.content.pm.ProviderInfo;
import android.os.Bundle;
+import com.android.settingslib.drawer.MasterSwitchControllerTest.TestMasterSwitchController;
import com.android.settingslib.drawer.SwitchController.MetaData;
import org.junit.Before;
@@ -84,8 +85,8 @@
}
@Test
- public void attachInfo_NoMetaDataInController_shouldThrowIllegalArgumentException() {
- thrown.expect(IllegalArgumentException.class);
+ public void attachInfo_NoMetaDataInController_shouldThrowNullPointerException() {
+ thrown.expect(NullPointerException.class);
final TestSwitchController controller = new TestSwitchController();
controller.setKey("123");
mSwitchesProvider.addSwitchController(controller);
@@ -123,6 +124,19 @@
}
@Test
+ public void getSwitchData_shouldNotReturnMasterSwitchData() {
+ final SwitchController controller = new TestMasterSwitchController("123");
+ mSwitchesProvider.addSwitchController(controller);
+ mSwitchesProvider.attachInfo(mContext, mProviderInfo);
+
+ final Bundle switchData = mSwitchesProvider.call(METHOD_GET_SWITCH_DATA, "uri" ,
+ null /* extras*/);
+
+ final ArrayList<Bundle> dataList = switchData.getParcelableArrayList(EXTRA_SWITCH_DATA);
+ assertThat(dataList).isEmpty();
+ }
+
+ @Test
public void getSwitchData_shouldReturnDataList() {
final TestSwitchController controller = new TestSwitchController();
controller.setKey("123");
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 b36eb49..9b4b97e 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
@@ -113,7 +113,7 @@
when(mPackageManager.queryIntentContentProvidersAsUser(any(Intent.class), anyInt(),
anyInt())).thenReturn(info);
- TileUtils.getTilesForAction(mContext, UserHandle.CURRENT, IA_SETTINGS_ACTION, addedCache,
+ TileUtils.loadTilesForAction(mContext, UserHandle.CURRENT, IA_SETTINGS_ACTION, addedCache,
null /* defaultCategory */, outTiles, false /* usePriority */);
assertThat(outTiles).hasSize(2);
@@ -135,7 +135,7 @@
when(mPackageManager.queryIntentContentProvidersAsUser(any(Intent.class), anyInt(),
anyInt())).thenReturn(info);
- TileUtils.getTilesForAction(mContext, UserHandle.CURRENT, IA_SETTINGS_ACTION, addedCache,
+ TileUtils.loadTilesForAction(mContext, UserHandle.CURRENT, IA_SETTINGS_ACTION, addedCache,
null /* defaultCategory */, outTiles, false /* requiresSettings */);
assertThat(outTiles).hasSize(2);
@@ -156,7 +156,7 @@
when(mPackageManager.queryIntentContentProvidersAsUser(any(Intent.class), anyInt(),
anyInt())).thenReturn(info);
- TileUtils.getTilesForAction(mContext, UserHandle.CURRENT, IA_SETTINGS_ACTION,
+ TileUtils.loadTilesForAction(mContext, UserHandle.CURRENT, IA_SETTINGS_ACTION,
addedCache, null /* defaultCategory */, outTiles, false /* requiresSettings */);
assertThat(outTiles).isEmpty();
@@ -197,7 +197,7 @@
when(mPackageManager.queryIntentContentProvidersAsUser(any(Intent.class), anyInt(),
anyInt())).thenReturn(info);
- TileUtils.getTilesForAction(mContext, UserHandle.CURRENT, IA_SETTINGS_ACTION, addedCache,
+ TileUtils.loadTilesForAction(mContext, UserHandle.CURRENT, IA_SETTINGS_ACTION, addedCache,
null /* defaultCategory */, outTiles, false /* usePriority */);
assertThat(outTiles).hasSize(2);
@@ -222,7 +222,7 @@
when(mResources.getString(eq(123)))
.thenReturn("my localized title");
- TileUtils.getTilesForAction(mContext, UserHandle.CURRENT, IA_SETTINGS_ACTION, addedCache,
+ TileUtils.loadTilesForAction(mContext, UserHandle.CURRENT, IA_SETTINGS_ACTION, addedCache,
null /* defaultCategory */, outTiles, false /* usePriority */);
assertThat(outTiles).hasSize(2);
assertThat(outTiles.get(0).getTitle(mContext)).isEqualTo("my localized title");
@@ -245,7 +245,7 @@
when(mPackageManager.queryIntentContentProvidersAsUser(any(Intent.class), anyInt(),
anyInt())).thenReturn(info);
- TileUtils.getTilesForAction(mContext, UserHandle.CURRENT, IA_SETTINGS_ACTION, addedCache,
+ TileUtils.loadTilesForAction(mContext, UserHandle.CURRENT, IA_SETTINGS_ACTION, addedCache,
null /* defaultCategory */, outTiles, false /* usePriority */);
assertThat(outTiles.get(0).isIconTintable(mContext)).isFalse();
@@ -266,7 +266,7 @@
when(mPackageManager.queryIntentActivitiesAsUser(any(Intent.class), anyInt(), anyInt()))
.thenReturn(info);
- TileUtils.getTilesForAction(mContext, UserHandle.CURRENT, IA_SETTINGS_ACTION, addedCache,
+ TileUtils.loadTilesForAction(mContext, UserHandle.CURRENT, IA_SETTINGS_ACTION, addedCache,
null /* defaultCategory */, outTiles, false /* usePriority */);
assertThat(outTiles).hasSize(1);
@@ -276,7 +276,7 @@
resolveInfo.activityInfo.metaData.putInt(META_DATA_PREFERENCE_ICON,
com.android.internal.R.drawable.ic_phone);
outTiles.clear();
- TileUtils.getTilesForAction(mContext, UserHandle.CURRENT, IA_SETTINGS_ACTION, addedCache,
+ TileUtils.loadTilesForAction(mContext, UserHandle.CURRENT, IA_SETTINGS_ACTION, addedCache,
null /* defaultCategory */, outTiles, false /* usePriority */);
assertThat(outTiles).hasSize(1);
@@ -300,7 +300,7 @@
when(mPackageManager.queryIntentContentProvidersAsUser(any(Intent.class), anyInt(),
anyInt())).thenReturn(info);
- TileUtils.getTilesForAction(mContext, UserHandle.CURRENT, IA_SETTINGS_ACTION, addedCache,
+ TileUtils.loadTilesForAction(mContext, UserHandle.CURRENT, IA_SETTINGS_ACTION, addedCache,
null /* defaultCategory */, outTiles, false /* usePriority */);
assertThat(outTiles.get(0).isIconTintable(mContext)).isTrue();
@@ -321,7 +321,7 @@
when(mPackageManager.queryIntentContentProvidersAsUser(any(Intent.class), anyInt(),
anyInt())).thenReturn(info);
- TileUtils.getTilesForAction(mContext, UserHandle.CURRENT, IA_SETTINGS_ACTION, addedCache,
+ TileUtils.loadTilesForAction(mContext, UserHandle.CURRENT, IA_SETTINGS_ACTION, addedCache,
null /* defaultCategory */, outTiles, false /* usePriority */);
assertThat(outTiles).hasSize(2);
diff --git a/packages/SettingsProvider/res/values/defaults.xml b/packages/SettingsProvider/res/values/defaults.xml
index 05246a4..21b3ba3 100644
--- a/packages/SettingsProvider/res/values/defaults.xml
+++ b/packages/SettingsProvider/res/values/defaults.xml
@@ -39,7 +39,6 @@
<bool name="def_bluetooth_on">true</bool>
<bool name="def_wifi_display_on">false</bool>
<bool name="def_install_non_market_apps">false</bool>
- <bool name="def_package_verifier_enable">true</bool>
<!-- 0 == off, 3 == on -->
<integer name="def_location_mode">3</integer>
<bool name="assisted_gps_enabled">true</bool>
diff --git a/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java b/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java
index 146f30d..3b929b9 100644
--- a/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java
+++ b/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java
@@ -126,6 +126,7 @@
Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS,
Settings.Secure.LOCK_SCREEN_SHOW_SILENT_NOTIFICATIONS,
Settings.Secure.SHOW_NOTIFICATION_SNOOZE,
+ Settings.Secure.NOTIFICATION_HISTORY_ENABLED,
Settings.Secure.ZEN_DURATION,
Settings.Secure.SHOW_ZEN_UPGRADE_NOTIFICATION,
Settings.Secure.SHOW_ZEN_SETTINGS_SUGGESTION,
diff --git a/packages/SettingsProvider/src/android/provider/settings/validators/AccessibilityShortcutTargetListValidator.java b/packages/SettingsProvider/src/android/provider/settings/validators/AccessibilityShortcutTargetListValidator.java
new file mode 100644
index 0000000..5f3d7f1
--- /dev/null
+++ b/packages/SettingsProvider/src/android/provider/settings/validators/AccessibilityShortcutTargetListValidator.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2019 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.provider.settings.validators;
+
+import static android.provider.settings.validators.SettingsValidators.COMPONENT_NAME_VALIDATOR;
+import static android.provider.settings.validators.SettingsValidators.PACKAGE_NAME_VALIDATOR;
+
+import android.text.TextUtils;
+
+/**
+ * Ensure a restored value is a string in the format the accessibility shortcut system handles
+ *
+ * @hide
+ */
+public final class AccessibilityShortcutTargetListValidator extends ListValidator {
+ public AccessibilityShortcutTargetListValidator() {
+ super(":");
+ }
+
+ @Override
+ protected boolean isEntryValid(String entry) {
+ return !TextUtils.isEmpty(entry);
+ }
+
+ @Override
+ protected boolean isItemValid(String item) {
+ if (TextUtils.isEmpty(item)) {
+ return false;
+ }
+ return (COMPONENT_NAME_VALIDATOR.validate(item) || PACKAGE_NAME_VALIDATOR.validate(item));
+ }
+}
diff --git a/packages/SettingsProvider/src/android/provider/settings/validators/ListValidator.java b/packages/SettingsProvider/src/android/provider/settings/validators/ListValidator.java
index a6001d2..104fa11 100644
--- a/packages/SettingsProvider/src/android/provider/settings/validators/ListValidator.java
+++ b/packages/SettingsProvider/src/android/provider/settings/validators/ListValidator.java
@@ -35,7 +35,7 @@
if (!isEntryValid(value)) {
return false;
}
- String[] items = value.split(",");
+ String[] items = value.split(mListSplitRegex);
for (String item : items) {
if (!isItemValid(item)) {
return false;
diff --git a/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java b/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java
index 0c3254a..090af98 100644
--- a/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java
+++ b/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java
@@ -16,6 +16,7 @@
package android.provider.settings.validators;
+import static android.provider.settings.validators.SettingsValidators.ACCESSIBILITY_SHORTCUT_TARGET_LIST_VALIDATOR;
import static android.provider.settings.validators.SettingsValidators.ANY_INTEGER_VALIDATOR;
import static android.provider.settings.validators.SettingsValidators.BOOLEAN_VALIDATOR;
import static android.provider.settings.validators.SettingsValidators.COLON_SEPARATED_COMPONENT_LIST_VALIDATOR;
@@ -71,10 +72,13 @@
VALIDATORS.put(Secure.TOUCH_EXPLORATION_ENABLED, BOOLEAN_VALIDATOR);
VALIDATORS.put(Secure.ACCESSIBILITY_ENABLED, BOOLEAN_VALIDATOR);
VALIDATORS.put(
- Secure.ACCESSIBILITY_SHORTCUT_TARGET_SERVICE, NULLABLE_COMPONENT_NAME_VALIDATOR);
+ Secure.ACCESSIBILITY_SHORTCUT_TARGET_SERVICE,
+ ACCESSIBILITY_SHORTCUT_TARGET_LIST_VALIDATOR);
// technically either ComponentName or class name, but there's proper value
// validation at callsites, so allow any non-null string
- VALIDATORS.put(Secure.ACCESSIBILITY_BUTTON_TARGET_COMPONENT, value -> value != null);
+ VALIDATORS.put(
+ Secure.ACCESSIBILITY_BUTTON_TARGET_COMPONENT,
+ ACCESSIBILITY_SHORTCUT_TARGET_LIST_VALIDATOR);
VALIDATORS.put(Secure.ACCESSIBILITY_SHORTCUT_DIALOG_SHOWN, BOOLEAN_VALIDATOR);
VALIDATORS.put(Secure.ACCESSIBILITY_SHORTCUT_ENABLED, BOOLEAN_VALIDATOR);
VALIDATORS.put(Secure.ACCESSIBILITY_SHORTCUT_ON_LOCK_SCREEN, BOOLEAN_VALIDATOR);
@@ -182,6 +186,7 @@
VALIDATORS.put(Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS, BOOLEAN_VALIDATOR);
VALIDATORS.put(Secure.LOCK_SCREEN_SHOW_SILENT_NOTIFICATIONS, BOOLEAN_VALIDATOR);
VALIDATORS.put(Secure.SHOW_NOTIFICATION_SNOOZE, BOOLEAN_VALIDATOR);
+ VALIDATORS.put(Secure.NOTIFICATION_HISTORY_ENABLED, BOOLEAN_VALIDATOR);
VALIDATORS.put(Secure.ZEN_DURATION, ANY_INTEGER_VALIDATOR);
VALIDATORS.put(Secure.SHOW_ZEN_UPGRADE_NOTIFICATION, BOOLEAN_VALIDATOR);
VALIDATORS.put(Secure.SHOW_ZEN_SETTINGS_SUGGESTION, BOOLEAN_VALIDATOR);
diff --git a/packages/SettingsProvider/src/android/provider/settings/validators/SettingsValidators.java b/packages/SettingsProvider/src/android/provider/settings/validators/SettingsValidators.java
index 224042c..71c7544 100644
--- a/packages/SettingsProvider/src/android/provider/settings/validators/SettingsValidators.java
+++ b/packages/SettingsProvider/src/android/provider/settings/validators/SettingsValidators.java
@@ -204,4 +204,7 @@
new InclusiveIntegerRangeValidator(0, 100);
static final Validator VIBRATION_INTENSITY_VALIDATOR = new InclusiveIntegerRangeValidator(0, 3);
+
+ static final Validator ACCESSIBILITY_SHORTCUT_TARGET_LIST_VALIDATOR =
+ new AccessibilityShortcutTargetListValidator();
}
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
index 0c4db49..2027345 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
@@ -1191,19 +1191,7 @@
}
if (upgradeVersion == 81) {
- // Add package verification setting
- db.beginTransaction();
- SQLiteStatement stmt = null;
- try {
- stmt = db.compileStatement("INSERT OR REPLACE INTO secure(name,value)"
- + " VALUES(?,?);");
- loadBooleanSetting(stmt, Settings.Global.PACKAGE_VERIFIER_ENABLE,
- R.bool.def_package_verifier_enable);
- db.setTransactionSuccessful();
- } finally {
- db.endTransaction();
- if (stmt != null) stmt.close();
- }
+ // package_verifier_enable has been removed
upgradeVersion = 82;
}
@@ -1305,7 +1293,6 @@
db.beginTransaction();
try {
String[] settingsToMove = {
- Settings.Global.PACKAGE_VERIFIER_ENABLE,
Settings.Global.PACKAGE_VERIFIER_TIMEOUT,
Settings.Global.PACKAGE_VERIFIER_DEFAULT_RESPONSE
};
@@ -2470,9 +2457,6 @@
loadDefaultAnimationSettings(stmt);
// --- Previously in 'secure'
- loadBooleanSetting(stmt, Settings.Global.PACKAGE_VERIFIER_ENABLE,
- R.bool.def_package_verifier_enable);
-
loadBooleanSetting(stmt, Settings.Global.WIFI_ON,
R.bool.def_wifi_on);
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java
index 55a51da..0a2dd38 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java
@@ -1162,9 +1162,6 @@
final long pkgVerifierToken = p.start(GlobalSettingsProto.PACKAGE_VERIFIER);
dumpSetting(s, p,
- Settings.Global.PACKAGE_VERIFIER_ENABLE,
- GlobalSettingsProto.PackageVerifier.ENABLED);
- dumpSetting(s, p,
Settings.Global.PACKAGE_VERIFIER_TIMEOUT,
GlobalSettingsProto.PackageVerifier.TIMEOUT);
dumpSetting(s, p,
@@ -2248,12 +2245,6 @@
SecureSettingsProto.Notification.IN_CALL_NOTIFICATION_ENABLED);
p.end(notificationToken);
- final long packageVerifierToken = p.start(SecureSettingsProto.PACKAGE_VERIFIER);
- dumpSetting(s, p,
- Settings.Secure.PACKAGE_VERIFIER_USER_CONSENT,
- SecureSettingsProto.PackageVerifier.USER_CONSENT);
- p.end(packageVerifierToken);
-
final long parentalControlToken = p.start(SecureSettingsProto.PARENTAL_CONTROL);
dumpSetting(s, p,
Settings.Secure.PARENTAL_CONTROL_ENABLED,
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
index 0959de9..93a1407 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
@@ -967,11 +967,6 @@
final long identity = Binder.clearCallingIdentity();
try {
synchronized (mLock) {
- Setting enable = getGlobalSetting(
- Settings.Global.PACKAGE_VERIFIER_ENABLE);
- String enableValue = enable != null ? enable.getValue() : null;
- updateGlobalSetting(Settings.Global.PACKAGE_VERIFIER_ENABLE,
- enableValue, null, true, userId, true);
Setting include = getGlobalSetting(
Settings.Global.PACKAGE_VERIFIER_INCLUDE_ADB);
String includeValue = include != null ? include.getValue() : null;
diff --git a/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java b/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java
index 289ac80..540726b 100644
--- a/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java
+++ b/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java
@@ -387,7 +387,6 @@
Settings.Global.OVERLAY_DISPLAY_DEVICES,
Settings.Global.PAC_CHANGE_DELAY,
Settings.Global.PACKAGE_VERIFIER_DEFAULT_RESPONSE,
- Settings.Global.PACKAGE_VERIFIER_ENABLE,
Settings.Global.PACKAGE_VERIFIER_INCLUDE_ADB,
Settings.Global.PACKAGE_VERIFIER_SETTING_VISIBLE,
Settings.Global.PACKAGE_VERIFIER_TIMEOUT,
@@ -662,7 +661,6 @@
Settings.Secure.NIGHT_DISPLAY_LAST_ACTIVATED_TIME,
Settings.Secure.NUM_ROTATION_SUGGESTIONS_ACCEPTED,
Settings.Secure.ODI_CAPTIONS_ENABLED,
- Settings.Secure.PACKAGE_VERIFIER_USER_CONSENT,
Settings.Secure.PARENTAL_CONTROL_LAST_UPDATE,
Settings.Secure.PAYMENT_SERVICE_SEARCH_URI,
Settings.Secure.PRINT_SERVICE_SEARCH_URI,
@@ -685,6 +683,7 @@
Settings.Secure.SEARCH_SHORTCUT_REFRESH_MAX_POOL_SIZE,
Settings.Secure.SEARCH_SOURCE_TIMEOUT_MILLIS,
Settings.Secure.SEARCH_THREAD_KEEPALIVE_SECONDS,
+ Settings.Secure.SECURE_FRP_MODE,
Settings.Secure.SEARCH_WEB_RESULTS_OVERRIDE_LIMIT,
Settings.Secure.SELECTED_INPUT_METHOD_SUBTYPE,
Settings.Secure.SELECTED_SPELL_CHECKER, // Intentionally removed in Q
diff --git a/packages/SettingsProvider/test/src/android/provider/settings/validators/SettingsValidatorsTest.java b/packages/SettingsProvider/test/src/android/provider/settings/validators/SettingsValidatorsTest.java
index a3b0835..bb9e6f6 100644
--- a/packages/SettingsProvider/test/src/android/provider/settings/validators/SettingsValidatorsTest.java
+++ b/packages/SettingsProvider/test/src/android/provider/settings/validators/SettingsValidatorsTest.java
@@ -297,6 +297,18 @@
}
@Test
+ public void testAccessibilityShortcutTargetValidator() {
+ assertTrue(SettingsValidators.ACCESSIBILITY_SHORTCUT_TARGET_LIST_VALIDATOR.validate(
+ "com.google.android/.AccessibilityShortcutTarget"));
+ assertTrue(SettingsValidators.ACCESSIBILITY_SHORTCUT_TARGET_LIST_VALIDATOR.validate(
+ "com.google.android"));
+ assertTrue(SettingsValidators.ACCESSIBILITY_SHORTCUT_TARGET_LIST_VALIDATOR.validate(
+ "com.google.android/.AccessibilityShortcutTarget:com.google.android"));
+ assertFalse(SettingsValidators.ACCESSIBILITY_SHORTCUT_TARGET_LIST_VALIDATOR.validate(
+ "com.google.android/.AccessibilityShortcutTarget:com.google.@android"));
+ }
+
+ @Test
public void ensureAllBackedUpGlobalSettingsHaveValidators() {
String offenders = getOffenders(concat(GlobalSettings.SETTINGS_TO_BACKUP,
Settings.Global.LEGACY_RESTORE_SETTINGS), GlobalSettingsValidators.VALIDATORS);
diff --git a/packages/Shell/AndroidManifest.xml b/packages/Shell/AndroidManifest.xml
index 1a658f4..7f1d528 100644
--- a/packages/Shell/AndroidManifest.xml
+++ b/packages/Shell/AndroidManifest.xml
@@ -215,9 +215,12 @@
<!-- Permission required for CTS test - CrossProfileAppsHostSideTest -->
<uses-permission android:name="android.permission.INTERACT_ACROSS_PROFILES"/>
- <!-- Permission requried for CTS test - UiModeManagerTest -->
+ <!-- Permission required for CTS test - UiModeManagerTest -->
<uses-permission android:name="android.permission.ENTER_CAR_MODE_PRIORITIZED"/>
+ <!-- Permission required for CTS test - CarModeInCallServiceTest -->
+ <uses-permission android:name="android.permission.CONTROL_INCALL_EXPERIENCE"/>
+
<application android:label="@string/app_label"
android:theme="@android:style/Theme.DeviceDefault.DayNight"
android:defaultToDeviceProtectedStorage="true"
diff --git a/packages/SystemUI/AndroidManifest.xml b/packages/SystemUI/AndroidManifest.xml
index e9c20db..0a671d9 100644
--- a/packages/SystemUI/AndroidManifest.xml
+++ b/packages/SystemUI/AndroidManifest.xml
@@ -206,6 +206,9 @@
<!-- shortcut manager -->
<uses-permission android:name="android.permission.RESET_SHORTCUT_MANAGER_THROTTLING" />
+ <!-- launcher apps -->
+ <uses-permission android:name="android.permission.ACCESS_SHORTCUTS" />
+
<uses-permission android:name="android.permission.MODIFY_THEME_OVERLAY" />
<!-- accessibility -->
diff --git a/packages/SystemUI/TEST_MAPPING b/packages/SystemUI/TEST_MAPPING
new file mode 100644
index 0000000..26ec572
--- /dev/null
+++ b/packages/SystemUI/TEST_MAPPING
@@ -0,0 +1,26 @@
+{
+ // Looking for unit test presubmit configuration?
+ // This currently lives in ATP config apct/system_ui/unit_test
+ "staged-platinum-postsubmit": [
+ {
+ "name": "PlatformScenarioTests",
+ "options": [
+ {
+ "include-filter": "android.platform.test.scenario.sysui"
+ },
+ {
+ "include-filter": "android.platform.test.scenario.quicksettings"
+ },
+ {
+ "include-filter": "android.platform.test.scenario.notification"
+ },
+ {
+ "include-annotation": "android.platform.test.scenario.annotation.Scenario"
+ },
+ {
+ "exclude-annotation": "androidx.test.filters.FlakyTest"
+ }
+ ]
+ }
+ ]
+}
diff --git a/packages/SystemUI/res/drawable/action_chip_background.xml b/packages/SystemUI/res/drawable/action_chip_background.xml
new file mode 100644
index 0000000..fc3dfeb
--- /dev/null
+++ b/packages/SystemUI/res/drawable/action_chip_background.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2019 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.
+ -->
+<ripple
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:color="@color/global_screenshot_button_ripple">
+ <item android:id="@android:id/background">
+ <shape android:shape="rectangle">
+ <stroke android:width="1dp" android:color="@color/global_screenshot_button_text"/>
+ <solid android:color="@color/global_screenshot_button_background"/>
+ <corners android:radius="@dimen/screenshot_button_corner_radius"/>
+ </shape>
+ </item>
+</ripple>
\ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/action_chip_container_background.xml b/packages/SystemUI/res/drawable/action_chip_container_background.xml
new file mode 100644
index 0000000..095213e
--- /dev/null
+++ b/packages/SystemUI/res/drawable/action_chip_container_background.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2019 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+ android:shape="rectangle">
+ <solid android:color="@color/global_screenshot_button_background"/>
+ <corners android:radius="@dimen/screenshot_action_container_corner_radius"/>
+</shape>
\ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/privacy_chip_bg.xml b/packages/SystemUI/res/drawable/privacy_chip_bg.xml
deleted file mode 100644
index b7b21fa..0000000
--- a/packages/SystemUI/res/drawable/privacy_chip_bg.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- 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.
--->
-
-<shape xmlns:android="http://schemas.android.com/apk/res/android">
- <solid android:color="#242424" /> <!-- 14% of white -->
- <padding android:paddingTop="@dimen/ongoing_appops_chip_bg_padding"
- android:paddingBottom="@dimen/ongoing_appops_chip_bg_padding" />
- <corners android:radius="@dimen/ongoing_appops_chip_bg_corner_radius" />
-</shape>
\ No newline at end of file
diff --git a/packages/SystemUI/res/layout/global_screenshot.xml b/packages/SystemUI/res/layout/global_screenshot.xml
index 59952e0..6ac9da4 100644
--- a/packages/SystemUI/res/layout/global_screenshot.xml
+++ b/packages/SystemUI/res/layout/global_screenshot.xml
@@ -39,4 +39,13 @@
android:layout_height="match_parent"
android:visibility="gone"
android:pointerIcon="crosshair"/>
+ <LinearLayout
+ android:id="@+id/global_screenshot_actions"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_gravity="bottom|center"
+ android:gravity="center"
+ android:paddingVertical="@dimen/screenshot_action_container_padding"
+ android:visibility="gone"
+ android:background="@drawable/action_chip_container_background"/>
</FrameLayout>
diff --git a/packages/SystemUI/res/layout/global_screenshot_action_chip.xml b/packages/SystemUI/res/layout/global_screenshot_action_chip.xml
new file mode 100644
index 0000000..6b42400
--- /dev/null
+++ b/packages/SystemUI/res/layout/global_screenshot_action_chip.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2019 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.
+ -->
+<TextView xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/global_screenshot_action_chip"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginHorizontal="@dimen/screenshot_action_chip_margin_horizontal"
+ android:paddingVertical="@dimen/screenshot_action_chip_padding_vertical"
+ android:paddingHorizontal="@dimen/screenshot_action_chip_padding_horizontal"
+ android:background="@drawable/action_chip_background"
+ android:textColor="@color/global_screenshot_button_text"/>
diff --git a/packages/SystemUI/res/layout/keyguard_bottom_area.xml b/packages/SystemUI/res/layout/keyguard_bottom_area.xml
index 1bfc4c0..b90a371 100644
--- a/packages/SystemUI/res/layout/keyguard_bottom_area.xml
+++ b/packages/SystemUI/res/layout/keyguard_bottom_area.xml
@@ -24,7 +24,25 @@
android:outlineProvider="none"
android:elevation="5dp" > <!-- Put it above the status bar header -->
- <include layout="@layout/keyguard_indication_area_overlay" />
+ <LinearLayout
+ android:id="@+id/keyguard_indication_area"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginBottom="@dimen/keyguard_indication_margin_bottom"
+ android:layout_gravity="bottom|center_horizontal"
+ android:orientation="vertical">
+
+ <com.android.systemui.statusbar.phone.KeyguardIndicationTextView
+ android:id="@+id/keyguard_indication_text"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:gravity="center"
+ android:paddingStart="@dimen/keyguard_indication_text_padding"
+ android:paddingEnd="@dimen/keyguard_indication_text_padding"
+ android:textAppearance="@style/TextAppearance.Keyguard.BottomArea"
+ android:accessibilityLiveRegion="polite"/>
+
+ </LinearLayout>
<FrameLayout
android:id="@+id/preview_container"
diff --git a/packages/SystemUI/res/layout/keyguard_indication_area_overlay.xml b/packages/SystemUI/res/layout/keyguard_indication_area_overlay.xml
deleted file mode 100644
index cc30a68..0000000
--- a/packages/SystemUI/res/layout/keyguard_indication_area_overlay.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/keyguard_indication_area"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginBottom="@dimen/keyguard_indication_margin_bottom"
- android:layout_gravity="bottom|center_horizontal"
- android:orientation="vertical">
-
- <include layout="@layout/keyguard_indication_text_view" />
-
-</LinearLayout>
\ No newline at end of file
diff --git a/packages/SystemUI/res/layout/keyguard_indication_text_view.xml b/packages/SystemUI/res/layout/keyguard_indication_text_view.xml
deleted file mode 100644
index 9376b1f..0000000
--- a/packages/SystemUI/res/layout/keyguard_indication_text_view.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<merge xmlns:android="http://schemas.android.com/apk/res/android">
- <com.android.systemui.statusbar.phone.KeyguardIndicationTextView
- android:id="@+id/keyguard_indication_text"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:gravity="center"
- android:paddingStart="@dimen/keyguard_indication_text_padding"
- android:paddingEnd="@dimen/keyguard_indication_text_padding"
- android:textAppearance="@style/TextAppearance.Keyguard.BottomArea"
- android:accessibilityLiveRegion="polite"/>
-</merge>
\ No newline at end of file
diff --git a/packages/SystemUI/res/layout/ongoing_privacy_chip.xml b/packages/SystemUI/res/layout/ongoing_privacy_chip.xml
deleted file mode 100644
index dce9ce1..0000000
--- a/packages/SystemUI/res/layout/ongoing_privacy_chip.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- 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.
--->
-
-
-<com.android.systemui.privacy.OngoingPrivacyChip
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/privacy_chip"
- android:layout_height="match_parent"
- android:layout_width="wrap_content"
- android:layout_gravity="center_vertical|end"
- android:gravity="center_vertical"
- android:orientation="horizontal"
- android:focusable="true" >
-
- <FrameLayout
- android:id="@+id/background"
- android:layout_height="@dimen/ongoing_appops_chip_height"
- android:minWidth="48dp"
- android:layout_width="wrap_content" >
- <LinearLayout
- android:id="@+id/icons_container"
- android:layout_height="match_parent"
- android:layout_width="wrap_content"
- android:gravity="center_vertical"
- />
- </FrameLayout>
-</com.android.systemui.privacy.OngoingPrivacyChip>
\ No newline at end of file
diff --git a/packages/SystemUI/res/layout/qs_customize_panel_content.xml b/packages/SystemUI/res/layout/qs_customize_panel_content.xml
index 09f512f..7cce1ba 100644
--- a/packages/SystemUI/res/layout/qs_customize_panel_content.xml
+++ b/packages/SystemUI/res/layout/qs_customize_panel_content.xml
@@ -52,7 +52,7 @@
android:scrollIndicators="top"
android:scrollbars="vertical"
android:scrollbarStyle="outsideOverlay"
- android:importantForAccessibility="no" />
+ android:importantForAccessibility="auto" />
</com.android.keyguard.AlphaOptimizedLinearLayout>
<View
diff --git a/packages/SystemUI/res/layout/qs_detail_header.xml b/packages/SystemUI/res/layout/qs_detail_header.xml
index a1f0ee7..da80633 100644
--- a/packages/SystemUI/res/layout/qs_detail_header.xml
+++ b/packages/SystemUI/res/layout/qs_detail_header.xml
@@ -53,12 +53,12 @@
android:src="@drawable/ic_settings"
android:visibility="gone"/>
- <Switch
- android:id="@android:id/toggle"
+ <ViewStub
+ android:id="@+id/toggle_stub"
+ android:inflatedId="@+id/toggle"
+ android:layout="@layout/qs_detail_switch"
android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:clickable="false"
- android:textAppearance="@style/TextAppearance.QS.DetailHeader" />
+ android:layout_height="wrap_content"/>
</LinearLayout>
diff --git a/packages/SystemUI/res/layout/qs_detail_switch.xml b/packages/SystemUI/res/layout/qs_detail_switch.xml
new file mode 100644
index 0000000..abb2497
--- /dev/null
+++ b/packages/SystemUI/res/layout/qs_detail_switch.xml
@@ -0,0 +1,23 @@
+<!--
+ ~ Copyright (C) 2019 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.
+ -->
+
+<Switch
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@android:id/toggle"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:clickable="false"
+ android:textAppearance="@style/TextAppearance.QS.DetailHeader" />
\ No newline at end of file
diff --git a/packages/SystemUI/res/layout/qs_media_panel_options.xml b/packages/SystemUI/res/layout/qs_media_panel_options.xml
new file mode 100644
index 0000000..0669357
--- /dev/null
+++ b/packages/SystemUI/res/layout/qs_media_panel_options.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2019 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
+ -->
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/qs_media_controls_options"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="horizontal"
+ android:gravity="center"
+ android:layout_gravity="center"
+ android:padding="10dp"
+ >
+ <ImageButton
+ android:id="@+id/remove"
+ android:layout_width="48dp"
+ android:layout_height="48dp"
+ android:src="@android:drawable/ic_menu_delete"
+ android:padding="8dp"
+ />
+ <ImageButton
+ android:id="@+id/cancel"
+ android:layout_width="48dp"
+ android:layout_height="48dp"
+ android:src="@android:drawable/ic_menu_revert"
+ android:padding="8dp"
+ />
+</LinearLayout>
diff --git a/packages/SystemUI/res/layout/quick_status_bar_header_system_icons.xml b/packages/SystemUI/res/layout/quick_status_bar_header_system_icons.xml
index cd9f780..8676767 100644
--- a/packages/SystemUI/res/layout/quick_status_bar_header_system_icons.xml
+++ b/packages/SystemUI/res/layout/quick_status_bar_header_system_icons.xml
@@ -14,7 +14,7 @@
** See the License for the specific language governing permissions and
** limitations under the License.
-->
-<LinearLayout
+<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:systemui="http://schemas.android.com/apk/res-auto"
android:id="@+id/quick_status_bar_system_icons"
@@ -28,13 +28,6 @@
android:paddingStart="@dimen/status_bar_padding_start"
android:paddingEnd="@dimen/status_bar_padding_end" >
- <LinearLayout
- android:layout_width="0dp"
- android:layout_height="match_parent"
- android:layout_weight="1"
- android:orientation="horizontal"
- android:gravity="center_vertical|start" >
-
<com.android.systemui.statusbar.policy.Clock
android:id="@+id/clock"
android:layout_width="wrap_content"
@@ -46,23 +39,5 @@
android:singleLine="true"
android:textAppearance="@style/TextAppearance.StatusBar.Clock"
systemui:showDark="false" />
- </LinearLayout>
- <android.widget.Space
- android:id="@+id/space"
- android:layout_width="0dp"
- android:layout_height="match_parent"
- android:layout_gravity="center_vertical|center_horizontal"
- android:visibility="gone" />
-
- <LinearLayout
- android:layout_width="0dp"
- android:layout_height="match_parent"
- android:layout_weight="1"
- android:orientation="horizontal"
- android:gravity="center_vertical|end" >
-
- <include layout="@layout/ongoing_privacy_chip" />
-
- </LinearLayout>
-</LinearLayout>
+</FrameLayout>
diff --git a/packages/SystemUI/res/values-night/colors.xml b/packages/SystemUI/res/values-night/colors.xml
index 0febc8e..9a66e8b 100644
--- a/packages/SystemUI/res/values-night/colors.xml
+++ b/packages/SystemUI/res/values-night/colors.xml
@@ -78,6 +78,11 @@
<!-- The color of the text in the Global Actions menu -->
<color name="global_actions_alert_text">@color/GM2_red_300</color>
+ <!-- Global screenshot actions -->
+ <color name="global_screenshot_button_background">@color/GM2_grey_900</color>
+ <color name="global_screenshot_button_ripple">#42FFFFFF</color>
+ <color name="global_screenshot_button_text">@color/GM2_blue_300</color>
+
<!-- Biometric dialog colors -->
<color name="biometric_dialog_gray">#ff888888</color>
<color name="biometric_dialog_accent">#ff80cbc4</color> <!-- light teal -->
diff --git a/packages/SystemUI/res/values/colors.xml b/packages/SystemUI/res/values/colors.xml
index bda1c52..92c7477 100644
--- a/packages/SystemUI/res/values/colors.xml
+++ b/packages/SystemUI/res/values/colors.xml
@@ -180,6 +180,11 @@
<!-- Color for the Assistant invocation lights -->
<color name="default_invocation_lights_color">#ffffffff</color> <!-- white -->
+ <!-- Global screenshot actions -->
+ <color name="global_screenshot_button_background">#F5F5F5</color>
+ <color name="global_screenshot_button_ripple">#1f000000</color>
+ <color name="global_screenshot_button_text">@color/GM2_blue_500</color>
+
<!-- GM2 colors -->
<color name="GM2_grey_50">#F8F9FA</color>
<color name="GM2_grey_100">#F1F3F4</color>
diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml
index 86ef031..e896c16 100644
--- a/packages/SystemUI/res/values/config.xml
+++ b/packages/SystemUI/res/values/config.xml
@@ -281,7 +281,6 @@
<item>com.android.systemui.statusbar.phone.StatusBar</item>
<item>com.android.systemui.usb.StorageNotification</item>
<item>com.android.systemui.power.PowerUI</item>
- <item>com.android.systemui.power.InattentiveSleepWarningController</item>
<item>com.android.systemui.media.RingtonePlayer</item>
<item>com.android.systemui.keyboard.KeyboardUI</item>
<item>com.android.systemui.pip.PipUI</item>
@@ -463,8 +462,6 @@
<item>com.android.systemui</item>
</string-array>
- <integer name="ongoing_appops_dialog_max_apps">5</integer>
-
<!-- Launcher package name for overlaying icons. -->
<string name="launcher_overlayable_package" translatable="false">com.android.launcher3</string>
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
index 64b2892..c948116 100644
--- a/packages/SystemUI/res/values/dimens.xml
+++ b/packages/SystemUI/res/values/dimens.xml
@@ -285,8 +285,18 @@
<!-- the padding between dots in the icon overflow -->
<dimen name="overflow_icon_dot_padding">3dp</dimen>
+ <!-- Dimensions related to screenshots -->
+
<!-- The padding on the global screenshot background image -->
<dimen name="global_screenshot_bg_padding">20dp</dimen>
+ <dimen name="screenshot_action_container_corner_radius">10dp</dimen>
+ <dimen name="screenshot_action_container_padding">20dp</dimen>
+ <!-- Radius of the chip background on global screenshot actions -->
+ <dimen name="screenshot_button_corner_radius">20dp</dimen>
+ <dimen name="screenshot_action_chip_margin_horizontal">10dp</dimen>
+ <dimen name="screenshot_action_chip_padding_vertical">10dp</dimen>
+ <dimen name="screenshot_action_chip_padding_horizontal">15dp</dimen>
+
<!-- The width of the view containing navigation buttons -->
<dimen name="navigation_key_width">70dp</dimen>
@@ -1057,47 +1067,6 @@
<!-- How much into a DisplayCutout's bounds we can go, on each side -->
<dimen name="display_cutout_margin_consumption">0px</dimen>
-
- <!-- Padding below Ongoing App Ops dialog title -->
- <dimen name="ongoing_appops_dialog_sep">16dp</dimen>
- <!--Padding around text items in Ongoing App Ops dialog -->
- <dimen name="ongoing_appops_dialog_text_padding">16dp</dimen>
- <!-- Height and width of App Opp icons in Ongoing App Ops dialog -->
- <dimen name="ongoing_appops_dialog_icon_size">24dp</dimen>
- <!-- Left margin of App Opp icons in Ongoing App Ops dialog -->
- <dimen name="ongoing_appops_dialog_icon_margin">12dp</dimen>
- <!-- Height and width of Application icons in Ongoing App Ops dialog -->
- <dimen name="ongoing_appops_dialog_app_icon_size">32dp</dimen>
- <!-- Height and width of Plus sign in Ongoing App Ops dialog -->
- <dimen name="ongoing_appops_dialog_app_plus_size">24dp</dimen>
- <!-- Height of line in Ongoing App Ops dialog-->
- <dimen name="ongoing_appops_dialog_line_height">48dp</dimen>
- <!-- Side margin of title in Ongoing App Ops dialog -->
- <dimen name="ongoing_appops_dialog_title_margin_sides">24dp</dimen>
- <!-- Bottom margin of items in Ongoing App Ops dialog -->
- <dimen name="ongoing_appops_dialog_items_bottom_margin">24dp</dimen>
- <!-- Top and bottom margin of title in Ongoing App Ops dialog -->
- <dimen name="ongoing_appops_dialog_title_margin_top_bottom">18dp</dimen>
- <!-- Text size for Ongoing App Ops dialog title -->
- <dimen name="ongoing_appops_dialog_title_size">20sp</dimen>
- <!-- Text size for Ongoing App Ops dialog items -->
- <dimen name="ongoing_appops_dialog_item_size">16sp</dimen>
- <!-- Height of the Ongoing App Ops chip -->
- <dimen name="ongoing_appops_chip_height">32dp</dimen>
- <!-- Padding between background of Ongoing App Ops chip and content -->
- <dimen name="ongoing_appops_chip_bg_padding">8dp</dimen>
- <!-- Side padding between background of Ongoing App Ops chip and content -->
- <dimen name="ongoing_appops_chip_side_padding">8dp</dimen>
- <!-- Margin between icons of Ongoing App Ops chip when QQS-->
- <dimen name="ongoing_appops_chip_icon_margin_collapsed">0dp</dimen>
- <!-- Margin between icons of Ongoing App Ops chip when QS-->
- <dimen name="ongoing_appops_chip_icon_margin_expanded">2dp</dimen>
- <!-- Icon size of Ongoing App Ops chip -->
- <dimen name="ongoing_appops_chip_icon_size">@dimen/status_bar_icon_drawing_size</dimen>
- <!-- Radius of Ongoing App Ops chip corners -->
- <dimen name="ongoing_appops_chip_bg_corner_radius">16dp</dimen>
-
-
<!-- How much each bubble is elevated. -->
<dimen name="bubble_elevation">1dp</dimen>
<!-- How much the bubble flyout text container is elevated. -->
@@ -1169,4 +1138,5 @@
<dimen name="qs_media_height">150dp</dimen>
<dimen name="qs_media_width">350dp</dimen>
<dimen name="qs_media_padding">8dp</dimen>
+ <dimen name="qs_media_corner_radius">10dp</dimen>
</resources>
diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml
index 99da058..1dd5496 100644
--- a/packages/SystemUI/res/values/strings.xml
+++ b/packages/SystemUI/res/values/strings.xml
@@ -2444,27 +2444,6 @@
app for debugging. Will not be seen by users. [CHAR LIMIT=20] -->
<string name="heap_dump_tile_name">Dump SysUI Heap</string>
- <!-- Content description for ongoing privacy chip. Use with a single app [CHAR LIMIT=NONE]-->
- <string name="ongoing_privacy_chip_content_single_app"><xliff:g id="app" example="Example App">%1$s</xliff:g> is using your <xliff:g id="types_list" example="camera, location">%2$s</xliff:g>.</string>
-
- <!-- Content description for ongoing privacy chip. Use with multiple apps [CHAR LIMIT=NONE]-->
- <string name="ongoing_privacy_chip_content_multiple_apps">Applications are using your <xliff:g id="types_list" example="camera, location">%s</xliff:g>.</string>
-
- <!-- Separator for types. Include spaces before and after if needed [CHAR LIMIT=10] -->
- <string name="ongoing_privacy_dialog_separator">,\u0020</string>
-
- <!-- Separator for types, before last type. Include spaces before and after if needed [CHAR LIMIT=10] -->
- <string name="ongoing_privacy_dialog_last_separator">\u0020and\u0020</string>
-
- <!-- Text for camera app op [CHAR LIMIT=20]-->
- <string name="privacy_type_camera">camera</string>
-
- <!-- Text for location app op [CHAR LIMIT=20]-->
- <string name="privacy_type_location">location</string>
-
- <!-- Text for microphone app op [CHAR LIMIT=20]-->
- <string name="privacy_type_microphone">microphone</string>
-
<!-- Text for the quick setting tile for sensor privacy [CHAR LIMIT=30] -->
<string name="sensor_privacy_mode">Sensors off</string>
diff --git a/packages/SystemUI/res/values/styles.xml b/packages/SystemUI/res/values/styles.xml
index 96fbcbb..926d016 100644
--- a/packages/SystemUI/res/values/styles.xml
+++ b/packages/SystemUI/res/values/styles.xml
@@ -227,18 +227,6 @@
<item name="android:textColor">@color/dark_mode_qs_icon_color_single_tone</item>
</style>
- <style name="TextAppearance.AppOpsDialog" />
-
- <style name="TextAppearance.AppOpsDialog.Title">
- <item name="android:textSize">@dimen/ongoing_appops_dialog_title_size</item>
- <item name="android:fontFamily">@*android:string/config_headlineFontFamilyMedium</item>
- </style>
-
- <style name="TextAppearance.AppOpsDialog.Item">
- <item name="android:textSize">@dimen/ongoing_appops_dialog_item_size</item>
- <item name="android:fontFamily">@*android:string/config_bodyFontFamily</item>
- </style>
-
<style name="TextAppearance.DeviceManagementDialog">
<item name="android:textColor">?android:attr/textColorPrimary</item>
</style>
diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/system/PinnedStackListenerForwarder.java b/packages/SystemUI/shared/src/com/android/systemui/shared/system/PinnedStackListenerForwarder.java
index fe5a57a..8c0ffb8 100644
--- a/packages/SystemUI/shared/src/com/android/systemui/shared/system/PinnedStackListenerForwarder.java
+++ b/packages/SystemUI/shared/src/com/android/systemui/shared/system/PinnedStackListenerForwarder.java
@@ -83,16 +83,16 @@
}
@Override
- public void onSaveReentrySnapFraction(ComponentName componentName, Rect bounds) {
+ public void onSaveReentryBounds(ComponentName componentName, Rect bounds) {
for (PinnedStackListener listener : mListeners) {
- listener.onSaveReentrySnapFraction(componentName, bounds);
+ listener.onSaveReentryBounds(componentName, bounds);
}
}
@Override
- public void onResetReentrySnapFraction(ComponentName componentName) {
+ public void onResetReentryBounds(ComponentName componentName) {
for (PinnedStackListener listener : mListeners) {
- listener.onResetReentrySnapFraction(componentName);
+ listener.onResetReentryBounds(componentName);
}
}
@@ -140,9 +140,9 @@
public void onActionsChanged(ParceledListSlice actions) {}
- public void onSaveReentrySnapFraction(ComponentName componentName, Rect bounds) {}
+ public void onSaveReentryBounds(ComponentName componentName, Rect bounds) {}
- public void onResetReentrySnapFraction(ComponentName componentName) {}
+ public void onResetReentryBounds(ComponentName componentName) {}
public void onDisplayInfoChanged(DisplayInfo displayInfo) {}
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
index 1d4b9ef..9bba2aa 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
@@ -151,7 +151,6 @@
private static final int MSG_DPM_STATE_CHANGED = 309;
private static final int MSG_USER_SWITCHING = 310;
private static final int MSG_KEYGUARD_RESET = 312;
- private static final int MSG_BOOT_COMPLETED = 313;
private static final int MSG_USER_SWITCH_COMPLETE = 314;
private static final int MSG_USER_INFO_CHANGED = 317;
private static final int MSG_REPORT_EMERGENCY_CALL_ACTION = 318;
@@ -234,7 +233,6 @@
private boolean mGoingToSleep;
private boolean mBouncer;
private boolean mAuthInterruptActive;
- private boolean mBootCompleted;
private boolean mNeedsSlowUnlockTransition;
private boolean mHasLockscreenWallpaper;
private boolean mAssistantVisible;
@@ -1075,8 +1073,6 @@
mHandler.sendMessage(mHandler.obtainMessage(MSG_PHONE_STATE_CHANGED, state));
} else if (Intent.ACTION_AIRPLANE_MODE_CHANGED.equals(action)) {
mHandler.sendEmptyMessage(MSG_AIRPLANE_MODE_CHANGED);
- } else if (Intent.ACTION_BOOT_COMPLETED.equals(action)) {
- dispatchBootCompleted();
} else if (TelephonyIntents.ACTION_SERVICE_STATE_CHANGED.equals(action)) {
ServiceState serviceState = ServiceState.newFromBundle(intent.getExtras());
int subId = intent.getIntExtra(PhoneConstants.SUBSCRIPTION_KEY,
@@ -1550,9 +1546,6 @@
case MSG_KEYGUARD_BOUNCER_CHANGED:
handleKeyguardBouncerChanged(msg.arg1);
break;
- case MSG_BOOT_COMPLETED:
- handleBootCompleted();
- break;
case MSG_USER_INFO_CHANGED:
handleUserInfoChanged(msg.arg1);
break;
@@ -1648,11 +1641,6 @@
filter.addAction(DevicePolicyManager.ACTION_DEVICE_POLICY_MANAGER_STATE_CHANGED);
broadcastDispatcher.registerReceiver(mBroadcastReceiver, filter, mHandler);
- final IntentFilter bootCompleteFilter = new IntentFilter();
- bootCompleteFilter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
- bootCompleteFilter.addAction(Intent.ACTION_BOOT_COMPLETED);
- broadcastDispatcher.registerReceiver(mBroadcastReceiver, bootCompleteFilter, mHandler);
-
final IntentFilter allUserFilter = new IntentFilter();
allUserFilter.addAction(Intent.ACTION_USER_INFO_CHANGED);
allUserFilter.addAction(AlarmManager.ACTION_NEXT_ALARM_CLOCK_CHANGED);
@@ -2103,39 +2091,6 @@
}
/**
- * This is exposed since {@link Intent#ACTION_BOOT_COMPLETED} is not sticky. If
- * keyguard crashes sometime after boot, then it will never receive this
- * broadcast and hence not handle the event. This method is ultimately called by
- * PhoneWindowManager in this case.
- */
- public void dispatchBootCompleted() {
- mHandler.sendEmptyMessage(MSG_BOOT_COMPLETED);
- }
-
- /**
- * Handle {@link #MSG_BOOT_COMPLETED}
- */
- private void handleBootCompleted() {
- checkIsHandlerThread();
- if (mBootCompleted) return;
- mBootCompleted = true;
- for (int i = 0; i < mCallbacks.size(); i++) {
- KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get();
- if (cb != null) {
- cb.onBootCompleted();
- }
- }
- }
-
- /**
- * We need to store this state in the KeyguardUpdateMonitor since this class will not be
- * destroyed.
- */
- public boolean hasBootCompleted() {
- return mBootCompleted;
- }
-
- /**
* Handle {@link #MSG_DEVICE_PROVISIONED}
*/
private void handleDeviceProvisioned() {
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java
index b4b83d6..04502f0 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java
@@ -148,14 +148,6 @@
public void onUserUnlocked() { }
/**
- * Called when boot completed.
- *
- * Note, this callback will only be received if boot complete occurs after registering with
- * KeyguardUpdateMonitor.
- */
- public void onBootCompleted() { }
-
- /**
* Called when the emergency call button is pressed.
*/
public void onEmergencyCallAction() { }
diff --git a/packages/SystemUI/src/com/android/systemui/BootCompleteCache.kt b/packages/SystemUI/src/com/android/systemui/BootCompleteCache.kt
new file mode 100644
index 0000000..c6bdb30
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/BootCompleteCache.kt
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui
+
+interface BootCompleteCache {
+ fun isBootComplete(): Boolean
+ fun addListener(listener: BootCompleteListener): Boolean
+ fun removeListener(listener: BootCompleteListener)
+
+ interface BootCompleteListener {
+ fun onBootComplete()
+ }
+}
\ No newline at end of file
diff --git a/packages/SystemUI/src/com/android/systemui/BootCompleteCacheImpl.kt b/packages/SystemUI/src/com/android/systemui/BootCompleteCacheImpl.kt
new file mode 100644
index 0000000..310393b
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/BootCompleteCacheImpl.kt
@@ -0,0 +1,116 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui
+
+import android.util.Log
+import com.android.internal.annotations.GuardedBy
+import java.io.FileDescriptor
+import java.io.PrintWriter
+import java.lang.ref.WeakReference
+import java.util.concurrent.atomic.AtomicBoolean
+import javax.inject.Inject
+import javax.inject.Singleton
+
+/**
+ * Caches whether the device has reached [SystemService.PHASE_BOOT_COMPLETED].
+ *
+ * This class is constructed and set by [SystemUIApplication] and will notify all listeners when
+ * boot is completed.
+ */
+@Singleton
+class BootCompleteCacheImpl @Inject constructor(private val dumpController: DumpController) :
+ BootCompleteCache, Dumpable {
+
+ companion object {
+ private const val TAG = "BootCompleteCacheImpl"
+ private const val DEBUG = false
+ }
+
+ init {
+ dumpController.registerDumpable(TAG, this)
+ }
+
+ @GuardedBy("listeners")
+ private val listeners = mutableListOf<WeakReference<BootCompleteCache.BootCompleteListener>>()
+ private val bootComplete = AtomicBoolean(false)
+
+ /**
+ * Provides the current boot state of the system as determined by [SystemUIApplication].
+ * @return `true` if the system has reached [SystemService.PHASE_BOOT_COMPLETED]
+ */
+ override fun isBootComplete(): Boolean = bootComplete.get()
+
+ /**
+ * Indicates to this object that boot is complete. Subsequent calls to this function will have
+ * no effect.
+ */
+ fun setBootComplete() {
+ if (bootComplete.compareAndSet(false, true)) {
+ if (DEBUG) Log.d(TAG, "Boot complete set")
+ synchronized(listeners) {
+ listeners.forEach {
+ it.get()?.onBootComplete()
+ }
+ listeners.clear()
+ }
+ }
+ }
+
+ /**
+ * Add a listener for boot complete event. It will immediately return the current boot complete
+ * state. If this value is true, [BootCompleteCache.BootCompleteListener.onBootComplete] will
+ * never be called.
+ *
+ * @param listener a listener for boot complete state.
+ * @return `true` if boot has been completed.
+ */
+ override fun addListener(listener: BootCompleteCache.BootCompleteListener): Boolean {
+ if (bootComplete.get()) return true
+ synchronized(listeners) {
+ if (bootComplete.get()) return true
+ listeners.add(WeakReference(listener))
+ if (DEBUG) Log.d(TAG, "Adding listener: $listener")
+ return false
+ }
+ }
+
+ /**
+ * Removes a listener for boot complete event.
+ *
+ * @param listener a listener to removed.
+ */
+ override fun removeListener(listener: BootCompleteCache.BootCompleteListener) {
+ if (bootComplete.get()) return
+ synchronized(listeners) {
+ listeners.removeIf { it.get() == null || it.get() === listener }
+ if (DEBUG) Log.d(TAG, "Removing listener: $listener")
+ }
+ }
+
+ override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<out String>) {
+ pw.println("BootCompleteCache state:")
+ pw.println(" boot complete: ${isBootComplete()}")
+ if (!isBootComplete()) {
+ pw.println(" listeners:")
+ synchronized(listeners) {
+ listeners.forEach {
+ pw.println(" $it")
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/packages/SystemUI/src/com/android/systemui/Dependency.java b/packages/SystemUI/src/com/android/systemui/Dependency.java
index c55b0d9..6821265 100644
--- a/packages/SystemUI/src/com/android/systemui/Dependency.java
+++ b/packages/SystemUI/src/com/android/systemui/Dependency.java
@@ -56,7 +56,6 @@
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.power.EnhancedEstimates;
import com.android.systemui.power.PowerUI;
-import com.android.systemui.privacy.PrivacyItemController;
import com.android.systemui.recents.OverviewProxyService;
import com.android.systemui.recents.Recents;
import com.android.systemui.shared.plugins.PluginManager;
@@ -298,7 +297,6 @@
@Inject Lazy<SensorPrivacyManager> mSensorPrivacyManager;
@Inject Lazy<AutoHideController> mAutoHideController;
@Inject Lazy<ForegroundServiceNotificationListener> mForegroundServiceNotificationListener;
- @Inject Lazy<PrivacyItemController> mPrivacyItemController;
@Inject @BgLooper Lazy<Looper> mBgLooper;
@Inject @BgHandler Lazy<Handler> mBgHandler;
@Inject @MainLooper Lazy<Looper> mMainLooper;
@@ -497,7 +495,6 @@
mProviders.put(ForegroundServiceNotificationListener.class,
mForegroundServiceNotificationListener::get);
mProviders.put(ClockManager.class, mClockManager::get);
- mProviders.put(PrivacyItemController.class, mPrivacyItemController::get);
mProviders.put(ActivityManagerWrapper.class, mActivityManagerWrapper::get);
mProviders.put(DevicePolicyManagerWrapper.class, mDevicePolicyManagerWrapper::get);
mProviders.put(PackageManagerWrapper.class, mPackageManagerWrapper::get);
diff --git a/packages/SystemUI/src/com/android/systemui/ForegroundServiceController.java b/packages/SystemUI/src/com/android/systemui/ForegroundServiceController.java
index c1a23c8..493186b 100644
--- a/packages/SystemUI/src/com/android/systemui/ForegroundServiceController.java
+++ b/packages/SystemUI/src/com/android/systemui/ForegroundServiceController.java
@@ -37,7 +37,7 @@
*/
@Singleton
public class ForegroundServiceController {
- private static final int[] APP_OPS = new int[] {AppOpsManager.OP_CAMERA,
+ public static final int[] APP_OPS = new int[] {AppOpsManager.OP_CAMERA,
AppOpsManager.OP_SYSTEM_ALERT_WINDOW,
AppOpsManager.OP_RECORD_AUDIO,
AppOpsManager.OP_COARSE_LOCATION,
diff --git a/packages/SystemUI/src/com/android/systemui/ForegroundServiceNotificationListener.java b/packages/SystemUI/src/com/android/systemui/ForegroundServiceNotificationListener.java
index b983966..c4e2762 100644
--- a/packages/SystemUI/src/com/android/systemui/ForegroundServiceNotificationListener.java
+++ b/packages/SystemUI/src/com/android/systemui/ForegroundServiceNotificationListener.java
@@ -27,6 +27,8 @@
import com.android.internal.statusbar.NotificationVisibility;
import com.android.systemui.statusbar.notification.NotificationEntryListener;
import com.android.systemui.statusbar.notification.NotificationEntryManager;
+import com.android.systemui.statusbar.notification.collection.NotifCollection;
+import com.android.systemui.statusbar.notification.collection.NotifCollectionListener;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import javax.inject.Inject;
@@ -46,7 +48,8 @@
@Inject
public ForegroundServiceNotificationListener(Context context,
ForegroundServiceController foregroundServiceController,
- NotificationEntryManager notificationEntryManager) {
+ NotificationEntryManager notificationEntryManager,
+ NotifCollection notifCollection) {
mContext = context;
mForegroundServiceController = foregroundServiceController;
mEntryManager = notificationEntryManager;
@@ -69,8 +72,24 @@
removeNotification(entry.getSbn());
}
});
-
mEntryManager.addNotificationLifetimeExtender(new ForegroundServiceLifetimeExtender());
+
+ notifCollection.addCollectionListener(new NotifCollectionListener() {
+ @Override
+ public void onEntryAdded(NotificationEntry entry) {
+ addNotification(entry, entry.getImportance());
+ }
+
+ @Override
+ public void onEntryUpdated(NotificationEntry entry) {
+ updateNotification(entry, entry.getImportance());
+ }
+
+ @Override
+ public void onEntryRemoved(NotificationEntry entry, int reason, boolean removedByUser) {
+ removeNotification(entry.getSbn());
+ }
+ });
}
/**
@@ -152,6 +171,8 @@
true /* create if not found */);
}
+ // TODO: remove this when fully migrated to the NewNotifPipeline (work done in
+ // ForegroundCoordinator)
private void tagForeground(NotificationEntry entry) {
final StatusBarNotification sbn = entry.getSbn();
ArraySet<Integer> activeOps = mForegroundServiceController.getAppOps(
diff --git a/packages/SystemUI/src/com/android/systemui/ForegroundServicesUserState.java b/packages/SystemUI/src/com/android/systemui/ForegroundServicesUserState.java
index a8ae654..2ef46dc 100644
--- a/packages/SystemUI/src/com/android/systemui/ForegroundServicesUserState.java
+++ b/packages/SystemUI/src/com/android/systemui/ForegroundServicesUserState.java
@@ -24,7 +24,7 @@
/**
* Struct to track relevant packages and notifications for a userid's foreground services.
*/
-class ForegroundServicesUserState {
+public class ForegroundServicesUserState {
// shelf life of foreground services before they go bad
private static final long FG_SERVICE_GRACE_MILLIS = 5000;
diff --git a/packages/SystemUI/src/com/android/systemui/SystemUIApplication.java b/packages/SystemUI/src/com/android/systemui/SystemUIApplication.java
index 1b264e5..e08de39 100644
--- a/packages/SystemUI/src/com/android/systemui/SystemUIApplication.java
+++ b/packages/SystemUI/src/com/android/systemui/SystemUIApplication.java
@@ -32,6 +32,7 @@
import android.util.TimingsTraceLog;
import com.android.systemui.dagger.ContextComponentHelper;
+import com.android.systemui.dagger.SystemUIRootComponent;
import com.android.systemui.util.NotificationChannels;
import java.lang.reflect.Constructor;
@@ -47,13 +48,13 @@
private static final boolean DEBUG = false;
private ContextComponentHelper mComponentHelper;
+ private BootCompleteCacheImpl mBootCompleteCache;
/**
* Hold a reference on the stuff we start.
*/
private SystemUI[] mServices;
private boolean mServicesStarted;
- private boolean mBootCompleted;
private SystemUIAppComponentFactory.ContextAvailableCallback mContextAvailableCallback;
public SystemUIApplication() {
@@ -71,8 +72,9 @@
Trace.TRACE_TAG_APP);
log.traceBegin("DependencyInjection");
mContextAvailableCallback.onContextAvailable(this);
- mComponentHelper = SystemUIFactory
- .getInstance().getRootComponent().getContextComponentHelper();
+ SystemUIRootComponent root = SystemUIFactory.getInstance().getRootComponent();
+ mComponentHelper = root.getContextComponentHelper();
+ mBootCompleteCache = root.provideBootCacheImpl();
log.traceEnd();
// Set the application theme that is inherited by all services. Note that setting the
@@ -86,19 +88,17 @@
registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
- if (mBootCompleted) return;
+ if (mBootCompleteCache.isBootComplete()) return;
if (DEBUG) Log.v(TAG, "BOOT_COMPLETED received");
unregisterReceiver(this);
- mBootCompleted = true;
+ mBootCompleteCache.setBootComplete();
if (mServicesStarted) {
final int N = mServices.length;
for (int i = 0; i < N; i++) {
mServices[i].onBootCompleted();
}
}
-
-
}
}, bootCompletedFilter);
@@ -107,7 +107,7 @@
@Override
public void onReceive(Context context, Intent intent) {
if (Intent.ACTION_LOCALE_CHANGED.equals(intent.getAction())) {
- if (!mBootCompleted) return;
+ if (!mBootCompleteCache.isBootComplete()) return;
// Update names of SystemUi notification channels
NotificationChannels.createAll(context);
}
@@ -159,11 +159,11 @@
}
mServices = new SystemUI[services.length];
- if (!mBootCompleted) {
+ if (!mBootCompleteCache.isBootComplete()) {
// check to see if maybe it was already completed long before we began
// see ActivityManagerService.finishBooting()
if ("1".equals(SystemProperties.get("sys.boot_completed"))) {
- mBootCompleted = true;
+ mBootCompleteCache.setBootComplete();
if (DEBUG) {
Log.v(TAG, "BOOT_COMPLETED was already sent");
}
@@ -205,7 +205,7 @@
if (ti > 1000) {
Log.w(TAG, "Initialization of " + clsName + " took " + ti + " ms");
}
- if (mBootCompleted) {
+ if (mBootCompleteCache.isBootComplete()) {
mServices[i].onBootCompleted();
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/SystemUIFactory.java b/packages/SystemUI/src/com/android/systemui/SystemUIFactory.java
index 617dbdf..75063e4 100644
--- a/packages/SystemUI/src/com/android/systemui/SystemUIFactory.java
+++ b/packages/SystemUI/src/com/android/systemui/SystemUIFactory.java
@@ -57,7 +57,7 @@
private static final String TAG = "SystemUIFactory";
static SystemUIFactory mFactory;
- protected SystemUIRootComponent mRootComponent;
+ private SystemUIRootComponent mRootComponent;
public static <T extends SystemUIFactory> T getInstance() {
return (T) mFactory;
diff --git a/packages/SystemUI/src/com/android/systemui/assist/AssistHandleReminderExpBehavior.java b/packages/SystemUI/src/com/android/systemui/assist/AssistHandleReminderExpBehavior.java
index 9793d72..8e49d58 100644
--- a/packages/SystemUI/src/com/android/systemui/assist/AssistHandleReminderExpBehavior.java
+++ b/packages/SystemUI/src/com/android/systemui/assist/AssistHandleReminderExpBehavior.java
@@ -33,6 +33,7 @@
import androidx.slice.Clock;
import com.android.internal.config.sysui.SystemUiDeviceConfigFlags;
+import com.android.systemui.BootCompleteCache;
import com.android.systemui.assist.AssistHandleBehaviorController.BehaviorController;
import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.keyguard.WakefulnessLifecycle;
@@ -83,7 +84,6 @@
private static final String[] DEFAULT_HOME_CHANGE_ACTIONS = new String[] {
PackageManagerWrapper.ACTION_PREFERRED_ACTIVITY_CHANGED,
- Intent.ACTION_BOOT_COMPLETED,
Intent.ACTION_PACKAGE_ADDED,
Intent.ACTION_PACKAGE_CHANGED,
Intent.ACTION_PACKAGE_REMOVED
@@ -150,6 +150,15 @@
mDefaultHome = getCurrentDefaultHome();
}
};
+
+ private final BootCompleteCache.BootCompleteListener mBootCompleteListener =
+ new BootCompleteCache.BootCompleteListener() {
+ @Override
+ public void onBootComplete() {
+ mDefaultHome = getCurrentDefaultHome();
+ }
+ };
+
private final IntentFilter mDefaultHomeIntentFilter;
private final Runnable mResetConsecutiveTaskSwitches = this::resetConsecutiveTaskSwitches;
@@ -163,6 +172,7 @@
private final Lazy<WakefulnessLifecycle> mWakefulnessLifecycle;
private final Lazy<PackageManagerWrapper> mPackageManagerWrapper;
private final Lazy<BroadcastDispatcher> mBroadcastDispatcher;
+ private final Lazy<BootCompleteCache> mBootCompleteCache;
private boolean mOnLockscreen;
private boolean mIsDozing;
@@ -196,7 +206,8 @@
Lazy<SysUiState> sysUiFlagContainer,
Lazy<WakefulnessLifecycle> wakefulnessLifecycle,
Lazy<PackageManagerWrapper> packageManagerWrapper,
- Lazy<BroadcastDispatcher> broadcastDispatcher) {
+ Lazy<BroadcastDispatcher> broadcastDispatcher,
+ Lazy<BootCompleteCache> bootCompleteCache) {
mClock = clock;
mHandler = handler;
mDeviceConfigHelper = deviceConfigHelper;
@@ -211,6 +222,7 @@
mDefaultHomeIntentFilter.addAction(action);
}
mBroadcastDispatcher = broadcastDispatcher;
+ mBootCompleteCache = bootCompleteCache;
}
@Override
@@ -218,6 +230,7 @@
mContext = context;
mAssistHandleCallbacks = callbacks;
mConsecutiveTaskSwitches = 0;
+ mBootCompleteCache.get().addListener(mBootCompleteListener);
mDefaultHome = getCurrentDefaultHome();
mBroadcastDispatcher.get()
.registerReceiver(mDefaultHomeBroadcastReceiver, mDefaultHomeIntentFilter);
@@ -250,6 +263,7 @@
mAssistHandleCallbacks = null;
if (mContext != null) {
mBroadcastDispatcher.get().unregisterReceiver(mDefaultHomeBroadcastReceiver);
+ mBootCompleteCache.get().removeListener(mBootCompleteListener);
Settings.Secure.putLong(mContext.getContentResolver(), LEARNING_TIME_ELAPSED_KEY, 0);
Settings.Secure.putInt(mContext.getContentResolver(), LEARNING_EVENT_COUNT_KEY, 0);
Settings.Secure.putLong(mContext.getContentResolver(), LEARNED_HINT_LAST_SHOWN_KEY, 0);
diff --git a/packages/SystemUI/src/com/android/systemui/assist/PhoneStateMonitor.java b/packages/SystemUI/src/com/android/systemui/assist/PhoneStateMonitor.java
index 8cccffa..9de6854 100644
--- a/packages/SystemUI/src/com/android/systemui/assist/PhoneStateMonitor.java
+++ b/packages/SystemUI/src/com/android/systemui/assist/PhoneStateMonitor.java
@@ -27,6 +27,7 @@
import androidx.annotation.Nullable;
+import com.android.systemui.BootCompleteCache;
import com.android.systemui.Dependency;
import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
@@ -62,7 +63,6 @@
private static final String[] DEFAULT_HOME_CHANGE_ACTIONS = new String[] {
PackageManagerWrapper.ACTION_PREFERRED_ACTIVITY_CHANGED,
- Intent.ACTION_BOOT_COMPLETED,
Intent.ACTION_PACKAGE_ADDED,
Intent.ACTION_PACKAGE_CHANGED,
Intent.ACTION_PACKAGE_REMOVED
@@ -77,13 +77,14 @@
@Inject
PhoneStateMonitor(Context context, BroadcastDispatcher broadcastDispatcher,
- Optional<Lazy<StatusBar>> statusBarOptionalLazy) {
+ Optional<Lazy<StatusBar>> statusBarOptionalLazy, BootCompleteCache bootCompleteCache) {
mContext = context;
mStatusBarOptionalLazy = statusBarOptionalLazy;
mStatusBarStateController = Dependency.get(StatusBarStateController.class);
ActivityManagerWrapper activityManagerWrapper = ActivityManagerWrapper.getInstance();
mDefaultHome = getCurrentDefaultHome();
+ bootCompleteCache.addListener(() -> mDefaultHome = getCurrentDefaultHome());
IntentFilter intentFilter = new IntentFilter();
for (String action : DEFAULT_HOME_CHANGE_ACTIONS) {
intentFilter.addAction(action);
diff --git a/packages/SystemUI/src/com/android/systemui/broadcast/BroadcastDispatcher.kt b/packages/SystemUI/src/com/android/systemui/broadcast/BroadcastDispatcher.kt
index 776189b..adb288a 100644
--- a/packages/SystemUI/src/com/android/systemui/broadcast/BroadcastDispatcher.kt
+++ b/packages/SystemUI/src/com/android/systemui/broadcast/BroadcastDispatcher.kt
@@ -56,7 +56,7 @@
* a given broadcast.
*
* Use only for IntentFilters with actions and optionally categories. It does not support,
- * permissions, schemes, data types or data authorities.
+ * permissions, schemes, data types, data authorities or priority different than 0.
* Cannot be used for getting sticky broadcasts.
*/
@Singleton
@@ -104,6 +104,7 @@
if (filter.countDataPaths() != 0) sb.append("Filter cannot contain DataPaths. ")
if (filter.countDataSchemes() != 0) sb.append("Filter cannot contain DataSchemes. ")
if (filter.countDataTypes() != 0) sb.append("Filter cannot contain DataTypes. ")
+ if (filter.priority != 0) sb.append("Filter cannot modify priority. ")
if (!TextUtils.isEmpty(sb)) throw IllegalArgumentException(sb.toString())
}
diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/Bubble.java b/packages/SystemUI/src/com/android/systemui/bubbles/Bubble.java
index c6b9090..24ee9695 100644
--- a/packages/SystemUI/src/com/android/systemui/bubbles/Bubble.java
+++ b/packages/SystemUI/src/com/android/systemui/bubbles/Bubble.java
@@ -27,9 +27,13 @@
import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
+import android.content.pm.LauncherApps;
import android.content.pm.PackageManager;
+import android.content.pm.ShortcutInfo;
import android.content.res.Resources;
+import android.graphics.Rect;
import android.graphics.drawable.Drawable;
+import android.os.Bundle;
import android.os.Parcelable;
import android.os.UserHandle;
import android.provider.Settings;
@@ -57,6 +61,7 @@
private final String mGroupId;
private String mAppName;
private Drawable mUserBadgedAppIcon;
+ private ShortcutInfo mShortcutInfo;
private boolean mInflated;
private BubbleView mIconView;
@@ -94,6 +99,14 @@
mLastUpdated = e.getSbn().getPostTime();
mGroupId = groupId(e);
+ String shortcutId = e.getSbn().getNotification().getShortcutId();
+ if (BubbleExperimentConfig.useShortcutInfoToBubble(context)
+ && shortcutId != null) {
+ mShortcutInfo = BubbleExperimentConfig.getShortcutInfo(context,
+ e.getSbn().getPackageName(),
+ e.getSbn().getUser(), shortcutId);
+ }
+
PackageManager pm = context.getPackageManager();
ApplicationInfo info;
try {
@@ -137,6 +150,21 @@
return mUserBadgedAppIcon;
}
+ @Nullable
+ public ShortcutInfo getShortcutInfo() {
+ return mShortcutInfo;
+ }
+
+ /**
+ * Whether shortcut information should be used to populate the bubble.
+ * <p>
+ * To populate the activity use {@link LauncherApps#startShortcut(ShortcutInfo, Rect, Bundle)}.
+ * To populate the icon use {@link LauncherApps#getShortcutIconDrawable(ShortcutInfo, int)}.
+ */
+ public boolean usingShortcutInfo() {
+ return BubbleExperimentConfig.isShortcutIntent(getBubbleIntent());
+ }
+
boolean isInflated() {
return mInflated;
}
@@ -293,20 +321,6 @@
return (flags & Notification.FLAG_FOREGROUND_SERVICE) != 0;
}
- /**
- * Whether this bubble was explicitly created by the user via a SysUI affordance.
- */
- boolean isUserCreated() {
- return mIsUserCreated;
- }
-
- /**
- * Set whether this bubble was explicitly created by the user via a SysUI affordance.
- */
- void setUserCreated(boolean isUserCreated) {
- mIsUserCreated = isUserCreated;
- }
-
float getDesiredHeight(Context context) {
Notification.BubbleMetadata data = mEntry.getBubbleMetadata();
boolean useRes = data.getDesiredHeightResId() != 0;
@@ -331,7 +345,7 @@
}
@Nullable
- PendingIntent getBubbleIntent(Context context) {
+ PendingIntent getBubbleIntent() {
Notification.BubbleMetadata data = mEntry.getBubbleMetadata();
if (data != null) {
return data.getIntent();
diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java
index db1185f..ed21e14 100644
--- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java
+++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java
@@ -31,6 +31,7 @@
import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
import static com.android.systemui.bubbles.BubbleDebugConfig.DEBUG_BUBBLE_CONTROLLER;
+import static com.android.systemui.bubbles.BubbleDebugConfig.DEBUG_EXPERIMENTS;
import static com.android.systemui.bubbles.BubbleDebugConfig.TAG_BUBBLES;
import static com.android.systemui.bubbles.BubbleDebugConfig.TAG_WITH_CLASS_NAME;
import static com.android.systemui.statusbar.StatusBarState.SHADE;
@@ -92,6 +93,7 @@
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import java.util.ArrayList;
+import java.util.HashSet;
import java.util.List;
import javax.inject.Inject;
@@ -145,6 +147,10 @@
// Saves notification keys of active bubbles when users are switched.
private final SparseSetArray<String> mSavedBubbleKeysPerUser;
+ // Saves notification keys of user created "fake" bubbles so that we can allow notifications
+ // like these to bubble by default. Doesn't persist across reboots, not a long-term solution.
+ private final HashSet<String> mUserCreatedBubbles;
+
// Bubbles get added to the status bar view
private final StatusBarWindowController mStatusBarWindowController;
private final ZenModeController mZenModeController;
@@ -312,6 +318,8 @@
restoreBubbles(newUserId);
mCurrentUserId = newUserId;
});
+
+ mUserCreatedBubbles = new HashSet<>();
}
/**
@@ -535,10 +543,13 @@
* @param entry the notification to show as a bubble.
*/
public void onUserCreatedBubbleFromNotification(NotificationEntry entry) {
+ if (DEBUG_EXPERIMENTS || DEBUG_BUBBLE_CONTROLLER) {
+ Log.d(TAG, "onUserCreatedBubble: " + entry.getKey());
+ }
mShadeController.get().collapsePanel(true);
entry.setFlagBubble(true);
updateBubble(entry, true /* suppressFlyout */, false /* showInShade */);
- mBubbleData.getBubbleWithKey(entry.getKey()).setUserCreated(true);
+ mUserCreatedBubbles.add(entry.getKey());
}
/**
@@ -548,8 +559,19 @@
* @param entry the notification to no longer show as a bubble.
*/
public void onUserDemotedBubbleFromNotification(NotificationEntry entry) {
+ if (DEBUG_EXPERIMENTS || DEBUG_BUBBLE_CONTROLLER) {
+ Log.d(TAG, "onUserDemotedBubble: " + entry.getKey());
+ }
entry.setFlagBubble(false);
removeBubble(entry.getKey(), DISMISS_BLOCKED);
+ mUserCreatedBubbles.remove(entry.getKey());
+ }
+
+ /**
+ * Whether this bubble was explicitly created by the user via a SysUI affordance.
+ */
+ boolean isUserCreatedBubble(String key) {
+ return mUserCreatedBubbles.contains(key);
}
/**
@@ -616,7 +638,8 @@
mNotificationEntryManager.updateNotifications(
"BubbleController.onNotificationRemoveRequested");
return true;
- } else if (!userRemovedNotif && entry != null && !bubble.isUserCreated()) {
+ } else if (!userRemovedNotif && entry != null
+ && !isUserCreatedBubble(bubble.getKey())) {
// This wasn't a user removal so we should remove the bubble as well
mBubbleData.notificationEntryRemoved(entry, DISMISS_NOTIF_CANCEL);
return false;
@@ -676,8 +699,8 @@
private final NotificationEntryListener mEntryListener = new NotificationEntryListener() {
@Override
public void onPendingEntryAdded(NotificationEntry entry) {
- Bubble b = mBubbleData.getBubbleWithKey(entry.getKey());
- BubbleExperimentConfig.adjustForExperiments(mContext, entry, b);
+ boolean previouslyUserCreated = mUserCreatedBubbles.contains(entry.getKey());
+ BubbleExperimentConfig.adjustForExperiments(mContext, entry, previouslyUserCreated);
if (mNotificationInterruptionStateProvider.shouldBubbleUp(entry)
&& canLaunchInActivityView(mContext, entry)) {
@@ -687,8 +710,8 @@
@Override
public void onPreEntryUpdated(NotificationEntry entry) {
- Bubble b = mBubbleData.getBubbleWithKey(entry.getKey());
- BubbleExperimentConfig.adjustForExperiments(mContext, entry, b);
+ boolean previouslyUserCreated = mUserCreatedBubbles.contains(entry.getKey());
+ BubbleExperimentConfig.adjustForExperiments(mContext, entry, previouslyUserCreated);
boolean shouldBubble = mNotificationInterruptionStateProvider.shouldBubbleUp(entry)
&& canLaunchInActivityView(mContext, entry);
diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleDebugConfig.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleDebugConfig.java
index b702d06..a912ecc 100644
--- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleDebugConfig.java
+++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleDebugConfig.java
@@ -37,5 +37,6 @@
static final boolean DEBUG_BUBBLE_DATA = false;
static final boolean DEBUG_BUBBLE_STACK_VIEW = false;
static final boolean DEBUG_BUBBLE_EXPANDED_VIEW = false;
+ static final boolean DEBUG_EXPERIMENTS = true;
}
diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleExpandedView.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleExpandedView.java
index e9c19d2..512b38e 100644
--- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleExpandedView.java
+++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleExpandedView.java
@@ -130,12 +130,17 @@
Log.d(TAG, "onActivityViewReady: calling startActivity, "
+ "bubble=" + getBubbleKey());
}
- Intent fillInIntent = new Intent();
- // Apply flags to make behaviour match documentLaunchMode=always.
- fillInIntent.addFlags(FLAG_ACTIVITY_NEW_DOCUMENT);
- fillInIntent.addFlags(FLAG_ACTIVITY_MULTIPLE_TASK);
try {
- mActivityView.startActivity(mBubbleIntent, fillInIntent, options);
+ if (mBubble.usingShortcutInfo()) {
+ mActivityView.startShortcutActivity(mBubble.getShortcutInfo(),
+ options, null /* sourceBounds */);
+ } else {
+ Intent fillInIntent = new Intent();
+ // Apply flags to make behaviour match documentLaunchMode=always.
+ fillInIntent.addFlags(FLAG_ACTIVITY_NEW_DOCUMENT);
+ fillInIntent.addFlags(FLAG_ACTIVITY_MULTIPLE_TASK);
+ mActivityView.startActivity(mBubbleIntent, fillInIntent, options);
+ }
} catch (RuntimeException e) {
// If there's a runtime exception here then there's something
// wrong with the intent, we can't really recover / try to populate
@@ -184,12 +189,10 @@
+ " mActivityViewStatus=" + mActivityViewStatus
+ " bubble=" + getBubbleKey());
}
- if (mBubble != null && !mBubble.isUserCreated()) {
- if (mBubble != null) {
- // Must post because this is called from a binder thread.
- post(() -> mBubbleController.removeBubble(mBubble.getKey(),
- BubbleController.DISMISS_TASK_FINISHED));
- }
+ if (mBubble != null && !mBubbleController.isUserCreatedBubble(mBubble.getKey())) {
+ // Must post because this is called from a binder thread.
+ post(() -> mBubbleController.removeBubble(mBubble.getKey(),
+ BubbleController.DISMISS_TASK_FINISHED));
}
}
};
@@ -415,7 +418,7 @@
+ getBubbleKey());
}
- mBubbleIntent = mBubble.getBubbleIntent(mContext);
+ mBubbleIntent = mBubble.getBubbleIntent();
if (mBubbleIntent != null) {
setContentVisibility(false);
mActivityView.setVisibility(VISIBLE);
diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleExperimentConfig.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleExperimentConfig.java
index b478a72..17d6737 100644
--- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleExperimentConfig.java
+++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleExperimentConfig.java
@@ -16,18 +16,47 @@
package com.android.systemui.bubbles;
+import static android.app.Notification.EXTRA_MESSAGES;
+import static android.content.pm.LauncherApps.ShortcutQuery.FLAG_MATCH_DYNAMIC;
+import static android.content.pm.LauncherApps.ShortcutQuery.FLAG_MATCH_MANIFEST;
+import static android.content.pm.LauncherApps.ShortcutQuery.FLAG_MATCH_PINNED;
+
+import static com.android.systemui.bubbles.BubbleController.canLaunchIntentInActivityView;
+import static com.android.systemui.bubbles.BubbleDebugConfig.DEBUG_EXPERIMENTS;
+import static com.android.systemui.bubbles.BubbleDebugConfig.TAG_BUBBLES;
+import static com.android.systemui.bubbles.BubbleDebugConfig.TAG_WITH_CLASS_NAME;
+
import android.app.Notification;
import android.app.PendingIntent;
+import android.app.Person;
import android.content.Context;
+import android.content.Intent;
+import android.content.pm.LauncherApps;
+import android.content.pm.ShortcutInfo;
import android.graphics.drawable.Icon;
+import android.os.Bundle;
+import android.os.Parcelable;
+import android.os.UserHandle;
import android.provider.Settings;
+import android.util.Log;
+import com.android.internal.util.ArrayUtils;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
/**
* Common class for experiments controlled via secure settings.
*/
public class BubbleExperimentConfig {
+ private static final String TAG = TAG_WITH_CLASS_NAME ? "BubbleController" : TAG_BUBBLES;
+
+ private static final String SHORTCUT_DUMMY_INTENT = "bubble_experiment_shortcut_intent";
+ private static PendingIntent sDummyShortcutIntent;
+
+ private static final int BUBBLE_HEIGHT = 10000;
private static final String ALLOW_ANY_NOTIF_TO_BUBBLE = "allow_any_notif_to_bubble";
private static final boolean ALLOW_ANY_NOTIF_TO_BUBBLE_DEFAULT = false;
@@ -35,13 +64,15 @@
private static final String ALLOW_MESSAGE_NOTIFS_TO_BUBBLE = "allow_message_notifs_to_bubble";
private static final boolean ALLOW_MESSAGE_NOTIFS_TO_BUBBLE_DEFAULT = false;
+ private static final String ALLOW_SHORTCUTS_TO_BUBBLE = "allow_shortcuts_to_bubble";
+ private static final boolean ALLOW_SHORTCUT_TO_BUBBLE_DEFAULT = false;
+
/**
* When true, if a notification has the information necessary to bubble (i.e. valid
* contentIntent and an icon or image), then a {@link android.app.Notification.BubbleMetadata}
* object will be created by the system and added to the notification.
- *
- * This does not produce a bubble, only adds the metadata. It should be used in conjunction
- * with {@see #allowNotifBubbleMenu} which shows an affordance to bubble notification content.
+ * <p>
+ * This does not produce a bubble, only adds the metadata based on the notification info.
*/
static boolean allowAnyNotifToBubble(Context context) {
return Settings.Secure.getInt(context.getContentResolver(),
@@ -60,16 +91,27 @@
}
/**
+ * When true, if the notification is able to bubble via {@link #allowAnyNotifToBubble(Context)}
+ * or {@link #allowMessageNotifsToBubble(Context)} or via normal BubbleMetadata, then a new
+ * BubbleMetadata object is constructed based on the shortcut info.
+ * <p>
+ * This does not produce a bubble, only adds the metadata based on shortcut info.
+ */
+ static boolean useShortcutInfoToBubble(Context context) {
+ return Settings.Secure.getInt(context.getContentResolver(),
+ ALLOW_SHORTCUTS_TO_BUBBLE,
+ ALLOW_SHORTCUT_TO_BUBBLE_DEFAULT ? 1 : 0) != 0;
+ }
+
+ /**
* If {@link #allowAnyNotifToBubble(Context)} is true, this method creates and adds
* {@link android.app.Notification.BubbleMetadata} to the notification entry as long as
* the notification has necessary info for BubbleMetadata.
*/
static void adjustForExperiments(Context context, NotificationEntry entry,
- Bubble previousBubble) {
- if (entry.getBubbleMetadata() != null) {
- // Has metadata, nothing to do.
- return;
- }
+ boolean previouslyUserCreated) {
+ Notification.BubbleMetadata metadata = null;
+ boolean addedMetadata = false;
Notification notification = entry.getSbn().getNotification();
boolean isMessage = Notification.MessagingStyle.class.equals(
@@ -77,22 +119,155 @@
boolean bubbleNotifForExperiment = (isMessage && allowMessageNotifsToBubble(context))
|| allowAnyNotifToBubble(context);
- final PendingIntent intent = notification.contentIntent;
- if (bubbleNotifForExperiment
- && BubbleController.canLaunchIntentInActivityView(context, entry, intent)) {
- final Icon smallIcon = entry.getSbn().getNotification().getSmallIcon();
- Notification.BubbleMetadata.Builder metadata =
- new Notification.BubbleMetadata.Builder()
- .setDesiredHeight(10000)
- .setIcon(smallIcon)
- .setIntent(intent);
- entry.setBubbleMetadata(metadata.build());
+ boolean useShortcutInfo = useShortcutInfoToBubble(context);
+ String shortcutId = entry.getSbn().getNotification().getShortcutId();
+
+ boolean hasMetadata = entry.getBubbleMetadata() != null;
+ if ((!hasMetadata && (previouslyUserCreated || bubbleNotifForExperiment))
+ || useShortcutInfo) {
+ if (DEBUG_EXPERIMENTS) {
+ Log.d(TAG, "Adjusting " + entry.getKey() + " for bubble experiment."
+ + " allowMessages=" + allowMessageNotifsToBubble(context)
+ + " isMessage=" + isMessage
+ + " allowNotifs=" + allowAnyNotifToBubble(context)
+ + " useShortcutInfo=" + useShortcutInfo
+ + " previouslyUserCreated=" + previouslyUserCreated);
+ }
}
- if (previousBubble != null) {
- // Update to a previously user-created bubble, set its flag now so the update goes
+ if (useShortcutInfo && shortcutId != null) {
+ // We don't actually get anything useful from ShortcutInfo so just check existence
+ ShortcutInfo info = getShortcutInfo(context, entry.getSbn().getPackageName(),
+ entry.getSbn().getUser(), shortcutId);
+ if (info != null) {
+ metadata = createForShortcut(context, entry);
+ }
+
+ // Replace existing metadata with shortcut, or we're bubbling for experiment
+ boolean shouldBubble = entry.getBubbleMetadata() != null
+ || bubbleNotifForExperiment
+ || previouslyUserCreated;
+ if (shouldBubble && metadata != null) {
+ if (DEBUG_EXPERIMENTS) {
+ Log.d(TAG, "Adding experimental shortcut bubble for: " + entry.getKey());
+ }
+ entry.setBubbleMetadata(metadata);
+ addedMetadata = true;
+ }
+ }
+
+ // Didn't get metadata from a shortcut & we're bubbling for experiment
+ if (entry.getBubbleMetadata() == null
+ && (bubbleNotifForExperiment || previouslyUserCreated)) {
+ metadata = createFromNotif(context, entry);
+ if (metadata != null) {
+ if (DEBUG_EXPERIMENTS) {
+ Log.d(TAG, "Adding experimental notification bubble for: " + entry.getKey());
+ }
+ entry.setBubbleMetadata(metadata);
+ addedMetadata = true;
+ }
+ }
+
+ if (previouslyUserCreated && addedMetadata) {
+ // Update to a previous bubble, set its flag now so the update goes
// to the bubble.
+ if (DEBUG_EXPERIMENTS) {
+ Log.d(TAG, "Setting FLAG_BUBBLE for: " + entry.getKey());
+ }
entry.setFlagBubble(true);
}
}
+
+ static Notification.BubbleMetadata createFromNotif(Context context, NotificationEntry entry) {
+ Notification notification = entry.getSbn().getNotification();
+ final PendingIntent intent = notification.contentIntent;
+ Icon icon = null;
+ // Use the icon of the person if available
+ List<Person> personList = getPeopleFromNotification(entry);
+ if (personList.size() > 0) {
+ icon = personList.get(0).getIcon();
+ }
+ if (icon == null) {
+ icon = notification.getLargeIcon() != null
+ ? notification.getLargeIcon()
+ : notification.getSmallIcon();
+ }
+ if (canLaunchIntentInActivityView(context, entry, intent)) {
+ return new Notification.BubbleMetadata.Builder()
+ .setDesiredHeight(BUBBLE_HEIGHT)
+ .setIcon(icon)
+ .setIntent(intent)
+ .build();
+ }
+ return null;
+ }
+
+ static Notification.BubbleMetadata createForShortcut(Context context, NotificationEntry entry) {
+ // ShortcutInfo does not return an icon, instead a Drawable, lets just use
+ // notification icon for BubbleMetadata.
+ Icon icon = entry.getSbn().getNotification().getSmallIcon();
+
+ // ShortcutInfo does not return the intent, lets make a fake but identifiable
+ // intent so we can still add bubbleMetadata
+ if (sDummyShortcutIntent == null) {
+ Intent i = new Intent(SHORTCUT_DUMMY_INTENT);
+ sDummyShortcutIntent = PendingIntent.getActivity(context, 0, i,
+ PendingIntent.FLAG_UPDATE_CURRENT);
+ }
+ return new Notification.BubbleMetadata.Builder()
+ .setDesiredHeight(BUBBLE_HEIGHT)
+ .setIcon(icon)
+ .setIntent(sDummyShortcutIntent)
+ .build();
+ }
+
+ static ShortcutInfo getShortcutInfo(Context context, String packageName, UserHandle user,
+ String shortcutId) {
+ LauncherApps launcherAppService =
+ (LauncherApps) context.getSystemService(Context.LAUNCHER_APPS_SERVICE);
+ LauncherApps.ShortcutQuery query = new LauncherApps.ShortcutQuery();
+ if (packageName != null) {
+ query.setPackage(packageName);
+ }
+ if (shortcutId != null) {
+ query.setShortcutIds(Arrays.asList(shortcutId));
+ }
+ query.setQueryFlags(FLAG_MATCH_DYNAMIC | FLAG_MATCH_PINNED | FLAG_MATCH_MANIFEST);
+ List<ShortcutInfo> shortcuts = launcherAppService.getShortcuts(query, user);
+ return shortcuts != null && shortcuts.size() > 0
+ ? shortcuts.get(0)
+ : null;
+ }
+
+ static boolean isShortcutIntent(PendingIntent intent) {
+ return intent.equals(sDummyShortcutIntent);
+ }
+
+ static List<Person> getPeopleFromNotification(NotificationEntry entry) {
+ Bundle extras = entry.getSbn().getNotification().extras;
+ ArrayList<Person> personList = new ArrayList<>();
+ if (extras == null) {
+ return personList;
+ }
+
+ List<Person> p = extras.getParcelableArrayList(Notification.EXTRA_PEOPLE_LIST);
+
+ if (p != null) {
+ personList.addAll(p);
+ }
+
+ if (Notification.MessagingStyle.class.equals(
+ entry.getSbn().getNotification().getNotificationStyle())) {
+ final Parcelable[] messages = extras.getParcelableArray(EXTRA_MESSAGES);
+ if (!ArrayUtils.isEmpty(messages)) {
+ for (Notification.MessagingStyle.Message message :
+ Notification.MessagingStyle.Message
+ .getMessagesFromBundleArray(messages)) {
+ personList.add(message.getSenderPerson());
+ }
+ }
+ }
+ return personList;
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleView.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleView.java
index 35657d3..79807b3 100644
--- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleView.java
+++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleView.java
@@ -19,6 +19,7 @@
import android.annotation.Nullable;
import android.app.Notification;
import android.content.Context;
+import android.content.pm.LauncherApps;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
@@ -243,9 +244,16 @@
}
Drawable getBubbleDrawable(Context context) {
- Notification.BubbleMetadata metadata = getEntry().getBubbleMetadata();
- Icon ic = metadata.getIcon();
- return ic.loadDrawable(context);
+ if (mBubble.getShortcutInfo() != null && mBubble.usingShortcutInfo()) {
+ LauncherApps launcherApps =
+ (LauncherApps) getContext().getSystemService(Context.LAUNCHER_APPS_SERVICE);
+ int density = getContext().getResources().getConfiguration().densityDpi;
+ return launcherApps.getShortcutIconDrawable(mBubble.getShortcutInfo(), density);
+ } else {
+ Notification.BubbleMetadata metadata = getEntry().getBubbleMetadata();
+ Icon ic = metadata.getIcon();
+ return ic.loadDrawable(context);
+ }
}
BitmapInfo getBadgedBitmap() {
diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/animation/StackAnimationController.java b/packages/SystemUI/src/com/android/systemui/bubbles/animation/StackAnimationController.java
index 2ec09a9..793f8b9 100644
--- a/packages/SystemUI/src/com/android/systemui/bubbles/animation/StackAnimationController.java
+++ b/packages/SystemUI/src/com/android/systemui/bubbles/animation/StackAnimationController.java
@@ -686,6 +686,10 @@
} else {
// If there's no other bubbles, and we were in the dismiss target, reset the flag.
mWithinDismissTarget = false;
+ // When all children are removed ensure stack position is sane
+ setStackPosition(mRestingStackPosition == null
+ ? getDefaultStartPosition()
+ : mRestingStackPosition);
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIBinder.java b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIBinder.java
index 25986c5..3cf14d6 100644
--- a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIBinder.java
+++ b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIBinder.java
@@ -25,7 +25,6 @@
import com.android.systemui.globalactions.GlobalActionsComponent;
import com.android.systemui.keyguard.KeyguardViewMediator;
import com.android.systemui.pip.PipUI;
-import com.android.systemui.power.InattentiveSleepWarningController;
import com.android.systemui.power.PowerUI;
import com.android.systemui.recents.Recents;
import com.android.systemui.recents.RecentsModule;
@@ -103,13 +102,6 @@
@ClassKey(PowerUI.class)
public abstract SystemUI bindPowerUI(PowerUI sysui);
- /** Inject into InattentiveSleepWarningController. */
- @Binds
- @IntoMap
- @ClassKey(InattentiveSleepWarningController.class)
- public abstract SystemUI bindInattentiveSleepWarningController(
- InattentiveSleepWarningController sysui);
-
/** Inject into Recents. */
@Binds
@IntoMap
diff --git a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java
index 0ac158d..9bd729e 100644
--- a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java
+++ b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java
@@ -21,6 +21,8 @@
import android.content.pm.PackageManager;
import com.android.keyguard.KeyguardUpdateMonitor;
+import com.android.systemui.BootCompleteCache;
+import com.android.systemui.BootCompleteCacheImpl;
import com.android.systemui.DumpController;
import com.android.systemui.assist.AssistModule;
import com.android.systemui.model.SysUiState;
@@ -52,6 +54,10 @@
@Module(includes = {AssistModule.class,
PeopleHubModule.class})
public abstract class SystemUIModule {
+
+ @Binds
+ abstract BootCompleteCache bindBootCompleteCache(BootCompleteCacheImpl bootCompleteCache);
+
/** */
@Binds
public abstract ContextComponentHelper bindComponentHelper(
@@ -100,4 +106,5 @@
@Singleton
@Binds
abstract NotifListBuilder bindNotifListBuilder(NotifListBuilderImpl impl);
+
}
diff --git a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIRootComponent.java b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIRootComponent.java
index 3f00f41..e9265749 100644
--- a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIRootComponent.java
+++ b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIRootComponent.java
@@ -20,6 +20,7 @@
import android.content.ContentProvider;
+import com.android.systemui.BootCompleteCacheImpl;
import com.android.systemui.Dependency;
import com.android.systemui.SystemUIAppComponentFactory;
import com.android.systemui.SystemUIFactory;
@@ -48,6 +49,12 @@
public interface SystemUIRootComponent {
/**
+ * Provides a BootCompleteCache.
+ */
+ @Singleton
+ BootCompleteCacheImpl provideBootCacheImpl();
+
+ /**
* Creates a ContextComponentHelper.
*/
@Singleton
diff --git a/packages/SystemUI/src/com/android/systemui/dock/DockManager.java b/packages/SystemUI/src/com/android/systemui/dock/DockManager.java
index c7637fb..b6f7cd0 100644
--- a/packages/SystemUI/src/com/android/systemui/dock/DockManager.java
+++ b/packages/SystemUI/src/com/android/systemui/dock/DockManager.java
@@ -35,6 +35,12 @@
int STATE_DOCKED_HIDE = 2;
/**
+ * Indicates there's no alignment info. This could happen when the device is unable to decide
+ * its alignment condition.
+ */
+ int ALIGN_STATE_UNKNOWN = -1;
+
+ /**
* Indicates there's no alignment issue.
*/
int ALIGN_STATE_GOOD = 0;
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeEvent.java b/packages/SystemUI/src/com/android/systemui/doze/DozeEvent.java
index ea1def0..d2fe394 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeEvent.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeEvent.java
@@ -28,10 +28,12 @@
* and triaging purposes.
*/
public class DozeEvent extends RichEvent {
- public static final int TOTAL_EVENT_TYPES = 19;
-
- public DozeEvent(int logLevel, int type, String reason) {
- super(logLevel, type, reason);
+ /**
+ * Initializes a doze event
+ */
+ public DozeEvent init(@EventType int type, String reason) {
+ super.init(DEBUG, type, reason);
+ return this;
}
/**
@@ -89,21 +91,6 @@
}
}
- /**
- * Builds a DozeEvent.
- */
- public static class DozeEventBuilder extends RichEvent.Builder<DozeEventBuilder> {
- @Override
- public DozeEventBuilder getBuilder() {
- return this;
- }
-
- @Override
- public RichEvent build() {
- return new DozeEvent(mLogLevel, mType, mReason);
- }
- }
-
@IntDef({PICKUP_WAKEUP, PULSE_START, PULSE_FINISH, NOTIFICATION_PULSE, DOZING, FLING,
EMERGENCY_CALL, KEYGUARD_BOUNCER_CHANGED, SCREEN_ON, SCREEN_OFF, MISSED_TICK,
TIME_TICK_SCHEDULED, KEYGUARD_VISIBILITY_CHANGE, DOZE_STATE_CHANGED, WAKE_DISPLAY,
@@ -132,6 +119,7 @@
public static final int PULSE_DROPPED = 16;
public static final int PULSE_DISABLED_BY_PROX = 17;
public static final int SENSOR_TRIGGERED = 18;
+ public static final int TOTAL_EVENT_TYPES = 19;
public static final int TOTAL_REASONS = 10;
@IntDef({PULSE_REASON_NONE, PULSE_REASON_INTENT, PULSE_REASON_NOTIFICATION,
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeLog.java b/packages/SystemUI/src/com/android/systemui/doze/DozeLog.java
index 2e4466d..fe50421 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeLog.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeLog.java
@@ -35,9 +35,11 @@
* dependency DumpController DozeLog
*/
@Singleton
-public class DozeLog extends SysuiLog {
+public class DozeLog extends SysuiLog<DozeEvent> {
private static final String TAG = "DozeLog";
+ private DozeEvent mRecycledEvent;
+
private boolean mPulsing;
private long mSince;
private SummaryStats mPickupPulseNearVibrationStats;
@@ -73,8 +75,8 @@
* Appends pickup wakeup event to the logs
*/
public void tracePickupWakeUp(boolean withinVibrationThreshold) {
- if (log(DozeEvent.PICKUP_WAKEUP,
- "withinVibrationThreshold=" + withinVibrationThreshold)) {
+ log(DozeEvent.PICKUP_WAKEUP, "withinVibrationThreshold=" + withinVibrationThreshold);
+ if (mEnabled) {
(withinVibrationThreshold ? mPickupPulseNearVibrationStats
: mPickupPulseNotNearVibrationStats).append();
}
@@ -85,27 +87,24 @@
* @param reason why the pulse started
*/
public void tracePulseStart(@DozeEvent.Reason int reason) {
- if (log(DozeEvent.PULSE_START, DozeEvent.reasonToString(reason))) {
- mPulsing = true;
- }
+ log(DozeEvent.PULSE_START, DozeEvent.reasonToString(reason));
+ if (mEnabled) mPulsing = true;
}
/**
* Appends pulse finished event to the logs
*/
public void tracePulseFinish() {
- if (log(DozeEvent.PULSE_FINISH)) {
- mPulsing = false;
- }
+ log(DozeEvent.PULSE_FINISH);
+ if (mEnabled) mPulsing = false;
}
/**
* Appends pulse event to the logs
*/
public void traceNotificationPulse() {
- if (log(DozeEvent.NOTIFICATION_PULSE)) {
- mNotificationPulseStats.append();
- }
+ log(DozeEvent.NOTIFICATION_PULSE);
+ if (mEnabled) mNotificationPulseStats.append();
}
/**
@@ -113,9 +112,8 @@
* @param dozing true if dozing, else false
*/
public void traceDozing(boolean dozing) {
- if (log(DozeEvent.DOZING, "dozing=" + dozing)) {
- mPulsing = false;
- }
+ log(DozeEvent.DOZING, "dozing=" + dozing);
+ if (mEnabled) mPulsing = false;
}
/**
@@ -133,9 +131,8 @@
* Appends emergency call event to the logs
*/
public void traceEmergencyCall() {
- if (log(DozeEvent.EMERGENCY_CALL)) {
- mEmergencyCallStats.append();
- }
+ log(DozeEvent.EMERGENCY_CALL);
+ if (mEnabled) mEmergencyCallStats.append();
}
/**
@@ -150,7 +147,8 @@
* Appends screen-on event to the logs
*/
public void traceScreenOn() {
- if (log(DozeEvent.SCREEN_ON, "pulsing=" + mPulsing)) {
+ log(DozeEvent.SCREEN_ON, "pulsing=" + mPulsing);
+ if (mEnabled) {
(mPulsing ? mScreenOnPulsingStats : mScreenOnNotPulsingStats).append();
mPulsing = false;
}
@@ -188,10 +186,8 @@
* @param showing whether the keyguard is now showing
*/
public void traceKeyguard(boolean showing) {
- if (log(DozeEvent.KEYGUARD_VISIBILITY_CHANGE, "showing=" + showing)
- && !showing) {
- mPulsing = false;
- }
+ log(DozeEvent.KEYGUARD_VISIBILITY_CHANGE, "showing=" + showing);
+ if (mEnabled && !showing) mPulsing = false;
}
/**
@@ -217,12 +213,11 @@
* @param reason why proximity result was triggered
*/
public void traceProximityResult(boolean near, long millis, @DozeEvent.Reason int reason) {
- if (log(DozeEvent.PROXIMITY_RESULT,
+ log(DozeEvent.PROXIMITY_RESULT,
" reason=" + DozeEvent.reasonToString(reason)
- + " near=" + near
- + " millis=" + millis)) {
- mProxStats[reason][near ? 0 : 1].append();
- }
+ + " near=" + near
+ + " millis=" + millis);
+ if (mEnabled) mProxStats[reason][near ? 0 : 1].append();
}
/**
@@ -250,15 +245,16 @@
}
}
- private boolean log(@DozeEvent.EventType int eventType) {
- return log(eventType, "");
+ private void log(@DozeEvent.EventType int eventType) {
+ log(eventType, "");
}
- private boolean log(@DozeEvent.EventType int eventType, String msg) {
- return super.log(new DozeEvent.DozeEventBuilder()
- .setType(eventType)
- .setReason(msg)
- .build());
+ private void log(@DozeEvent.EventType int eventType, String msg) {
+ if (mRecycledEvent != null) {
+ mRecycledEvent = log(mRecycledEvent.init(eventType, msg));
+ } else {
+ mRecycledEvent = log(new DozeEvent().init(eventType, msg));
+ }
}
/**
diff --git a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java
index 51c2ddc..b5845947 100644
--- a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java
+++ b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java
@@ -419,9 +419,7 @@
new GlobalActionsPanelPlugin.Callbacks() {
@Override
public void dismissGlobalActionsMenu() {
- if (mDialog != null) {
- mDialog.dismiss();
- }
+ dismissDialog();
}
@Override
@@ -916,6 +914,9 @@
/** {@inheritDoc} */
public void onDismiss(DialogInterface dialog) {
+ if (mDialog == dialog) {
+ mDialog = null;
+ }
mWindowManagerFuncs.onGlobalActionsHidden();
if (mShowSilentToggle) {
try {
diff --git a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsImpl.java b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsImpl.java
index d5f5a5a..53053fc 100644
--- a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsImpl.java
@@ -17,9 +17,11 @@
import static android.app.StatusBarManager.DISABLE2_GLOBAL_ACTIONS;
import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
+import android.annotation.Nullable;
+import android.annotation.StringRes;
import android.app.Dialog;
-import android.app.KeyguardManager;
import android.content.Context;
+import android.os.PowerManager;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
@@ -134,14 +136,22 @@
int color = Utils.getColorAttrDefaultColor(mContext,
com.android.systemui.R.attr.wallpaperTextColor);
- boolean onKeyguard = mContext.getSystemService(
- KeyguardManager.class).isKeyguardLocked();
ProgressBar bar = d.findViewById(R.id.progress);
bar.getIndeterminateDrawable().setTint(color);
- TextView message = d.findViewById(R.id.text1);
- message.setTextColor(color);
- if (isReboot) message.setText(R.string.reboot_to_reset_message);
+
+ TextView reasonView = d.findViewById(R.id.text1);
+ TextView messageView = d.findViewById(R.id.text2);
+
+ reasonView.setTextColor(color);
+ messageView.setTextColor(color);
+
+ messageView.setText(getRebootMessage(isReboot, reason));
+ String rebootReasonMessage = getReasonMessage(reason);
+ if (rebootReasonMessage != null) {
+ reasonView.setVisibility(View.VISIBLE);
+ reasonView.setText(rebootReasonMessage);
+ }
GradientColors colors = Dependency.get(SysuiColorExtractor.class).getNeutralColors();
background.setColor(colors.getMainColor(), false);
@@ -149,6 +159,30 @@
d.show();
}
+ @StringRes
+ private int getRebootMessage(boolean isReboot, @Nullable String reason) {
+ if (reason != null && reason.startsWith(PowerManager.REBOOT_RECOVERY_UPDATE)) {
+ return R.string.reboot_to_update_reboot;
+ } else if (reason != null && reason.equals(PowerManager.REBOOT_RECOVERY)) {
+ return R.string.reboot_to_reset_message;
+ } else if (isReboot) {
+ return R.string.reboot_to_reset_message;
+ } else {
+ return R.string.shutdown_progress;
+ }
+ }
+
+ @Nullable
+ private String getReasonMessage(@Nullable String reason) {
+ if (reason != null && reason.startsWith(PowerManager.REBOOT_RECOVERY_UPDATE)) {
+ return mContext.getString(R.string.reboot_to_update_title);
+ } else if (reason != null && reason.equals(PowerManager.REBOOT_RECOVERY)) {
+ return mContext.getString(R.string.reboot_to_reset_title);
+ } else {
+ return null;
+ }
+ }
+
@Override
public void disable(int displayId, int state1, int state2, boolean animate) {
final boolean disabled = (state2 & DISABLE2_GLOBAL_ACTIONS) != 0;
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
index f026e68..8d08b28 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
@@ -2082,7 +2082,6 @@
@Override
public void onBootCompleted() {
- mUpdateMonitor.dispatchBootCompleted();
synchronized (this) {
mBootCompleted = true;
if (mBootSendUserPresent) {
diff --git a/packages/SystemUI/src/com/android/systemui/log/Event.java b/packages/SystemUI/src/com/android/systemui/log/Event.java
index 92862a2..7bc1abf 100644
--- a/packages/SystemUI/src/com/android/systemui/log/Event.java
+++ b/packages/SystemUI/src/com/android/systemui/log/Event.java
@@ -37,20 +37,28 @@
public static final int INFO = 4;
public static final int WARN = 5;
public static final int ERROR = 6;
+ public static final @Level int DEFAULT_LOG_LEVEL = DEBUG;
private long mTimestamp;
- private @Level int mLogLevel = DEBUG;
- protected String mMessage;
+ private @Level int mLogLevel = DEFAULT_LOG_LEVEL;
+ private String mMessage = "";
- public Event(String message) {
- mTimestamp = System.currentTimeMillis();
- mMessage = message;
+ /**
+ * initialize an event with a message
+ */
+ public Event init(String message) {
+ init(DEFAULT_LOG_LEVEL, message);
+ return this;
}
- public Event(@Level int logLevel, String message) {
+ /**
+ * initialize an event with a logLevel and message
+ */
+ public Event init(@Level int logLevel, String message) {
mTimestamp = System.currentTimeMillis();
mLogLevel = logLevel;
mMessage = message;
+ return this;
}
public String getMessage() {
@@ -64,4 +72,13 @@
public @Level int getLogLevel() {
return mLogLevel;
}
+
+ /**
+ * Recycle this event
+ */
+ void recycle() {
+ mTimestamp = -1;
+ mLogLevel = DEFAULT_LOG_LEVEL;
+ mMessage = "";
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/log/RichEvent.java b/packages/SystemUI/src/com/android/systemui/log/RichEvent.java
index acf761ed..470f2b0 100644
--- a/packages/SystemUI/src/com/android/systemui/log/RichEvent.java
+++ b/packages/SystemUI/src/com/android/systemui/log/RichEvent.java
@@ -23,23 +23,21 @@
* Events are stored in {@link SysuiLog} and can be printed in a dumpsys.
*/
public abstract class RichEvent extends Event {
- private final int mType;
- private final String mReason;
+ private int mType;
/**
- * Create a rich event that includes an event type that matches with an index in the array
+ * Initializes a rich event that includes an event type that matches with an index in the array
* getEventLabels().
*/
- public RichEvent(@Event.Level int logLevel, int type, String reason) {
- super(logLevel, null);
+ public RichEvent init(@Event.Level int logLevel, int type, String reason) {
final int numEvents = getEventLabels().length;
if (type < 0 || type >= numEvents) {
throw new IllegalArgumentException("Unsupported event type. Events only supported"
+ " from 0 to " + (numEvents - 1) + ", but given type=" + type);
}
mType = type;
- mReason = reason;
- mMessage = getEventLabels()[mType] + " " + mReason;
+ super.init(logLevel, getEventLabels()[mType] + " " + reason);
+ return this;
}
/**
@@ -49,25 +47,43 @@
*/
public abstract String[] getEventLabels();
- public int getType() {
- return mType;
+ @Override
+ public void recycle() {
+ super.recycle();
+ mType = -1;
}
- public String getReason() {
- return mReason;
+ public int getType() {
+ return mType;
}
/**
* Builder to build a RichEvent.
* @param <B> Log specific builder that is extending this builder
+ * @param <E> Type of event we'll be building
*/
- public abstract static class Builder<B extends Builder<B>> {
+ public abstract static class Builder<B extends Builder<B, E>, E extends RichEvent> {
public static final int UNINITIALIZED = -1;
+ public final SysuiLog mLog;
private B mBuilder = getBuilder();
- protected int mType = UNINITIALIZED;
+ protected int mType;
protected String mReason;
- protected @Level int mLogLevel = VERBOSE;
+ protected @Level int mLogLevel;
+
+ public Builder(SysuiLog sysuiLog) {
+ mLog = sysuiLog;
+ reset();
+ }
+
+ /**
+ * Reset this builder's parameters so it can be reused to build another RichEvent.
+ */
+ public void reset() {
+ mType = UNINITIALIZED;
+ mReason = null;
+ mLogLevel = VERBOSE;
+ }
/**
* Get the log-specific builder.
@@ -75,9 +91,9 @@
public abstract B getBuilder();
/**
- * Build the log-specific event.
+ * Build the log-specific event given an event to populate.
*/
- public abstract RichEvent build();
+ public abstract E build(E e);
/**
* Optional - set the log level. Defaults to DEBUG.
diff --git a/packages/SystemUI/src/com/android/systemui/log/SysuiLog.java b/packages/SystemUI/src/com/android/systemui/log/SysuiLog.java
index f094cb9..e41032a 100644
--- a/packages/SystemUI/src/com/android/systemui/log/SysuiLog.java
+++ b/packages/SystemUI/src/com/android/systemui/log/SysuiLog.java
@@ -20,6 +20,7 @@
import android.os.SystemProperties;
import android.util.Log;
+import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
import com.android.systemui.DumpController;
import com.android.systemui.Dumpable;
@@ -39,22 +40,25 @@
* To manually view the logs via adb:
* adb shell dumpsys activity service com.android.systemui/.SystemUIService \
* dependency DumpController <SysuiLogId>
+ *
+ * Logs can be disabled by setting the following SystemProperty and then restarting the device:
+ * adb shell setprop persist.sysui.log.enabled.<id> true/false && adb reboot
+ *
+ * @param <E> Type of event we'll be logging
*/
-public class SysuiLog implements Dumpable {
+public class SysuiLog<E extends Event> implements Dumpable {
public static final SimpleDateFormat DATE_FORMAT =
new SimpleDateFormat("MM-dd HH:mm:ss", Locale.US);
- private final Object mDataLock = new Object();
+ protected final Object mDataLock = new Object();
private final String mId;
private final int mMaxLogs;
- private boolean mEnabled;
+ protected boolean mEnabled;
- @VisibleForTesting protected ArrayDeque<Event> mTimeline;
+ @VisibleForTesting protected ArrayDeque<E> mTimeline;
/**
* Creates a SysuiLog
- * To enable or disable logs, set the system property and then restart the device:
- * adb shell setprop sysui.log.enabled.<id> true/false && adb reboot
* @param dumpController where to register this logger's dumpsys
* @param id user-readable tag for this logger
* @param maxDebugLogs maximum number of logs to retain when {@link sDebuggable} is true
@@ -74,23 +78,20 @@
dumpController.registerDumpable(mId, this);
}
- public SysuiLog(DumpController dumpController, String id) {
- this(dumpController, id, DEFAULT_MAX_DEBUG_LOGS, DEFAULT_MAX_LOGS);
- }
-
/**
* Logs an event to the timeline which can be printed by the dumpsys.
* May also log to logcat if enabled.
- * @return true if event was logged, else false
+ * @return the last event that was discarded from the Timeline (can be recycled)
*/
- public boolean log(Event event) {
+ public E log(E event) {
if (!mEnabled) {
- return false;
+ return null;
}
+ E recycledEvent = null;
synchronized (mDataLock) {
if (mTimeline.size() >= mMaxLogs) {
- mTimeline.removeFirst();
+ recycledEvent = mTimeline.removeFirst();
}
mTimeline.add(event);
@@ -116,13 +117,18 @@
break;
}
}
- return true;
+
+ if (recycledEvent != null) {
+ recycledEvent.recycle();
+ }
+
+ return recycledEvent;
}
/**
* @return user-readable string of the given event with timestamp
*/
- public String eventToTimestampedString(Event event) {
+ private String eventToTimestampedString(Event event) {
StringBuilder sb = new StringBuilder();
sb.append(SysuiLog.DATE_FORMAT.format(event.getTimestamp()));
sb.append(" ");
@@ -137,9 +143,7 @@
return event.getMessage();
}
- /**
- * only call on this method if you have the mDataLock
- */
+ @GuardedBy("mDataLock")
private void dumpTimelineLocked(PrintWriter pw) {
pw.println("\tTimeline:");
@@ -162,7 +166,7 @@
}
private static boolean sDebuggable = Build.IS_DEBUGGABLE;
- private static final String SYSPROP_ENABLED_PREFIX = "sysui.log.enabled.";
+ private static final String SYSPROP_ENABLED_PREFIX = "persist.sysui.log.enabled.";
private static final boolean LOG_TO_LOGCAT_ENABLED = sDebuggable;
private static final boolean DEFAULT_ENABLED = sDebuggable;
private static final int DEFAULT_MAX_DEBUG_LOGS = 100;
diff --git a/packages/SystemUI/src/com/android/systemui/pip/PipBoundsHandler.java b/packages/SystemUI/src/com/android/systemui/pip/PipBoundsHandler.java
index 686e7db..f10274a 100644
--- a/packages/SystemUI/src/com/android/systemui/pip/PipBoundsHandler.java
+++ b/packages/SystemUI/src/com/android/systemui/pip/PipBoundsHandler.java
@@ -64,6 +64,7 @@
private IPinnedStackController mPinnedStackController;
private ComponentName mLastPipComponentName;
private float mReentrySnapFraction = INVALID_SNAP_FRACTION;
+ private Size mReentrySize = null;
private float mDefaultAspectRatio;
private float mMinAspectRatio;
@@ -162,7 +163,7 @@
public void onMovementBoundsChanged(Rect insetBounds, Rect normalBounds,
Rect animatingBounds, DisplayInfo displayInfo) {
getInsetBounds(insetBounds);
- final Rect defaultBounds = getDefaultBounds(INVALID_SNAP_FRACTION);
+ final Rect defaultBounds = getDefaultBounds(INVALID_SNAP_FRACTION, null);
normalBounds.set(defaultBounds);
if (animatingBounds.isEmpty()) {
animatingBounds.set(defaultBounds);
@@ -175,26 +176,28 @@
}
/**
- * Responds to IPinnedStackListener on saving reentry snap fraction
+ * Responds to IPinnedStackListener on saving reentry snap fraction and size
* for a given {@link ComponentName}.
*/
- public void onSaveReentrySnapFraction(ComponentName componentName, Rect bounds) {
+ public void onSaveReentryBounds(ComponentName componentName, Rect bounds) {
mReentrySnapFraction = getSnapFraction(bounds);
+ mReentrySize = new Size(bounds.width(), bounds.height());
mLastPipComponentName = componentName;
}
/**
- * Responds to IPinnedStackListener on resetting reentry snap fraction
+ * Responds to IPinnedStackListener on resetting reentry snap fraction and size
* for a given {@link ComponentName}.
*/
- public void onResetReentrySnapFraction(ComponentName componentName) {
+ public void onResetReentryBounds(ComponentName componentName) {
if (componentName.equals(mLastPipComponentName)) {
- onResetReentrySnapFractionUnchecked();
+ onResetReentryBoundsUnchecked();
}
}
- private void onResetReentrySnapFractionUnchecked() {
+ private void onResetReentryBoundsUnchecked() {
mReentrySnapFraction = INVALID_SNAP_FRACTION;
+ mReentrySize = null;
mLastPipComponentName = null;
}
@@ -233,7 +236,7 @@
public void onPrepareAnimation(Rect sourceRectHint, float aspectRatio, Rect bounds) {
final Rect destinationBounds;
if (bounds == null) {
- destinationBounds = getDefaultBounds(mReentrySnapFraction);
+ destinationBounds = getDefaultBounds(mReentrySnapFraction, mReentrySize);
} else {
destinationBounds = new Rect(bounds);
}
@@ -245,7 +248,7 @@
return;
}
mAspectRatio = aspectRatio;
- onResetReentrySnapFractionUnchecked();
+ onResetReentryBoundsUnchecked();
try {
mPinnedStackController.startAnimation(destinationBounds, sourceRectHint,
-1 /* animationDuration */);
@@ -269,13 +272,14 @@
*/
private void transformBoundsToAspectRatio(Rect stackBounds, float aspectRatio,
boolean useCurrentMinEdgeSize) {
- // Save the snap fraction, calculate the aspect ratio based on screen size
+
+ // Save the snap fraction and adjust the size based on the new aspect ratio.
final float snapFraction = mSnapAlgorithm.getSnapFraction(stackBounds,
getMovementBounds(stackBounds));
-
final int minEdgeSize = useCurrentMinEdgeSize ? mCurrentMinSize : mDefaultMinSize;
- final Size size = mSnapAlgorithm.getSizeForAspectRatio(aspectRatio, minEdgeSize,
- mDisplayInfo.logicalWidth, mDisplayInfo.logicalHeight);
+ final Size size = mSnapAlgorithm.getSizeForAspectRatio(
+ new Size(stackBounds.width(), stackBounds.height()), aspectRatio, minEdgeSize);
+
final int left = (int) (stackBounds.centerX() - size.getWidth() / 2f);
final int top = (int) (stackBounds.centerY() - size.getHeight() / 2f);
stackBounds.set(left, top, left + size.getWidth(), top + size.getHeight());
@@ -286,21 +290,20 @@
}
/**
- * @return the default bounds to show the PIP, if a {@param snapFraction} is provided, then it
- * will apply the default bounds to the provided snap fraction.
+ * @return the default bounds to show the PIP, if a {@param snapFraction} and {@param size} are
+ * provided, then it will apply the default bounds to the provided snap fraction and size.
*/
- private Rect getDefaultBounds(float snapFraction) {
- final Rect insetBounds = new Rect();
- getInsetBounds(insetBounds);
-
+ private Rect getDefaultBounds(float snapFraction, Size size) {
final Rect defaultBounds = new Rect();
- final Size size = mSnapAlgorithm.getSizeForAspectRatio(mDefaultAspectRatio,
- mDefaultMinSize, mDisplayInfo.logicalWidth, mDisplayInfo.logicalHeight);
- if (snapFraction != INVALID_SNAP_FRACTION) {
+ if (snapFraction != INVALID_SNAP_FRACTION && size != null) {
defaultBounds.set(0, 0, size.getWidth(), size.getHeight());
final Rect movementBounds = getMovementBounds(defaultBounds);
mSnapAlgorithm.applySnapFraction(defaultBounds, movementBounds, snapFraction);
} else {
+ final Rect insetBounds = new Rect();
+ getInsetBounds(insetBounds);
+ size = mSnapAlgorithm.getSizeForAspectRatio(mDefaultAspectRatio,
+ mDefaultMinSize, mDisplayInfo.logicalWidth, mDisplayInfo.logicalHeight);
Gravity.apply(mDefaultStackGravity, size.getWidth(), size.getHeight(), insetBounds,
0, Math.max(mIsImeShowing ? mImeHeight : 0,
mIsShelfShowing ? mShelfHeight : 0),
@@ -364,11 +367,19 @@
* @return the default snap fraction to apply instead of the default gravity when calculating
* the default stack bounds when first entering PiP.
*/
- private float getSnapFraction(Rect stackBounds) {
+ public float getSnapFraction(Rect stackBounds) {
return mSnapAlgorithm.getSnapFraction(stackBounds, getMovementBounds(stackBounds));
}
/**
+ * Applies the given snap fraction to the given stack bounds.
+ */
+ public void applySnapFraction(Rect stackBounds, float snapFraction) {
+ final Rect movementBounds = getMovementBounds(stackBounds);
+ mSnapAlgorithm.applySnapFraction(stackBounds, movementBounds, snapFraction);
+ }
+
+ /**
* @return the pixels for a given dp value.
*/
private int dpToPx(float dpValue, DisplayMetrics dm) {
diff --git a/packages/SystemUI/src/com/android/systemui/pip/phone/PipManager.java b/packages/SystemUI/src/com/android/systemui/pip/phone/PipManager.java
index c33b8d9..a4707cf 100644
--- a/packages/SystemUI/src/com/android/systemui/pip/phone/PipManager.java
+++ b/packages/SystemUI/src/com/android/systemui/pip/phone/PipManager.java
@@ -65,6 +65,7 @@
private final DisplayInfo mTmpDisplayInfo = new DisplayInfo();
private final Rect mTmpInsetBounds = new Rect();
private final Rect mTmpNormalBounds = new Rect();
+ private final Rect mReentryBounds = new Rect();
private PipBoundsHandler mPipBoundsHandler;
private InputConsumerController mInputConsumerController;
@@ -164,13 +165,25 @@
}
@Override
- public void onSaveReentrySnapFraction(ComponentName componentName, Rect bounds) {
- mHandler.post(() -> mPipBoundsHandler.onSaveReentrySnapFraction(componentName, bounds));
+ public void onSaveReentryBounds(ComponentName componentName, Rect bounds) {
+ mHandler.post(() -> {
+ // On phones, the expansion animation that happens on pip tap before restoring
+ // to fullscreen makes it so that the bounds received here are the expanded
+ // bounds. We want to restore to the unexpanded bounds when re-entering pip,
+ // so we save the bounds before expansion (normal) instead of the current
+ // bounds.
+ mReentryBounds.set(mTouchHandler.getNormalBounds());
+ // Apply the snap fraction of the current bounds to the normal bounds.
+ float snapFraction = mPipBoundsHandler.getSnapFraction(bounds);
+ mPipBoundsHandler.applySnapFraction(mReentryBounds, snapFraction);
+ // Save reentry bounds (normal non-expand bounds with current position applied).
+ mPipBoundsHandler.onSaveReentryBounds(componentName, mReentryBounds);
+ });
}
@Override
- public void onResetReentrySnapFraction(ComponentName componentName) {
- mHandler.post(() -> mPipBoundsHandler.onResetReentrySnapFraction(componentName));
+ public void onResetReentryBounds(ComponentName componentName) {
+ mHandler.post(() -> mPipBoundsHandler.onResetReentryBounds(componentName));
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/pip/phone/PipTouchHandler.java b/packages/SystemUI/src/com/android/systemui/pip/phone/PipTouchHandler.java
index f59b372..2e90a3e 100644
--- a/packages/SystemUI/src/com/android/systemui/pip/phone/PipTouchHandler.java
+++ b/packages/SystemUI/src/com/android/systemui/pip/phone/PipTouchHandler.java
@@ -592,6 +592,13 @@
}
/**
+ * @return the unexpanded bounds.
+ */
+ public Rect getNormalBounds() {
+ return mNormalBounds;
+ }
+
+ /**
* Gesture controlling normal movement of the PIP.
*/
private PipTouchGesture mDefaultMovementGesture = new PipTouchGesture() {
diff --git a/packages/SystemUI/src/com/android/systemui/power/InattentiveSleepWarningController.java b/packages/SystemUI/src/com/android/systemui/power/InattentiveSleepWarningController.java
deleted file mode 100644
index 7d4bd01..0000000
--- a/packages/SystemUI/src/com/android/systemui/power/InattentiveSleepWarningController.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.systemui.power;
-
-import android.content.Context;
-
-import com.android.systemui.SystemUI;
-import com.android.systemui.statusbar.CommandQueue;
-
-import javax.inject.Inject;
-import javax.inject.Singleton;
-
-/**
- * Receives messages sent from {@link com.android.server.power.InattentiveSleepWarningController}
- * and shows the appropriate inattentive sleep UI (e.g. {@link InattentiveSleepWarningView}).
- */
-@Singleton
-public class InattentiveSleepWarningController extends SystemUI implements CommandQueue.Callbacks {
- private final CommandQueue mCommandQueue;
- private InattentiveSleepWarningView mOverlayView;
-
- @Inject
- public InattentiveSleepWarningController(Context context, CommandQueue commandQueue) {
- super(context);
- mCommandQueue = commandQueue;
- }
-
- @Override
- public void start() {
- mCommandQueue.addCallback(this);
- }
-
- @Override
- public void showInattentiveSleepWarning() {
- if (mOverlayView == null) {
- mOverlayView = new InattentiveSleepWarningView(mContext);
- }
-
- mOverlayView.show();
- }
-
- @Override
- public void dismissInattentiveSleepWarning(boolean animated) {
- if (mOverlayView != null) {
- mOverlayView.dismiss(animated);
- }
- }
-}
diff --git a/packages/SystemUI/src/com/android/systemui/power/PowerNotificationWarnings.java b/packages/SystemUI/src/com/android/systemui/power/PowerNotificationWarnings.java
index 4982dd4..eb19571 100644
--- a/packages/SystemUI/src/com/android/systemui/power/PowerNotificationWarnings.java
+++ b/packages/SystemUI/src/com/android/systemui/power/PowerNotificationWarnings.java
@@ -476,7 +476,7 @@
});
d.setOnDismissListener(dialogInterface -> {
mUsbHighTempDialog = null;
- Events.writeEvent(mContext, Events.EVENT_DISMISS_USB_OVERHEAT_ALARM,
+ Events.writeEvent(Events.EVENT_DISMISS_USB_OVERHEAT_ALARM,
Events.DISMISS_REASON_USB_OVERHEAD_ALARM_CHANGED,
mKeyguard.isKeyguardLocked());
});
@@ -485,7 +485,7 @@
d.show();
mUsbHighTempDialog = d;
- Events.writeEvent(mContext, Events.EVENT_SHOW_USB_OVERHEAT_ALARM,
+ Events.writeEvent(Events.EVENT_SHOW_USB_OVERHEAT_ALARM,
Events.SHOW_REASON_USB_OVERHEAD_ALARM_CHANGED,
mKeyguard.isKeyguardLocked());
}
diff --git a/packages/SystemUI/src/com/android/systemui/power/PowerUI.java b/packages/SystemUI/src/com/android/systemui/power/PowerUI.java
index f60d9db..59ac329 100644
--- a/packages/SystemUI/src/com/android/systemui/power/PowerUI.java
+++ b/packages/SystemUI/src/com/android/systemui/power/PowerUI.java
@@ -46,6 +46,7 @@
import com.android.systemui.R;
import com.android.systemui.SystemUI;
import com.android.systemui.broadcast.BroadcastDispatcher;
+import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.phone.StatusBar;
import java.io.FileDescriptor;
@@ -60,7 +61,7 @@
import dagger.Lazy;
@Singleton
-public class PowerUI extends SystemUI {
+public class PowerUI extends SystemUI implements CommandQueue.Callbacks {
static final String TAG = "PowerUI";
static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
@@ -80,6 +81,7 @@
private PowerManager mPowerManager;
private WarningsUI mWarnings;
+ private InattentiveSleepWarningView mOverlayView;
private final Configuration mLastConfiguration = new Configuration();
private int mPlugType = 0;
private int mInvalidCharger = 0;
@@ -105,13 +107,15 @@
private IThermalEventListener mSkinThermalEventListener;
private IThermalEventListener mUsbThermalEventListener;
private final BroadcastDispatcher mBroadcastDispatcher;
+ private final CommandQueue mCommandQueue;
private final Lazy<StatusBar> mStatusBarLazy;
@Inject
public PowerUI(Context context, BroadcastDispatcher broadcastDispatcher,
- Lazy<StatusBar> statusBarLazy) {
+ CommandQueue commandQueue, Lazy<StatusBar> statusBarLazy) {
super(context);
mBroadcastDispatcher = broadcastDispatcher;
+ mCommandQueue = commandQueue;
mStatusBarLazy = statusBarLazy;
}
@@ -162,6 +166,7 @@
}
});
initThermalEventListeners();
+ mCommandQueue.addCallback(this);
}
@Override
@@ -581,6 +586,22 @@
}
}
+ @Override
+ public void showInattentiveSleepWarning() {
+ if (mOverlayView == null) {
+ mOverlayView = new InattentiveSleepWarningView(mContext);
+ }
+
+ mOverlayView.show();
+ }
+
+ @Override
+ public void dismissInattentiveSleepWarning(boolean animated) {
+ if (mOverlayView != null) {
+ mOverlayView.dismiss(animated);
+ }
+ }
+
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
pw.print("mLowBatteryAlertCloseLevel=");
pw.println(mLowBatteryAlertCloseLevel);
diff --git a/packages/SystemUI/src/com/android/systemui/privacy/OngoingPrivacyChip.kt b/packages/SystemUI/src/com/android/systemui/privacy/OngoingPrivacyChip.kt
deleted file mode 100644
index a5a915b..0000000
--- a/packages/SystemUI/src/com/android/systemui/privacy/OngoingPrivacyChip.kt
+++ /dev/null
@@ -1,110 +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 com.android.systemui.privacy
-
-import android.content.Context
-import android.util.AttributeSet
-import android.view.Gravity
-import android.view.ViewGroup
-import android.widget.FrameLayout
-import android.widget.ImageView
-import android.widget.LinearLayout
-import com.android.systemui.R
-
-class OngoingPrivacyChip @JvmOverloads constructor(
- context: Context,
- attrs: AttributeSet? = null,
- defStyleAttrs: Int = 0,
- defStyleRes: Int = 0
-) : LinearLayout(context, attrs, defStyleAttrs, defStyleRes) {
-
- private val iconMarginExpanded = context.resources.getDimensionPixelSize(
- R.dimen.ongoing_appops_chip_icon_margin_expanded)
- private val iconMarginCollapsed = context.resources.getDimensionPixelSize(
- R.dimen.ongoing_appops_chip_icon_margin_collapsed)
- private val iconSize =
- context.resources.getDimensionPixelSize(R.dimen.ongoing_appops_chip_icon_size)
- private val iconColor = context.resources.getColor(
- R.color.status_bar_clock_color, context.theme)
- private val sidePadding =
- context.resources.getDimensionPixelSize(R.dimen.ongoing_appops_chip_side_padding)
- private val backgroundDrawable = context.getDrawable(R.drawable.privacy_chip_bg)
- private lateinit var iconsContainer: LinearLayout
- private lateinit var back: FrameLayout
- var expanded = false
- set(value) {
- if (value != field) {
- field = value
- updateView()
- }
- }
-
- var builder = PrivacyDialogBuilder(context, emptyList<PrivacyItem>())
- var privacyList = emptyList<PrivacyItem>()
- set(value) {
- field = value
- builder = PrivacyDialogBuilder(context, value)
- updateView()
- }
-
- override fun onFinishInflate() {
- super.onFinishInflate()
-
- back = findViewById(R.id.background)
- iconsContainer = findViewById(R.id.icons_container)
- }
-
- // Should only be called if the builder icons or app changed
- private fun updateView() {
- back.background = if (expanded) backgroundDrawable else null
- val padding = if (expanded) sidePadding else 0
- back.setPaddingRelative(padding, 0, padding, 0)
- fun setIcons(dialogBuilder: PrivacyDialogBuilder, iconsContainer: ViewGroup) {
- iconsContainer.removeAllViews()
- dialogBuilder.generateIcons().forEachIndexed { i, it ->
- it.mutate()
- it.setTint(iconColor)
- val image = ImageView(context).apply {
- setImageDrawable(it)
- scaleType = ImageView.ScaleType.CENTER_INSIDE
- }
- iconsContainer.addView(image, iconSize, iconSize)
- if (i != 0) {
- val lp = image.layoutParams as MarginLayoutParams
- lp.marginStart = if (expanded) iconMarginExpanded else iconMarginCollapsed
- image.layoutParams = lp
- }
- }
- }
-
- if (!privacyList.isEmpty()) {
- generateContentDescription()
- setIcons(builder, iconsContainer)
- val lp = iconsContainer.layoutParams as FrameLayout.LayoutParams
- lp.gravity = Gravity.CENTER_VERTICAL or
- (if (expanded) Gravity.CENTER_HORIZONTAL else Gravity.END)
- iconsContainer.layoutParams = lp
- } else {
- iconsContainer.removeAllViews()
- }
- requestLayout()
- }
-
- private fun generateContentDescription() {
- val typesText = builder.joinTypes()
- contentDescription = context.getString(
- R.string.ongoing_privacy_chip_content_multiple_apps, typesText)
- }
-}
\ No newline at end of file
diff --git a/packages/SystemUI/src/com/android/systemui/privacy/PrivacyDialogBuilder.kt b/packages/SystemUI/src/com/android/systemui/privacy/PrivacyDialogBuilder.kt
deleted file mode 100644
index d08a373..0000000
--- a/packages/SystemUI/src/com/android/systemui/privacy/PrivacyDialogBuilder.kt
+++ /dev/null
@@ -1,56 +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 com.android.systemui.privacy
-
-import android.content.Context
-import android.graphics.drawable.Drawable
-import com.android.systemui.R
-
-class PrivacyDialogBuilder(private val context: Context, itemsList: List<PrivacyItem>) {
-
- val appsAndTypes: List<Pair<PrivacyApplication, List<PrivacyType>>>
- val types: List<PrivacyType>
- private val separator = context.getString(R.string.ongoing_privacy_dialog_separator)
- private val lastSeparator = context.getString(R.string.ongoing_privacy_dialog_last_separator)
-
- init {
- appsAndTypes = itemsList.groupBy({ it.application }, { it.privacyType })
- .toList()
- .sortedWith(compareBy({ -it.second.size }, // Sort by number of AppOps
- { it.second.min() })) // Sort by "smallest" AppOpp (Location is largest)
- types = itemsList.map { it.privacyType }.distinct().sorted()
- }
-
- fun generateIconsForApp(types: List<PrivacyType>): List<Drawable> {
- return types.sorted().map { it.getIcon(context) }
- }
-
- fun generateIcons() = types.map { it.getIcon(context) }
-
- private fun <T> List<T>.joinWithAnd(): StringBuilder {
- return subList(0, size - 1).joinTo(StringBuilder(), separator = separator).apply {
- append(lastSeparator)
- append(this@joinWithAnd.last())
- }
- }
-
- fun joinTypes(): String {
- return when (types.size) {
- 0 -> ""
- 1 -> types[0].getName(context)
- else -> types.map { it.getName(context) }.joinWithAnd().toString()
- }
- }
-}
diff --git a/packages/SystemUI/src/com/android/systemui/privacy/PrivacyItem.kt b/packages/SystemUI/src/com/android/systemui/privacy/PrivacyItem.kt
deleted file mode 100644
index 2909424..0000000
--- a/packages/SystemUI/src/com/android/systemui/privacy/PrivacyItem.kt
+++ /dev/null
@@ -1,80 +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 com.android.systemui.privacy
-
-import android.content.Context
-import android.content.pm.ApplicationInfo
-import android.content.pm.PackageManager
-import android.graphics.drawable.Drawable
-import android.os.UserHandle
-import android.util.IconDrawableFactory
-import com.android.systemui.R
-
-typealias Privacy = PrivacyType
-
-enum class PrivacyType(private val nameId: Int, val iconId: Int) {
- // This is uses the icons used by the corresponding permission groups in the AndroidManifest
- TYPE_CAMERA(R.string.privacy_type_camera,
- com.android.internal.R.drawable.perm_group_camera),
- TYPE_MICROPHONE(R.string.privacy_type_microphone,
- com.android.internal.R.drawable.perm_group_microphone),
- TYPE_LOCATION(R.string.privacy_type_location,
- com.android.internal.R.drawable.perm_group_location);
-
- fun getName(context: Context) = context.resources.getString(nameId)
-
- fun getIcon(context: Context) = context.resources.getDrawable(iconId, context.theme)
-}
-
-data class PrivacyItem(
- val privacyType: PrivacyType,
- val application: PrivacyApplication
-)
-
-data class PrivacyApplication(val packageName: String, val uid: Int, val context: Context)
- : Comparable<PrivacyApplication> {
-
- override fun compareTo(other: PrivacyApplication): Int {
- return applicationName.compareTo(other.applicationName)
- }
-
- private val applicationInfo: ApplicationInfo? by lazy {
- try {
- val userHandle = UserHandle.getUserHandleForUid(uid)
- context.createPackageContextAsUser(packageName, 0, userHandle).getPackageManager()
- .getApplicationInfo(packageName, 0)
- } catch (_: PackageManager.NameNotFoundException) {
- null
- }
- }
- val icon: Drawable by lazy {
- applicationInfo?.let {
- try {
- val iconFactory = IconDrawableFactory.newInstance(context, true)
- iconFactory.getBadgedIcon(it, UserHandle.getUserId(uid))
- } catch (_: Exception) {
- null
- }
- } ?: context.getDrawable(android.R.drawable.sym_def_app_icon)
- }
-
- val applicationName: String by lazy {
- applicationInfo?.let {
- context.packageManager.getApplicationLabel(it) as String
- } ?: packageName
- }
-
- override fun toString() = "PrivacyApplication(packageName=$packageName, uid=$uid)"
-}
diff --git a/packages/SystemUI/src/com/android/systemui/privacy/PrivacyItemController.kt b/packages/SystemUI/src/com/android/systemui/privacy/PrivacyItemController.kt
deleted file mode 100644
index d592492..0000000
--- a/packages/SystemUI/src/com/android/systemui/privacy/PrivacyItemController.kt
+++ /dev/null
@@ -1,299 +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 com.android.systemui.privacy
-
-import android.app.ActivityManager
-import android.app.AppOpsManager
-import android.content.BroadcastReceiver
-import android.content.Context
-import android.content.Intent
-import android.content.IntentFilter
-import android.os.Handler
-import android.os.Looper
-import android.os.Message
-import android.os.UserHandle
-import android.os.UserManager
-import android.provider.DeviceConfig
-import com.android.internal.annotations.VisibleForTesting
-import com.android.internal.config.sysui.SystemUiDeviceConfigFlags
-import com.android.systemui.Dumpable
-import com.android.systemui.R
-import com.android.systemui.appops.AppOpItem
-import com.android.systemui.appops.AppOpsController
-import com.android.systemui.broadcast.BroadcastDispatcher
-import com.android.systemui.dagger.qualifiers.BgHandler
-import com.android.systemui.dagger.qualifiers.MainHandler
-import java.io.FileDescriptor
-import java.io.PrintWriter
-import java.lang.ref.WeakReference
-import javax.inject.Inject
-import javax.inject.Singleton
-
-fun isPermissionsHubEnabled() = DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_PRIVACY,
- SystemUiDeviceConfigFlags.PROPERTY_PERMISSIONS_HUB_ENABLED, false)
-
-@Singleton
-class PrivacyItemController @Inject constructor(
- private val context: Context,
- private val appOpsController: AppOpsController,
- @MainHandler private val uiHandler: Handler,
- @BgHandler private val bgHandler: Handler,
- private val broadcastDispatcher: BroadcastDispatcher
-) : Dumpable {
-
- @VisibleForTesting
- internal companion object {
- val OPS = intArrayOf(AppOpsManager.OP_CAMERA,
- AppOpsManager.OP_RECORD_AUDIO,
- AppOpsManager.OP_COARSE_LOCATION,
- AppOpsManager.OP_FINE_LOCATION)
- val intents = listOf(Intent.ACTION_USER_FOREGROUND,
- Intent.ACTION_MANAGED_PROFILE_ADDED,
- Intent.ACTION_MANAGED_PROFILE_REMOVED)
- const val TAG = "PrivacyItemController"
- const val SYSTEM_UID = 1000
- const val MSG_ADD_CALLBACK = 0
- const val MSG_REMOVE_CALLBACK = 1
- const val MSG_UPDATE_LISTENING_STATE = 2
- }
-
- @VisibleForTesting
- internal var privacyList = emptyList<PrivacyItem>()
- @Synchronized get() = field.toList() // Returns a shallow copy of the list
- @Synchronized set
-
- private val userManager = context.getSystemService(UserManager::class.java)
- private var currentUserIds = emptyList<Int>()
- private var listening = false
- val systemApp =
- PrivacyApplication(context.getString(R.string.device_services), SYSTEM_UID, context)
- private val callbacks = mutableListOf<WeakReference<Callback>>()
- private val messageHandler = H(WeakReference(this), uiHandler.looper)
-
- private val notifyChanges = Runnable {
- val list = privacyList
- callbacks.forEach { it.get()?.privacyChanged(list) }
- }
-
- private val updateListAndNotifyChanges = Runnable {
- updatePrivacyList()
- uiHandler.post(notifyChanges)
- }
-
- private var indicatorsAvailable = isPermissionsHubEnabled()
- @VisibleForTesting
- internal val devicePropertiesChangedListener =
- object : DeviceConfig.OnPropertiesChangedListener {
- override fun onPropertiesChanged(properties: DeviceConfig.Properties) {
- if (DeviceConfig.NAMESPACE_PRIVACY.equals(properties.getNamespace()) &&
- properties.getKeyset().contains(
- SystemUiDeviceConfigFlags.PROPERTY_PERMISSIONS_HUB_ENABLED)) {
- indicatorsAvailable = properties.getBoolean(
- SystemUiDeviceConfigFlags.PROPERTY_PERMISSIONS_HUB_ENABLED, false)
- messageHandler.removeMessages(MSG_UPDATE_LISTENING_STATE)
- messageHandler.sendEmptyMessage(MSG_UPDATE_LISTENING_STATE)
- }
- }
- }
-
- private val cb = object : AppOpsController.Callback {
- override fun onActiveStateChanged(
- code: Int,
- uid: Int,
- packageName: String,
- active: Boolean
- ) {
- val userId = UserHandle.getUserId(uid)
- if (userId in currentUserIds) {
- update(false)
- }
- }
- }
-
- @VisibleForTesting
- internal var userSwitcherReceiver = Receiver()
- set(value) {
- context.unregisterReceiver(field)
- field = value
- registerReceiver()
- }
-
- init {
- DeviceConfig.addOnPropertiesChangedListener(
- DeviceConfig.NAMESPACE_PRIVACY,
- context.mainExecutor,
- devicePropertiesChangedListener)
- }
-
- private fun unregisterReceiver() {
- broadcastDispatcher.unregisterReceiver(userSwitcherReceiver)
- }
-
- private fun registerReceiver() {
- broadcastDispatcher.registerReceiver(userSwitcherReceiver, IntentFilter().apply {
- intents.forEach {
- addAction(it)
- }
- }, null /* handler */, UserHandle.ALL)
- }
-
- private fun update(updateUsers: Boolean) {
- if (updateUsers) {
- val currentUser = ActivityManager.getCurrentUser()
- currentUserIds = userManager.getProfiles(currentUser).map { it.id }
- }
- bgHandler.post(updateListAndNotifyChanges)
- }
-
- /**
- * Updates listening status based on whether there are callbacks and the indicators are enabled
- *
- * This is only called from private (add/remove)Callback and from the config listener, all in
- * main thread.
- */
- private fun setListeningState() {
- val listen = !callbacks.isEmpty() and indicatorsAvailable
- if (listening == listen) return
- listening = listen
- if (listening) {
- appOpsController.addCallback(OPS, cb)
- registerReceiver()
- update(true)
- } else {
- appOpsController.removeCallback(OPS, cb)
- unregisterReceiver()
- // Make sure that we remove all indicators and notify listeners if we are not
- // listening anymore due to indicators being disabled
- update(false)
- }
- }
-
- private fun addCallback(callback: WeakReference<Callback>) {
- callbacks.add(callback)
- if (callbacks.isNotEmpty() && !listening) {
- messageHandler.removeMessages(MSG_UPDATE_LISTENING_STATE)
- messageHandler.sendEmptyMessage(MSG_UPDATE_LISTENING_STATE)
- }
- // Notify this callback if we didn't set to listening
- else if (listening) uiHandler.post(NotifyChangesToCallback(callback.get(), privacyList))
- }
-
- private fun removeCallback(callback: WeakReference<Callback>) {
- // Removes also if the callback is null
- callbacks.removeIf { it.get()?.equals(callback.get()) ?: true }
- if (callbacks.isEmpty()) {
- messageHandler.removeMessages(MSG_UPDATE_LISTENING_STATE)
- messageHandler.sendEmptyMessage(MSG_UPDATE_LISTENING_STATE)
- }
- }
-
- fun addCallback(callback: Callback) {
- messageHandler.obtainMessage(MSG_ADD_CALLBACK, callback).sendToTarget()
- }
-
- fun removeCallback(callback: Callback) {
- messageHandler.obtainMessage(MSG_REMOVE_CALLBACK, callback).sendToTarget()
- }
-
- private fun updatePrivacyList() {
- if (!listening) {
- privacyList = emptyList()
- return
- }
- val list = currentUserIds.flatMap { appOpsController.getActiveAppOpsForUser(it) }
- .mapNotNull { toPrivacyItem(it) }.distinct()
- privacyList = list
- }
-
- private fun toPrivacyItem(appOpItem: AppOpItem): PrivacyItem? {
- val type: PrivacyType = when (appOpItem.code) {
- AppOpsManager.OP_CAMERA -> PrivacyType.TYPE_CAMERA
- AppOpsManager.OP_COARSE_LOCATION -> PrivacyType.TYPE_LOCATION
- AppOpsManager.OP_FINE_LOCATION -> PrivacyType.TYPE_LOCATION
- AppOpsManager.OP_RECORD_AUDIO -> PrivacyType.TYPE_MICROPHONE
- else -> return null
- }
- if (appOpItem.uid == SYSTEM_UID) return PrivacyItem(type, systemApp)
- val app = PrivacyApplication(appOpItem.packageName, appOpItem.uid, context)
- return PrivacyItem(type, app)
- }
-
- // Used by containing class to get notified of changes
- interface Callback {
- fun privacyChanged(privacyItems: List<PrivacyItem>)
- }
-
- internal inner class Receiver : BroadcastReceiver() {
- override fun onReceive(context: Context?, intent: Intent?) {
- if (intent?.action in intents) {
- update(true)
- }
- }
- }
-
- private class NotifyChangesToCallback(
- private val callback: Callback?,
- private val list: List<PrivacyItem>
- ) : Runnable {
- override fun run() {
- callback?.privacyChanged(list)
- }
- }
-
- override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<out String>) {
- pw.println("PrivacyItemController state:")
- pw.println(" Listening: $listening")
- pw.println(" Current user ids: $currentUserIds")
- pw.println(" Privacy Items:")
- privacyList.forEach {
- pw.print(" ")
- pw.println(it.toString())
- }
- pw.println(" Callbacks:")
- callbacks.forEach {
- it.get()?.let {
- pw.print(" ")
- pw.println(it.toString())
- }
- }
- }
-
- private class H(
- private val outerClass: WeakReference<PrivacyItemController>,
- looper: Looper
- ) : Handler(looper) {
- override fun handleMessage(msg: Message) {
- super.handleMessage(msg)
- when (msg.what) {
- MSG_UPDATE_LISTENING_STATE -> outerClass.get()?.setListeningState()
-
- MSG_ADD_CALLBACK -> {
- if (msg.obj !is PrivacyItemController.Callback) return
- outerClass.get()?.addCallback(
- WeakReference(msg.obj as PrivacyItemController.Callback))
- }
-
- MSG_REMOVE_CALLBACK -> {
- if (msg.obj !is PrivacyItemController.Callback) return
- outerClass.get()?.removeCallback(
- WeakReference(msg.obj as PrivacyItemController.Callback))
- }
- else -> {}
- }
- }
- }
-}
\ No newline at end of file
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSDetail.java b/packages/SystemUI/src/com/android/systemui/qs/QSDetail.java
index 60d30da..019cb14 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSDetail.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSDetail.java
@@ -28,6 +28,7 @@
import android.util.SparseArray;
import android.view.View;
import android.view.ViewGroup;
+import android.view.ViewStub;
import android.view.accessibility.AccessibilityEvent;
import android.widget.ImageView;
import android.widget.LinearLayout;
@@ -58,7 +59,8 @@
protected View mQsDetailHeader;
protected TextView mQsDetailHeaderTitle;
- protected Switch mQsDetailHeaderSwitch;
+ private ViewStub mQsDetailHeaderSwitchStub;
+ private Switch mQsDetailHeaderSwitch;
protected ImageView mQsDetailHeaderProgress;
protected QSTileHost mHost;
@@ -98,7 +100,7 @@
mQsDetailHeader = findViewById(R.id.qs_detail_header);
mQsDetailHeaderTitle = (TextView) mQsDetailHeader.findViewById(android.R.id.title);
- mQsDetailHeaderSwitch = (Switch) mQsDetailHeader.findViewById(android.R.id.toggle);
+ mQsDetailHeaderSwitchStub = mQsDetailHeader.findViewById(R.id.toggle_stub);
mQsDetailHeaderProgress = findViewById(R.id.qs_detail_header_progress);
updateDetailText();
@@ -252,9 +254,12 @@
mQsDetailHeaderTitle.setText(adapter.getTitle());
final Boolean toggleState = adapter.getToggleState();
if (toggleState == null) {
- mQsDetailHeaderSwitch.setVisibility(INVISIBLE);
+ if (mQsDetailHeaderSwitch != null) mQsDetailHeaderSwitch.setVisibility(INVISIBLE);
mQsDetailHeader.setClickable(false);
} else {
+ if (mQsDetailHeaderSwitch == null) {
+ mQsDetailHeaderSwitch = (Switch) mQsDetailHeaderSwitchStub.inflate();
+ }
mQsDetailHeaderSwitch.setVisibility(VISIBLE);
handleToggleStateChanged(toggleState, adapter.getToggleEnabled());
mQsDetailHeader.setClickable(true);
@@ -274,9 +279,9 @@
if (mAnimatingOpen) {
return;
}
- mQsDetailHeaderSwitch.setChecked(state);
+ if (mQsDetailHeaderSwitch != null) mQsDetailHeaderSwitch.setChecked(state);
mQsDetailHeader.setEnabled(toggleEnabled);
- mQsDetailHeaderSwitch.setEnabled(toggleEnabled);
+ if (mQsDetailHeaderSwitch != null) mQsDetailHeaderSwitch.setEnabled(toggleEnabled);
}
private void handleScanStateChanged(boolean state) {
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSMediaPlayer.java b/packages/SystemUI/src/com/android/systemui/qs/QSMediaPlayer.java
index 1a4c327..f7e4c79 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSMediaPlayer.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSMediaPlayer.java
@@ -18,8 +18,11 @@
import android.app.Notification;
import android.app.PendingIntent;
+import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
import android.content.res.ColorStateList;
import android.graphics.Bitmap;
import android.graphics.Canvas;
@@ -35,6 +38,7 @@
import android.media.session.PlaybackState;
import android.text.TextUtils;
import android.util.Log;
+import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -54,6 +58,8 @@
import com.android.systemui.R;
import com.android.systemui.plugins.ActivityStarter;
+import java.util.List;
+
/**
* Single media player for carousel in QSPanel
*/
@@ -70,6 +76,83 @@
private int mHeight;
private int mForegroundColor;
private int mBackgroundColor;
+ private ComponentName mRecvComponent;
+ private QSPanel mParent;
+
+ private MediaController.Callback mSessionCallback = new MediaController.Callback() {
+ @Override
+ public void onSessionDestroyed() {
+ Log.d(TAG, "session destroyed");
+ mController.unregisterCallback(mSessionCallback);
+
+ // Hide all the old buttons
+ final int[] actionIds = {
+ R.id.action0,
+ R.id.action1,
+ R.id.action2,
+ R.id.action3,
+ R.id.action4
+ };
+ for (int i = 0; i < actionIds.length; i++) {
+ ImageButton thisBtn = mMediaNotifView.findViewById(actionIds[i]);
+ if (thisBtn != null) {
+ thisBtn.setVisibility(View.GONE);
+ }
+ }
+
+ // Add a restart button
+ ImageButton btn = mMediaNotifView.findViewById(actionIds[0]);
+ btn.setOnClickListener(v -> {
+ Log.d(TAG, "Attempting to restart session");
+ // Send a media button event to previously found receiver
+ if (mRecvComponent != null) {
+ Intent intent = new Intent(Intent.ACTION_MEDIA_BUTTON);
+ intent.setComponent(mRecvComponent);
+ int keyCode = KeyEvent.KEYCODE_MEDIA_PLAY;
+ intent.putExtra(
+ Intent.EXTRA_KEY_EVENT,
+ new KeyEvent(KeyEvent.ACTION_DOWN, keyCode));
+ mContext.sendBroadcast(intent);
+ } else {
+ Log.d(TAG, "No receiver to restart");
+ // If we don't have a receiver, try relaunching the activity instead
+ try {
+ mController.getSessionActivity().send();
+ } catch (PendingIntent.CanceledException e) {
+ Log.e(TAG, "Pending intent was canceled");
+ e.printStackTrace();
+ }
+ }
+ });
+ btn.setImageDrawable(mContext.getResources().getDrawable(R.drawable.lb_ic_replay));
+ btn.setImageTintList(ColorStateList.valueOf(mForegroundColor));
+ btn.setVisibility(View.VISIBLE);
+
+ // Add long-click option to remove the player
+ ViewGroup mMediaCarousel = (ViewGroup) mMediaNotifView.getParent();
+ mMediaNotifView.setOnLongClickListener(v -> {
+ // Replace player view with delete/cancel view
+ v.setVisibility(View.GONE);
+
+ View options = LayoutInflater.from(mContext).inflate(
+ R.layout.qs_media_panel_options, null, false);
+ ImageButton btnDelete = options.findViewById(R.id.remove);
+ btnDelete.setOnClickListener(b -> {
+ mMediaCarousel.removeView(options);
+ mParent.removeMediaPlayer(QSMediaPlayer.this);
+ });
+ ImageButton btnCancel = options.findViewById(R.id.cancel);
+ btnCancel.setOnClickListener(b -> {
+ mMediaCarousel.removeView(options);
+ v.setVisibility(View.VISIBLE);
+ });
+
+ int pos = mMediaCarousel.indexOfChild(v);
+ mMediaCarousel.addView(options, pos, v.getLayoutParams());
+ return true; // consumed click
+ });
+ }
+ };
/**
*
@@ -92,7 +175,8 @@
}
/**
- *
+ * Create or update the player view for the given media session
+ * @param parent the parent QSPanel
* @param token token for this media session
* @param icon app notification icon
* @param iconColor foreground color (for text, icons)
@@ -101,13 +185,30 @@
* @param notif reference to original notification
* @param device current playback device
*/
- public void setMediaSession(MediaSession.Token token, Icon icon, int iconColor, int bgColor,
- View actionsContainer, Notification notif, MediaDevice device) {
- Log.d(TAG, "got media session: " + token);
+ public void setMediaSession(QSPanel parent, MediaSession.Token token, Icon icon, int iconColor,
+ int bgColor, View actionsContainer, Notification notif, MediaDevice device) {
+ mParent = parent;
mToken = token;
mForegroundColor = iconColor;
mBackgroundColor = bgColor;
mController = new MediaController(mContext, token);
+
+ // Try to find a receiver for the media button that matches this app
+ PackageManager pm = mContext.getPackageManager();
+ Intent it = new Intent(Intent.ACTION_MEDIA_BUTTON);
+ List<ResolveInfo> info = pm.queryBroadcastReceiversAsUser(it, 0, mContext.getUser());
+ if (info != null) {
+ for (ResolveInfo inf : info) {
+ if (inf.activityInfo.packageName.equals(notif.contentIntent.getCreatorPackage())) {
+ Log.d(TAG, "Found receiver for package: " + inf);
+ mRecvComponent = inf.getComponentInfo().getComponentName();
+ }
+ }
+ }
+
+ // reset in case we had previously restarted the stream
+ mMediaNotifView.setOnLongClickListener(null);
+ mController.registerCallback(mSessionCallback);
MediaMetadata mMediaMetadata = mController.getMetadata();
if (mMediaMetadata == null) {
Log.e(TAG, "Media metadata was null");
@@ -235,7 +336,6 @@
for (; i < actionIds.length; i++) {
ImageButton thisBtn = mMediaNotifView.findViewById(actionIds[i]);
thisBtn.setVisibility(View.GONE);
- Log.d(TAG, "hid a button");
}
}
@@ -266,8 +366,9 @@
private void addAlbumArtBackground(MediaMetadata metadata, int bgColor, int width, int height) {
Bitmap albumArt = metadata.getBitmap(MediaMetadata.METADATA_KEY_ALBUM_ART);
+ float radius = mContext.getResources().getDimension(R.dimen.qs_media_corner_radius);
if (albumArt != null) {
-
+ Log.d(TAG, "updating album art");
Bitmap original = albumArt.copy(Bitmap.Config.ARGB_8888, true);
Bitmap scaled = scaleBitmap(original, width, height);
Canvas canvas = new Canvas(scaled);
@@ -281,12 +382,15 @@
RoundedBitmapDrawable roundedDrawable = RoundedBitmapDrawableFactory.create(
mContext.getResources(), scaled);
- roundedDrawable.setCornerRadius(20);
+ roundedDrawable.setCornerRadius(radius);
mMediaNotifView.setBackground(roundedDrawable);
} else {
Log.e(TAG, "No album art available");
- mMediaNotifView.setBackground(null);
+ GradientDrawable rect = new GradientDrawable();
+ rect.setCornerRadius(radius);
+ rect.setColor(bgColor);
+ mMediaNotifView.setBackground(rect);
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java
index 5e98f93..51e352b 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java
@@ -284,7 +284,7 @@
}
Log.d(TAG, "setting player session");
- player.setMediaSession(token, icon, iconColor, bgColor, actionsContainer,
+ player.setMediaSession(this, token, icon, iconColor, bgColor, actionsContainer,
notif.getNotification(), mDevice);
if (mMediaPlayers.size() > 0) {
@@ -303,6 +303,27 @@
return mMediaCarousel;
}
+ /**
+ * Remove the media player from the carousel
+ * @param player Player to remove
+ * @return true if removed, false if player was not found
+ */
+ protected boolean removeMediaPlayer(QSMediaPlayer player) {
+ // Remove from list
+ if (!mMediaPlayers.remove(player)) {
+ return false;
+ }
+
+ // Check if we need to collapse the carousel now
+ mMediaCarousel.removeView(player.getView());
+ if (mMediaPlayers.size() == 0) {
+ ((View) mMediaCarousel.getParent()).setVisibility(View.GONE);
+ mLocalMediaManager.stopScan();
+ mLocalMediaManager.unregisterCallback(mDeviceCallback);
+ }
+ return true;
+ }
+
protected void addDivider() {
mDivider = LayoutInflater.from(mContext).inflate(R.layout.qs_divider, this, false);
mDivider.setBackgroundColor(Utils.applyAlpha(mDivider.getAlpha(),
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QuickQSMediaPlayer.java b/packages/SystemUI/src/com/android/systemui/qs/QuickQSMediaPlayer.java
index d7b8b83..5bb882e 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QuickQSMediaPlayer.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QuickQSMediaPlayer.java
@@ -16,19 +16,27 @@
package com.android.systemui.qs;
+import android.app.PendingIntent;
+import android.content.ComponentName;
import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.content.res.ColorStateList;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
+import android.graphics.drawable.GradientDrawable;
import android.graphics.drawable.Icon;
import android.media.MediaMetadata;
import android.media.session.MediaController;
import android.media.session.MediaSession;
import android.media.session.PlaybackState;
import android.util.Log;
+import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -42,6 +50,8 @@
import com.android.systemui.R;
+import java.util.List;
+
/**
* QQS mini media player
*/
@@ -53,6 +63,54 @@
private LinearLayout mMediaNotifView;
private MediaSession.Token mToken;
private MediaController mController;
+ private int mBackgroundColor;
+ private int mForegroundColor;
+ private ComponentName mRecvComponent;
+
+ private MediaController.Callback mSessionCallback = new MediaController.Callback() {
+ @Override
+ public void onSessionDestroyed() {
+ Log.d(TAG, "session destroyed");
+ mController.unregisterCallback(mSessionCallback);
+
+ // Hide all the old buttons
+ final int[] actionIds = {R.id.action0, R.id.action1, R.id.action2};
+ for (int i = 0; i < actionIds.length; i++) {
+ ImageButton thisBtn = mMediaNotifView.findViewById(actionIds[i]);
+ if (thisBtn != null) {
+ thisBtn.setVisibility(View.GONE);
+ }
+ }
+
+ // Add a restart button
+ ImageButton btn = mMediaNotifView.findViewById(actionIds[0]);
+ btn.setOnClickListener(v -> {
+ Log.d(TAG, "Attempting to restart session");
+ // Send a media button event to previously found receiver
+ if (mRecvComponent != null) {
+ Intent intent = new Intent(Intent.ACTION_MEDIA_BUTTON);
+ intent.setComponent(mRecvComponent);
+ int keyCode = KeyEvent.KEYCODE_MEDIA_PLAY;
+ intent.putExtra(
+ Intent.EXTRA_KEY_EVENT,
+ new KeyEvent(KeyEvent.ACTION_DOWN, keyCode));
+ mContext.sendBroadcast(intent);
+ } else {
+ Log.d(TAG, "No receiver to restart");
+ // If we don't have a receiver, try relaunching the activity instead
+ try {
+ mController.getSessionActivity().send();
+ } catch (PendingIntent.CanceledException e) {
+ Log.e(TAG, "Pending intent was canceled");
+ e.printStackTrace();
+ }
+ }
+ });
+ btn.setImageDrawable(mContext.getResources().getDrawable(R.drawable.lb_ic_replay));
+ btn.setImageTintList(ColorStateList.valueOf(mForegroundColor));
+ btn.setVisibility(View.VISIBLE);
+ }
+ };
/**
*
@@ -83,34 +141,50 @@
View actionsContainer, int[] actionsToShow) {
Log.d(TAG, "Setting media session: " + token);
mToken = token;
+ mForegroundColor = iconColor;
+ mBackgroundColor = bgColor;
mController = new MediaController(mContext, token);
MediaMetadata mMediaMetadata = mController.getMetadata();
+ // Try to find a receiver for the media button that matches this app
+ PackageManager pm = mContext.getPackageManager();
+ Intent it = new Intent(Intent.ACTION_MEDIA_BUTTON);
+ List<ResolveInfo> info = pm.queryBroadcastReceiversAsUser(it, 0, mContext.getUser());
+ if (info != null) {
+ for (ResolveInfo inf : info) {
+ if (inf.activityInfo.packageName.equals(mController.getPackageName())) {
+ Log.d(TAG, "Found receiver for package: " + inf);
+ mRecvComponent = inf.getComponentInfo().getComponentName();
+ }
+ }
+ }
+ mController.registerCallback(mSessionCallback);
+
if (mMediaMetadata == null) {
Log.e(TAG, "Media metadata was null");
return;
}
// Album art
- addAlbumArtBackground(mMediaMetadata, bgColor);
+ addAlbumArtBackground(mMediaMetadata, mBackgroundColor);
// App icon
ImageView appIcon = mMediaNotifView.findViewById(R.id.icon);
Drawable iconDrawable = icon.loadDrawable(mContext);
- iconDrawable.setTint(iconColor);
+ iconDrawable.setTint(mForegroundColor);
appIcon.setImageDrawable(iconDrawable);
// Artist name
TextView appText = mMediaNotifView.findViewById(R.id.header_title);
String artistName = mMediaMetadata.getString(MediaMetadata.METADATA_KEY_ARTIST);
appText.setText(artistName);
- appText.setTextColor(iconColor);
+ appText.setTextColor(mForegroundColor);
// Song name
TextView titleText = mMediaNotifView.findViewById(R.id.header_text);
String songName = mMediaMetadata.getString(MediaMetadata.METADATA_KEY_TITLE);
titleText.setText(songName);
- titleText.setTextColor(iconColor);
+ titleText.setTextColor(mForegroundColor);
// Buttons we can display
final int[] actionIds = {R.id.action0, R.id.action1, R.id.action2};
@@ -178,6 +252,7 @@
private void addAlbumArtBackground(MediaMetadata metadata, int bgColor) {
Bitmap albumArt = metadata.getBitmap(MediaMetadata.METADATA_KEY_ALBUM_ART);
+ float radius = mContext.getResources().getDimension(R.dimen.qs_media_corner_radius);
if (albumArt != null) {
Rect bounds = new Rect();
mMediaNotifView.getBoundsOnScreen(bounds);
@@ -197,12 +272,15 @@
RoundedBitmapDrawable roundedDrawable = RoundedBitmapDrawableFactory.create(
mContext.getResources(), scaled);
- roundedDrawable.setCornerRadius(20);
+ roundedDrawable.setCornerRadius(radius);
mMediaNotifView.setBackground(roundedDrawable);
} else {
Log.e(TAG, "No album art available");
- mMediaNotifView.setBackground(null);
+ GradientDrawable rect = new GradientDrawable();
+ rect.setCornerRadius(radius);
+ rect.setColor(bgColor);
+ mMediaNotifView.setBackground(rect);
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java
index 02e8f59..e5cec87 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java
@@ -33,30 +33,24 @@
import android.graphics.Rect;
import android.media.AudioManager;
import android.os.Handler;
-import android.os.Looper;
import android.provider.AlarmClock;
-import android.provider.DeviceConfig;
import android.provider.Settings;
import android.service.notification.ZenModeConfig;
import android.text.format.DateUtils;
import android.util.AttributeSet;
import android.util.Log;
import android.util.Pair;
-import android.util.StatsLog;
import android.view.ContextThemeWrapper;
import android.view.DisplayCutout;
import android.view.View;
import android.view.WindowInsets;
import android.widget.FrameLayout;
import android.widget.ImageView;
-import android.widget.LinearLayout;
import android.widget.RelativeLayout;
-import android.widget.Space;
import android.widget.TextView;
import androidx.annotation.VisibleForTesting;
-import com.android.internal.config.sysui.SystemUiDeviceConfigFlags;
import com.android.settingslib.Utils;
import com.android.systemui.BatteryMeterView;
import com.android.systemui.DualToneHandler;
@@ -65,11 +59,6 @@
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.plugins.DarkIconDispatcher;
import com.android.systemui.plugins.DarkIconDispatcher.DarkReceiver;
-import com.android.systemui.privacy.OngoingPrivacyChip;
-import com.android.systemui.privacy.PrivacyDialogBuilder;
-import com.android.systemui.privacy.PrivacyItem;
-import com.android.systemui.privacy.PrivacyItemController;
-import com.android.systemui.privacy.PrivacyItemControllerKt;
import com.android.systemui.qs.QSDetail.Callback;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.phone.PhoneStatusBarView;
@@ -145,12 +134,8 @@
private View mRingerContainer;
private Clock mClockView;
private DateView mDateView;
- private OngoingPrivacyChip mPrivacyChip;
- private Space mSpace;
private BatteryMeterView mBatteryRemainingIcon;
- private boolean mPermissionsHubEnabled;
- private PrivacyItemController mPrivacyItemController;
private BroadcastDispatcher mBroadcastDispatcher;
private final BroadcastReceiver mRingerReceiver = new BroadcastReceiver() {
@@ -161,43 +146,18 @@
}
};
private boolean mHasTopCutout = false;
- private boolean mPrivacyChipLogged = false;
-
- private final DeviceConfig.OnPropertiesChangedListener mPropertiesListener =
- new DeviceConfig.OnPropertiesChangedListener() {
- @Override
- public void onPropertiesChanged(DeviceConfig.Properties properties) {
- if (DeviceConfig.NAMESPACE_PRIVACY.equals(properties.getNamespace())
- && properties.getKeyset()
- .contains(SystemUiDeviceConfigFlags.PROPERTY_PERMISSIONS_HUB_ENABLED)) {
- mPermissionsHubEnabled = properties.getBoolean(
- SystemUiDeviceConfigFlags.PROPERTY_PERMISSIONS_HUB_ENABLED, false);
- StatusIconContainer iconContainer = findViewById(R.id.statusIcons);
- iconContainer.setIgnoredSlots(getIgnoredIconSlots());
- }
- }
- };
-
- private PrivacyItemController.Callback mPICCallback = new PrivacyItemController.Callback() {
- @Override
- public void privacyChanged(List<PrivacyItem> privacyItems) {
- mPrivacyChip.setPrivacyList(privacyItems);
- setChipVisibility(!privacyItems.isEmpty());
- }
- };
@Inject
public QuickStatusBarHeader(@Named(VIEW_CONTEXT) Context context, AttributeSet attrs,
NextAlarmController nextAlarmController, ZenModeController zenModeController,
StatusBarIconController statusBarIconController,
- ActivityStarter activityStarter, PrivacyItemController privacyItemController,
+ ActivityStarter activityStarter,
CommandQueue commandQueue, BroadcastDispatcher broadcastDispatcher) {
super(context, attrs);
mAlarmController = nextAlarmController;
mZenController = zenModeController;
mStatusBarIconController = statusBarIconController;
mActivityStarter = activityStarter;
- mPrivacyItemController = privacyItemController;
mDualToneHandler = new DualToneHandler(
new ContextThemeWrapper(context, R.style.QSHeaderTheme));
mBroadcastDispatcher = broadcastDispatcher;
@@ -228,11 +188,8 @@
mRingerModeTextView = findViewById(R.id.ringer_mode_text);
mRingerContainer = findViewById(R.id.ringer_container);
mRingerContainer.setOnClickListener(this::onClick);
- mPrivacyChip = findViewById(R.id.privacy_chip);
- mPrivacyChip.setOnClickListener(this::onClick);
mCarrierGroup = findViewById(R.id.carrier_group);
-
updateResources();
Rect tintArea = new Rect(0, 0, 0, 0);
@@ -252,7 +209,6 @@
mClockView = findViewById(R.id.clock);
mClockView.setOnClickListener(this);
mDateView = findViewById(R.id.date);
- mSpace = findViewById(R.id.space);
// Tint for the battery icons are handled in setupHost()
mBatteryRemainingIcon = findViewById(R.id.batteryRemainingIcon);
@@ -263,8 +219,6 @@
mBatteryRemainingIcon.setPercentShowMode(BatteryMeterView.MODE_ESTIMATE);
mRingerModeTextView.setSelected(true);
mNextAlarmTextView.setSelected(true);
-
- mPermissionsHubEnabled = PrivacyItemControllerKt.isPermissionsHubEnabled();
}
private List<String> getIgnoredIconSlots() {
@@ -273,10 +227,6 @@
com.android.internal.R.string.status_bar_camera));
ignored.add(mContext.getResources().getString(
com.android.internal.R.string.status_bar_microphone));
- if (mPermissionsHubEnabled) {
- ignored.add(mContext.getResources().getString(
- com.android.internal.R.string.status_bar_location));
- }
return ignored;
}
@@ -292,21 +242,6 @@
}
}
- private void setChipVisibility(boolean chipVisible) {
- if (chipVisible && mPermissionsHubEnabled) {
- mPrivacyChip.setVisibility(View.VISIBLE);
- // Makes sure that the chip is logged as viewed at most once each time QS is opened
- // mListening makes sure that the callback didn't return after the user closed QS
- if (!mPrivacyChipLogged && mListening) {
- mPrivacyChipLogged = true;
- StatsLog.write(StatsLog.PRIVACY_INDICATORS_INTERACTED,
- StatsLog.PRIVACY_INDICATORS_INTERACTED__TYPE__CHIP_VIEWED);
- }
- } else {
- mPrivacyChip.setVisibility(View.GONE);
- }
- }
-
private boolean updateRingerStatus() {
boolean isOriginalVisible = mRingerModeTextView.getVisibility() == View.VISIBLE;
CharSequence originalRingerText = mRingerModeTextView.getText();
@@ -418,7 +353,6 @@
updateStatusIconAlphaAnimator();
updateHeaderTextContainerAlphaAnimator();
- updatePrivacyChipAlphaAnimator();
}
private void updateStatusIconAlphaAnimator() {
@@ -433,12 +367,6 @@
.build();
}
- private void updatePrivacyChipAlphaAnimator() {
- mPrivacyChipAlphaAnimator = new TouchAnimator.Builder()
- .addFloat(mPrivacyChip, "alpha", 1, 0, 1)
- .build();
- }
-
public void setExpanded(boolean expanded) {
if (mExpanded == expanded) return;
mExpanded = expanded;
@@ -477,10 +405,6 @@
mHeaderTextContainerView.setVisibility(INVISIBLE);
}
}
- if (mPrivacyChipAlphaAnimator != null) {
- mPrivacyChip.setExpanded(expansionFraction > 0.5);
- mPrivacyChipAlphaAnimator.setPosition(keyguardExpansionFraction);
- }
}
public void disable(int state1, int state2, boolean animate) {
@@ -498,9 +422,6 @@
super.onAttachedToWindow();
mStatusBarIconController.addIconGroup(mIconManager);
requestApplyInsets();
- // Change the ignored slots when DeviceConfig flag changes
- DeviceConfig.addOnPropertiesChangedListener(DeviceConfig.NAMESPACE_PRIVACY,
- mContext.getMainExecutor(), mPropertiesListener);
}
@Override
@@ -516,21 +437,6 @@
mSystemIconsView.setPadding(padding.first, 0, padding.second, 0);
}
- LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) mSpace.getLayoutParams();
- if (cutout != null) {
- Rect topCutout = cutout.getBoundingRectTop();
- if (topCutout.isEmpty()) {
- mHasTopCutout = false;
- lp.width = 0;
- mSpace.setVisibility(View.GONE);
- } else {
- mHasTopCutout = true;
- lp.width = topCutout.width();
- mSpace.setVisibility(View.VISIBLE);
- }
- }
- mSpace.setLayoutParams(lp);
- setChipVisibility(mPrivacyChip.getVisibility() == View.VISIBLE);
return super.onApplyWindowInsets(insets);
}
@@ -539,7 +445,6 @@
public void onDetachedFromWindow() {
setListening(false);
mStatusBarIconController.removeIconGroup(mIconManager);
- DeviceConfig.removeOnPropertiesChangedListener(mPropertiesListener);
super.onDetachedFromWindow();
}
@@ -555,13 +460,10 @@
mAlarmController.addCallback(this);
mBroadcastDispatcher.registerReceiver(mRingerReceiver,
new IntentFilter(AudioManager.INTERNAL_RINGER_MODE_CHANGED_ACTION));
- mPrivacyItemController.addCallback(mPICCallback);
} else {
mZenController.removeCallback(this);
mAlarmController.removeCallback(this);
- mPrivacyItemController.removeCallback(mPICCallback);
mBroadcastDispatcher.unregisterReceiver(mRingerReceiver);
- mPrivacyChipLogged = false;
}
}
@@ -579,18 +481,6 @@
mActivityStarter.postStartActivityDismissingKeyguard(new Intent(
AlarmClock.ACTION_SHOW_ALARMS), 0);
}
- } else if (v == mPrivacyChip) {
- // Makes sure that the builder is grabbed as soon as the chip is pressed
- PrivacyDialogBuilder builder = mPrivacyChip.getBuilder();
- if (builder.getAppsAndTypes().size() == 0) return;
- Handler mUiHandler = new Handler(Looper.getMainLooper());
- StatsLog.write(StatsLog.PRIVACY_INDICATORS_INTERACTED,
- StatsLog.PRIVACY_INDICATORS_INTERACTED__TYPE__CHIP_CLICKED);
- mUiHandler.post(() -> {
- mActivityStarter.postStartActivityDismissingKeyguard(
- new Intent(Intent.ACTION_REVIEW_ONGOING_PERMISSION_USAGE), 0);
- mHost.collapsePanels();
- });
} else if (v == mRingerContainer && mRingerContainer.isVisibleToUser()) {
mActivityStarter.postStartActivityDismissingKeyguard(new Intent(
Settings.ACTION_SOUND_SETTINGS), 0);
diff --git a/packages/SystemUI/src/com/android/systemui/qs/customize/CustomizeTileView.java b/packages/SystemUI/src/com/android/systemui/qs/customize/CustomizeTileView.java
index 20e3cee..47cb45b 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/customize/CustomizeTileView.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/customize/CustomizeTileView.java
@@ -49,4 +49,9 @@
protected boolean animationsEnabled() {
return false;
}
+
+ @Override
+ public boolean isLongClickable() {
+ return false;
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizer.java b/packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizer.java
index ff34be0..1de6355 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizer.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizer.java
@@ -32,6 +32,7 @@
import android.widget.Toolbar;
import android.widget.Toolbar.OnMenuItemClickListener;
+import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
import androidx.recyclerview.widget.DefaultItemAnimator;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
@@ -118,7 +119,13 @@
mTileQueryHelper.setListener(mTileAdapter);
mRecyclerView.setAdapter(mTileAdapter);
mTileAdapter.getItemTouchHelper().attachToRecyclerView(mRecyclerView);
- GridLayoutManager layout = new GridLayoutManager(getContext(), 3);
+ GridLayoutManager layout = new GridLayoutManager(getContext(), 3) {
+ @Override
+ public void onInitializeAccessibilityNodeInfoForItem(RecyclerView.Recycler recycler,
+ RecyclerView.State state, View host, AccessibilityNodeInfoCompat info) {
+ // Do not read row and column every time it changes.
+ }
+ };
layout.setSpanSizeLookup(mTileAdapter.getSizeLookup());
mRecyclerView.setLayoutManager(layout);
mRecyclerView.addItemDecoration(mTileAdapter.getItemDecoration());
diff --git a/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java b/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java
index bd3297b..3afc460 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java
@@ -238,9 +238,21 @@
return true;
}
+ private void setSelectableForHeaders(View view) {
+ if (mAccessibilityManager.isTouchExplorationEnabled()) {
+ final boolean selectable = mAccessibilityAction == ACTION_NONE;
+ view.setFocusable(selectable);
+ view.setImportantForAccessibility(selectable
+ ? View.IMPORTANT_FOR_ACCESSIBILITY_YES
+ : View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS);
+ view.setFocusableInTouchMode(selectable);
+ }
+ }
+
@Override
public void onBindViewHolder(final Holder holder, int position) {
if (holder.getItemViewType() == TYPE_HEADER) {
+ setSelectableForHeaders(holder.itemView);
return;
}
if (holder.getItemViewType() == TYPE_DIVIDER) {
@@ -260,6 +272,8 @@
}
((TextView) holder.itemView.findViewById(android.R.id.title)).setText(titleText);
+ setSelectableForHeaders(holder.itemView);
+
return;
}
if (holder.getItemViewType() == TYPE_ACCESSIBLE_DROP) {
@@ -306,6 +320,7 @@
holder.mTileView.setImportantForAccessibility(selectable
? View.IMPORTANT_FOR_ACCESSIBILITY_YES
: View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS);
+ holder.mTileView.setFocusableInTouchMode(selectable);
if (selectable) {
holder.mTileView.setOnClickListener(new OnClickListener() {
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/HotspotTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/HotspotTile.java
index 16a3975..001e094 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/HotspotTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/HotspotTile.java
@@ -73,7 +73,6 @@
if (listening) {
refreshState();
}
- mHotspotController.handleSetListening(listening);
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/UiModeNightTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/UiModeNightTile.java
index dc9a2ce..9fe9703 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/UiModeNightTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/UiModeNightTile.java
@@ -22,6 +22,7 @@
import android.provider.Settings;
import android.service.quicksettings.Tile;
import android.text.TextUtils;
+import android.widget.Switch;
import com.android.internal.logging.nano.MetricsProto;
import com.android.systemui.R;
@@ -112,6 +113,7 @@
state.state = state.value ? Tile.STATE_ACTIVE : Tile.STATE_INACTIVE;
}
state.showRippleEffect = false;
+ state.expandedAccessibilityClassName = Switch.class.getName();
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java b/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java
index 66cd919..fedd855 100644
--- a/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java
+++ b/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java
@@ -19,6 +19,7 @@
import static android.content.Context.NOTIFICATION_SERVICE;
import static android.os.AsyncTask.THREAD_POOL_EXECUTOR;
import static android.provider.DeviceConfig.NAMESPACE_SYSTEMUI;
+import static android.view.View.VISIBLE;
import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
import static com.android.internal.config.sysui.SystemUiDeviceConfigFlags.SCREENSHOT_CORNER_FLOW;
@@ -69,6 +70,8 @@
import android.view.WindowManager;
import android.view.animation.Interpolator;
import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
import android.widget.Toast;
import com.android.internal.annotations.VisibleForTesting;
@@ -89,7 +92,6 @@
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import java.util.function.Consumer;
-import java.util.function.Function;
import javax.inject.Inject;
import javax.inject.Singleton;
@@ -110,7 +112,7 @@
public Bitmap image;
public Uri imageUri;
public Consumer<Uri> finisher;
- public Function<PendingIntent, Void> onEditReady;
+ public GlobalScreenshot.ActionsReadyListener mActionsReadyListener;
public int iconSize;
public int previewWidth;
public int previewheight;
@@ -127,6 +129,10 @@
}
}
+ abstract static class ActionsReadyListener {
+ abstract void onActionsReady(PendingIntent shareAction, PendingIntent editAction);
+ }
+
// These strings are used for communicating the action invoked to
// ScreenshotNotificationSmartActionsProvider.
static final String EXTRA_ACTION_TYPE = "android:screenshot_action_type";
@@ -175,6 +181,10 @@
private ImageView mBackgroundView;
private ImageView mScreenshotView;
private ImageView mScreenshotFlash;
+ private LinearLayout mActionsView;
+ private TextView mShareAction;
+ private TextView mEditAction;
+ private TextView mScrollAction;
private AnimatorSet mScreenshotAnimation;
@@ -211,17 +221,31 @@
mScreenshotLayout = layoutInflater.inflate(R.layout.global_screenshot, null);
mBackgroundView = mScreenshotLayout.findViewById(R.id.global_screenshot_background);
mScreenshotView = mScreenshotLayout.findViewById(R.id.global_screenshot);
+ mActionsView = mScreenshotLayout.findViewById(R.id.global_screenshot_actions);
+
+ mShareAction = (TextView) layoutInflater.inflate(
+ R.layout.global_screenshot_action_chip, mActionsView, false);
+ mEditAction = (TextView) layoutInflater.inflate(
+ R.layout.global_screenshot_action_chip, mActionsView, false);
+ mScrollAction = (TextView) layoutInflater.inflate(
+ R.layout.global_screenshot_action_chip, mActionsView, false);
+
+ mShareAction.setText(com.android.internal.R.string.share);
+ mEditAction.setText(com.android.internal.R.string.screenshot_edit);
+ mScrollAction.setText("Scroll"); // TODO (mkephart): Add to resources and translate
+
+ mActionsView.addView(mShareAction);
+ mActionsView.addView(mEditAction);
+ mActionsView.addView(mScrollAction);
+
mScreenshotFlash = mScreenshotLayout.findViewById(R.id.global_screenshot_flash);
mScreenshotSelectorView = mScreenshotLayout.findViewById(R.id.global_screenshot_selector);
mScreenshotLayout.setFocusable(true);
mScreenshotSelectorView.setFocusable(true);
mScreenshotSelectorView.setFocusableInTouchMode(true);
- mScreenshotLayout.setOnTouchListener(new View.OnTouchListener() {
- @Override
- public boolean onTouch(View v, MotionEvent event) {
- // Intercept and ignore all touch events
- return true;
- }
+ mScreenshotLayout.setOnTouchListener((v, event) -> {
+ // Intercept and ignore all touch events
+ return true;
});
// Setup the window that we are going to use
@@ -271,13 +295,13 @@
* Creates a new worker thread and saves the screenshot to the media store.
*/
private void saveScreenshotInWorkerThread(
- Consumer<Uri> finisher, @Nullable Function<PendingIntent, Void> onEditReady) {
+ Consumer<Uri> finisher, @Nullable ActionsReadyListener actionsReadyListener) {
SaveImageInBackgroundData data = new SaveImageInBackgroundData();
data.context = mContext;
data.image = mScreenBitmap;
data.iconSize = mNotificationIconSize;
data.finisher = finisher;
- data.onEditReady = onEditReady;
+ data.mActionsReadyListener = actionsReadyListener;
data.previewWidth = mPreviewWidth;
data.previewheight = mPreviewHeight;
if (mSaveInBgTask != null) {
@@ -395,6 +419,7 @@
// Clear any references to the bitmap
mScreenBitmap = null;
mScreenshotView.setImageBitmap(null);
+ mActionsView.setVisibility(View.GONE);
mBackgroundView.setVisibility(View.GONE);
mScreenshotView.setVisibility(View.GONE);
mScreenshotView.setLayerType(View.LAYER_TYPE_NONE, null);
@@ -441,24 +466,13 @@
saveScreenshotInWorkerThread(finisher);
clearScreenshot();
} else {
- mScreenshotView.requestFocus();
- mScreenshotView.setOnClickListener((v) -> {
- // TODO: remove once we have a better UI to show that we aren't ready yet
- Toast notReadyToast = Toast.makeText(
- mContext, "Screenshot is not ready yet", Toast.LENGTH_SHORT);
- notReadyToast.show();
- });
- saveScreenshotInWorkerThread(finisher, intent -> {
- mScreenshotHandler.post(() -> mScreenshotView.setOnClickListener(v -> {
- try {
- intent.send();
- clearScreenshot();
- } catch (PendingIntent.CanceledException e) {
- Log.e(TAG, "Edit intent cancelled", e);
- }
- mScreenshotHandler.removeMessages(MESSAGE_CORNER_TIMEOUT);
- }));
- return null;
+ saveScreenshotInWorkerThread(finisher, new ActionsReadyListener() {
+ @Override
+ void onActionsReady(PendingIntent shareAction, PendingIntent editAction) {
+ mScreenshotHandler.post(() ->
+ createScreenshotActionsShadeAnimation(shareAction, editAction)
+ .start());
+ }
});
mScreenshotHandler.sendMessageDelayed(
mScreenshotHandler.obtainMessage(MESSAGE_CORNER_TIMEOUT),
@@ -664,6 +678,49 @@
return anim;
}
+ private ValueAnimator createScreenshotActionsShadeAnimation(
+ PendingIntent shareAction, PendingIntent editAction) {
+ ValueAnimator animator = ValueAnimator.ofFloat(0, 1);
+ mActionsView.setY(mDisplayMetrics.heightPixels);
+ mActionsView.setVisibility(VISIBLE);
+ mActionsView.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
+ float actionsViewHeight = mActionsView.getMeasuredHeight();
+ float screenshotStartHeight = mScreenshotView.getTranslationY();
+
+ animator.addUpdateListener(animation -> {
+ float t = animation.getAnimatedFraction();
+ mScreenshotView.setTranslationY(screenshotStartHeight - actionsViewHeight * t);
+ mActionsView.setY(mDisplayMetrics.heightPixels - actionsViewHeight * t);
+ });
+ animator.addListener(new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ super.onAnimationEnd(animation);
+ mScreenshotView.requestFocus();
+ mShareAction.setOnClickListener(v -> {
+ try {
+ shareAction.send();
+ clearScreenshot();
+ } catch (PendingIntent.CanceledException e) {
+ Log.e(TAG, "Share intent cancelled", e);
+ }
+ });
+ mEditAction.setOnClickListener(v -> {
+ try {
+ editAction.send();
+ clearScreenshot();
+ } catch (PendingIntent.CanceledException e) {
+ Log.e(TAG, "Edit intent cancelled", e);
+ }
+ });
+ Toast scrollNotImplemented = Toast.makeText(
+ mContext, "Not implemented", Toast.LENGTH_SHORT);
+ mScrollAction.setOnClickListener(v -> scrollNotImplemented.show());
+ }
+ });
+ return animator;
+ }
+
static void notifyScreenshotError(Context context, NotificationManager nManager, int msgResId) {
Resources r = context.getResources();
String errorMsg = r.getString(msgResId);
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/SaveImageInBackgroundTask.java b/packages/SystemUI/src/com/android/systemui/screenshot/SaveImageInBackgroundTask.java
index 5e5cf74..d2268e1 100644
--- a/packages/SystemUI/src/com/android/systemui/screenshot/SaveImageInBackgroundTask.java
+++ b/packages/SystemUI/src/com/android/systemui/screenshot/SaveImageInBackgroundTask.java
@@ -434,8 +434,8 @@
R.drawable.ic_screenshot_edit,
r.getString(com.android.internal.R.string.screenshot_edit), editAction);
notificationBuilder.addAction(editActionBuilder.build());
- if (editAction != null && mParams.onEditReady != null) {
- mParams.onEditReady.apply(editAction);
+ if (mParams.mActionsReadyListener != null) {
+ mParams.mActionsReadyListener.onActionsReady(shareAction, editAction);
}
// Create a delete action for the notification
@@ -472,7 +472,7 @@
GlobalScreenshot.notifyScreenshotError(mParams.context, mNotificationManager,
mParams.errorMsgResId);
} else {
- if (mParams.onEditReady != null) {
+ if (mParams.mActionsReadyListener != null) {
// Cancel the "saving screenshot" notification
mNotificationManager.cancel(
SystemMessageProto.SystemMessage.NOTE_GLOBAL_SCREENSHOT);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/FeatureFlags.java b/packages/SystemUI/src/com/android/systemui/statusbar/FeatureFlags.java
index 341c49a..4c4112f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/FeatureFlags.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/FeatureFlags.java
@@ -57,7 +57,7 @@
}
public boolean isNewNotifPipelineEnabled() {
- return getDeviceConfigFlag("notification.newpipeline.enabled", false);
+ return getDeviceConfigFlag("notification.newpipeline.enabled", true);
}
private void onPropertiesChanged(@NonNull DeviceConfig.Properties properties) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManager.java
index 4cc5b21..ff4ce94 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManager.java
@@ -65,8 +65,18 @@
boolean needsRedaction(NotificationEntry entry);
+ /**
+ * Has the given user chosen to allow their private (full) notifications to be shown even
+ * when the lockscreen is in "public" (secure & locked) mode?
+ */
boolean userAllowsPrivateNotificationsInPublic(int currentUserId);
+ /**
+ * Has the given user chosen to allow notifications to be shown even when the lockscreen is in
+ * "public" (secure & locked) mode?
+ */
+ boolean userAllowsNotificationsInPublic(int userId);
+
/** Notified when the current user changes. */
interface UserChangedListener {
void onUserChanged(int userId);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerImpl.java
index f5710a8..0f3f6b7 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerImpl.java
@@ -435,7 +435,7 @@
* Has the given user chosen to allow notifications to be shown even when the lockscreen is in
* "public" (secure & locked) mode?
*/
- private boolean userAllowsNotificationsInPublic(int userHandle) {
+ public boolean userAllowsNotificationsInPublic(int userHandle) {
if (isCurrentProfile(userHandle) && userHandle != mCurrentUserId) {
return true;
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryManager.java
index 7a58097..d81743a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryManager.java
@@ -267,14 +267,13 @@
NotificationEntry entry = mPendingNotifications.get(key);
entry.abortTask();
mPendingNotifications.remove(key);
- mNotifLog.log(NotifEvent.INFLATION_ABORTED, entry.getSbn(), null,
- "PendingNotification aborted. " + reason);
+ mNotifLog.log(NotifEvent.INFLATION_ABORTED, entry, "PendingNotification aborted"
+ + " reason=" + reason);
}
NotificationEntry addedEntry = getActiveNotificationUnfiltered(key);
if (addedEntry != null) {
addedEntry.abortTask();
- mNotifLog.log(NotifEvent.INFLATION_ABORTED, addedEntry.getSbn(),
- null, reason);
+ mNotifLog.log(NotifEvent.INFLATION_ABORTED, addedEntry.getKey() + " " + reason);
}
}
@@ -501,7 +500,7 @@
abortExistingInflation(key, "addNotification");
mPendingNotifications.put(key, entry);
- mNotifLog.log(NotifEvent.NOTIF_ADDED, entry.getSbn());
+ mNotifLog.log(NotifEvent.NOTIF_ADDED, entry);
for (NotificationEntryListener listener : mNotificationEntryListeners) {
listener.onPendingEntryAdded(entry);
}
@@ -536,7 +535,7 @@
entry.setSbn(notification);
mGroupManager.onEntryUpdated(entry, oldSbn);
- mNotifLog.log(NotifEvent.NOTIF_UPDATED, entry.getSbn(), entry.getRanking());
+ mNotifLog.log(NotifEvent.NOTIF_UPDATED, entry);
for (NotificationEntryListener listener : mNotificationEntryListeners) {
listener.onPreEntryUpdated(entry);
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationFilter.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationFilter.java
index e5f44bd..b61c1ef 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationFilter.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationFilter.java
@@ -36,7 +36,10 @@
import javax.inject.Inject;
import javax.inject.Singleton;
-/** Component which manages the various reasons a notification might be filtered out. */
+/** Component which manages the various reasons a notification might be filtered out.*/
+// TODO: delete NotificationFilter.java after migrating to new NotifPipeline b/145659174.
+// Notification filtering is taken care of across the different Coordinators (mostly
+// KeyguardCoordinator.java)
@Singleton
public class NotificationFilter {
@@ -109,7 +112,7 @@
return true;
}
- if (entry.isSuspended()) {
+ if (entry.getRanking().isSuspended()) {
return true;
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/GroupEntry.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/GroupEntry.java
index f9f3266..9ae3882 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/GroupEntry.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/GroupEntry.java
@@ -18,6 +18,8 @@
import android.annotation.Nullable;
+import com.android.internal.annotations.VisibleForTesting;
+
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
@@ -34,7 +36,8 @@
private final List<NotificationEntry> mUnmodifiableChildren =
Collections.unmodifiableList(mChildren);
- GroupEntry(String key) {
+ @VisibleForTesting
+ public GroupEntry(String key) {
super(key);
}
@@ -52,7 +55,8 @@
return mUnmodifiableChildren;
}
- void setSummary(@Nullable NotificationEntry summary) {
+ @VisibleForTesting
+ public void setSummary(@Nullable NotificationEntry summary) {
mSummary = summary;
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/ListEntry.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/ListEntry.java
index dc68c4b..6ce7fd9 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/ListEntry.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/ListEntry.java
@@ -18,6 +18,8 @@
import android.annotation.Nullable;
+import com.android.internal.annotations.VisibleForTesting;
+
/**
* Abstract superclass for top-level entries, i.e. things that can appear in the final notification
* list shown to users. In practice, this means either GroupEntries or NotificationEntries.
@@ -49,7 +51,8 @@
return mParent;
}
- void setParent(@Nullable GroupEntry parent) {
+ @VisibleForTesting
+ public void setParent(@Nullable GroupEntry parent) {
mParent = parent;
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotifListBuilderImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotifListBuilderImpl.java
index 21a4b4f..a1cfb54 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotifListBuilderImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotifListBuilderImpl.java
@@ -29,7 +29,6 @@
import android.annotation.MainThread;
import android.annotation.Nullable;
import android.util.ArrayMap;
-import android.util.Log;
import com.android.systemui.statusbar.notification.collection.listbuilder.NotifListBuilder;
import com.android.systemui.statusbar.notification.collection.listbuilder.OnBeforeRenderListListener;
@@ -40,6 +39,8 @@
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifFilter;
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifPromoter;
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.SectionsProvider;
+import com.android.systemui.statusbar.notification.logging.NotifEvent;
+import com.android.systemui.statusbar.notification.logging.NotifLog;
import com.android.systemui.util.Assert;
import com.android.systemui.util.time.SystemClock;
@@ -59,8 +60,8 @@
@MainThread
@Singleton
public class NotifListBuilderImpl implements NotifListBuilder {
-
private final SystemClock mSystemClock;
+ private final NotifLog mNotifLog;
private final List<ListEntry> mNotifList = new ArrayList<>();
@@ -86,9 +87,10 @@
private final List<ListEntry> mReadOnlyNotifList = Collections.unmodifiableList(mNotifList);
@Inject
- public NotifListBuilderImpl(SystemClock systemClock) {
+ public NotifListBuilderImpl(SystemClock systemClock, NotifLog notifLog) {
Assert.isMainThread();
mSystemClock = systemClock;
+ mNotifLog = notifLog;
}
/**
@@ -193,7 +195,8 @@
Assert.isMainThread();
mPipelineState.requireIsBefore(STATE_BUILD_STARTED);
- Log.i(TAG, "Build request received from NotifCollection");
+ mNotifLog.log(NotifEvent.ON_BUILD_LIST, "Request received from "
+ + "NotifCollection");
mAllEntries = entries;
buildList();
}
@@ -202,8 +205,7 @@
private void onFilterInvalidated(NotifFilter filter) {
Assert.isMainThread();
- // TODO: Convert these log statements (here and elsewhere) into timeline logging
- Log.i(TAG, String.format(
+ mNotifLog.log(NotifEvent.FILTER_INVALIDATED, String.format(
"Filter \"%s\" invalidated; pipeline state is %d",
filter.getName(),
mPipelineState.getState()));
@@ -214,7 +216,7 @@
private void onPromoterInvalidated(NotifPromoter filter) {
Assert.isMainThread();
- Log.i(TAG, String.format(
+ mNotifLog.log(NotifEvent.PROMOTER_INVALIDATED, String.format(
"NotifPromoter \"%s\" invalidated; pipeline state is %d",
filter.getName(),
mPipelineState.getState()));
@@ -225,7 +227,7 @@
private void onSectionsProviderInvalidated(SectionsProvider provider) {
Assert.isMainThread();
- Log.i(TAG, String.format(
+ mNotifLog.log(NotifEvent.SECTIONS_PROVIDER_INVALIDATED, String.format(
"Sections provider \"%s\" invalidated; pipeline state is %d",
provider.getName(),
mPipelineState.getState()));
@@ -236,7 +238,7 @@
private void onNotifComparatorInvalidated(NotifComparator comparator) {
Assert.isMainThread();
- Log.i(TAG, String.format(
+ mNotifLog.log(NotifEvent.COMPARATOR_INVALIDATED, String.format(
"Comparator \"%s\" invalidated; pipeline state is %d",
comparator.getName(),
mPipelineState.getState()));
@@ -254,7 +256,7 @@
* if we detect that behavior, we should crash instantly.
*/
private void buildList() {
- Log.i(TAG, "Starting notif list build #" + mIterationCount + "...");
+ mNotifLog.log(NotifEvent.START_BUILD_LIST, "Run #" + mIterationCount + "...");
mPipelineState.requireIsBefore(STATE_BUILD_STARTED);
mPipelineState.setState(STATE_BUILD_STARTED);
@@ -288,15 +290,16 @@
freeEmptyGroups();
// Step 5: Dispatch the new list, first to any listeners and then to the view layer
- Log.i(TAG, "List finalized, is:\n" + dumpList(mNotifList));
- Log.i(TAG, "Dispatching final list to listeners...");
+ mNotifLog.log(NotifEvent.DISPATCH_FINAL_LIST, "List finalized, is:\n"
+ + dumpList(mNotifList));
dispatchOnBeforeRenderList(mReadOnlyNotifList);
if (mOnRenderListListener != null) {
mOnRenderListListener.onRenderList(mReadOnlyNotifList);
}
// Step 6: We're done!
- Log.i(TAG, "Notif list build #" + mIterationCount + " completed");
+ mNotifLog.log(NotifEvent.LIST_BUILD_COMPLETE,
+ "Notif list build #" + mIterationCount + " completed");
mPipelineState.setState(STATE_IDLE);
mIterationCount++;
}
@@ -354,7 +357,7 @@
if (existingSummary == null) {
group.setSummary(entry);
} else {
- Log.w(TAG, String.format(
+ mNotifLog.log(NotifEvent.WARN, String.format(
"Duplicate summary for group '%s': '%s' vs. '%s'",
group.getKey(),
existingSummary.getKey(),
@@ -377,7 +380,8 @@
final String topLevelKey = entry.getKey();
if (mGroups.containsKey(topLevelKey)) {
- Log.wtf(TAG, "Duplicate non-group top-level key: " + topLevelKey);
+ mNotifLog.log(NotifEvent.WARN,
+ "Duplicate non-group top-level key: " + topLevelKey);
} else {
entry.setParent(ROOT_ENTRY);
out.add(entry);
@@ -539,7 +543,7 @@
private void logParentingChanges() {
for (NotificationEntry entry : mAllEntries) {
if (entry.getParent() != entry.getPreviousParent()) {
- Log.i(TAG, String.format(
+ mNotifLog.log(NotifEvent.PARENT_CHANGED, String.format(
"%s: parent changed from %s to %s",
entry.getKey(),
entry.getPreviousParent() == null
@@ -550,7 +554,7 @@
}
for (GroupEntry group : mGroups.values()) {
if (group.getParent() != group.getPreviousParent()) {
- Log.i(TAG, String.format(
+ mNotifLog.log(NotifEvent.PARENT_CHANGED, String.format(
"%s: parent changed from %s to %s",
group.getKey(),
group.getPreviousParent() == null
@@ -607,17 +611,17 @@
if (filter != entry.mExcludingFilter) {
if (entry.mExcludingFilter == null) {
- Log.i(TAG, String.format(
+ mNotifLog.log(NotifEvent.FILTER_CHANGED, String.format(
"%s: filtered out by '%s'",
entry.getKey(),
filter.getName()));
} else if (filter == null) {
- Log.i(TAG, String.format(
+ mNotifLog.log(NotifEvent.FILTER_CHANGED, String.format(
"%s: no longer filtered out (previous filter was '%s')",
entry.getKey(),
entry.mExcludingFilter.getName()));
} else {
- Log.i(TAG, String.format(
+ mNotifLog.log(NotifEvent.FILTER_CHANGED, String.format(
"%s: filter changed: '%s' -> '%s'",
entry.getKey(),
entry.mExcludingFilter,
@@ -648,23 +652,22 @@
if (promoter != entry.mNotifPromoter) {
if (entry.mNotifPromoter == null) {
- Log.i(TAG, String.format(
+ mNotifLog.log(NotifEvent.PROMOTER_CHANGED, String.format(
"%s: Entry promoted to top level by '%s'",
entry.getKey(),
promoter.getName()));
} else if (promoter == null) {
- Log.i(TAG, String.format(
+ mNotifLog.log(NotifEvent.PROMOTER_CHANGED, String.format(
"%s: Entry is no longer promoted to top level (previous promoter was '%s')",
entry.getKey(),
entry.mNotifPromoter.getName()));
} else {
- Log.i(TAG, String.format(
+ mNotifLog.log(NotifEvent.PROMOTER_CHANGED, String.format(
"%s: Top-level promoter changed: '%s' -> '%s'",
entry.getKey(),
entry.mNotifPromoter,
promoter));
}
-
entry.mNotifPromoter = promoter;
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationEntry.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationEntry.java
index 3eb55ef..232fb6d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationEntry.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationEntry.java
@@ -275,10 +275,6 @@
return mRanking.getSuppressedVisualEffects();
}
- public boolean isSuspended() {
- return mRanking.isSuspended();
- }
-
/** @see Ranking#canBubble() */
public boolean canBubble() {
return mRanking.canBubble();
@@ -951,6 +947,15 @@
}
/**
+ * Whether or not this row represents a system notification. Note that if this is
+ * {@code null}, that means we were either unable to retrieve the info or have yet to
+ * retrieve the info.
+ */
+ public Boolean isSystemNotification() {
+ return mIsSystemNotification;
+ }
+
+ /**
* Set this notification to be sensitive.
*
* @param sensitive true if the content of this notification is sensitive right now
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/Coordinator.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/Coordinator.java
new file mode 100644
index 0000000..898918e
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/Coordinator.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.statusbar.notification.collection.coordinator;
+
+import com.android.systemui.statusbar.notification.collection.NotifCollection;
+import com.android.systemui.statusbar.notification.collection.NotifCollectionListener;
+import com.android.systemui.statusbar.notification.collection.NotifLifetimeExtender;
+import com.android.systemui.statusbar.notification.collection.init.NewNotifPipeline;
+import com.android.systemui.statusbar.notification.collection.listbuilder.NotifListBuilder;
+import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.Pluggable;
+
+/**
+ * Interface for registering callbacks to the {@link NewNotifPipeline}.
+ *
+ * This includes registering:
+ * {@link Pluggable}s to the {@link NotifListBuilder}
+ * {@link NotifCollectionListener}s and {@link NotifLifetimeExtender}s to {@link NotifCollection}
+ */
+public interface Coordinator {
+
+ /**
+ * Called after the NewNotifPipeline is initialized.
+ * Coordinators should register their {@link Pluggable}s to the notifListBuilder
+ * and their {@link NotifCollectionListener}s and {@link NotifLifetimeExtender}s
+ * to the notifCollection in this method.
+ */
+ void attach(NotifCollection notifCollection, NotifListBuilder notifListBuilder);
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/DeviceProvisionedCoordinator.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/DeviceProvisionedCoordinator.java
new file mode 100644
index 0000000..511aafc
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/DeviceProvisionedCoordinator.java
@@ -0,0 +1,96 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.statusbar.notification.collection.coordinator;
+
+import android.Manifest;
+import android.app.AppGlobals;
+import android.app.Notification;
+import android.content.pm.IPackageManager;
+import android.content.pm.PackageManager;
+import android.os.RemoteException;
+import android.service.notification.StatusBarNotification;
+
+import com.android.systemui.statusbar.notification.collection.NotifCollection;
+import com.android.systemui.statusbar.notification.collection.NotificationEntry;
+import com.android.systemui.statusbar.notification.collection.listbuilder.NotifListBuilder;
+import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifFilter;
+import com.android.systemui.statusbar.policy.DeviceProvisionedController;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+/**
+ * Filters out most notifications when the device is unprovisioned.
+ * Special notifications with extra permissions and tags won't be filtered out even when the
+ * device is unprovisioned.
+ */
+@Singleton
+public class DeviceProvisionedCoordinator implements Coordinator {
+ private static final String TAG = "DeviceProvisionedCoordinator";
+
+ private final DeviceProvisionedController mDeviceProvisionedController;
+
+ @Inject
+ public DeviceProvisionedCoordinator(DeviceProvisionedController deviceProvisionedController) {
+ mDeviceProvisionedController = deviceProvisionedController;
+ }
+
+ @Override
+ public void attach(NotifCollection notifCollection, NotifListBuilder notifListBuilder) {
+ mDeviceProvisionedController.addCallback(mDeviceProvisionedListener);
+
+ notifListBuilder.addFilter(mNotifFilter);
+ }
+
+ protected final NotifFilter mNotifFilter = new NotifFilter(TAG) {
+ @Override
+ public boolean shouldFilterOut(NotificationEntry entry, long now) {
+ return !mDeviceProvisionedController.isDeviceProvisioned()
+ && !showNotificationEvenIfUnprovisioned(entry.getSbn());
+ }
+ };
+
+ /**
+ * Only notifications coming from packages with permission
+ * android.permission.NOTIFICATION_DURING_SETUP that also have special tags
+ * marking them as relevant for setup are allowed to show when device is unprovisioned
+ */
+ private boolean showNotificationEvenIfUnprovisioned(StatusBarNotification sbn) {
+ final boolean hasPermission = checkUidPermission(AppGlobals.getPackageManager(),
+ Manifest.permission.NOTIFICATION_DURING_SETUP,
+ sbn.getUid()) == PackageManager.PERMISSION_GRANTED;
+ return hasPermission
+ && sbn.getNotification().extras.getBoolean(Notification.EXTRA_ALLOW_DURING_SETUP);
+ }
+
+ private static int checkUidPermission(IPackageManager packageManager, String permission,
+ int uid) {
+ try {
+ return packageManager.checkUidPermission(permission, uid);
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+
+ private final DeviceProvisionedController.DeviceProvisionedListener mDeviceProvisionedListener =
+ new DeviceProvisionedController.DeviceProvisionedListener() {
+ @Override
+ public void onDeviceProvisionedChanged() {
+ mNotifFilter.invalidateList();
+ }
+ };
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/ForegroundCoordinator.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/ForegroundCoordinator.java
new file mode 100644
index 0000000..4803cf4
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/ForegroundCoordinator.java
@@ -0,0 +1,243 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.statusbar.notification.collection.coordinator;
+
+import android.app.Notification;
+import android.os.Handler;
+import android.os.UserHandle;
+import android.service.notification.StatusBarNotification;
+import android.util.ArraySet;
+
+import com.android.systemui.ForegroundServiceController;
+import com.android.systemui.appops.AppOpsController;
+import com.android.systemui.dagger.qualifiers.BgHandler;
+import com.android.systemui.dagger.qualifiers.MainHandler;
+import com.android.systemui.statusbar.notification.collection.NotifCollection;
+import com.android.systemui.statusbar.notification.collection.NotifCollectionListener;
+import com.android.systemui.statusbar.notification.collection.NotifLifetimeExtender;
+import com.android.systemui.statusbar.notification.collection.NotificationEntry;
+import com.android.systemui.statusbar.notification.collection.listbuilder.NotifListBuilder;
+import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifFilter;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+/**
+ * Handles ForegroundService interactions with notifications.
+ * Tags notifications with appOps.
+ * Lifetime extends notifications associated with an ongoing ForegroundService.
+ * Filters out notifications that represent foreground services that are no longer running
+ *
+ * Previously this logic lived in
+ * frameworks/base/packages/SystemUI/src/com/android/systemui/ForegroundServiceController
+ * frameworks/base/packages/SystemUI/src/com/android/systemui/ForegroundServiceNotificationListener
+ * frameworks/base/packages/SystemUI/src/com/android/systemui/ForegroundServiceLifetimeExtender
+ */
+@Singleton
+public class ForegroundCoordinator implements Coordinator {
+ private static final String TAG = "ForegroundNotificationCoordinator";
+
+ private final ForegroundServiceController mForegroundServiceController;
+ private final AppOpsController mAppOpsController;
+ private final Handler mMainHandler;
+ private final Handler mBgHandler;
+
+ private NotifCollection mNotifCollection;
+
+ @Inject
+ public ForegroundCoordinator(
+ ForegroundServiceController foregroundServiceController,
+ AppOpsController appOpsController,
+ @MainHandler Handler mainHandler,
+ @BgHandler Handler bgHandler) {
+ mForegroundServiceController = foregroundServiceController;
+ mAppOpsController = appOpsController;
+ mMainHandler = mainHandler;
+ mBgHandler = bgHandler;
+ }
+
+ @Override
+ public void attach(NotifCollection notifCollection, NotifListBuilder notifListBuilder) {
+ mNotifCollection = notifCollection;
+
+ // extend the lifetime of foreground notification services to show for at least 5 seconds
+ mNotifCollection.addNotificationLifetimeExtender(mForegroundLifetimeExtender);
+
+ // listen for new notifications to add appOps
+ mNotifCollection.addCollectionListener(mNotifCollectionListener);
+
+ // when appOps change, update any relevant notifications to update appOps for
+ mAppOpsController.addCallback(ForegroundServiceController.APP_OPS, this::onAppOpsChanged);
+
+ // filter out foreground service notifications that aren't necessary anymore
+ notifListBuilder.addFilter(mNotifFilter);
+ }
+
+ /**
+ * Filters out notifications that represent foreground services that are no longer running.
+ */
+ protected final NotifFilter mNotifFilter = new NotifFilter(TAG) {
+ @Override
+ public boolean shouldFilterOut(NotificationEntry entry, long now) {
+ StatusBarNotification sbn = entry.getSbn();
+ if (mForegroundServiceController.isDisclosureNotification(sbn)
+ && !mForegroundServiceController.isDisclosureNeededForUser(sbn.getUserId())) {
+ return true;
+ }
+
+ if (mForegroundServiceController.isSystemAlertNotification(sbn)) {
+ final String[] apps = sbn.getNotification().extras.getStringArray(
+ Notification.EXTRA_FOREGROUND_APPS);
+ if (apps != null && apps.length >= 1) {
+ if (!mForegroundServiceController.isSystemAlertWarningNeeded(
+ sbn.getUserId(), apps[0])) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+ };
+
+ /**
+ * Extends the lifetime of foreground notification services such that they show for at least
+ * five seconds
+ */
+ private final NotifLifetimeExtender mForegroundLifetimeExtender = new NotifLifetimeExtender() {
+ private static final int MIN_FGS_TIME_MS = 5000;
+ private OnEndLifetimeExtensionCallback mEndCallback;
+ private Map<String, Runnable> mEndRunnables = new HashMap<>();
+
+ @Override
+ public String getName() {
+ return TAG;
+ }
+
+ @Override
+ public void setCallback(OnEndLifetimeExtensionCallback callback) {
+ mEndCallback = callback;
+ }
+
+ @Override
+ public boolean shouldExtendLifetime(NotificationEntry entry, int reason) {
+ if ((entry.getSbn().getNotification().flags
+ & Notification.FLAG_FOREGROUND_SERVICE) == 0) {
+ return false;
+ }
+
+ final long currTime = System.currentTimeMillis();
+ final boolean extendLife = currTime - entry.getSbn().getPostTime() < MIN_FGS_TIME_MS;
+
+ if (extendLife) {
+ if (!mEndRunnables.containsKey(entry.getKey())) {
+ final Runnable runnable = new Runnable() {
+ @Override
+ public void run() {
+ mEndCallback.onEndLifetimeExtension(mForegroundLifetimeExtender, entry);
+ }
+ };
+ mEndRunnables.put(entry.getKey(), runnable);
+ mBgHandler.postDelayed(runnable, MIN_FGS_TIME_MS
+ - (currTime - entry.getSbn().getPostTime()));
+ }
+ }
+
+ return extendLife;
+ }
+
+ @Override
+ public void cancelLifetimeExtension(NotificationEntry entry) {
+ if (mEndRunnables.containsKey(entry.getKey())) {
+ Runnable endRunnable = mEndRunnables.remove(entry.getKey());
+ mBgHandler.removeCallbacks(endRunnable);
+ }
+ }
+ };
+
+ /**
+ * Adds appOps to incoming and updating notifications
+ */
+ private NotifCollectionListener mNotifCollectionListener = new NotifCollectionListener() {
+ @Override
+ public void onEntryAdded(NotificationEntry entry) {
+ tagForeground(entry);
+ }
+
+ @Override
+ public void onEntryUpdated(NotificationEntry entry) {
+ tagForeground(entry);
+ }
+
+ private void tagForeground(NotificationEntry entry) {
+ final StatusBarNotification sbn = entry.getSbn();
+ // note: requires that the ForegroundServiceController is updating their appOps first
+ ArraySet<Integer> activeOps = mForegroundServiceController.getAppOps(sbn.getUserId(),
+ sbn.getPackageName());
+ if (activeOps != null) {
+ synchronized (entry.mActiveAppOps) {
+ entry.mActiveAppOps.clear();
+ entry.mActiveAppOps.addAll(activeOps);
+ }
+ }
+ }
+ };
+
+ /**
+ * Update the appOp for the posted notification associated with the current foreground service
+ * @param code code for appOp to add/remove
+ * @param uid of user the notification is sent to
+ * @param packageName package that created the notification
+ * @param active whether the appOpCode is active or not
+ */
+ private void onAppOpsChanged(int code, int uid, String packageName, boolean active) {
+ int userId = UserHandle.getUserId(uid);
+
+ // Update appOp if there's an associated posted notification:
+ final String foregroundKey = mForegroundServiceController.getStandardLayoutKey(userId,
+ packageName);
+ if (foregroundKey != null) {
+ final NotificationEntry entry = findNotificationEntryWithKey(foregroundKey);
+ if (entry != null
+ && uid == entry.getSbn().getUid()
+ && packageName.equals(entry.getSbn().getPackageName())) {
+ boolean changed;
+ synchronized (entry.mActiveAppOps) {
+ if (active) {
+ changed = entry.mActiveAppOps.add(code);
+ } else {
+ changed = entry.mActiveAppOps.remove(code);
+ }
+ }
+ if (changed) {
+ mMainHandler.post(mNotifFilter::invalidateList);
+ }
+ }
+ }
+ }
+
+ private NotificationEntry findNotificationEntryWithKey(String key) {
+ for (NotificationEntry entry : mNotifCollection.getNotifs()) {
+ if (entry.getKey().equals(key)) {
+ return entry;
+ }
+ }
+ return null;
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/KeyguardCoordinator.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/KeyguardCoordinator.java
new file mode 100644
index 0000000..f5ed089
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/KeyguardCoordinator.java
@@ -0,0 +1,233 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.statusbar.notification.collection.coordinator;
+
+import static android.app.Notification.VISIBILITY_SECRET;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.database.ContentObserver;
+import android.net.Uri;
+import android.os.Handler;
+import android.os.UserHandle;
+import android.provider.Settings;
+import android.service.notification.StatusBarNotification;
+
+import androidx.annotation.MainThread;
+
+import com.android.keyguard.KeyguardUpdateMonitor;
+import com.android.systemui.broadcast.BroadcastDispatcher;
+import com.android.systemui.plugins.statusbar.StatusBarStateController;
+import com.android.systemui.statusbar.NotificationLockscreenUserManager;
+import com.android.systemui.statusbar.notification.NotificationUtils;
+import com.android.systemui.statusbar.notification.collection.NotifCollection;
+import com.android.systemui.statusbar.notification.collection.NotificationEntry;
+import com.android.systemui.statusbar.notification.collection.listbuilder.NotifListBuilder;
+import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifFilter;
+import com.android.systemui.statusbar.policy.KeyguardStateController;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+/**
+ * Filters low priority and privacy-sensitive notifications from the lockscreen.
+ */
+@Singleton
+public class KeyguardCoordinator implements Coordinator {
+ private static final String TAG = "KeyguardNotificationCoordinator";
+
+ private final Context mContext;
+ private final Handler mMainHandler;
+ private final KeyguardStateController mKeyguardStateController;
+ private final NotificationLockscreenUserManager mLockscreenUserManager;
+ private final BroadcastDispatcher mBroadcastDispatcher;
+ private final StatusBarStateController mStatusBarStateController;
+ private final KeyguardUpdateMonitor mKeyguardUpdateMonitor;
+
+ @Inject
+ public KeyguardCoordinator(
+ Context context,
+ @MainThread Handler mainThreadHandler,
+ KeyguardStateController keyguardStateController,
+ NotificationLockscreenUserManager lockscreenUserManager,
+ BroadcastDispatcher broadcastDispatcher,
+ StatusBarStateController statusBarStateController,
+ KeyguardUpdateMonitor keyguardUpdateMonitor) {
+ mContext = context;
+ mMainHandler = mainThreadHandler;
+ mKeyguardStateController = keyguardStateController;
+ mLockscreenUserManager = lockscreenUserManager;
+
+ mBroadcastDispatcher = broadcastDispatcher;
+ mStatusBarStateController = statusBarStateController;
+ mKeyguardUpdateMonitor = keyguardUpdateMonitor;
+ }
+
+ @Override
+ public void attach(NotifCollection notifCollection, NotifListBuilder notifListBuilder) {
+ setupInvalidateNotifListCallbacks();
+ notifListBuilder.addFilter(mNotifFilter);
+ }
+
+ protected final NotifFilter mNotifFilter = new NotifFilter(TAG) {
+ @Override
+ public boolean shouldFilterOut(NotificationEntry entry, long now) {
+ final StatusBarNotification sbn = entry.getSbn();
+
+ // FILTER OUT the notification when the notification isn't for the current profile
+ if (!mLockscreenUserManager.isCurrentProfile(sbn.getUserId())) {
+ return true;
+ }
+
+ // FILTER OUT the notification when the keyguard is showing and...
+ if (mKeyguardStateController.isShowing()) {
+ // ... user settings or the device policy manager doesn't allow lockscreen
+ // notifications;
+ if (!mLockscreenUserManager.shouldShowLockscreenNotifications()) {
+ return true;
+ }
+
+ final int currUserId = mLockscreenUserManager.getCurrentUserId();
+ final int notifUserId = (sbn.getUser().getIdentifier() == UserHandle.USER_ALL)
+ ? currUserId : sbn.getUser().getIdentifier();
+
+ // ... user is in lockdown
+ if (mKeyguardUpdateMonitor.isUserInLockdown(currUserId)
+ || mKeyguardUpdateMonitor.isUserInLockdown(notifUserId)) {
+ return true;
+ }
+
+ // ... device is in public mode and the user's settings doesn't allow
+ // notifications to show in public mode
+ if (mLockscreenUserManager.isLockscreenPublicMode(currUserId)
+ || mLockscreenUserManager.isLockscreenPublicMode(notifUserId)) {
+ if (entry.getRanking().getVisibilityOverride() == VISIBILITY_SECRET) {
+ return true;
+ }
+
+ if (!mLockscreenUserManager.userAllowsNotificationsInPublic(currUserId)
+ || !mLockscreenUserManager.userAllowsNotificationsInPublic(
+ notifUserId)) {
+ return true;
+ }
+ }
+
+ // ... neither this notification nor its summary have high enough priority
+ // to be shown on the lockscreen
+ // TODO: grouping hasn't happened yet (b/145134683)
+ if (entry.getParent() != null) {
+ final NotificationEntry summary = entry.getParent().getRepresentativeEntry();
+ if (priorityExceedsLockscreenShowingThreshold(summary)) {
+ return false;
+ }
+ }
+ return !priorityExceedsLockscreenShowingThreshold(entry);
+ }
+ return false;
+ }
+ };
+
+ private boolean priorityExceedsLockscreenShowingThreshold(NotificationEntry entry) {
+ if (entry == null) {
+ return false;
+ }
+ if (NotificationUtils.useNewInterruptionModel(mContext)
+ && hideSilentNotificationsOnLockscreen()) {
+ // TODO: make sure in the NewNotifPipeline that entry.isHighPriority() has been
+ // correctly updated before reaching this point (b/145134683)
+ return entry.isHighPriority();
+ } else {
+ return !entry.getRanking().isAmbient();
+ }
+ }
+
+ private boolean hideSilentNotificationsOnLockscreen() {
+ return Settings.Secure.getInt(mContext.getContentResolver(),
+ Settings.Secure.LOCK_SCREEN_SHOW_SILENT_NOTIFICATIONS, 1) == 0;
+ }
+
+ private void setupInvalidateNotifListCallbacks() {
+ // register onKeyguardShowing callback
+ mKeyguardStateController.addCallback(mKeyguardCallback);
+
+ // register lockscreen settings changed callbacks:
+ final ContentObserver settingsObserver = new ContentObserver(mMainHandler) {
+ @Override
+ public void onChange(boolean selfChange, Uri uri) {
+ if (mKeyguardStateController.isShowing()) {
+ invalidateListFromFilter("Settings " + uri + " changed");
+ }
+ }
+ };
+
+ mContext.getContentResolver().registerContentObserver(
+ Settings.Secure.getUriFor(Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS),
+ false,
+ settingsObserver,
+ UserHandle.USER_ALL);
+
+ mContext.getContentResolver().registerContentObserver(
+ Settings.Secure.getUriFor(Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS),
+ true,
+ settingsObserver,
+ UserHandle.USER_ALL);
+
+ mContext.getContentResolver().registerContentObserver(
+ Settings.Global.getUriFor(Settings.Global.ZEN_MODE),
+ false,
+ settingsObserver);
+
+ // register (maybe) public mode changed callbacks:
+ mStatusBarStateController.addCallback(mStatusBarStateListener);
+ mBroadcastDispatcher.registerReceiver(new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ if (mKeyguardStateController.isShowing()) {
+ // maybe public mode changed
+ invalidateListFromFilter(intent.getAction());
+ }
+ }}, new IntentFilter(Intent.ACTION_USER_SWITCHED));
+ }
+
+ private void invalidateListFromFilter(String reason) {
+ mNotifFilter.invalidateList();
+ }
+
+ private final KeyguardStateController.Callback mKeyguardCallback =
+ new KeyguardStateController.Callback() {
+ @Override
+ public void onUnlockedChanged() {
+ invalidateListFromFilter("onUnlockedChanged");
+ }
+
+ @Override
+ public void onKeyguardShowingChanged() {
+ invalidateListFromFilter("onKeyguardShowingChanged");
+ }
+ };
+
+ private final StatusBarStateController.StateListener mStatusBarStateListener =
+ new StatusBarStateController.StateListener() {
+ @Override
+ public void onStateChanged(int newState) {
+ // maybe public mode changed
+ invalidateListFromFilter("onStatusBarStateChanged");
+ }
+ };
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/NotifCoordinators.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/NotifCoordinators.java
new file mode 100644
index 0000000..13247193
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/NotifCoordinators.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.statusbar.notification.collection.coordinator;
+
+import com.android.systemui.Dumpable;
+import com.android.systemui.statusbar.notification.collection.NotifCollection;
+import com.android.systemui.statusbar.notification.collection.NotifCollectionListener;
+import com.android.systemui.statusbar.notification.collection.NotifLifetimeExtender;
+import com.android.systemui.statusbar.notification.collection.listbuilder.NotifListBuilder;
+import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.Pluggable;
+
+import java.io.FileDescriptor;
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+/**
+ * Handles the attachment of the {@link NotifListBuilder} and {@link NotifCollection} to the
+ * {@link Coordinator}s, so that the Coordinators can register their respective callbacks.
+ */
+@Singleton
+public class NotifCoordinators implements Dumpable {
+ private static final String TAG = "NotifCoordinators";
+ private final List<Coordinator> mCoordinators = new ArrayList<>();
+
+ /**
+ * Creates all the coordinators.
+ */
+ @Inject
+ public NotifCoordinators(
+ KeyguardCoordinator keyguardCoordinator,
+ RankingCoordinator rankingCoordinator,
+ ForegroundCoordinator foregroundCoordinator,
+ DeviceProvisionedCoordinator deviceProvisionedCoordinator) {
+ mCoordinators.add(keyguardCoordinator);
+ mCoordinators.add(rankingCoordinator);
+ mCoordinators.add(foregroundCoordinator);
+ mCoordinators.add(deviceProvisionedCoordinator);
+ // TODO: add new Coordinators here! (b/145134683, b/112656837)
+ }
+
+ /**
+ * Sends the initialized notifListBuilder and notifCollection to each
+ * coordinator to indicate the notifListBuilder is ready to accept {@link Pluggable}s
+ * and the notifCollection is ready to accept {@link NotifCollectionListener}s and
+ * {@link NotifLifetimeExtender}s.
+ */
+ public void attach(NotifCollection notifCollection, NotifListBuilder notifListBuilder) {
+ for (Coordinator c : mCoordinators) {
+ c.attach(notifCollection, notifListBuilder);
+ }
+ }
+
+ @Override
+ public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ pw.println(TAG + ":");
+ for (Coordinator c : mCoordinators) {
+ pw.println("\t" + c.getClass());
+ }
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/RankingCoordinator.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/RankingCoordinator.java
new file mode 100644
index 0000000..c390f96
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/RankingCoordinator.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.statusbar.notification.collection.coordinator;
+
+import com.android.systemui.plugins.statusbar.StatusBarStateController;
+import com.android.systemui.statusbar.notification.collection.NotifCollection;
+import com.android.systemui.statusbar.notification.collection.NotificationEntry;
+import com.android.systemui.statusbar.notification.collection.listbuilder.NotifListBuilder;
+import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifFilter;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+/**
+ * Filters out NotificationEntries based on its Ranking.
+ */
+@Singleton
+public class RankingCoordinator implements Coordinator {
+ private static final String TAG = "RankingNotificationCoordinator";
+
+ private final StatusBarStateController mStatusBarStateController;
+
+ @Inject
+ public RankingCoordinator(StatusBarStateController statusBarStateController) {
+ mStatusBarStateController = statusBarStateController;
+ }
+
+ @Override
+ public void attach(NotifCollection notifCollection, NotifListBuilder notifListBuilder) {
+ mStatusBarStateController.addCallback(mStatusBarStateCallback);
+
+ notifListBuilder.addFilter(mNotifFilter);
+ }
+
+ /**
+ * Checks whether to filter out the given notification based the notification's Ranking object.
+ * NotifListBuilder invalidates the notification list each time the ranking is updated,
+ * so we don't need to explicitly invalidate this filter on ranking update.
+ */
+ protected final NotifFilter mNotifFilter = new NotifFilter(TAG) {
+ @Override
+ public boolean shouldFilterOut(NotificationEntry entry, long now) {
+ // App suspended from Ranking
+ if (entry.getRanking().isSuspended()) {
+ return true;
+ }
+
+ // Dozing + DND Settings from Ranking object
+ if (mStatusBarStateController.isDozing() && entry.shouldSuppressAmbient()) {
+ return true;
+ }
+
+ if (!mStatusBarStateController.isDozing() && entry.shouldSuppressNotificationList()) {
+ return true;
+ }
+
+ return false;
+ }
+ };
+
+
+ private final StatusBarStateController.StateListener mStatusBarStateCallback =
+ new StatusBarStateController.StateListener() {
+ @Override
+ public void onDozingChanged(boolean isDozing) {
+ mNotifFilter.invalidateList();
+ }
+ };
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/init/NewNotifPipeline.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/init/NewNotifPipeline.java
index 3b3e7e2..5fc55da 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/init/NewNotifPipeline.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/init/NewNotifPipeline.java
@@ -23,6 +23,7 @@
import com.android.systemui.statusbar.NotificationListener;
import com.android.systemui.statusbar.notification.collection.NotifCollection;
import com.android.systemui.statusbar.notification.collection.NotifListBuilderImpl;
+import com.android.systemui.statusbar.notification.collection.coordinator.NotifCoordinators;
import java.io.FileDescriptor;
import java.io.PrintWriter;
@@ -37,6 +38,7 @@
public class NewNotifPipeline implements Dumpable {
private final NotifCollection mNotifCollection;
private final NotifListBuilderImpl mNotifPipeline;
+ private final NotifCoordinators mNotifPluggableCoordinators;
private final DumpController mDumpController;
private final FakePipelineConsumer mFakePipelineConsumer = new FakePipelineConsumer();
@@ -45,9 +47,11 @@
public NewNotifPipeline(
NotifCollection notifCollection,
NotifListBuilderImpl notifPipeline,
+ NotifCoordinators notifCoordinators,
DumpController dumpController) {
mNotifCollection = notifCollection;
mNotifPipeline = notifPipeline;
+ mNotifPluggableCoordinators = notifCoordinators;
mDumpController = dumpController;
}
@@ -57,6 +61,7 @@
mFakePipelineConsumer.attach(mNotifPipeline);
mNotifPipeline.attach(mNotifCollection);
mNotifCollection.attach(notificationService);
+ mNotifPluggableCoordinators.attach(mNotifCollection, mNotifPipeline);
Log.d(TAG, "Notif pipeline initialized");
@@ -66,6 +71,7 @@
@Override
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
mFakePipelineConsumer.dump(fd, pw, args);
+ mNotifPluggableCoordinators.dump(fd, pw, args);
}
private static final String TAG = "NewNotifPipeline";
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/logging/NotifEvent.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/logging/NotifEvent.java
index 8ebbca2..3b06220 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/logging/NotifEvent.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/logging/NotifEvent.java
@@ -17,10 +17,12 @@
package com.android.systemui.statusbar.notification.logging;
import android.annotation.IntDef;
-import android.service.notification.NotificationListenerService.Ranking;
+import android.service.notification.NotificationListenerService;
import android.service.notification.StatusBarNotification;
import com.android.systemui.log.RichEvent;
+import com.android.systemui.statusbar.notification.NotificationEntryManager;
+import com.android.systemui.statusbar.notification.collection.listbuilder.NotifListBuilder;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -31,103 +33,71 @@
* here to mitigate memory usage.
*/
public class NotifEvent extends RichEvent {
- public static final int TOTAL_EVENT_TYPES = 11;
-
/**
- * Creates a NotifEvent with an event type that matches with an index in the array
- * getSupportedEvents() and {@link EventType}.
- *
- * The status bar notification and ranking objects are stored as shallow copies of the current
- * state of the event when this event occurred.
+ * Initializes a rich event that includes an event type that matches with an index in the array
+ * getEventLabels().
*/
- public NotifEvent(int logLevel, int type, String reason, StatusBarNotification sbn,
- Ranking ranking) {
- super(logLevel, type, reason);
- mMessage += getExtraInfo(sbn, ranking);
- }
-
- private String getExtraInfo(StatusBarNotification sbn, Ranking ranking) {
- StringBuilder extraInfo = new StringBuilder();
-
+ public NotifEvent init(@EventType int type, StatusBarNotification sbn,
+ NotificationListenerService.Ranking ranking, String reason) {
+ StringBuilder extraInfo = new StringBuilder(reason);
if (sbn != null) {
- extraInfo.append(" Sbn=");
- extraInfo.append(sbn);
+ extraInfo.append(" " + sbn.getKey());
}
if (ranking != null) {
extraInfo.append(" Ranking=");
- extraInfo.append(ranking);
+ extraInfo.append(ranking.getRank());
}
-
- return extraInfo.toString();
+ super.init(INFO, type, extraInfo.toString());
+ return this;
}
/**
- * Event labels for NotifEvents
- * Index corresponds to the {@link EventType}
+ * Event labels for ListBuilderEvents
+ * Index corresponds to an # in {@link EventType}
*/
@Override
public String[] getEventLabels() {
- final String[] events = new String[]{
- "NotifAdded",
- "NotifRemoved",
- "NotifUpdated",
- "Filter",
- "Sort",
- "FilterAndSort",
- "NotifVisibilityChanged",
- "LifetimeExtended",
- "RemoveIntercepted",
- "InflationAborted",
- "Inflated"
- };
-
- if (events.length != TOTAL_EVENT_TYPES) {
- throw new IllegalStateException("NotifEvents events.length should match "
- + TOTAL_EVENT_TYPES
- + " events.length=" + events.length
- + " TOTAL_EVENT_LENGTH=" + TOTAL_EVENT_TYPES);
- }
- return events;
+ assert (TOTAL_EVENT_LABELS == (TOTAL_NEM_EVENT_TYPES + TOTAL_LIST_BUILDER_EVENT_TYPES));
+ return EVENT_LABELS;
}
/**
- * Builds a NotifEvent.
+ * @return if this event occurred in {@link NotifListBuilder}
*/
- public static class NotifEventBuilder extends RichEvent.Builder<NotifEventBuilder> {
- private StatusBarNotification mSbn;
- private Ranking mRanking;
-
- @Override
- public NotifEventBuilder getBuilder() {
- return this;
- }
-
- /**
- * Stores the status bar notification object. A shallow copy is stored in the NotifEvent's
- * constructor.
- */
- public NotifEventBuilder setSbn(StatusBarNotification sbn) {
- mSbn = sbn;
- return this;
- }
-
- /**
- * Stores the ranking object. A shallow copy is stored in the NotifEvent's
- * constructor.
- */
- public NotifEventBuilder setRanking(Ranking ranking) {
- mRanking = ranking;
- return this;
- }
-
- @Override
- public RichEvent build() {
- return new NotifEvent(mLogLevel, mType, mReason, mSbn, mRanking);
- }
+ static boolean isListBuilderEvent(@EventType int type) {
+ return isBetweenInclusive(type, 0, TOTAL_LIST_BUILDER_EVENT_TYPES);
}
- @IntDef({NOTIF_ADDED,
+ /**
+ * @return if this event occurred in {@link NotificationEntryManager}
+ */
+ static boolean isNemEvent(@EventType int type) {
+ return isBetweenInclusive(type, TOTAL_LIST_BUILDER_EVENT_TYPES,
+ TOTAL_LIST_BUILDER_EVENT_TYPES + TOTAL_NEM_EVENT_TYPES);
+ }
+
+ private static boolean isBetweenInclusive(int x, int a, int b) {
+ return x >= a && x <= b;
+ }
+
+ @IntDef({
+ // NotifListBuilder events:
+ WARN,
+ ON_BUILD_LIST,
+ START_BUILD_LIST,
+ DISPATCH_FINAL_LIST,
+ LIST_BUILD_COMPLETE,
+ FILTER_INVALIDATED,
+ PROMOTER_INVALIDATED,
+ SECTIONS_PROVIDER_INVALIDATED,
+ COMPARATOR_INVALIDATED,
+ PARENT_CHANGED,
+ FILTER_CHANGED,
+ PROMOTER_CHANGED,
+
+ // NotificationEntryManager events:
+ NOTIF_ADDED,
NOTIF_REMOVED,
NOTIF_UPDATED,
FILTER,
@@ -139,22 +109,72 @@
INFLATION_ABORTED,
INFLATED
})
-
- /**
- * Types of NotifEvents
- */
@Retention(RetentionPolicy.SOURCE)
public @interface EventType {}
- public static final int NOTIF_ADDED = 0;
- public static final int NOTIF_REMOVED = 1;
- public static final int NOTIF_UPDATED = 2;
- public static final int FILTER = 3;
- public static final int SORT = 4;
- public static final int FILTER_AND_SORT = 5;
- public static final int NOTIF_VISIBILITY_CHANGED = 6;
- public static final int LIFETIME_EXTENDED = 7;
+
+ private static final String[] EVENT_LABELS =
+ new String[]{
+ // NotifListBuilder labels:
+ "Warning",
+ "OnBuildList",
+ "StartBuildList",
+ "DispatchFinalList",
+ "ListBuildComplete",
+ "FilterInvalidated",
+ "PromoterInvalidated",
+ "SectionsProviderInvalidated",
+ "ComparatorInvalidated",
+ "ParentChanged",
+ "FilterChanged",
+ "PromoterChanged",
+
+ // NEM event labels:
+ "NotifAdded",
+ "NotifRemoved",
+ "NotifUpdated",
+ "Filter",
+ "Sort",
+ "FilterAndSort",
+ "NotifVisibilityChanged",
+ "LifetimeExtended",
+ "RemoveIntercepted",
+ "InflationAborted",
+ "Inflated"
+ };
+
+ private static final int TOTAL_EVENT_LABELS = EVENT_LABELS.length;
+
+ /**
+ * Events related to {@link NotifListBuilder}
+ */
+ public static final int WARN = 0;
+ public static final int ON_BUILD_LIST = 1;
+ public static final int START_BUILD_LIST = 2;
+ public static final int DISPATCH_FINAL_LIST = 3;
+ public static final int LIST_BUILD_COMPLETE = 4;
+ public static final int FILTER_INVALIDATED = 5;
+ public static final int PROMOTER_INVALIDATED = 6;
+ public static final int SECTIONS_PROVIDER_INVALIDATED = 7;
+ public static final int COMPARATOR_INVALIDATED = 8;
+ public static final int PARENT_CHANGED = 9;
+ public static final int FILTER_CHANGED = 10;
+ public static final int PROMOTER_CHANGED = 11;
+ private static final int TOTAL_LIST_BUILDER_EVENT_TYPES = 12;
+
+ /**
+ * Events related to {@link NotificationEntryManager}
+ */
+ public static final int NOTIF_ADDED = TOTAL_LIST_BUILDER_EVENT_TYPES + 0;
+ public static final int NOTIF_REMOVED = TOTAL_LIST_BUILDER_EVENT_TYPES + 1;
+ public static final int NOTIF_UPDATED = TOTAL_LIST_BUILDER_EVENT_TYPES + 2;
+ public static final int FILTER = TOTAL_LIST_BUILDER_EVENT_TYPES + 3;
+ public static final int SORT = TOTAL_LIST_BUILDER_EVENT_TYPES + 4;
+ public static final int FILTER_AND_SORT = TOTAL_LIST_BUILDER_EVENT_TYPES + 5;
+ public static final int NOTIF_VISIBILITY_CHANGED = TOTAL_LIST_BUILDER_EVENT_TYPES + 6;
+ public static final int LIFETIME_EXTENDED = TOTAL_LIST_BUILDER_EVENT_TYPES + 7;
// unable to remove notif - removal intercepted by {@link NotificationRemoveInterceptor}
- public static final int REMOVE_INTERCEPTED = 8;
- public static final int INFLATION_ABORTED = 9;
- public static final int INFLATED = 10;
+ public static final int REMOVE_INTERCEPTED = TOTAL_LIST_BUILDER_EVENT_TYPES + 8;
+ public static final int INFLATION_ABORTED = TOTAL_LIST_BUILDER_EVENT_TYPES + 9;
+ public static final int INFLATED = TOTAL_LIST_BUILDER_EVENT_TYPES + 10;
+ private static final int TOTAL_NEM_EVENT_TYPES = 11;
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/logging/NotifLog.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/logging/NotifLog.java
index 1292831..299d628 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/logging/NotifLog.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/logging/NotifLog.java
@@ -16,6 +16,7 @@
package com.android.systemui.statusbar.notification.logging;
+import android.os.SystemProperties;
import android.service.notification.NotificationListenerService.Ranking;
import android.service.notification.StatusBarNotification;
@@ -33,93 +34,82 @@
* dependency DumpController NotifLog
*/
@Singleton
-public class NotifLog extends SysuiLog {
+public class NotifLog extends SysuiLog<NotifEvent> {
private static final String TAG = "NotifLog";
+ private static final boolean SHOW_NEM_LOGS =
+ SystemProperties.getBoolean("persist.sysui.log.notif.nem", true);
+ private static final boolean SHOW_LIST_BUILDER_LOGS =
+ SystemProperties.getBoolean("persist.sysui.log.notif.listbuilder", true);
+
private static final int MAX_DOZE_DEBUG_LOGS = 400;
private static final int MAX_DOZE_LOGS = 50;
+ private NotifEvent mRecycledEvent;
+
@Inject
public NotifLog(DumpController dumpController) {
super(dumpController, TAG, MAX_DOZE_DEBUG_LOGS, MAX_DOZE_LOGS);
}
/**
- * Logs a {@link NotifEvent} with a notification, ranking and message
+ * Logs a {@link NotifEvent} with a notification, ranking and message.
+ * Uses the last recycled event if available.
* @return true if successfully logged, else false
*/
- public boolean log(@NotifEvent.EventType int eventType, StatusBarNotification sbn,
- Ranking ranking, String msg) {
- return log(new NotifEvent.NotifEventBuilder()
- .setType(eventType)
- .setSbn(sbn)
- .setRanking(ranking)
- .setReason(msg)
- .build());
+ public void log(@NotifEvent.EventType int eventType,
+ StatusBarNotification sbn, Ranking ranking, String msg) {
+ if (!mEnabled
+ || (NotifEvent.isListBuilderEvent(eventType) && !SHOW_LIST_BUILDER_LOGS)
+ || (NotifEvent.isNemEvent(eventType) && !SHOW_NEM_LOGS)) {
+ return;
+ }
+
+ if (mRecycledEvent != null) {
+ mRecycledEvent = log(mRecycledEvent.init(eventType, sbn, ranking, msg));
+ } else {
+ mRecycledEvent = log(new NotifEvent().init(eventType, sbn, ranking, msg));
+ }
}
/**
- * Logs a {@link NotifEvent}
- * @return true if successfully logged, else false
+ * Logs a {@link NotifEvent} with no extra information aside from the event type
*/
- public boolean log(@NotifEvent.EventType int eventType) {
- return log(eventType, null, null, null);
+ public void log(@NotifEvent.EventType int eventType) {
+ log(eventType, null, null, "");
}
/**
* Logs a {@link NotifEvent} with a message
- * @return true if successfully logged, else false
*/
- public boolean log(@NotifEvent.EventType int eventType, String msg) {
- return log(eventType, null, null, msg);
+ public void log(@NotifEvent.EventType int eventType, String msg) {
+ log(eventType, null, null, msg);
}
/**
- * Logs a {@link NotifEvent} with a notification
- * @return true if successfully logged, else false
+ * Logs a {@link NotifEvent} with a entry
*/
- public boolean log(@NotifEvent.EventType int eventType, StatusBarNotification sbn) {
- return log(eventType, sbn, null, "");
+ public void log(@NotifEvent.EventType int eventType, NotificationEntry entry) {
+ log(eventType, entry.getSbn(), entry.getRanking(), "");
}
/**
- * Logs a {@link NotifEvent} with a notification
- * @return true if successfully logged, else false
+ * Logs a {@link NotifEvent} with a NotificationEntry and message
*/
- public boolean log(@NotifEvent.EventType int eventType, StatusBarNotification sbn, String msg) {
- return log(eventType, sbn, null, msg);
+ public void log(@NotifEvent.EventType int eventType, NotificationEntry entry, String msg) {
+ log(eventType, entry.getSbn(), entry.getRanking(), msg);
}
/**
- * Logs a {@link NotifEvent} with a ranking
- * @return true if successfully logged, else false
+ * Logs a {@link NotifEvent} with a notification and message
*/
- public boolean log(@NotifEvent.EventType int eventType, Ranking ranking) {
- return log(eventType, null, ranking, "");
+ public void log(@NotifEvent.EventType int eventType, StatusBarNotification sbn, String msg) {
+ log(eventType, sbn, null, msg);
}
/**
- * Logs a {@link NotifEvent} with a notification and ranking
- * @return true if successfully logged, else false
+ * Logs a {@link NotifEvent} with a ranking and message
*/
- public boolean log(@NotifEvent.EventType int eventType, StatusBarNotification sbn,
- Ranking ranking) {
- return log(eventType, sbn, ranking, "");
- }
-
- /**
- * Logs a {@link NotifEvent} with a notification entry
- * @return true if successfully logged, else false
- */
- public boolean log(@NotifEvent.EventType int eventType, NotificationEntry entry) {
- return log(eventType, entry.getSbn(), entry.getRanking(), "");
- }
-
- /**
- * Logs a {@link NotifEvent} with a notification entry
- * @return true if successfully logged, else false
- */
- public boolean log(@NotifEvent.EventType int eventType, NotificationEntry entry,
- String msg) {
- return log(eventType, entry.getSbn(), entry.getRanking(), msg);
+ public void log(@NotifEvent.EventType int eventType, Ranking ranking, String msg) {
+ log(eventType, null, ranking, msg);
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationGutsManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationGutsManager.java
index 5a5f9e9..9dd7f48 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationGutsManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationGutsManager.java
@@ -174,7 +174,7 @@
if (ops.contains(OP_CAMERA) || ops.contains(OP_RECORD_AUDIO)) {
startAppDetailsSettingsActivity(pkg, uid, null, row);
} else {
- Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
+ Intent intent = new Intent(Settings.ACTION_MANAGE_APP_OVERLAY_PERMISSION);
intent.setData(Uri.fromParts("package", pkg, null));
mNotificationActivityStarter.startNotificationGutsIntent(intent, uid, row);
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationMediaTemplateViewWrapper.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationMediaTemplateViewWrapper.java
index 2a4b315..352ba0f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationMediaTemplateViewWrapper.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationMediaTemplateViewWrapper.java
@@ -179,21 +179,22 @@
if (Utils.useQsMediaPlayer(mContext)) {
final int[] compactActions = mRow.getEntry().getSbn().getNotification().extras
.getIntArray(Notification.EXTRA_COMPACT_ACTIONS);
+ int tintColor = getNotificationHeader().getOriginalIconColor();
StatusBarWindowController ctrl = Dependency.get(StatusBarWindowController.class);
QuickQSPanel panel = ctrl.getStatusBarView().findViewById(
com.android.systemui.R.id.quick_qs_panel);
panel.getMediaPlayer().setMediaSession(token,
mRow.getEntry().getSbn().getNotification().getSmallIcon(),
- getNotificationHeader().getOriginalIconColor(),
- mRow.getCurrentBackgroundTint(),
+ tintColor,
+ mBackgroundColor,
mActions,
compactActions);
QSPanel bigPanel = ctrl.getStatusBarView().findViewById(
com.android.systemui.R.id.quick_settings_panel);
bigPanel.addMediaSession(token,
mRow.getEntry().getSbn().getNotification().getSmallIcon(),
- getNotificationHeader().getOriginalIconColor(),
- mRow.getCurrentBackgroundTint(),
+ tintColor,
+ mBackgroundColor,
mActions,
mRow.getEntry().getSbn());
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java
index bfecaaa..8d43c66 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java
@@ -43,10 +43,6 @@
import com.android.systemui.R;
import com.android.systemui.UiOffloadThread;
import com.android.systemui.broadcast.BroadcastDispatcher;
-import com.android.systemui.privacy.PrivacyItem;
-import com.android.systemui.privacy.PrivacyItemController;
-import com.android.systemui.privacy.PrivacyItemControllerKt;
-import com.android.systemui.privacy.PrivacyType;
import com.android.systemui.qs.tiles.DndTile;
import com.android.systemui.qs.tiles.RotationLockTile;
import com.android.systemui.statusbar.CommandQueue;
@@ -67,9 +63,6 @@
import com.android.systemui.statusbar.policy.UserInfoController;
import com.android.systemui.statusbar.policy.ZenModeController;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.util.List;
import java.util.Locale;
/**
@@ -84,12 +77,12 @@
ZenModeController.Callback,
DeviceProvisionedListener,
KeyguardStateController.Callback,
- PrivacyItemController.Callback,
LocationController.LocationChangeCallback {
private static final String TAG = "PhoneStatusBarPolicy";
private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
- public static final int LOCATION_STATUS_ICON_ID = PrivacyType.TYPE_LOCATION.getIconId();
+ public static final int LOCATION_STATUS_ICON_ID =
+ com.android.internal.R.drawable.perm_group_location;
private final String mSlotCast;
private final String mSlotHotspot;
@@ -122,7 +115,6 @@
private final DeviceProvisionedController mProvisionedController;
private final KeyguardStateController mKeyguardStateController;
private final LocationController mLocationController;
- private final PrivacyItemController mPrivacyItemController;
private final UiOffloadThread mUiOffloadThread = Dependency.get(UiOffloadThread.class);
private final SensorPrivacyController mSensorPrivacyController;
@@ -156,7 +148,6 @@
mProvisionedController = Dependency.get(DeviceProvisionedController.class);
mKeyguardStateController = Dependency.get(KeyguardStateController.class);
mLocationController = Dependency.get(LocationController.class);
- mPrivacyItemController = Dependency.get(PrivacyItemController.class);
mSensorPrivacyController = Dependency.get(SensorPrivacyController.class);
mSlotCast = context.getString(com.android.internal.R.string.status_bar_cast);
@@ -233,13 +224,6 @@
context.getString(R.string.accessibility_data_saver_on));
mIconController.setIconVisibility(mSlotDataSaver, false);
- // privacy items
- mIconController.setIcon(mSlotMicrophone, PrivacyType.TYPE_MICROPHONE.getIconId(),
- PrivacyType.TYPE_MICROPHONE.getName(mContext));
- mIconController.setIconVisibility(mSlotMicrophone, false);
- mIconController.setIcon(mSlotCamera, PrivacyType.TYPE_CAMERA.getIconId(),
- PrivacyType.TYPE_CAMERA.getName(mContext));
- mIconController.setIconVisibility(mSlotCamera, false);
mIconController.setIcon(mSlotLocation, LOCATION_STATUS_ICON_ID,
mContext.getString(R.string.accessibility_location_active));
mIconController.setIconVisibility(mSlotLocation, false);
@@ -259,7 +243,6 @@
mNextAlarmController.addCallback(mNextAlarmCallback);
mDataSaver.addCallback(this);
mKeyguardStateController.addCallback(this);
- mPrivacyItemController.addCallback(this);
mSensorPrivacyController.addCallback(mSensorPrivacyListener);
mLocationController.addCallback(this);
@@ -603,46 +586,9 @@
mIconController.setIconVisibility(mSlotDataSaver, isDataSaving);
}
- @Override // PrivacyItemController.Callback
- public void privacyChanged(List<PrivacyItem> privacyItems) {
- updatePrivacyItems(privacyItems);
- }
-
- private void updatePrivacyItems(List<PrivacyItem> items) {
- boolean showCamera = false;
- boolean showMicrophone = false;
- boolean showLocation = false;
- for (PrivacyItem item : items) {
- if (item == null /* b/124234367 */) {
- if (DEBUG) {
- Log.e(TAG, "updatePrivacyItems - null item found");
- StringWriter out = new StringWriter();
- mPrivacyItemController.dump(null, new PrintWriter(out), null);
- Log.e(TAG, out.toString());
- }
- continue;
- }
- switch (item.getPrivacyType()) {
- case TYPE_CAMERA:
- showCamera = true;
- break;
- case TYPE_LOCATION:
- showLocation = true;
- break;
- case TYPE_MICROPHONE:
- showMicrophone = true;
- break;
- }
- }
-
- mIconController.setIconVisibility(mSlotCamera, showCamera);
- mIconController.setIconVisibility(mSlotMicrophone, showMicrophone);
- mIconController.setIconVisibility(mSlotLocation, showLocation);
- }
-
@Override
public void onLocationActiveChanged(boolean active) {
- if (!PrivacyItemControllerKt.isPermissionsHubEnabled()) updateLocation();
+ updateLocation();
}
// Updates the status view based on the current state of location requests.
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotController.java
index 8b06a9f..830b50e 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotController.java
@@ -20,8 +20,6 @@
import com.android.systemui.statusbar.policy.HotspotController.Callback;
public interface HotspotController extends CallbackController<Callback>, Dumpable {
- void handleSetListening(boolean listening);
-
boolean isHotspotEnabled();
boolean isHotspotTransient();
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotControllerImpl.java
index 6331a2d..cd6ec05 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotControllerImpl.java
@@ -54,7 +54,6 @@
private int mHotspotState;
private volatile int mNumConnectedDevices;
private boolean mWaitingForTerminalState;
- private boolean mListening;
/**
* Controller used to retrieve information related to a hotspot.
@@ -109,19 +108,14 @@
if (DEBUG) Log.d(TAG, "addCallback " + callback);
mCallbacks.add(callback);
if (mWifiManager != null) {
- if (mListening) {
- if (mCallbacks.size() == 1) {
- mWifiManager.registerSoftApCallback(new HandlerExecutor(mMainHandler),
- this);
- } else {
- // mWifiManager#registerSoftApCallback triggers a call to
- // onConnectedClientsChanged on the Main Handler. In order to always update
- // the callback on added, we make this call when adding callbacks after the
- // first.
- mMainHandler.post(() ->
- callback.onHotspotChanged(isHotspotEnabled(),
- mNumConnectedDevices));
- }
+ if (mCallbacks.size() == 1) {
+ mWifiManager.registerSoftApCallback(new HandlerExecutor(mMainHandler), this);
+ } else {
+ // mWifiManager#registerSoftApCallback triggers a call to onNumClientsChanged
+ // on the Main Handler. In order to always update the callback on added, we
+ // make this call when adding callbacks after the first.
+ mMainHandler.post(() ->
+ callback.onHotspotChanged(isHotspotEnabled(), mNumConnectedDevices));
}
}
}
@@ -133,24 +127,13 @@
if (DEBUG) Log.d(TAG, "removeCallback " + callback);
synchronized (mCallbacks) {
mCallbacks.remove(callback);
- if (mCallbacks.isEmpty() && mWifiManager != null && mListening) {
+ if (mCallbacks.isEmpty() && mWifiManager != null) {
mWifiManager.unregisterSoftApCallback(this);
}
}
}
@Override
- public void handleSetListening(boolean listening) {
- // Wait for the first |handleSetListening(true))| to register softap callbacks (for lazy
- // registration of the softap callbacks).
- if (mListening || !listening) return;
- mListening = true;
- if (mCallbacks.size() >= 1) {
- mWifiManager.registerSoftApCallback(new HandlerExecutor(mMainHandler), this);
- }
- }
-
- @Override
public boolean isHotspotEnabled() {
return mHotspotState == WifiManager.WIFI_AP_STATE_ENABLED;
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/LocationControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/LocationControllerImpl.java
index 3d51be7..d36bd75 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/LocationControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/LocationControllerImpl.java
@@ -35,6 +35,7 @@
import androidx.annotation.VisibleForTesting;
+import com.android.systemui.BootCompleteCache;
import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.dagger.qualifiers.BgLooper;
import com.android.systemui.util.Utils;
@@ -59,6 +60,7 @@
private AppOpsManager mAppOpsManager;
private StatusBarManager mStatusBarManager;
private BroadcastDispatcher mBroadcastDispatcher;
+ private BootCompleteCache mBootCompleteCache;
private boolean mAreActiveLocationRequests;
@@ -68,9 +70,10 @@
@Inject
public LocationControllerImpl(Context context, @BgLooper Looper bgLooper,
- BroadcastDispatcher broadcastDispatcher) {
+ BroadcastDispatcher broadcastDispatcher, BootCompleteCache bootCompleteCache) {
mContext = context;
mBroadcastDispatcher = broadcastDispatcher;
+ mBootCompleteCache = bootCompleteCache;
// Register to listen for changes in location settings.
IntentFilter filter = new IntentFilter();
@@ -124,14 +127,15 @@
}
/**
- * Returns true if location is enabled in settings.
+ * Returns true if location is enabled in settings. Will return false if
+ * {@link LocationManager} service has not been completely initialized
*/
public boolean isLocationEnabled() {
// QuickSettings always runs as the owner, so specifically retrieve the settings
// for the current foreground user.
LocationManager locationManager =
(LocationManager) mContext.getSystemService(Context.LOCATION_SERVICE);
- return locationManager.isLocationEnabledForUser(
+ return mBootCompleteCache.isBootComplete() && locationManager.isLocationEnabledForUser(
UserHandle.of(ActivityManager.getCurrentUser()));
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java
index 05a4b29..24492bf 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java
@@ -325,7 +325,6 @@
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
filter.addAction(ConnectivityManager.INET_CONDITION_ACTION);
filter.addAction(Intent.ACTION_AIRPLANE_MODE_CHANGED);
- filter.addAction(Intent.ACTION_BOOT_COMPLETED);
filter.addAction(CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED);
mBroadcastDispatcher.registerReceiver(this, filter, mReceiverHandler);
mListening = true;
@@ -543,9 +542,6 @@
recalculateEmergency();
}
break;
- case Intent.ACTION_BOOT_COMPLETED:
- mWifiSignalController.handleBootCompleted();
- break;
case CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED:
mConfig = Config.readConfig(mContext);
mReceiverHandler.post(this::handleConfigurationChanged);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/WifiSignalController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/WifiSignalController.java
index 5a43321..e7d1c95 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/WifiSignalController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/WifiSignalController.java
@@ -38,7 +38,6 @@
public class WifiSignalController extends
SignalController<WifiSignalController.WifiState, SignalController.IconGroup> {
private final boolean mHasMobileData;
- private final WifiManager mWifiManager;
private final WifiStatusTracker mWifiTracker;
public WifiSignalController(Context context, boolean hasMobileData,
@@ -50,11 +49,13 @@
context.getSystemService(NetworkScoreManager.class);
ConnectivityManager connectivityManager =
context.getSystemService(ConnectivityManager.class);
- mWifiManager = wifiManager;
mWifiTracker = new WifiStatusTracker(mContext, wifiManager, networkScoreManager,
connectivityManager, this::handleStatusUpdated);
mWifiTracker.setListening(true);
mHasMobileData = hasMobileData;
+ if (wifiManager != null) {
+ wifiManager.registerTrafficStateCallback(new WifiTrafficStateCallback());
+ }
// WiFi only has one state.
mCurrentState.iconGroup = mLastState.iconGroup = new IconGroup(
"Wi-Fi Icons",
@@ -127,10 +128,6 @@
notifyListenersIfNecessary();
}
- public void handleBootCompleted() {
- mWifiManager.registerTrafficStateCallback(new WifiTrafficStateCallback());
- }
-
/**
* Handler to receive the data activity on wifi.
*/
diff --git a/packages/SystemUI/src/com/android/systemui/usb/UsbConfirmActivity.java b/packages/SystemUI/src/com/android/systemui/usb/UsbConfirmActivity.java
index fd99ef3..286b7c0 100644
--- a/packages/SystemUI/src/com/android/systemui/usb/UsbConfirmActivity.java
+++ b/packages/SystemUI/src/com/android/systemui/usb/UsbConfirmActivity.java
@@ -71,6 +71,7 @@
final AlertController.AlertParams ap = mAlertParams;
ap.mTitle = appName;
+ boolean useRecordWarning = false;
if (mDevice == null) {
ap.mMessage = getString(R.string.usb_accessory_confirm_prompt, appName,
mAccessory.getDescription());
@@ -83,7 +84,7 @@
packageName)
== android.content.pm.PackageManager.PERMISSION_GRANTED;
boolean isAudioCaptureDevice = mDevice.getHasAudioCapture();
- boolean useRecordWarning = isAudioCaptureDevice && !hasRecordPermission;
+ useRecordWarning = isAudioCaptureDevice && !hasRecordPermission;
int strID = useRecordWarning
? R.string.usb_device_confirm_prompt_warn
@@ -98,22 +99,23 @@
ap.mNegativeButtonListener = this;
// add "always use" checkbox
- LayoutInflater inflater = (LayoutInflater)getSystemService(
- Context.LAYOUT_INFLATER_SERVICE);
- ap.mView = inflater.inflate(com.android.internal.R.layout.always_use_checkbox, null);
- mAlwaysUse = (CheckBox)ap.mView.findViewById(com.android.internal.R.id.alwaysUse);
- if (mDevice == null) {
- mAlwaysUse.setText(getString(R.string.always_use_accessory, appName,
- mAccessory.getDescription()));
- } else {
- mAlwaysUse.setText(getString(R.string.always_use_device, appName,
- mDevice.getProductName()));
+ if (!useRecordWarning) {
+ LayoutInflater inflater = (LayoutInflater) getSystemService(
+ Context.LAYOUT_INFLATER_SERVICE);
+ ap.mView = inflater.inflate(com.android.internal.R.layout.always_use_checkbox, null);
+ mAlwaysUse = (CheckBox) ap.mView.findViewById(com.android.internal.R.id.alwaysUse);
+ if (mDevice == null) {
+ mAlwaysUse.setText(getString(R.string.always_use_accessory, appName,
+ mAccessory.getDescription()));
+ } else {
+ mAlwaysUse.setText(getString(R.string.always_use_device, appName,
+ mDevice.getProductName()));
+ }
+ mAlwaysUse.setOnCheckedChangeListener(this);
+ mClearDefaultHint = (TextView) ap.mView.findViewById(
+ com.android.internal.R.id.clearDefaultHint);
+ mClearDefaultHint.setVisibility(View.GONE);
}
- mAlwaysUse.setOnCheckedChangeListener(this);
- mClearDefaultHint = (TextView)ap.mView.findViewById(
- com.android.internal.R.id.clearDefaultHint);
- mClearDefaultHint.setVisibility(View.GONE);
-
setupAlert();
}
@@ -133,7 +135,7 @@
IUsbManager service = IUsbManager.Stub.asInterface(b);
final int uid = mResolveInfo.activityInfo.applicationInfo.uid;
final int userId = UserHandle.myUserId();
- boolean alwaysUse = mAlwaysUse.isChecked();
+ boolean alwaysUse = mAlwaysUse != null ? mAlwaysUse.isChecked() : false;
Intent intent = null;
if (mDevice != null) {
diff --git a/packages/SystemUI/src/com/android/systemui/usb/UsbPermissionActivity.java b/packages/SystemUI/src/com/android/systemui/usb/UsbPermissionActivity.java
index 47b56e0..98b4209e 100644
--- a/packages/SystemUI/src/com/android/systemui/usb/UsbPermissionActivity.java
+++ b/packages/SystemUI/src/com/android/systemui/usb/UsbPermissionActivity.java
@@ -84,6 +84,7 @@
final AlertController.AlertParams ap = mAlertParams;
ap.mTitle = appName;
+ boolean useRecordWarning = false;
if (mDevice == null) {
// Accessory Case
@@ -97,13 +98,14 @@
mPackageName)
== android.content.pm.PackageManager.PERMISSION_GRANTED;
boolean isAudioCaptureDevice = mDevice.getHasAudioCapture();
- boolean useRecordWarning = isAudioCaptureDevice && !hasRecordPermission;
+ useRecordWarning = isAudioCaptureDevice && !hasRecordPermission;
int strID = useRecordWarning
? R.string.usb_device_permission_prompt_warn
: R.string.usb_device_permission_prompt;
ap.mMessage = getString(strID, appName, mDevice.getProductName());
mDisconnectedReceiver = new UsbDisconnectedReceiver(this, mDevice);
+
}
ap.mPositiveButtonText = getString(android.R.string.ok);
@@ -111,7 +113,8 @@
ap.mPositiveButtonListener = this;
ap.mNegativeButtonListener = this;
- if (canBeDefault && (mDevice != null || mAccessory != null)) {
+ // Don't show the "always use" checkbox if the USB/Record warning is in effect
+ if (!useRecordWarning && canBeDefault && (mDevice != null || mAccessory != null)) {
// add "open when" checkbox
LayoutInflater inflater = (LayoutInflater) getSystemService(
Context.LAYOUT_INFLATER_SERVICE);
diff --git a/packages/SystemUI/src/com/android/systemui/volume/ConfigurableTexts.java b/packages/SystemUI/src/com/android/systemui/volume/ConfigurableTexts.java
index 20de5bb..f1b9590 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/ConfigurableTexts.java
+++ b/packages/SystemUI/src/com/android/systemui/volume/ConfigurableTexts.java
@@ -43,6 +43,9 @@
public int add(final TextView text, final int labelResId) {
if (text == null) return 0;
+ if (mTexts.containsKey(text)) {
+ return mTexts.get(text);
+ }
final Resources res = mContext.getResources();
final float fontScale = res.getConfiguration().fontScale;
final float density = res.getDisplayMetrics().density;
@@ -63,6 +66,11 @@
return sp;
}
+ public void remove(final TextView text) {
+ mTexts.remove(text);
+ mTextLabels.remove(text);
+ }
+
public void update() {
if (mTexts.isEmpty()) return;
mTexts.keyAt(0).post(mUpdateAll);
diff --git a/packages/SystemUI/src/com/android/systemui/volume/Events.java b/packages/SystemUI/src/com/android/systemui/volume/Events.java
index 9bbfd22..5ed8b8f 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/Events.java
+++ b/packages/SystemUI/src/com/android/systemui/volume/Events.java
@@ -16,7 +16,6 @@
package com.android.systemui.volume;
-import android.content.Context;
import android.media.AudioManager;
import android.media.AudioSystem;
import android.provider.Settings.Global;
@@ -125,7 +124,12 @@
public static Callback sCallback;
- public static void writeEvent(Context context, int tag, Object... list) {
+ /**
+ * Logs an event to the system log and the event log.
+ * @param tag One of the EVENT_* codes above.
+ * @param list Any additional event-specific arguments, documented above.
+ */
+ public static void writeEvent(int tag, Object... list) {
MetricsLogger logger = new MetricsLogger();
final long time = System.currentTimeMillis();
final StringBuilder sb = new StringBuilder("writeEvent ").append(EVENT_TAGS[tag]);
@@ -133,33 +137,33 @@
sb.append(" ");
switch (tag) {
case EVENT_SHOW_DIALOG:
- MetricsLogger.visible(context, MetricsEvent.VOLUME_DIALOG);
- MetricsLogger.histogram(context, "volume_from_keyguard",
+ logger.visible(MetricsEvent.VOLUME_DIALOG);
+ logger.histogram("volume_from_keyguard",
(Boolean) list[1] ? 1 : 0);
sb.append(SHOW_REASONS[(Integer) list[0]]).append(" keyguard=").append(list[1]);
break;
case EVENT_EXPAND:
- MetricsLogger.visibility(context, MetricsEvent.VOLUME_DIALOG_DETAILS,
+ logger.visibility(MetricsEvent.VOLUME_DIALOG_DETAILS,
(Boolean) list[0]);
sb.append(list[0]);
break;
case EVENT_DISMISS_DIALOG:
- MetricsLogger.hidden(context, MetricsEvent.VOLUME_DIALOG);
+ logger.hidden(MetricsEvent.VOLUME_DIALOG);
sb.append(DISMISS_REASONS[(Integer) list[0]]);
break;
case EVENT_ACTIVE_STREAM_CHANGED:
- MetricsLogger.action(context, MetricsEvent.ACTION_VOLUME_STREAM,
+ logger.action(MetricsEvent.ACTION_VOLUME_STREAM,
(Integer) list[0]);
sb.append(AudioSystem.streamToString((Integer) list[0]));
break;
case EVENT_ICON_CLICK:
- MetricsLogger.action(context, MetricsEvent.ACTION_VOLUME_ICON,
+ logger.action(MetricsEvent.ACTION_VOLUME_ICON,
(Integer) list[0]);
sb.append(AudioSystem.streamToString((Integer) list[0])).append(' ')
.append(iconStateToString((Integer) list[1]));
break;
case EVENT_TOUCH_LEVEL_DONE:
- MetricsLogger.action(context, MetricsEvent.ACTION_VOLUME_SLIDER,
+ logger.action(MetricsEvent.ACTION_VOLUME_SLIDER,
(Integer) list[1]);
// fall through
case EVENT_TOUCH_LEVEL_CHANGED:
@@ -169,7 +173,7 @@
.append(list[1]);
break;
case EVENT_KEY:
- MetricsLogger.action(context, MetricsEvent.ACTION_VOLUME_KEY,
+ logger.action(MetricsEvent.ACTION_VOLUME_KEY,
(Integer) list[0]);
sb.append(AudioSystem.streamToString((Integer) list[0])).append(' ')
.append(list[1]);
@@ -181,7 +185,7 @@
logger.action(MetricsEvent.ACTION_VOLUME_SETTINGS);
break;
case EVENT_EXTERNAL_RINGER_MODE_CHANGED:
- MetricsLogger.action(context, MetricsEvent.ACTION_RINGER_MODE,
+ logger.action(MetricsEvent.ACTION_RINGER_MODE,
(Integer) list[0]);
// fall through
case EVENT_INTERNAL_RINGER_MODE_CHANGED:
@@ -194,14 +198,14 @@
sb.append(list[0]).append(' ').append(list[1]);
break;
case EVENT_SHOW_USB_OVERHEAT_ALARM:
- MetricsLogger.visible(context, MetricsEvent.POWER_OVERHEAT_ALARM);
- MetricsLogger.histogram(context, "show_usb_overheat_alarm",
+ logger.visible(MetricsEvent.POWER_OVERHEAT_ALARM);
+ logger.histogram("show_usb_overheat_alarm",
(Boolean) list[1] ? 1 : 0);
sb.append(SHOW_REASONS[(Integer) list[0]]).append(" keyguard=").append(list[1]);
break;
case EVENT_DISMISS_USB_OVERHEAT_ALARM:
- MetricsLogger.hidden(context, MetricsEvent.POWER_OVERHEAT_ALARM);
- MetricsLogger.histogram(context, "dismiss_usb_overheat_alarm",
+ logger.hidden(MetricsEvent.POWER_OVERHEAT_ALARM);
+ logger.histogram("dismiss_usb_overheat_alarm",
(Boolean) list[1] ? 1 : 0);
sb.append(DISMISS_REASONS[(Integer) list[0]])
.append(" keyguard=").append(list[1]);
@@ -255,4 +259,5 @@
void writeEvent(long time, int tag, Object[] list);
void writeState(long time, State state);
}
+
}
diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogControllerImpl.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogControllerImpl.java
index 02c699f..a4ed31d 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogControllerImpl.java
@@ -150,7 +150,7 @@
mStatusBarOptionalLazy = statusBarOptionalLazy;
mNotificationManager = (NotificationManager) mContext.getSystemService(
Context.NOTIFICATION_SERVICE);
- Events.writeEvent(mContext, Events.EVENT_COLLECTION_STARTED);
+ Events.writeEvent(Events.EVENT_COLLECTION_STARTED);
mWorkerThread = new HandlerThread(VolumeDialogControllerImpl.class.getSimpleName());
mWorkerThread.start();
mWorker = new W(mWorkerThread.getLooper());
@@ -237,7 +237,7 @@
if (D.BUG) Log.d(TAG, "destroy");
if (mDestroyed) return;
mDestroyed = true;
- Events.writeEvent(mContext, Events.EVENT_COLLECTION_STOPPED);
+ Events.writeEvent(Events.EVENT_COLLECTION_STOPPED);
mMediaSessions.destroy();
mObserver.destroy();
mReceiver.destroy();
@@ -487,7 +487,7 @@
mCallbacks.onShowSilentHint();
}
if (changed && fromKey) {
- Events.writeEvent(mContext, Events.EVENT_KEY, stream, lastAudibleStreamVolume);
+ Events.writeEvent(Events.EVENT_KEY, stream, lastAudibleStreamVolume);
}
return changed;
}
@@ -495,7 +495,7 @@
private boolean updateActiveStreamW(int activeStream) {
if (activeStream == mState.activeStream) return false;
mState.activeStream = activeStream;
- Events.writeEvent(mContext, Events.EVENT_ACTIVE_STREAM_CHANGED, activeStream);
+ Events.writeEvent(Events.EVENT_ACTIVE_STREAM_CHANGED, activeStream);
if (D.BUG) Log.d(TAG, "updateActiveStreamW " + activeStream);
final int s = activeStream < DYNAMIC_STREAM_START_INDEX ? activeStream : -1;
if (D.BUG) Log.d(TAG, "forceVolumeControlStream " + s);
@@ -544,7 +544,7 @@
if (ss.level == level) return false;
ss.level = level;
if (isLogWorthy(stream)) {
- Events.writeEvent(mContext, Events.EVENT_LEVEL_CHANGED, stream, level);
+ Events.writeEvent(Events.EVENT_LEVEL_CHANGED, stream, level);
}
return true;
}
@@ -567,7 +567,7 @@
if (ss.muted == muted) return false;
ss.muted = muted;
if (isLogWorthy(stream)) {
- Events.writeEvent(mContext, Events.EVENT_MUTE_CHANGED, stream, muted);
+ Events.writeEvent(Events.EVENT_MUTE_CHANGED, stream, muted);
}
if (muted && isRinger(stream)) {
updateRingerModeInternalW(mAudio.getRingerModeInternal());
@@ -583,7 +583,7 @@
if (Objects.equals(mState.effectsSuppressor, effectsSuppressor)) return false;
mState.effectsSuppressor = effectsSuppressor;
mState.effectsSuppressorName = getApplicationName(mContext, mState.effectsSuppressor);
- Events.writeEvent(mContext, Events.EVENT_SUPPRESSOR_CHANGED, mState.effectsSuppressor,
+ Events.writeEvent(Events.EVENT_SUPPRESSOR_CHANGED, mState.effectsSuppressor,
mState.effectsSuppressorName);
return true;
}
@@ -607,7 +607,7 @@
Settings.Global.ZEN_MODE, Settings.Global.ZEN_MODE_OFF);
if (mState.zenMode == zen) return false;
mState.zenMode = zen;
- Events.writeEvent(mContext, Events.EVENT_ZEN_MODE_CHANGED, zen);
+ Events.writeEvent(Events.EVENT_ZEN_MODE_CHANGED, zen);
return true;
}
@@ -633,23 +633,23 @@
mState.disallowMedia = disallowMedia;
mState.disallowSystem = disallowSystem;
mState.disallowRinger = disallowRinger;
- Events.writeEvent(mContext, Events.EVENT_ZEN_CONFIG_CHANGED, "disallowAlarms=" +
- disallowAlarms + " disallowMedia=" + disallowMedia + " disallowSystem=" +
- disallowSystem + " disallowRinger=" + disallowRinger);
+ Events.writeEvent(Events.EVENT_ZEN_CONFIG_CHANGED, "disallowAlarms="
+ + disallowAlarms + " disallowMedia=" + disallowMedia + " disallowSystem="
+ + disallowSystem + " disallowRinger=" + disallowRinger);
return true;
}
private boolean updateRingerModeExternalW(int rm) {
if (rm == mState.ringerModeExternal) return false;
mState.ringerModeExternal = rm;
- Events.writeEvent(mContext, Events.EVENT_EXTERNAL_RINGER_MODE_CHANGED, rm);
+ Events.writeEvent(Events.EVENT_EXTERNAL_RINGER_MODE_CHANGED, rm);
return true;
}
private boolean updateRingerModeInternalW(int rm) {
if (rm == mState.ringerModeInternal) return false;
mState.ringerModeInternal = rm;
- Events.writeEvent(mContext, Events.EVENT_INTERNAL_RINGER_MODE_CHANGED, rm);
+ Events.writeEvent(Events.EVENT_INTERNAL_RINGER_MODE_CHANGED, rm);
if (mState.ringerModeInternal == RINGER_MODE_NORMAL) {
playTouchFeedback();
diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java
index 24d6c4c..f5c1587 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java
@@ -429,7 +429,7 @@
row.icon.setImageResource(iconRes);
if (row.stream != AudioSystem.STREAM_ACCESSIBILITY) {
row.icon.setOnClickListener(v -> {
- Events.writeEvent(mContext, Events.EVENT_ICON_CLICK, row.stream, row.iconState);
+ Events.writeEvent(Events.EVENT_ICON_CLICK, row.stream, row.iconState);
mController.setActiveStream(row.stream);
if (row.stream == AudioManager.STREAM_RING) {
final boolean hasVibrator = mController.hasVibrator();
@@ -468,7 +468,7 @@
}
if (mSettingsIcon != null) {
mSettingsIcon.setOnClickListener(v -> {
- Events.writeEvent(mContext, Events.EVENT_SETTINGS_CLICK);
+ Events.writeEvent(Events.EVENT_SETTINGS_CLICK);
Intent intent = new Intent(Settings.Panel.ACTION_VOLUME);
dismissH(DISMISS_REASON_SETTINGS_CLICKED);
Dependency.get(ActivityStarter.class).startActivity(intent,
@@ -504,7 +504,7 @@
mController.setStreamVolume(AudioManager.STREAM_RING, 1);
}
}
- Events.writeEvent(mContext, Events.EVENT_RINGER_TOGGLE, newRingerMode);
+ Events.writeEvent(Events.EVENT_RINGER_TOGGLE, newRingerMode);
incrementManualToggleCount();
updateRingerH();
provideTouchFeedbackH(newRingerMode);
@@ -519,7 +519,7 @@
if (mODICaptionsIcon != null) {
mODICaptionsIcon.setOnConfirmedTapListener(() -> {
onCaptionIconClicked();
- Events.writeEvent(mContext, Events.EVENT_ODI_CAPTIONS_CLICK);
+ Events.writeEvent(Events.EVENT_ODI_CAPTIONS_CLICK);
}, mHandler);
}
@@ -541,7 +541,7 @@
mODICaptionsTooltipView = mODICaptionsTooltipViewStub.inflate();
mODICaptionsTooltipView.findViewById(R.id.dismiss).setOnClickListener(v -> {
hideCaptionsTooltip();
- Events.writeEvent(mContext, Events.EVENT_ODI_CAPTIONS_TOOLTIP_CLICK);
+ Events.writeEvent(Events.EVENT_ODI_CAPTIONS_TOOLTIP_CLICK);
});
mODICaptionsTooltipViewStub = null;
rescheduleTimeoutH();
@@ -694,7 +694,7 @@
initSettingsH();
mShowing = true;
mDialog.show();
- Events.writeEvent(mContext, Events.EVENT_SHOW_DIALOG, reason, mKeyguard.isKeyguardLocked());
+ Events.writeEvent(Events.EVENT_SHOW_DIALOG, reason, mKeyguard.isKeyguardLocked());
mController.notifyVisible(true);
mController.getCaptionsComponentState(false);
checkODICaptionsTooltip(false);
@@ -741,7 +741,7 @@
if (mShowing) {
mShowing = false;
// Only logs when the volume dialog visibility is changed.
- Events.writeEvent(mContext, Events.EVENT_DISMISS_DIALOG, reason);
+ Events.writeEvent(Events.EVENT_DISMISS_DIALOG, reason);
}
mDialogView.setTranslationX(0);
mDialogView.setAlpha(1);
@@ -922,6 +922,7 @@
if (!mDynamic.get(row.stream)) {
mRows.remove(i);
mDialogRowsView.removeView(row.view);
+ mConfigurableTexts.remove(row.header);
}
}
}
@@ -1400,7 +1401,7 @@
mController.setActiveStream(mRow.stream);
mController.setStreamVolume(mRow.stream, userLevel);
mRow.requestedLevel = userLevel;
- Events.writeEvent(mContext, Events.EVENT_TOUCH_LEVEL_CHANGED, mRow.stream,
+ Events.writeEvent(Events.EVENT_TOUCH_LEVEL_CHANGED, mRow.stream,
userLevel);
}
}
@@ -1419,7 +1420,7 @@
mRow.tracking = false;
mRow.userAttempt = SystemClock.uptimeMillis();
final int userLevel = getImpliedLevel(seekBar, seekBar.getProgress());
- Events.writeEvent(mContext, Events.EVENT_TOUCH_LEVEL_DONE, mRow.stream, userLevel);
+ Events.writeEvent(Events.EVENT_TOUCH_LEVEL_DONE, mRow.stream, userLevel);
if (mRow.ss.level != userLevel) {
mHandler.sendMessageDelayed(mHandler.obtainMessage(H.RECHECK, mRow),
USER_ATTEMPT_GRACE_PERIOD);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/BootCompleteCacheTest.kt b/packages/SystemUI/tests/src/com/android/systemui/BootCompleteCacheTest.kt
new file mode 100644
index 0000000..6e79157
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/BootCompleteCacheTest.kt
@@ -0,0 +1,119 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui
+
+import android.testing.AndroidTestingRunner
+import androidx.test.filters.SmallTest
+import org.junit.Assert.assertFalse
+import org.junit.Assert.assertTrue
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.Mock
+import org.mockito.Mockito.never
+import org.mockito.Mockito.verify
+import org.mockito.MockitoAnnotations
+
+@RunWith(AndroidTestingRunner::class)
+@SmallTest
+class BootCompleteCacheTest : SysuiTestCase() {
+
+ private lateinit var bootCompleteCache: BootCompleteCacheImpl
+ @Mock
+ private lateinit var bootCompleteListener: BootCompleteCache.BootCompleteListener
+ @Mock
+ private lateinit var dumpController: DumpController
+
+ @Before
+ fun setUp() {
+ MockitoAnnotations.initMocks(this)
+
+ bootCompleteCache = BootCompleteCacheImpl(dumpController)
+ }
+
+ @Test
+ fun testFlagChange() {
+ assertFalse(bootCompleteCache.isBootComplete())
+
+ bootCompleteCache.setBootComplete()
+
+ assertTrue(bootCompleteCache.isBootComplete())
+ }
+
+ @Test
+ fun testDoubleSetIsNoOp() {
+ assertFalse(bootCompleteCache.isBootComplete())
+
+ bootCompleteCache.setBootComplete()
+ bootCompleteCache.setBootComplete()
+
+ assertTrue(bootCompleteCache.isBootComplete())
+ }
+
+ @Test
+ fun testAddListenerGivesCurrentState_false() {
+ val boot = bootCompleteCache.addListener(bootCompleteListener)
+ assertFalse(boot)
+ }
+
+ @Test
+ fun testAddListenerGivesCurrentState_true() {
+ bootCompleteCache.setBootComplete()
+ val boot = bootCompleteCache.addListener(bootCompleteListener)
+ assertTrue(boot)
+ }
+
+ @Test
+ fun testListenerCalledOnBootComplete() {
+ bootCompleteCache.addListener(bootCompleteListener)
+
+ bootCompleteCache.setBootComplete()
+ verify(bootCompleteListener).onBootComplete()
+ }
+
+ @Test
+ fun testListenerCalledOnBootComplete_onlyOnce() {
+ bootCompleteCache.addListener(bootCompleteListener)
+
+ bootCompleteCache.setBootComplete()
+ bootCompleteCache.setBootComplete()
+
+ verify(bootCompleteListener).onBootComplete()
+ }
+
+ @Test
+ fun testListenerNotCalledIfBootIsAlreadyComplete() {
+ bootCompleteCache.setBootComplete()
+
+ bootCompleteCache.addListener(bootCompleteListener)
+
+ bootCompleteCache.setBootComplete()
+
+ verify(bootCompleteListener, never()).onBootComplete()
+ }
+
+ @Test
+ fun testListenerRemovedNotCalled() {
+ bootCompleteCache.addListener(bootCompleteListener)
+
+ bootCompleteCache.removeListener(bootCompleteListener)
+
+ bootCompleteCache.setBootComplete()
+
+ verify(bootCompleteListener, never()).onBootComplete()
+ }
+}
\ No newline at end of file
diff --git a/packages/SystemUI/tests/src/com/android/systemui/ForegroundServiceControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/ForegroundServiceControllerTest.java
index 0990e22..4cb5472 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/ForegroundServiceControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/ForegroundServiceControllerTest.java
@@ -49,6 +49,7 @@
import com.android.systemui.statusbar.NotificationEntryBuilder;
import com.android.systemui.statusbar.notification.NotificationEntryListener;
import com.android.systemui.statusbar.notification.NotificationEntryManager;
+import com.android.systemui.statusbar.notification.collection.NotifCollection;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import junit.framework.Assert;
@@ -70,6 +71,7 @@
@Mock private NotificationEntryManager mEntryManager;
@Mock private AppOpsController mAppOpsController;
@Mock private Handler mMainHandler;
+ @Mock private NotifCollection mNotifCollection;
@Before
public void setUp() throws Exception {
@@ -79,7 +81,7 @@
MockitoAnnotations.initMocks(this);
mFsc = new ForegroundServiceController(mEntryManager, mAppOpsController, mMainHandler);
mListener = new ForegroundServiceNotificationListener(
- mContext, mFsc, mEntryManager);
+ mContext, mFsc, mEntryManager, mNotifCollection);
ArgumentCaptor<NotificationEntryListener> entryListenerCaptor =
ArgumentCaptor.forClass(NotificationEntryListener.class);
verify(mEntryManager).addNotificationEntryListener(
diff --git a/packages/SystemUI/tests/src/com/android/systemui/broadcast/BroadcastDispatcherTest.kt b/packages/SystemUI/tests/src/com/android/systemui/broadcast/BroadcastDispatcherTest.kt
index ead14e5..2242c1a 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/broadcast/BroadcastDispatcherTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/broadcast/BroadcastDispatcherTest.kt
@@ -178,6 +178,14 @@
broadcastDispatcher.registerReceiver(broadcastReceiver, testFilter)
}
+ @Test(expected = IllegalArgumentException::class)
+ fun testFilterMustNotSetPriority() {
+ val testFilter = IntentFilter(TEST_ACTION).apply {
+ priority = IntentFilter.SYSTEM_HIGH_PRIORITY
+ }
+ broadcastDispatcher.registerReceiver(broadcastReceiver, testFilter)
+ }
+
private class TestBroadcastDispatcher(
context: Context,
mainHandler: Handler,
diff --git a/packages/SystemUI/tests/src/com/android/systemui/log/RichEventTest.java b/packages/SystemUI/tests/src/com/android/systemui/log/RichEventTest.java
index 2f90641..4a90bb9 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/log/RichEventTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/log/RichEventTest.java
@@ -57,7 +57,7 @@
class TestableRichEvent extends RichEvent {
TestableRichEvent(int logLevel, int type, String reason) {
- super(logLevel, type, reason);
+ init(logLevel, type, reason);
}
@Override
diff --git a/packages/SystemUI/tests/src/com/android/systemui/log/SysuiLogTest.java b/packages/SystemUI/tests/src/com/android/systemui/log/SysuiLogTest.java
index 378bba1..0dfb7ba8 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/log/SysuiLogTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/log/SysuiLogTest.java
@@ -35,11 +35,12 @@
@RunWith(AndroidTestingRunner.class)
public class SysuiLogTest extends SysuiTestCase {
private static final String TEST_ID = "TestLogger";
+ private static final String TEST_MSG = "msg";
private static final int MAX_LOGS = 5;
@Mock
private DumpController mDumpController;
- private SysuiLog mSysuiLog;
+ private SysuiLog<Event> mSysuiLog;
@Before
public void setup() {
@@ -48,35 +49,63 @@
@Test
public void testLogDisabled_noLogsWritten() {
- mSysuiLog = new SysuiLog(mDumpController, TEST_ID, MAX_LOGS, false);
- assertEquals(mSysuiLog.mTimeline, null);
+ mSysuiLog = new TestSysuiLog(mDumpController, TEST_ID, MAX_LOGS, false);
+ assertEquals(null, mSysuiLog.mTimeline);
- mSysuiLog.log(new Event("msg"));
- assertEquals(mSysuiLog.mTimeline, null);
+ mSysuiLog.log(createEvent(TEST_MSG));
+ assertEquals(null, mSysuiLog.mTimeline);
}
@Test
public void testLogEnabled_logWritten() {
- mSysuiLog = new SysuiLog(mDumpController, TEST_ID, MAX_LOGS, true);
- assertEquals(mSysuiLog.mTimeline.size(), 0);
+ mSysuiLog = new TestSysuiLog(mDumpController, TEST_ID, MAX_LOGS, true);
+ assertEquals(0, mSysuiLog.mTimeline.size());
- mSysuiLog.log(new Event("msg"));
- assertEquals(mSysuiLog.mTimeline.size(), 1);
+ mSysuiLog.log(createEvent(TEST_MSG));
+ assertEquals(1, mSysuiLog.mTimeline.size());
}
@Test
public void testMaxLogs() {
- mSysuiLog = new SysuiLog(mDumpController, TEST_ID, MAX_LOGS, true);
+ mSysuiLog = new TestSysuiLog(mDumpController, TEST_ID, MAX_LOGS, true);
assertEquals(mSysuiLog.mTimeline.size(), 0);
- final String msg = "msg";
for (int i = 0; i < MAX_LOGS + 1; i++) {
- mSysuiLog.log(new Event(msg + i));
+ mSysuiLog.log(createEvent(TEST_MSG + i));
}
- assertEquals(mSysuiLog.mTimeline.size(), MAX_LOGS);
+ assertEquals(MAX_LOGS, mSysuiLog.mTimeline.size());
- // check the first message (msg0) is deleted:
- assertEquals(mSysuiLog.mTimeline.getFirst().getMessage(), msg + "1");
+ // check the first message (msg0) was replaced with msg1:
+ assertEquals(TEST_MSG + "1", mSysuiLog.mTimeline.getFirst().getMessage());
+ }
+
+ @Test
+ public void testRecycleLogs() {
+ // GIVEN a SysuiLog with one log
+ mSysuiLog = new TestSysuiLog(mDumpController, TEST_ID, MAX_LOGS, true);
+ Event e = createEvent(TEST_MSG); // msg
+ mSysuiLog.log(e); // Logs: [msg]
+
+ Event recycledEvent = null;
+ // WHEN we add MAX_LOGS after the first log
+ for (int i = 0; i < MAX_LOGS; i++) {
+ recycledEvent = mSysuiLog.log(createEvent(TEST_MSG + i));
+ }
+ // Logs: [msg1, msg2, msg3, msg4]
+
+ // THEN we see the recycledEvent is e
+ assertEquals(e, recycledEvent);
+ }
+
+ private Event createEvent(String msg) {
+ return new Event().init(msg);
+ }
+
+ public class TestSysuiLog extends SysuiLog<Event> {
+ protected TestSysuiLog(DumpController dumpController, String id, int maxLogs,
+ boolean enabled) {
+ super(dumpController, id, maxLogs, enabled);
+ }
}
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/power/PowerUITest.java b/packages/SystemUI/tests/src/com/android/systemui/power/PowerUITest.java
index e8f19238..167f361 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/power/PowerUITest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/power/PowerUITest.java
@@ -48,6 +48,7 @@
import com.android.systemui.SysuiTestCase;
import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.power.PowerUI.WarningsUI;
+import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.phone.StatusBar;
import org.junit.Before;
@@ -87,6 +88,7 @@
private IThermalEventListener mUsbThermalEventListener;
private IThermalEventListener mSkinThermalEventListener;
@Mock private BroadcastDispatcher mBroadcastDispatcher;
+ @Mock private CommandQueue mCommandQueue;
@Mock private Lazy<StatusBar> mStatusBarLazy;
@Mock private StatusBar mStatusBar;
@@ -686,7 +688,7 @@
}
private void createPowerUi() {
- mPowerUI = new PowerUI(mContext, mBroadcastDispatcher, mStatusBarLazy);
+ mPowerUI = new PowerUI(mContext, mBroadcastDispatcher, mCommandQueue, mStatusBarLazy);
mPowerUI.mThermalService = mThermalServiceMock;
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyDialogBuilderTest.kt b/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyDialogBuilderTest.kt
deleted file mode 100644
index 6302f9d..0000000
--- a/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyDialogBuilderTest.kt
+++ /dev/null
@@ -1,77 +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 com.android.systemui.privacy
-
-import androidx.test.filters.SmallTest
-import androidx.test.runner.AndroidJUnit4
-import com.android.systemui.SysuiTestCase
-import org.junit.Assert.assertEquals
-import org.junit.Test
-import org.junit.runner.RunWith
-
-@RunWith(AndroidJUnit4::class)
-@SmallTest
-class PrivacyDialogBuilderTest : SysuiTestCase() {
-
- companion object {
- val TEST_UID = 1
- }
-
- @Test
- fun testGenerateAppsList() {
- val bar2 = PrivacyItem(Privacy.TYPE_CAMERA, PrivacyApplication(
- "Bar", TEST_UID, context))
- val bar3 = PrivacyItem(Privacy.TYPE_LOCATION, PrivacyApplication(
- "Bar", TEST_UID, context))
- val foo0 = PrivacyItem(Privacy.TYPE_MICROPHONE, PrivacyApplication(
- "Foo", TEST_UID, context))
- val baz1 = PrivacyItem(Privacy.TYPE_CAMERA, PrivacyApplication(
- "Baz", TEST_UID, context))
-
- val items = listOf(bar2, foo0, baz1, bar3)
-
- val textBuilder = PrivacyDialogBuilder(context, items)
-
- val list = textBuilder.appsAndTypes
- assertEquals(3, list.size)
- val appsList = list.map { it.first }
- val typesList = list.map { it.second }
- // List is sorted by number of types and then by types
- assertEquals(listOf("Bar", "Baz", "Foo"), appsList.map { it.packageName })
- assertEquals(listOf(Privacy.TYPE_CAMERA, Privacy.TYPE_LOCATION), typesList[0])
- assertEquals(listOf(Privacy.TYPE_CAMERA), typesList[1])
- assertEquals(listOf(Privacy.TYPE_MICROPHONE), typesList[2])
- }
-
- @Test
- fun testOrder() {
- // We want location to always go last, so it will go in the "+ other apps"
- val appCamera = PrivacyItem(PrivacyType.TYPE_CAMERA,
- PrivacyApplication("Camera", TEST_UID, context))
- val appMicrophone =
- PrivacyItem(PrivacyType.TYPE_MICROPHONE,
- PrivacyApplication("Microphone", TEST_UID, context))
- val appLocation =
- PrivacyItem(PrivacyType.TYPE_LOCATION,
- PrivacyApplication("Location", TEST_UID, context))
-
- val items = listOf(appLocation, appMicrophone, appCamera)
- val textBuilder = PrivacyDialogBuilder(context, items)
- val appList = textBuilder.appsAndTypes.map { it.first }.map { it.packageName }
- assertEquals(listOf("Camera", "Microphone", "Location"), appList)
- }
-}
\ No newline at end of file
diff --git a/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyItemControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyItemControllerTest.kt
deleted file mode 100644
index 20148e1..0000000
--- a/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyItemControllerTest.kt
+++ /dev/null
@@ -1,315 +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 com.android.systemui.privacy
-
-import android.app.ActivityManager
-import android.app.AppOpsManager
-import android.content.Context
-import android.content.Intent
-import android.content.pm.UserInfo
-import android.os.Handler
-import android.os.UserHandle
-import android.os.UserManager
-import android.provider.DeviceConfig
-import android.provider.Settings.RESET_MODE_PACKAGE_DEFAULTS
-import android.testing.AndroidTestingRunner
-import android.testing.TestableLooper
-import android.testing.TestableLooper.RunWithLooper
-import androidx.test.filters.SmallTest
-import com.android.internal.config.sysui.SystemUiDeviceConfigFlags
-import com.android.systemui.Dependency
-import com.android.systemui.R
-import com.android.systemui.SysuiTestCase
-import com.android.systemui.appops.AppOpItem
-import com.android.systemui.appops.AppOpsController
-import com.android.systemui.broadcast.BroadcastDispatcher
-import org.hamcrest.Matchers.hasItem
-import org.hamcrest.Matchers.not
-import org.hamcrest.Matchers.nullValue
-import org.junit.After
-import org.junit.Assert.assertEquals
-import org.junit.Assert.assertThat
-import org.junit.Assert.assertTrue
-import org.junit.Before
-import org.junit.Ignore
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.mockito.ArgumentCaptor
-import org.mockito.ArgumentMatchers.any
-import org.mockito.ArgumentMatchers.anyBoolean
-import org.mockito.ArgumentMatchers.anyInt
-import org.mockito.ArgumentMatchers.anyList
-import org.mockito.ArgumentMatchers.anyString
-import org.mockito.ArgumentMatchers.eq
-import org.mockito.Captor
-import org.mockito.Mock
-import org.mockito.Mockito.atLeastOnce
-import org.mockito.Mockito.doAnswer
-import org.mockito.Mockito.doReturn
-import org.mockito.Mockito.mock
-import org.mockito.Mockito.never
-import org.mockito.Mockito.reset
-import org.mockito.Mockito.verify
-import org.mockito.Mockito.verifyNoMoreInteractions
-import org.mockito.MockitoAnnotations
-
-@RunWith(AndroidTestingRunner::class)
-@SmallTest
-@RunWithLooper
-@Ignore
-class PrivacyItemControllerTest : SysuiTestCase() {
-
- companion object {
- val CURRENT_USER_ID = ActivityManager.getCurrentUser()
- val TEST_UID = CURRENT_USER_ID * UserHandle.PER_USER_RANGE
- const val SYSTEM_UID = 1000
- const val TEST_PACKAGE_NAME = "test"
- const val DEVICE_SERVICES_STRING = "Device services"
- const val TAG = "PrivacyItemControllerTest"
- fun <T> capture(argumentCaptor: ArgumentCaptor<T>): T = argumentCaptor.capture()
- }
-
- @Mock
- private lateinit var appOpsController: AppOpsController
- @Mock
- private lateinit var callback: PrivacyItemController.Callback
- @Mock
- private lateinit var userManager: UserManager
- @Mock
- private lateinit var broadcastDispatcher: BroadcastDispatcher
- @Captor
- private lateinit var argCaptor: ArgumentCaptor<List<PrivacyItem>>
- @Captor
- private lateinit var argCaptorCallback: ArgumentCaptor<AppOpsController.Callback>
-
- private lateinit var testableLooper: TestableLooper
- private lateinit var privacyItemController: PrivacyItemController
- private lateinit var handler: Handler
-
- fun PrivacyItemController(context: Context) =
- PrivacyItemController(context, appOpsController, handler, handler, broadcastDispatcher)
-
- @Before
- fun setup() {
- MockitoAnnotations.initMocks(this)
- testableLooper = TestableLooper.get(this)
- handler = Handler(testableLooper.looper)
-
- appOpsController = mDependency.injectMockDependency(AppOpsController::class.java)
- mDependency.injectTestDependency(Dependency.MAIN_HANDLER, handler)
- mContext.addMockSystemService(UserManager::class.java, userManager)
- mContext.getOrCreateTestableResources().addOverride(R.string.device_services,
- DEVICE_SERVICES_STRING)
- DeviceConfig.setProperty(DeviceConfig.NAMESPACE_PRIVACY,
- SystemUiDeviceConfigFlags.PROPERTY_PERMISSIONS_HUB_ENABLED,
- "true", false)
-
- doReturn(listOf(object : UserInfo() {
- init {
- id = CURRENT_USER_ID
- }
- })).`when`(userManager).getProfiles(anyInt())
-
- privacyItemController = PrivacyItemController(mContext)
- }
-
- @After
- fun tearDown() {
- DeviceConfig.resetToDefaults(RESET_MODE_PACKAGE_DEFAULTS, DeviceConfig.NAMESPACE_PRIVACY)
- }
-
- @Test
- fun testSetListeningTrueByAddingCallback() {
- privacyItemController.addCallback(callback)
- testableLooper.processAllMessages()
- verify(appOpsController).addCallback(eq(PrivacyItemController.OPS),
- any(AppOpsController.Callback::class.java))
- testableLooper.processAllMessages()
- verify(callback).privacyChanged(anyList())
- }
-
- @Test
- fun testSetListeningFalseByRemovingLastCallback() {
- privacyItemController.addCallback(callback)
- testableLooper.processAllMessages()
- verify(appOpsController, never()).removeCallback(any(IntArray::class.java),
- any(AppOpsController.Callback::class.java))
- privacyItemController.removeCallback(callback)
- testableLooper.processAllMessages()
- verify(appOpsController).removeCallback(eq(PrivacyItemController.OPS),
- any(AppOpsController.Callback::class.java))
- verify(callback).privacyChanged(emptyList())
- }
-
- @Test
- fun testDistinctItems() {
- doReturn(listOf(AppOpItem(AppOpsManager.OP_CAMERA, TEST_UID, "", 0),
- AppOpItem(AppOpsManager.OP_CAMERA, TEST_UID, "", 1)))
- .`when`(appOpsController).getActiveAppOpsForUser(anyInt())
-
- privacyItemController.addCallback(callback)
- testableLooper.processAllMessages()
- verify(callback).privacyChanged(capture(argCaptor))
- assertEquals(1, argCaptor.value.size)
- }
-
- @Test
- fun testSystemApps() {
- doReturn(listOf(AppOpItem(AppOpsManager.OP_COARSE_LOCATION, SYSTEM_UID, TEST_PACKAGE_NAME,
- 0))).`when`(appOpsController).getActiveAppOpsForUser(anyInt())
- privacyItemController.addCallback(callback)
- testableLooper.processAllMessages()
- verify(callback).privacyChanged(capture(argCaptor))
- assertEquals(1, argCaptor.value.size)
- assertEquals(context.getString(R.string.device_services),
- argCaptor.value[0].application.applicationName)
- }
-
- @Test
- fun testRegisterReceiver_allUsers() {
- privacyItemController.addCallback(callback)
- testableLooper.processAllMessages()
- verify(broadcastDispatcher, atLeastOnce()).registerReceiver(
- eq(privacyItemController.userSwitcherReceiver), any(), eq(null), eq(UserHandle.ALL))
- verify(broadcastDispatcher, never())
- .unregisterReceiver(eq(privacyItemController.userSwitcherReceiver))
- }
-
- @Test
- fun testReceiver_ACTION_USER_FOREGROUND() {
- privacyItemController.userSwitcherReceiver.onReceive(context,
- Intent(Intent.ACTION_USER_FOREGROUND))
- verify(userManager).getProfiles(anyInt())
- }
-
- @Test
- fun testReceiver_ACTION_MANAGED_PROFILE_ADDED() {
- privacyItemController.userSwitcherReceiver.onReceive(context,
- Intent(Intent.ACTION_MANAGED_PROFILE_ADDED))
- verify(userManager).getProfiles(anyInt())
- }
-
- @Test
- fun testReceiver_ACTION_MANAGED_PROFILE_REMOVED() {
- privacyItemController.userSwitcherReceiver.onReceive(context,
- Intent(Intent.ACTION_MANAGED_PROFILE_REMOVED))
- verify(userManager).getProfiles(anyInt())
- }
-
- @Test
- fun testAddMultipleCallbacks() {
- val otherCallback = mock(PrivacyItemController.Callback::class.java)
- privacyItemController.addCallback(callback)
- testableLooper.processAllMessages()
- verify(callback).privacyChanged(anyList())
-
- privacyItemController.addCallback(otherCallback)
- testableLooper.processAllMessages()
- verify(otherCallback).privacyChanged(anyList())
- // Adding a callback should not unnecessarily call previous ones
- verifyNoMoreInteractions(callback)
- }
-
- @Test
- fun testMultipleCallbacksAreUpdated() {
- doReturn(emptyList<AppOpItem>()).`when`(appOpsController).getActiveAppOpsForUser(anyInt())
-
- val otherCallback = mock(PrivacyItemController.Callback::class.java)
- privacyItemController.addCallback(callback)
- privacyItemController.addCallback(otherCallback)
- testableLooper.processAllMessages()
- reset(callback)
- reset(otherCallback)
-
- verify(appOpsController).addCallback(any<IntArray>(), capture(argCaptorCallback))
- argCaptorCallback.value.onActiveStateChanged(0, TEST_UID, "", true)
- testableLooper.processAllMessages()
- verify(callback).privacyChanged(anyList())
- verify(otherCallback).privacyChanged(anyList())
- }
-
- @Test
- fun testRemoveCallback() {
- doReturn(emptyList<AppOpItem>()).`when`(appOpsController).getActiveAppOpsForUser(anyInt())
- val otherCallback = mock(PrivacyItemController.Callback::class.java)
- privacyItemController.addCallback(callback)
- privacyItemController.addCallback(otherCallback)
- testableLooper.processAllMessages()
- reset(callback)
- reset(otherCallback)
-
- verify(appOpsController).addCallback(any<IntArray>(), capture(argCaptorCallback))
- privacyItemController.removeCallback(callback)
- argCaptorCallback.value.onActiveStateChanged(0, TEST_UID, "", true)
- testableLooper.processAllMessages()
- verify(callback, never()).privacyChanged(anyList())
- verify(otherCallback).privacyChanged(anyList())
- }
-
- @Test
- fun testListShouldNotHaveNull() {
- doReturn(listOf(AppOpItem(AppOpsManager.OP_ACTIVATE_VPN, TEST_UID, "", 0),
- AppOpItem(AppOpsManager.OP_COARSE_LOCATION, TEST_UID, "", 0)))
- .`when`(appOpsController).getActiveAppOpsForUser(anyInt())
- privacyItemController.addCallback(callback)
- testableLooper.processAllMessages()
-
- verify(callback).privacyChanged(capture(argCaptor))
- assertEquals(1, argCaptor.value.size)
- assertThat(argCaptor.value, not(hasItem(nullValue())))
- }
-
- @Test
- fun testListShouldBeCopy() {
- val list = listOf(PrivacyItem(PrivacyType.TYPE_CAMERA,
- PrivacyApplication("", TEST_UID, mContext)))
- privacyItemController.privacyList = list
- val privacyList = privacyItemController.privacyList
- assertEquals(list, privacyList)
- assertTrue(list !== privacyList)
- }
-
- @Test
- fun testNotListeningWhenIndicatorsDisabled() {
- val properties = getProperties(
- DeviceConfig.NAMESPACE_PRIVACY,
- SystemUiDeviceConfigFlags.PROPERTY_PERMISSIONS_HUB_ENABLED,
- false)
- privacyItemController.devicePropertiesChangedListener.onPropertiesChanged(properties)
- privacyItemController.addCallback(callback)
- testableLooper.processAllMessages()
- verify(appOpsController, never()).addCallback(eq(PrivacyItemController.OPS),
- any(AppOpsController.Callback::class.java))
- }
-
- private fun getProperties(namespace: String, name: String, value: Boolean):
- DeviceConfig.Properties {
- val properties = mock<DeviceConfig.Properties>(DeviceConfig.Properties::class.java)
- doReturn(namespace).`when`(properties).getNamespace()
- doReturn(setOf(name)).`when`(properties).getKeyset()
- doAnswer {
- val key: String = it.getArgument(0)
- val defaultValue: Boolean = it.getArgument(1)
- if (name.equals(key, ignoreCase = true)) {
- value
- } else {
- defaultValue
- }
- }.`when`(properties).getBoolean(anyString(), anyBoolean())
- return properties
- }
-}
\ No newline at end of file
diff --git a/packages/SystemUI/tests/src/com/android/systemui/screenshot/ScreenshotNotificationSmartActionsTest.java b/packages/SystemUI/tests/src/com/android/systemui/screenshot/ScreenshotNotificationSmartActionsTest.java
index 3f32c66b..6d85d37 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/screenshot/ScreenshotNotificationSmartActionsTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/screenshot/ScreenshotNotificationSmartActionsTest.java
@@ -175,7 +175,7 @@
data.image = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888);
data.iconSize = 10;
data.finisher = null;
- data.onEditReady = null;
+ data.mActionsReadyListener = null;
data.previewWidth = 10;
data.previewheight = 10;
SaveImageInBackgroundTask task = new SaveImageInBackgroundTask(mContext, data,
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/NotifListBuilderImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/NotifListBuilderImplTest.java
index a25af84..6d56b06 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/NotifListBuilderImplTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/NotifListBuilderImplTest.java
@@ -47,6 +47,7 @@
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifFilter;
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifPromoter;
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.SectionsProvider;
+import com.android.systemui.statusbar.notification.logging.NotifLog;
import com.android.systemui.util.Assert;
import com.android.systemui.util.time.FakeSystemClock;
@@ -76,6 +77,7 @@
private NotifListBuilderImpl mListBuilder;
private FakeSystemClock mSystemClock = new FakeSystemClock();
+ @Mock private NotifLog mNotifLog;
@Mock private NotifCollection mNotifCollection;
@Spy private OnBeforeTransformGroupsListener mOnBeforeTransformGroupsListener;
@Spy private OnBeforeSortListener mOnBeforeSortListener;
@@ -97,7 +99,7 @@
MockitoAnnotations.initMocks(this);
Assert.sMainLooper = TestableLooper.get(this).getLooper();
- mListBuilder = new NotifListBuilderImpl(mSystemClock);
+ mListBuilder = new NotifListBuilderImpl(mSystemClock, mNotifLog);
mListBuilder.setOnRenderListListener(mOnRenderListListener);
mListBuilder.attach(mNotifCollection);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/KeyguardCoordinatorTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/KeyguardCoordinatorTest.java
new file mode 100644
index 0000000..87b3783d
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/KeyguardCoordinatorTest.java
@@ -0,0 +1,243 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.statusbar.notification.collection.coordinator;
+
+import static android.app.Notification.VISIBILITY_PUBLIC;
+import static android.app.Notification.VISIBILITY_SECRET;
+import static android.app.NotificationManager.IMPORTANCE_HIGH;
+import static android.app.NotificationManager.IMPORTANCE_MIN;
+
+import static junit.framework.Assert.assertFalse;
+import static junit.framework.Assert.assertTrue;
+
+import static org.mockito.Mockito.when;
+
+import android.os.Handler;
+import android.os.UserHandle;
+import android.testing.AndroidTestingRunner;
+
+import androidx.test.filters.SmallTest;
+
+import com.android.keyguard.KeyguardUpdateMonitor;
+import com.android.systemui.SysuiTestCase;
+import com.android.systemui.broadcast.BroadcastDispatcher;
+import com.android.systemui.plugins.statusbar.StatusBarStateController;
+import com.android.systemui.statusbar.NotificationEntryBuilder;
+import com.android.systemui.statusbar.NotificationLockscreenUserManager;
+import com.android.systemui.statusbar.RankingBuilder;
+import com.android.systemui.statusbar.notification.collection.GroupEntry;
+import com.android.systemui.statusbar.notification.collection.NotificationEntry;
+import com.android.systemui.statusbar.policy.KeyguardStateController;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@SmallTest
+@RunWith(AndroidTestingRunner.class)
+public class KeyguardCoordinatorTest extends SysuiTestCase {
+ private static final int NOTIF_USER_ID = 0;
+ private static final int CURR_USER_ID = 1;
+
+ @Mock private Handler mMainHandler;
+ @Mock private KeyguardStateController mKeyguardStateController;
+ @Mock private NotificationLockscreenUserManager mLockscreenUserManager;
+ @Mock private BroadcastDispatcher mBroadcastDispatcher;
+ @Mock private StatusBarStateController mStatusBarStateController;
+ @Mock private KeyguardUpdateMonitor mKeyguardUpdateMonitor;
+
+ private NotificationEntry mEntry;
+ private KeyguardCoordinator mKeyguardNotificationCoordinator;
+
+ @Before
+ public void setup() {
+ MockitoAnnotations.initMocks(this);
+ mKeyguardNotificationCoordinator = new KeyguardCoordinator(
+ mContext, mMainHandler, mKeyguardStateController, mLockscreenUserManager,
+ mBroadcastDispatcher, mStatusBarStateController,
+ mKeyguardUpdateMonitor);
+
+ mEntry = new NotificationEntryBuilder()
+ .setUser(new UserHandle(NOTIF_USER_ID))
+ .build();
+ }
+
+ @Test
+ public void unfilteredState() {
+ // GIVEN an 'unfiltered-keyguard-showing' state
+ setupUnfilteredState();
+
+ // THEN don't filter out the entry
+ assertFalse(mKeyguardNotificationCoordinator.mNotifFilter.shouldFilterOut(mEntry, 0));
+ }
+
+ @Test
+ public void notificationNotForCurrentProfile() {
+ // GIVEN the notification isn't for the given user
+ setupUnfilteredState();
+ when(mLockscreenUserManager.isCurrentProfile(NOTIF_USER_ID)).thenReturn(false);
+
+ // THEN filter out the entry
+ assertTrue(mKeyguardNotificationCoordinator.mNotifFilter.shouldFilterOut(mEntry, 0));
+ }
+
+ @Test
+ public void keyguardNotShowing() {
+ // GIVEN the lockscreen isn't showing
+ setupUnfilteredState();
+ when(mKeyguardStateController.isShowing()).thenReturn(false);
+
+ // THEN don't filter out the entry
+ assertFalse(mKeyguardNotificationCoordinator.mNotifFilter.shouldFilterOut(mEntry, 0));
+ }
+
+ @Test
+ public void doNotShowLockscreenNotifications() {
+ // GIVEN an 'unfiltered-keyguard-showing' state
+ setupUnfilteredState();
+
+ // WHEN we shouldn't show any lockscreen notifications
+ when(mLockscreenUserManager.shouldShowLockscreenNotifications()).thenReturn(false);
+
+ // THEN filter out the entry
+ assertTrue(mKeyguardNotificationCoordinator.mNotifFilter.shouldFilterOut(mEntry, 0));
+ }
+
+ @Test
+ public void lockdown() {
+ // GIVEN an 'unfiltered-keyguard-showing' state
+ setupUnfilteredState();
+
+ // WHEN the notification's user is in lockdown:
+ when(mKeyguardUpdateMonitor.isUserInLockdown(NOTIF_USER_ID)).thenReturn(true);
+
+ // THEN filter out the entry
+ assertTrue(mKeyguardNotificationCoordinator.mNotifFilter.shouldFilterOut(mEntry, 0));
+ }
+
+ @Test
+ public void publicMode_settingsDisallow() {
+ // GIVEN an 'unfiltered-keyguard-showing' state
+ setupUnfilteredState();
+
+ // WHEN the notification's user is in public mode and settings are configured to disallow
+ // notifications in public mode
+ when(mLockscreenUserManager.isLockscreenPublicMode(NOTIF_USER_ID)).thenReturn(true);
+ when(mLockscreenUserManager.userAllowsNotificationsInPublic(NOTIF_USER_ID))
+ .thenReturn(false);
+
+ // THEN filter out the entry
+ assertTrue(mKeyguardNotificationCoordinator.mNotifFilter.shouldFilterOut(mEntry, 0));
+ }
+
+ @Test
+ public void publicMode_notifDisallowed() {
+ // GIVEN an 'unfiltered-keyguard-showing' state
+ setupUnfilteredState();
+
+ // WHEN the notification's user is in public mode and settings are configured to disallow
+ // notifications in public mode
+ when(mLockscreenUserManager.isLockscreenPublicMode(CURR_USER_ID)).thenReturn(true);
+ mEntry.setRanking(new RankingBuilder()
+ .setKey(mEntry.getKey())
+ .setVisibilityOverride(VISIBILITY_SECRET).build());
+
+ // THEN filter out the entry
+ assertTrue(mKeyguardNotificationCoordinator.mNotifFilter.shouldFilterOut(mEntry, 0));
+ }
+
+ @Test
+ public void doesNotExceedThresholdToShow() {
+ // GIVEN an 'unfiltered-keyguard-showing' state
+ setupUnfilteredState();
+
+ // WHEN the notification doesn't exceed the threshold to show on the lockscreen
+ mEntry.setRanking(new RankingBuilder()
+ .setKey(mEntry.getKey())
+ .setImportance(IMPORTANCE_MIN)
+ .build());
+
+ // THEN filter out the entry
+ assertTrue(mKeyguardNotificationCoordinator.mNotifFilter.shouldFilterOut(mEntry, 0));
+ }
+
+ @Test
+ public void summaryExceedsThresholdToShow() {
+ // GIVEN an 'unfiltered-keyguard-showing' state
+ setupUnfilteredState();
+
+ // WHEN the notification doesn't exceed the threshold to show on the lockscreen
+ // but its summary does
+ mEntry.setRanking(new RankingBuilder()
+ .setKey(mEntry.getKey())
+ .setImportance(IMPORTANCE_MIN)
+ .build());
+
+ final NotificationEntry summary = new NotificationEntryBuilder().build();
+ summary.setRanking(new RankingBuilder()
+ .setKey(summary.getKey())
+ .setImportance(IMPORTANCE_HIGH)
+ .build());
+ final GroupEntry group = new GroupEntry(mEntry.getSbn().getGroupKey());
+ group.setSummary(summary);
+ mEntry.setParent(group);
+
+ // THEN don't filter out the entry
+ assertFalse(mKeyguardNotificationCoordinator.mNotifFilter.shouldFilterOut(mEntry, 0));
+ }
+
+ /**
+ * setup a state where the notification will not be filtered by the
+ * KeyguardNotificationCoordinator when the keyguard is showing.
+ */
+ private void setupUnfilteredState() {
+ // notification is for current profile
+ when(mLockscreenUserManager.isCurrentProfile(NOTIF_USER_ID)).thenReturn(true);
+
+ // keyguard is showing
+ when(mKeyguardStateController.isShowing()).thenReturn(true);
+
+ // show notifications on the lockscreen
+ when(mLockscreenUserManager.shouldShowLockscreenNotifications()).thenReturn(true);
+
+ // neither the current user nor the notification's user is in lockdown
+ when(mLockscreenUserManager.getCurrentUserId()).thenReturn(CURR_USER_ID);
+ when(mKeyguardUpdateMonitor.isUserInLockdown(NOTIF_USER_ID)).thenReturn(false);
+ when(mKeyguardUpdateMonitor.isUserInLockdown(CURR_USER_ID)).thenReturn(false);
+
+ // not in public mode
+ when(mLockscreenUserManager.isLockscreenPublicMode(CURR_USER_ID)).thenReturn(false);
+ when(mLockscreenUserManager.isLockscreenPublicMode(NOTIF_USER_ID)).thenReturn(false);
+
+ // entry's ranking - should show on all lockscreens
+ // + priority of the notification exceeds the threshold to be shown on the lockscreen
+ mEntry.setRanking(new RankingBuilder()
+ .setKey(mEntry.getKey())
+ .setVisibilityOverride(VISIBILITY_PUBLIC)
+ .setImportance(IMPORTANCE_HIGH)
+ .build());
+
+ // settings allows notifications in public mode
+ when(mLockscreenUserManager.userAllowsNotificationsInPublic(CURR_USER_ID)).thenReturn(true);
+ when(mLockscreenUserManager.userAllowsNotificationsInPublic(NOTIF_USER_ID))
+ .thenReturn(true);
+
+ // notification doesn't have a summary
+ }
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationContentInflaterTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationContentInflaterTest.java
index ba28879..27e3a66 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationContentInflaterTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationContentInflaterTest.java
@@ -64,6 +64,7 @@
@SmallTest
@RunWith(AndroidTestingRunner.class)
@RunWithLooper(setAsMainLooper = true)
+@Ignore
public class NotificationContentInflaterTest extends SysuiTestCase {
private NotificationContentInflater mNotificationInflater;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationGutsManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationGutsManagerTest.java
index 4b3249d..43d39a2 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationGutsManagerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationGutsManagerTest.java
@@ -274,7 +274,7 @@
ArgumentCaptor<Intent> captor = ArgumentCaptor.forClass(Intent.class);
verify(mNotificationActivityStarter, times(1))
.startNotificationGutsIntent(captor.capture(), anyInt(), any());
- assertEquals(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, captor.getValue().getAction());
+ assertEquals(Settings.ACTION_MANAGE_APP_OVERLAY_PERMISSION, captor.getValue().getAction());
}
@Test
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/HeadsUpManagerPhoneTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/HeadsUpManagerPhoneTest.java
index 2068f7c..dfd9941 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/HeadsUpManagerPhoneTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/HeadsUpManagerPhoneTest.java
@@ -40,6 +40,7 @@
import com.android.systemui.statusbar.policy.ConfigurationController;
import org.junit.Before;
+import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -125,6 +126,7 @@
assertTrue(mHeadsUpManager.canRemoveImmediately(mEntry.getKey()));
}
+ @Ignore("b/141538055")
@Test
public void testCanRemoveImmediately_notTopEntry() {
NotificationEntry laterEntry = new NotificationEntryBuilder()
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/HotspotControllerImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/HotspotControllerImplTest.java
index 811e6a0..631c580 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/HotspotControllerImplTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/HotspotControllerImplTest.java
@@ -77,7 +77,6 @@
any(WifiManager.SoftApCallback.class));
mController = new HotspotControllerImpl(mContext, new Handler(mLooper.getLooper()));
- mController.handleSetListening(true);
}
@Test
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/LocationControllerImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/LocationControllerImplTest.java
index 5f772b2..81c375a 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/LocationControllerImplTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/LocationControllerImplTest.java
@@ -26,6 +26,7 @@
import androidx.test.filters.SmallTest;
+import com.android.systemui.BootCompleteCache;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.statusbar.policy.LocationController.LocationChangeCallback;
@@ -46,7 +47,8 @@
public void setup() {
mLocationController = spy(new LocationControllerImpl(mContext,
TestableLooper.get(this).getLooper(),
- mock(BroadcastDispatcher.class)));
+ mock(BroadcastDispatcher.class),
+ mock(BootCompleteCache.class)));
}
@Test
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java
index 57dcbf2..4103d71 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java
@@ -26,6 +26,7 @@
import android.net.ConnectivityManager;
import android.net.NetworkCapabilities;
import android.os.Looper;
+import android.telephony.CellSignalStrength;
import android.telephony.ServiceState;
import android.telephony.SignalStrength;
import android.telephony.SubscriptionInfo;
@@ -180,7 +181,7 @@
@Test
public void testCdmaSignalRoaming() {
- for (int testStrength = SignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
+ for (int testStrength = CellSignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
testStrength <= SignalStrength.SIGNAL_STRENGTH_GREAT; testStrength++) {
setupDefaultSignal();
setCdma();
@@ -203,7 +204,7 @@
@Test
public void testQsSignalStrength() {
- for (int testStrength = SignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
+ for (int testStrength = CellSignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
testStrength <= SignalStrength.SIGNAL_STRENGTH_GREAT; testStrength++) {
setupDefaultSignal();
setLevel(testStrength);
@@ -216,7 +217,7 @@
@Test
public void testCdmaQsSignalStrength() {
- for (int testStrength = SignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
+ for (int testStrength = CellSignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
testStrength <= SignalStrength.SIGNAL_STRENGTH_GREAT; testStrength++) {
setupDefaultSignal();
setCdma();
diff --git a/packages/SystemUI/tests/src/com/android/systemui/utils/leaks/FakeHotspotController.java b/packages/SystemUI/tests/src/com/android/systemui/utils/leaks/FakeHotspotController.java
index c9681ac..016160a 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/utils/leaks/FakeHotspotController.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/utils/leaks/FakeHotspotController.java
@@ -26,10 +26,6 @@
}
@Override
- public void handleSetListening(boolean listening) {
- }
-
- @Override
public boolean isHotspotEnabled() {
return false;
}
diff --git a/packages/Tethering/Android.bp b/packages/Tethering/Android.bp
index 61bfb92..7e8721d 100644
--- a/packages/Tethering/Android.bp
+++ b/packages/Tethering/Android.bp
@@ -20,13 +20,14 @@
srcs: [
"src/**/*.java",
":framework-tethering-shared-srcs",
+ ":net-module-utils-srcs",
":services-tethering-shared-srcs",
- ":servicescore-tethering-src",
],
static_libs: [
"androidx.annotation_annotation",
- "netd_aidl_interface-java",
- "networkstack-aidl-interfaces-java",
+ "netd_aidl_interface-unstable-java",
+ "netlink-client",
+ "networkstack-aidl-interfaces-unstable-java",
"android.hardware.tetheroffload.control-V1.0-java",
"tethering-client",
],
@@ -39,20 +40,26 @@
defaults: ["TetheringAndroidLibraryDefaults"],
}
-cc_library_shared {
+// Due to b/143733063, APK can't access a jni lib that is in APEX (but not in the APK).
+cc_library {
name: "libtetheroffloadjni",
srcs: [
"jni/com_android_server_connectivity_tethering_OffloadHardwareInterface.cpp",
],
shared_libs: [
- "libnativehelper",
- "libcutils",
- "android.hardware.tetheroffload.config@1.0",
+ "libcgrouprc",
+ "libnativehelper_compat_libc++",
+ "libvndksupport",
],
static_libs: [
+ "android.hardware.tetheroffload.config@1.0",
"liblog",
"libbase",
+ "libbinderthreadstate",
+ "libcutils",
"libhidlbase",
+ "libjsoncpp",
+ "libprocessgroup",
"libutils",
],
@@ -62,6 +69,8 @@
"-Wno-unused-parameter",
"-Wthread-safety",
],
+
+ ldflags: ["-Wl,--exclude-libs=ALL,-error-limit=0"],
}
// Common defaults for compiling the actual APK.
@@ -69,7 +78,12 @@
name: "TetheringAppDefaults",
platform_apis: true,
privileged: true,
+ // Build system doesn't track transitive dependeicies for jni_libs, list all the dependencies
+ // explicitly.
jni_libs: [
+ "libcgrouprc",
+ "libnativehelper_compat_libc++",
+ "libvndksupport",
"libtetheroffloadjni",
],
resource_dirs: [
@@ -81,7 +95,16 @@
}
// Non-updatable tethering running in the system server process for devices not using the module
-// TODO: build in-process tethering APK here.
+android_app {
+ name: "InProcessTethering",
+ defaults: ["TetheringAppDefaults"],
+ static_libs: ["TetheringApiCurrentLib"],
+ certificate: "platform",
+ manifest: "AndroidManifest_InProcess.xml",
+ // InProcessTethering is a replacement for Tethering
+ overrides: ["Tethering"],
+ // TODO: use PlatformNetworkPermissionConfig.
+}
// Updatable tethering packaged as an application
android_app {
@@ -94,36 +117,3 @@
// The permission configuration *must* be included to ensure security of the device
required: ["NetworkPermissionConfig"],
}
-
-// This group will be removed when tethering migration is done.
-filegroup {
- name: "tethering-servicescore-srcs",
- srcs: [
- "src/com/android/server/connectivity/tethering/EntitlementManager.java",
- "src/com/android/server/connectivity/tethering/OffloadController.java",
- "src/com/android/server/connectivity/tethering/OffloadHardwareInterface.java",
- "src/com/android/server/connectivity/tethering/TetheringConfiguration.java",
- "src/com/android/server/connectivity/tethering/UpstreamNetworkMonitor.java",
- ],
-}
-
-// This group will be removed when tethering migration is done.
-filegroup {
- name: "tethering-servicesnet-srcs",
- srcs: [
- "src/android/net/dhcp/DhcpServerCallbacks.java",
- "src/android/net/dhcp/DhcpServingParamsParcelExt.java",
- "src/android/net/ip/IpServer.java",
- "src/android/net/ip/RouterAdvertisementDaemon.java",
- "src/android/net/util/InterfaceSet.java",
- "src/android/net/util/PrefixUtils.java",
- ],
-}
-
-// This group would be removed when tethering migration is done.
-filegroup {
- name: "tethering-jni-srcs",
- srcs: [
- "jni/com_android_server_connectivity_tethering_OffloadHardwareInterface.cpp",
- ],
-}
diff --git a/packages/Tethering/AndroidManifest.xml b/packages/Tethering/AndroidManifest.xml
index eb51593..1430ed0 100644
--- a/packages/Tethering/AndroidManifest.xml
+++ b/packages/Tethering/AndroidManifest.xml
@@ -25,5 +25,11 @@
android:process="com.android.networkstack.process"
android:extractNativeLibs="false"
android:persistent="true">
+ <service android:name="com.android.server.connectivity.tethering.TetheringService"
+ android:permission="android.permission.MAINLINE_NETWORK_STACK">
+ <intent-filter>
+ <action android:name="android.net.ITetheringConnector"/>
+ </intent-filter>
+ </service>
</application>
</manifest>
diff --git a/packages/Tethering/AndroidManifest_InProcess.xml b/packages/Tethering/AndroidManifest_InProcess.xml
new file mode 100644
index 0000000..28d405c
--- /dev/null
+++ b/packages/Tethering/AndroidManifest_InProcess.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+ * Copyright (C) 2019 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.
+ */
+-->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.android.tethering.inprocess"
+ android:sharedUserId="android.uid.system"
+ android:process="system">
+ <uses-sdk android:minSdkVersion="29" android:targetSdkVersion="29" />
+ <application>
+ <!-- TODO: Using MAINLINE_NETWORK_STACK instead of NETWORK_STACK when tethering run in the
+ same process with networkstack -->
+ <service android:name="com.android.server.connectivity.tethering.TetheringService"
+ android:process="system"
+ android:permission="android.permission.NETWORK_STACK">
+ <intent-filter>
+ <action android:name="android.net.ITetheringConnector.InProcess"/>
+ </intent-filter>
+ </service>
+ </application>
+</manifest>
diff --git a/packages/Tethering/CleanSpec.mk b/packages/Tethering/CleanSpec.mk
new file mode 100644
index 0000000..70db351
--- /dev/null
+++ b/packages/Tethering/CleanSpec.mk
@@ -0,0 +1,52 @@
+# Copyright (C) 2019 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.
+#
+
+# If you don't need to do a full clean build but would like to touch
+# a file or delete some intermediate files, add a clean step to the end
+# of the list. These steps will only be run once, if they haven't been
+# run before.
+#
+# E.g.:
+# $(call add-clean-step, touch -c external/sqlite/sqlite3.h)
+# $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libz_intermediates)
+#
+# Always use "touch -c" and "rm -f" or "rm -rf" to gracefully deal with
+# files that are missing or have been moved.
+#
+# Use $(PRODUCT_OUT) to get to the "out/target/product/blah/" directory.
+# Use $(OUT_DIR) to refer to the "out" directory.
+#
+# If you need to re-do something that's already mentioned, just copy
+# the command and add it to the bottom of the list. E.g., if a change
+# that you made last week required touching a file and a change you
+# made today requires touching the same file, just copy the old
+# touch step and add it to the end of the list.
+#
+# *****************************************************************
+# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST ABOVE THE BANNER
+# *****************************************************************
+
+# For example:
+#$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/APPS/AndroidTests_intermediates)
+#$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/core_intermediates)
+#$(call add-clean-step, find $(OUT_DIR) -type f -name "IGTalkSession*" -print0 | xargs -0 rm -f)
+#$(call add-clean-step, rm -rf $(PRODUCT_OUT)/data/*)
+
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/priv-app/Tethering)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/priv-app/InProcessTethering)
+
+# ******************************************************************
+# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST ABOVE THIS BANNER
+# ******************************************************************
diff --git a/packages/Tethering/apex/Android.bp b/packages/Tethering/apex/Android.bp
new file mode 100644
index 0000000..bca01ebd
--- /dev/null
+++ b/packages/Tethering/apex/Android.bp
@@ -0,0 +1,35 @@
+//
+// Copyright (C) 2019 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.
+//
+
+apex {
+ name: "com.android.tethering.apex",
+ apps: ["Tethering"],
+ manifest: "manifest.json",
+ key: "com.android.tethering.apex.key",
+
+ androidManifest: "AndroidManifest.xml",
+}
+
+apex_key {
+ name: "com.android.tethering.apex.key",
+ public_key: "com.android.tethering.apex.avbpubkey",
+ private_key: "com.android.tethering.apex.pem",
+}
+
+android_app_certificate {
+ name: "com.android.tethering.apex.certificate",
+ certificate: "com.android.tethering.apex",
+}
diff --git a/packages/Tethering/apex/AndroidManifest.xml b/packages/Tethering/apex/AndroidManifest.xml
new file mode 100644
index 0000000..7769b79
--- /dev/null
+++ b/packages/Tethering/apex/AndroidManifest.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2019 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.
+ -->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.android.tethering.apex">
+ <!-- APEX does not have classes.dex -->
+ <application android:hasCode="false" />
+ <!-- b/145383354: Current minSdk is locked to Q for development cycle, lock it to next version
+ before ship. -->
+ <uses-sdk
+ android:minSdkVersion="29"
+ android:targetSdkVersion="29"
+ />
+</manifest>
diff --git a/packages/Tethering/apex/com.android.tethering.apex.avbpubkey b/packages/Tethering/apex/com.android.tethering.apex.avbpubkey
new file mode 100644
index 0000000..9c87111
--- /dev/null
+++ b/packages/Tethering/apex/com.android.tethering.apex.avbpubkey
Binary files differ
diff --git a/packages/Tethering/apex/com.android.tethering.apex.pem b/packages/Tethering/apex/com.android.tethering.apex.pem
new file mode 100644
index 0000000..a8cd12e
--- /dev/null
+++ b/packages/Tethering/apex/com.android.tethering.apex.pem
@@ -0,0 +1,51 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIJKQIBAAKCAgEAwloHpMmwszNBEgUVion141BTvF/oJ5g5DlQIYBtmht4tSpc3
+6elWXd+dhMzFxf/RkxSNRsU+dhD11cPKGp9nUYQQGrHEf3xEKwAHJKRMq26TkJ3o
+1TwOO70TaRKKA4ThNiM3VFDX2vy1ijArhZDIBTGVJCUl9HOHiO+ZJG5DKCx3KXbO
+QWz3c+Lbprr1L76dwIsl5kuoAFwgG0J+9BZhHEzIG1lVpGG7RRLxc8eDIxNN/oKT
+gPYBcOxFYqOECKGBBvElf6MxdRv6xG7gooALY2/HDMYUjAJSOosfwzeymugCzMhK
+e+6CSTAaEfUzuVZvMc2qnd1ly7zpLo9x+TOdH5LEVZpSwqmu2n5bqrUnSEAJUvMz
+SSw0YbsLWJZuTiTV7lecSITgqsmwuZyDexDmUkDQChzrTixsQV6S8vsh/FanjWoi
+zBlPneX8Q7/LME3hxHyLbrabxX0zWiyj8iM9h/8Y4mpO/MjEmmavglTAP4J8zrKD
+FBsntCoch9I49IpYBuO6NfKw1h7AUpLf8gARAjFjRxiJVcSgGY/Wt4/pBzJ57T5g
+xPvqxfpPQP0OA2CT8LqqzZIR8jXs8/TquvwLkkY2kRRPXx+azd5oU2A0uonrUY31
+Bc1obfmWPuEMz9bO/i06ETHuWPd4RiUNaB8qEmjYuKJfhv72YNcRwhrAYJECAwEA
+AQKCAgAaQn3b5yCH5fn5zFQPxvpBP35A6ph8mRXEeNg03B7rRCPMe0gjw9JWlrs6
+0Uw7p4gSnmlEUaxR2ZLN0kmBdV5JZlWitbg+HXU8diGA8u4lD6jCloN6JEYsDi0M
+OmQJe6/OV83HB7FStmh1BnMq9dgA06U6IAbT07RRbUY85OUQDYoAQTw3HNkGgHV7
+PrGYROIdvO9fAYPuoIP6Cu8KXee7Iii7gUOQFWBvQdL7+M4gNCCKrevuNc8WCeaK
+IFvbqq67WGPfrhYlo6UrW2vgqPpg8h5r/GuUS0/+9wNQpjrssUKHltxxiFV0PBqZ
+qI7XkPUvPoG6GMsDT0AWeW1F5ZJqEGPN67Xek0BCD0cpUli+nHD0yWGVHtkpHU2D
+qUOZdB2COfBuXRdW1LsYNPg8YjTCPsmGhISLTwiTNcZJeTxoK1y0CcVW9d7Af2aD
+lYzCegscQlXkSZiFj9s90Vd3KdD2XKrH/ADxzsOxQJ89ka004efdQa5/MKs9aChG
+/5XrwBEfN4O92OjY7KqXUAwB7CcVzNymOjD6r07LM24zbkRpwwXlkP0wmjsHBXkh
+8p0ISmY9QRdvhBgYmFmoPWZncM0zym9LI8atBs4CijQ7JjuOQ8HgHg+Se2eppWfe
+t8r6TVkDB8JeNAMxjX9q0G7icf3JjlIrgERZfyXLmpduR9NdkQKCAQEA5rp2fSKh
+RwihHNtJhNktFJuLR9OA++vyfjqhWnB8CrLPo3//LGWW/+WBr8EwXi/76hQpeKlf
+u8SmkTtxIHlTP2Brh2koh1Qf8HKzPHGjZeDFOoVPKHPqe3nV+cv3srd1mS0Eq3BA
+ZFQq+l61f2iiTZKxDroCahNEa8VMzirW6nKb5xhyMPHXgncCUdphHbwAGatas6be
+RUFg4ChH8BwX6jYw7leRUy2K6OqEl0fckT4Laitlb/ezKtwmD4PPE95q5hH0v3SO
+wetHWafiNrOXPn2wQqBrI2y+AfbTjNmQiaIPgcFKAQ7V3n+c3XfGZ9Xfv4L8m/wo
+RZ4ika1zur021QKCAQEA16OUBPA7BnWd+RJFri2kJBG5JZElaV9chO2ZHcXUbFR9
+HIPkWN19bJbki8Ca0w8FUQuS/M7JeeFjoZ194NlczbR899GVmb0X2AUKXilMacs3
+IONxIDczx3KFtsge8ewXRAjQvgE7M3NpmmJfPLPog7spMCbUIxbc3jzjiZgB/J1s
+WytlUTUY/Zy4V1wujkoydgK2KcHcEWG2oIy7EP0RwnL1NhTksXOtBH6+MoRMAT+H
+fcBK6yfJBNBRQzJ0PdkCCLdQPN1VtwRlWjPXZ3ey4fWvZ399wSLUkM2V1jB4GcOZ
++DAgtwFKs9+HfOdV42GgFWFcjP+bkM3bcdrQFnmYzQKCAQAQnf1KpePXqddwrJpu
+5vVINquhUKpJeoTMcoyMZu2IF7i8nctS9z4Yz/63GcLSBcKu6STTe99ZNqCIdS+A
+lzxXpCoaZoh0tqpWNuyRvd12yOlrfY5l63NH0U6H3xjH1k6x6XwcnMkGcMlnnsqT
+koWd8KKv3NWvrhOPb3ZIou03lWmFC02uGLzcuJWCL6gu7AtVzfGKXspDUqIXgs8r
+i9ptE9oSUFw3EWCfxcQm4RYRn9ZSny1/EufkflZ/Z47Sb4Jjb4ehAlQFw1wwKNcx
++V07MvIu2j7dHkfQ/GXgDwtJ3lIfljwuN1NP4wD5Mlcnw0+KC3UGBvMfkHQM6eEb
+4eTBAoIBAQDWfZsqHlpX3n431XkB+9wdFJP5ThrMaVJ51mxLNRBKgO/BgV+NFSNA
+9AZ5DCf0cCh1qPGYDYhSd2LGywT+trac1j7Hse0AcxpYgQsDBkk/oic/y3wm80HJ
+zZw7Z2uAb7nkrnATzt24G8CbE+ZvVvScs3oQr06raH5hgGdD4bN4No4lUVECKbKl
+8VFbdBHK7vqqb6AKgQ4JLAygPduE1nTn2bkXBklESS98HSXK0dVYGH0JFFBw/63v
+39Y05ObC7iwbx1tEb1RnKzQ1OQO1o1aHc/35ENNhXOfa8ONtneCYn/ty50xjPCG2
+MU1vbBv+hIjbO3D3vvhaXKk+4svAz0qxAoIBAQC84FJEjKHJHx17jLeoTuDfuxwX
+6bOQrI3nHbtnFRvPrMryWRDtHLv89Zma3o68/n4vTn5+AnvgYMZifOYlTlIPxinH
+tlE+qCD8KBXUlZdrc+5GGM18lp5tF3Ro4LireH+OhiOAWawaSzDIDYdiR6Kz9NU+
+SjcHKjDObeM6iMEukoaRsufMedpUSrnbzMraAJgBZGay1NZs/o8Icl3OySYPZWEK
+MJxVBMXU9QcUp2GEioYd/eNuP9rwyjq/EIUDJbP2vESAe6+FdGbIgvyYTV/gnKaH
+GcvyMNVZbCMp/wCYNonjlu+18m2w+pVs2uuZLqORkrKYhisK83TKxh4YOWJh
+-----END RSA PRIVATE KEY-----
diff --git a/packages/Tethering/apex/com.android.tethering.apex.pk8 b/packages/Tethering/apex/com.android.tethering.apex.pk8
new file mode 100644
index 0000000..5663246
--- /dev/null
+++ b/packages/Tethering/apex/com.android.tethering.apex.pk8
Binary files differ
diff --git a/packages/Tethering/apex/com.android.tethering.apex.x509.pem b/packages/Tethering/apex/com.android.tethering.apex.x509.pem
new file mode 100644
index 0000000..a5e9401
--- /dev/null
+++ b/packages/Tethering/apex/com.android.tethering.apex.x509.pem
@@ -0,0 +1,36 @@
+-----BEGIN CERTIFICATE-----
+MIIGMzCCBBugAwIBAgIUXVtoDaXanhs7ma8VIICambMkj5UwDQYJKoZIhvcNAQEL
+BQAwgacxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQH
+DA1Nb3VudGFpbiBWaWV3MRAwDgYDVQQKDAdBbmRyb2lkMRAwDgYDVQQLDAdBbmRy
+b2lkMSMwIQYDVQQDDBpjb20uYW5kcm9pZC50ZXRoZXJpbmcuYXBleDEiMCAGCSqG
+SIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTAgFw0xOTExMjgwNjU4MTRaGA80
+NzU3MTAyNDA2NTgxNFowgacxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9y
+bmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3MRAwDgYDVQQKDAdBbmRyb2lkMRAw
+DgYDVQQLDAdBbmRyb2lkMSMwIQYDVQQDDBpjb20uYW5kcm9pZC50ZXRoZXJpbmcu
+YXBleDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTCCAiIwDQYJ
+KoZIhvcNAQEBBQADggIPADCCAgoCggIBANwzufMBdOj9XlNwiX+bXl/94G0DklWW
+nzob0jPlubCFfRqYkjCf2eOd28Mu/O1pOBcvobnrs9OTpGzcHkz2h58L5/0UMVTS
+tBugwCE49XF5FHawqVHNZE+s5tDmnp2cufhNc5HXHY4oZKh80/WVdbcKxiLjSY2T
+PgRAfB6E6XByKD3t1cSsc3liRVKADoJOVDvmF+xnyvSV/SN38bvTQk9aVs95mj0W
+yov6gzXBnqN7iQlvkhcijZBnFWxvoNbJ5KFy1abYOrm+ueXje4BcNhVOeRMb4E9N
+eo7+9k1GEI7TYG7laNNcp7UJ1IXCJzv/wBFKRg3f1HB3unKfx2rtKerDnVsr3o7V
+KProkgRNKNhhQ6opNguiH1YMzKpWMaC988n4AQPryPdIOmVIxIC5jJrixdxgzDXT
+qeiwFiXis291uyls08B03PQFlY9oWaY9P8s+4hIUjB6rLl+XZXsLDtDFxXeJ97NB
+8XZN1gBJoBoLknFs0C4LKpmJZB/EBao9tXV9dL/5lydRo6HzQDpjW8QX06CTUM6z
+Lr3LVelhqbsuZsV42yBKl+/LfrvNjBLEPdSevt2oMrlJW7m4iSNaMtDtJ2Oy8fA5
+WSIgLWuMbkaFDza3JzwiMzxbtbJHYiy6rY7aVywo3Vqwr1+KO3cq4eLQq62zUjRY
+e6KJwvgE2YmpAgMBAAGjUzBRMB0GA1UdDgQWBBQ8h1oF5JfKFmJCN8nfimbUK+IR
+wjAfBgNVHSMEGDAWgBQ8h1oF5JfKFmJCN8nfimbUK+IRwjAPBgNVHRMBAf8EBTAD
+AQH/MA0GCSqGSIb3DQEBCwUAA4ICAQAP5hIkAxSyt9hRafMKiFlmXcL277bgoxNd
+qGZYbdcCFjfvM2r0QQcM/K7x2ZslFe7mJSzcyMifpm4YQTEo2yYbzKItXQV+eV1K
+9RNksRGFG9umsdWaSHhfQmcmxtr2nu9rGAgxy5OQFtyXmJPUPEM2cb/YeILwYhuQ
+Ux3kaj/fxGltX1JBag7HnMzCTZK++fRo5nqFVOJQgJH8ZpuzGeM9kZvP1+b55046
+PhSnlqmZoKhG4i5POPvvZvaakh/lM3x/N7lIlSaQpCGf7jmldni4L0/GenULVKzH
+iN73aBfh4GEvE0HRcOoH3L7V6kc3WMMLve0chZBHpoVYbzUJEJOUL4yrmwEehqtf
+xm4vlYg3vqtcE3UnU/UGdMb16t77Nz88LlpBY5ierIt0jZMU0M81ppRhr1uiD2Lj
+091sEA0Bxcw/6Q8QNF2eR7SG7Qwipnms+lw6Vcxve+7DdTrdEA0k3XgpdXp8Ya+2
+PAp9SLVp1UHiGq3qD9Jvm34QmlUWAIUTHZs3DSgs1y3K5eyw/cnzTvUUOljc/n2y
+VF0FFZtJ1dVLrzQ80Ik7apEXpBqkgBGV04/L3QYk4C0/sP+1yk6zjeeeAvDtUcHS
+gLtjAfacQl/kwfVQWfrF7VByLcivApC6EUdvT3cURM5DfZRQ4RcKr1D61VYPnNRH
++/NVbMObwQ==
+-----END CERTIFICATE-----
diff --git a/packages/Tethering/apex/manifest.json b/packages/Tethering/apex/manifest.json
new file mode 100644
index 0000000..3fb62f3
--- /dev/null
+++ b/packages/Tethering/apex/manifest.json
@@ -0,0 +1,4 @@
+{
+ "name": "com.android.tethering.apex",
+ "version": 290000000
+}
diff --git a/packages/Tethering/common/TetheringLib/Android.bp b/packages/Tethering/common/TetheringLib/Android.bp
index 5b01b1e..adc5a72 100644
--- a/packages/Tethering/common/TetheringLib/Android.bp
+++ b/packages/Tethering/common/TetheringLib/Android.bp
@@ -18,8 +18,12 @@
aidl_interface {
name: "tethering-aidl-interfaces",
local_include_dir: "src",
+ include_dirs: ["frameworks/base/core/java"], // For framework parcelables.
srcs: [
+ "src/android/net/ITetherInternalCallback.aidl",
"src/android/net/ITetheringConnector.aidl",
+ "src/android/net/TetheringConfigurationParcel.aidl",
+ "src/android/net/TetherStatesParcel.aidl",
],
backend: {
ndk: {
@@ -33,8 +37,15 @@
java_library {
name: "tethering-client",
- platform_apis: true,
+ sdk_version: "system_current",
static_libs: [
"tethering-aidl-interfaces-java",
],
}
+
+// This is temporary file group which would be removed after TetheringManager is built
+// into tethering-client. Will be done by aosp/1156906.
+filegroup {
+ name: "tethering-manager",
+ srcs: ["src/android/net/TetheringManager.java"],
+}
diff --git a/packages/Tethering/common/TetheringLib/src/android/net/ITetherInternalCallback.aidl b/packages/Tethering/common/TetheringLib/src/android/net/ITetherInternalCallback.aidl
new file mode 100644
index 0000000..abb00e8
--- /dev/null
+++ b/packages/Tethering/common/TetheringLib/src/android/net/ITetherInternalCallback.aidl
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2019 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;
+
+import android.net.Network;
+import android.net.TetheringConfigurationParcel;
+import android.net.TetherStatesParcel;
+
+/**
+ * Callback class for receiving tethering changed events
+ * @hide
+ */
+oneway interface ITetherInternalCallback
+{
+ void onUpstreamChanged(in Network network);
+ void onConfigurationChanged(in TetheringConfigurationParcel config);
+ void onTetherStatesChanged(in TetherStatesParcel states);
+ void onCallbackCreated(in Network network, in TetheringConfigurationParcel config,
+ in TetherStatesParcel states);
+}
diff --git a/packages/Tethering/common/TetheringLib/src/android/net/ITetheringConnector.aidl b/packages/Tethering/common/TetheringLib/src/android/net/ITetheringConnector.aidl
index 443481e..bfe502f 100644
--- a/packages/Tethering/common/TetheringLib/src/android/net/ITetheringConnector.aidl
+++ b/packages/Tethering/common/TetheringLib/src/android/net/ITetheringConnector.aidl
@@ -15,6 +15,23 @@
*/
package android.net;
+import android.net.ITetherInternalCallback;
+import android.os.ResultReceiver;
+
/** @hide */
oneway interface ITetheringConnector {
+ void tether(String iface);
+
+ void untether(String iface);
+
+ void setUsbTethering(boolean enable);
+
+ void startTethering(int type, in ResultReceiver receiver, boolean showProvisioningUi);
+
+ void stopTethering(int type);
+
+ void requestLatestTetheringEntitlementResult(int type, in ResultReceiver receiver,
+ boolean showEntitlementUi);
+
+ void registerTetherInternalCallback(ITetherInternalCallback callback);
}
diff --git a/packages/Tethering/common/TetheringLib/src/android/net/TetherStatesParcel.aidl b/packages/Tethering/common/TetheringLib/src/android/net/TetherStatesParcel.aidl
new file mode 100644
index 0000000..3d842b3
--- /dev/null
+++ b/packages/Tethering/common/TetheringLib/src/android/net/TetherStatesParcel.aidl
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2019 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;
+
+/**
+ * Status details for tethering downstream interfaces.
+ * {@hide}
+ */
+parcelable TetherStatesParcel {
+ String[] availableList;
+ String[] tetheredList;
+ String[] localOnlyList;
+ String[] erroredIfaceList;
+ // List of Last error code corresponding to each errored iface in erroredIfaceList. */
+ // TODO: Improve this as b/143122247.
+ int[] lastErrorList;
+}
diff --git a/packages/Tethering/common/TetheringLib/src/android/net/TetheringConfigurationParcel.aidl b/packages/Tethering/common/TetheringLib/src/android/net/TetheringConfigurationParcel.aidl
new file mode 100644
index 0000000..89f3813
--- /dev/null
+++ b/packages/Tethering/common/TetheringLib/src/android/net/TetheringConfigurationParcel.aidl
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2019 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;
+
+/**
+ * Configuration details for tethering.
+ * @hide
+ */
+parcelable TetheringConfigurationParcel {
+ int subId;
+ String[] tetherableUsbRegexs;
+ String[] tetherableWifiRegexs;
+ String[] tetherableBluetoothRegexs;
+ boolean isDunRequired;
+ boolean chooseUpstreamAutomatically;
+ int[] preferredUpstreamIfaceTypes;
+ String[] legacyDhcpRanges;
+ String[] defaultIPv4DNS;
+ boolean enableLegacyDhcpServer;
+ String[] provisioningApp;
+ String provisioningAppNoUi;
+ int provisioningCheckPeriod;
+}
diff --git a/packages/Tethering/common/TetheringLib/src/android/net/TetheringManager.java b/packages/Tethering/common/TetheringLib/src/android/net/TetheringManager.java
new file mode 100644
index 0000000..eb0d443
--- /dev/null
+++ b/packages/Tethering/common/TetheringLib/src/android/net/TetheringManager.java
@@ -0,0 +1,513 @@
+/*
+ * Copyright (C) 2019 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;
+
+import static android.Manifest.permission.NETWORK_STACK;
+import static android.net.ConnectivityManager.TETHER_ERROR_NO_ERROR;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.net.util.SharedLog;
+import android.os.ConditionVariable;
+import android.os.IBinder;
+import android.os.RemoteCallbackList;
+import android.os.RemoteException;
+import android.os.ResultReceiver;
+import android.util.Slog;
+
+import com.android.internal.annotations.GuardedBy;
+
+import java.io.PrintWriter;
+import java.util.StringJoiner;
+
+/**
+ * Service used to communicate with the tethering, which is running in a separate module.
+ * @hide
+ */
+public class TetheringManager {
+ private static final String TAG = TetheringManager.class.getSimpleName();
+
+ private static TetheringManager sInstance;
+
+ @Nullable
+ private ITetheringConnector mConnector;
+ private TetherInternalCallback mCallback;
+ private Network mTetherUpstream;
+ private TetheringConfigurationParcel mTetheringConfiguration;
+ private TetherStatesParcel mTetherStatesParcel;
+
+ private final RemoteCallbackList<ITetheringEventCallback> mTetheringEventCallbacks =
+ new RemoteCallbackList<>();
+ @GuardedBy("mLog")
+ private final SharedLog mLog = new SharedLog(TAG);
+
+ private TetheringManager() { }
+
+ /**
+ * Get the TetheringManager singleton instance.
+ */
+ public static synchronized TetheringManager getInstance() {
+ if (sInstance == null) {
+ sInstance = new TetheringManager();
+ }
+ return sInstance;
+ }
+
+ private class TetheringConnection implements
+ ConnectivityModuleConnector.ModuleServiceCallback {
+ @Override
+ public void onModuleServiceConnected(@NonNull IBinder service) {
+ logi("Tethering service connected");
+ registerTetheringService(service);
+ }
+ }
+
+ private void registerTetheringService(@NonNull IBinder service) {
+ final ITetheringConnector connector = ITetheringConnector.Stub.asInterface(service);
+
+ log("Tethering service registered");
+
+ // Currently TetheringManager instance is only used by ConnectivityService and mConnector
+ // only expect to assign once when system server start and bind tethering service.
+ // STOPSHIP: Change mConnector to final before TetheringManager put into boot classpath.
+ mConnector = connector;
+ mCallback = new TetherInternalCallback();
+ try {
+ mConnector.registerTetherInternalCallback(mCallback);
+ } catch (RemoteException e) {
+ e.rethrowFromSystemServer();
+ }
+ }
+
+ private class TetherInternalCallback extends ITetherInternalCallback.Stub {
+ private final ConditionVariable mWaitForCallback = new ConditionVariable(false);
+ private static final int EVENT_CALLBACK_TIMEOUT_MS = 60_000;
+
+ @Override
+ public void onUpstreamChanged(Network network) {
+ mTetherUpstream = network;
+ reportUpstreamChanged(network);
+ }
+
+ @Override
+ public void onConfigurationChanged(TetheringConfigurationParcel config) {
+ mTetheringConfiguration = config;
+ }
+
+ @Override
+ public void onTetherStatesChanged(TetherStatesParcel states) {
+ mTetherStatesParcel = states;
+ }
+
+ @Override
+ public void onCallbackCreated(Network network, TetheringConfigurationParcel config,
+ TetherStatesParcel states) {
+ mTetherUpstream = network;
+ mTetheringConfiguration = config;
+ mTetherStatesParcel = states;
+ mWaitForCallback.open();
+ }
+
+ boolean awaitCallbackCreation() {
+ return mWaitForCallback.block(EVENT_CALLBACK_TIMEOUT_MS);
+ }
+ }
+
+ private void reportUpstreamChanged(Network network) {
+ final int length = mTetheringEventCallbacks.beginBroadcast();
+ try {
+ for (int i = 0; i < length; i++) {
+ try {
+ mTetheringEventCallbacks.getBroadcastItem(i).onUpstreamChanged(network);
+ } catch (RemoteException e) {
+ // Not really very much to do here.
+ }
+ }
+ } finally {
+ mTetheringEventCallbacks.finishBroadcast();
+ }
+ }
+
+ /**
+ * Start the tethering service. Should be called only once on device startup.
+ *
+ * <p>This method will start the tethering service either in the network stack process,
+ * or inside the system server on devices that do not support the tethering module.
+ *
+ * {@hide}
+ */
+ public void start() {
+ // Using MAINLINE_NETWORK_STACK permission after cutting off the dpendency of system server.
+ ConnectivityModuleConnector.getInstance().startModuleService(
+ ITetheringConnector.class.getName(), NETWORK_STACK,
+ new TetheringConnection());
+ log("Tethering service start requested");
+ }
+
+ /**
+ * Attempt to tether the named interface. This will setup a dhcp server
+ * on the interface, forward and NAT IP v4 packets and forward DNS requests
+ * to the best active upstream network interface. Note that if no upstream
+ * IP network interface is available, dhcp will still run and traffic will be
+ * allowed between the tethered devices and this device, though upstream net
+ * access will of course fail until an upstream network interface becomes
+ * active. Note: return value do not have any meaning. It is better to use
+ * #getTetherableIfaces() to ensure corresponding interface is available for
+ * tethering before calling #tether().
+ *
+ * @deprecated The only usages should be in PanService and Wifi P2P which
+ * need direct access.
+ *
+ * {@hide}
+ */
+ @Deprecated
+ public int tether(@NonNull String iface) {
+ try {
+ mConnector.tether(iface);
+ } catch (RemoteException e) {
+ e.rethrowFromSystemServer();
+ }
+ return TETHER_ERROR_NO_ERROR;
+ }
+
+ /**
+ * Stop tethering the named interface.
+ *
+ * @deprecated
+ * {@hide}
+ */
+ @Deprecated
+ public int untether(@NonNull String iface) {
+ try {
+ mConnector.untether(iface);
+ } catch (RemoteException e) {
+ e.rethrowFromSystemServer();
+ }
+ return TETHER_ERROR_NO_ERROR;
+ }
+
+ /**
+ * Attempt to both alter the mode of USB and Tethering of USB. WARNING: New client should not
+ * use this API anymore. All clients should use #startTethering or #stopTethering which
+ * encapsulate proper entitlement logic. If the API is used and an entitlement check is needed,
+ * downstream USB tethering will be enabled but will not have any upstream.
+ *
+ * @deprecated
+ * {@hide}
+ */
+ @Deprecated
+ public int setUsbTethering(boolean enable) {
+ try {
+ mConnector.setUsbTethering(enable);
+ } catch (RemoteException e) {
+ e.rethrowFromSystemServer();
+ }
+ return TETHER_ERROR_NO_ERROR;
+ }
+
+ /**
+ * Starts tethering and runs tether provisioning for the given type if needed. If provisioning
+ * fails, stopTethering will be called automatically.
+ *
+ * {@hide}
+ */
+ // TODO: improve the usage of ResultReceiver, b/145096122
+ public void startTethering(int type, @NonNull ResultReceiver receiver,
+ boolean showProvisioningUi) {
+ try {
+ mConnector.startTethering(type, receiver, showProvisioningUi);
+ } catch (RemoteException e) {
+ e.rethrowFromSystemServer();
+ }
+ }
+
+ /**
+ * Stops tethering for the given type. Also cancels any provisioning rechecks for that type if
+ * applicable.
+ *
+ * {@hide}
+ */
+ public void stopTethering(int type) {
+ try {
+ mConnector.stopTethering(type);
+ } catch (RemoteException e) {
+ e.rethrowFromSystemServer();
+ }
+ }
+
+ /**
+ * Request the latest value of the tethering entitlement check.
+ *
+ * Note: Allow privileged apps who have TETHER_PRIVILEGED permission to access. If it turns
+ * out some such apps are observed to abuse this API, change to per-UID limits on this API
+ * if it's really needed.
+ */
+ // TODO: improve the usage of ResultReceiver, b/145096122
+ public void requestLatestTetheringEntitlementResult(int type, @NonNull ResultReceiver receiver,
+ boolean showEntitlementUi) {
+ try {
+ mConnector.requestLatestTetheringEntitlementResult(type, receiver, showEntitlementUi);
+ } catch (RemoteException e) {
+ e.rethrowFromSystemServer();
+ }
+ }
+
+ /**
+ * Register tethering event callback.
+ *
+ * {@hide}
+ */
+ public void registerTetheringEventCallback(@NonNull ITetheringEventCallback callback) {
+ mTetheringEventCallbacks.register(callback);
+ }
+
+ /**
+ * Unregister tethering event callback.
+ *
+ * {@hide}
+ */
+ public void unregisterTetheringEventCallback(@NonNull ITetheringEventCallback callback) {
+ mTetheringEventCallbacks.unregister(callback);
+ }
+
+ /**
+ * Get a more detailed error code after a Tethering or Untethering
+ * request asynchronously failed.
+ *
+ * {@hide}
+ */
+ public int getLastTetherError(@NonNull String iface) {
+ if (!mCallback.awaitCallbackCreation()) {
+ throw new NullPointerException("callback was not ready yet");
+ }
+ if (mTetherStatesParcel == null) return TETHER_ERROR_NO_ERROR;
+
+ int i = 0;
+ for (String errored : mTetherStatesParcel.erroredIfaceList) {
+ if (iface.equals(errored)) return mTetherStatesParcel.lastErrorList[i];
+
+ i++;
+ }
+ return TETHER_ERROR_NO_ERROR;
+ }
+
+ /**
+ * Get the list of regular expressions that define any tetherable
+ * USB network interfaces. If USB tethering is not supported by the
+ * device, this list should be empty.
+ *
+ * {@hide}
+ */
+ public @NonNull String[] getTetherableUsbRegexs() {
+ if (!mCallback.awaitCallbackCreation()) {
+ throw new NullPointerException("callback was not ready yet");
+ }
+ return mTetheringConfiguration.tetherableUsbRegexs;
+ }
+
+ /**
+ * Get the list of regular expressions that define any tetherable
+ * Wifi network interfaces. If Wifi tethering is not supported by the
+ * device, this list should be empty.
+ *
+ * {@hide}
+ */
+ public @NonNull String[] getTetherableWifiRegexs() {
+ if (!mCallback.awaitCallbackCreation()) {
+ throw new NullPointerException("callback was not ready yet");
+ }
+ return mTetheringConfiguration.tetherableWifiRegexs;
+ }
+
+ /**
+ * Get the list of regular expressions that define any tetherable
+ * Bluetooth network interfaces. If Bluetooth tethering is not supported by the
+ * device, this list should be empty.
+ *
+ * {@hide}
+ */
+ public @NonNull String[] getTetherableBluetoothRegexs() {
+ if (!mCallback.awaitCallbackCreation()) {
+ throw new NullPointerException("callback was not ready yet");
+ }
+ return mTetheringConfiguration.tetherableBluetoothRegexs;
+ }
+
+ /**
+ * Get the set of tetherable, available interfaces. This list is limited by
+ * device configuration and current interface existence.
+ *
+ * {@hide}
+ */
+ public @NonNull String[] getTetherableIfaces() {
+ if (!mCallback.awaitCallbackCreation()) {
+ throw new NullPointerException("callback was not ready yet");
+ }
+ if (mTetherStatesParcel == null) return new String[0];
+ return mTetherStatesParcel.availableList;
+ }
+
+ /**
+ * Get the set of tethered interfaces.
+ *
+ * {@hide}
+ */
+ public @NonNull String[] getTetheredIfaces() {
+ if (!mCallback.awaitCallbackCreation()) {
+ throw new NullPointerException("callback was not ready yet");
+ }
+ if (mTetherStatesParcel == null) return new String[0];
+ return mTetherStatesParcel.tetheredList;
+ }
+
+ /**
+ * Get the set of interface names which attempted to tether but
+ * failed.
+ *
+ * {@hide}
+ */
+ public @NonNull String[] getTetheringErroredIfaces() {
+ if (!mCallback.awaitCallbackCreation()) {
+ throw new NullPointerException("callback was not ready yet");
+ }
+ if (mTetherStatesParcel == null) return new String[0];
+ return mTetherStatesParcel.erroredIfaceList;
+ }
+
+ /**
+ * Get the set of tethered dhcp ranges.
+ *
+ * @deprecated This API just return the default value which is not used in DhcpServer.
+ * {@hide}
+ */
+ @Deprecated
+ public @NonNull String[] getTetheredDhcpRanges() {
+ if (!mCallback.awaitCallbackCreation()) {
+ throw new NullPointerException("callback was not ready yet");
+ }
+ return mTetheringConfiguration.legacyDhcpRanges;
+ }
+
+ /**
+ * Check if the device allows for tethering.
+ *
+ * {@hide}
+ */
+ public boolean hasTetherableConfiguration() {
+ if (!mCallback.awaitCallbackCreation()) {
+ throw new NullPointerException("callback was not ready yet");
+ }
+ final boolean hasDownstreamConfiguration =
+ (mTetheringConfiguration.tetherableUsbRegexs.length != 0)
+ || (mTetheringConfiguration.tetherableWifiRegexs.length != 0)
+ || (mTetheringConfiguration.tetherableBluetoothRegexs.length != 0);
+ final boolean hasUpstreamConfiguration =
+ (mTetheringConfiguration.preferredUpstreamIfaceTypes.length != 0)
+ || mTetheringConfiguration.chooseUpstreamAutomatically;
+
+ return hasDownstreamConfiguration && hasUpstreamConfiguration;
+ }
+
+ /**
+ * Log a message in the local log.
+ */
+ private void log(@NonNull String message) {
+ synchronized (mLog) {
+ mLog.log(message);
+ }
+ }
+
+ /**
+ * Log a condition that should never happen.
+ */
+ private void logWtf(@NonNull String message, @Nullable Throwable e) {
+ Slog.wtf(TAG, message);
+ synchronized (mLog) {
+ mLog.e(message, e);
+ }
+ }
+
+ /**
+ * Log a ERROR level message in the local and system logs.
+ */
+ private void loge(@NonNull String message, @Nullable Throwable e) {
+ synchronized (mLog) {
+ mLog.e(message, e);
+ }
+ }
+
+ /**
+ * Log a INFO level message in the local and system logs.
+ */
+ private void logi(@NonNull String message) {
+ synchronized (mLog) {
+ mLog.i(message);
+ }
+ }
+
+ /**
+ * Dump TetheringManager logs to the specified {@link PrintWriter}.
+ */
+ public void dump(@NonNull PrintWriter pw) {
+ // dump is thread-safe on SharedLog
+ mLog.dump(null, pw, null);
+
+ pw.print("subId: ");
+ pw.println(mTetheringConfiguration.subId);
+
+ dumpStringArray(pw, "tetherableUsbRegexs",
+ mTetheringConfiguration.tetherableUsbRegexs);
+ dumpStringArray(pw, "tetherableWifiRegexs",
+ mTetheringConfiguration.tetherableWifiRegexs);
+ dumpStringArray(pw, "tetherableBluetoothRegexs",
+ mTetheringConfiguration.tetherableBluetoothRegexs);
+
+ pw.print("isDunRequired: ");
+ pw.println(mTetheringConfiguration.isDunRequired);
+
+ pw.print("chooseUpstreamAutomatically: ");
+ pw.println(mTetheringConfiguration.chooseUpstreamAutomatically);
+
+ dumpStringArray(pw, "legacyDhcpRanges", mTetheringConfiguration.legacyDhcpRanges);
+ dumpStringArray(pw, "defaultIPv4DNS", mTetheringConfiguration.defaultIPv4DNS);
+
+ dumpStringArray(pw, "provisioningApp", mTetheringConfiguration.provisioningApp);
+ pw.print("provisioningAppNoUi: ");
+ pw.println(mTetheringConfiguration.provisioningAppNoUi);
+
+ pw.print("enableLegacyDhcpServer: ");
+ pw.println(mTetheringConfiguration.enableLegacyDhcpServer);
+
+ pw.println();
+ }
+
+ private static void dumpStringArray(@NonNull PrintWriter pw, @NonNull String label,
+ @Nullable String[] values) {
+ pw.print(label);
+ pw.print(": ");
+
+ if (values != null) {
+ final StringJoiner sj = new StringJoiner(", ", "[", "]");
+ for (String value : values) sj.add(value);
+
+ pw.print(sj.toString());
+ } else {
+ pw.print("null");
+ }
+
+ pw.println();
+ }
+}
diff --git a/packages/Tethering/jni/com_android_server_connectivity_tethering_OffloadHardwareInterface.cpp b/packages/Tethering/jni/com_android_server_connectivity_tethering_OffloadHardwareInterface.cpp
index 3eaf488..663154a 100644
--- a/packages/Tethering/jni/com_android_server_connectivity_tethering_OffloadHardwareInterface.cpp
+++ b/packages/Tethering/jni/com_android_server_connectivity_tethering_OffloadHardwareInterface.cpp
@@ -145,4 +145,18 @@
gMethods, NELEM(gMethods));
}
+extern "C" jint JNI_OnLoad(JavaVM* vm, void*) {
+ JNIEnv *env;
+ if (vm->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_6) != JNI_OK) {
+ ALOGE("ERROR: GetEnv failed");
+ return JNI_ERR;
+ }
+
+ if (register_android_server_connectivity_tethering_OffloadHardwareInterface(env) < 0) {
+ return JNI_ERR;
+ }
+
+ return JNI_VERSION_1_6;
+}
+
}; // namespace android
diff --git a/core/res/res/drawable-hdpi/stat_sys_tether_bluetooth.png b/packages/Tethering/res/drawable-hdpi/stat_sys_tether_bluetooth.png
similarity index 100%
rename from core/res/res/drawable-hdpi/stat_sys_tether_bluetooth.png
rename to packages/Tethering/res/drawable-hdpi/stat_sys_tether_bluetooth.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_tether_general.png b/packages/Tethering/res/drawable-hdpi/stat_sys_tether_general.png
similarity index 100%
rename from core/res/res/drawable-hdpi/stat_sys_tether_general.png
rename to packages/Tethering/res/drawable-hdpi/stat_sys_tether_general.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_tether_usb.png b/packages/Tethering/res/drawable-hdpi/stat_sys_tether_usb.png
similarity index 100%
rename from core/res/res/drawable-hdpi/stat_sys_tether_usb.png
rename to packages/Tethering/res/drawable-hdpi/stat_sys_tether_usb.png
Binary files differ
diff --git a/core/res/res/drawable-ldpi/stat_sys_tether_bluetooth.png b/packages/Tethering/res/drawable-ldpi/stat_sys_tether_bluetooth.png
similarity index 100%
rename from core/res/res/drawable-ldpi/stat_sys_tether_bluetooth.png
rename to packages/Tethering/res/drawable-ldpi/stat_sys_tether_bluetooth.png
Binary files differ
diff --git a/core/res/res/drawable-ldpi/stat_sys_tether_general.png b/packages/Tethering/res/drawable-ldpi/stat_sys_tether_general.png
similarity index 100%
rename from core/res/res/drawable-ldpi/stat_sys_tether_general.png
rename to packages/Tethering/res/drawable-ldpi/stat_sys_tether_general.png
Binary files differ
diff --git a/core/res/res/drawable-ldpi/stat_sys_tether_usb.png b/packages/Tethering/res/drawable-ldpi/stat_sys_tether_usb.png
similarity index 100%
rename from core/res/res/drawable-ldpi/stat_sys_tether_usb.png
rename to packages/Tethering/res/drawable-ldpi/stat_sys_tether_usb.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/stat_sys_tether_bluetooth.png b/packages/Tethering/res/drawable-mdpi/stat_sys_tether_bluetooth.png
similarity index 100%
rename from core/res/res/drawable-mdpi/stat_sys_tether_bluetooth.png
rename to packages/Tethering/res/drawable-mdpi/stat_sys_tether_bluetooth.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/stat_sys_tether_general.png b/packages/Tethering/res/drawable-mdpi/stat_sys_tether_general.png
similarity index 100%
rename from core/res/res/drawable-mdpi/stat_sys_tether_general.png
rename to packages/Tethering/res/drawable-mdpi/stat_sys_tether_general.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/stat_sys_tether_usb.png b/packages/Tethering/res/drawable-mdpi/stat_sys_tether_usb.png
similarity index 100%
rename from core/res/res/drawable-mdpi/stat_sys_tether_usb.png
rename to packages/Tethering/res/drawable-mdpi/stat_sys_tether_usb.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/stat_sys_tether_bluetooth.png b/packages/Tethering/res/drawable-xhdpi/stat_sys_tether_bluetooth.png
similarity index 100%
rename from core/res/res/drawable-xhdpi/stat_sys_tether_bluetooth.png
rename to packages/Tethering/res/drawable-xhdpi/stat_sys_tether_bluetooth.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/stat_sys_tether_general.png b/packages/Tethering/res/drawable-xhdpi/stat_sys_tether_general.png
similarity index 100%
rename from core/res/res/drawable-xhdpi/stat_sys_tether_general.png
rename to packages/Tethering/res/drawable-xhdpi/stat_sys_tether_general.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/stat_sys_tether_usb.png b/packages/Tethering/res/drawable-xhdpi/stat_sys_tether_usb.png
similarity index 100%
rename from core/res/res/drawable-xhdpi/stat_sys_tether_usb.png
rename to packages/Tethering/res/drawable-xhdpi/stat_sys_tether_usb.png
Binary files differ
diff --git a/core/res/res/drawable-xxhdpi/stat_sys_tether_bluetooth.png b/packages/Tethering/res/drawable-xxhdpi/stat_sys_tether_bluetooth.png
similarity index 100%
rename from core/res/res/drawable-xxhdpi/stat_sys_tether_bluetooth.png
rename to packages/Tethering/res/drawable-xxhdpi/stat_sys_tether_bluetooth.png
Binary files differ
diff --git a/core/res/res/drawable-xxhdpi/stat_sys_tether_general.png b/packages/Tethering/res/drawable-xxhdpi/stat_sys_tether_general.png
similarity index 100%
rename from core/res/res/drawable-xxhdpi/stat_sys_tether_general.png
rename to packages/Tethering/res/drawable-xxhdpi/stat_sys_tether_general.png
Binary files differ
diff --git a/core/res/res/drawable-xxhdpi/stat_sys_tether_usb.png b/packages/Tethering/res/drawable-xxhdpi/stat_sys_tether_usb.png
similarity index 100%
rename from core/res/res/drawable-xxhdpi/stat_sys_tether_usb.png
rename to packages/Tethering/res/drawable-xxhdpi/stat_sys_tether_usb.png
Binary files differ
diff --git a/packages/Tethering/res/values-af/strings.xml b/packages/Tethering/res/values-af/strings.xml
new file mode 100644
index 0000000..1258805
--- /dev/null
+++ b/packages/Tethering/res/values-af/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Verbinding of Wi-Fi-warmkol aktief"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Tik om op te stel."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"Verbinding is gedeaktiveer"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Kontak jou administrateur vir besonderhede"</string>
+</resources>
diff --git a/packages/Tethering/res/values-am/strings.xml b/packages/Tethering/res/values-am/strings.xml
new file mode 100644
index 0000000..9c36192
--- /dev/null
+++ b/packages/Tethering/res/values-am/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"መሰካት ወይም ገባሪ ድረስ ነጥብ"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"ለማዋቀር መታ ያድርጉ።"</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"እንደ ሞደም መሰካት ተሰናክሏል"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"ለዝርዝሮች የእርስዎን አስተዳዳሪ ያነጋግሩ"</string>
+</resources>
diff --git a/packages/Tethering/res/values-ar/strings.xml b/packages/Tethering/res/values-ar/strings.xml
new file mode 100644
index 0000000..9f84ce4
--- /dev/null
+++ b/packages/Tethering/res/values-ar/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"النطاق أو نقطة الاتصال نشطة"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"انقر للإعداد."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"تم إيقاف التوصيل"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"اتصل بالمشرف للحصول على التفاصيل"</string>
+</resources>
diff --git a/packages/Tethering/res/values-as/strings.xml b/packages/Tethering/res/values-as/strings.xml
new file mode 100644
index 0000000..8855822
--- /dev/null
+++ b/packages/Tethering/res/values-as/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"টেডাৰিং বা হটস্প\'ট সক্ৰিয় অৱস্থাত আছে"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"ছেট আপ কৰিবলৈ টিপক।"</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"টেডাৰিং অক্ষম কৰি থোৱা হৈছে"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"সবিশেষ জানিবলৈ আপোনাৰ প্ৰশাসকৰ সৈতে যোগাযোগ কৰক"</string>
+</resources>
diff --git a/packages/Tethering/res/values-az/strings.xml b/packages/Tethering/res/values-az/strings.xml
new file mode 100644
index 0000000..eba50eb
--- /dev/null
+++ b/packages/Tethering/res/values-az/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Tezerinq və ya hotspot aktivdir"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Quraşdırmaq üçün tıklayın."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"Birləşmə deaktivdir"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Məlumat üçün adminlə əlaqə saxlayın"</string>
+</resources>
diff --git a/packages/Tethering/res/values-b+sr+Latn/strings.xml b/packages/Tethering/res/values-b+sr+Latn/strings.xml
new file mode 100644
index 0000000..5b0e488
--- /dev/null
+++ b/packages/Tethering/res/values-b+sr+Latn/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Aktivno povezivanje sa internetom preko mobilnog uređaja ili hotspot"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Dodirnite da biste podesili."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"Privezivanje je onemogućeno"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Potražite detalje od administratora"</string>
+</resources>
diff --git a/packages/Tethering/res/values-be/strings.xml b/packages/Tethering/res/values-be/strings.xml
new file mode 100644
index 0000000..5966c71
--- /dev/null
+++ b/packages/Tethering/res/values-be/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"USB-мадэм або хот-спот Wi-Fi актыўныя"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Дакраніцеся, каб наладзіць."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"Рэжым мадэма адключаны"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Звярніцеся да адміністратара па падрабязную інфармацыю"</string>
+</resources>
diff --git a/packages/Tethering/res/values-bg/strings.xml b/packages/Tethering/res/values-bg/strings.xml
new file mode 100644
index 0000000..ed58d73
--- /dev/null
+++ b/packages/Tethering/res/values-bg/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Има активна споделена връзка или безжична точка за достъп"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Докоснете, за да настроите."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"Функцията за тетъринг е деактивирана"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Свържете се с администратора си за подробности"</string>
+</resources>
diff --git a/packages/Tethering/res/values-bn/strings.xml b/packages/Tethering/res/values-bn/strings.xml
new file mode 100644
index 0000000..8d9880a
--- /dev/null
+++ b/packages/Tethering/res/values-bn/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"টিথারিং বা হটস্পট সক্রিয় আছে"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"সেট-আপ করার জন্য আলতো চাপুন৷"</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"টিথারিং অক্ষম করা আছে"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"বিশদ বিবরণের জন্য প্রশাসকের সাথে যোগাযোগ করুন"</string>
+</resources>
diff --git a/packages/Tethering/res/values-bs/strings.xml b/packages/Tethering/res/values-bs/strings.xml
new file mode 100644
index 0000000..2361b9d
--- /dev/null
+++ b/packages/Tethering/res/values-bs/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Uređaj dijeli vezu ili djeluje kao pristupna tačka"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Dodirnite za postavke"</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"Povezivanje putem mobitela je onemogućeno"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Kontaktirajte svog administratora za dodatne detalje"</string>
+</resources>
diff --git a/packages/Tethering/res/values-ca/strings.xml b/packages/Tethering/res/values-ca/strings.xml
new file mode 100644
index 0000000..6752b51
--- /dev/null
+++ b/packages/Tethering/res/values-ca/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Compartició de xarxa o punt d\'accés Wi-Fi activat"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Toca per configurar."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"La compartició de xarxa està desactivada"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Contacta amb el teu administrador per obtenir més informació"</string>
+</resources>
diff --git a/packages/Tethering/res/values-cs/strings.xml b/packages/Tethering/res/values-cs/strings.xml
new file mode 100644
index 0000000..5fdd53a
--- /dev/null
+++ b/packages/Tethering/res/values-cs/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Sdílené připojení nebo hotspot je aktivní."</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Klepnutím zahájíte nastavení."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"Tethering je zakázán"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"O podrobnosti požádejte administrátora"</string>
+</resources>
diff --git a/packages/Tethering/res/values-da/strings.xml b/packages/Tethering/res/values-da/strings.xml
new file mode 100644
index 0000000..2775dfa
--- /dev/null
+++ b/packages/Tethering/res/values-da/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Netdeling eller hotspot er aktivt"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Tryk for at konfigurere"</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"Netdeling er deaktiveret"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Kontakt din administrator for at få oplysninger"</string>
+</resources>
diff --git a/packages/Tethering/res/values-de/strings.xml b/packages/Tethering/res/values-de/strings.xml
new file mode 100644
index 0000000..9046cd5
--- /dev/null
+++ b/packages/Tethering/res/values-de/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Tethering oder Hotspot aktiv"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Zum Einrichten tippen."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"Tethering ist deaktiviert"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Bitte wende dich für weitere Informationen an den Administrator"</string>
+</resources>
diff --git a/packages/Tethering/res/values-el/strings.xml b/packages/Tethering/res/values-el/strings.xml
new file mode 100644
index 0000000..3b9f537
--- /dev/null
+++ b/packages/Tethering/res/values-el/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Πρόσδεση ή σύνδεση σημείου πρόσβασης ενεργή"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Πατήστε για ρύθμιση."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"Η σύνδεση είναι απενεργοποιημένη"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Επικοινωνήστε με τον διαχειριστή σας για λεπτομέρειες"</string>
+</resources>
diff --git a/packages/Tethering/res/values-en-rAU/strings.xml b/packages/Tethering/res/values-en-rAU/strings.xml
new file mode 100644
index 0000000..56b88a5
--- /dev/null
+++ b/packages/Tethering/res/values-en-rAU/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Tethering or hotspot active"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Tap to set up."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"Tethering is disabled"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Contact your admin for details"</string>
+</resources>
diff --git a/packages/Tethering/res/values-en-rCA/strings.xml b/packages/Tethering/res/values-en-rCA/strings.xml
new file mode 100644
index 0000000..56b88a5
--- /dev/null
+++ b/packages/Tethering/res/values-en-rCA/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Tethering or hotspot active"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Tap to set up."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"Tethering is disabled"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Contact your admin for details"</string>
+</resources>
diff --git a/packages/Tethering/res/values-en-rGB/strings.xml b/packages/Tethering/res/values-en-rGB/strings.xml
new file mode 100644
index 0000000..56b88a5
--- /dev/null
+++ b/packages/Tethering/res/values-en-rGB/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Tethering or hotspot active"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Tap to set up."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"Tethering is disabled"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Contact your admin for details"</string>
+</resources>
diff --git a/packages/Tethering/res/values-en-rIN/strings.xml b/packages/Tethering/res/values-en-rIN/strings.xml
new file mode 100644
index 0000000..56b88a5
--- /dev/null
+++ b/packages/Tethering/res/values-en-rIN/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Tethering or hotspot active"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Tap to set up."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"Tethering is disabled"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Contact your admin for details"</string>
+</resources>
diff --git a/packages/Tethering/res/values-en-rXC/strings.xml b/packages/Tethering/res/values-en-rXC/strings.xml
new file mode 100644
index 0000000..7f47fc8
--- /dev/null
+++ b/packages/Tethering/res/values-en-rXC/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Tethering or hotspot active"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Tap to set up."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"Tethering is disabled"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Contact your admin for details"</string>
+</resources>
diff --git a/packages/Tethering/res/values-es-rUS/strings.xml b/packages/Tethering/res/values-es-rUS/strings.xml
new file mode 100644
index 0000000..e4618b8
--- /dev/null
+++ b/packages/Tethering/res/values-es-rUS/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Anclaje a red o zona activa conectados"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Presiona para configurar."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"Se inhabilitó la conexión mediante dispositivo portátil"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Para obtener más información, comunícate con el administrador"</string>
+</resources>
diff --git a/packages/Tethering/res/values-es/strings.xml b/packages/Tethering/res/values-es/strings.xml
new file mode 100644
index 0000000..8dc1575
--- /dev/null
+++ b/packages/Tethering/res/values-es/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Compartir conexión/Zona Wi-Fi activada"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Toca para configurar."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"La conexión compartida está inhabilitada"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Ponte en contacto con el administrador para obtener más información"</string>
+</resources>
diff --git a/packages/Tethering/res/values-et/strings.xml b/packages/Tethering/res/values-et/strings.xml
new file mode 100644
index 0000000..872c8a7
--- /dev/null
+++ b/packages/Tethering/res/values-et/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Jagamine või kuumkoht on aktiivne"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Puudutage seadistamiseks."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"Jagamine on keelatud"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Lisateabe saamiseks võtke ühendust oma administraatoriga"</string>
+</resources>
diff --git a/packages/Tethering/res/values-eu/strings.xml b/packages/Tethering/res/values-eu/strings.xml
new file mode 100644
index 0000000..6c4605e
--- /dev/null
+++ b/packages/Tethering/res/values-eu/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Konexioa partekatzea edo sare publikoa aktibo"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Sakatu konfiguratzeko."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"Desgaituta dago konexioa partekatzeko aukera"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Xehetasunak lortzeko, jarri administratzailearekin harremanetan"</string>
+</resources>
diff --git a/packages/Tethering/res/values-fa/strings.xml b/packages/Tethering/res/values-fa/strings.xml
new file mode 100644
index 0000000..bc2ee23
--- /dev/null
+++ b/packages/Tethering/res/values-fa/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"اشتراکگذاری اینترنت یا نقطه اتصال فعال"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"برای راهاندازی ضربه بزنید."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"اشتراکگذاری اینترنت غیرفعال است"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"برای جزئیات، با سرپرستتان تماس بگیرید"</string>
+</resources>
diff --git a/packages/Tethering/res/values-fi/strings.xml b/packages/Tethering/res/values-fi/strings.xml
new file mode 100644
index 0000000..ff0fca6
--- /dev/null
+++ b/packages/Tethering/res/values-fi/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Internetin jakaminen tai yhteyspiste käytössä"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Määritä napauttamalla."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"Yhteyden jakaminen poistettu käytöstä"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Kysy lisätietoja järjestelmänvalvojalta."</string>
+</resources>
diff --git a/packages/Tethering/res/values-fr-rCA/strings.xml b/packages/Tethering/res/values-fr-rCA/strings.xml
new file mode 100644
index 0000000..1f5df0e
--- /dev/null
+++ b/packages/Tethering/res/values-fr-rCA/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Partage de connexion ou point d\'accès sans fil activé"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Touchez pour configurer."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"Le partage de connexion est désactivé"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Communiquez avec votre administrateur pour obtenir plus de détails"</string>
+</resources>
diff --git a/packages/Tethering/res/values-fr/strings.xml b/packages/Tethering/res/values-fr/strings.xml
new file mode 100644
index 0000000..daf7c9d
--- /dev/null
+++ b/packages/Tethering/res/values-fr/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Partage de connexion ou point d\'accès sans fil activé"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Appuyez ici pour configurer."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"Le partage de connexion est désactivé"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Pour en savoir plus, contactez votre administrateur"</string>
+</resources>
diff --git a/packages/Tethering/res/values-gl/strings.xml b/packages/Tethering/res/values-gl/strings.xml
new file mode 100644
index 0000000..0d16a1d
--- /dev/null
+++ b/packages/Tethering/res/values-gl/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Conexión compartida ou zona wifi activada"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Tocar para configurar."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"A conexión compartida está desactivada"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Contacta co administrador para obter información"</string>
+</resources>
diff --git a/packages/Tethering/res/values-gu/strings.xml b/packages/Tethering/res/values-gu/strings.xml
new file mode 100644
index 0000000..9d6b02f
--- /dev/null
+++ b/packages/Tethering/res/values-gu/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"ટિથરિંગ અથવા હૉટસ્પૉટ સક્રિય"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"સેટ કરવા માટે ટૅપ કરો."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"ટિથરિંગ અક્ષમ કરેલ છે"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"વિગતો માટે તમારા વ્યવસ્થાપકનો સંપર્ક કરો"</string>
+</resources>
diff --git a/packages/Tethering/res/values-hi/strings.xml b/packages/Tethering/res/values-hi/strings.xml
new file mode 100644
index 0000000..9c29d9a
--- /dev/null
+++ b/packages/Tethering/res/values-hi/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"टेदरिंग या हॉटस्पॉट सक्रिय"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"सेट करने के लिए टैप करें."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"टेदरिंग अक्षम है"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"जानकारी के लिए अपने एडमिन से संपर्क करें"</string>
+</resources>
diff --git a/packages/Tethering/res/values-hr/strings.xml b/packages/Tethering/res/values-hr/strings.xml
new file mode 100644
index 0000000..d0d25bb
--- /dev/null
+++ b/packages/Tethering/res/values-hr/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Ograničenje ili aktivan hotspot"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Dodirnite da biste postavili."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"Modemsko je povezivanje onemogućeno"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Obratite se administratoru da biste saznali pojedinosti"</string>
+</resources>
diff --git a/packages/Tethering/res/values-hu/strings.xml b/packages/Tethering/res/values-hu/strings.xml
new file mode 100644
index 0000000..3129659
--- /dev/null
+++ b/packages/Tethering/res/values-hu/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Megosztás vagy aktív hotspot"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Koppintson a beállításhoz."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"Az internetmegosztás le van tiltva"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"A részletekért forduljon rendszergazdájához"</string>
+</resources>
diff --git a/packages/Tethering/res/values-hy/strings.xml b/packages/Tethering/res/values-hy/strings.xml
new file mode 100644
index 0000000..8ba6435
--- /dev/null
+++ b/packages/Tethering/res/values-hy/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Մոդեմի ռեժիմը միացված է"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Հպեք՝ կարգավորելու համար:"</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"Մոդեմի ռեժիմն անջատված է"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Մանրամասների համար դիմեք ձեր ադմինիստրատորին"</string>
+</resources>
diff --git a/packages/Tethering/res/values-in/strings.xml b/packages/Tethering/res/values-in/strings.xml
new file mode 100644
index 0000000..1e093ab
--- /dev/null
+++ b/packages/Tethering/res/values-in/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Tethering (Penambatan) atau hotspot aktif"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Ketuk untuk menyiapkan."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"Tethering dinonaktifkan"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Hubungi admin untuk mengetahui detailnya"</string>
+</resources>
diff --git a/packages/Tethering/res/values-is/strings.xml b/packages/Tethering/res/values-is/strings.xml
new file mode 100644
index 0000000..f5769d5
--- /dev/null
+++ b/packages/Tethering/res/values-is/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Kveikt á tjóðrun eða aðgangsstað"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Ýttu til að setja upp."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"Slökkt er á tjóðrun"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Hafðu samband við kerfisstjórann til að fá upplýsingar"</string>
+</resources>
diff --git a/packages/Tethering/res/values-it/strings.xml b/packages/Tethering/res/values-it/strings.xml
new file mode 100644
index 0000000..e0b3724
--- /dev/null
+++ b/packages/Tethering/res/values-it/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Tethering oppure hotspot attivo"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Tocca per impostare."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"Tethering disattivato"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Contatta il tuo amministratore per avere informazioni dettagliate"</string>
+</resources>
diff --git a/packages/Tethering/res/values-iw/strings.xml b/packages/Tethering/res/values-iw/strings.xml
new file mode 100644
index 0000000..c002c44
--- /dev/null
+++ b/packages/Tethering/res/values-iw/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"שיתוף אינטרנט פעיל"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"הקש כדי להגדיר."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"שיתוף האינטרנט בין ניידים מושבת"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"לפרטים, יש לפנות למנהל המערכת"</string>
+</resources>
diff --git a/packages/Tethering/res/values-ja/strings.xml b/packages/Tethering/res/values-ja/strings.xml
new file mode 100644
index 0000000..314bde0
--- /dev/null
+++ b/packages/Tethering/res/values-ja/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"テザリングまたはアクセスポイントが有効です"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"タップしてセットアップします。"</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"テザリングは無効に設定されています"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"詳しくは、管理者にお問い合わせください"</string>
+</resources>
diff --git a/packages/Tethering/res/values-ka/strings.xml b/packages/Tethering/res/values-ka/strings.xml
new file mode 100644
index 0000000..7bbd81d
--- /dev/null
+++ b/packages/Tethering/res/values-ka/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"ტეტერინგი ან უსადენო ქსელი აქტიურია"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"შეეხეთ დასაყენებლად."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"ტეტერინგი გათიშულია"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"დამატებითი ინფორმაციისთვის დაუკავშირდით თქვენს ადმინისტრატორს"</string>
+</resources>
diff --git a/packages/Tethering/res/values-kk/strings.xml b/packages/Tethering/res/values-kk/strings.xml
new file mode 100644
index 0000000..7fd87a1
--- /dev/null
+++ b/packages/Tethering/res/values-kk/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Тетеринг немесе хотспот қосулы"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Реттеу үшін түртіңіз."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"Тетеринг өшірілді"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Мәліметтерді әкімшіден алыңыз"</string>
+</resources>
diff --git a/packages/Tethering/res/values-km/strings.xml b/packages/Tethering/res/values-km/strings.xml
new file mode 100644
index 0000000..2f85224
--- /dev/null
+++ b/packages/Tethering/res/values-km/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"ភ្ជាប់ ឬហតស្ពតសកម្ម"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"ប៉ះដើម្បីកំណត់"</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"ការភ្ជាប់ត្រូវបានបិទ"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"ទាក់ទងអ្នកគ្រប់គ្រងរបស់អ្នកសម្រាប់ព័ត៌មានលម្អិត"</string>
+</resources>
diff --git a/packages/Tethering/res/values-kn/strings.xml b/packages/Tethering/res/values-kn/strings.xml
new file mode 100644
index 0000000..f11a83ea
--- /dev/null
+++ b/packages/Tethering/res/values-kn/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"ಟೆಥರಿಂಗ್ ಅಥವಾ ಹಾಟ್ಸ್ಪಾಟ್ ಸಕ್ರಿಯವಾಗಿದೆ"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"ಹೊಂದಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"ಟೆಥರಿಂಗ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"ವಿವರಗಳಿಗಾಗಿ ನಿಮ್ಮ ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ"</string>
+</resources>
diff --git a/packages/Tethering/res/values-ko/strings.xml b/packages/Tethering/res/values-ko/strings.xml
new file mode 100644
index 0000000..57f24f5
--- /dev/null
+++ b/packages/Tethering/res/values-ko/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"테더링 또는 핫스팟 사용"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"설정하려면 탭하세요."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"테더링이 사용 중지됨"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"자세한 정보는 관리자에게 문의하세요."</string>
+</resources>
diff --git a/packages/Tethering/res/values-ky/strings.xml b/packages/Tethering/res/values-ky/strings.xml
new file mode 100644
index 0000000..7985485
--- /dev/null
+++ b/packages/Tethering/res/values-ky/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Жалгаштыруу же хотспот жандырылган"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Жөндөө үчүн таптап коюңуз."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"Жалгаштыруу функциясы өчүрүлгөн"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Кеңири маалымат үчүн администраторуңузга кайрылыңыз"</string>
+</resources>
diff --git a/packages/Tethering/res/values-lo/strings.xml b/packages/Tethering/res/values-lo/strings.xml
new file mode 100644
index 0000000..78f1585
--- /dev/null
+++ b/packages/Tethering/res/values-lo/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"ເປີດການປ່ອຍສັນຍານ ຫຼືຮັອດສະປອດແລ້ວ"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"ແຕະເພື່ອຕັ້ງຄ່າ."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"ການປ່ອຍສັນຍານຖືກປິດໄວ້"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"ຕິດຕໍ່ຜູ້ເບິ່ງແຍງລະບົບສຳລັບລາຍລະອຽດ"</string>
+</resources>
diff --git a/packages/Tethering/res/values-lt/strings.xml b/packages/Tethering/res/values-lt/strings.xml
new file mode 100644
index 0000000..ebff8ac
--- /dev/null
+++ b/packages/Tethering/res/values-lt/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Susietas ar aktyvus"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Palieskite, kad nustatytumėte."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"Įrenginio kaip modemo naudojimas išjungtas"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Jei reikia išsamios informacijos, susisiekite su administratoriumi"</string>
+</resources>
diff --git a/packages/Tethering/res/values-lv/strings.xml b/packages/Tethering/res/values-lv/strings.xml
new file mode 100644
index 0000000..54d0048
--- /dev/null
+++ b/packages/Tethering/res/values-lv/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Piesaiste vai tīklājs ir aktīvs."</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Pieskarieties, lai iestatītu."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"Piesaiste ir atspējota"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Lai iegūtu detalizētu informāciju, sazinieties ar savu administratoru."</string>
+</resources>
diff --git a/packages/Tethering/res/values-mk/strings.xml b/packages/Tethering/res/values-mk/strings.xml
new file mode 100644
index 0000000..0fab8aa
--- /dev/null
+++ b/packages/Tethering/res/values-mk/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Поврзувањето или точката на пристап се активни"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Допрете за поставување."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"Врзувањето е оневозможено"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Контактирајте со администраторот за детали"</string>
+</resources>
diff --git a/packages/Tethering/res/values-ml/strings.xml b/packages/Tethering/res/values-ml/strings.xml
new file mode 100644
index 0000000..fd7e556
--- /dev/null
+++ b/packages/Tethering/res/values-ml/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"ടെതറിംഗ് അല്ലെങ്കിൽ ഹോട്ട്സ്പോട്ട് സജീവമാണ്"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"സജ്ജമാക്കാൻ ടാപ്പുചെയ്യുക."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"ടെതറിംഗ് പ്രവർത്തനരഹിതമാക്കിയിരിക്കുന്നു"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"വിശദവിവരങ്ങൾക്ക് നിങ്ങളുടെ അഡ്മിനെ ബന്ധപ്പെടുക"</string>
+</resources>
diff --git a/packages/Tethering/res/values-mn/strings.xml b/packages/Tethering/res/values-mn/strings.xml
new file mode 100644
index 0000000..4596577
--- /dev/null
+++ b/packages/Tethering/res/values-mn/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Модем болгох эсвэл идэвхтэй цэг болгох"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Тохируулахын тулд товшино уу."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"Модем болгох боломжгүй байна"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Дэлгэрэнгүй мэдээлэл авахын тулд админтайгаа холбогдоно уу"</string>
+</resources>
diff --git a/packages/Tethering/res/values-mr/strings.xml b/packages/Tethering/res/values-mr/strings.xml
new file mode 100644
index 0000000..85c9ade
--- /dev/null
+++ b/packages/Tethering/res/values-mr/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"टेदरिंग किंवा हॉटस्पॉट सक्रिय"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"सेट करण्यासाठी टॅप करा."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"टेदरिंग बंद आहे"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"तपशीलांसाठी तुमच्या प्रशासकाशी संपर्क साधा"</string>
+</resources>
diff --git a/packages/Tethering/res/values-ms/strings.xml b/packages/Tethering/res/values-ms/strings.xml
new file mode 100644
index 0000000..ec6bdbd
--- /dev/null
+++ b/packages/Tethering/res/values-ms/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Penambatan atau titik panas aktif"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Ketik untuk membuat persediaan."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"Penambatan dilumpuhkan"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Hubungi pentadbir anda untuk maklumat lanjut"</string>
+</resources>
diff --git a/packages/Tethering/res/values-my/strings.xml b/packages/Tethering/res/values-my/strings.xml
new file mode 100644
index 0000000..83978b6
--- /dev/null
+++ b/packages/Tethering/res/values-my/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"တဆင့်ပြန်လည်လွှင့်ခြင်း သို့မဟုတ် ဟော့စပေါ့ ဖွင့်ထားသည်"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"စနစ်ထည့်သွင်းရန် တို့ပါ။"</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"မိုဘိုင်းဖုန်းကို မိုဒမ်အဖြစ်သုံးခြင်းအား ပိတ်ထားသည်"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"အသေးစိတ်အချက်အလက်များအတွက် သင့်စီမံခန့်ခွဲသူကို ဆက်သွယ်ပါ"</string>
+</resources>
diff --git a/packages/Tethering/res/values-nb/strings.xml b/packages/Tethering/res/values-nb/strings.xml
new file mode 100644
index 0000000..9abf32d
--- /dev/null
+++ b/packages/Tethering/res/values-nb/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Internettdeling eller trådløs sone er aktiv"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Trykk for å konfigurere."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"Internettdeling er slått av"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Ta kontakt med administratoren din for å få mer informasjon"</string>
+</resources>
diff --git a/packages/Tethering/res/values-ne/strings.xml b/packages/Tethering/res/values-ne/strings.xml
new file mode 100644
index 0000000..c886929
--- /dev/null
+++ b/packages/Tethering/res/values-ne/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"टेथर गर्ने वा हटस्पट सक्रिय"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"सेटअप गर्न ट्याप गर्नुहोस्।"</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"टेदरिङलाई असक्षम पारिएको छ"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"विवरणहरूका लागि आफ्ना प्रशासकलाई सम्पर्क गर्नुहोस्"</string>
+</resources>
diff --git a/packages/Tethering/res/values-nl/strings.xml b/packages/Tethering/res/values-nl/strings.xml
new file mode 100644
index 0000000..0ec4bff
--- /dev/null
+++ b/packages/Tethering/res/values-nl/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Tethering of hotspot actief"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Tik om in te stellen."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"Tethering is uitgeschakeld"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Neem contact op met je beheerder voor meer informatie"</string>
+</resources>
diff --git a/packages/Tethering/res/values-or/strings.xml b/packages/Tethering/res/values-or/strings.xml
new file mode 100644
index 0000000..4576857
--- /dev/null
+++ b/packages/Tethering/res/values-or/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"ଟିଥରିଙ୍ଗ କିମ୍ୱା ହଟସ୍ପଟ୍ ସକ୍ରିୟ ଅଛି"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"ସେଟଅପ୍ କରିବାକୁ ଟାପ୍ କରନ୍ତୁ।"</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"ଟିଥରିଙ୍ଗ ଅକ୍ଷମ କରାଯାଇଛି"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"ବିବରଣୀ ପାଇଁ ନିଜ ଆଡମିନ୍ଙ୍କ ସହ ଯୋଗାଯୋଗ କରନ୍ତୁ"</string>
+</resources>
diff --git a/packages/Tethering/res/values-pa/strings.xml b/packages/Tethering/res/values-pa/strings.xml
new file mode 100644
index 0000000..deddf2e
--- /dev/null
+++ b/packages/Tethering/res/values-pa/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"ਟੈਦਰਿੰਗ ਜਾਂ ਹੌਟਸਪੌਟ ਕਿਰਿਆਸ਼ੀਲ"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"ਸਥਾਪਤ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ।"</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"ਟੈਦਰਿੰਗ ਨੂੰ ਅਯੋਗ ਬਣਾਇਆ ਗਿਆ ਹੈ"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"ਵੇਰਵਿਆਂ ਲਈ ਆਪਣੇ ਪ੍ਰਸ਼ਾਸਕ ਨੂੰ ਸੰਪਰਕ ਕਰੋ"</string>
+</resources>
diff --git a/packages/Tethering/res/values-pl/strings.xml b/packages/Tethering/res/values-pl/strings.xml
new file mode 100644
index 0000000..48d8468
--- /dev/null
+++ b/packages/Tethering/res/values-pl/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Aktywny tethering lub punkt dostępu"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Kliknij, by skonfigurować."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"Tethering został wyłączony"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Aby uzyskać szczegółowe informacje, skontaktuj się z administratorem"</string>
+</resources>
diff --git a/packages/Tethering/res/values-pt-rBR/strings.xml b/packages/Tethering/res/values-pt-rBR/strings.xml
new file mode 100644
index 0000000..32c22b8
--- /dev/null
+++ b/packages/Tethering/res/values-pt-rBR/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Ponto de acesso ou tethering ativo"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Toque para configurar."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"Tethering desativado"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Fale com seu administrador para saber detalhes"</string>
+</resources>
diff --git a/packages/Tethering/res/values-pt-rPT/strings.xml b/packages/Tethering/res/values-pt-rPT/strings.xml
new file mode 100644
index 0000000..641e22f
--- /dev/null
+++ b/packages/Tethering/res/values-pt-rPT/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Ligação ponto a ponto ou hotspot activos"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Toque para configurar."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"A ligação (à Internet) via telemóvel está desativada."</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Contacte o gestor para obter detalhes."</string>
+</resources>
diff --git a/packages/Tethering/res/values-pt/strings.xml b/packages/Tethering/res/values-pt/strings.xml
new file mode 100644
index 0000000..32c22b8
--- /dev/null
+++ b/packages/Tethering/res/values-pt/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Ponto de acesso ou tethering ativo"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Toque para configurar."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"Tethering desativado"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Fale com seu administrador para saber detalhes"</string>
+</resources>
diff --git a/packages/Tethering/res/values-ro/strings.xml b/packages/Tethering/res/values-ro/strings.xml
new file mode 100644
index 0000000..f861f73
--- /dev/null
+++ b/packages/Tethering/res/values-ro/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Tethering sau hotspot activ"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Atingeți ca să configurați."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"Tetheringul este dezactivat"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Contactați administratorul pentru detalii"</string>
+</resources>
diff --git a/packages/Tethering/res/values-ru/strings.xml b/packages/Tethering/res/values-ru/strings.xml
new file mode 100644
index 0000000..027cb41
--- /dev/null
+++ b/packages/Tethering/res/values-ru/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Включен режим модема"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Нажмите, чтобы настроить."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"Включить режим модема нельзя"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Обратитесь к администратору, чтобы узнать подробности."</string>
+</resources>
diff --git a/packages/Tethering/res/values-si/strings.xml b/packages/Tethering/res/values-si/strings.xml
new file mode 100644
index 0000000..7d8599f
--- /dev/null
+++ b/packages/Tethering/res/values-si/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"ටෙදරින් හෝ හොට්ස්පොට් සක්රීයයි"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"පිහිටුවීමට තට්ටු කරන්න."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"ටෙදරින් අබල කර ඇත"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"විස්තර සඳහා ඔබගේ පරිපාලක අමතන්න"</string>
+</resources>
diff --git a/packages/Tethering/res/values-sk/strings.xml b/packages/Tethering/res/values-sk/strings.xml
new file mode 100644
index 0000000..a8fe297
--- /dev/null
+++ b/packages/Tethering/res/values-sk/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Tethering alebo prístupový bod je aktívny"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Klepnutím prejdete na nastavenie."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"Tethering je deaktivovaný"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"O podrobnosti požiadajte svojho správcu"</string>
+</resources>
diff --git a/packages/Tethering/res/values-sl/strings.xml b/packages/Tethering/res/values-sl/strings.xml
new file mode 100644
index 0000000..b5e5e38
--- /dev/null
+++ b/packages/Tethering/res/values-sl/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Aktivna povezava z internetom ali dostopna točka sta aktivni"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Dotaknite se, če želite nastaviti."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"Povezava z internetom prek mobilnega telefona je onemogočena"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Za podrobnosti se obrnite na skrbnika"</string>
+</resources>
diff --git a/packages/Tethering/res/values-sq/strings.xml b/packages/Tethering/res/values-sq/strings.xml
new file mode 100644
index 0000000..fdd4906
--- /dev/null
+++ b/packages/Tethering/res/values-sq/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Lidhja e çiftimit ose ajo e qasjes në zona publike interneti është aktive"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Trokit për ta konfiguruar."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"Lidhja e çiftimit është çaktivizuar"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Kontakto me administratorin për detaje"</string>
+</resources>
diff --git a/packages/Tethering/res/values-sr/strings.xml b/packages/Tethering/res/values-sr/strings.xml
new file mode 100644
index 0000000..9fab34589
--- /dev/null
+++ b/packages/Tethering/res/values-sr/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Активно повезивање са интернетом преко мобилног уређаја или хотспот"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Додирните да бисте подесили."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"Привезивање је онемогућено"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Потражите детаље од администратора"</string>
+</resources>
diff --git a/packages/Tethering/res/values-sv/strings.xml b/packages/Tethering/res/values-sv/strings.xml
new file mode 100644
index 0000000..10eeb0f
--- /dev/null
+++ b/packages/Tethering/res/values-sv/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Internetdelning eller surfzon aktiverad"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Tryck om du vill konfigurera."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"Internetdelning har inaktiverats"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Kontakta administratören om du vill veta mer"</string>
+</resources>
diff --git a/packages/Tethering/res/values-sw/strings.xml b/packages/Tethering/res/values-sw/strings.xml
new file mode 100644
index 0000000..3353963
--- /dev/null
+++ b/packages/Tethering/res/values-sw/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Kushiriki au kusambaza intaneti kumewashwa"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Gusa ili uweke mipangilio."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"Umezima kipengele cha kusambaza mtandao"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Wasiliana na msimamizi wako ili upate maelezo zaidi"</string>
+</resources>
diff --git a/packages/Tethering/res/values-ta/strings.xml b/packages/Tethering/res/values-ta/strings.xml
new file mode 100644
index 0000000..b1e5cc2
--- /dev/null
+++ b/packages/Tethering/res/values-ta/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"டெதெரிங்/ஹாட்ஸ்பாட் இயங்குகிறது"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"அமைக்க, தட்டவும்."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"இணைப்பு முறை முடக்கப்பட்டுள்ளது"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"விவரங்களுக்கு, உங்கள் நிர்வாகியைத் தொடர்புகொள்ளவும்"</string>
+</resources>
diff --git a/packages/Tethering/res/values-te/strings.xml b/packages/Tethering/res/values-te/strings.xml
new file mode 100644
index 0000000..aae40de
--- /dev/null
+++ b/packages/Tethering/res/values-te/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"టీథర్ చేయబడినది లేదా హాట్స్పాట్ సక్రియంగా ఉండేది"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"సెటప్ చేయడానికి నొక్కండి."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"టెథెరింగ్ నిలిపివేయబడింది"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"వివరాల కోసం మీ నిర్వాహకులను సంప్రదించండి"</string>
+</resources>
diff --git a/packages/Tethering/res/values-th/strings.xml b/packages/Tethering/res/values-th/strings.xml
new file mode 100644
index 0000000..1b80056
--- /dev/null
+++ b/packages/Tethering/res/values-th/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"การปล่อยสัญญาณหรือฮอตสปอตทำงานอยู่"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"แตะเพื่อตั้งค่า"</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"ปิดใช้การเชื่อมต่ออินเทอร์เน็ตผ่านมือถือแล้ว"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"ติดต่อผู้ดูแลระบบเพื่อขอรายละเอียด"</string>
+</resources>
diff --git a/packages/Tethering/res/values-tl/strings.xml b/packages/Tethering/res/values-tl/strings.xml
new file mode 100644
index 0000000..12863f9
--- /dev/null
+++ b/packages/Tethering/res/values-tl/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Pagsasama o aktibong hotspot"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"I-tap upang i-set up."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"Naka-disable ang pag-tether"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Makipag-ugnayan sa iyong admin para sa mga detalye"</string>
+</resources>
diff --git a/packages/Tethering/res/values-tr/strings.xml b/packages/Tethering/res/values-tr/strings.xml
new file mode 100644
index 0000000..bfcf1ac
--- /dev/null
+++ b/packages/Tethering/res/values-tr/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Tethering veya hotspot etkin"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Ayarlamak için dokunun."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"Tethering devre dışı bırakıldı"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Ayrıntılı bilgi için yöneticinize başvurun"</string>
+</resources>
diff --git a/packages/Tethering/res/values-uk/strings.xml b/packages/Tethering/res/values-uk/strings.xml
new file mode 100644
index 0000000..8e159c0
--- /dev/null
+++ b/packages/Tethering/res/values-uk/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Прив\'язка чи точка дост. активна"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Торкніться, щоб налаштувати."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"Використання телефона в режимі модема вимкнено"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Щоб дізнатися більше, зв’яжіться з адміністратором"</string>
+</resources>
diff --git a/packages/Tethering/res/values-ur/strings.xml b/packages/Tethering/res/values-ur/strings.xml
new file mode 100644
index 0000000..89195d4
--- /dev/null
+++ b/packages/Tethering/res/values-ur/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"ٹیدرنگ یا ہاٹ اسپاٹ فعال"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"سیٹ اپ کرنے کیلئے تھپتھپائیں۔"</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"ٹیدرنگ غیر فعال ہے"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"تفصیلات کے لئے اپنے منتظم سے رابطہ کریں"</string>
+</resources>
diff --git a/packages/Tethering/res/values-uz/strings.xml b/packages/Tethering/res/values-uz/strings.xml
new file mode 100644
index 0000000..0ac4d4a
--- /dev/null
+++ b/packages/Tethering/res/values-uz/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Modem rejimi yoniq"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Sozlash uchun bosing."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"Modem rejimi faolsizlantirildi"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Tafsilotlari uchun administratoringizga murojaat qiling"</string>
+</resources>
diff --git a/packages/Tethering/res/values-vi/strings.xml b/packages/Tethering/res/values-vi/strings.xml
new file mode 100644
index 0000000..85a4db8
--- /dev/null
+++ b/packages/Tethering/res/values-vi/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Chức năng điểm truy cập Internet hoặc điểm phát sóng đang hoạt động"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Nhấn để thiết lập."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"Đã tắt tính năng chia sẻ kết nối"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Hãy liên hệ với quản trị viên của bạn để biết chi tiết"</string>
+</resources>
diff --git a/packages/Tethering/res/values-zh-rCN/strings.xml b/packages/Tethering/res/values-zh-rCN/strings.xml
new file mode 100644
index 0000000..ff1fe03
--- /dev/null
+++ b/packages/Tethering/res/values-zh-rCN/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"网络共享或热点已启用"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"点按即可进行设置。"</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"网络共享已停用"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"请与您的管理员联系以了解详情"</string>
+</resources>
diff --git a/packages/Tethering/res/values-zh-rHK/strings.xml b/packages/Tethering/res/values-zh-rHK/strings.xml
new file mode 100644
index 0000000..0de39fa
--- /dev/null
+++ b/packages/Tethering/res/values-zh-rHK/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"已啟用網絡共享或熱點"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"輕按即可設定。"</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"網絡共享已停用"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"請聯絡您的管理員以瞭解詳情"</string>
+</resources>
diff --git a/packages/Tethering/res/values-zh-rTW/strings.xml b/packages/Tethering/res/values-zh-rTW/strings.xml
new file mode 100644
index 0000000..9a117bb
--- /dev/null
+++ b/packages/Tethering/res/values-zh-rTW/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"網路共用或無線基地台已啟用"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"輕觸即可進行設定。"</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"數據連線已停用"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"詳情請洽你的管理員"</string>
+</resources>
diff --git a/packages/Tethering/res/values-zu/strings.xml b/packages/Tethering/res/values-zu/strings.xml
new file mode 100644
index 0000000..8fe10d8
--- /dev/null
+++ b/packages/Tethering/res/values-zu/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="tethered_notification_title" msgid="3146694234398202601">"Ukusebenzisa njengemodemu noma i-hotspot ephathekayo kuvuliwe"</string>
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Thepha ukuze usethe."</string>
+ <string name="disable_tether_notification_title" msgid="7526977944111313195">"Ukusebenzisa ifoni njengemodemu kukhutshaziwe"</string>
+ <string name="disable_tether_notification_message" msgid="2913366428516852495">"Xhumana nomphathi wakho ukuze uthole imininingwane"</string>
+</resources>
diff --git a/packages/Tethering/res/values/strings.xml b/packages/Tethering/res/values/strings.xml
new file mode 100644
index 0000000..ca866a9
--- /dev/null
+++ b/packages/Tethering/res/values/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <!-- Shown when the device is tethered -->
+ <!-- Strings for tethered notification title [CHAR LIMIT=200] -->
+ <string name="tethered_notification_title">Tethering or hotspot active</string>
+ <!-- Strings for tethered notification message [CHAR LIMIT=200] -->
+ <string name="tethered_notification_message">Tap to set up.</string>
+
+ <!-- This notification is shown when tethering has been disabled on a user's device.
+ The device is managed by the user's employer. Tethering can't be turned on unless the
+ IT administrator allows it. The noun "admin" is another reference for "IT administrator." -->
+ <!-- Strings for tether disabling notification title [CHAR LIMIT=200] -->
+ <string name="disable_tether_notification_title">Tethering is disabled</string>
+ <!-- Strings for tether disabling notification message [CHAR LIMIT=200] -->
+ <string name="disable_tether_notification_message">Contact your admin for details</string>
+</resources>
\ No newline at end of file
diff --git a/packages/Tethering/src/android/net/util/BaseNetdUnsolicitedEventListener.java b/packages/Tethering/src/android/net/util/BaseNetdUnsolicitedEventListener.java
new file mode 100644
index 0000000..3218c0b
--- /dev/null
+++ b/packages/Tethering/src/android/net/util/BaseNetdUnsolicitedEventListener.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2019 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.util;
+
+import android.net.INetdUnsolicitedEventListener;
+
+import androidx.annotation.NonNull;
+
+/**
+ * Base {@link INetdUnsolicitedEventListener} that provides no-op implementations which can be
+ * overridden.
+ */
+public class BaseNetdUnsolicitedEventListener extends INetdUnsolicitedEventListener.Stub {
+
+ @Override
+ public void onInterfaceClassActivityChanged(boolean isActive, int timerLabel, long timestampNs,
+ int uid) { }
+
+ @Override
+ public void onQuotaLimitReached(@NonNull String alertName, @NonNull String ifName) { }
+
+ @Override
+ public void onInterfaceDnsServerInfo(@NonNull String ifName, long lifetimeS,
+ @NonNull String[] servers) { }
+
+ @Override
+ public void onInterfaceAddressUpdated(@NonNull String addr, String ifName, int flags,
+ int scope) { }
+
+ @Override
+ public void onInterfaceAddressRemoved(@NonNull String addr, @NonNull String ifName, int flags,
+ int scope) { }
+
+ @Override
+ public void onInterfaceAdded(@NonNull String ifName) { }
+
+ @Override
+ public void onInterfaceRemoved(@NonNull String ifName) { }
+
+ @Override
+ public void onInterfaceChanged(@NonNull String ifName, boolean up) { }
+
+ @Override
+ public void onInterfaceLinkStateChanged(@NonNull String ifName, boolean up) { }
+
+ @Override
+ public void onRouteChanged(boolean updated, @NonNull String route, @NonNull String gateway,
+ @NonNull String ifName) { }
+
+ @Override
+ public void onStrictCleartextDetected(int uid, @NonNull String hex) { }
+
+ @Override
+ public int getInterfaceVersion() {
+ return INetdUnsolicitedEventListener.VERSION;
+ }
+}
diff --git a/services/net/java/android/net/util/VersionedBroadcastListener.java b/packages/Tethering/src/android/net/util/VersionedBroadcastListener.java
similarity index 91%
rename from services/net/java/android/net/util/VersionedBroadcastListener.java
rename to packages/Tethering/src/android/net/util/VersionedBroadcastListener.java
index 107c404..e2804ab 100644
--- a/services/net/java/android/net/util/VersionedBroadcastListener.java
+++ b/packages/Tethering/src/android/net/util/VersionedBroadcastListener.java
@@ -39,10 +39,6 @@
public class VersionedBroadcastListener {
private static final boolean DBG = false;
- public interface IntentCallback {
- public void run(Intent intent);
- }
-
private final String mTag;
private final Context mContext;
private final Handler mHandler;
@@ -61,6 +57,7 @@
mGenerationNumber = new AtomicInteger(0);
}
+ /** Start listening to intent broadcast. */
public void startListening() {
if (DBG) Log.d(mTag, "startListening");
if (mReceiver != null) return;
@@ -69,6 +66,7 @@
mContext.registerReceiver(mReceiver, mFilter, null, mHandler);
}
+ /** Stop listening to intent broadcast. */
public void stopListening() {
if (DBG) Log.d(mTag, "stopListening");
if (mReceiver == null) return;
@@ -85,8 +83,7 @@
// Used to verify this receiver is still current.
public final int generationNumber;
- public Receiver(
- String tag, AtomicInteger atomicGenerationNumber, Consumer<Intent> callback) {
+ Receiver(String tag, AtomicInteger atomicGenerationNumber, Consumer<Intent> callback) {
this.tag = tag;
this.atomicGenerationNumber = atomicGenerationNumber;
this.callback = callback;
@@ -98,8 +95,8 @@
final int currentGenerationNumber = atomicGenerationNumber.get();
if (DBG) {
- Log.d(tag, "receiver generationNumber=" + generationNumber +
- ", current generationNumber=" + currentGenerationNumber);
+ Log.d(tag, "receiver generationNumber=" + generationNumber
+ + ", current generationNumber=" + currentGenerationNumber);
}
if (generationNumber != currentGenerationNumber) return;
diff --git a/packages/Tethering/src/com/android/server/connectivity/tethering/EntitlementManager.java b/packages/Tethering/src/com/android/server/connectivity/tethering/EntitlementManager.java
index 6b0f1de..ba5d08d 100644
--- a/packages/Tethering/src/com/android/server/connectivity/tethering/EntitlementManager.java
+++ b/packages/Tethering/src/com/android/server/connectivity/tethering/EntitlementManager.java
@@ -47,6 +47,7 @@
import android.os.PersistableBundle;
import android.os.ResultReceiver;
import android.os.SystemClock;
+import android.os.SystemProperties;
import android.os.UserHandle;
import android.provider.Settings;
import android.telephony.CarrierConfigManager;
@@ -55,7 +56,6 @@
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.util.StateMachine;
-import com.android.server.connectivity.MockableSystemProperties;
import java.io.PrintWriter;
@@ -94,7 +94,6 @@
private final ArraySet<Integer> mCurrentTethers;
private final Context mContext;
private final int mPermissionChangeMessageCode;
- private final MockableSystemProperties mSystemProperties;
private final SharedLog mLog;
private final SparseIntArray mEntitlementCacheValue;
private final EntitlementHandler mHandler;
@@ -110,12 +109,12 @@
private TetheringConfigurationFetcher mFetcher;
public EntitlementManager(Context ctx, StateMachine tetherMasterSM, SharedLog log,
- int permissionChangeMessageCode, MockableSystemProperties systemProperties) {
+ int permissionChangeMessageCode) {
+
mContext = ctx;
mLog = log.forSubComponent(TAG);
mCurrentTethers = new ArraySet<Integer>();
mCellularPermitted = new SparseIntArray();
- mSystemProperties = systemProperties;
mEntitlementCacheValue = new SparseIntArray();
mTetherMasterSM = tetherMasterSM;
mPermissionChangeMessageCode = permissionChangeMessageCode;
@@ -287,7 +286,7 @@
*/
@VisibleForTesting
protected boolean isTetherProvisioningRequired(final TetheringConfiguration config) {
- if (mSystemProperties.getBoolean(DISABLE_PROVISIONING_SYSPROP_KEY, false)
+ if (SystemProperties.getBoolean(DISABLE_PROVISIONING_SYSPROP_KEY, false)
|| config.provisioningApp.length == 0) {
return false;
}
@@ -526,8 +525,8 @@
handleMaybeRunProvisioning(config);
break;
case EVENT_GET_ENTITLEMENT_VALUE:
- handleGetLatestTetheringEntitlementValue(msg.arg1, (ResultReceiver) msg.obj,
- toBool(msg.arg2));
+ handleRequestLatestTetheringEntitlementValue(msg.arg1,
+ (ResultReceiver) msg.obj, toBool(msg.arg2));
break;
default:
mLog.log("Unknown event: " + msg.what);
@@ -651,15 +650,15 @@
}
/** Get the last value of the tethering entitlement check. */
- public void getLatestTetheringEntitlementResult(int downstream, ResultReceiver receiver,
+ public void requestLatestTetheringEntitlementResult(int downstream, ResultReceiver receiver,
boolean showEntitlementUi) {
mHandler.sendMessage(mHandler.obtainMessage(EVENT_GET_ENTITLEMENT_VALUE,
downstream, encodeBool(showEntitlementUi), receiver));
}
- private void handleGetLatestTetheringEntitlementValue(int downstream, ResultReceiver receiver,
- boolean showEntitlementUi) {
+ private void handleRequestLatestTetheringEntitlementValue(int downstream,
+ ResultReceiver receiver, boolean showEntitlementUi) {
final TetheringConfiguration config = mFetcher.fetchTetheringConfiguration();
if (!isTetherProvisioningRequired(config)) {
receiver.send(TETHER_ERROR_NO_ERROR, null);
diff --git a/services/core/java/com/android/server/connectivity/tethering/IPv6TetheringCoordinator.java b/packages/Tethering/src/com/android/server/connectivity/tethering/IPv6TetheringCoordinator.java
similarity index 92%
rename from services/core/java/com/android/server/connectivity/tethering/IPv6TetheringCoordinator.java
rename to packages/Tethering/src/com/android/server/connectivity/tethering/IPv6TetheringCoordinator.java
index 8186343..edfe3ca 100644
--- a/services/core/java/com/android/server/connectivity/tethering/IPv6TetheringCoordinator.java
+++ b/packages/Tethering/src/com/android/server/connectivity/tethering/IPv6TetheringCoordinator.java
@@ -82,6 +82,7 @@
mNextSubnetId = 0;
}
+ /** Add active downstream to ipv6 tethering candidate list. */
public void addActiveDownstream(IpServer downstream, int mode) {
if (findDownstream(downstream) == null) {
// Adding a new downstream appends it to the list. Adding a
@@ -97,6 +98,7 @@
}
}
+ /** Remove downstream from ipv6 tethering candidate list. */
public void removeActiveDownstream(IpServer downstream) {
stopIPv6TetheringOn(downstream);
if (mActiveDownstreams.remove(findDownstream(downstream))) {
@@ -112,6 +114,11 @@
}
}
+ /**
+ * Call when upstream NetworkState may be changed.
+ * If upstream has ipv6 for tethering, update this new NetworkState
+ * to IpServer. Otherwise stop ipv6 tethering on downstream interfaces.
+ */
public void updateUpstreamNetworkState(NetworkState ns) {
if (VDBG) {
Log.d(TAG, "updateUpstreamNetworkState: " + toDebugString(ns));
@@ -122,8 +129,8 @@
return;
}
- if (mUpstreamNetworkState != null &&
- !ns.network.equals(mUpstreamNetworkState.network)) {
+ if (mUpstreamNetworkState != null
+ && !ns.network.equals(mUpstreamNetworkState.network)) {
stopIPv6TetheringOnAllInterfaces();
}
@@ -221,8 +228,8 @@
for (RouteInfo routeInfo : lp.getRoutes()) {
final IpPrefix destination = routeInfo.getDestination();
- if ((destination.getAddress() instanceof Inet6Address) &&
- (destination.getPrefixLength() <= 64)) {
+ if ((destination.getAddress() instanceof Inet6Address)
+ && (destination.getPrefixLength() <= 64)) {
v6only.addRoute(routeInfo);
}
}
@@ -242,12 +249,12 @@
// TODO: Delete this and switch to LinkAddress#isGlobalPreferred once we
// announce our own IPv6 address as DNS server.
private static boolean isIPv6GlobalAddress(InetAddress ip) {
- return (ip instanceof Inet6Address) &&
- !ip.isAnyLocalAddress() &&
- !ip.isLoopbackAddress() &&
- !ip.isLinkLocalAddress() &&
- !ip.isSiteLocalAddress() &&
- !ip.isMulticastAddress();
+ return (ip instanceof Inet6Address)
+ && !ip.isAnyLocalAddress()
+ && !ip.isLoopbackAddress()
+ && !ip.isLinkLocalAddress()
+ && !ip.isSiteLocalAddress()
+ && !ip.isMulticastAddress();
}
private static LinkProperties getUniqueLocalConfig(byte[] ulp, short subnetId) {
diff --git a/packages/Tethering/src/com/android/server/connectivity/tethering/OffloadHardwareInterface.java b/packages/Tethering/src/com/android/server/connectivity/tethering/OffloadHardwareInterface.java
index 01339a4..00a6773 100644
--- a/packages/Tethering/src/com/android/server/connectivity/tethering/OffloadHardwareInterface.java
+++ b/packages/Tethering/src/com/android/server/connectivity/tethering/OffloadHardwareInterface.java
@@ -107,6 +107,8 @@
public OffloadHardwareInterface(Handler h, SharedLog log) {
mHandler = h;
mLog = log.forSubComponent(TAG);
+
+ System.loadLibrary("tetheroffloadjni");
}
/** Get default value indicating whether offload is supported. */
diff --git a/services/core/java/com/android/server/connectivity/Tethering.java b/packages/Tethering/src/com/android/server/connectivity/tethering/Tethering.java
similarity index 88%
rename from services/core/java/com/android/server/connectivity/Tethering.java
rename to packages/Tethering/src/com/android/server/connectivity/tethering/Tethering.java
index acedc36..7c78ef8 100644
--- a/services/core/java/com/android/server/connectivity/Tethering.java
+++ b/packages/Tethering/src/com/android/server/connectivity/tethering/Tethering.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.server.connectivity;
+package com.android.server.connectivity.tethering;
import static android.hardware.usb.UsbManager.USB_CONFIGURED;
import static android.hardware.usb.UsbManager.USB_CONNECTED;
@@ -47,8 +47,6 @@
import static android.telephony.CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED;
import static android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID;
-import static com.android.server.ConnectivityService.SHORT_ARG;
-
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
@@ -62,9 +60,10 @@
import android.content.IntentFilter;
import android.content.res.Resources;
import android.hardware.usb.UsbManager;
+import android.net.INetd;
import android.net.INetworkPolicyManager;
import android.net.INetworkStatsService;
-import android.net.ITetheringEventCallback;
+import android.net.ITetherInternalCallback;
import android.net.IpPrefix;
import android.net.LinkAddress;
import android.net.LinkProperties;
@@ -72,7 +71,10 @@
import android.net.NetworkInfo;
import android.net.NetworkState;
import android.net.NetworkUtils;
+import android.net.TetherStatesParcel;
+import android.net.TetheringConfigurationParcel;
import android.net.ip.IpServer;
+import android.net.util.BaseNetdUnsolicitedEventListener;
import android.net.util.InterfaceSet;
import android.net.util.PrefixUtils;
import android.net.util.SharedLog;
@@ -87,13 +89,10 @@
import android.os.INetworkManagementService;
import android.os.Looper;
import android.os.Message;
-import android.os.RemoteCallbackList;
import android.os.RemoteException;
import android.os.ResultReceiver;
import android.os.UserHandle;
import android.os.UserManager;
-import android.os.UserManagerInternal;
-import android.os.UserManagerInternal.UserRestrictionsListener;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
@@ -110,15 +109,7 @@
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.EntitlementManager;
-import com.android.server.connectivity.tethering.IPv6TetheringCoordinator;
-import com.android.server.connectivity.tethering.OffloadController;
-import com.android.server.connectivity.tethering.TetheringConfiguration;
-import com.android.server.connectivity.tethering.TetheringDependencies;
-import com.android.server.connectivity.tethering.TetheringInterfaceUtils;
-import com.android.server.connectivity.tethering.UpstreamNetworkMonitor;
-import com.android.server.net.BaseNetworkObserver;
+import com.android.tethering.R;
import java.io.FileDescriptor;
import java.io.PrintWriter;
@@ -127,32 +118,32 @@
import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
+import java.util.Iterator;
import java.util.Set;
/**
- * @hide
*
* This class holds much of the business logic to allow Android devices
* to act as IP gateways via USB, BT, and WiFi interfaces.
*/
-public class Tethering extends BaseNetworkObserver {
+public class Tethering {
- private final static String TAG = Tethering.class.getSimpleName();
- private final static boolean DBG = false;
- private final static boolean VDBG = false;
+ private static final String TAG = Tethering.class.getSimpleName();
+ private static final boolean DBG = false;
+ private static final boolean VDBG = false;
- private static final Class[] messageClasses = {
+ private static final Class[] sMessageClasses = {
Tethering.class, TetherMasterSM.class, IpServer.class
};
private static final SparseArray<String> sMagicDecoderRing =
- MessageUtils.findMessageNames(messageClasses);
+ MessageUtils.findMessageNames(sMessageClasses);
private static class TetherState {
public final IpServer ipServer;
public int lastState;
public int lastError;
- public TetherState(IpServer ipServer) {
+ TetherState(IpServer ipServer) {
this.ipServer = ipServer;
// Assume all state machines start out available and with no errors.
lastState = IpServer.STATE_AVAILABLE;
@@ -177,6 +168,7 @@
private final Context mContext;
private final ArrayMap<String, TetherState> mTetherStates;
private final BroadcastReceiver mStateReceiver;
+ // Stopship: replace mNMService before production.
private final INetworkManagementService mNMService;
private final INetworkStatsService mStatsService;
private final INetworkPolicyManager mPolicyManager;
@@ -191,10 +183,13 @@
private final TetheringDependencies mDeps;
private final EntitlementManager mEntitlementMgr;
private final Handler mHandler;
- private final RemoteCallbackList<ITetheringEventCallback> mTetheringEventCallbacks =
- new RemoteCallbackList<>();
private final PhoneStateListener mPhoneStateListener;
+ private final INetd mNetd;
+ private final NetdCallback mNetdCallback;
+ private final UserRestrictionActionListener mTetheringRestriction;
private int mActiveDataSubId = INVALID_SUBSCRIPTION_ID;
+ // All the usage of mTetherInternalCallback should run in the same thread.
+ private ITetherInternalCallback mTetherInternalCallback = null;
private volatile TetheringConfiguration mConfig;
private InterfaceSet mCurrentUpstreamIfaceSet;
@@ -205,18 +200,17 @@
// True iff. WiFi tethering should be started when soft AP is ready.
private boolean mWifiTetherRequested;
private Network mTetherUpstream;
+ private TetherStatesParcel mTetherStatesParcel;
- public Tethering(Context context, INetworkManagementService nmService,
- INetworkStatsService statsService, INetworkPolicyManager policyManager,
- Looper looper, MockableSystemProperties systemProperties,
- TetheringDependencies deps) {
- mLog.mark("constructed");
- mContext = context;
- mNMService = nmService;
- mStatsService = statsService;
- mPolicyManager = policyManager;
- mLooper = looper;
+ public Tethering(TetheringDependencies deps) {
+ mLog.mark("Tethering.constructed");
mDeps = deps;
+ mContext = mDeps.getContext();
+ mNMService = mDeps.getINetworkManagementService();
+ mStatsService = mDeps.getINetworkStatsService();
+ mPolicyManager = mDeps.getINetworkPolicyManager();
+ mNetd = mDeps.getINetd(mContext);
+ mLooper = mDeps.getTetheringLooper();
mPublicSync = new Object();
@@ -239,7 +233,7 @@
// EntitlementManager will send EVENT_UPSTREAM_PERMISSION_CHANGED when cellular upstream
// permission is changed according to entitlement check result.
mEntitlementMgr = mDeps.getEntitlementManager(mContext, mTetherMasterSM, mLog,
- TetherMasterSM.EVENT_UPSTREAM_PERMISSION_CHANGED, systemProperties);
+ TetherMasterSM.EVENT_UPSTREAM_PERMISSION_CHANGED);
mEntitlementMgr.setOnUiEntitlementFailedListener((int downstream) -> {
mLog.log("OBSERVED UiEnitlementFailed");
stopTethering(downstream);
@@ -278,10 +272,22 @@
mStateReceiver = new StateReceiver();
+ mNetdCallback = new NetdCallback();
+ try {
+ mNetd.registerUnsolicitedEventListener(mNetdCallback);
+ } catch (RemoteException e) {
+ mLog.e("Unable to register netd UnsolicitedEventListener");
+ }
+
+ final UserManager userManager = (UserManager) mContext.getSystemService(
+ Context.USER_SERVICE);
+ mTetheringRestriction = new UserRestrictionActionListener(userManager, this);
+
// Load tethering configuration.
updateConfiguration();
startStateMachineUpdaters(mHandler);
+ startTrackDefaultNetwork();
}
private void startStateMachineUpdaters(Handler handler) {
@@ -295,6 +301,7 @@
filter.addAction(WifiManager.WIFI_AP_STATE_CHANGED_ACTION);
filter.addAction(Intent.ACTION_CONFIGURATION_CHANGED);
filter.addAction(WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION);
+ filter.addAction(UserManager.ACTION_USER_RESTRICTIONS_CHANGED);
mContext.registerReceiver(mStateReceiver, filter, null, handler);
filter = new IntentFilter();
@@ -303,11 +310,6 @@
filter.addDataScheme("file");
mContext.registerReceiver(mStateReceiver, filter, null, handler);
- final UserManagerInternal umi = LocalServices.getService(UserManagerInternal.class);
- // This check is useful only for some unit tests; example: ConnectivityServiceTest.
- if (umi != null) {
- umi.addUserRestrictionsListener(new TetheringUserRestrictionListener(this));
- }
}
private WifiManager getWifiManager() {
@@ -318,6 +320,7 @@
private void updateConfiguration() {
mConfig = mDeps.generateTetheringConfiguration(mContext, mLog, mActiveDataSubId);
mUpstreamNetworkMonitor.updateMobileRequiresDun(mConfig.isDunRequired);
+ reportConfigurationChanged(mConfig.toStableParcelable());
}
private void maybeDunSettingChanged() {
@@ -327,10 +330,31 @@
updateConfiguration();
}
- @Override
- public void interfaceStatusChanged(String iface, boolean up) {
+ private class NetdCallback extends BaseNetdUnsolicitedEventListener {
+ @Override
+ public void onInterfaceChanged(String ifName, boolean up) {
+ mHandler.post(() -> interfaceStatusChanged(ifName, up));
+ }
+
+ @Override
+ public void onInterfaceLinkStateChanged(String ifName, boolean up) {
+ mHandler.post(() -> interfaceLinkStateChanged(ifName, up));
+ }
+
+ @Override
+ public void onInterfaceAdded(String ifName) {
+ mHandler.post(() -> interfaceAdded(ifName));
+ }
+
+ @Override
+ public void onInterfaceRemoved(String ifName) {
+ mHandler.post(() -> interfaceRemoved(ifName));
+ }
+ }
+
+ void interfaceStatusChanged(String iface, boolean up) {
// Never called directly: only called from interfaceLinkStateChanged.
- // See NetlinkHandler.cpp:71.
+ // See NetlinkHandler.cpp: notifyInterfaceChanged.
if (VDBG) Log.d(TAG, "interfaceStatusChanged " + iface + ", " + up);
synchronized (mPublicSync) {
if (up) {
@@ -349,8 +373,7 @@
}
}
- @Override
- public void interfaceLinkStateChanged(String iface, boolean up) {
+ void interfaceLinkStateChanged(String iface, boolean up) {
interfaceStatusChanged(iface, up);
}
@@ -369,28 +392,27 @@
return TETHERING_INVALID;
}
- @Override
- public void interfaceAdded(String iface) {
+ void interfaceAdded(String iface) {
if (VDBG) Log.d(TAG, "interfaceAdded " + iface);
synchronized (mPublicSync) {
maybeTrackNewInterfaceLocked(iface);
}
}
- @Override
- public void interfaceRemoved(String iface) {
+
+ void interfaceRemoved(String iface) {
if (VDBG) Log.d(TAG, "interfaceRemoved " + iface);
synchronized (mPublicSync) {
stopTrackingInterfaceLocked(iface);
}
}
- public void startTethering(int type, ResultReceiver receiver, boolean showProvisioningUi) {
+ void startTethering(int type, ResultReceiver receiver, boolean showProvisioningUi) {
mEntitlementMgr.startProvisioningIfNeeded(type, showProvisioningUi);
enableTetheringInternal(type, true /* enabled */, receiver);
}
- public void stopTethering(int type) {
+ void stopTethering(int type) {
enableTetheringInternal(type, false /* disabled */, null);
mEntitlementMgr.stopProvisioningIfNeeded(type);
}
@@ -434,8 +456,8 @@
mLog.e("setWifiTethering: failed to get WifiManager!");
return TETHER_ERROR_SERVICE_UNAVAIL;
}
- if ((enable && mgr.startSoftAp(null /* use existing wifi config */)) ||
- (!enable && mgr.stopSoftAp())) {
+ if ((enable && mgr.startSoftAp(null /* use existing wifi config */))
+ || (!enable && mgr.stopSoftAp())) {
mWifiTetherRequested = enable;
return TETHER_ERROR_NO_ERROR;
}
@@ -450,8 +472,8 @@
private void setBluetoothTethering(final boolean enable, final ResultReceiver receiver) {
final BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
if (adapter == null || !adapter.isEnabled()) {
- Log.w(TAG, "Tried to enable bluetooth tethering with null or disabled adapter. null: " +
- (adapter == null));
+ Log.w(TAG, "Tried to enable bluetooth tethering with null or disabled adapter. null: "
+ + (adapter == null));
sendTetherResult(receiver, TETHER_ERROR_SERVICE_UNAVAIL);
return;
}
@@ -487,7 +509,7 @@
}, BluetoothProfile.PAN);
}
- public int tether(String iface) {
+ int tether(String iface) {
return tether(iface, IpServer.STATE_TETHERED);
}
@@ -515,7 +537,7 @@
}
}
- public int untether(String iface) {
+ int untether(String iface) {
if (DBG) Log.d(TAG, "Untethering " + iface);
synchronized (mPublicSync) {
TetherState tetherState = mTetherStates.get(iface);
@@ -532,19 +554,19 @@
}
}
- public void untetherAll() {
+ void untetherAll() {
stopTethering(TETHERING_WIFI);
stopTethering(TETHERING_WIFI_P2P);
stopTethering(TETHERING_USB);
stopTethering(TETHERING_BLUETOOTH);
}
- public int getLastTetherError(String iface) {
+ int getLastTetherError(String iface) {
synchronized (mPublicSync) {
TetherState tetherState = mTetherStates.get(iface);
if (tetherState == null) {
- Log.e(TAG, "Tried to getLastTetherError on an unknown iface :" + iface +
- ", ignoring");
+ Log.e(TAG, "Tried to getLastTetherError on an unknown iface :" + iface
+ + ", ignoring");
return TETHER_ERROR_UNKNOWN_IFACE;
}
return tetherState.lastError;
@@ -559,12 +581,14 @@
final ArrayList<String> tetherList = new ArrayList<>();
final ArrayList<String> localOnlyList = new ArrayList<>();
final ArrayList<String> erroredList = new ArrayList<>();
+ final ArrayList<Integer> lastErrorList = new ArrayList<>();
boolean wifiTethered = false;
boolean usbTethered = false;
boolean bluetoothTethered = false;
final TetheringConfiguration cfg = mConfig;
+ final TetherStatesParcel mTetherStatesParcel = new TetherStatesParcel();
synchronized (mPublicSync) {
for (int i = 0; i < mTetherStates.size(); i++) {
@@ -572,6 +596,7 @@
String iface = mTetherStates.keyAt(i);
if (tetherState.lastError != TETHER_ERROR_NO_ERROR) {
erroredList.add(iface);
+ lastErrorList.add(tetherState.lastError);
} else if (tetherState.lastState == IpServer.STATE_AVAILABLE) {
availableList.add(iface);
} else if (tetherState.lastState == IpServer.STATE_LOCAL_ONLY) {
@@ -588,9 +613,21 @@
}
}
}
+
+ mTetherStatesParcel.availableList = availableList.toArray(new String[0]);
+ mTetherStatesParcel.tetheredList = tetherList.toArray(new String[0]);
+ mTetherStatesParcel.localOnlyList = localOnlyList.toArray(new String[0]);
+ mTetherStatesParcel.erroredIfaceList = erroredList.toArray(new String[0]);
+ mTetherStatesParcel.lastErrorList = new int[lastErrorList.size()];
+ Iterator<Integer> iterator = lastErrorList.iterator();
+ for (int i = 0; i < lastErrorList.size(); i++) {
+ mTetherStatesParcel.lastErrorList[i] = iterator.next().intValue();
+ }
+ reportTetherStateChanged(mTetherStatesParcel);
+
final Intent bcast = new Intent(ACTION_TETHER_STATE_CHANGED);
- bcast.addFlags(Intent.FLAG_RECEIVER_REPLACE_PENDING |
- Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT);
+ bcast.addFlags(Intent.FLAG_RECEIVER_REPLACE_PENDING
+ | Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT);
bcast.putStringArrayListExtra(EXTRA_AVAILABLE_TETHER, availableList);
bcast.putStringArrayListExtra(EXTRA_ACTIVE_LOCAL_ONLY, localOnlyList);
bcast.putStringArrayListExtra(EXTRA_ACTIVE_TETHER, tetherList);
@@ -638,16 +675,16 @@
}
int icon = 0;
switch(id) {
- case SystemMessage.NOTE_TETHER_USB:
- icon = com.android.internal.R.drawable.stat_sys_tether_usb;
- break;
- case SystemMessage.NOTE_TETHER_BLUETOOTH:
- icon = com.android.internal.R.drawable.stat_sys_tether_bluetooth;
- break;
- case SystemMessage.NOTE_TETHER_GENERAL:
- default:
- icon = com.android.internal.R.drawable.stat_sys_tether_general;
- break;
+ case SystemMessage.NOTE_TETHER_USB:
+ icon = R.drawable.stat_sys_tether_usb;
+ break;
+ case SystemMessage.NOTE_TETHER_BLUETOOTH:
+ icon = R.drawable.stat_sys_tether_bluetooth;
+ break;
+ case SystemMessage.NOTE_TETHER_GENERAL:
+ default:
+ icon = R.drawable.stat_sys_tether_general;
+ break;
}
if (mLastNotificationId != 0) {
@@ -666,21 +703,21 @@
PendingIntent pi = PendingIntent.getActivityAsUser(mContext, 0, intent, 0,
null, UserHandle.CURRENT);
- Resources r = Resources.getSystem();
+ Resources r = mContext.getResources();
final CharSequence title;
final CharSequence message;
if (tetheringOn) {
- title = r.getText(com.android.internal.R.string.tethered_notification_title);
- message = r.getText(com.android.internal.R.string.tethered_notification_message);
+ title = r.getText(R.string.tethered_notification_title);
+ message = r.getText(R.string.tethered_notification_message);
} else {
- title = r.getText(com.android.internal.R.string.disable_tether_notification_title);
- message = r.getText(com.android.internal.R.string.disable_tether_notification_message);
+ title = r.getText(R.string.disable_tether_notification_title);
+ message = r.getText(R.string.disable_tether_notification_message);
}
if (mTetheredNotificationBuilder == null) {
- mTetheredNotificationBuilder =
- new Notification.Builder(mContext, SystemNotificationChannels.NETWORK_STATUS);
+ mTetheredNotificationBuilder = new Notification.Builder(mContext,
+ SystemNotificationChannels.NETWORK_STATUS);
mTetheredNotificationBuilder.setWhen(0)
.setOngoing(true)
.setColor(mContext.getColor(
@@ -701,7 +738,7 @@
@VisibleForTesting
protected void clearTetheredNotification() {
NotificationManager notificationManager =
- (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
+ (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
if (notificationManager != null && mLastNotificationId != 0) {
notificationManager.cancelAsUser(null, mLastNotificationId,
UserHandle.ALL);
@@ -726,14 +763,17 @@
} else if (action.equals(Intent.ACTION_CONFIGURATION_CHANGED)) {
mLog.log("OBSERVED configuration changed");
updateConfiguration();
+ } else if (action.equals(UserManager.ACTION_USER_RESTRICTIONS_CHANGED)) {
+ mLog.log("OBSERVED user restrictions changed");
+ handleUserRestrictionAction();
}
}
private void handleConnectivityAction(Intent intent) {
final NetworkInfo networkInfo =
(NetworkInfo) intent.getParcelableExtra(EXTRA_NETWORK_INFO);
- if (networkInfo == null ||
- networkInfo.getDetailedState() == NetworkInfo.DetailedState.FAILED) {
+ if (networkInfo == null
+ || networkInfo.getDetailedState() == NetworkInfo.DetailedState.FAILED) {
return;
}
@@ -832,25 +872,35 @@
}
}
}
+
+ private void handleUserRestrictionAction() {
+ mTetheringRestriction.onUserRestrictionsChanged();
+ }
}
@VisibleForTesting
- protected static class TetheringUserRestrictionListener implements UserRestrictionsListener {
+ protected static class UserRestrictionActionListener {
+ private final UserManager mUserManager;
private final Tethering mWrapper;
+ public boolean mDisallowTethering;
- public TetheringUserRestrictionListener(Tethering wrapper) {
+ public UserRestrictionActionListener(UserManager um, Tethering wrapper) {
+ mUserManager = um;
mWrapper = wrapper;
+ mDisallowTethering = false;
}
- public void onUserRestrictionsChanged(int userId,
- Bundle newRestrictions,
- Bundle prevRestrictions) {
+ public void onUserRestrictionsChanged() {
+ // getUserRestrictions gets restriction for this process' user, which is the primary
+ // user. This is fine because DISALLOW_CONFIG_TETHERING can only be set on the primary
+ // user. See UserManager.DISALLOW_CONFIG_TETHERING.
+ final Bundle restrictions = mUserManager.getUserRestrictions();
final boolean newlyDisallowed =
- newRestrictions.getBoolean(UserManager.DISALLOW_CONFIG_TETHERING);
- final boolean previouslyDisallowed =
- prevRestrictions.getBoolean(UserManager.DISALLOW_CONFIG_TETHERING);
- final boolean tetheringDisallowedChanged = (newlyDisallowed != previouslyDisallowed);
+ restrictions.getBoolean(UserManager.DISALLOW_CONFIG_TETHERING);
+ final boolean prevDisallowed = mDisallowTethering;
+ mDisallowTethering = newlyDisallowed;
+ final boolean tetheringDisallowedChanged = (newlyDisallowed != prevDisallowed);
if (!tetheringDisallowedChanged) {
return;
}
@@ -860,7 +910,7 @@
if (newlyDisallowed && isTetheringActiveOnDevice) {
mWrapper.showTetheredNotification(
- com.android.internal.R.drawable.stat_sys_tether_general, false);
+ R.drawable.stat_sys_tether_general, false);
mWrapper.untetherAll();
}
}
@@ -888,8 +938,8 @@
}
}
- mLog.log("Error disabling Wi-Fi IP serving; " +
- (TextUtils.isEmpty(ifname) ? "no interface name specified"
+ mLog.log("Error disabling Wi-Fi IP serving; "
+ + (TextUtils.isEmpty(ifname) ? "no interface name specified"
: "specified interface: " + ifname));
}
@@ -928,8 +978,8 @@
changeInterfaceState(ifname, ipServingMode);
} else {
mLog.e(String.format(
- "Cannot enable IP serving in mode %s on missing interface name",
- ipServingMode));
+ "Cannot enable IP serving in mode %s on missing interface name",
+ ipServingMode));
}
}
@@ -989,11 +1039,11 @@
}
}
- public TetheringConfiguration getTetheringConfiguration() {
+ TetheringConfiguration getTetheringConfiguration() {
return mConfig;
}
- public boolean hasTetherableConfiguration() {
+ boolean hasTetherableConfiguration() {
final TetheringConfiguration cfg = mConfig;
final boolean hasDownstreamConfiguration =
(cfg.tetherableUsbRegexs.length != 0)
@@ -1007,19 +1057,19 @@
// TODO - update callers to use getTetheringConfiguration(),
// which has only final members.
- public String[] getTetherableUsbRegexs() {
+ String[] getTetherableUsbRegexs() {
return copy(mConfig.tetherableUsbRegexs);
}
- public String[] getTetherableWifiRegexs() {
+ String[] getTetherableWifiRegexs() {
return copy(mConfig.tetherableWifiRegexs);
}
- public String[] getTetherableBluetoothRegexs() {
+ String[] getTetherableBluetoothRegexs() {
return copy(mConfig.tetherableBluetoothRegexs);
}
- public int setUsbTethering(boolean enable) {
+ int setUsbTethering(boolean enable) {
if (VDBG) Log.d(TAG, "setUsbTethering(" + enable + ")");
UsbManager usbManager = (UsbManager) mContext.getSystemService(Context.USB_SERVICE);
if (usbManager == null) {
@@ -1035,7 +1085,7 @@
}
// TODO review API - figure out how to delete these entirely.
- public String[] getTetheredIfaces() {
+ String[] getTetheredIfaces() {
ArrayList<String> list = new ArrayList<String>();
synchronized (mPublicSync) {
for (int i = 0; i < mTetherStates.size(); i++) {
@@ -1048,7 +1098,7 @@
return list.toArray(new String[list.size()]);
}
- public String[] getTetherableIfaces() {
+ String[] getTetherableIfaces() {
ArrayList<String> list = new ArrayList<String>();
synchronized (mPublicSync) {
for (int i = 0; i < mTetherStates.size(); i++) {
@@ -1061,13 +1111,13 @@
return list.toArray(new String[list.size()]);
}
- public String[] getTetheredDhcpRanges() {
+ String[] getTetheredDhcpRanges() {
// TODO: this is only valid for the old DHCP server. Latest search suggests it is only used
// by WifiP2pServiceImpl to start dnsmasq: remove/deprecate after migrating callers.
return mConfig.legacyDhcpRanges;
}
- public String[] getErroredIfaces() {
+ String[] getErroredIfaces() {
ArrayList<String> list = new ArrayList<String>();
synchronized (mPublicSync) {
for (int i = 0; i < mTetherStates.size(); i++) {
@@ -1518,8 +1568,8 @@
}
if (DBG) {
- Log.d(TAG, "TetherModeAlive still has " + mNotifyList.size() +
- " live requests:");
+ Log.d(TAG, "TetherModeAlive still has " + mNotifyList.size()
+ + " live requests:");
for (IpServer o : mNotifyList) {
Log.d(TAG, " " + o);
}
@@ -1588,7 +1638,7 @@
transitionTo(mInitialState);
break;
default:
- retValue = false;
+ retValue = false;
}
return retValue;
}
@@ -1625,7 +1675,7 @@
notify(IpServer.CMD_START_TETHERING_ERROR);
try {
mNMService.setIpForwardingEnabled(false);
- } catch (Exception e) {}
+ } catch (Exception e) { }
}
}
@@ -1636,7 +1686,7 @@
notify(IpServer.CMD_STOP_TETHERING_ERROR);
try {
mNMService.setIpForwardingEnabled(false);
- } catch (Exception e) {}
+ } catch (Exception e) { }
}
}
@@ -1647,10 +1697,10 @@
notify(IpServer.CMD_SET_DNS_FORWARDERS_ERROR);
try {
mNMService.stopTethering();
- } catch (Exception e) {}
+ } catch (Exception e) { }
try {
mNMService.setIpForwardingEnabled(false);
- } catch (Exception e) {}
+ } catch (Exception e) { }
}
}
@@ -1731,55 +1781,66 @@
}
}
- public void systemReady() {
+ private void startTrackDefaultNetwork() {
mUpstreamNetworkMonitor.startTrackDefaultNetwork(mDeps.getDefaultNetworkRequest(),
mEntitlementMgr);
}
/** Get the latest value of the tethering entitlement check. */
- public void getLatestTetheringEntitlementResult(int type, ResultReceiver receiver,
+ void requestLatestTetheringEntitlementResult(int type, ResultReceiver receiver,
boolean showEntitlementUi) {
if (receiver != null) {
- mEntitlementMgr.getLatestTetheringEntitlementResult(type, receiver, showEntitlementUi);
+ mEntitlementMgr.requestLatestTetheringEntitlementResult(type, receiver,
+ showEntitlementUi);
}
}
/** Register tethering event callback */
- public void registerTetheringEventCallback(ITetheringEventCallback callback) {
+ void registerTetherInternalCallback(ITetherInternalCallback callback) {
mHandler.post(() -> {
+ mTetherInternalCallback = callback;
try {
- callback.onUpstreamChanged(mTetherUpstream);
+ mTetherInternalCallback.onCallbackCreated(mTetherUpstream,
+ mConfig.toStableParcelable(), mTetherStatesParcel);
} catch (RemoteException e) {
// Not really very much to do here.
}
- mTetheringEventCallbacks.register(callback);
- });
- }
-
- /** Unregister tethering event callback */
- public void unregisterTetheringEventCallback(ITetheringEventCallback callback) {
- mHandler.post(() -> {
- mTetheringEventCallbacks.unregister(callback);
});
}
private void reportUpstreamChanged(Network network) {
- final int length = mTetheringEventCallbacks.beginBroadcast();
+ // Don't need to synchronized mTetherInternalCallback because all the usage of this variable
+ // should run at the same thread.
+ if (mTetherInternalCallback == null) return;
+
try {
- for (int i = 0; i < length; i++) {
- try {
- mTetheringEventCallbacks.getBroadcastItem(i).onUpstreamChanged(network);
- } catch (RemoteException e) {
- // Not really very much to do here.
- }
- }
- } finally {
- mTetheringEventCallbacks.finishBroadcast();
+ mTetherInternalCallback.onUpstreamChanged(network);
+ } catch (RemoteException e) {
+ // Not really very much to do here.
}
}
- @Override
- public void dump(FileDescriptor fd, PrintWriter writer, String[] args) {
+ private void reportConfigurationChanged(TetheringConfigurationParcel config) {
+ if (mTetherInternalCallback == null) return;
+
+ try {
+ mTetherInternalCallback.onConfigurationChanged(config);
+ } catch (RemoteException e) {
+ // Not really very much to do here.
+ }
+ }
+
+ private void reportTetherStateChanged(TetherStatesParcel states) {
+ if (mTetherInternalCallback == null) return;
+
+ try {
+ mTetherInternalCallback.onTetherStatesChanged(states);
+ } catch (RemoteException e) {
+ // Not really very much to do here.
+ }
+ }
+
+ void dump(FileDescriptor fd, PrintWriter writer, String[] args) {
// Binder.java closes the resource for us.
@SuppressWarnings("resource")
final IndentingPrintWriter pw = new IndentingPrintWriter(writer, " ");
@@ -1838,7 +1899,7 @@
pw.println("Log:");
pw.increaseIndent();
- if (argsContain(args, SHORT_ARG)) {
+ if (argsContain(args, "--short")) {
pw.println("<log removed for brevity>");
} else {
mLog.dump(fd, pw, args);
diff --git a/packages/Tethering/src/com/android/server/connectivity/tethering/TetheringConfiguration.java b/packages/Tethering/src/com/android/server/connectivity/tethering/TetheringConfiguration.java
index ca9b168..0ab4d63 100644
--- a/packages/Tethering/src/com/android/server/connectivity/tethering/TetheringConfiguration.java
+++ b/packages/Tethering/src/com/android/server/connectivity/tethering/TetheringConfiguration.java
@@ -38,6 +38,7 @@
import android.content.Context;
import android.content.res.Resources;
import android.net.ConnectivityManager;
+import android.net.TetheringConfigurationParcel;
import android.net.util.SharedLog;
import android.provider.Settings;
import android.telephony.SubscriptionManager;
@@ -384,4 +385,32 @@
}
return false;
}
+
+ /**
+ * Convert this TetheringConfiguration to a TetheringConfigurationParcel.
+ */
+ public TetheringConfigurationParcel toStableParcelable() {
+ final TetheringConfigurationParcel parcel = new TetheringConfigurationParcel();
+ parcel.subId = subId;
+ parcel.tetherableUsbRegexs = tetherableUsbRegexs;
+ parcel.tetherableWifiRegexs = tetherableWifiRegexs;
+ parcel.tetherableBluetoothRegexs = tetherableBluetoothRegexs;
+ parcel.isDunRequired = isDunRequired;
+ parcel.chooseUpstreamAutomatically = chooseUpstreamAutomatically;
+
+ int[] preferredTypes = new int[preferredUpstreamIfaceTypes.size()];
+ int index = 0;
+ for (Integer type : preferredUpstreamIfaceTypes) {
+ preferredTypes[index++] = type;
+ }
+ parcel.preferredUpstreamIfaceTypes = preferredTypes;
+
+ parcel.legacyDhcpRanges = legacyDhcpRanges;
+ parcel.defaultIPv4DNS = defaultIPv4DNS;
+ parcel.enableLegacyDhcpServer = enableLegacyDhcpServer;
+ parcel.provisioningApp = provisioningApp;
+ parcel.provisioningAppNoUi = provisioningAppNoUi;
+ parcel.provisioningCheckPeriod = provisioningCheckPeriod;
+ return parcel;
+ }
}
diff --git a/packages/Tethering/src/com/android/server/connectivity/tethering/TetheringDependencies.java b/packages/Tethering/src/com/android/server/connectivity/tethering/TetheringDependencies.java
new file mode 100644
index 0000000..0ba8412
--- /dev/null
+++ b/packages/Tethering/src/com/android/server/connectivity/tethering/TetheringDependencies.java
@@ -0,0 +1,151 @@
+/*
+ * 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.
+ */
+
+package com.android.server.connectivity.tethering;
+
+import android.content.Context;
+import android.net.INetd;
+import android.net.INetworkPolicyManager;
+import android.net.INetworkStatsService;
+import android.net.NetworkRequest;
+import android.net.ip.IpServer;
+import android.net.util.SharedLog;
+import android.os.Handler;
+import android.os.IBinder;
+import android.os.INetworkManagementService;
+import android.os.Looper;
+import android.os.ServiceManager;
+
+import com.android.internal.util.StateMachine;
+
+import java.util.ArrayList;
+
+
+/**
+ * Capture tethering dependencies, for injection.
+ *
+ * @hide
+ */
+public class TetheringDependencies {
+ /**
+ * Get a reference to the offload hardware interface to be used by tethering.
+ */
+ public OffloadHardwareInterface getOffloadHardwareInterface(Handler h, SharedLog log) {
+ return new OffloadHardwareInterface(h, log);
+ }
+
+ /**
+ * Get a reference to the UpstreamNetworkMonitor to be used by tethering.
+ */
+ public UpstreamNetworkMonitor getUpstreamNetworkMonitor(Context ctx, StateMachine target,
+ SharedLog log, int what) {
+ return new UpstreamNetworkMonitor(ctx, target, log, what);
+ }
+
+ /**
+ * Get a reference to the IPv6TetheringCoordinator to be used by tethering.
+ */
+ public IPv6TetheringCoordinator getIPv6TetheringCoordinator(
+ ArrayList<IpServer> notifyList, SharedLog log) {
+ return new IPv6TetheringCoordinator(notifyList, log);
+ }
+
+ /**
+ * Get dependencies to be used by IpServer.
+ */
+ public IpServer.Dependencies getIpServerDependencies() {
+ return new IpServer.Dependencies();
+ }
+
+ /**
+ * Indicates whether tethering is supported on the device.
+ */
+ public boolean isTetheringSupported() {
+ return true;
+ }
+
+ /**
+ * Get the NetworkRequest that should be fulfilled by the default network.
+ */
+ public NetworkRequest getDefaultNetworkRequest() {
+ return null;
+ }
+
+ /**
+ * Get a reference to the EntitlementManager to be used by tethering.
+ */
+ public EntitlementManager getEntitlementManager(Context ctx, StateMachine target,
+ SharedLog log, int what) {
+ return new EntitlementManager(ctx, target, log, what);
+ }
+
+ /**
+ * Generate a new TetheringConfiguration according to input sub Id.
+ */
+ public TetheringConfiguration generateTetheringConfiguration(Context ctx, SharedLog log,
+ int subId) {
+ return new TetheringConfiguration(ctx, log, subId);
+ }
+
+ /**
+ * Get a reference to INetworkManagementService to registerTetheringStatsProvider from
+ * OffloadController. Note: This should be removed soon by Usage refactor work in R
+ * development cycle.
+ */
+ public INetworkManagementService getINetworkManagementService() {
+ return INetworkManagementService.Stub.asInterface(
+ ServiceManager.getService(Context.NETWORKMANAGEMENT_SERVICE));
+ }
+
+ /**
+ * Get a reference to INetworkStatsService to force update tethering usage.
+ * Note: This should be removed in R development cycle.
+ */
+ public INetworkStatsService getINetworkStatsService() {
+ return INetworkStatsService.Stub.asInterface(
+ ServiceManager.getService(Context.NETWORK_STATS_SERVICE));
+ }
+
+ /**
+ * Get a reference to INetworkPolicyManager to be used by tethering.
+ */
+ public INetworkPolicyManager getINetworkPolicyManager() {
+ return INetworkPolicyManager.Stub.asInterface(
+ ServiceManager.getService(Context.NETWORK_POLICY_SERVICE));
+ }
+
+ /**
+ * Get a reference to INetd to be used by tethering.
+ */
+ public INetd getINetd(Context context) {
+ return INetd.Stub.asInterface(
+ (IBinder) context.getSystemService(Context.NETD_SERVICE));
+ }
+
+ /**
+ * Get tethering thread looper.
+ */
+ public Looper getTetheringLooper() {
+ return null;
+ }
+
+ /**
+ * Get Context of TetheringSerice.
+ */
+ public Context getContext() {
+ return null;
+ }
+}
diff --git a/services/core/java/com/android/server/connectivity/tethering/TetheringInterfaceUtils.java b/packages/Tethering/src/com/android/server/connectivity/tethering/TetheringInterfaceUtils.java
similarity index 100%
rename from services/core/java/com/android/server/connectivity/tethering/TetheringInterfaceUtils.java
rename to packages/Tethering/src/com/android/server/connectivity/tethering/TetheringInterfaceUtils.java
diff --git a/packages/Tethering/src/com/android/server/connectivity/tethering/TetheringService.java b/packages/Tethering/src/com/android/server/connectivity/tethering/TetheringService.java
new file mode 100644
index 0000000..456f2f7
--- /dev/null
+++ b/packages/Tethering/src/com/android/server/connectivity/tethering/TetheringService.java
@@ -0,0 +1,178 @@
+/*
+ * Copyright (C) 2019 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.app.Service;
+import android.content.Context;
+import android.content.Intent;
+import android.net.ConnectivityManager;
+import android.net.ITetherInternalCallback;
+import android.net.ITetheringConnector;
+import android.net.NetworkRequest;
+import android.net.util.SharedLog;
+import android.os.HandlerThread;
+import android.os.IBinder;
+import android.os.Looper;
+import android.os.ResultReceiver;
+import android.os.SystemProperties;
+import android.provider.Settings;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.android.internal.annotations.VisibleForTesting;
+
+import java.io.FileDescriptor;
+import java.io.PrintWriter;
+
+/**
+ * Android service used to manage tethering.
+ *
+ * <p>The service returns a binder for the system server to communicate with the tethering.
+ */
+public class TetheringService extends Service {
+ private static final String TAG = TetheringService.class.getSimpleName();
+
+ private final SharedLog mLog = new SharedLog(TAG);
+ private TetheringConnector mConnector;
+ private Context mContext;
+ private TetheringDependencies mDeps;
+ private Tethering mTethering;
+
+ @Override
+ public void onCreate() {
+ mLog.mark("onCreate");
+ mDeps = getTetheringDependencies();
+ mContext = mDeps.getContext();
+ mTethering = makeTethering(mDeps);
+ }
+
+ /**
+ * Make a reference to Tethering object.
+ */
+ @VisibleForTesting
+ public Tethering makeTethering(TetheringDependencies deps) {
+ return new Tethering(deps);
+ }
+
+ /**
+ * Create a binder connector for the system server to communicate with the tethering.
+ */
+ private synchronized IBinder makeConnector() {
+ if (mConnector == null) {
+ mConnector = new TetheringConnector(mTethering);
+ }
+ return mConnector;
+ }
+
+ @NonNull
+ @Override
+ public IBinder onBind(Intent intent) {
+ mLog.mark("onBind");
+ return makeConnector();
+ }
+
+ private static class TetheringConnector extends ITetheringConnector.Stub {
+ private final Tethering mService;
+
+ TetheringConnector(Tethering tether) {
+ mService = tether;
+ }
+
+ @Override
+ public void tether(String iface) {
+ mService.tether(iface);
+ }
+
+ @Override
+ public void untether(String iface) {
+ mService.untether(iface);
+ }
+
+ @Override
+ public void setUsbTethering(boolean enable) {
+ mService.setUsbTethering(enable);
+ }
+
+ @Override
+ public void startTethering(int type, ResultReceiver receiver, boolean showProvisioningUi) {
+ mService.startTethering(type, receiver, showProvisioningUi);
+ }
+
+ @Override
+ public void stopTethering(int type) {
+ mService.stopTethering(type);
+ }
+
+ @Override
+ public void requestLatestTetheringEntitlementResult(int type, ResultReceiver receiver,
+ boolean showEntitlementUi) {
+ mService.requestLatestTetheringEntitlementResult(type, receiver, showEntitlementUi);
+ }
+
+ @Override
+ public void registerTetherInternalCallback(ITetherInternalCallback callback) {
+ mService.registerTetherInternalCallback(callback);
+ }
+ }
+
+ @Override
+ protected void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter writer,
+ @Nullable String[] args) {
+ mTethering.dump(fd, writer, args);
+ }
+
+ /**
+ * An injection method for testing.
+ */
+ @VisibleForTesting
+ public TetheringDependencies getTetheringDependencies() {
+ if (mDeps == null) {
+ mDeps = new TetheringDependencies() {
+ @Override
+ public NetworkRequest getDefaultNetworkRequest() {
+ ConnectivityManager cm = (ConnectivityManager) mContext.getSystemService(
+ Context.CONNECTIVITY_SERVICE);
+ return cm.getDefaultRequest();
+ }
+
+ @Override
+ public Looper getTetheringLooper() {
+ final HandlerThread tetherThread = new HandlerThread("android.tethering");
+ tetherThread.start();
+ return tetherThread.getLooper();
+ }
+
+ @Override
+ public boolean isTetheringSupported() {
+ int defaultVal =
+ SystemProperties.get("ro.tether.denied").equals("true") ? 0 : 1;
+ boolean tetherSupported = Settings.Global.getInt(mContext.getContentResolver(),
+ Settings.Global.TETHER_SUPPORTED, defaultVal) != 0;
+ return tetherSupported;
+ }
+
+ @Override
+ public Context getContext() {
+ return TetheringService.this;
+ }
+ };
+ }
+
+ return mDeps;
+ }
+}
diff --git a/packages/Tethering/tests/unit/Android.bp b/packages/Tethering/tests/unit/Android.bp
index 363be18..5b018df 100644
--- a/packages/Tethering/tests/unit/Android.bp
+++ b/packages/Tethering/tests/unit/Android.bp
@@ -18,7 +18,6 @@
name: "TetheringTests",
certificate: "platform",
srcs: [
- ":servicescore-tethering-src",
"src/**/*.java",
],
test_suites: ["device-tests"],
@@ -41,17 +40,3 @@
"libstaticjvmtiagent",
],
}
-
-// This group would be removed when tethering migration is done.
-filegroup {
- name: "tethering-tests-src",
- srcs: [
- "src/com/android/server/connectivity/tethering/EntitlementManagerTest.java",
- "src/com/android/server/connectivity/tethering/OffloadControllerTest.java",
- "src/com/android/server/connectivity/tethering/TetheringConfigurationTest.java",
- "src/com/android/server/connectivity/tethering/UpstreamNetworkMonitorTest.java",
- "src/android/net/dhcp/DhcpServingParamsParcelExtTest.java",
- "src/android/net/ip/IpServerTest.java",
- "src/android/net/util/InterfaceSetTest.java",
- ],
-}
diff --git a/tests/net/java/android/net/util/VersionedBroadcastListenerTest.java b/packages/Tethering/tests/unit/src/android/net/util/VersionedBroadcastListenerTest.java
similarity index 96%
rename from tests/net/java/android/net/util/VersionedBroadcastListenerTest.java
rename to packages/Tethering/tests/unit/src/android/net/util/VersionedBroadcastListenerTest.java
index 0d27d5b..5a9b6e3 100644
--- a/tests/net/java/android/net/util/VersionedBroadcastListenerTest.java
+++ b/packages/Tethering/tests/unit/src/android/net/util/VersionedBroadcastListenerTest.java
@@ -51,7 +51,9 @@
private VersionedBroadcastListener mListener;
private int mCallbackCount;
- private void doCallback() { mCallbackCount++; }
+ private void doCallback() {
+ mCallbackCount++;
+ }
private class MockContext extends BroadcastInterceptingContext {
MockContext(Context base) {
@@ -96,7 +98,7 @@
mListener.startListening();
for (int i = 0; i < 5; i++) {
sendBroadcast();
- assertEquals(i+1, mCallbackCount);
+ assertEquals(i + 1, mCallbackCount);
}
mListener.stopListening();
}
diff --git a/packages/Tethering/tests/unit/src/com/android/server/connectivity/tethering/EntitlementManagerTest.java b/packages/Tethering/tests/unit/src/com/android/server/connectivity/tethering/EntitlementManagerTest.java
index 5217e26..99cf9e9 100644
--- a/packages/Tethering/tests/unit/src/com/android/server/connectivity/tethering/EntitlementManagerTest.java
+++ b/packages/Tethering/tests/unit/src/com/android/server/connectivity/tethering/EntitlementManagerTest.java
@@ -24,6 +24,9 @@
import static android.net.ConnectivityManager.TETHER_ERROR_PROVISION_FAILED;
import static android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID;
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn;
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession;
+
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
@@ -44,6 +47,7 @@
import android.os.Message;
import android.os.PersistableBundle;
import android.os.ResultReceiver;
+import android.os.SystemProperties;
import android.os.test.TestLooper;
import android.provider.Settings;
import android.telephony.CarrierConfigManager;
@@ -57,7 +61,6 @@
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.MockableSystemProperties;
import org.junit.After;
import org.junit.Before;
@@ -65,6 +68,8 @@
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
+import org.mockito.MockitoSession;
+import org.mockito.quality.Strictness;
import java.util.ArrayList;
import java.util.concurrent.CountDownLatch;
@@ -80,7 +85,6 @@
@Mock private CarrierConfigManager mCarrierConfigManager;
@Mock private Context mContext;
- @Mock private MockableSystemProperties mSystemProperties;
@Mock private Resources mResources;
@Mock private SharedLog mLog;
@Mock private EntitlementManager.OnUiEntitlementFailedListener mEntitlementFailedListener;
@@ -95,6 +99,7 @@
private TestStateMachine mSM;
private WrappedEntitlementManager mEnMgr;
private TetheringConfiguration mConfig;
+ private MockitoSession mMockingSession;
private class MockContext extends BroadcastInterceptingContext {
MockContext(Context base) {
@@ -118,8 +123,8 @@
public int silentProvisionCount = 0;
public WrappedEntitlementManager(Context ctx, StateMachine target,
- SharedLog log, int what, MockableSystemProperties systemProperties) {
- super(ctx, target, log, what, systemProperties);
+ SharedLog log, int what) {
+ super(ctx, target, log, what);
}
public void reset() {
@@ -144,6 +149,15 @@
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
+ mMockingSession = mockitoSession()
+ .initMocks(this)
+ .spyStatic(SystemProperties.class)
+ .strictness(Strictness.WARN)
+ .startMocking();
+ // Don't disable tethering provisioning unless requested.
+ doReturn(false).when(
+ () -> SystemProperties.getBoolean(
+ eq(EntitlementManager.DISABLE_PROVISIONING_SYSPROP_KEY), anyBoolean()));
when(mResources.getStringArray(R.array.config_tether_dhcp_range))
.thenReturn(new String[0]);
@@ -161,8 +175,7 @@
mContentResolver.addProvider(Settings.AUTHORITY, new FakeSettingsProvider());
mMockContext = new MockContext(mContext);
mSM = new TestStateMachine();
- mEnMgr = new WrappedEntitlementManager(mMockContext, mSM, mLog, EVENT_EM_UPDATE,
- mSystemProperties);
+ mEnMgr = new WrappedEntitlementManager(mMockContext, mSM, mLog, EVENT_EM_UPDATE);
mEnMgr.setOnUiEntitlementFailedListener(mEntitlementFailedListener);
mConfig = new TetheringConfiguration(mMockContext, mLog, INVALID_SUBSCRIPTION_ID);
mEnMgr.setTetheringConfigurationFetcher(() -> {
@@ -176,6 +189,7 @@
mSM.quit();
mSM = null;
}
+ mMockingSession.finishMocking();
}
private void setupForRequiredProvisioning() {
@@ -184,9 +198,6 @@
.thenReturn(PROVISIONING_APP_NAME);
when(mResources.getString(R.string.config_mobile_hotspot_provision_app_no_ui))
.thenReturn(PROVISIONING_NO_UI_APP_NAME);
- // Don't disable tethering provisioning unless requested.
- when(mSystemProperties.getBoolean(eq(EntitlementManager.DISABLE_PROVISIONING_SYSPROP_KEY),
- anyBoolean())).thenReturn(false);
// Act like the CarrierConfigManager is present and ready unless told otherwise.
when(mContext.getSystemService(Context.CARRIER_CONFIG_SERVICE))
.thenReturn(mCarrierConfigManager);
@@ -244,7 +255,7 @@
}
@Test
- public void testGetLastEntitlementCacheValue() throws Exception {
+ public void testRequestLastEntitlementCacheValue() throws Exception {
final CountDownLatch mCallbacklatch = new CountDownLatch(1);
// 1. Entitlement check is not required.
mEnMgr.fakeEntitlementResult = TETHER_ERROR_NO_ERROR;
@@ -255,7 +266,7 @@
mCallbacklatch.countDown();
}
};
- mEnMgr.getLatestTetheringEntitlementResult(TETHERING_WIFI, receiver, true);
+ mEnMgr.requestLatestTetheringEntitlementResult(TETHERING_WIFI, receiver, true);
mLooper.dispatchAll();
callbackTimeoutHelper(mCallbacklatch);
assertEquals(0, mEnMgr.uiProvisionCount);
@@ -270,7 +281,7 @@
mCallbacklatch.countDown();
}
};
- mEnMgr.getLatestTetheringEntitlementResult(TETHERING_WIFI, receiver, false);
+ mEnMgr.requestLatestTetheringEntitlementResult(TETHERING_WIFI, receiver, false);
mLooper.dispatchAll();
callbackTimeoutHelper(mCallbacklatch);
assertEquals(0, mEnMgr.uiProvisionCount);
@@ -284,7 +295,7 @@
mCallbacklatch.countDown();
}
};
- mEnMgr.getLatestTetheringEntitlementResult(TETHERING_WIFI, receiver, true);
+ mEnMgr.requestLatestTetheringEntitlementResult(TETHERING_WIFI, receiver, true);
mLooper.dispatchAll();
callbackTimeoutHelper(mCallbacklatch);
assertEquals(1, mEnMgr.uiProvisionCount);
@@ -298,7 +309,7 @@
mCallbacklatch.countDown();
}
};
- mEnMgr.getLatestTetheringEntitlementResult(TETHERING_WIFI, receiver, false);
+ mEnMgr.requestLatestTetheringEntitlementResult(TETHERING_WIFI, receiver, false);
mLooper.dispatchAll();
callbackTimeoutHelper(mCallbacklatch);
assertEquals(0, mEnMgr.uiProvisionCount);
@@ -312,7 +323,7 @@
mCallbacklatch.countDown();
}
};
- mEnMgr.getLatestTetheringEntitlementResult(TETHERING_WIFI, receiver, true);
+ mEnMgr.requestLatestTetheringEntitlementResult(TETHERING_WIFI, receiver, true);
mLooper.dispatchAll();
callbackTimeoutHelper(mCallbacklatch);
assertEquals(1, mEnMgr.uiProvisionCount);
@@ -326,7 +337,7 @@
mCallbacklatch.countDown();
}
};
- mEnMgr.getLatestTetheringEntitlementResult(TETHERING_WIFI, receiver, true);
+ mEnMgr.requestLatestTetheringEntitlementResult(TETHERING_WIFI, receiver, true);
mLooper.dispatchAll();
callbackTimeoutHelper(mCallbacklatch);
assertEquals(0, mEnMgr.uiProvisionCount);
@@ -339,7 +350,7 @@
mCallbacklatch.countDown();
}
};
- mEnMgr.getLatestTetheringEntitlementResult(TETHERING_USB, receiver, false);
+ mEnMgr.requestLatestTetheringEntitlementResult(TETHERING_USB, receiver, false);
mLooper.dispatchAll();
callbackTimeoutHelper(mCallbacklatch);
assertEquals(0, mEnMgr.uiProvisionCount);
diff --git a/tests/net/java/com/android/server/connectivity/TetheringTest.java b/packages/Tethering/tests/unit/src/com/android/server/connectivity/tethering/TetheringTest.java
similarity index 83%
rename from tests/net/java/com/android/server/connectivity/TetheringTest.java
rename to packages/Tethering/tests/unit/src/com/android/server/connectivity/tethering/TetheringTest.java
index 9e5717b..0273ed3 100644
--- a/tests/net/java/com/android/server/connectivity/TetheringTest.java
+++ b/packages/Tethering/tests/unit/src/com/android/server/connectivity/tethering/TetheringTest.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.server.connectivity;
+package com.android.server.connectivity.tethering;
import static android.hardware.usb.UsbManager.USB_CONFIGURED;
import static android.hardware.usb.UsbManager.USB_CONNECTED;
@@ -39,7 +39,9 @@
import static android.provider.Settings.Global.TETHER_ENABLE_LEGACY_DHCP_SERVER;
import static android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID;
+import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import static org.mockito.ArgumentMatchers.argThat;
@@ -70,7 +72,7 @@
import android.net.INetd;
import android.net.INetworkPolicyManager;
import android.net.INetworkStatsService;
-import android.net.ITetheringEventCallback;
+import android.net.ITetherInternalCallback;
import android.net.InterfaceConfiguration;
import android.net.IpPrefix;
import android.net.LinkAddress;
@@ -82,6 +84,8 @@
import android.net.NetworkState;
import android.net.NetworkUtils;
import android.net.RouteInfo;
+import android.net.TetherStatesParcel;
+import android.net.TetheringConfigurationParcel;
import android.net.dhcp.DhcpServerCallbacks;
import android.net.dhcp.DhcpServingParamsParcel;
import android.net.dhcp.IDhcpServer;
@@ -98,6 +102,7 @@
import android.os.Bundle;
import android.os.Handler;
import android.os.INetworkManagementService;
+import android.os.Looper;
import android.os.PersistableBundle;
import android.os.RemoteException;
import android.os.UserHandle;
@@ -109,6 +114,7 @@
import android.telephony.TelephonyManager;
import android.test.mock.MockContentResolver;
+import androidx.annotation.NonNull;
import androidx.test.filters.SmallTest;
import androidx.test.runner.AndroidJUnit4;
@@ -116,11 +122,6 @@
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.IPv6TetheringCoordinator;
-import com.android.server.connectivity.tethering.OffloadHardwareInterface;
-import com.android.server.connectivity.tethering.TetheringConfiguration;
-import com.android.server.connectivity.tethering.TetheringDependencies;
-import com.android.server.connectivity.tethering.UpstreamNetworkMonitor;
import org.junit.After;
import org.junit.Before;
@@ -154,7 +155,6 @@
@Mock private INetworkManagementService mNMService;
@Mock private INetworkStatsService mStatsService;
@Mock private INetworkPolicyManager mPolicyManager;
- @Mock private MockableSystemProperties mSystemProperties;
@Mock private OffloadHardwareInterface mOffloadHardwareInterface;
@Mock private Resources mResources;
@Mock private TelephonyManager mTelephonyManager;
@@ -166,6 +166,7 @@
@Mock private RouterAdvertisementDaemon mRouterAdvertisementDaemon;
@Mock private IDhcpServer mDhcpServer;
@Mock private INetd mNetd;
+ @Mock private UserManager mUserManager;
private final MockIpServerDependencies mIpServerDependencies =
spy(new MockIpServerDependencies());
@@ -184,28 +185,37 @@
private Tethering mTethering;
private PhoneStateListener mPhoneStateListener;
- private class MockContext extends BroadcastInterceptingContext {
- MockContext(Context base) {
+ private class TestContext extends BroadcastInterceptingContext {
+ TestContext(Context base) {
super(base);
}
@Override
- public ApplicationInfo getApplicationInfo() { return mApplicationInfo; }
+ public ApplicationInfo getApplicationInfo() {
+ return mApplicationInfo;
+ }
@Override
- public ContentResolver getContentResolver() { return mContentResolver; }
+ public ContentResolver getContentResolver() {
+ return mContentResolver;
+ }
@Override
- public String getPackageName() { return "TetheringTest"; }
+ public String getPackageName() {
+ return "TetheringTest";
+ }
@Override
- public Resources getResources() { return mResources; }
+ public Resources getResources() {
+ return mResources;
+ }
@Override
public Object getSystemService(String name) {
if (Context.WIFI_SERVICE.equals(name)) return mWifiManager;
if (Context.USB_SERVICE.equals(name)) return mUsbManager;
if (Context.TELEPHONY_SERVICE.equals(name)) return mTelephonyManager;
+ if (Context.USER_SERVICE.equals(name)) return mUserManager;
return super.getSystemService(name);
}
@@ -266,14 +276,14 @@
}
public class MockTetheringDependencies extends TetheringDependencies {
- StateMachine upstreamNetworkMonitorMasterSM;
- ArrayList<IpServer> ipv6CoordinatorNotifyList;
- int isTetheringSupportedCalls;
+ StateMachine mUpstreamNetworkMonitorMasterSM;
+ ArrayList<IpServer> mIpv6CoordinatorNotifyList;
+ int mIsTetheringSupportedCalls;
public void reset() {
- upstreamNetworkMonitorMasterSM = null;
- ipv6CoordinatorNotifyList = null;
- isTetheringSupportedCalls = 0;
+ mUpstreamNetworkMonitorMasterSM = null;
+ mIpv6CoordinatorNotifyList = null;
+ mIsTetheringSupportedCalls = 0;
}
@Override
@@ -284,14 +294,14 @@
@Override
public UpstreamNetworkMonitor getUpstreamNetworkMonitor(Context ctx,
StateMachine target, SharedLog log, int what) {
- upstreamNetworkMonitorMasterSM = target;
+ mUpstreamNetworkMonitorMasterSM = target;
return mUpstreamNetworkMonitor;
}
@Override
public IPv6TetheringCoordinator getIPv6TetheringCoordinator(
ArrayList<IpServer> notifyList, SharedLog log) {
- ipv6CoordinatorNotifyList = notifyList;
+ mIpv6CoordinatorNotifyList = notifyList;
return mIPv6TetheringCoordinator;
}
@@ -302,7 +312,7 @@
@Override
public boolean isTetheringSupported() {
- isTetheringSupportedCalls++;
+ mIsTetheringSupportedCalls++;
return true;
}
@@ -311,6 +321,36 @@
int subId) {
return new MockTetheringConfiguration(ctx, log, subId);
}
+
+ @Override
+ public INetworkManagementService getINetworkManagementService() {
+ return mNMService;
+ }
+
+ @Override
+ public INetworkStatsService getINetworkStatsService() {
+ return mStatsService;
+ }
+
+ @Override
+ public INetworkPolicyManager getINetworkPolicyManager() {
+ return mPolicyManager;
+ }
+
+ @Override
+ public INetd getINetd(Context context) {
+ return mNetd;
+ }
+
+ @Override
+ public Looper getTetheringLooper() {
+ return mLooper.getLooper();
+ }
+
+ @Override
+ public Context getContext() {
+ return mServiceContext;
+ }
}
private static NetworkState buildMobileUpstreamState(boolean withIPv4, boolean withIPv6,
@@ -345,7 +385,7 @@
final NetworkCapabilities capabilities = new NetworkCapabilities()
- .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR);;
+ .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR);
return new NetworkState(info, prop, capabilities, new Network(100), null, "netid");
}
@@ -390,7 +430,7 @@
when(mRouterAdvertisementDaemon.start())
.thenReturn(true);
- mServiceContext = new MockContext(mContext);
+ mServiceContext = new TestContext(mContext);
mContentResolver = new MockContentResolver(mServiceContext);
mContentResolver.addProvider(Settings.AUTHORITY, new FakeSettingsProvider());
Settings.Global.putInt(mContentResolver, TETHER_ENABLE_LEGACY_DHCP_SERVER, 0);
@@ -403,9 +443,9 @@
};
mServiceContext.registerReceiver(mBroadcastReceiver,
new IntentFilter(ACTION_TETHER_STATE_CHANGED));
- mTetheringDependencies.reset();
mTethering = makeTethering();
verify(mNMService).registerTetheringStatsProvider(any(), anyString());
+ verify(mNetd).registerUnsolicitedEventListener(any());
final ArgumentCaptor<PhoneStateListener> phoneListenerCaptor =
ArgumentCaptor.forClass(PhoneStateListener.class);
verify(mTelephonyManager).listen(phoneListenerCaptor.capture(),
@@ -414,9 +454,8 @@
}
private Tethering makeTethering() {
- return new Tethering(mServiceContext, mNMService, mStatsService, mPolicyManager,
- mLooper.getLooper(), mSystemProperties,
- mTetheringDependencies);
+ mTetheringDependencies.reset();
+ return new Tethering(mTetheringDependencies);
}
@After
@@ -507,7 +546,7 @@
// it creates a IpServer and sends out a broadcast indicating that the
// interface is "available".
if (emulateInterfaceStatusChanged) {
- assertEquals(1, mTetheringDependencies.isTetheringSupportedCalls);
+ assertEquals(1, mTetheringDependencies.mIsTetheringSupportedCalls);
verifyTetheringBroadcast(TEST_WLAN_IFNAME, EXTRA_AVAILABLE_TETHER);
verify(mWifiManager).updateInterfaceIpState(
TEST_WLAN_IFNAME, WifiManager.IFACE_IP_MODE_UNSPECIFIED);
@@ -584,7 +623,7 @@
verify(mUpstreamNetworkMonitor, times(1)).startObserveAllNetworks();
// This will be called twice, one is on entering IpServer.STATE_AVAILABLE,
// and another one is on IpServer.STATE_TETHERED/IpServer.STATE_LOCAL_ONLY.
- assertEquals(2, mTetheringDependencies.isTetheringSupportedCalls);
+ assertEquals(2, mTetheringDependencies.mIsTetheringSupportedCalls);
// Emulate externally-visible WifiManager effects, when hotspot mode
// is being torn down.
@@ -617,8 +656,7 @@
argThat(sm -> sm.linkProperties().getInterfaceName().equals(TEST_USB_IFNAME)),
eq(IpServer.STATE_TETHERED));
- for (IpServer ipSrv :
- mTetheringDependencies.ipv6CoordinatorNotifyList) {
+ for (IpServer ipSrv : mTetheringDependencies.mIpv6CoordinatorNotifyList) {
NetworkState ipv6OnlyState = buildMobileUpstreamState(false, true, false);
ipSrv.sendMessage(IpServer.CMD_IPV6_TETHER_UPDATE, 0, 0,
upstreamState.linkProperties.isIpv6Provisioned()
@@ -650,7 +688,7 @@
@Test
public void workingMobileUsbTethering_IPv4LegacyDhcp() {
Settings.Global.putInt(mContentResolver, TETHER_ENABLE_LEGACY_DHCP_SERVER, 1);
- mTethering = makeTethering();
+ sendConfigurationChanged();
final NetworkState upstreamState = buildMobileIPv4UpstreamState();
runUsbTethering(upstreamState);
sendIPv6TetherUpdates(upstreamState);
@@ -719,7 +757,7 @@
.thenReturn(upstreamState);
// Upstream LinkProperties changed: UpstreamNetworkMonitor sends EVENT_ON_LINKPROPERTIES.
- mTetheringDependencies.upstreamNetworkMonitorMasterSM.sendMessage(
+ mTetheringDependencies.mUpstreamNetworkMonitorMasterSM.sendMessage(
Tethering.TetherMasterSM.EVENT_UPSTREAM_CALLBACK,
UpstreamNetworkMonitor.EVENT_ON_LINKPROPERTIES,
0,
@@ -784,7 +822,7 @@
sendWifiApStateChanged(WIFI_AP_STATE_ENABLED);
mLooper.dispatchAll();
- assertEquals(1, mTetheringDependencies.isTetheringSupportedCalls);
+ assertEquals(1, mTetheringDependencies.mIsTetheringSupportedCalls);
verifyTetheringBroadcast(TEST_WLAN_IFNAME, EXTRA_AVAILABLE_TETHER);
verify(mWifiManager).updateInterfaceIpState(
TEST_WLAN_IFNAME, WifiManager.IFACE_IP_MODE_UNSPECIFIED);
@@ -828,7 +866,7 @@
verify(mUpstreamNetworkMonitor, times(1)).registerMobileNetworkRequest();
// This will be called twice, one is on entering IpServer.STATE_AVAILABLE,
// and another one is on IpServer.STATE_TETHERED/IpServer.STATE_LOCAL_ONLY.
- assertEquals(2, mTetheringDependencies.isTetheringSupportedCalls);
+ assertEquals(2, mTetheringDependencies.mIsTetheringSupportedCalls);
/////
// We do not currently emulate any upstream being found.
@@ -901,7 +939,7 @@
TEST_WLAN_IFNAME, WifiManager.IFACE_IP_MODE_TETHERED);
// There are 3 state change event:
// AVAILABLE -> STATE_TETHERED -> STATE_AVAILABLE.
- assertEquals(3, mTetheringDependencies.isTetheringSupportedCalls);
+ assertEquals(3, mTetheringDependencies.mIsTetheringSupportedCalls);
verifyTetheringBroadcast(TEST_WLAN_IFNAME, EXTRA_AVAILABLE_TETHER);
// This is called, but will throw.
verify(mNMService, times(1)).setIpForwardingEnabled(true);
@@ -918,26 +956,26 @@
verifyNoMoreInteractions(mNMService);
}
- private void userRestrictionsListenerBehaviour(
- boolean currentDisallow, boolean nextDisallow, String[] activeTetheringIfacesList,
- int expectedInteractionsWithShowNotification) throws Exception {
- final int userId = 0;
- final Bundle currRestrictions = new Bundle();
+ private void runUserRestrictionsChange(
+ boolean currentDisallow, boolean nextDisallow, String[] activeTetheringIfacesList,
+ int expectedInteractionsWithShowNotification) throws Exception {
final Bundle newRestrictions = new Bundle();
- Tethering tethering = mock(Tethering.class);
- Tethering.TetheringUserRestrictionListener turl =
- new Tethering.TetheringUserRestrictionListener(tethering);
-
- currRestrictions.putBoolean(UserManager.DISALLOW_CONFIG_TETHERING, currentDisallow);
newRestrictions.putBoolean(UserManager.DISALLOW_CONFIG_TETHERING, nextDisallow);
- when(tethering.getTetheredIfaces()).thenReturn(activeTetheringIfacesList);
+ final Tethering mockTethering = mock(Tethering.class);
+ when(mockTethering.getTetheredIfaces()).thenReturn(activeTetheringIfacesList);
+ when(mUserManager.getUserRestrictions()).thenReturn(newRestrictions);
- turl.onUserRestrictionsChanged(userId, newRestrictions, currRestrictions);
+ final Tethering.UserRestrictionActionListener ural =
+ new Tethering.UserRestrictionActionListener(mUserManager, mockTethering);
+ ural.mDisallowTethering = currentDisallow;
- verify(tethering, times(expectedInteractionsWithShowNotification))
+ ural.onUserRestrictionsChanged();
+
+ verify(mockTethering, times(expectedInteractionsWithShowNotification))
.showTetheredNotification(anyInt(), eq(false));
- verify(tethering, times(expectedInteractionsWithShowNotification)).untetherAll();
+ verify(mockTethering, times(expectedInteractionsWithShowNotification))
+ .untetherAll();
}
@Test
@@ -947,7 +985,7 @@
final boolean nextDisallow = true;
final int expectedInteractionsWithShowNotification = 0;
- userRestrictionsListenerBehaviour(currDisallow, nextDisallow, emptyActiveIfacesList,
+ runUserRestrictionsChange(currDisallow, nextDisallow, emptyActiveIfacesList,
expectedInteractionsWithShowNotification);
}
@@ -958,7 +996,7 @@
final boolean nextDisallow = true;
final int expectedInteractionsWithShowNotification = 1;
- userRestrictionsListenerBehaviour(currDisallow, nextDisallow, nonEmptyActiveIfacesList,
+ runUserRestrictionsChange(currDisallow, nextDisallow, nonEmptyActiveIfacesList,
expectedInteractionsWithShowNotification);
}
@@ -969,7 +1007,7 @@
final boolean nextDisallow = false;
final int expectedInteractionsWithShowNotification = 0;
- userRestrictionsListenerBehaviour(currDisallow, nextDisallow, nonEmptyActiveIfacesList,
+ runUserRestrictionsChange(currDisallow, nextDisallow, nonEmptyActiveIfacesList,
expectedInteractionsWithShowNotification);
}
@@ -980,7 +1018,7 @@
final boolean nextDisallow = false;
final int expectedInteractionsWithShowNotification = 0;
- userRestrictionsListenerBehaviour(currDisallow, nextDisallow, nonEmptyActiveIfacesList,
+ runUserRestrictionsChange(currDisallow, nextDisallow, nonEmptyActiveIfacesList,
expectedInteractionsWithShowNotification);
}
@@ -991,27 +1029,59 @@
boolean currDisallow = true;
boolean nextDisallow = true;
- userRestrictionsListenerBehaviour(currDisallow, nextDisallow, nonEmptyActiveIfacesList,
+ runUserRestrictionsChange(currDisallow, nextDisallow, nonEmptyActiveIfacesList,
expectedInteractionsWithShowNotification);
currDisallow = false;
nextDisallow = false;
- userRestrictionsListenerBehaviour(currDisallow, nextDisallow, nonEmptyActiveIfacesList,
+ runUserRestrictionsChange(currDisallow, nextDisallow, nonEmptyActiveIfacesList,
expectedInteractionsWithShowNotification);
}
- private class TestTetheringEventCallback extends ITetheringEventCallback.Stub {
+ private class TestTetherInternalCallback extends ITetherInternalCallback.Stub {
private final ArrayList<Network> mActualUpstreams = new ArrayList<>();
+ private final ArrayList<TetheringConfigurationParcel> mTetheringConfigs =
+ new ArrayList<>();
+ private final ArrayList<TetherStatesParcel> mTetherStates = new ArrayList<>();
+ // This function will remove the recorded callbacks, so it must be called once for
+ // each callback. If this is called after multiple callback, the order matters.
+ // onCallbackCreated counts as the first call to expectUpstreamChanged with
+ // @see onCallbackCreated.
public void expectUpstreamChanged(Network... networks) {
+ if (networks == null) {
+ assertNoUpstreamChangeCallback();
+ return;
+ }
+
final ArrayList<Network> expectedUpstreams =
new ArrayList<Network>(Arrays.asList(networks));
for (Network upstream : expectedUpstreams) {
// throws OOB if no expectations
assertEquals(mActualUpstreams.remove(0), upstream);
}
- assertNoCallback();
+ assertNoUpstreamChangeCallback();
+ }
+
+ // This function will remove the recorded callbacks, so it must be called once
+ // for each callback. If this is called after multiple callback, the order matters.
+ // onCallbackCreated counts as the first call to onConfigurationChanged with
+ // @see onCallbackCreated.
+ public void expectConfigurationChanged(TetheringConfigurationParcel... tetherConfigs) {
+ final ArrayList<TetheringConfigurationParcel> expectedTetherConfig =
+ new ArrayList<TetheringConfigurationParcel>(Arrays.asList(tetherConfigs));
+ for (TetheringConfigurationParcel config : expectedTetherConfig) {
+ // throws OOB if no expectations
+ final TetheringConfigurationParcel actualConfig = mTetheringConfigs.remove(0);
+ assertTetherConfigParcelEqual(actualConfig, config);
+ }
+ assertNoConfigChangeCallback();
+ }
+
+ public TetherStatesParcel pollTetherStatesChanged() {
+ assertStateChangeCallback();
+ return mTetherStates.remove(0);
}
@Override
@@ -1019,48 +1089,93 @@
mActualUpstreams.add(network);
}
- public void assertNoCallback() {
+ @Override
+ public void onConfigurationChanged(TetheringConfigurationParcel config) {
+ mTetheringConfigs.add(config);
+ }
+
+ @Override
+ public void onTetherStatesChanged(TetherStatesParcel states) {
+ mTetherStates.add(states);
+ }
+
+ @Override
+ public void onCallbackCreated(Network network, TetheringConfigurationParcel config,
+ TetherStatesParcel states) {
+ mActualUpstreams.add(network);
+ mTetheringConfigs.add(config);
+ mTetherStates.add(states);
+ }
+
+ public void assertNoUpstreamChangeCallback() {
assertTrue(mActualUpstreams.isEmpty());
}
+
+ public void assertNoConfigChangeCallback() {
+ assertTrue(mTetheringConfigs.isEmpty());
+ }
+
+ public void assertStateChangeCallback() {
+ assertFalse(mTetherStates.isEmpty());
+ }
+
+ private void assertTetherConfigParcelEqual(@NonNull TetheringConfigurationParcel actual,
+ @NonNull TetheringConfigurationParcel expect) {
+ assertEquals(actual.subId, expect.subId);
+ assertArrayEquals(actual.tetherableUsbRegexs, expect.tetherableUsbRegexs);
+ assertArrayEquals(actual.tetherableWifiRegexs, expect.tetherableWifiRegexs);
+ assertArrayEquals(actual.tetherableBluetoothRegexs, expect.tetherableBluetoothRegexs);
+ assertEquals(actual.isDunRequired, expect.isDunRequired);
+ assertEquals(actual.chooseUpstreamAutomatically, expect.chooseUpstreamAutomatically);
+ assertArrayEquals(actual.preferredUpstreamIfaceTypes,
+ expect.preferredUpstreamIfaceTypes);
+ assertArrayEquals(actual.legacyDhcpRanges, expect.legacyDhcpRanges);
+ assertArrayEquals(actual.defaultIPv4DNS, expect.defaultIPv4DNS);
+ assertEquals(actual.enableLegacyDhcpServer, expect.enableLegacyDhcpServer);
+ assertArrayEquals(actual.provisioningApp, expect.provisioningApp);
+ assertEquals(actual.provisioningAppNoUi, expect.provisioningAppNoUi);
+ assertEquals(actual.provisioningCheckPeriod, expect.provisioningCheckPeriod);
+ }
}
@Test
- public void testRegisterTetheringEventCallback() throws Exception {
- TestTetheringEventCallback callback1 = new TestTetheringEventCallback();
- TestTetheringEventCallback callback2 = new TestTetheringEventCallback();
+ public void testRegisterTetherInternalCallback() throws Exception {
+ TestTetherInternalCallback callback = new TestTetherInternalCallback();
- // 1. Register one callback and run usb tethering.
- mTethering.registerTetheringEventCallback(callback1);
+ // 1. Register one callback before running any tethering.
+ mTethering.registerTetherInternalCallback(callback);
mLooper.dispatchAll();
- callback1.expectUpstreamChanged(new Network[] {null});
+ callback.expectUpstreamChanged(new Network[] {null});
+ callback.expectConfigurationChanged(
+ mTethering.getTetheringConfiguration().toStableParcelable());
+ TetherStatesParcel tetherState = callback.pollTetherStatesChanged();
+ assertEquals(tetherState, null);
+ // 2. Enable wifi tethering
NetworkState upstreamState = buildMobileDualStackUpstreamState();
- runUsbTethering(upstreamState);
- callback1.expectUpstreamChanged(upstreamState.network);
- // 2. Register second callback.
- mTethering.registerTetheringEventCallback(callback2);
- mLooper.dispatchAll();
- callback2.expectUpstreamChanged(upstreamState.network);
- // 3. Disable usb tethering.
- mTethering.stopTethering(TETHERING_USB);
- mLooper.dispatchAll();
- sendUsbBroadcast(false, false, false);
- mLooper.dispatchAll();
- callback1.expectUpstreamChanged(new Network[] {null});
- callback2.expectUpstreamChanged(new Network[] {null});
- // 4. Unregister first callback and run hotspot.
- mTethering.unregisterTetheringEventCallback(callback1);
- mLooper.dispatchAll();
when(mUpstreamNetworkMonitor.getCurrentPreferredUpstream()).thenReturn(upstreamState);
when(mUpstreamNetworkMonitor.selectPreferredUpstreamType(any()))
.thenReturn(upstreamState);
when(mWifiManager.startSoftAp(any(WifiConfiguration.class))).thenReturn(true);
- mTethering.startTethering(TETHERING_WIFI, null, false);
- mLooper.dispatchAll();
mTethering.interfaceStatusChanged(TEST_WLAN_IFNAME, true);
+ mLooper.dispatchAll();
+ tetherState = callback.pollTetherStatesChanged();
+ assertArrayEquals(tetherState.availableList, new String[] {TEST_WLAN_IFNAME});
+
+ mTethering.startTethering(TETHERING_WIFI, null, false);
sendWifiApStateChanged(WIFI_AP_STATE_ENABLED, TEST_WLAN_IFNAME, IFACE_IP_MODE_TETHERED);
mLooper.dispatchAll();
- callback1.assertNoCallback();
- callback2.expectUpstreamChanged(upstreamState.network);
+ tetherState = callback.pollTetherStatesChanged();
+ assertArrayEquals(tetherState.tetheredList, new String[] {TEST_WLAN_IFNAME});
+ callback.expectUpstreamChanged(upstreamState.network);
+
+ // 3. Disable wifi tethering.
+ mTethering.stopTethering(TETHERING_WIFI);
+ sendWifiApStateChanged(WifiManager.WIFI_AP_STATE_DISABLED);
+ mLooper.dispatchAll();
+ tetherState = callback.pollTetherStatesChanged();
+ assertArrayEquals(tetherState.availableList, new String[] {TEST_WLAN_IFNAME});
+ mLooper.dispatchAll();
+ callback.expectUpstreamChanged(new Network[] {null});
}
@Test
@@ -1091,7 +1206,7 @@
verify(mUpstreamNetworkMonitor, times(1)).startObserveAllNetworks();
// This will be called twice, one is on entering IpServer.STATE_AVAILABLE,
// and another one is on IpServer.STATE_TETHERED/IpServer.STATE_LOCAL_ONLY.
- assertEquals(2, mTetheringDependencies.isTetheringSupportedCalls);
+ assertEquals(2, mTetheringDependencies.mIsTetheringSupportedCalls);
assertEquals(TETHER_ERROR_NO_ERROR, mTethering.getLastTetherError(TEST_P2P_IFNAME));
diff --git a/packages/VpnDialogs/AndroidManifest.xml b/packages/VpnDialogs/AndroidManifest.xml
index 469bdc69..e4de625 100644
--- a/packages/VpnDialogs/AndroidManifest.xml
+++ b/packages/VpnDialogs/AndroidManifest.xml
@@ -21,7 +21,6 @@
<uses-permission android:name="android.permission.CONTROL_VPN" />
<uses-permission android:name="android.permission.CONTROL_ALWAYS_ON_VPN" />
- <uses-permission android:name="android.permission.CONNECTIVITY_INTERNAL" />
<uses-permission android:name="android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS"/>
<application android:label="VpnDialogs"
diff --git a/packages/WallpaperBackup/src/com/android/wallpaperbackup/WallpaperBackupAgent.java b/packages/WallpaperBackup/src/com/android/wallpaperbackup/WallpaperBackupAgent.java
index 1c2c640..8a4a1c6 100644
--- a/packages/WallpaperBackup/src/com/android/wallpaperbackup/WallpaperBackupAgent.java
+++ b/packages/WallpaperBackup/src/com/android/wallpaperbackup/WallpaperBackupAgent.java
@@ -153,6 +153,7 @@
Slog.v(TAG, "lockGen=" + lockGeneration + " : lockChanged=" + lockChanged);
Slog.v(TAG, "sysEligble=" + sysEligible);
Slog.v(TAG, "lockEligible=" + lockEligible);
+ Slog.v(TAG, "hasLockWallpaper=" + hasLockWallpaper);
}
// only back up the wallpapers if we've been told they're eligible
@@ -174,6 +175,17 @@
prefs.edit().putInt(SYSTEM_GENERATION, sysGeneration).apply();
}
+ // If there's no lock wallpaper, then we have nothing to add to the backup.
+ if (lockGeneration == -1) {
+ if (lockChanged && lockImageStage.exists()) {
+ if (DEBUG) Slog.v(TAG, "Removed lock wallpaper; deleting");
+ lockImageStage.delete();
+ }
+ if (DEBUG) Slog.v(TAG, "No lock paper set, add nothing to backup");
+ prefs.edit().putInt(LOCK_GENERATION, lockGeneration).apply();
+ return;
+ }
+
// Don't try to store the lock image if we overran our quota last time
if (lockEligible && hasLockWallpaper && mLockWallpaperFile.exists() && !mQuotaExceeded) {
if (lockChanged || !lockImageStage.exists()) {
diff --git a/packages/WallpaperBackup/test/src/com/android/wallpaperbackup/tests/WallpaperBackupAgentTest.java b/packages/WallpaperBackup/test/src/com/android/wallpaperbackup/tests/WallpaperBackupAgentTest.java
index 46a7dfe..255fdef 100644
--- a/packages/WallpaperBackup/test/src/com/android/wallpaperbackup/tests/WallpaperBackupAgentTest.java
+++ b/packages/WallpaperBackup/test/src/com/android/wallpaperbackup/tests/WallpaperBackupAgentTest.java
@@ -19,8 +19,13 @@
import static android.app.WallpaperManager.FLAG_LOCK;
import static android.app.WallpaperManager.FLAG_SYSTEM;
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.inOrder;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -40,6 +45,7 @@
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
import org.junit.runner.RunWith;
+import org.mockito.InOrder;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
@@ -53,78 +59,109 @@
private static final String SYSTEM_GENERATION = "system_gen";
private static final String LOCK_GENERATION = "lock_gen";
+ private static final int TEST_SYSTEM_WALLPAPER_ID = 1;
+ private static final int TEST_LOCK_WALLPAPER_ID = 2;
+
@Mock private FullBackupDataOutput mOutput;
@Mock private WallpaperManager mWallpaperManager;
@Mock private SharedPreferences mSharedPreferences;
+ @Mock private SharedPreferences.Editor mSharedPreferenceEditor;
@Rule public TemporaryFolder mTemporaryFolder = new TemporaryFolder();
private ContextWithServiceOverrides mContext;
+ private IsolatedWallpaperBackupAgent mWallpaperBackupAgent;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
+ when(mSharedPreferences.edit()).thenReturn(mSharedPreferenceEditor);
+ when(mSharedPreferenceEditor.putInt(anyString(), anyInt()))
+ .thenReturn(mSharedPreferenceEditor);
+ doNothing().when(mSharedPreferenceEditor).apply();
+
mContext = new ContextWithServiceOverrides(ApplicationProvider.getApplicationContext());
mContext.injectSystemService(WallpaperManager.class, mWallpaperManager);
mContext.setSharedPreferencesOverride(mSharedPreferences);
+
+ mWallpaperBackupAgent = new IsolatedWallpaperBackupAgent(mTemporaryFolder.getRoot());
+ mWallpaperBackupAgent.attach(mContext);
+ mWallpaperBackupAgent.onCreate();
}
@Test
public void testOnFullBackup_withNoChanges_onlyBacksUpEmptyFile() throws IOException {
- WallpaperBackupAgent wallpaperBackupAgent = new WallpaperBackupAgent();
- initialiseAgent(wallpaperBackupAgent);
+ mockBackedUpState();
+ mockCurrentWallpapers(TEST_SYSTEM_WALLPAPER_ID, TEST_LOCK_WALLPAPER_ID);
- when(mWallpaperManager.getWallpaperIdForUser(eq(FLAG_SYSTEM), eq(UserHandle.USER_SYSTEM)))
- .thenReturn(1);
- when(mWallpaperManager.getWallpaperIdForUser(eq(FLAG_LOCK), eq(UserHandle.USER_SYSTEM)))
- .thenReturn(1);
- when(mSharedPreferences.getInt(eq(SYSTEM_GENERATION), eq(-1))).thenReturn(1);
- when(mSharedPreferences.getInt(eq(LOCK_GENERATION), eq(-1))).thenReturn(1);
+ mWallpaperBackupAgent.onFullBackup(mOutput);
- wallpaperBackupAgent.onFullBackup(mOutput);
-
- verify(mOutput); // Backup of empty file only
+ assertThat(mWallpaperBackupAgent.mBackedUpFiles.size()).isEqualTo(1);
+ assertThat(mWallpaperBackupAgent.mBackedUpFiles.get(0).getName()).isEqualTo("empty");
}
@Test
public void testOnFullBackup_withOnlyChangedSystem_updatesTheSharedPreferences()
throws IOException {
- // Create a system wallpaper file
- mTemporaryFolder.newFile("wallpaper_orig");
- // Create stageing file to simulate he wallpaper being ready to back up
- new File(mContext.getFilesDir(), "wallpaper-stage").createNewFile();
+ mockSystemWallpaperReadyToBackUp();
+ mockUnbackedUpState();
+ mockCurrentWallpapers(TEST_SYSTEM_WALLPAPER_ID, TEST_LOCK_WALLPAPER_ID);
- WallpaperBackupAgent wallpaperBackupAgent =
- new IsolatedWallpaperBackupAgent(mTemporaryFolder.getRoot());
- initialiseAgent(wallpaperBackupAgent);
+ mWallpaperBackupAgent.onFullBackup(mOutput);
- SharedPreferences.Editor preferenceEditor = mock(SharedPreferences.Editor.class);
+ verify(mSharedPreferenceEditor).putInt(eq(SYSTEM_GENERATION), eq(TEST_SYSTEM_WALLPAPER_ID));
+ }
+ @Test
+ public void testOnFullBackup_withLockChangedToMatchSystem_updatesTheSharedPreferences()
+ throws IOException {
+ mockBackedUpState();
+ mockSystemWallpaperReadyToBackUp();
+ mockCurrentWallpapers(TEST_SYSTEM_WALLPAPER_ID, -1);
+
+ mWallpaperBackupAgent.onFullBackup(mOutput);
+
+ InOrder inOrder = inOrder(mSharedPreferenceEditor);
+ inOrder.verify(mSharedPreferenceEditor)
+ .putInt(eq(SYSTEM_GENERATION), eq(TEST_SYSTEM_WALLPAPER_ID));
+ inOrder.verify(mSharedPreferenceEditor).apply();
+ inOrder.verify(mSharedPreferenceEditor).putInt(eq(LOCK_GENERATION), eq(-1));
+ inOrder.verify(mSharedPreferenceEditor).apply();
+ }
+
+ private void mockUnbackedUpState() {
+ mockCurrentWallpapers(TEST_SYSTEM_WALLPAPER_ID, TEST_LOCK_WALLPAPER_ID);
+ when(mSharedPreferences.getInt(eq(SYSTEM_GENERATION), eq(-1))).thenReturn(-1);
+ when(mSharedPreferences.getInt(eq(LOCK_GENERATION), eq(-1))).thenReturn(-1);
+ }
+
+ private void mockBackedUpState() {
+ when(mSharedPreferences.getInt(eq(SYSTEM_GENERATION), eq(-1)))
+ .thenReturn(TEST_SYSTEM_WALLPAPER_ID);
+ when(mSharedPreferences.getInt(eq(LOCK_GENERATION), eq(-1)))
+ .thenReturn(TEST_LOCK_WALLPAPER_ID);
+ }
+
+ private void mockCurrentWallpapers(int systemWallpaperId, int lockWallpaperId) {
when(mWallpaperManager.getWallpaperIdForUser(eq(FLAG_SYSTEM), eq(UserHandle.USER_SYSTEM)))
- .thenReturn(2);
+ .thenReturn(systemWallpaperId);
when(mWallpaperManager.getWallpaperIdForUser(eq(FLAG_LOCK), eq(UserHandle.USER_SYSTEM)))
- .thenReturn(1);
+ .thenReturn(lockWallpaperId);
when(mWallpaperManager.isWallpaperBackupEligible(eq(FLAG_SYSTEM))).thenReturn(true);
when(mWallpaperManager.isWallpaperBackupEligible(eq(FLAG_LOCK))).thenReturn(true);
- when(mSharedPreferences.getInt(eq(SYSTEM_GENERATION), eq(-1))).thenReturn(1);
- when(mSharedPreferences.getInt(eq(LOCK_GENERATION), eq(-1))).thenReturn(1);
- when(mSharedPreferences.edit()).thenReturn(preferenceEditor);
- when(preferenceEditor.putInt(eq(SYSTEM_GENERATION), eq(2))).thenReturn(preferenceEditor);
-
- wallpaperBackupAgent.onFullBackup(mOutput);
-
- verify(preferenceEditor).putInt(eq(SYSTEM_GENERATION), eq(2));
}
- private void initialiseAgent(WallpaperBackupAgent agent) {
- agent.attach(mContext);
- agent.onCreate();
+ private void mockSystemWallpaperReadyToBackUp() throws IOException {
+ // Create a system wallpaper file
+ mTemporaryFolder.newFile("wallpaper_orig");
+ // Create staging file to simulate he wallpaper being ready to back up
+ new File(mContext.getFilesDir(), "wallpaper-stage").createNewFile();
}
- private static class IsolatedWallpaperBackupAgent extends WallpaperBackupAgent {
+ private class IsolatedWallpaperBackupAgent extends WallpaperBackupAgent {
File mWallpaperBaseDirectory;
- List<File> mBackedUpFiles = new ArrayList();
+ List<File> mBackedUpFiles = new ArrayList<>();
IsolatedWallpaperBackupAgent(File wallpaperBaseDirectory) {
mWallpaperBaseDirectory = wallpaperBaseDirectory;
@@ -139,5 +176,10 @@
protected void backupFile(File file, FullBackupDataOutput data) {
mBackedUpFiles.add(file);
}
+
+ @Override
+ public SharedPreferences getSharedPreferences(File file, int mode) {
+ return mSharedPreferences;
+ }
}
}
diff --git a/services/Android.bp b/services/Android.bp
index 35dc44e..3b56607 100644
--- a/services/Android.bp
+++ b/services/Android.bp
@@ -28,7 +28,6 @@
":services.usage-sources",
":services.usb-sources",
":services.voiceinteraction-sources",
- ":services.wifi-sources",
],
visibility: ["//visibility:private"],
}
@@ -68,7 +67,6 @@
"services.usage",
"services.usb",
"services.voiceinteraction",
- "services.wifi",
"android.hidl.base-V1.0-java",
],
@@ -98,3 +96,8 @@
name: "services-platform-compat-config",
src: ":services",
}
+
+filegroup {
+ name: "art-profile",
+ srcs: ["art-profile"],
+}
diff --git a/services/accessibility/TEST_MAPPING b/services/accessibility/TEST_MAPPING
index d90c3bd..2b8fee3 100644
--- a/services/accessibility/TEST_MAPPING
+++ b/services/accessibility/TEST_MAPPING
@@ -69,6 +69,9 @@
],
"postsubmit": [
{
+ "name": "CtsAccessibilityServiceSdk29TestCases"
+ },
+ {
"name": "CtsAccessibilityServiceTestCases"
},
{
diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityWindowManager.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityWindowManager.java
index cb858ac..339fc96 100644
--- a/services/accessibility/java/com/android/server/accessibility/AccessibilityWindowManager.java
+++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityWindowManager.java
@@ -1217,8 +1217,8 @@
if (mAccessibilityFocusedWindowId != windowId) {
clearAccessibilityFocusLocked(mAccessibilityFocusedWindowId);
setAccessibilityFocusedWindowLocked(windowId);
- mAccessibilityFocusNodeId = nodeId;
}
+ mAccessibilityFocusNodeId = nodeId;
}
} break;
diff --git a/services/autofill/java/com/android/server/autofill/ui/FillUi.java b/services/autofill/java/com/android/server/autofill/ui/FillUi.java
index 70fb535..5796142 100644
--- a/services/autofill/java/com/android/server/autofill/ui/FillUi.java
+++ b/services/autofill/java/com/android/server/autofill/ui/FillUi.java
@@ -383,7 +383,7 @@
}
child.setOnClickListener((v) -> {
if (sVerbose) {
- Slog.v(TAG, "Applying " + id + " after " + v + " was clicked");
+ Slog.v(TAG, " Cancelling session after " + v + " clicked");
}
mCallback.cancelSession();
});
diff --git a/services/autofill/java/com/android/server/autofill/ui/SaveUi.java b/services/autofill/java/com/android/server/autofill/ui/SaveUi.java
index d7114a0..8eea047 100644
--- a/services/autofill/java/com/android/server/autofill/ui/SaveUi.java
+++ b/services/autofill/java/com/android/server/autofill/ui/SaveUi.java
@@ -291,10 +291,17 @@
}
final TextView noButton = view.findViewById(R.id.autofill_save_no);
- if (info.getNegativeActionStyle() == SaveInfo.NEGATIVE_BUTTON_STYLE_REJECT) {
- noButton.setText(R.string.save_password_notnow);
- } else {
- noButton.setText(R.string.autofill_save_no);
+ final int negativeActionStyle = info.getNegativeActionStyle();
+ switch (negativeActionStyle) {
+ case SaveInfo.NEGATIVE_BUTTON_STYLE_REJECT:
+ noButton.setText(R.string.autofill_save_notnow);
+ break;
+ case SaveInfo.NEGATIVE_BUTTON_STYLE_NEVER:
+ noButton.setText(R.string.autofill_save_never);
+ break;
+ case SaveInfo.NEGATIVE_BUTTON_STYLE_CANCEL:
+ default:
+ noButton.setText(R.string.autofill_save_no);
}
noButton.setOnClickListener((v) -> mListener.onCancel(info.getNegativeActionListener()));
diff --git a/services/backup/java/com/android/server/backup/BackupManagerService.java b/services/backup/java/com/android/server/backup/BackupManagerService.java
index 222a6f2..e8c5299 100644
--- a/services/backup/java/com/android/server/backup/BackupManagerService.java
+++ b/services/backup/java/com/android/server/backup/BackupManagerService.java
@@ -67,6 +67,7 @@
import java.io.FileDescriptor;
import java.io.IOException;
import java.io.PrintWriter;
+import java.util.List;
import java.util.Set;
/**
@@ -1510,6 +1511,26 @@
}
/**
+ * Excludes keys from KV restore for a given package. The corresponding data will be excluded
+ * from the data set available the backup agent during restore. However, final list of keys
+ * that have been excluded will be passed to the agent to make it aware of the exclusions.
+ */
+ public void excludeKeysFromRestore(String packageName, List<String> keys) {
+ int userId = Binder.getCallingUserHandle().getIdentifier();
+ if (!isUserReadyForBackup(userId)) {
+ Slog.w(TAG, "Returning from excludeKeysFromRestore as backup for user" + userId +
+ " is not initialized yet");
+ return;
+ }
+ UserBackupManagerService userBackupManagerService =
+ getServiceForUserIfCallerHasPermission(userId, "excludeKeysFromRestore()");
+
+ if (userBackupManagerService != null) {
+ userBackupManagerService.excludeKeysFromRestore(packageName, keys);
+ }
+ }
+
+ /**
* Returns the {@link UserBackupManagerService} instance for the specified user {@code userId}.
* If the user is not registered with the service (either the user is locked or not eligible for
* the backup service) then return {@code null}.
diff --git a/services/backup/java/com/android/server/backup/DataChangedJournal.java b/services/backup/java/com/android/server/backup/DataChangedJournal.java
index 498185c..e75eb73 100644
--- a/services/backup/java/com/android/server/backup/DataChangedJournal.java
+++ b/services/backup/java/com/android/server/backup/DataChangedJournal.java
@@ -17,6 +17,7 @@
package com.android.server.backup;
import android.annotation.Nullable;
+import android.util.Slog;
import java.io.BufferedInputStream;
import java.io.DataInputStream;
@@ -36,6 +37,7 @@
* reboot.
*/
public class DataChangedJournal {
+ private static final String TAG = "DataChangedJournal";
private static final String FILE_NAME_PREFIX = "journal";
/**
@@ -139,7 +141,12 @@
*/
static ArrayList<DataChangedJournal> listJournals(File journalDirectory) {
ArrayList<DataChangedJournal> journals = new ArrayList<>();
- for (File file : journalDirectory.listFiles()) {
+ File[] journalFiles = journalDirectory.listFiles();
+ if (journalFiles == null) {
+ Slog.w(TAG, "Failed to read journal files");
+ return journals;
+ }
+ for (File file : journalFiles) {
journals.add(new DataChangedJournal(file));
}
return journals;
diff --git a/services/backup/java/com/android/server/backup/UserBackupManagerService.java b/services/backup/java/com/android/server/backup/UserBackupManagerService.java
index 77888db..56b345b 100644
--- a/services/backup/java/com/android/server/backup/UserBackupManagerService.java
+++ b/services/backup/java/com/android/server/backup/UserBackupManagerService.java
@@ -158,6 +158,7 @@
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
+import java.util.Map;
import java.util.Queue;
import java.util.Random;
import java.util.Set;
@@ -332,6 +333,8 @@
// locking around the pending-backup management
private final Object mQueueLock = new Object();
+ private final UserBackupPreferences mBackupPreferences;
+
// The thread performing the sequence of queued backups binds to each app's agent
// in succession. Bind notifications are asynchronously delivered through the
// Activity Manager; use this lock object to signal when a requested binding has
@@ -632,6 +635,8 @@
// the pending backup set
mBackupHandler.postDelayed(this::parseLeftoverJournals, INITIALIZATION_DELAY_MILLIS);
+ mBackupPreferences = new UserBackupPreferences(mContext, mBaseStateDir);
+
// Power management
mWakelock = new BackupWakeLock(
mPowerManager.newWakeLock(
@@ -1097,6 +1102,14 @@
}
}
+ public Map<String, Set<String>> getExcludedRestoreKeys(String... packages) {
+ return mBackupPreferences.getExcludedRestoreKeysForPackages(packages);
+ }
+
+ public Map<String, Set<String>> getAllExcludedRestoreKeys() {
+ return mBackupPreferences.getAllExcludedRestoreKeys();
+ }
+
/** Used for generating random salts or passwords. */
public byte[] randomBytes(int bits) {
byte[] array = new byte[bits / 8];
@@ -2746,6 +2759,14 @@
}
}
+ /**
+ * Excludes keys from KV restore for a given package. The keys won't be part of the data passed
+ * to the backup agent during restore.
+ */
+ public void excludeKeysFromRestore(String packageName, List<String> keys) {
+ mBackupPreferences.addExcludedKeys(packageName, keys);
+ }
+
private boolean startConfirmationUi(int token, String action) {
try {
Intent confIntent = new Intent(action);
@@ -3341,7 +3362,8 @@
restoreSet,
packageName,
token,
- listener);
+ listener,
+ getExcludedRestoreKeys(packageName));
mBackupHandler.sendMessage(msg);
} catch (Exception e) {
// Calling into the transport broke; back off and proceed with the installation.
diff --git a/services/backup/java/com/android/server/backup/UserBackupPreferences.java b/services/backup/java/com/android/server/backup/UserBackupPreferences.java
new file mode 100644
index 0000000..41b9719
--- /dev/null
+++ b/services/backup/java/com/android/server/backup/UserBackupPreferences.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2019 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.backup;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+
+import java.io.File;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/** Manages the persisted backup preferences per user. */
+public class UserBackupPreferences {
+ private static final String PREFERENCES_FILE = "backup_preferences";
+
+ private final SharedPreferences mPreferences;
+ private final SharedPreferences.Editor mEditor;
+
+ UserBackupPreferences(Context conext, File storageDir) {
+ File excludedKeysFile = new File(storageDir, PREFERENCES_FILE);
+ mPreferences = conext.getSharedPreferences(excludedKeysFile, Context.MODE_PRIVATE);
+ mEditor = mPreferences.edit();
+ }
+
+ void addExcludedKeys(String packageName, List<String> keys) {
+ Set<String> existingKeys =
+ new HashSet<>(mPreferences.getStringSet(packageName, Collections.emptySet()));
+ existingKeys.addAll(keys);
+ mEditor.putStringSet(packageName, existingKeys);
+ mEditor.commit();
+ }
+
+ Map<String, Set<String>> getExcludedRestoreKeysForPackages(String... packages) {
+ Map<String, Set<String>> excludedKeys = new HashMap<>();
+ for (String packageName : packages) {
+ excludedKeys.put(packageName,
+ mPreferences.getStringSet(packageName, Collections.emptySet()));
+ }
+ return excludedKeys;
+ }
+
+ Map<String, Set<String>> getAllExcludedRestoreKeys() {
+ return (Map<String, Set<String>>) mPreferences.getAll();
+ }
+}
diff --git a/services/backup/java/com/android/server/backup/internal/BackupHandler.java b/services/backup/java/com/android/server/backup/internal/BackupHandler.java
index 059b1b9..8c48b84 100644
--- a/services/backup/java/com/android/server/backup/internal/BackupHandler.java
+++ b/services/backup/java/com/android/server/backup/internal/BackupHandler.java
@@ -279,7 +279,8 @@
params.pmToken,
params.isSystemRestore,
params.filterSet,
- params.listener);
+ params.listener,
+ params.excludedKeys);
synchronized (backupManagerService.getPendingRestores()) {
if (backupManagerService.isRestoreInProgress()) {
diff --git a/services/backup/java/com/android/server/backup/params/RestoreParams.java b/services/backup/java/com/android/server/backup/params/RestoreParams.java
index c9a6b60..09b7e35 100644
--- a/services/backup/java/com/android/server/backup/params/RestoreParams.java
+++ b/services/backup/java/com/android/server/backup/params/RestoreParams.java
@@ -24,6 +24,9 @@
import com.android.server.backup.internal.OnTaskFinishedListener;
import com.android.server.backup.transport.TransportClient;
+import java.util.Map;
+import java.util.Set;
+
public class RestoreParams {
public final TransportClient transportClient;
public final IRestoreObserver observer;
@@ -34,6 +37,7 @@
public final boolean isSystemRestore;
@Nullable public final String[] filterSet;
public final OnTaskFinishedListener listener;
+ public final Map<String, Set<String>> excludedKeys;
/**
* No kill after restore.
@@ -44,7 +48,8 @@
IBackupManagerMonitor monitor,
long token,
PackageInfo packageInfo,
- OnTaskFinishedListener listener) {
+ OnTaskFinishedListener listener,
+ Map<String, Set<String>> excludedKeys) {
return new RestoreParams(
transportClient,
observer,
@@ -54,7 +59,8 @@
/* pmToken */ 0,
/* isSystemRestore */ false,
/* filterSet */ null,
- listener);
+ listener,
+ excludedKeys);
}
/**
@@ -67,7 +73,8 @@
long token,
String packageName,
int pmToken,
- OnTaskFinishedListener listener) {
+ OnTaskFinishedListener listener,
+ Map<String, Set<String>> excludedKeys) {
String[] filterSet = {packageName};
return new RestoreParams(
transportClient,
@@ -78,7 +85,8 @@
pmToken,
/* isSystemRestore */ false,
filterSet,
- listener);
+ listener,
+ excludedKeys);
}
/**
@@ -89,7 +97,8 @@
IRestoreObserver observer,
IBackupManagerMonitor monitor,
long token,
- OnTaskFinishedListener listener) {
+ OnTaskFinishedListener listener,
+ Map<String, Set<String>> excludedKeys) {
return new RestoreParams(
transportClient,
observer,
@@ -99,7 +108,8 @@
/* pmToken */ 0,
/* isSystemRestore */ true,
/* filterSet */ null,
- listener);
+ listener,
+ excludedKeys);
}
/**
@@ -112,7 +122,8 @@
long token,
String[] filterSet,
boolean isSystemRestore,
- OnTaskFinishedListener listener) {
+ OnTaskFinishedListener listener,
+ Map<String, Set<String>> excludedKeys) {
return new RestoreParams(
transportClient,
observer,
@@ -122,7 +133,8 @@
/* pmToken */ 0,
isSystemRestore,
filterSet,
- listener);
+ listener,
+ excludedKeys);
}
private RestoreParams(
@@ -134,7 +146,8 @@
int pmToken,
boolean isSystemRestore,
@Nullable String[] filterSet,
- OnTaskFinishedListener listener) {
+ OnTaskFinishedListener listener,
+ Map<String, Set<String>> excludedKeys) {
this.transportClient = transportClient;
this.observer = observer;
this.monitor = monitor;
@@ -144,5 +157,6 @@
this.isSystemRestore = isSystemRestore;
this.filterSet = filterSet;
this.listener = listener;
+ this.excludedKeys = excludedKeys;
}
}
diff --git a/services/backup/java/com/android/server/backup/restore/ActiveRestoreSession.java b/services/backup/java/com/android/server/backup/restore/ActiveRestoreSession.java
index 5a57cdc..c0f76c3 100644
--- a/services/backup/java/com/android/server/backup/restore/ActiveRestoreSession.java
+++ b/services/backup/java/com/android/server/backup/restore/ActiveRestoreSession.java
@@ -178,7 +178,8 @@
observer,
monitor,
token,
- listener),
+ listener,
+ mBackupManagerService.getAllExcludedRestoreKeys()),
"RestoreSession.restoreAll()");
} finally {
Binder.restoreCallingIdentity(oldId);
@@ -271,7 +272,8 @@
token,
packages,
/* isSystemRestore */ packages.length > 1,
- listener),
+ listener,
+ mBackupManagerService.getExcludedRestoreKeys(packages)),
"RestoreSession.restorePackages(" + packages.length + " packages)");
} finally {
Binder.restoreCallingIdentity(oldId);
@@ -363,7 +365,8 @@
monitor,
token,
app,
- listener),
+ listener,
+ mBackupManagerService.getExcludedRestoreKeys(app.packageName)),
"RestoreSession.restorePackage(" + packageName + ")");
} finally {
Binder.restoreCallingIdentity(oldId);
diff --git a/services/backup/java/com/android/server/backup/restore/PerformUnifiedRestoreTask.java b/services/backup/java/com/android/server/backup/restore/PerformUnifiedRestoreTask.java
index 675a6eb..be597d7 100644
--- a/services/backup/java/com/android/server/backup/restore/PerformUnifiedRestoreTask.java
+++ b/services/backup/java/com/android/server/backup/restore/PerformUnifiedRestoreTask.java
@@ -52,6 +52,7 @@
import android.util.EventLog;
import android.util.Slog;
+import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.backup.IBackupTransport;
import com.android.internal.util.Preconditions;
import com.android.server.AppWidgetBackupBridge;
@@ -77,6 +78,8 @@
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
+import java.util.Set;
public class PerformUnifiedRestoreTask implements BackupRestoreTask {
@@ -151,6 +154,8 @@
// When finished call listener
private final OnTaskFinishedListener mListener;
+ private final Map<String, Set<String>> mExcludedKeys;
+
// Key/value: bookkeeping about staged data and files for agent access
private File mBackupDataName;
private File mStageName;
@@ -161,6 +166,17 @@
private final int mEphemeralOpToken;
private final BackupAgentTimeoutParameters mAgentTimeoutParameters;
+ @VisibleForTesting
+ PerformUnifiedRestoreTask(Map<String, Set<String>> excludedKeys) {
+ mExcludedKeys = excludedKeys;
+ mListener = null;
+ mAgentTimeoutParameters = null;
+ mTransportClient = null;
+ mTransportManager = null;
+ mEphemeralOpToken = 0;
+ mUserId = 0;
+ }
+
// This task can assume that the wakelock is properly held for it and doesn't have to worry
// about releasing it.
public PerformUnifiedRestoreTask(
@@ -173,7 +189,8 @@
int pmToken,
boolean isFullSystemRestore,
@Nullable String[] filterSet,
- OnTaskFinishedListener listener) {
+ OnTaskFinishedListener listener,
+ Map<String, Set<String>> excludedKeys) {
this.backupManagerService = backupManagerService;
mUserId = backupManagerService.getUserId();
mTransportManager = backupManagerService.getTransportManager();
@@ -195,6 +212,8 @@
backupManagerService.getAgentTimeoutParameters(),
"Timeout parameters cannot be null");
+ mExcludedKeys = excludedKeys;
+
if (targetPackage != null) {
// Single package restore
mAcceptSet = new ArrayList<>();
@@ -724,27 +743,7 @@
BackupDataInput in = new BackupDataInput(stage.getFileDescriptor());
BackupDataOutput out = new BackupDataOutput(mBackupData.getFileDescriptor());
- byte[] buffer = new byte[8192]; // will grow when needed
- while (in.readNextHeader()) {
- final String key = in.getKey();
- final int size = in.getDataSize();
-
- // is this a special key?
- if (key.equals(KEY_WIDGET_STATE)) {
- if (DEBUG) {
- Slog.i(TAG, "Restoring widget state for " + packageName);
- }
- mWidgetData = new byte[size];
- in.readEntityData(mWidgetData, 0, size);
- } else {
- if (size > buffer.length) {
- buffer = new byte[size];
- }
- in.readEntityData(buffer, 0, size);
- out.writeEntityHeader(key, size);
- out.writeEntityData(buffer, size);
- }
- }
+ filterExcludedKeys(packageName, in, out);
mBackupData.close();
}
@@ -783,6 +782,39 @@
}
}
+ @VisibleForTesting
+ void filterExcludedKeys(String packageName, BackupDataInput in, BackupDataOutput out)
+ throws Exception {
+ Set<String> excludedKeysForPackage = mExcludedKeys.get(packageName);
+
+ byte[] buffer = new byte[8192]; // will grow when needed
+ while (in.readNextHeader()) {
+ final String key = in.getKey();
+ final int size = in.getDataSize();
+
+ if (excludedKeysForPackage != null && excludedKeysForPackage.contains(key)) {
+ in.skipEntityData();
+ continue;
+ }
+
+ // is this a special key?
+ if (key.equals(KEY_WIDGET_STATE)) {
+ if (DEBUG) {
+ Slog.i(TAG, "Restoring widget state for " + packageName);
+ }
+ mWidgetData = new byte[size];
+ in.readEntityData(mWidgetData, 0, size);
+ } else {
+ if (size > buffer.length) {
+ buffer = new byte[size];
+ }
+ in.readEntityData(buffer, 0, size);
+ out.writeEntityHeader(key, size);
+ out.writeEntityData(buffer, size);
+ }
+ }
+ }
+
// state RESTORE_FULL : restore one package via streaming engine
private void restoreFull() {
// None of this can run on the work looper here, so we spin asynchronous
diff --git a/services/core/Android.bp b/services/core/Android.bp
index 594ac10..203bc61 100644
--- a/services/core/Android.bp
+++ b/services/core/Android.bp
@@ -83,9 +83,9 @@
":storaged_aidl",
":vold_aidl",
":platform-compat-config",
- ":tethering-servicescore-srcs",
"java/com/android/server/EventLogTags.logtags",
"java/com/android/server/am/EventLogTags.logtags",
+ "java/com/android/server/wm/EventLogTags.logtags",
"java/com/android/server/policy/EventLogTags.logtags",
],
@@ -114,7 +114,6 @@
"android.hardware.biometrics.face-V1.0-java",
"android.hardware.biometrics.fingerprint-V2.1-java",
"android.hardware.oemlock-V1.0-java",
- "android.hardware.tetheroffload.control-V1.0-java",
"android.hardware.configstore-V1.0-java",
"android.hardware.contexthub-V1.0-java",
"android.hidl.manager-V1.2-java",
@@ -164,10 +163,8 @@
src: ":services.core.json.gz",
}
-// TODO: this should be removed after tethering migration done.
-filegroup {
- name: "servicescore-tethering-src",
- srcs: [
- "java/com/android/server/connectivity/MockableSystemProperties.java",
- ],
+platform_compat_config {
+ name: "services-core-platform-compat-config",
+ src: ":services.core.unboosted",
}
+
diff --git a/services/core/java/android/content/pm/PackageManagerInternal.java b/services/core/java/android/content/pm/PackageManagerInternal.java
index e67d736..de6cca5 100644
--- a/services/core/java/android/content/pm/PackageManagerInternal.java
+++ b/services/core/java/android/content/pm/PackageManagerInternal.java
@@ -61,7 +61,6 @@
public static final int PACKAGE_INCIDENT_REPORT_APPROVER = 10;
public static final int PACKAGE_APP_PREDICTOR = 11;
public static final int PACKAGE_TELEPHONY = 12;
- public static final int PACKAGE_WIFI = 13;
@IntDef(value = {
PACKAGE_SYSTEM,
PACKAGE_SETUP_WIZARD,
@@ -76,7 +75,6 @@
PACKAGE_INCIDENT_REPORT_APPROVER,
PACKAGE_APP_PREDICTOR,
PACKAGE_TELEPHONY,
- PACKAGE_WIFI,
})
@Retention(RetentionPolicy.SOURCE)
public @interface KnownPackage {}
@@ -770,9 +768,10 @@
* @param userId user to uninstall apex package for. Must be
* {@link android.os.UserHandle#USER_ALL}, otherwise failure will be reported.
* @param intentSender a {@link IntentSender} to send result of an uninstall to.
+ * @param flags flags about the uninstall.
*/
public abstract void uninstallApex(String packageName, long versionCode, int userId,
- IntentSender intentSender);
+ IntentSender intentSender, int flags);
/**
* Get fingerprint of build that updated the runtime permissions for a user.
diff --git a/services/core/java/android/os/UserManagerInternal.java b/services/core/java/android/os/UserManagerInternal.java
index 9a7cb3f..a2e9341 100644
--- a/services/core/java/android/os/UserManagerInternal.java
+++ b/services/core/java/android/os/UserManagerInternal.java
@@ -15,6 +15,7 @@
*/
package android.os;
+import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.UserIdInt;
@@ -22,13 +23,24 @@
import android.content.pm.UserInfo;
import android.graphics.Bitmap;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
/**
* @hide Only for use within the system server.
*/
public abstract class UserManagerInternal {
- public static final int CAMERA_NOT_DISABLED = 0;
- public static final int CAMERA_DISABLED_LOCALLY = 1;
- public static final int CAMERA_DISABLED_GLOBALLY = 2;
+
+ public static final int OWNER_TYPE_DEVICE_OWNER = 0;
+ public static final int OWNER_TYPE_PROFILE_OWNER = 1;
+ public static final int OWNER_TYPE_PROFILE_OWNER_OF_ORGANIZATION_OWNED_DEVICE = 2;
+ public static final int OWNER_TYPE_NO_OWNER = 3;
+
+ @Retention(RetentionPolicy.SOURCE)
+ @IntDef(value = {OWNER_TYPE_DEVICE_OWNER, OWNER_TYPE_PROFILE_OWNER,
+ OWNER_TYPE_PROFILE_OWNER_OF_ORGANIZATION_OWNED_DEVICE, OWNER_TYPE_NO_OWNER})
+ public @interface OwnerType {
+ }
public interface UserRestrictionsListener {
/**
@@ -47,13 +59,19 @@
*
* @param userId target user id for the local restrictions.
* @param restrictions a bundle of user restrictions.
- * @param isDeviceOwner whether {@code userId} corresponds to device owner user id.
- * @param cameraRestrictionScope is camera disabled and if so what is the scope of restriction.
- * Should be one of {@link #CAMERA_NOT_DISABLED}, {@link #CAMERA_DISABLED_LOCALLY} or
- * {@link #CAMERA_DISABLED_GLOBALLY}
+ * @param restrictionOwnerType determines which admin {@code userId} corresponds to.
+ * The admin can be either
+ * {@link UserManagerInternal#OWNER_TYPE_DEVICE_OWNER},
+ * {@link UserManagerInternal#OWNER_TYPE_PROFILE_OWNER},
+ * {@link UserManagerInternal#OWNER_TYPE_PROFILE_OWNER_OF_ORGANIZATION_OWNED_DEVICE}
+ * or {@link UserManagerInternal#OWNER_TYPE_NO_OWNER}.
+ * If the admin is a DEVICE_OWNER or a PROFILE_OWNER_ORG_OWNED_DEVICE then
+ * a restriction may be applied globally depending on which restriction it is,
+ * otherwise it will be applied just on the current user.
+ * @see OwnerType
*/
public abstract void setDevicePolicyUserRestrictions(int userId, @Nullable Bundle restrictions,
- boolean isDeviceOwner, int cameraRestrictionScope);
+ @OwnerType int restrictionOwnerType);
/**
* Returns the "base" user restrictions.
diff --git a/services/core/java/com/android/server/BluetoothManagerService.java b/services/core/java/com/android/server/BluetoothManagerService.java
index 208b638..a318844 100644
--- a/services/core/java/com/android/server/BluetoothManagerService.java
+++ b/services/core/java/com/android/server/BluetoothManagerService.java
@@ -74,6 +74,7 @@
import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.HashMap;
+import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Locale;
import java.util.Map;
@@ -98,7 +99,7 @@
private static final int TIMEOUT_BIND_MS = 3000; //Maximum msec to wait for a bind
//Maximum msec to wait for service restart
- private static final int SERVICE_RESTART_TIME_MS = 200;
+ private static final int SERVICE_RESTART_TIME_MS = 400;
//Maximum msec to wait for restart due to error
private static final int ERROR_RESTART_TIME_MS = 3000;
//Maximum msec to delay MESSAGE_USER_SWITCHED
@@ -695,6 +696,35 @@
return mIsHearingAidProfileSupported;
}
+ @Override
+ /** @hide */
+ public java.util.List<String> getSystemConfigEnabledProfilesForPackage(String packageName) {
+ if (Binder.getCallingUid() != Process.BLUETOOTH_UID) {
+ Slog.w(TAG, "getSystemConfigEnabledProfilesForPackage(): not allowed for non-bluetooth");
+ return null;
+ }
+
+ SystemConfig systemConfig = SystemConfig.getInstance();
+ if (systemConfig == null) {
+ return null;
+ }
+
+ android.util.ArrayMap<String, Boolean> componentEnabledStates =
+ systemConfig.getComponentsEnabledStates(packageName);
+ if (componentEnabledStates == null) {
+ return null;
+ }
+
+ ArrayList enabledProfiles = new ArrayList<String>();
+ for (Map.Entry<String, Boolean> entry : componentEnabledStates.entrySet()) {
+ if (entry.getValue()) {
+ enabledProfiles.add(entry.getKey());
+ }
+ }
+
+ return enabledProfiles;
+ }
+
// Monitor change of BLE scan only mode settings.
private void registerForBleScanModeChange() {
ContentObserver contentObserver = new ContentObserver(null) {
@@ -1635,13 +1665,13 @@
// ActivityManager detects it.
// The waiting for (b) and (c) is accomplished by
// delaying the MESSAGE_RESTART_BLUETOOTH_SERVICE
- // message. On slower devices, that delay needs to be
- // on the order of (2 * SERVICE_RESTART_TIME_MS).
+ // message. The delay time is backed off if Bluetooth
+ // continuously failed to turn on itself.
//
waitForOnOff(false, true);
Message restartMsg =
mHandler.obtainMessage(MESSAGE_RESTART_BLUETOOTH_SERVICE);
- mHandler.sendMessageDelayed(restartMsg, 2 * SERVICE_RESTART_TIME_MS);
+ mHandler.sendMessageDelayed(restartMsg, getServiceRestartMs());
}
break;
@@ -1820,7 +1850,7 @@
waitForOnOff(false, true);
Message restartMsg =
mHandler.obtainMessage(MESSAGE_RESTART_BLUETOOTH_SERVICE);
- mHandler.sendMessageDelayed(restartMsg, 2 * SERVICE_RESTART_TIME_MS);
+ mHandler.sendMessageDelayed(restartMsg, getServiceRestartMs());
}
}
if (newState == BluetoothAdapter.STATE_ON
@@ -1863,7 +1893,7 @@
// Send a Bluetooth Restart message
Message restartMsg =
mHandler.obtainMessage(MESSAGE_RESTART_BLUETOOTH_SERVICE);
- mHandler.sendMessageDelayed(restartMsg, SERVICE_RESTART_TIME_MS);
+ mHandler.sendMessageDelayed(restartMsg, getServiceRestartMs());
}
sendBluetoothServiceDownCallback();
@@ -1886,14 +1916,20 @@
break;
}
case MESSAGE_RESTART_BLUETOOTH_SERVICE: {
- Slog.d(TAG, "MESSAGE_RESTART_BLUETOOTH_SERVICE");
- /* Enable without persisting the setting as
- it doesnt change when IBluetooth
- service restarts */
- mEnable = true;
- addActiveLog(BluetoothProtoEnums.ENABLE_DISABLE_REASON_RESTARTED,
- mContext.getPackageName(), true);
- handleEnable(mQuietEnable);
+ mErrorRecoveryRetryCounter++;
+ Slog.d(TAG, "MESSAGE_RESTART_BLUETOOTH_SERVICE: retry count="
+ + mErrorRecoveryRetryCounter);
+ if (mErrorRecoveryRetryCounter < MAX_ERROR_RESTART_RETRIES) {
+ /* Enable without persisting the setting as
+ it doesnt change when IBluetooth
+ service restarts */
+ mEnable = true;
+ addActiveLog(BluetoothProtoEnums.ENABLE_DISABLE_REASON_RESTARTED,
+ mContext.getPackageName(), true);
+ handleEnable(mQuietEnable);
+ } else {
+ Slog.e(TAG, "Reach maximum retry to restart Bluetooth!");
+ }
break;
}
case MESSAGE_TIMEOUT_BIND: {
@@ -2332,13 +2368,9 @@
mEnable = false;
- if (mErrorRecoveryRetryCounter++ < MAX_ERROR_RESTART_RETRIES) {
- // Send a Bluetooth Restart message to reenable bluetooth
- Message restartMsg = mHandler.obtainMessage(MESSAGE_RESTART_BLUETOOTH_SERVICE);
- mHandler.sendMessageDelayed(restartMsg, ERROR_RESTART_TIME_MS);
- } else {
- // todo: notify user to power down and power up phone to make bluetooth work.
- }
+ // Send a Bluetooth Restart message to reenable bluetooth
+ Message restartMsg = mHandler.obtainMessage(MESSAGE_RESTART_BLUETOOTH_SERVICE);
+ mHandler.sendMessageDelayed(restartMsg, ERROR_RESTART_TIME_MS);
}
private boolean isBluetoothDisallowed() {
@@ -2374,6 +2406,10 @@
}
}
+ private int getServiceRestartMs() {
+ return (mErrorRecoveryRetryCounter + 1) * SERVICE_RESTART_TIME_MS;
+ }
+
@Override
public void dump(FileDescriptor fd, PrintWriter writer, String[] args) {
if (!DumpUtils.checkDumpPermission(mContext, TAG, writer)) {
diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java
index a75d5d69..753c117 100644
--- a/services/core/java/com/android/server/ConnectivityService.java
+++ b/services/core/java/com/android/server/ConnectivityService.java
@@ -108,6 +108,7 @@
import android.net.ProxyInfo;
import android.net.RouteInfo;
import android.net.SocketKeepalive;
+import android.net.TetheringManager;
import android.net.UidRange;
import android.net.Uri;
import android.net.VpnService;
@@ -187,9 +188,7 @@
import com.android.server.connectivity.NetworkNotificationManager.NotificationType;
import com.android.server.connectivity.PermissionMonitor;
import com.android.server.connectivity.ProxyTracker;
-import com.android.server.connectivity.Tethering;
import com.android.server.connectivity.Vpn;
-import com.android.server.connectivity.tethering.TetheringDependencies;
import com.android.server.net.BaseNetdEventCallback;
import com.android.server.net.BaseNetworkObserver;
import com.android.server.net.LockdownVpnTracker;
@@ -233,7 +232,6 @@
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";
@@ -280,7 +278,7 @@
private MockableSystemProperties mSystemProperties;
- private Tethering mTethering;
+ private TetheringManager mTetheringManager;
@VisibleForTesting
protected final PermissionMonitor mPermissionMonitor;
@@ -869,15 +867,10 @@
}
/**
- * @see Tethering
+ * Get a reference to the TetheringManager.
*/
- public Tethering makeTethering(@NonNull Context context,
- @NonNull INetworkManagementService nms,
- @NonNull INetworkStatsService statsService,
- @NonNull INetworkPolicyManager policyManager,
- @NonNull TetheringDependencies tetheringDeps) {
- return new Tethering(context, nms, statsService, policyManager,
- IoThread.get().getLooper(), getSystemProperties(), tetheringDeps);
+ public TetheringManager getTetheringManager() {
+ return TetheringManager.getInstance();
}
/**
@@ -932,6 +925,10 @@
return IIpConnectivityMetrics.Stub.asInterface(
ServiceManager.getService(IpConnectivityLog.SERVICE_NAME));
}
+
+ public IBatteryStats getBatteryStatsService() {
+ return BatteryStatsService.getService();
+ }
}
public ConnectivityService(Context context, INetworkManagementService netManager,
@@ -1075,8 +1072,7 @@
mUserManager = (UserManager) context.getSystemService(Context.USER_SERVICE);
- mTethering = deps.makeTethering(mContext, mNMS, mStatsService, mPolicyManager,
- makeTetheringDependencies());
+ mTetheringManager = mDeps.getTetheringManager();
mPermissionMonitor = new PermissionMonitor(mContext, mNetd);
@@ -1111,7 +1107,6 @@
mHandler);
try {
- mNMS.registerObserver(mTethering);
mNMS.registerObserver(mDataActivityObserver);
} catch (RemoteException e) {
loge("Error registering observer :" + e);
@@ -1145,19 +1140,6 @@
registerPrivateDnsSettingsCallbacks();
}
- private TetheringDependencies makeTetheringDependencies() {
- return new TetheringDependencies() {
- @Override
- public boolean isTetheringSupported() {
- return ConnectivityService.this.isTetheringSupported();
- }
- @Override
- public NetworkRequest getDefaultNetworkRequest() {
- return mDefaultRequest;
- }
- };
- }
-
private static NetworkCapabilities createDefaultNetworkCapabilitiesForUid(int uid) {
final NetworkCapabilities netCap = new NetworkCapabilities();
netCap.addCapability(NET_CAPABILITY_INTERNET);
@@ -1413,7 +1395,7 @@
@Override
public Network getActiveNetworkForUid(int uid, boolean ignoreBlocked) {
- enforceConnectivityInternalPermission();
+ NetworkStack.checkNetworkStackPermission(mContext);
return getActiveNetworkForUidInternal(uid, ignoreBlocked);
}
@@ -1455,7 +1437,7 @@
@Override
public NetworkInfo getActiveNetworkInfoForUid(int uid, boolean ignoreBlocked) {
- enforceConnectivityInternalPermission();
+ NetworkStack.checkNetworkStackPermission(mContext);
final NetworkState state = getUnfilteredActiveNetworkState(uid);
filterNetworkStateForUid(state, uid, ignoreBlocked);
return state.networkInfo;
@@ -1674,8 +1656,8 @@
@Override
public NetworkState[] getAllNetworkState() {
- // Require internal since we're handing out IMSI details
- enforceConnectivityInternalPermission();
+ // This contains IMSI details, so make sure the caller is privileged.
+ NetworkStack.checkNetworkStackPermission(mContext);
final ArrayList<NetworkState> result = Lists.newArrayList();
for (Network network : getAllNetworks()) {
@@ -1753,7 +1735,7 @@
}
enforceChangePermission();
if (mProtectedNetworks.contains(networkType)) {
- enforceConnectivityInternalPermission();
+ enforceConnectivityRestrictedNetworksPermission();
}
InetAddress addr;
@@ -1909,7 +1891,9 @@
// TODO: relocate this specific callback in Tethering.
if (restrictBackground) {
log("onRestrictBackgroundChanged(true): disabling tethering");
- mTethering.untetherAll();
+ mTetheringManager.stopTethering(ConnectivityManager.TETHERING_WIFI);
+ mTetheringManager.stopTethering(ConnectivityManager.TETHERING_USB);
+ mTetheringManager.stopTethering(ConnectivityManager.TETHERING_BLUETOOTH);
}
}
};
@@ -2021,6 +2005,12 @@
NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK);
}
+ private void enforceNetworkFactoryPermission() {
+ mContext.enforceCallingOrSelfPermission(
+ android.Manifest.permission.NETWORK_FACTORY,
+ "ConnectivityService");
+ }
+
private boolean checkSettingsPermission() {
return checkAnyPermissionOf(
android.Manifest.permission.NETWORK_SETTINGS,
@@ -2040,18 +2030,19 @@
"ConnectivityService");
}
- private void enforceConnectivityInternalPermission() {
- enforceAnyPermissionOf(
- android.Manifest.permission.CONNECTIVITY_INTERNAL,
- NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK);
- }
-
private void enforceControlAlwaysOnVpnPermission() {
mContext.enforceCallingOrSelfPermission(
android.Manifest.permission.CONTROL_ALWAYS_ON_VPN,
"ConnectivityService");
}
+ private void enforceNetworkStackOrSettingsPermission() {
+ enforceAnyPermissionOf(
+ android.Manifest.permission.NETWORK_SETTINGS,
+ android.Manifest.permission.NETWORK_STACK,
+ NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK);
+ }
+
private void enforceNetworkStackSettingsOrSetup() {
enforceAnyPermissionOf(
android.Manifest.permission.NETWORK_SETTINGS,
@@ -2079,7 +2070,11 @@
"ConnectivityService");
return;
} catch (SecurityException e) { /* fallback to ConnectivityInternalPermission */ }
- enforceConnectivityInternalPermission();
+ // TODO: Remove this fallback check after all apps have declared
+ // CONNECTIVITY_USE_RESTRICTED_NETWORKS.
+ mContext.enforceCallingOrSelfPermission(
+ android.Manifest.permission.CONNECTIVITY_INTERNAL,
+ "ConnectivityService");
}
private void enforceKeepalivePermission() {
@@ -2088,7 +2083,7 @@
// Public because it's used by mLockdownTracker.
public void sendConnectedBroadcast(NetworkInfo info) {
- enforceConnectivityInternalPermission();
+ NetworkStack.checkNetworkStackPermission(mContext);
sendGeneralBroadcast(info, CONNECTIVITY_ACTION);
}
@@ -2164,7 +2159,7 @@
opts.setMaxManifestReceiverApiLevel(Build.VERSION_CODES.M);
options = opts.toBundle();
}
- final IBatteryStats bs = BatteryStatsService.getService();
+ final IBatteryStats bs = mDeps.getBatteryStatsService();
try {
bs.noteConnectivityChanged(intent.getIntExtra(
ConnectivityManager.EXTRA_NETWORK_TYPE, ConnectivityManager.TYPE_NONE),
@@ -2186,9 +2181,13 @@
*/
@VisibleForTesting
public void systemReady() {
+ // Let PermissionMonitor#startMonitoring() running in the beginning of the systemReady
+ // before MultipathPolicyTracker.start(). Since mApps in PermissionMonitor needs to be
+ // populated first to ensure that listening network request which is sent by
+ // MultipathPolicyTracker won't be added NET_CAPABILITY_FOREGROUND capability.
+ mPermissionMonitor.startMonitoring();
mProxyTracker.loadGlobalProxy();
registerNetdEventCallback();
- mTethering.systemReady();
synchronized (this) {
mSystemReady = true;
@@ -2206,8 +2205,6 @@
mHandler.sendMessage(mHandler.obtainMessage(EVENT_CONFIGURE_ALWAYS_ON_NETWORKS));
mHandler.sendMessage(mHandler.obtainMessage(EVENT_SYSTEM_READY));
-
- mPermissionMonitor.startMonitoring();
}
/**
@@ -2402,9 +2399,6 @@
if (ArrayUtils.contains(args, DIAG_ARG)) {
dumpNetworkDiagnostics(pw);
return;
- } else if (ArrayUtils.contains(args, TETHERING_ARG)) {
- mTethering.dump(fd, pw, args);
- return;
} else if (ArrayUtils.contains(args, NETWORK_ARG)) {
dumpNetworks(pw);
return;
@@ -2466,10 +2460,13 @@
mLegacyTypeTracker.dump(pw);
pw.println();
- mTethering.dump(fd, pw, args);
+ mKeepaliveTracker.dump(pw);
pw.println();
- mKeepaliveTracker.dump(pw);
+ pw.println("TetheringManager logs:");
+ pw.increaseIndent();
+ TetheringManager.getInstance().dump(pw);
+ pw.decreaseIndent();
pw.println();
dumpAvoidBadWifiSettings(pw);
@@ -3185,7 +3182,7 @@
if (!nai.networkCapabilities.hasTransport(TRANSPORT_VPN)) {
updateAllVpnsCapabilities();
}
- rematchAllNetworksAndRequests(null, 0);
+ rematchAllNetworksAndRequests();
mLingerMonitor.noteDisconnect(nai);
if (nai.created) {
// Tell netd to clean up the configuration for this network
@@ -3271,8 +3268,7 @@
}
}
}
- rematchAllNetworksAndRequests(null, 0);
- ensureRunningOnConnectivityServiceThread();
+ rematchAllNetworksAndRequests();
if (nri.request.isRequest() && nri.mSatisfier == null) {
sendUpdatedScoreToFactories(nri.request, null);
}
@@ -3515,13 +3511,12 @@
}
if (accept != nai.networkMisc.acceptUnvalidated) {
- int oldScore = nai.getCurrentScore();
nai.networkMisc.acceptUnvalidated = accept;
// If network becomes partial connectivity and user already accepted to use this
// network, we should respect the user's option and don't need to popup the
// PARTIAL_CONNECTIVITY notification to user again.
nai.networkMisc.acceptPartialConnectivity = accept;
- rematchAllNetworksAndRequests(nai, oldScore);
+ rematchAllNetworksAndRequests();
sendUpdatedScoreToFactories(nai);
}
@@ -3590,9 +3585,8 @@
return;
}
if (!nai.avoidUnvalidated) {
- int oldScore = nai.getCurrentScore();
nai.avoidUnvalidated = true;
- rematchAllNetworksAndRequests(nai, oldScore);
+ rematchAllNetworksAndRequests();
sendUpdatedScoreToFactories(nai);
}
}
@@ -3606,7 +3600,7 @@
@Override
public void startCaptivePortalApp(Network network) {
- enforceConnectivityInternalPermission();
+ enforceNetworkStackOrSettingsPermission();
mHandler.post(() -> {
NetworkAgentInfo nai = getNetworkAgentInfoForNetwork(network);
if (nai == null) return;
@@ -3693,7 +3687,7 @@
private void rematchForAvoidBadWifiUpdate() {
- rematchAllNetworksAndRequests(null, 0);
+ rematchAllNetworksAndRequests();
for (NetworkAgentInfo nai: mNetworkAgentInfos.values()) {
if (nai.networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) {
sendUpdatedScoreToFactories(nai);
@@ -4004,7 +3998,7 @@
public int tether(String iface, String callerPkg) {
ConnectivityManager.enforceTetherChangePermission(mContext, callerPkg);
if (isTetheringSupported()) {
- return mTethering.tether(iface);
+ return mTetheringManager.tether(iface);
} else {
return ConnectivityManager.TETHER_ERROR_UNSUPPORTED;
}
@@ -4016,7 +4010,7 @@
ConnectivityManager.enforceTetherChangePermission(mContext, callerPkg);
if (isTetheringSupported()) {
- return mTethering.untether(iface);
+ return mTetheringManager.untether(iface);
} else {
return ConnectivityManager.TETHER_ERROR_UNSUPPORTED;
}
@@ -4028,7 +4022,7 @@
enforceTetherAccessPermission();
if (isTetheringSupported()) {
- return mTethering.getLastTetherError(iface);
+ return mTetheringManager.getLastTetherError(iface);
} else {
return ConnectivityManager.TETHER_ERROR_UNSUPPORTED;
}
@@ -4039,7 +4033,7 @@
public String[] getTetherableUsbRegexs() {
enforceTetherAccessPermission();
if (isTetheringSupported()) {
- return mTethering.getTetherableUsbRegexs();
+ return mTetheringManager.getTetherableUsbRegexs();
} else {
return new String[0];
}
@@ -4049,7 +4043,7 @@
public String[] getTetherableWifiRegexs() {
enforceTetherAccessPermission();
if (isTetheringSupported()) {
- return mTethering.getTetherableWifiRegexs();
+ return mTetheringManager.getTetherableWifiRegexs();
} else {
return new String[0];
}
@@ -4059,7 +4053,7 @@
public String[] getTetherableBluetoothRegexs() {
enforceTetherAccessPermission();
if (isTetheringSupported()) {
- return mTethering.getTetherableBluetoothRegexs();
+ return mTetheringManager.getTetherableBluetoothRegexs();
} else {
return new String[0];
}
@@ -4069,7 +4063,7 @@
public int setUsbTethering(boolean enable, String callerPkg) {
ConnectivityManager.enforceTetherChangePermission(mContext, callerPkg);
if (isTetheringSupported()) {
- return mTethering.setUsbTethering(enable);
+ return mTetheringManager.setUsbTethering(enable);
} else {
return ConnectivityManager.TETHER_ERROR_UNSUPPORTED;
}
@@ -4080,25 +4074,25 @@
@Override
public String[] getTetherableIfaces() {
enforceTetherAccessPermission();
- return mTethering.getTetherableIfaces();
+ return mTetheringManager.getTetherableIfaces();
}
@Override
public String[] getTetheredIfaces() {
enforceTetherAccessPermission();
- return mTethering.getTetheredIfaces();
+ return mTetheringManager.getTetheredIfaces();
}
@Override
public String[] getTetheringErroredIfaces() {
enforceTetherAccessPermission();
- return mTethering.getErroredIfaces();
+ return mTetheringManager.getTetheringErroredIfaces();
}
@Override
public String[] getTetheredDhcpRanges() {
- enforceConnectivityInternalPermission();
- return mTethering.getTetheredDhcpRanges();
+ enforceSettingsPermission();
+ return mTetheringManager.getTetheredDhcpRanges();
}
@Override
@@ -4126,7 +4120,8 @@
Binder.restoreCallingIdentity(token);
}
- return tetherEnabledInSettings && adminUser && mTethering.hasTetherableConfiguration();
+ return tetherEnabledInSettings && adminUser
+ && mTetheringManager.hasTetherableConfiguration();
}
@Override
@@ -4137,13 +4132,13 @@
receiver.send(ConnectivityManager.TETHER_ERROR_UNSUPPORTED, null);
return;
}
- mTethering.startTethering(type, receiver, showProvisioningUi);
+ mTetheringManager.startTethering(type, receiver, showProvisioningUi);
}
@Override
public void stopTethering(int type, String callerPkg) {
ConnectivityManager.enforceTetherChangePermission(mContext, callerPkg);
- mTethering.stopTethering(type);
+ mTetheringManager.stopTethering(type);
}
/**
@@ -4157,7 +4152,8 @@
public void getLatestTetheringEntitlementResult(int type, ResultReceiver receiver,
boolean showEntitlementUi, String callerPkg) {
ConnectivityManager.enforceTetherChangePermission(mContext, callerPkg);
- mTethering.getLatestTetheringEntitlementResult(type, receiver, showEntitlementUi);
+ mTetheringManager.requestLatestTetheringEntitlementResult(
+ type, receiver, showEntitlementUi);
}
/** Register tethering event callback. */
@@ -4165,7 +4161,7 @@
public void registerTetheringEventCallback(ITetheringEventCallback callback,
String callerPkg) {
ConnectivityManager.enforceTetherChangePermission(mContext, callerPkg);
- mTethering.registerTetheringEventCallback(callback);
+ mTetheringManager.registerTetheringEventCallback(callback);
}
/** Unregister tethering event callback. */
@@ -4173,7 +4169,7 @@
public void unregisterTetheringEventCallback(ITetheringEventCallback callback,
String callerPkg) {
ConnectivityManager.enforceTetherChangePermission(mContext, callerPkg);
- mTethering.unregisterTetheringEventCallback(callback);
+ mTetheringManager.unregisterTetheringEventCallback(callback);
}
// Called when we lose the default network and have no replacement yet.
@@ -4319,7 +4315,7 @@
@Override
public void setGlobalProxy(final ProxyInfo proxyProperties) {
- enforceConnectivityInternalPermission();
+ NetworkStack.checkNetworkStackPermission(mContext);
mProxyTracker.setGlobalProxy(proxyProperties);
}
@@ -4858,7 +4854,7 @@
@Override
public String getMobileProvisioningUrl() {
- enforceConnectivityInternalPermission();
+ enforceSettingsPermission();
String url = getProvisioningUrlBaseFromFile();
if (TextUtils.isEmpty(url)) {
url = mContext.getResources().getString(R.string.mobile_provisioning_url);
@@ -4884,7 +4880,7 @@
@Override
public void setProvisioningNotificationVisible(boolean visible, int networkType,
String action) {
- enforceConnectivityInternalPermission();
+ enforceSettingsPermission();
if (!ConnectivityManager.isNetworkTypeValid(networkType)) {
return;
}
@@ -5472,7 +5468,7 @@
@Override
public int registerNetworkFactory(Messenger messenger, String name) {
- enforceConnectivityInternalPermission();
+ enforceNetworkFactoryPermission();
NetworkFactoryInfo nfi = new NetworkFactoryInfo(name, messenger, new AsyncChannel(),
NetworkFactory.SerialNumber.nextSerialNumber());
mHandler.sendMessage(mHandler.obtainMessage(EVENT_REGISTER_NETWORK_FACTORY, nfi));
@@ -5487,7 +5483,7 @@
@Override
public void unregisterNetworkFactory(Messenger messenger) {
- enforceConnectivityInternalPermission();
+ enforceNetworkFactoryPermission();
mHandler.sendMessage(mHandler.obtainMessage(EVENT_UNREGISTER_NETWORK_FACTORY, messenger));
}
@@ -5586,7 +5582,7 @@
public int registerNetworkAgent(Messenger messenger, NetworkInfo networkInfo,
LinkProperties linkProperties, NetworkCapabilities networkCapabilities,
int currentScore, NetworkMisc networkMisc, int factorySerialNumber) {
- enforceConnectivityInternalPermission();
+ enforceNetworkFactoryPermission();
LinkProperties lp = new LinkProperties(linkProperties);
lp.ensureDirectlyConnectedRoutes();
@@ -5647,7 +5643,8 @@
// are accurate.
networkAgent.clatd.fixupLinkProperties(oldLp, newLp);
- updateInterfaces(newLp, oldLp, netId, networkAgent.networkCapabilities);
+ updateInterfaces(newLp, oldLp, netId, networkAgent.networkCapabilities,
+ networkAgent.networkInfo.getType());
// update filtering rules, need to happen after the interface update so netd knows about the
// new interface (the interface name -> index map becomes initialized)
@@ -5726,21 +5723,26 @@
}
- private void updateInterfaces(LinkProperties newLp, LinkProperties oldLp, int netId,
- NetworkCapabilities caps) {
- CompareResult<String> interfaceDiff = new CompareResult<>(
+ private void updateInterfaces(final @Nullable LinkProperties newLp,
+ final @Nullable LinkProperties oldLp, final int netId,
+ final @Nullable NetworkCapabilities caps, final int legacyType) {
+ final CompareResult<String> interfaceDiff = new CompareResult<>(
oldLp != null ? oldLp.getAllInterfaceNames() : null,
newLp != null ? newLp.getAllInterfaceNames() : null);
- for (String iface : interfaceDiff.added) {
- try {
- if (DBG) log("Adding iface " + iface + " to network " + netId);
- mNMS.addInterfaceToNetwork(iface, netId);
- wakeupModifyInterface(iface, caps, true);
- } catch (Exception e) {
- loge("Exception adding interface: " + e);
+ if (!interfaceDiff.added.isEmpty()) {
+ final IBatteryStats bs = mDeps.getBatteryStatsService();
+ for (final String iface : interfaceDiff.added) {
+ try {
+ if (DBG) log("Adding iface " + iface + " to network " + netId);
+ mNMS.addInterfaceToNetwork(iface, netId);
+ wakeupModifyInterface(iface, caps, true);
+ bs.noteNetworkInterfaceType(iface, legacyType);
+ } catch (Exception e) {
+ loge("Exception adding interface: " + e);
+ }
}
}
- for (String iface : interfaceDiff.removed) {
+ for (final String iface : interfaceDiff.removed) {
try {
if (DBG) log("Removing iface " + iface + " from network " + netId);
wakeupModifyInterface(iface, caps, false);
@@ -5965,7 +5967,7 @@
} else {
// If the requestable capabilities have changed or the score changed, we can't have been
// called by rematchNetworkAndRequests, so it's safe to start a rematch.
- rematchAllNetworksAndRequests(nai, oldScore);
+ rematchAllNetworksAndRequests();
notifyNetworkCallbacks(nai, ConnectivityManager.CALLBACK_CAP_CHANGED);
}
@@ -6294,6 +6296,41 @@
}
}
+ private ArrayMap<NetworkRequestInfo, NetworkAgentInfo> computeRequestReassignmentForNetwork(
+ @NonNull final NetworkAgentInfo newNetwork) {
+ final int score = newNetwork.getCurrentScore();
+ final ArrayMap<NetworkRequestInfo, NetworkAgentInfo> reassignedRequests = new ArrayMap<>();
+ for (NetworkRequestInfo nri : mNetworkRequests.values()) {
+ // Process requests in the first pass and listens in the second pass. This allows us to
+ // change a network's capabilities depending on which requests it has. This is only
+ // correct if the change in capabilities doesn't affect whether the network satisfies
+ // requests or not, and doesn't affect the network's score.
+ if (nri.request.isListen()) continue;
+
+ final NetworkAgentInfo currentNetwork = nri.mSatisfier;
+ final boolean satisfies = newNetwork.satisfies(nri.request);
+ if (newNetwork == currentNetwork && satisfies) continue;
+
+ // check if it satisfies the NetworkCapabilities
+ if (VDBG) log(" checking if request is satisfied: " + nri.request);
+ if (satisfies) {
+ // next check if it's better than any current network we're using for
+ // this request
+ if (VDBG || DDBG) {
+ log("currentScore = "
+ + (currentNetwork != null ? currentNetwork.getCurrentScore() : 0)
+ + ", newScore = " + score);
+ }
+ if (currentNetwork == null || currentNetwork.getCurrentScore() < score) {
+ reassignedRequests.put(nri, newNetwork);
+ }
+ } else if (newNetwork.isSatisfyingRequest(nri.request.requestId)) {
+ reassignedRequests.put(nri, null);
+ }
+ }
+ return reassignedRequests;
+ }
+
// Handles a network appearing or improving its score.
//
// - Evaluates all current NetworkRequests that can be
@@ -6307,10 +6344,6 @@
// - Tears down newNetwork if it just became validated
// but turns out to be unneeded.
//
- // - If reapUnvalidatedNetworks==REAP, tears down unvalidated
- // networks that have no chance (i.e. even if validated)
- // of becoming the highest scoring network.
- //
// NOTE: This function only adds NetworkRequests that "newNetwork" could satisfy,
// it does not remove NetworkRequests that other Networks could better satisfy.
// If you need to handle decreases in score, use {@link rematchAllNetworksAndRequests}.
@@ -6318,14 +6351,10 @@
// as it performs better by a factor of the number of Networks.
//
// @param newNetwork is the network to be matched against NetworkRequests.
- // @param reapUnvalidatedNetworks indicates if an additional pass over all networks should be
- // performed to tear down unvalidated networks that have no chance (i.e. even if
- // validated) of becoming the highest scoring network.
- private void rematchNetworkAndRequests(NetworkAgentInfo newNetwork,
- ReapUnvalidatedNetworks reapUnvalidatedNetworks, long now) {
+ // @param now the time the rematch starts, as returned by SystemClock.elapsedRealtime();
+ private void rematchNetworkAndRequests(NetworkAgentInfo newNetwork, long now) {
ensureRunningOnConnectivityServiceThread();
if (!newNetwork.everConnected) return;
- boolean keep = newNetwork.isVPN();
boolean isNewDefault = false;
NetworkAgentInfo oldDefaultNetwork = null;
@@ -6334,39 +6363,11 @@
if (VDBG || DDBG) log("rematching " + newNetwork.name());
- final ArrayMap<NetworkRequestInfo, NetworkAgentInfo> reassignedRequests = new ArrayMap<>();
+ final ArrayMap<NetworkRequestInfo, NetworkAgentInfo> reassignedRequests =
+ computeRequestReassignmentForNetwork(newNetwork);
NetworkCapabilities nc = newNetwork.networkCapabilities;
if (VDBG) log(" network has: " + nc);
- for (NetworkRequestInfo nri : mNetworkRequests.values()) {
- // Process requests in the first pass and listens in the second pass. This allows us to
- // change a network's capabilities depending on which requests it has. This is only
- // correct if the change in capabilities doesn't affect whether the network satisfies
- // requests or not, and doesn't affect the network's score.
- if (nri.request.isListen()) continue;
-
- ensureRunningOnConnectivityServiceThread();
- final NetworkAgentInfo currentNetwork = nri.mSatisfier;
- final boolean satisfies = newNetwork.satisfies(nri.request);
- if (newNetwork == currentNetwork && satisfies) continue;
-
- // check if it satisfies the NetworkCapabilities
- if (VDBG) log(" checking if request is satisfied: " + nri.request);
- if (satisfies) {
- // next check if it's better than any current network we're using for
- // this request
- if (VDBG || DDBG) {
- log("currentScore = " +
- (currentNetwork != null ? currentNetwork.getCurrentScore() : 0) +
- ", newScore = " + score);
- }
- if (currentNetwork == null || currentNetwork.getCurrentScore() < score) {
- reassignedRequests.put(nri, newNetwork);
- }
- } else if (newNetwork.isSatisfyingRequest(nri.request.requestId)) {
- reassignedRequests.put(nri, null);
- }
- }
// Find and migrate to this Network any NetworkRequests for
// which this network is now the best.
@@ -6395,7 +6396,6 @@
Slog.wtf(TAG, "BUG: " + newSatisfier.name() + " already has " + nri.request);
}
addedRequests.add(nri);
- keep = true;
// Tell NetworkFactories about the new score, so they can stop
// trying to connect if they know they cannot match it.
// TODO - this could get expensive if we have a lot of requests for this
@@ -6464,155 +6464,199 @@
newNetwork.name(), score, newNetwork.getCurrentScore()));
}
- // Second pass: process all listens.
- if (wasBackgroundNetwork != newNetwork.isBackgroundNetwork()) {
- // If the network went from background to foreground or vice versa, we need to update
- // its foreground state. It is safe to do this after rematching the requests because
- // NET_CAPABILITY_FOREGROUND does not affect requests, as is not a requestable
- // capability and does not affect the network's score (see the Slog.wtf call above).
- updateCapabilities(score, newNetwork, newNetwork.networkCapabilities);
- } else {
- processListenRequests(newNetwork, false);
- }
-
- // do this after the default net is switched, but
+ // Notify requested networks are available after the default net is switched, but
// before LegacyTypeTracker sends legacy broadcasts
for (NetworkRequestInfo nri : addedRequests) notifyNetworkAvailable(newNetwork, nri);
- // Linger any networks that are no longer needed. This should be done after sending the
- // available callback for newNetwork.
- for (NetworkAgentInfo nai : removedRequests) {
- updateLingerState(nai, now);
- }
- // Possibly unlinger newNetwork. Unlingering a network does not send any callbacks so it
- // does not need to be done in any particular order.
- updateLingerState(newNetwork, now);
+ // Second pass: process all listens.
+ if (wasBackgroundNetwork != newNetwork.isBackgroundNetwork()) {
+ // TODO : most of the following is useless because the only thing that changed
+ // here is whether the network is a background network. Clean this up.
- if (isNewDefault) {
- // Maintain the illusion: since the legacy API only
- // understands one network at a time, we must pretend
- // that the current default network disconnected before
- // the new one connected.
- if (oldDefaultNetwork != null) {
- mLegacyTypeTracker.remove(oldDefaultNetwork.networkInfo.getType(),
- oldDefaultNetwork, true);
- }
- mDefaultInetConditionPublished = newNetwork.lastValidated ? 100 : 0;
- mLegacyTypeTracker.add(newNetwork.networkInfo.getType(), newNetwork);
- notifyLockdownVpn(newNetwork);
- }
+ NetworkCapabilities newNc = mixInCapabilities(newNetwork,
+ newNetwork.networkCapabilities);
- if (keep) {
- // Notify battery stats service about this network, both the normal
- // interface and any stacked links.
- // TODO: Avoid redoing this; this must only be done once when a network comes online.
- try {
- final IBatteryStats bs = BatteryStatsService.getService();
- final int type = newNetwork.networkInfo.getType();
+ if (Objects.equals(newNetwork.networkCapabilities, newNc)) return;
- final String baseIface = newNetwork.linkProperties.getInterfaceName();
- bs.noteNetworkInterfaceType(baseIface, type);
- for (LinkProperties stacked : newNetwork.linkProperties.getStackedLinks()) {
- final String stackedIface = stacked.getInterfaceName();
- bs.noteNetworkInterfaceType(stackedIface, type);
- }
- } catch (RemoteException ignored) {
- }
-
- // This has to happen after the notifyNetworkCallbacks as that tickles each
- // ConnectivityManager instance so that legacy requests correctly bind dns
- // requests to this network. The legacy users are listening for this broadcast
- // and will generally do a dns request so they can ensureRouteToHost and if
- // they do that before the callbacks happen they'll use the default network.
- //
- // TODO: Is there still a race here? We send the broadcast
- // after sending the callback, but if the app can receive the
- // broadcast before the callback, it might still break.
- //
- // This *does* introduce a race where if the user uses the new api
- // (notification callbacks) and then uses the old api (getNetworkInfo(type))
- // they may get old info. Reverse this after the old startUsing api is removed.
- // This is on top of the multiple intent sequencing referenced in the todo above.
- for (int i = 0; i < newNetwork.numNetworkRequests(); i++) {
- NetworkRequest nr = newNetwork.requestAt(i);
- if (nr.legacyType != TYPE_NONE && nr.isRequest()) {
- // legacy type tracker filters out repeat adds
- mLegacyTypeTracker.add(nr.legacyType, newNetwork);
+ final int oldPermission = getNetworkPermission(newNetwork.networkCapabilities);
+ final int newPermission = getNetworkPermission(newNc);
+ if (oldPermission != newPermission && newNetwork.created && !newNetwork.isVPN()) {
+ try {
+ mNMS.setNetworkPermission(newNetwork.network.netId, newPermission);
+ } catch (RemoteException e) {
+ loge("Exception in setNetworkPermission: " + e);
}
}
- // A VPN generally won't get added to the legacy tracker in the "for (nri)" loop above,
- // because usually there are no NetworkRequests it satisfies (e.g., mDefaultRequest
- // wants the NOT_VPN capability, so it will never be satisfied by a VPN). So, add the
- // newNetwork to the tracker explicitly (it's a no-op if it has already been added).
- if (newNetwork.isVPN()) {
- mLegacyTypeTracker.add(TYPE_VPN, newNetwork);
+ final NetworkCapabilities prevNc;
+ synchronized (newNetwork) {
+ prevNc = newNetwork.networkCapabilities;
+ newNetwork.setNetworkCapabilities(newNc);
}
- }
- if (reapUnvalidatedNetworks == ReapUnvalidatedNetworks.REAP) {
- for (NetworkAgentInfo nai : mNetworkAgentInfos.values()) {
- if (unneeded(nai, UnneededFor.TEARDOWN)) {
- if (nai.getLingerExpiry() > 0) {
- // This network has active linger timers and no requests, but is not
- // lingering. Linger it.
- //
- // One way (the only way?) this can happen if this network is unvalidated
- // and became unneeded due to another network improving its score to the
- // point where this network will no longer be able to satisfy any requests
- // even if it validates.
- updateLingerState(nai, now);
- } else {
- if (DBG) log("Reaping " + nai.name());
- teardownUnneededNetwork(nai);
- }
+
+ updateUids(newNetwork, prevNc, newNc);
+
+ if (newNetwork.getCurrentScore() == score
+ && newNc.equalRequestableCapabilities(prevNc)) {
+ // If the requestable capabilities haven't changed, and the score hasn't changed,
+ // then the change we're processing can't affect any requests, it can only affect
+ // the listens on this network.
+ processListenRequests(newNetwork, true);
+ } else {
+ rematchAllNetworksAndRequests();
+ notifyNetworkCallbacks(newNetwork, ConnectivityManager.CALLBACK_CAP_CHANGED);
+ }
+
+ if (prevNc != null) {
+ final boolean oldMetered = prevNc.isMetered();
+ final boolean newMetered = newNc.isMetered();
+ final boolean meteredChanged = oldMetered != newMetered;
+
+ if (meteredChanged) {
+ maybeNotifyNetworkBlocked(newNetwork, oldMetered, newMetered,
+ mRestrictBackground, mRestrictBackground);
+ }
+
+ final boolean roamingChanged = prevNc.hasCapability(NET_CAPABILITY_NOT_ROAMING)
+ != newNc.hasCapability(NET_CAPABILITY_NOT_ROAMING);
+
+ // Report changes that are interesting for network statistics tracking.
+ if (meteredChanged || roamingChanged) {
+ notifyIfacesChangedForNetworkStats();
}
}
+
+ if (!newNc.hasTransport(TRANSPORT_VPN)) {
+ // Tell VPNs about updated capabilities, since they may need to
+ // bubble those changes through.
+ updateAllVpnsCapabilities();
+ }
+
+ } else {
+ processListenRequests(newNetwork, false);
}
}
/**
* Attempt to rematch all Networks with NetworkRequests. This may result in Networks
* being disconnected.
- * @param changed If only one Network's score or capabilities have been modified since the last
- * time this function was called, pass this Network in this argument, otherwise pass
- * null.
- * @param oldScore If only one Network has been changed but its NetworkCapabilities have not
- * changed, pass in the Network's score (from getCurrentScore()) prior to the change via
- * this argument, otherwise pass {@code changed.getCurrentScore()} or 0 if
- * {@code changed} is {@code null}. This is because NetworkCapabilities influence a
- * network's score.
*/
- private void rematchAllNetworksAndRequests(NetworkAgentInfo changed, int oldScore) {
- // TODO: This may get slow. The "changed" parameter is provided for future optimization
- // to avoid the slowness. It is not simply enough to process just "changed", for
- // example in the case where "changed"'s score decreases and another network should begin
- // satisfying a NetworkRequest that "changed" currently satisfies.
-
- // Optimization: Only reprocess "changed" if its score improved. This is safe because it
- // can only add more NetworkRequests satisfied by "changed", and this is exactly what
- // rematchNetworkAndRequests() handles.
+ private void rematchAllNetworksAndRequests() {
+ // TODO: This may be slow, and should be optimized. Unfortunately at this moment the
+ // processing is network-major instead of request-major (the code iterates through all
+ // networks, then for each it iterates for all requests), which is a problem for re-scoring
+ // requests. Once the code has switched to a request-major iteration style, this can
+ // be optimized to only do the processing needed.
final long now = SystemClock.elapsedRealtime();
- if (changed != null && oldScore < changed.getCurrentScore()) {
- rematchNetworkAndRequests(changed, ReapUnvalidatedNetworks.REAP, now);
- } else {
- final NetworkAgentInfo[] nais = mNetworkAgentInfos.values().toArray(
- new NetworkAgentInfo[mNetworkAgentInfos.size()]);
- // Rematch higher scoring networks first to prevent requests first matching a lower
- // scoring network and then a higher scoring network, which could produce multiple
- // callbacks and inadvertently unlinger networks.
- Arrays.sort(nais);
- for (NetworkAgentInfo nai : nais) {
- rematchNetworkAndRequests(nai,
- // Only reap the last time through the loop. Reaping before all rematching
- // is complete could incorrectly teardown a network that hasn't yet been
- // rematched.
- (nai != nais[nais.length-1]) ? ReapUnvalidatedNetworks.DONT_REAP
- : ReapUnvalidatedNetworks.REAP,
- now);
+ final NetworkAgentInfo oldDefaultNetwork = getDefaultNetwork();
+
+ final NetworkAgentInfo[] nais = mNetworkAgentInfos.values().toArray(
+ new NetworkAgentInfo[mNetworkAgentInfos.size()]);
+ // Rematch higher scoring networks first to prevent requests first matching a lower
+ // scoring network and then a higher scoring network, which could produce multiple
+ // callbacks.
+ Arrays.sort(nais);
+ for (final NetworkAgentInfo nai : nais) {
+ rematchNetworkAndRequests(nai, now);
+ }
+
+ final NetworkAgentInfo newDefaultNetwork = getDefaultNetwork();
+
+ for (final NetworkAgentInfo nai : nais) {
+ // Rematching may have altered the linger state of some networks, so update all linger
+ // timers. updateLingerState reads the state from the network agent and does nothing
+ // if the state has not changed : the source of truth is controlled with
+ // NetworkAgentInfo#lingerRequest and NetworkAgentInfo#unlingerRequest, which have been
+ // called while rematching the individual networks above.
+ updateLingerState(nai, now);
+ }
+
+ updateLegacyTypeTrackerAndVpnLockdownForRematch(oldDefaultNetwork, newDefaultNetwork, nais);
+
+ // Tear down all unneeded networks.
+ for (NetworkAgentInfo nai : mNetworkAgentInfos.values()) {
+ if (unneeded(nai, UnneededFor.TEARDOWN)) {
+ if (nai.getLingerExpiry() > 0) {
+ // This network has active linger timers and no requests, but is not
+ // lingering. Linger it.
+ //
+ // One way (the only way?) this can happen if this network is unvalidated
+ // and became unneeded due to another network improving its score to the
+ // point where this network will no longer be able to satisfy any requests
+ // even if it validates.
+ updateLingerState(nai, now);
+ } else {
+ if (DBG) log("Reaping " + nai.name());
+ teardownUnneededNetwork(nai);
+ }
}
}
}
+ private void updateLegacyTypeTrackerAndVpnLockdownForRematch(
+ @Nullable final NetworkAgentInfo oldDefaultNetwork,
+ @Nullable final NetworkAgentInfo newDefaultNetwork,
+ @NonNull final NetworkAgentInfo[] nais) {
+ if (oldDefaultNetwork != newDefaultNetwork) {
+ // Maintain the illusion : since the legacy API only understands one network at a time,
+ // if the default network changed, apps should see a disconnected broadcast for the
+ // old default network before they see a connected broadcast for the new one.
+ if (oldDefaultNetwork != null) {
+ mLegacyTypeTracker.remove(oldDefaultNetwork.networkInfo.getType(),
+ oldDefaultNetwork, true);
+ }
+ if (newDefaultNetwork != null) {
+ // The new default network can be newly null if and only if the old default
+ // network doesn't satisfy the default request any more because it lost a
+ // capability.
+ mDefaultInetConditionPublished = newDefaultNetwork.lastValidated ? 100 : 0;
+ mLegacyTypeTracker.add(newDefaultNetwork.networkInfo.getType(), newDefaultNetwork);
+ // If the legacy VPN is connected, notifyLockdownVpn may end up sending a broadcast
+ // to reflect the NetworkInfo of this new network. This broadcast has to be sent
+ // after the disconnect broadcasts above, but before the broadcasts sent by the
+ // legacy type tracker below.
+ // TODO : refactor this, it's too complex
+ notifyLockdownVpn(newDefaultNetwork);
+ }
+ }
+
+ // Now that all the callbacks have been sent, send the legacy network broadcasts
+ // as needed. This is necessary so that legacy requests correctly bind dns
+ // requests to this network. The legacy users are listening for this broadcast
+ // and will generally do a dns request so they can ensureRouteToHost and if
+ // they do that before the callbacks happen they'll use the default network.
+ //
+ // TODO: Is there still a race here? The legacy broadcast will be sent after sending
+ // callbacks, but if apps can receive the broadcast before the callback, they still might
+ // have an inconsistent view of networking.
+ //
+ // This *does* introduce a race where if the user uses the new api
+ // (notification callbacks) and then uses the old api (getNetworkInfo(type))
+ // they may get old info. Reverse this after the old startUsing api is removed.
+ // This is on top of the multiple intent sequencing referenced in the todo above.
+ for (NetworkAgentInfo nai : nais) {
+ addNetworkToLegacyTypeTracker(nai);
+ }
+ }
+
+ private void addNetworkToLegacyTypeTracker(@NonNull final NetworkAgentInfo nai) {
+ for (int i = 0; i < nai.numNetworkRequests(); i++) {
+ NetworkRequest nr = nai.requestAt(i);
+ if (nr.legacyType != TYPE_NONE && nr.isRequest()) {
+ // legacy type tracker filters out repeat adds
+ mLegacyTypeTracker.add(nr.legacyType, nai);
+ }
+ }
+
+ // A VPN generally won't get added to the legacy tracker in the "for (nri)" loop above,
+ // because usually there are no NetworkRequests it satisfies (e.g., mDefaultRequest
+ // wants the NOT_VPN capability, so it will never be satisfied by a VPN). So, add the
+ // newNetwork to the tracker explicitly (it's a no-op if it has already been added).
+ if (nai.isVPN()) {
+ mLegacyTypeTracker.add(TYPE_VPN, nai);
+ }
+ }
+
private void updateInetCondition(NetworkAgentInfo nai) {
// Don't bother updating until we've graduated to validated at least once.
if (!nai.everValidated) return;
@@ -6707,8 +6751,7 @@
}
// Consider network even though it is not yet validated.
- final long now = SystemClock.elapsedRealtime();
- rematchNetworkAndRequests(networkAgent, ReapUnvalidatedNetworks.REAP, now);
+ rematchAllNetworksAndRequests();
// This has to happen after matching the requests, because callbacks are just requests.
notifyNetworkCallbacks(networkAgent, ConnectivityManager.CALLBACK_PRECHECK);
@@ -6729,7 +6772,7 @@
state == NetworkInfo.State.SUSPENDED)) {
// going into or coming out of SUSPEND: re-score and notify
if (networkAgent.getCurrentScore() != oldScore) {
- rematchAllNetworksAndRequests(networkAgent, oldScore);
+ rematchAllNetworksAndRequests();
}
updateCapabilities(networkAgent.getCurrentScore(), networkAgent,
networkAgent.networkCapabilities);
@@ -6743,19 +6786,9 @@
}
private void updateNetworkScore(NetworkAgentInfo nai, NetworkScore ns) {
- int score = ns.getIntExtension(NetworkScore.LEGACY_SCORE);
- if (VDBG || DDBG) log("updateNetworkScore for " + nai.name() + " to " + score);
- if (score < 0) {
- loge("updateNetworkScore for " + nai.name() + " got a negative score (" + score +
- "). Bumping score to min of 0");
- score = 0;
- }
-
- final int oldScore = nai.getCurrentScore();
+ if (VDBG || DDBG) log("updateNetworkScore for " + nai.name() + " to " + ns);
nai.setNetworkScore(ns);
-
- rematchAllNetworksAndRequests(nai, oldScore);
-
+ rematchAllNetworksAndRequests();
sendUpdatedScoreToFactories(nai);
}
@@ -6990,7 +7023,7 @@
@Override
public String getCaptivePortalServerUrl() {
- enforceConnectivityInternalPermission();
+ enforceNetworkStackOrSettingsPermission();
String settingUrl = mContext.getResources().getString(
R.string.config_networkCaptivePortalServerUrl);
@@ -7043,7 +7076,7 @@
@Override
public void factoryReset() {
- enforceConnectivityInternalPermission();
+ enforceSettingsPermission();
if (mUserManager.hasUserRestriction(UserManager.DISALLOW_NETWORK_RESET)) {
return;
diff --git a/services/core/java/com/android/server/EventLogTags.logtags b/services/core/java/com/android/server/EventLogTags.logtags
index bec08f4..b595eb1 100644
--- a/services/core/java/com/android/server/EventLogTags.logtags
+++ b/services/core/java/com/android/server/EventLogTags.logtags
@@ -175,27 +175,6 @@
3121 pm_package_stats (manual_time|2|3),(quota_time|2|3),(manual_data|2|2),(quota_data|2|2),(manual_cache|2|2),(quota_cache|2|2)
# ---------------------------
-# WindowManagerService.java
-# ---------------------------
-# Out of memory for surfaces.
-31000 wm_no_surface_memory (Window|3),(PID|1|5),(Operation|3)
-# Task created.
-31001 wm_task_created (TaskId|1|5),(StackId|1|5)
-# Task moved to top (1) or bottom (0).
-31002 wm_task_moved (TaskId|1|5),(ToTop|1),(Index|1)
-# Task removed with source explanation.
-31003 wm_task_removed (TaskId|1|5),(Reason|3)
-# Stack created.
-31004 wm_stack_created (StackId|1|5)
-# Home stack moved to top (1) or bottom (0).
-31005 wm_home_stack_moved (ToTop|1)
-# Stack removed.
-31006 wm_stack_removed (StackId|1|5)
-# bootanim finished:
-31007 wm_boot_animation_done (time|2|3)
-
-
-# ---------------------------
# InputMethodManagerService.java
# ---------------------------
# Re-connecting to input method service because we haven't received its interface
diff --git a/services/core/java/com/android/server/LocationManagerService.java b/services/core/java/com/android/server/LocationManagerService.java
index 9ebe896..f3089c1 100644
--- a/services/core/java/com/android/server/LocationManagerService.java
+++ b/services/core/java/com/android/server/LocationManagerService.java
@@ -146,8 +146,13 @@
@Override
public void onBootPhase(int phase) {
- if (phase == SystemService.PHASE_THIRD_PARTY_APPS_CAN_START) {
- mService.systemRunning();
+ if (phase == PHASE_SYSTEM_SERVICES_READY) {
+ // the location service must be functioning after this boot phase
+ mService.onSystemReady();
+ } else if (phase == SystemService.PHASE_THIRD_PARTY_APPS_CAN_START) {
+ // some providers rely on third party code, so we wait to initialize
+ // providers until third party code is allowed to run
+ mService.onSystemThirdPartyAppsCanStart();
}
}
}
@@ -264,156 +269,155 @@
userId -> mContext.getResources().getStringArray(
com.android.internal.R.array.config_locationExtraPackageNames));
- // most startup is deferred until systemRunning()
+ // most startup is deferred until systemReady()
}
- private void systemRunning() {
+ private void onSystemReady() {
synchronized (mLock) {
- initializeLocked();
- }
- }
+ mPackageManager = mContext.getPackageManager();
+ mAppOps = mContext.getSystemService(AppOpsManager.class);
+ mPowerManager = mContext.getSystemService(PowerManager.class);
+ mActivityManager = mContext.getSystemService(ActivityManager.class);
+ mUserManager = mContext.getSystemService(UserManager.class);
- @GuardedBy("mLock")
- private void initializeLocked() {
- mPackageManager = mContext.getPackageManager();
- mAppOps = mContext.getSystemService(AppOpsManager.class);
- mPowerManager = mContext.getSystemService(PowerManager.class);
- mActivityManager = mContext.getSystemService(ActivityManager.class);
- mUserManager = mContext.getSystemService(UserManager.class);
+ mSettingsStore = new LocationSettingsStore(mContext, mHandler);
+ mLocationFudger = new LocationFudger(mContext, mHandler);
+ mGeofenceManager = new GeofenceManager(mContext, mSettingsStore);
- mSettingsStore = new LocationSettingsStore(mContext, mHandler);
+ PowerManagerInternal localPowerManager =
+ LocalServices.getService(PowerManagerInternal.class);
- mLocationFudger = new LocationFudger(mContext, mHandler);
- mGeofenceManager = new GeofenceManager(mContext, mSettingsStore);
-
- PowerManagerInternal localPowerManager =
- LocalServices.getService(PowerManagerInternal.class);
-
- // prepare providers
- initializeProvidersLocked();
-
- // add listeners
- mAppOps.startWatchingMode(
- AppOpsManager.OP_COARSE_LOCATION,
- null,
- AppOpsManager.WATCH_FOREGROUND_CHANGES,
- new AppOpsManager.OnOpChangedInternalListener() {
- public void onOpChanged(int op, String packageName) {
- // onOpChanged invoked on ui thread, move to our thread to reduce risk of
+ // add listeners
+ mAppOps.startWatchingMode(
+ AppOpsManager.OP_COARSE_LOCATION,
+ null,
+ AppOpsManager.WATCH_FOREGROUND_CHANGES,
+ new AppOpsManager.OnOpChangedInternalListener() {
+ public void onOpChanged(int op, String packageName) {
+ // onOpChanged invoked on ui thread, move to our thread to reduce risk
+ // of blocking ui thread
+ mHandler.post(() -> {
+ synchronized (mLock) {
+ onAppOpChangedLocked();
+ }
+ });
+ }
+ });
+ mPackageManager.addOnPermissionsChangeListener(
+ uid -> {
+ // listener invoked on ui thread, move to our thread to reduce risk of
// blocking ui thread
mHandler.post(() -> {
synchronized (mLock) {
- onAppOpChangedLocked();
+ onPermissionsChangedLocked();
}
});
- }
- });
- mPackageManager.addOnPermissionsChangeListener(
- uid -> {
- // listener invoked on ui thread, move to our thread to reduce risk of blocking
- // ui thread
- mHandler.post(() -> {
- synchronized (mLock) {
- onPermissionsChangedLocked();
- }
});
- });
- mActivityManager.addOnUidImportanceListener(
- (uid, importance) -> {
- // listener invoked on ui thread, move to our thread to reduce risk of blocking
- // ui thread
- mHandler.post(() -> {
- synchronized (mLock) {
- onUidImportanceChangedLocked(uid, importance);
- }
+ mActivityManager.addOnUidImportanceListener(
+ (uid, importance) -> {
+ // listener invoked on ui thread, move to our thread to reduce risk of
+ // blocking ui thread
+ mHandler.post(() -> {
+ synchronized (mLock) {
+ onUidImportanceChangedLocked(uid, importance);
+ }
+ });
+ },
+ FOREGROUND_IMPORTANCE_CUTOFF);
+
+ localPowerManager.registerLowPowerModeObserver(ServiceType.LOCATION,
+ state -> {
+ // listener invoked on ui thread, move to our thread to reduce risk of
+ // blocking ui thread
+ mHandler.post(() -> {
+ synchronized (mLock) {
+ onBatterySaverModeChangedLocked(state.locationMode);
+ }
+ });
});
- },
- FOREGROUND_IMPORTANCE_CUTOFF);
+ mBatterySaverMode = mPowerManager.getLocationPowerSaveMode();
- localPowerManager.registerLowPowerModeObserver(ServiceType.LOCATION,
- state -> {
- // listener invoked on ui thread, move to our thread to reduce risk of blocking
- // ui thread
- mHandler.post(() -> {
- synchronized (mLock) {
- onBatterySaverModeChangedLocked(state.locationMode);
- }
- });
- });
- mBatterySaverMode = mPowerManager.getLocationPowerSaveMode();
-
- mSettingsStore.addOnLocationEnabledChangedListener(() -> {
- synchronized (mLock) {
- onLocationModeChangedLocked(true);
- }
- });
- mSettingsStore.addOnLocationProvidersAllowedChangedListener(() -> {
- synchronized (mLock) {
- onProviderAllowedChangedLocked();
- }
- });
- mSettingsStore.addOnBackgroundThrottleIntervalChangedListener(() -> {
- synchronized (mLock) {
- onBackgroundThrottleIntervalChangedLocked();
- }
- });
- mSettingsStore.addOnBackgroundThrottlePackageWhitelistChangedListener(() -> {
- synchronized (mLock) {
- onBackgroundThrottleWhitelistChangedLocked();
- }
- });
- mSettingsStore.addOnIgnoreSettingsPackageWhitelistChangedListener(() -> {
- synchronized (mLock) {
- onIgnoreSettingsWhitelistChangedLocked();
- }
- });
-
- new PackageMonitor() {
- @Override
- public void onPackageDisappeared(String packageName, int reason) {
+ mSettingsStore.addOnLocationEnabledChangedListener((userId) -> {
synchronized (mLock) {
- LocationManagerService.this.onPackageDisappearedLocked(packageName);
+ onLocationModeChangedLocked(userId, true);
}
- }
- }.register(mContext, mHandler.getLooper(), true);
-
- IntentFilter intentFilter = new IntentFilter();
- intentFilter.addAction(Intent.ACTION_USER_SWITCHED);
- intentFilter.addAction(Intent.ACTION_MANAGED_PROFILE_ADDED);
- intentFilter.addAction(Intent.ACTION_MANAGED_PROFILE_REMOVED);
- intentFilter.addAction(Intent.ACTION_SCREEN_OFF);
- intentFilter.addAction(Intent.ACTION_SCREEN_ON);
-
- mContext.registerReceiverAsUser(new BroadcastReceiver() {
- @Override
- public void onReceive(Context context, Intent intent) {
- final String action = intent.getAction();
- if (action == null) {
- return;
- }
+ });
+ mSettingsStore.addOnLocationProvidersAllowedChangedListener((userId) -> {
synchronized (mLock) {
- switch (action) {
- case Intent.ACTION_USER_SWITCHED:
- onUserChangedLocked(intent.getIntExtra(Intent.EXTRA_USER_HANDLE, 0));
- break;
- case Intent.ACTION_MANAGED_PROFILE_ADDED:
- case Intent.ACTION_MANAGED_PROFILE_REMOVED:
- onUserProfilesChangedLocked();
- break;
- case Intent.ACTION_SCREEN_ON:
- case Intent.ACTION_SCREEN_OFF:
- onScreenStateChangedLocked();
- break;
+ onProviderAllowedChangedLocked(userId);
+ }
+ });
+ mSettingsStore.addOnBackgroundThrottleIntervalChangedListener(() -> {
+ synchronized (mLock) {
+ onBackgroundThrottleIntervalChangedLocked();
+ }
+ });
+ mSettingsStore.addOnBackgroundThrottlePackageWhitelistChangedListener(() -> {
+ synchronized (mLock) {
+ onBackgroundThrottleWhitelistChangedLocked();
+ }
+ });
+ mSettingsStore.addOnIgnoreSettingsPackageWhitelistChangedListener(() -> {
+ synchronized (mLock) {
+ onIgnoreSettingsWhitelistChangedLocked();
+ }
+ });
+
+ new PackageMonitor() {
+ @Override
+ public void onPackageDisappeared(String packageName, int reason) {
+ synchronized (mLock) {
+ LocationManagerService.this.onPackageDisappearedLocked(packageName);
}
}
- }
- }, UserHandle.ALL, intentFilter, null, mHandler);
+ }.register(mContext, mHandler.getLooper(), true);
- // switching the user from null to system here performs the bulk of the initialization work.
- // the user being changed will cause a reload of all user specific settings, which causes
- // provider initialization, and propagates changes until a steady state is reached
- mCurrentUserId = UserHandle.USER_NULL;
- onUserChangedLocked(ActivityManager.getCurrentUser());
+ IntentFilter intentFilter = new IntentFilter();
+ intentFilter.addAction(Intent.ACTION_USER_SWITCHED);
+ intentFilter.addAction(Intent.ACTION_MANAGED_PROFILE_ADDED);
+ intentFilter.addAction(Intent.ACTION_MANAGED_PROFILE_REMOVED);
+ intentFilter.addAction(Intent.ACTION_SCREEN_OFF);
+ intentFilter.addAction(Intent.ACTION_SCREEN_ON);
+
+ mContext.registerReceiverAsUser(new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ final String action = intent.getAction();
+ if (action == null) {
+ return;
+ }
+ synchronized (mLock) {
+ switch (action) {
+ case Intent.ACTION_USER_SWITCHED:
+ onUserChangedLocked(
+ intent.getIntExtra(Intent.EXTRA_USER_HANDLE, 0));
+ break;
+ case Intent.ACTION_MANAGED_PROFILE_ADDED:
+ case Intent.ACTION_MANAGED_PROFILE_REMOVED:
+ onUserProfilesChangedLocked();
+ break;
+ case Intent.ACTION_SCREEN_ON:
+ case Intent.ACTION_SCREEN_OFF:
+ onScreenStateChangedLocked();
+ break;
+ }
+ }
+ }
+ }, UserHandle.ALL, intentFilter, null, mHandler);
+
+ // switching the user from null to system here performs the bulk of the initialization
+ // work. the user being changed will cause a reload of all user specific settings, which
+ // causes initialization, and propagates changes until a steady state is reached
+ mCurrentUserId = UserHandle.USER_NULL;
+ onUserChangedLocked(ActivityManager.getCurrentUser());
+ }
+ }
+
+ private void onSystemThirdPartyAppsCanStart() {
+ synchronized (mLock) {
+ // prepare providers
+ initializeProvidersLocked();
+ }
}
@GuardedBy("mLock")
@@ -463,7 +467,11 @@
}
@GuardedBy("mLock")
- private void onLocationModeChangedLocked(boolean broadcast) {
+ private void onLocationModeChangedLocked(int userId, boolean broadcast) {
+ if (!isCurrentProfileLocked(userId)) {
+ return;
+ }
+
if (D) {
Log.d(TAG, "location enabled is now " + isLocationEnabled());
}
@@ -482,7 +490,11 @@
}
@GuardedBy("mLock")
- private void onProviderAllowedChangedLocked() {
+ private void onProviderAllowedChangedLocked(int userId) {
+ if (!isCurrentProfileLocked(userId)) {
+ return;
+ }
+
for (LocationProvider p : mProviders) {
p.onAllowedChangedLocked();
}
@@ -795,8 +807,8 @@
onUserProfilesChangedLocked();
// if the user changes, per-user settings may also have changed
- onLocationModeChangedLocked(false);
- onProviderAllowedChangedLocked();
+ onLocationModeChangedLocked(userId, false);
+ onProviderAllowedChangedLocked(userId);
// always force useability to be rechecked, even if no per-user settings have changed
for (LocationProvider p : mProviders) {
diff --git a/services/core/java/com/android/server/NetworkManagementService.java b/services/core/java/com/android/server/NetworkManagementService.java
index 9efaad8..e79a289 100644
--- a/services/core/java/com/android/server/NetworkManagementService.java
+++ b/services/core/java/com/android/server/NetworkManagementService.java
@@ -16,9 +16,8 @@
package com.android.server;
-import static android.Manifest.permission.CONNECTIVITY_INTERNAL;
import static android.Manifest.permission.NETWORK_SETTINGS;
-import static android.Manifest.permission.NETWORK_STACK;
+import static android.Manifest.permission.OBSERVE_NETWORK_POLICY;
import static android.Manifest.permission.SHUTDOWN;
import static android.net.INetd.FIREWALL_BLACKLIST;
import static android.net.INetd.FIREWALL_CHAIN_DOZABLE;
@@ -54,6 +53,7 @@
import android.net.LinkAddress;
import android.net.Network;
import android.net.NetworkPolicyManager;
+import android.net.NetworkStack;
import android.net.NetworkStats;
import android.net.NetworkUtils;
import android.net.RouteInfo;
@@ -312,13 +312,13 @@
@Override
public void registerObserver(INetworkManagementEventObserver observer) {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+ NetworkStack.checkNetworkStackPermission(mContext);
mObservers.register(observer);
}
@Override
public void unregisterObserver(INetworkManagementEventObserver observer) {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+ NetworkStack.checkNetworkStackPermission(mContext);
mObservers.unregister(observer);
}
@@ -453,7 +453,7 @@
@Override
public void registerTetheringStatsProvider(ITetheringStatsProvider provider, String name) {
- mContext.enforceCallingOrSelfPermission(NETWORK_STACK, TAG);
+ NetworkStack.checkNetworkStackPermission(mContext);
Preconditions.checkNotNull(provider);
synchronized(mTetheringStatsProviders) {
mTetheringStatsProviders.put(provider, name);
@@ -462,7 +462,7 @@
@Override
public void unregisterTetheringStatsProvider(ITetheringStatsProvider provider) {
- mContext.enforceCallingOrSelfPermission(NETWORK_STACK, TAG);
+ NetworkStack.checkNetworkStackPermission(mContext);
synchronized(mTetheringStatsProviders) {
mTetheringStatsProviders.remove(provider);
}
@@ -470,7 +470,7 @@
@Override
public void tetherLimitReached(ITetheringStatsProvider provider) {
- mContext.enforceCallingOrSelfPermission(NETWORK_STACK, TAG);
+ NetworkStack.checkNetworkStackPermission(mContext);
synchronized(mTetheringStatsProviders) {
if (!mTetheringStatsProviders.containsKey(provider)) {
return;
@@ -737,7 +737,7 @@
//
@Override
public String[] listInterfaces() {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+ NetworkStack.checkNetworkStackPermission(mContext);
try {
return mNetdService.interfaceGetList();
} catch (RemoteException | ServiceSpecificException e) {
@@ -787,7 +787,7 @@
@Override
public InterfaceConfiguration getInterfaceConfig(String iface) {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+ NetworkStack.checkNetworkStackPermission(mContext);
final InterfaceConfigurationParcel result;
try {
result = mNetdService.interfaceGetCfg(iface);
@@ -805,7 +805,7 @@
@Override
public void setInterfaceConfig(String iface, InterfaceConfiguration cfg) {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+ NetworkStack.checkNetworkStackPermission(mContext);
LinkAddress linkAddr = cfg.getLinkAddress();
if (linkAddr == null || linkAddr.getAddress() == null) {
throw new IllegalStateException("Null LinkAddress given");
@@ -822,7 +822,7 @@
@Override
public void setInterfaceDown(String iface) {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+ NetworkStack.checkNetworkStackPermission(mContext);
final InterfaceConfiguration ifcg = getInterfaceConfig(iface);
ifcg.setInterfaceDown();
setInterfaceConfig(iface, ifcg);
@@ -830,7 +830,7 @@
@Override
public void setInterfaceUp(String iface) {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+ NetworkStack.checkNetworkStackPermission(mContext);
final InterfaceConfiguration ifcg = getInterfaceConfig(iface);
ifcg.setInterfaceUp();
setInterfaceConfig(iface, ifcg);
@@ -838,7 +838,7 @@
@Override
public void setInterfaceIpv6PrivacyExtensions(String iface, boolean enable) {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+ NetworkStack.checkNetworkStackPermission(mContext);
try {
mNetdService.interfaceSetIPv6PrivacyExtensions(iface, enable);
} catch (RemoteException | ServiceSpecificException e) {
@@ -850,7 +850,7 @@
IPv6 addresses on interface down, but we need to do full clean up here */
@Override
public void clearInterfaceAddresses(String iface) {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+ NetworkStack.checkNetworkStackPermission(mContext);
try {
mNetdService.interfaceClearAddrs(iface);
} catch (RemoteException | ServiceSpecificException e) {
@@ -860,7 +860,7 @@
@Override
public void enableIpv6(String iface) {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+ NetworkStack.checkNetworkStackPermission(mContext);
try {
mNetdService.interfaceSetEnableIPv6(iface, true);
} catch (RemoteException | ServiceSpecificException e) {
@@ -879,7 +879,7 @@
@Override
public void disableIpv6(String iface) {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+ NetworkStack.checkNetworkStackPermission(mContext);
try {
mNetdService.interfaceSetEnableIPv6(iface, false);
} catch (RemoteException | ServiceSpecificException e) {
@@ -898,7 +898,7 @@
}
private void modifyRoute(boolean add, int netId, RouteInfo route) {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+ NetworkStack.checkNetworkStackPermission(mContext);
final String ifName = route.getInterface();
final String dst = route.getDestination().toString();
@@ -963,7 +963,7 @@
@Override
public void setMtu(String iface, int mtu) {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+ NetworkStack.checkNetworkStackPermission(mContext);
try {
mNetdService.interfaceSetMtu(iface, mtu);
@@ -982,7 +982,7 @@
@Override
public boolean getIpForwardingEnabled() throws IllegalStateException{
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+ NetworkStack.checkNetworkStackPermission(mContext);
try {
final boolean isEnabled = mNetdService.ipfwdEnabled();
@@ -994,7 +994,7 @@
@Override
public void setIpForwardingEnabled(boolean enable) {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+ NetworkStack.checkNetworkStackPermission(mContext);
try {
if (enable) {
mNetdService.ipfwdEnableForwarding("tethering");
@@ -1013,7 +1013,7 @@
@Override
public void startTetheringWithConfiguration(boolean usingLegacyDnsProxy, String[] dhcpRange) {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+ NetworkStack.checkNetworkStackPermission(mContext);
// an odd number of addrs will fail
try {
mNetdService.tetherStartWithConfiguration(usingLegacyDnsProxy, dhcpRange);
@@ -1024,7 +1024,7 @@
@Override
public void stopTethering() {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+ NetworkStack.checkNetworkStackPermission(mContext);
try {
mNetdService.tetherStop();
} catch (RemoteException | ServiceSpecificException e) {
@@ -1034,7 +1034,7 @@
@Override
public boolean isTetheringStarted() {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+ NetworkStack.checkNetworkStackPermission(mContext);
try {
final boolean isEnabled = mNetdService.tetherIsEnabled();
@@ -1046,7 +1046,7 @@
@Override
public void tetherInterface(String iface) {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+ NetworkStack.checkNetworkStackPermission(mContext);
try {
mNetdService.tetherInterfaceAdd(iface);
} catch (RemoteException | ServiceSpecificException e) {
@@ -1061,7 +1061,7 @@
@Override
public void untetherInterface(String iface) {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+ NetworkStack.checkNetworkStackPermission(mContext);
try {
mNetdService.tetherInterfaceRemove(iface);
} catch (RemoteException | ServiceSpecificException e) {
@@ -1073,7 +1073,7 @@
@Override
public String[] listTetheredInterfaces() {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+ NetworkStack.checkNetworkStackPermission(mContext);
try {
return mNetdService.tetherInterfaceList();
} catch (RemoteException | ServiceSpecificException e) {
@@ -1083,7 +1083,7 @@
@Override
public void setDnsForwarders(Network network, String[] dns) {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+ NetworkStack.checkNetworkStackPermission(mContext);
int netId = (network != null) ? network.netId : ConnectivityManager.NETID_UNSET;
@@ -1096,7 +1096,7 @@
@Override
public String[] getDnsForwarders() {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+ NetworkStack.checkNetworkStackPermission(mContext);
try {
return mNetdService.tetherDnsList();
} catch (RemoteException | ServiceSpecificException e) {
@@ -1127,19 +1127,19 @@
@Override
public void startInterfaceForwarding(String fromIface, String toIface) {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+ NetworkStack.checkNetworkStackPermission(mContext);
modifyInterfaceForward(true, fromIface, toIface);
}
@Override
public void stopInterfaceForwarding(String fromIface, String toIface) {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+ NetworkStack.checkNetworkStackPermission(mContext);
modifyInterfaceForward(false, fromIface, toIface);
}
@Override
public void enableNat(String internalInterface, String externalInterface) {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+ NetworkStack.checkNetworkStackPermission(mContext);
try {
mNetdService.tetherAddForward(internalInterface, externalInterface);
} catch (RemoteException | ServiceSpecificException e) {
@@ -1149,7 +1149,7 @@
@Override
public void disableNat(String internalInterface, String externalInterface) {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+ NetworkStack.checkNetworkStackPermission(mContext);
try {
mNetdService.tetherRemoveForward(internalInterface, externalInterface);
} catch (RemoteException | ServiceSpecificException e) {
@@ -1159,7 +1159,7 @@
@Override
public void addIdleTimer(String iface, int timeout, final int type) {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+ NetworkStack.checkNetworkStackPermission(mContext);
if (DBG) Slog.d(TAG, "Adding idletimer");
@@ -1189,7 +1189,7 @@
@Override
public void removeIdleTimer(String iface) {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+ NetworkStack.checkNetworkStackPermission(mContext);
if (DBG) Slog.d(TAG, "Removing idletimer");
@@ -1213,7 +1213,7 @@
@Override
public void setInterfaceQuota(String iface, long quotaBytes) {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+ NetworkStack.checkNetworkStackPermission(mContext);
synchronized (mQuotaLock) {
if (mActiveQuotas.containsKey(iface)) {
@@ -1244,7 +1244,7 @@
@Override
public void removeInterfaceQuota(String iface) {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+ NetworkStack.checkNetworkStackPermission(mContext);
synchronized (mQuotaLock) {
if (!mActiveQuotas.containsKey(iface)) {
@@ -1277,7 +1277,7 @@
@Override
public void setInterfaceAlert(String iface, long alertBytes) {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+ NetworkStack.checkNetworkStackPermission(mContext);
// quick sanity check
if (!mActiveQuotas.containsKey(iface)) {
@@ -1301,7 +1301,7 @@
@Override
public void removeInterfaceAlert(String iface) {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+ NetworkStack.checkNetworkStackPermission(mContext);
synchronized (mQuotaLock) {
if (!mActiveAlerts.containsKey(iface)) {
@@ -1321,7 +1321,7 @@
@Override
public void setGlobalAlert(long alertBytes) {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+ NetworkStack.checkNetworkStackPermission(mContext);
try {
mNetdService.bandwidthSetGlobalAlert(alertBytes);
@@ -1331,7 +1331,7 @@
}
private void setUidOnMeteredNetworkList(int uid, boolean blacklist, boolean enable) {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+ NetworkStack.checkNetworkStackPermission(mContext);
synchronized (mQuotaLock) {
boolean oldEnable;
@@ -1431,7 +1431,7 @@
@Override
public void setAllowOnlyVpnForUids(boolean add, UidRange[] uidRanges)
throws ServiceSpecificException {
- mContext.enforceCallingOrSelfPermission(NETWORK_STACK, TAG);
+ NetworkStack.checkNetworkStackPermission(mContext);
try {
mNetdService.networkRejectNonSecureVpn(add, toStableParcels(uidRanges));
} catch (ServiceSpecificException e) {
@@ -1472,7 +1472,7 @@
@Override
public void setUidCleartextNetworkPolicy(int uid, int policy) {
if (Binder.getCallingUid() != uid) {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+ NetworkStack.checkNetworkStackPermission(mContext);
}
synchronized (mQuotaLock) {
@@ -1506,7 +1506,6 @@
@Override
public boolean isBandwidthControlEnabled() {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
return true;
}
@@ -1557,7 +1556,7 @@
@Override
public NetworkStats getNetworkStatsTethering(int how) {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+ NetworkStack.checkNetworkStackPermission(mContext);
final NetworkStats stats = new NetworkStats(SystemClock.elapsedRealtime(), 1);
synchronized (mTetheringStatsProviders) {
@@ -1575,7 +1574,7 @@
@Override
public void addVpnUidRanges(int netId, UidRange[] ranges) {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+ NetworkStack.checkNetworkStackPermission(mContext);
try {
mNetdService.networkAddUidRanges(netId, toStableParcels(ranges));
@@ -1586,7 +1585,7 @@
@Override
public void removeVpnUidRanges(int netId, UidRange[] ranges) {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+ NetworkStack.checkNetworkStackPermission(mContext);
try {
mNetdService.networkRemoveUidRanges(netId, toStableParcels(ranges));
} catch (RemoteException | ServiceSpecificException e) {
@@ -2020,7 +2019,7 @@
}
private void modifyInterfaceInNetwork(boolean add, int netId, String iface) {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+ NetworkStack.checkNetworkStackPermission(mContext);
try {
if (add) {
mNetdService.networkAddInterface(netId, iface);
@@ -2034,7 +2033,7 @@
@Override
public void addLegacyRouteForNetId(int netId, RouteInfo routeInfo, int uid) {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+ NetworkStack.checkNetworkStackPermission(mContext);
final LinkAddress la = routeInfo.getDestinationLinkAddress();
final String ifName = routeInfo.getInterface();
@@ -2055,7 +2054,7 @@
@Override
public void setDefaultNetId(int netId) {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+ NetworkStack.checkNetworkStackPermission(mContext);
try {
mNetdService.networkSetDefault(netId);
@@ -2066,7 +2065,7 @@
@Override
public void clearDefaultNetId() {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+ NetworkStack.checkNetworkStackPermission(mContext);
try {
mNetdService.networkClearDefault();
@@ -2077,7 +2076,7 @@
@Override
public void setNetworkPermission(int netId, int permission) {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+ NetworkStack.checkNetworkStackPermission(mContext);
try {
mNetdService.networkSetPermissionForNetwork(netId, permission);
@@ -2088,7 +2087,7 @@
@Override
public void allowProtect(int uid) {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+ NetworkStack.checkNetworkStackPermission(mContext);
try {
mNetdService.networkSetProtectAllow(uid);
@@ -2099,7 +2098,7 @@
@Override
public void denyProtect(int uid) {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+ NetworkStack.checkNetworkStackPermission(mContext);
try {
mNetdService.networkSetProtectDeny(uid);
@@ -2145,7 +2144,7 @@
@Override
public boolean isNetworkRestricted(int uid) {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+ mContext.enforceCallingOrSelfPermission(OBSERVE_NETWORK_POLICY, TAG);
return isNetworkRestrictedInternal(uid);
}
diff --git a/services/core/java/com/android/server/NetworkScoreService.java b/services/core/java/com/android/server/NetworkScoreService.java
index df5005e..b26ef92 100644
--- a/services/core/java/com/android/server/NetworkScoreService.java
+++ b/services/core/java/com/android/server/NetworkScoreService.java
@@ -58,12 +58,10 @@
import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.content.PackageMonitor;
-import com.android.internal.os.TransferPipe;
import com.android.internal.util.DumpUtils;
import com.android.server.pm.permission.PermissionManagerServiceInternal;
import java.io.FileDescriptor;
-import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collection;
@@ -903,17 +901,6 @@
}
writer.println("Current scorer: " + currentScorer);
- sendCacheUpdateCallback(new BiConsumer<INetworkScoreCache, Object>() {
- @Override
- public void accept(INetworkScoreCache networkScoreCache, Object cookie) {
- try {
- TransferPipe.dumpAsync(networkScoreCache.asBinder(), fd, args);
- } catch (IOException | RemoteException e) {
- writer.println("Failed to dump score cache: " + e);
- }
- }
- }, getScoreCacheLists());
-
synchronized (mServiceConnectionLock) {
if (mServiceConnection != null) {
mServiceConnection.dump(fd, writer, args);
diff --git a/services/core/java/com/android/server/NsdService.java b/services/core/java/com/android/server/NsdService.java
index 3efef01..b9b7bf7 100644
--- a/services/core/java/com/android/server/NsdService.java
+++ b/services/core/java/com/android/server/NsdService.java
@@ -16,19 +16,18 @@
package com.android.server;
-import android.content.Context;
import android.content.ContentResolver;
+import android.content.Context;
import android.content.Intent;
-import android.content.pm.PackageManager;
import android.database.ContentObserver;
+import android.net.NetworkStack;
import android.net.Uri;
-import android.net.nsd.NsdServiceInfo;
import android.net.nsd.DnsSdTxtRecord;
import android.net.nsd.INsdManager;
import android.net.nsd.NsdManager;
-import android.os.Binder;
-import android.os.HandlerThread;
+import android.net.nsd.NsdServiceInfo;
import android.os.Handler;
+import android.os.HandlerThread;
import android.os.Message;
import android.os.Messenger;
import android.os.UserHandle;
@@ -38,6 +37,12 @@
import android.util.SparseArray;
import android.util.SparseIntArray;
+import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.util.AsyncChannel;
+import com.android.internal.util.DumpUtils;
+import com.android.internal.util.State;
+import com.android.internal.util.StateMachine;
+
import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.net.InetAddress;
@@ -45,13 +50,6 @@
import java.util.HashMap;
import java.util.concurrent.CountDownLatch;
-import com.android.internal.annotations.VisibleForTesting;
-import com.android.internal.util.AsyncChannel;
-import com.android.internal.util.DumpUtils;
-import com.android.internal.util.Protocol;
-import com.android.internal.util.State;
-import com.android.internal.util.StateMachine;
-
/**
* Network Service Discovery Service handles remote service discovery operation requests by
* implementing the INsdManager interface.
@@ -565,8 +563,7 @@
}
public void setEnabled(boolean isEnabled) {
- mContext.enforceCallingOrSelfPermission(android.Manifest.permission.CONNECTIVITY_INTERNAL,
- "NsdService");
+ NetworkStack.checkNetworkStackPermission(mContext);
mNsdSettings.putEnabledStatus(isEnabled);
notifyEnabled(isEnabled);
}
diff --git a/services/core/java/com/android/server/PackageWatchdog.java b/services/core/java/com/android/server/PackageWatchdog.java
index bc50956..2915257 100644
--- a/services/core/java/com/android/server/PackageWatchdog.java
+++ b/services/core/java/com/android/server/PackageWatchdog.java
@@ -200,7 +200,8 @@
}
/**
- * Registers {@code observer} to listen for package failures
+ * Registers {@code observer} to listen for package failures. Add a new ObserverInternal for
+ * this observer if it does not already exist.
*
* <p>Observers are expected to call this on boot. It does not specify any packages but
* it will resume observing any packages requested from a previous boot.
@@ -210,6 +211,11 @@
ObserverInternal internalObserver = mAllObservers.get(observer.getName());
if (internalObserver != null) {
internalObserver.registeredObserver = observer;
+ } else {
+ internalObserver = new ObserverInternal(observer.getName(), new ArrayList<>());
+ internalObserver.registeredObserver = observer;
+ mAllObservers.put(observer.getName(), internalObserver);
+ syncState("added new observer");
}
}
}
@@ -247,7 +253,14 @@
List<MonitoredPackage> packages = new ArrayList<>();
for (int i = 0; i < packageNames.size(); i++) {
// Health checks not available yet so health check state will start INACTIVE
- packages.add(new MonitoredPackage(packageNames.get(i), durationMs, false));
+ MonitoredPackage pkg = newMonitoredPackage(packageNames.get(i), durationMs, false);
+ if (pkg != null) {
+ packages.add(pkg);
+ }
+ }
+
+ if (packages.isEmpty()) {
+ return;
}
// Sync before we add the new packages to the observers. This will #pruneObservers,
@@ -408,6 +421,14 @@
* watchdog may drop observing packages with the old name.
*/
String getName();
+
+ /**
+ * An observer will not be pruned if this is set, even if the observer is not explicitly
+ * monitoring any packages.
+ */
+ default boolean isPersistent() {
+ return false;
+ }
}
long getTriggerFailureCount() {
@@ -619,7 +640,8 @@
if (!failedPackages.isEmpty()) {
onHealthCheckFailed(observer, failedPackages);
}
- if (observer.packages.isEmpty()) {
+ if (observer.packages.isEmpty() && (observer.registeredObserver == null
+ || !observer.registeredObserver.isPersistent())) {
Slog.i(TAG, "Discarding observer " + observer.name + ". All packages expired");
it.remove();
}
@@ -634,16 +656,8 @@
if (registeredObserver != null) {
Iterator<MonitoredPackage> it = failedPackages.iterator();
while (it.hasNext()) {
- String failedPackage = it.next().getName();
- Slog.i(TAG, "Explicit health check failed for package " + failedPackage);
- VersionedPackage versionedPkg = getVersionedPackage(failedPackage);
- if (versionedPkg == null) {
- Slog.w(TAG, "Explicit health check failed but could not find package "
- + failedPackage);
- // TODO(b/120598832): Skip. We only continue to pass tests for now since
- // the tests don't install any packages
- versionedPkg = new VersionedPackage(failedPackage, 0L);
- }
+ VersionedPackage versionedPkg = it.next().mPackage;
+ Slog.i(TAG, "Explicit health check failed for package " + versionedPkg);
registeredObserver.execute(versionedPkg);
}
}
@@ -654,7 +668,7 @@
@Nullable
private VersionedPackage getVersionedPackage(String packageName) {
final PackageManager pm = mContext.getPackageManager();
- if (pm == null) {
+ if (pm == null || TextUtils.isEmpty(packageName)) {
return null;
}
try {
@@ -848,7 +862,7 @@
public void updatePackagesLocked(List<MonitoredPackage> packages) {
for (int pIndex = 0; pIndex < packages.size(); pIndex++) {
MonitoredPackage p = packages.get(pIndex);
- this.packages.put(p.mName, p);
+ this.packages.put(p.getName(), p);
}
}
@@ -872,7 +886,7 @@
int newState = p.handleElapsedTimeLocked(elapsedMs);
if (oldState != HealthCheckState.FAILED
&& newState == HealthCheckState.FAILED) {
- Slog.i(TAG, "Package " + p.mName + " failed health check");
+ Slog.i(TAG, "Package " + p.getName() + " failed health check");
failedPackages.add(p);
}
if (p.isExpiredLocked()) {
@@ -925,9 +939,10 @@
ATTR_EXPLICIT_HEALTH_CHECK_DURATION));
boolean hasPassedHealthCheck = Boolean.parseBoolean(
parser.getAttributeValue(null, ATTR_PASSED_HEALTH_CHECK));
- if (!TextUtils.isEmpty(packageName)) {
- packages.add(watchdog.new MonitoredPackage(packageName, duration,
- healthCheckDuration, hasPassedHealthCheck));
+ MonitoredPackage pkg = watchdog.newMonitoredPackage(packageName,
+ duration, healthCheckDuration, hasPassedHealthCheck);
+ if (pkg != null) {
+ packages.add(pkg);
}
} catch (NumberFormatException e) {
Slog.wtf(TAG, "Skipping package for observer " + observerName, e);
@@ -963,6 +978,20 @@
int FAILED = 3;
}
+ MonitoredPackage newMonitoredPackage(
+ String name, long durationMs, boolean hasPassedHealthCheck) {
+ return newMonitoredPackage(name, durationMs, Long.MAX_VALUE, hasPassedHealthCheck);
+ }
+
+ MonitoredPackage newMonitoredPackage(String name, long durationMs, long healthCheckDurationMs,
+ boolean hasPassedHealthCheck) {
+ VersionedPackage pkg = getVersionedPackage(name);
+ if (pkg == null) {
+ return null;
+ }
+ return new MonitoredPackage(pkg, durationMs, healthCheckDurationMs, hasPassedHealthCheck);
+ }
+
/**
* Represents a package and its health check state along with the time
* it should be monitored for.
@@ -971,8 +1000,7 @@
* instances of this class.
*/
class MonitoredPackage {
- //TODO(b/120598832): VersionedPackage?
- private final String mName;
+ private final VersionedPackage mPackage;
// Times when package failures happen sorted in ascending order
@GuardedBy("mLock")
private final LongArrayQueue mFailureHistory = new LongArrayQueue();
@@ -996,13 +1024,9 @@
@GuardedBy("mLock")
private long mHealthCheckDurationMs = Long.MAX_VALUE;
- MonitoredPackage(String name, long durationMs, boolean hasPassedHealthCheck) {
- this(name, durationMs, Long.MAX_VALUE, hasPassedHealthCheck);
- }
-
- MonitoredPackage(String name, long durationMs, long healthCheckDurationMs,
- boolean hasPassedHealthCheck) {
- mName = name;
+ private MonitoredPackage(VersionedPackage pkg, long durationMs,
+ long healthCheckDurationMs, boolean hasPassedHealthCheck) {
+ mPackage = pkg;
mDurationMs = durationMs;
mHealthCheckDurationMs = healthCheckDurationMs;
mHasPassedHealthCheck = hasPassedHealthCheck;
@@ -1013,7 +1037,7 @@
@GuardedBy("mLock")
public void writeLocked(XmlSerializer out) throws IOException {
out.startTag(null, TAG_PACKAGE);
- out.attribute(null, ATTR_NAME, mName);
+ out.attribute(null, ATTR_NAME, getName());
out.attribute(null, ATTR_DURATION, String.valueOf(mDurationMs));
out.attribute(null, ATTR_EXPLICIT_HEALTH_CHECK_DURATION,
String.valueOf(mHealthCheckDurationMs));
@@ -1053,7 +1077,7 @@
public int setHealthCheckActiveLocked(long initialHealthCheckDurationMs) {
if (initialHealthCheckDurationMs <= 0) {
Slog.wtf(TAG, "Cannot set non-positive health check duration "
- + initialHealthCheckDurationMs + "ms for package " + mName
+ + initialHealthCheckDurationMs + "ms for package " + getName()
+ ". Using total duration " + mDurationMs + "ms instead");
initialHealthCheckDurationMs = mDurationMs;
}
@@ -1072,7 +1096,7 @@
@GuardedBy("mLock")
public int handleElapsedTimeLocked(long elapsedMs) {
if (elapsedMs <= 0) {
- Slog.w(TAG, "Cannot handle non-positive elapsed time for package " + mName);
+ Slog.w(TAG, "Cannot handle non-positive elapsed time for package " + getName());
return mHealthCheckState;
}
// Transitions to FAILED if now <= 0 and health check not passed
@@ -1105,7 +1129,7 @@
/** Returns the monitored package name. */
private String getName() {
- return mName;
+ return mPackage.getPackageName();
}
/**
@@ -1170,7 +1194,7 @@
} else {
mHealthCheckState = HealthCheckState.ACTIVE;
}
- Slog.i(TAG, "Updated health check state for package " + mName + ": "
+ Slog.i(TAG, "Updated health check state for package " + getName() + ": "
+ toString(oldState) + " -> " + toString(mHealthCheckState));
return mHealthCheckState;
}
diff --git a/services/core/java/com/android/server/StorageManagerService.java b/services/core/java/com/android/server/StorageManagerService.java
index 4a925aa..822fc90 100644
--- a/services/core/java/com/android/server/StorageManagerService.java
+++ b/services/core/java/com/android/server/StorageManagerService.java
@@ -80,6 +80,7 @@
import android.os.IStoraged;
import android.os.IVold;
import android.os.IVoldListener;
+import android.os.IVoldMountCallback;
import android.os.IVoldTaskListener;
import android.os.Looper;
import android.os.Message;
@@ -117,6 +118,7 @@
import android.util.ArrayMap;
import android.util.AtomicFile;
import android.util.DataUnit;
+import android.util.FeatureFlagUtils;
import android.util.Log;
import android.util.Pair;
import android.util.Slog;
@@ -348,17 +350,12 @@
@GuardedBy("mLock")
private ArrayMap<String, CountDownLatch> mDiskScanLatches = new ArrayMap<>();
- /** Map from volume ID to latches */
- @GuardedBy("mLock")
- private ArrayMap<String, CountDownLatch> mFuseVolumeReadyLatches = new ArrayMap<>();
-
@GuardedBy("mLock")
private IPackageMoveObserver mMoveCallback;
@GuardedBy("mLock")
private String mMoveTargetUuid;
- @Nullable
- private volatile String mMediaStoreAuthorityPackageName = null;
+ private volatile int mMediaStoreAuthorityAppId = -1;
private volatile int mCurrentUserId = UserHandle.USER_SYSTEM;
@@ -464,17 +461,6 @@
}
}
- private CountDownLatch findOrCreateFuseVolumeReadyLatch(String volId) {
- synchronized (mLock) {
- CountDownLatch latch = mFuseVolumeReadyLatches.get(volId);
- if (latch == null) {
- latch = new CountDownLatch(1);
- mFuseVolumeReadyLatches.put(volId, latch);
- }
- return latch;
- }
- }
-
/** List of crypto types.
* These must match CRYPT_TYPE_XXX in cryptfs.h AND their
* corresponding commands in CommandListener.cpp */
@@ -612,7 +598,6 @@
private static final int H_ABORT_IDLE_MAINT = 12;
private static final int H_BOOT_COMPLETED = 13;
private static final int H_COMPLETE_UNLOCK_USER = 14;
- private static final int H_VOLUME_READY = 15;
class StorageManagerServiceHandler extends Handler {
public StorageManagerServiceHandler(Looper looper) {
@@ -673,22 +658,6 @@
}
break;
}
- case H_VOLUME_READY: {
- final VolumeInfo vol = (VolumeInfo) msg.obj;
- try {
- mStorageSessionController.onVolumeReady(vol);
-
- synchronized (mLock) {
- CountDownLatch latch = mFuseVolumeReadyLatches.remove(vol.id);
- if (latch != null) {
- latch.countDown();
- }
- }
- } catch (IllegalStateException | ExternalStorageServiceException e) {
- Slog.i(TAG, "Failed to initialise volume " + vol, e);
- }
- break;
- }
case H_VOLUME_MOUNT: {
final VolumeInfo vol = (VolumeInfo) msg.obj;
if (isMountDisallowed(vol)) {
@@ -850,7 +819,6 @@
refreshFuseSettings();
});
refreshIsolatedStorageSettings();
- refreshFuseSettings();
}
/**
@@ -914,16 +882,25 @@
SystemProperties.set(StorageManager.PROP_ISOLATED_STORAGE, Boolean.toString(res));
}
+ /**
+ * The most recent flag change takes precedence. Change fuse Settings flag if Device Config is
+ * changed. Settings flag change will in turn change fuse system property (persist.sys.fuse)
+ * whenever the user reboots.
+ */
private void refreshFuseSettings() {
int isFuseEnabled = DeviceConfig.getInt(DeviceConfig.NAMESPACE_STORAGE_NATIVE_BOOT,
FUSE_ENABLED, 0);
if (isFuseEnabled == 1) {
- SystemProperties.set(StorageManager.PROP_FUSE, "true");
+ Slog.d(TAG, "Device Config flag for FUSE is enabled, turn Settings fuse flag on");
+ SystemProperties.set(FeatureFlagUtils.PERSIST_PREFIX
+ + FeatureFlagUtils.SETTINGS_FUSE_FLAG, "true");
} else if (isFuseEnabled == -1) {
- SystemProperties.set(StorageManager.PROP_FUSE, "false");
+ Slog.d(TAG, "Device Config flag for FUSE is disabled, turn Settings fuse flag off");
+ SystemProperties.set(FeatureFlagUtils.PERSIST_PREFIX
+ + FeatureFlagUtils.SETTINGS_FUSE_FLAG, "false");
}
// else, keep the build config.
- // This can be overridden be direct adjustment of persist.sys.prop
+ // This can be overridden by direct adjustment of persist.sys.fflag.override.settings_fuse
}
/**
@@ -1431,13 +1408,6 @@
writeSettingsLocked();
}
- if (mIsFuseEnabled && newState == VolumeInfo.STATE_MOUNTED
- && (vol.type == VolumeInfo.TYPE_PUBLIC || vol.type == VolumeInfo.TYPE_EMULATED)) {
- Slog.i(TAG, "Initialising volume " + vol + " ...");
- // TODO(b/144275217): Delay broadcasts till mount is really ready
- mHandler.obtainMessage(H_VOLUME_READY, vol).sendToTarget();
- }
-
mCallbacks.notifyVolumeStateChanged(vol, oldState, newState);
// Do not broadcast before boot has completed to avoid launching the
@@ -1647,6 +1617,23 @@
}
}
+ /**
+ * Checks if user changed the persistent settings_fuse flag from Settings UI
+ * and updates PROP_FUSE (reboots if changed).
+ */
+ private void updateFusePropFromSettings() {
+ Boolean settingsFuseFlag = SystemProperties.getBoolean((FeatureFlagUtils.PERSIST_PREFIX
+ + FeatureFlagUtils.SETTINGS_FUSE_FLAG), false);
+ Slog.d(TAG, "The value of Settings Fuse Flag is " + settingsFuseFlag);
+ if (SystemProperties.getBoolean(StorageManager.PROP_FUSE, false) != settingsFuseFlag) {
+ Slog.d(TAG, "Set persist.sys.fuse to " + settingsFuseFlag);
+ SystemProperties.set(StorageManager.PROP_FUSE, Boolean.toString(settingsFuseFlag));
+ // Perform hard reboot to kick policy into place
+ mContext.getSystemService(PowerManager.class).reboot("Reboot device for FUSE system"
+ + "property change to take effect");
+ }
+ }
+
private void start() {
connectStoraged();
connectVold();
@@ -1735,7 +1722,7 @@
| PackageManager.MATCH_DIRECT_BOOT_UNAWARE,
UserHandle.getUserId(UserHandle.USER_SYSTEM));
if (provider != null) {
- mMediaStoreAuthorityPackageName = provider.packageName;
+ mMediaStoreAuthorityAppId = UserHandle.getAppId(provider.applicationInfo.uid);
}
try {
@@ -1768,6 +1755,7 @@
private void bootCompleted() {
mBootCompleted = true;
mHandler.obtainMessage(H_BOOT_COMPLETED).sendToTarget();
+ updateFusePropFromSettings();
}
private void handleBootCompleted() {
@@ -1912,33 +1900,29 @@
throw new SecurityException("Mounting " + volId + " restricted by policy");
}
- CountDownLatch latch = null;
- if (mIsFuseEnabled && StorageSessionController.isEmulatedOrPublic(vol)) {
- latch = findOrCreateFuseVolumeReadyLatch(volId);
- }
-
mount(vol);
-
- if (latch != null) {
- try {
- waitForLatch(latch, "mount " + volId, 3 * DateUtils.MINUTE_IN_MILLIS);
- } catch (TimeoutException e) {
- Slog.wtf(TAG, e);
- } finally {
- synchronized (mLock) {
- mFuseVolumeReadyLatches.remove(volId);
- }
- }
- }
}
private void mount(VolumeInfo vol) {
try {
// TODO(b/135341433): Remove paranoid logging when FUSE is stable
Slog.i(TAG, "Mounting volume " + vol);
- FileDescriptor fd = mVold.mount(vol.id, vol.mountFlags, vol.mountUserId);
+ mVold.mount(vol.id, vol.mountFlags, vol.mountUserId, new IVoldMountCallback.Stub() {
+ @Override
+ public boolean onVolumeChecking(FileDescriptor deviceFd, String path,
+ String internalPath) {
+ vol.path = path;
+ vol.internalPath = internalPath;
+ try {
+ mStorageSessionController.onVolumeMount(deviceFd, vol);
+ return true;
+ } catch (ExternalStorageServiceException e) {
+ Slog.i(TAG, "Failed to mount volume " + vol, e);
+ return false;
+ }
+ }
+ });
Slog.i(TAG, "Mounted volume " + vol);
- mStorageSessionController.onVolumeMount(fd, vol);
} catch (Exception e) {
Slog.wtf(TAG, e);
}
@@ -2921,12 +2905,6 @@
enforcePermission(android.Manifest.permission.STORAGE_INTERNAL);
if (StorageManager.isFileEncryptedNativeOrEmulated()) {
- // When a user has secure lock screen, require secret to actually unlock.
- // This check is mostly in place for emulation mode.
- if (mLockPatternUtils.isSecure(userId) && ArrayUtils.isEmpty(secret)) {
- throw new IllegalStateException("Secret required to unlock secure user " + userId);
- }
-
try {
mVold.unlockUserKey(userId, serialNumber, encodeBytes(token),
encodeBytes(secret));
@@ -3643,7 +3621,7 @@
try {
mObbState.volId = mVold.createObb(mObbState.canonicalPath, binderKey,
mObbState.ownerGid);
- mVold.mount(mObbState.volId, 0, -1);
+ mVold.mount(mObbState.volId, 0, -1, null);
if (DEBUG_OBB)
Slog.d(TAG, "Successfully mounted OBB " + mObbState.canonicalPath);
@@ -3772,8 +3750,10 @@
return Zygote.MOUNT_EXTERNAL_NONE;
}
- if (mIsFuseEnabled && packageName.equals(mMediaStoreAuthorityPackageName)) {
- // Determine if caller requires pass_through mount
+ if (mIsFuseEnabled && mMediaStoreAuthorityAppId == UserHandle.getAppId(uid)) {
+ // Determine if caller requires pass_through mount; note that we do this for
+ // all processes that share a UID with MediaProvider; but this is fine, since
+ // those processes anyway share the same rights as MediaProvider.
return Zygote.MOUNT_EXTERNAL_PASS_THROUGH;
}
diff --git a/services/core/java/com/android/server/TelephonyRegistry.java b/services/core/java/com/android/server/TelephonyRegistry.java
index dc61261..9875f6d 100644
--- a/services/core/java/com/android/server/TelephonyRegistry.java
+++ b/services/core/java/com/android/server/TelephonyRegistry.java
@@ -38,6 +38,7 @@
import android.os.Message;
import android.os.RemoteException;
import android.os.UserHandle;
+import android.telephony.Annotation;
import android.telephony.Annotation.DataFailureCause;
import android.telephony.Annotation.RadioPowerState;
import android.telephony.Annotation.SrvccState;
@@ -50,7 +51,6 @@
import android.telephony.LocationAccessPolicy;
import android.telephony.PhoneCapability;
import android.telephony.PhoneStateListener;
-import android.telephony.PhysicalChannelConfig;
import android.telephony.PreciseCallState;
import android.telephony.PreciseDataConnectionState;
import android.telephony.PreciseDisconnectCause;
@@ -213,8 +213,6 @@
private ArrayList<List<CellInfo>> mCellInfo = null;
- private ArrayList<List<PhysicalChannelConfig>> mPhysicalChannelConfigs;
-
private Map<Integer, List<EmergencyNumber>> mEmergencyNumberList;
private EmergencyNumber[] mOutgoingSmsEmergencyNumber;
@@ -424,7 +422,6 @@
if (mNumPhones < oldNumPhones) {
cutListToSize(mCellInfo, mNumPhones);
cutListToSize(mImsReasonInfo, mNumPhones);
- cutListToSize(mPhysicalChannelConfigs, mNumPhones);
return;
}
@@ -445,7 +442,6 @@
mCellInfo.add(i, null);
mImsReasonInfo.add(i, null);
mSrvccState[i] = TelephonyManager.SRVCC_STATE_HANDOVER_NONE;
- mPhysicalChannelConfigs.add(i, new ArrayList<>());
mOtaspMode[i] = TelephonyManager.OTASP_UNKNOWN;
mCallDisconnectCause[i] = DisconnectCause.NOT_VALID;
mCallPreciseDisconnectCause[i] = PreciseDisconnectCause.NOT_VALID;
@@ -522,7 +518,6 @@
mPreciseDataConnectionState = new PreciseDataConnectionState[numPhones];
mCellInfo = new ArrayList<>();
mImsReasonInfo = new ArrayList<>();
- mPhysicalChannelConfigs = new ArrayList<>();
mEmergencyNumberList = new HashMap<>();
mOutgoingCallEmergencyNumber = new EmergencyNumber[numPhones];
mOutgoingSmsEmergencyNumber = new EmergencyNumber[numPhones];
@@ -542,7 +537,6 @@
mCellInfo.add(i, null);
mImsReasonInfo.add(i, null);
mSrvccState[i] = TelephonyManager.SRVCC_STATE_HANDOVER_NONE;
- mPhysicalChannelConfigs.add(i, new ArrayList<>());
mOtaspMode[i] = TelephonyManager.OTASP_UNKNOWN;
mCallDisconnectCause[i] = DisconnectCause.NOT_VALID;
mCallPreciseDisconnectCause[i] = PreciseDisconnectCause.NOT_VALID;
@@ -961,14 +955,6 @@
remove(r.binder);
}
}
- if ((events & PhoneStateListener.LISTEN_PHYSICAL_CHANNEL_CONFIGURATION) != 0) {
- try {
- r.callback.onPhysicalChannelConfigurationChanged(
- mPhysicalChannelConfigs.get(phoneId));
- } catch (RemoteException ex) {
- remove(r.binder);
- }
- }
if ((events & PhoneStateListener.LISTEN_EMERGENCY_NUMBER_LIST) != 0) {
try {
r.callback.onEmergencyNumberListChanged(mEmergencyNumberList);
@@ -1393,43 +1379,6 @@
}
}
- /**
- * Notify physical channel configuration according to subscripton ID and phone ID
- */
- public void notifyPhysicalChannelConfigurationForSubscriber(int phoneId, int subId,
- List<PhysicalChannelConfig> configs) {
- if (!checkNotifyPermission("notifyPhysicalChannelConfiguration()")) {
- return;
- }
-
- if (VDBG) {
- log("notifyPhysicalChannelConfiguration: subId=" + subId + " phoneId=" + phoneId
- + " configs=" + configs);
- }
-
- synchronized (mRecords) {
- if (validatePhoneId(phoneId)) {
- mPhysicalChannelConfigs.set(phoneId, configs);
- for (Record r : mRecords) {
- if (r.matchPhoneStateListenerEvent(
- PhoneStateListener.LISTEN_PHYSICAL_CHANNEL_CONFIGURATION)
- && idMatch(r.subId, subId, phoneId)) {
- try {
- if (DBG_LOC) {
- log("notifyPhysicalChannelConfiguration: mPhysicalChannelConfigs="
- + configs + " r=" + r);
- }
- r.callback.onPhysicalChannelConfigurationChanged(configs);
- } catch (RemoteException ex) {
- mRemoveList.add(r.binder);
- }
- }
- }
- }
- handleRemoveListLocked();
- }
- }
-
@Override
public void notifyMessageWaitingChangedForPhoneId(int phoneId, int subId, boolean mwi) {
if (!checkNotifyPermission("notifyMessageWaitingChanged()")) {
@@ -1576,8 +1525,8 @@
&& (mDataConnectionState[phoneId] != state
|| mDataConnectionNetworkType[phoneId] != networkType)) {
String str = "onDataConnectionStateChanged("
- + TelephonyManager.dataStateToString(state)
- + ", " + TelephonyManager.getNetworkTypeName(networkType)
+ + dataStateToString(state)
+ + ", " + getNetworkTypeName(networkType)
+ ") subId=" + subId + ", phoneId=" + phoneId;
log(str);
mLocalLog.log(str);
@@ -2689,4 +2638,74 @@
}
}
}
+
+ /**
+ * Convert data state to string
+ *
+ * @return The data state in string format.
+ */
+ private String dataStateToString(@TelephonyManager.DataState int state) {
+ switch (state) {
+ case TelephonyManager.DATA_DISCONNECTED: return "DISCONNECTED";
+ case TelephonyManager.DATA_CONNECTING: return "CONNECTING";
+ case TelephonyManager.DATA_CONNECTED: return "CONNECTED";
+ case TelephonyManager.DATA_SUSPENDED: return "SUSPENDED";
+ }
+ return "UNKNOWN(" + state + ")";
+ }
+
+ /**
+ * Returns a string representation of the radio technology (network type)
+ * currently in use on the device.
+ * @param subId for which network type is returned
+ * @return the name of the radio technology
+ *
+ */
+ private String getNetworkTypeName(@Annotation.NetworkType int type) {
+ switch (type) {
+ case TelephonyManager.NETWORK_TYPE_GPRS:
+ return "GPRS";
+ case TelephonyManager.NETWORK_TYPE_EDGE:
+ return "EDGE";
+ case TelephonyManager.NETWORK_TYPE_UMTS:
+ return "UMTS";
+ case TelephonyManager.NETWORK_TYPE_HSDPA:
+ return "HSDPA";
+ case TelephonyManager.NETWORK_TYPE_HSUPA:
+ return "HSUPA";
+ case TelephonyManager.NETWORK_TYPE_HSPA:
+ return "HSPA";
+ case TelephonyManager.NETWORK_TYPE_CDMA:
+ return "CDMA";
+ case TelephonyManager.NETWORK_TYPE_EVDO_0:
+ return "CDMA - EvDo rev. 0";
+ case TelephonyManager.NETWORK_TYPE_EVDO_A:
+ return "CDMA - EvDo rev. A";
+ case TelephonyManager.NETWORK_TYPE_EVDO_B:
+ return "CDMA - EvDo rev. B";
+ case TelephonyManager.NETWORK_TYPE_1xRTT:
+ return "CDMA - 1xRTT";
+ case TelephonyManager.NETWORK_TYPE_LTE:
+ return "LTE";
+ case TelephonyManager.NETWORK_TYPE_EHRPD:
+ return "CDMA - eHRPD";
+ case TelephonyManager.NETWORK_TYPE_IDEN:
+ return "iDEN";
+ case TelephonyManager.NETWORK_TYPE_HSPAP:
+ return "HSPA+";
+ case TelephonyManager.NETWORK_TYPE_GSM:
+ return "GSM";
+ case TelephonyManager.NETWORK_TYPE_TD_SCDMA:
+ return "TD_SCDMA";
+ case TelephonyManager.NETWORK_TYPE_IWLAN:
+ return "IWLAN";
+ case TelephonyManager.NETWORK_TYPE_LTE_CA:
+ return "LTE_CA";
+ case TelephonyManager.NETWORK_TYPE_NR:
+ return "NR";
+ default:
+ return "UNKNOWN";
+ }
+ }
+
}
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index 88d0e4b..53a5fc6 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -2781,8 +2781,8 @@
int total = user + system + iowait + irq + softIrq + idle;
if (total == 0) total = 1;
- EventLog.writeEvent(EventLogTags.CPU,
- ((user+system+iowait+irq+softIrq) * 100) / total,
+ EventLogTags.writeCpu(
+ ((user + system + iowait + irq + softIrq) * 100) / total,
(user * 100) / total,
(system * 100) / total,
(iowait * 100) / total,
@@ -3651,7 +3651,7 @@
final ArrayList<ProcessMemInfo> memInfos
= doReport ? new ArrayList<ProcessMemInfo>(mProcessList.getLruSizeLocked())
: null;
- EventLog.writeEvent(EventLogTags.AM_LOW_MEMORY, mProcessList.getLruSizeLocked());
+ EventLogTags.writeAmLowMemory(mProcessList.getLruSizeLocked());
long now = SystemClock.uptimeMillis();
for (int i = mProcessList.mLruProcesses.size() - 1; i >= 0; i--) {
ProcessRecord rec = mProcessList.mLruProcesses.get(i);
@@ -3732,8 +3732,8 @@
mAllowLowerMemLevel = false;
doLowMem = false;
}
- EventLog.writeEvent(EventLogTags.AM_PROC_DIED, app.userId, app.pid, app.processName,
- app.setAdj, app.setProcState);
+ EventLogTags.writeAmProcDied(app.userId, app.pid, app.processName, app.setAdj,
+ app.setProcState);
if (DEBUG_CLEANUP) Slog.v(TAG_CLEANUP,
"Dying app: " + app + ", pid: " + pid + ", thread: " + thread.asBinder());
handleAppDiedLocked(app, false, true);
@@ -3749,7 +3749,9 @@
reportUidInfoMessageLocked(TAG,
"Process " + app.processName + " (pid " + pid
+ ") has died and restarted (pid " + app.pid + ").", app.info.uid);
- EventLog.writeEvent(EventLogTags.AM_PROC_DIED, app.userId, app.pid, app.processName);
+
+ EventLogTags.writeAmProcDied(app.userId, app.pid, app.processName, app.setAdj,
+ app.setProcState);
} else if (DEBUG_PROCESSES) {
Slog.d(TAG_PROCESSES, "Received spurious death notification for thread "
+ thread.asBinder());
@@ -4710,8 +4712,7 @@
if (gone) {
Slog.w(TAG, "Process " + app + " failed to attach");
- EventLog.writeEvent(EventLogTags.AM_PROCESS_START_TIMEOUT, app.userId,
- pid, app.uid, app.processName);
+ EventLogTags.writeAmProcessStartTimeout(app.userId, pid, app.uid, app.processName);
mProcessList.removeProcessNameLocked(app.processName, app.uid);
mAtmInternal.clearHeavyWeightProcessIfEquals(app.getWindowProcessController());
mBatteryStatsService.noteProcessFinish(app.processName, app.info.uid);
@@ -4802,7 +4803,7 @@
if (app == null) {
Slog.w(TAG, "No pending application record for pid " + pid
+ " (IApplicationThread " + thread + "); dropping process");
- EventLog.writeEvent(EventLogTags.AM_DROP_PROCESS, pid);
+ EventLogTags.writeAmDropProcess(pid);
if (pid > 0 && pid != MY_PID) {
killProcessQuiet(pid);
//TODO: killProcessGroup(app.info.uid, pid);
@@ -4840,7 +4841,7 @@
return false;
}
- EventLog.writeEvent(EventLogTags.AM_PROC_BOUND, app.userId, app.pid, app.processName);
+ EventLogTags.writeAmProcBound(app.userId, app.pid, app.processName);
app.curAdj = app.setAdj = app.verifiedAdj = ProcessList.INVALID_ADJ;
mOomAdjuster.setAttachingSchedGroupLocked(app);
@@ -7126,7 +7127,7 @@
+ cpi.applicationInfo.packageName + "/"
+ cpi.applicationInfo.uid + " for provider "
+ name + ": launching app became null");
- EventLog.writeEvent(EventLogTags.AM_PROVIDER_LOST_PROCESS,
+ EventLogTags.writeAmProviderLostProcess(
UserHandle.getUserId(cpi.applicationInfo.uid),
cpi.applicationInfo.packageName,
cpi.applicationInfo.uid, name);
@@ -9119,7 +9120,8 @@
t.traceEnd(); // KillProcesses
Slog.i(TAG, "System now ready");
- EventLog.writeEvent(EventLogTags.BOOT_PROGRESS_AMS_READY, SystemClock.uptimeMillis());
+
+ EventLogTags.writeBootProgressAmsReady(SystemClock.uptimeMillis());
t.traceBegin("updateTopComponentForFactoryTest");
mAtmInternal.updateTopComponentForFactoryTest();
@@ -9373,7 +9375,8 @@
*/
void handleApplicationCrashInner(String eventType, ProcessRecord r, String processName,
ApplicationErrorReport.CrashInfo crashInfo) {
- EventLog.writeEvent(EventLogTags.AM_CRASH, Binder.getCallingPid(),
+
+ EventLogTags.writeAmCrash(Binder.getCallingPid(),
UserHandle.getUserId(Binder.getCallingUid()), processName,
r == null ? -1 : r.info.flags,
crashInfo.exceptionClassName,
@@ -9576,7 +9579,7 @@
final String processName = app == null ? "system_server"
: (r == null ? "unknown" : r.processName);
- EventLog.writeEvent(EventLogTags.AM_WTF, UserHandle.getUserId(callingUid), callingPid,
+ EventLogTags.writeAmWtf(UserHandle.getUserId(callingUid), callingPid,
processName, r == null ? -1 : r.info.flags, tag, crashInfo.exceptionMessage);
StatsLog.write(StatsLog.WTF_OCCURRED, callingUid, tag, processName,
@@ -10079,6 +10082,11 @@
pw.println("-------------------------------------------------------------------------------");
}
dumpProcessesLocked(fd, pw, args, opti, dumpAll, dumpPackage, dumpAppId);
+ pw.println();
+ if (dumpAll) {
+ pw.println("-------------------------------------------------------------------------------");
+ }
+ dumpUsersLocked(pw);
}
}
@@ -10367,6 +10375,10 @@
}
} else if ("locks".equals(cmd)) {
LockGuard.dump(fd, pw, args);
+ } else if ("users".equals(cmd)) {
+ synchronized (this) {
+ dumpUsersLocked(pw);
+ }
} else {
// Dumping a single activity?
if (!mAtmInternal.dumpActivity(fd, pw, cmd, args, opti, dumpAll,
@@ -10841,12 +10853,6 @@
needSep = mAppErrors.dumpLocked(fd, pw, needSep, dumpPackage);
- if (dumpPackage == null) {
- pw.println();
- needSep = false;
- mUserController.dump(pw, dumpAll);
- }
-
needSep = mAtmInternal.dumpForProcesses(fd, pw, dumpAll, dumpPackage, dumpAppId, needSep,
mTestPssMode, mWakefulness);
@@ -11056,6 +11062,12 @@
}
@GuardedBy("this")
+ private void dumpUsersLocked(PrintWriter pw) {
+ pw.println("ACTIVITY MANAGER USERS (dumpsys activity users)");
+ mUserController.dump(pw);
+ }
+
+ @GuardedBy("this")
void writeProcessesToProtoLocked(ProtoOutputStream proto, String dumpPackage) {
int numPers = 0;
diff --git a/services/core/java/com/android/server/am/ActivityManagerShellCommand.java b/services/core/java/com/android/server/am/ActivityManagerShellCommand.java
index 908ec6b..7f1d5a3 100644
--- a/services/core/java/com/android/server/am/ActivityManagerShellCommand.java
+++ b/services/core/java/com/android/server/am/ActivityManagerShellCommand.java
@@ -3065,7 +3065,7 @@
pw.println(" even if in the background.");
pw.println(" instrument [-r] [-e <NAME> <VALUE>] [-p <FILE>] [-w]");
pw.println(" [--user <USER_ID> | current]");
- pw.println(" [--no-hidden-api-checks [--no-test-api-checks]]");
+ pw.println(" [--no-hidden-api-checks [--no-test-api-access]]");
pw.println(" [--no-isolated-storage]");
pw.println(" [--no-window-animation] [--abi <ABI>] <COMPONENT>");
pw.println(" Start an Instrumentation. Typically this target <COMPONENT> is in the");
@@ -3085,7 +3085,7 @@
pw.println(" --user <USER_ID> | current: Specify user instrumentation runs in;");
pw.println(" current user if not specified.");
pw.println(" --no-hidden-api-checks: disable restrictions on use of hidden API.");
- pw.println(" --no-test-api-checks: disable restrictions to test APIs, if hidden");
+ pw.println(" --no-test-api-access: do not allow access to test APIs, if hidden");
pw.println(" API checks are enabled.");
pw.println(" --no-isolated-storage: don't use isolated storage sandbox and ");
pw.println(" mount full external storage");
diff --git a/services/core/java/com/android/server/am/AppCompactor.java b/services/core/java/com/android/server/am/AppCompactor.java
index b0f8f86..b7e2065 100644
--- a/services/core/java/com/android/server/am/AppCompactor.java
+++ b/services/core/java/com/android/server/am/AppCompactor.java
@@ -189,10 +189,10 @@
@GuardedBy("mPhenotypeFlagLock")
@VisibleForTesting volatile long mFullAnonRssThrottleKb =
DEFAULT_COMPACT_FULL_RSS_THROTTLE_KB;
- @GuardedBy("mPhenoypeFlagLock")
+ @GuardedBy("mPhenotypeFlagLock")
@VisibleForTesting volatile long mFullDeltaRssThrottleKb =
DEFAULT_COMPACT_FULL_DELTA_RSS_THROTTLE_KB;
- @GuardedBy("mPhenoypeFlagLock")
+ @GuardedBy("mPhenotypeFlagLock")
@VisibleForTesting final Set<Integer> mProcStateThrottle;
// Handler on which compaction runs.
diff --git a/services/core/java/com/android/server/am/BatteryExternalStatsWorker.java b/services/core/java/com/android/server/am/BatteryExternalStatsWorker.java
index 0524f91..638111e 100644
--- a/services/core/java/com/android/server/am/BatteryExternalStatsWorker.java
+++ b/services/core/java/com/android/server/am/BatteryExternalStatsWorker.java
@@ -126,7 +126,7 @@
// Keep the last WiFi stats so we can compute a delta.
@GuardedBy("mWorkerLock")
private WifiActivityEnergyInfo mLastInfo =
- new WifiActivityEnergyInfo(0, 0, 0, new long[]{0}, 0, 0, 0, 0);
+ new WifiActivityEnergyInfo(0, 0, 0, 0, 0, 0, 0);
/**
* Timestamp at which all external stats were last collected in
@@ -548,42 +548,45 @@
@GuardedBy("mWorkerLock")
private WifiActivityEnergyInfo extractDeltaLocked(WifiActivityEnergyInfo latest) {
- final long timePeriodMs = latest.mTimestamp - mLastInfo.mTimestamp;
- final long lastScanMs = mLastInfo.mControllerScanTimeMs;
- final long lastIdleMs = mLastInfo.mControllerIdleTimeMs;
- final long lastTxMs = mLastInfo.mControllerTxTimeMs;
- final long lastRxMs = mLastInfo.mControllerRxTimeMs;
- final long lastEnergy = mLastInfo.mControllerEnergyUsed;
+ final long timePeriodMs = latest.getTimeSinceBootMillis()
+ - mLastInfo.getTimeSinceBootMillis();
+ final long lastScanMs = mLastInfo.getControllerScanDurationMillis();
+ final long lastIdleMs = mLastInfo.getControllerIdleDurationMillis();
+ final long lastTxMs = mLastInfo.getControllerTxDurationMillis();
+ final long lastRxMs = mLastInfo.getControllerRxDurationMillis();
+ final long lastEnergy = mLastInfo.getControllerEnergyUsedMicroJoules();
// We will modify the last info object to be the delta, and store the new
// WifiActivityEnergyInfo object as our last one.
final WifiActivityEnergyInfo delta = mLastInfo;
- delta.mTimestamp = latest.getTimeStamp();
- delta.mStackState = latest.getStackState();
+ delta.setTimeSinceBootMillis(latest.getTimeSinceBootMillis());
+ delta.setStackState(latest.getStackState());
- final long txTimeMs = latest.mControllerTxTimeMs - lastTxMs;
- final long rxTimeMs = latest.mControllerRxTimeMs - lastRxMs;
- final long idleTimeMs = latest.mControllerIdleTimeMs - lastIdleMs;
- final long scanTimeMs = latest.mControllerScanTimeMs - lastScanMs;
+ final long txTimeMs = latest.getControllerTxDurationMillis() - lastTxMs;
+ final long rxTimeMs = latest.getControllerRxDurationMillis() - lastRxMs;
+ final long idleTimeMs = latest.getControllerIdleDurationMillis() - lastIdleMs;
+ final long scanTimeMs = latest.getControllerScanDurationMillis() - lastScanMs;
if (txTimeMs < 0 || rxTimeMs < 0 || scanTimeMs < 0 || idleTimeMs < 0) {
// The stats were reset by the WiFi system (which is why our delta is negative).
// Returns the unaltered stats. The total on time should not exceed the time
// duartion between reports.
- final long totalOnTimeMs = latest.mControllerTxTimeMs + latest.mControllerRxTimeMs
- + latest.mControllerIdleTimeMs;
+ final long totalOnTimeMs = latest.getControllerTxDurationMillis()
+ + latest.getControllerRxDurationMillis()
+ + latest.getControllerIdleDurationMillis();
if (totalOnTimeMs <= timePeriodMs + MAX_WIFI_STATS_SAMPLE_ERROR_MILLIS) {
- delta.mControllerEnergyUsed = latest.mControllerEnergyUsed;
- delta.mControllerRxTimeMs = latest.mControllerRxTimeMs;
- delta.mControllerTxTimeMs = latest.mControllerTxTimeMs;
- delta.mControllerIdleTimeMs = latest.mControllerIdleTimeMs;
- delta.mControllerScanTimeMs = latest.mControllerScanTimeMs;
+ delta.setControllerEnergyUsedMicroJoules(
+ latest.getControllerEnergyUsedMicroJoules());
+ delta.setControllerRxDurationMillis(latest.getControllerRxDurationMillis());
+ delta.setControllerTxDurationMillis(latest.getControllerTxDurationMillis());
+ delta.setControllerIdleDurationMillis(latest.getControllerIdleDurationMillis());
+ delta.setControllerScanDurationMillis(latest.getControllerScanDurationMillis());
} else {
- delta.mControllerEnergyUsed = 0;
- delta.mControllerRxTimeMs = 0;
- delta.mControllerTxTimeMs = 0;
- delta.mControllerIdleTimeMs = 0;
- delta.mControllerScanTimeMs = 0;
+ delta.setControllerEnergyUsedMicroJoules(0);
+ delta.setControllerRxDurationMillis(0);
+ delta.setControllerTxDurationMillis(0);
+ delta.setControllerIdleDurationMillis(0);
+ delta.setControllerScanDurationMillis(0);
}
Slog.v(TAG, "WiFi energy data was reset, new WiFi energy data is " + delta);
} else {
@@ -608,28 +611,30 @@
sb.append(" e=").append(lastEnergy);
sb.append("\n");
sb.append("Current WiFi snapshot: ").append("idle=");
- TimeUtils.formatDuration(latest.mControllerIdleTimeMs, sb);
+ TimeUtils.formatDuration(latest.getControllerIdleDurationMillis(), sb);
sb.append(" rx=");
- TimeUtils.formatDuration(latest.mControllerRxTimeMs, sb);
+ TimeUtils.formatDuration(latest.getControllerRxDurationMillis(), sb);
sb.append(" tx=");
- TimeUtils.formatDuration(latest.mControllerTxTimeMs, sb);
- sb.append(" e=").append(latest.mControllerEnergyUsed);
+ TimeUtils.formatDuration(latest.getControllerTxDurationMillis(), sb);
+ sb.append(" e=").append(latest.getControllerEnergyUsedMicroJoules());
Slog.wtf(TAG, sb.toString());
}
} else {
maxExpectedIdleTimeMs = timePeriodMs - totalActiveTimeMs;
}
// These times seem to be the most reliable.
- delta.mControllerTxTimeMs = txTimeMs;
- delta.mControllerRxTimeMs = rxTimeMs;
- delta.mControllerScanTimeMs = scanTimeMs;
+ delta.setControllerTxDurationMillis(txTimeMs);
+ delta.setControllerRxDurationMillis(rxTimeMs);
+ delta.setControllerScanDurationMillis(scanTimeMs);
// WiFi calculates the idle time as a difference from the on time and the various
// Rx + Tx times. There seems to be some missing time there because this sometimes
// becomes negative. Just cap it at 0 and ensure that it is less than the expected idle
// time from the difference in timestamps.
// b/21613534
- delta.mControllerIdleTimeMs = Math.min(maxExpectedIdleTimeMs, Math.max(0, idleTimeMs));
- delta.mControllerEnergyUsed = Math.max(0, latest.mControllerEnergyUsed - lastEnergy);
+ delta.setControllerIdleDurationMillis(
+ Math.min(maxExpectedIdleTimeMs, Math.max(0, idleTimeMs)));
+ delta.setControllerEnergyUsedMicroJoules(
+ Math.max(0, latest.getControllerEnergyUsedMicroJoules() - lastEnergy));
}
mLastInfo = latest;
diff --git a/services/core/java/com/android/server/am/CarUserSwitchingDialog.java b/services/core/java/com/android/server/am/CarUserSwitchingDialog.java
index c7de7b1..183e059 100644
--- a/services/core/java/com/android/server/am/CarUserSwitchingDialog.java
+++ b/services/core/java/com/android/server/am/CarUserSwitchingDialog.java
@@ -37,6 +37,7 @@
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
+
import com.android.internal.R;
@@ -65,7 +66,9 @@
setCancelable(false);
Resources res = getContext().getResources();
// Custom view due to alignment and font size requirements
- getContext().setTheme(R.style.Theme_DeviceDefault_Light_Dialog_Alert_UserSwitchingDialog);
+ // TODO (b/145021634): disabled because it's delaying user switch by 3 seconds
+ // getContext()
+ // .setTheme(R.style.Theme_DeviceDefault_Light_Dialog_Alert_UserSwitchingDialog);
View view = LayoutInflater.from(getContext()).inflate(
R.layout.car_user_switching_dialog,
null);
diff --git a/services/core/java/com/android/server/am/EventLogTags.logtags b/services/core/java/com/android/server/am/EventLogTags.logtags
index cf0de06..23674bb 100644
--- a/services/core/java/com/android/server/am/EventLogTags.logtags
+++ b/services/core/java/com/android/server/am/EventLogTags.logtags
@@ -13,32 +13,14 @@
# Do not change these names without updating the checkin_events setting in
# google3/googledata/wireless/android/provisioning/gservices.config !!
#
-# An activity is being finished:
-30001 am_finish_activity (User|1|5),(Token|1|5),(Task ID|1|5),(Component Name|3),(Reason|3)
-# A task is being brought to the front of the screen:
-30002 am_task_to_front (User|1|5),(Task|1|5)
-# An existing activity is being given a new intent:
-30003 am_new_intent (User|1|5),(Token|1|5),(Task ID|1|5),(Component Name|3),(Action|3),(MIME Type|3),(URI|3),(Flags|1|5)
-# A new task is being created:
-30004 am_create_task (User|1|5),(Task ID|1|5)
-# A new activity is being created in an existing task:
-30005 am_create_activity (User|1|5),(Token|1|5),(Task ID|1|5),(Component Name|3),(Action|3),(MIME Type|3),(URI|3),(Flags|1|5)
-# An activity has been resumed into the foreground but was not already running:
-30006 am_restart_activity (User|1|5),(Token|1|5),(Task ID|1|5),(Component Name|3)
-# An activity has been resumed and is now in the foreground:
-30007 am_resume_activity (User|1|5),(Token|1|5),(Task ID|1|5),(Component Name|3)
# Application Not Responding
30008 am_anr (User|1|5),(pid|1|5),(Package Name|3),(Flags|1|5),(reason|3)
-# Activity launch time
-30009 am_activity_launch_time (User|1|5),(Token|1|5),(Component Name|3),(time|2|3)
+
# Application process bound to work
30010 am_proc_bound (User|1|5),(PID|1|5),(Process Name|3)
# Application process died
30011 am_proc_died (User|1|5),(PID|1|5),(Process Name|3),(OomAdj|1|5),(ProcState|1|5)
-# The Activity Manager failed to pause the given activity.
-30012 am_failed_to_pause (User|1|5),(Token|1|5),(Wanting to pause|3),(Currently pausing|3)
-# Attempting to pause the current activity
-30013 am_pause_activity (User|1|5),(Token|1|5),(Component Name|3),(User Leaving|3)
+
# Application process has been started
30014 am_proc_start (User|1|5),(PID|1|5),(UID|1|5),(Process Name|3),(Type|3),(Component|3)
# An application process has been marked as bad
@@ -47,16 +29,7 @@
30016 am_proc_good (User|1|5),(UID|1|5),(Process Name|3)
# Reporting to applications that memory is low
30017 am_low_memory (Num Processes|1|1)
-# An activity is being destroyed:
-30018 am_destroy_activity (User|1|5),(Token|1|5),(Task ID|1|5),(Component Name|3),(Reason|3)
-# An activity has been relaunched, resumed, and is now in the foreground:
-30019 am_relaunch_resume_activity (User|1|5),(Token|1|5),(Task ID|1|5),(Component Name|3)
-# An activity has been relaunched:
-30020 am_relaunch_activity (User|1|5),(Token|1|5),(Task ID|1|5),(Component Name|3)
-# The activity's onPause has been called.
-30021 am_on_paused_called (Token|1|5),(Component Name|3),(Reason|3)
-# The activity's onResume has been called.
-30022 am_on_resume_called (Token|1|5),(Component Name|3),(Reason|3)
+
# Kill a process to reclaim memory.
30023 am_kill (User|1|5),(PID|1|5),(Process Name|3),(OomAdj|1|5),(Reason|3)
# Discard an undelivered serialized broadcast (timeout/ANR/crash)
@@ -87,12 +60,6 @@
# User switched
30041 am_switch_user (id|1|5)
-# Activity set to resumed
-30043 am_set_resumed_activity (User|1|5),(Component Name|3),(Reason|3)
-
-# Stack focus
-30044 am_focused_stack (User|1|5),(Display Id|1|5),(Focused Stack Id|1|5),(Last Focused Stack Id|1|5),(Reason|3)
-
# Running pre boot receiver
30045 am_pre_boot (User|1|5),(Package|3)
@@ -101,11 +68,6 @@
# Report collection of memory used by a process
30047 am_pss (Pid|1|5),(UID|1|5),(Process Name|3),(Pss|2|2),(Uss|2|2),(SwapPss|2|2),(Rss|2|2),(StatType|1|5),(ProcState|1|5),(TimeToCollect|2|2)
-# Attempting to stop an activity
-30048 am_stop_activity (User|1|5),(Token|1|5),(Component Name|3)
-# The activity's onStop has been called.
-30049 am_on_stop_called (Token|1|5),(Component Name|3),(Reason|3)
-
# Report changing memory conditions (Values are ProcessStats.ADJ_MEM_FACTOR* constants)
30050 am_mem_factor (Current|1|5),(Previous|1|5)
@@ -123,30 +85,6 @@
# Note when a service is being forcibly stopped because its app went idle.
30056 am_stop_idle_service (UID|1|5),(Component Name|3)
-# The activity's onCreate has been called.
-30057 am_on_create_called (Token|1|5),(Component Name|3),(Reason|3)
-# The activity's onRestart has been called.
-30058 am_on_restart_called (Token|1|5),(Component Name|3),(Reason|3)
-# The activity's onStart has been called.
-30059 am_on_start_called (Token|1|5),(Component Name|3),(Reason|3)
-# The activity's onDestroy has been called.
-30060 am_on_destroy_called (Token|1|5),(Component Name|3),(Reason|3)
-# The activity's onActivityResult has been called.
-30062 am_on_activity_result_called (Token|1|5),(Component Name|3),(Reason|3)
-
-# The task is being removed from its parent stack
-30061 am_remove_task (Task ID|1|5), (Stack ID|1|5)
-
# The task is being compacted
30063 am_compact (Pid|1|5),(Process Name|3),(Action|3),(BeforeRssTotal|2|2),(BeforeRssFile|2|2),(BeforeRssAnon|2|2),(BeforeRssSwap|2|2),(DeltaRssTotal|2|2),(DeltaRssFile|2|2),(DeltaRssAnon|2|2),(DeltaRssSwap|2|2),(Time|2|3),(LastAction|1|2),(LastActionTimestamp|2|3),(setAdj|1|2),(procState|1|2),(BeforeZRAMFree|2|2),(DeltaZRAMFree|2|2)
-# The activity's onTopResumedActivityChanged(true) has been called.
-30064 am_on_top_resumed_gained_called (Token|1|5),(Component Name|3),(Reason|3)
-# The activity's onTopResumedActivityChanged(false) has been called.
-30065 am_on_top_resumed_lost_called (Token|1|5),(Component Name|3),(Reason|3)
-
-# An activity been add into stopping list
-30066 am_add_to_stopping (User|1|5),(Token|1|5),(Component Name|3),(Reason|3)
-
-# Keyguard status changed
-+30067 am_set_keyguard_shown (keyguardShowing|1),(aodShowing|1),(keyguardGoingAway|1),(Reason|3)
\ No newline at end of file
diff --git a/services/core/java/com/android/server/am/UserController.java b/services/core/java/com/android/server/am/UserController.java
index 31ceb38..53ac4ec 100644
--- a/services/core/java/com/android/server/am/UserController.java
+++ b/services/core/java/com/android/server/am/UserController.java
@@ -2130,7 +2130,7 @@
}
}
- void dump(PrintWriter pw, boolean dumpAll) {
+ void dump(PrintWriter pw) {
synchronized (mLock) {
pw.println(" mStartedUsers:");
for (int i = 0; i < mStartedUsers.size(); i++) {
@@ -2164,7 +2164,11 @@
}
}
pw.println(" mCurrentUserId:" + mCurrentUserId);
+ pw.println(" mTargetUserId:" + mTargetUserId);
pw.println(" mLastActiveUsers:" + mLastActiveUsers);
+ pw.println(" mDelayUserDataLocking:" + mDelayUserDataLocking);
+ pw.println(" mMaxRunningUsers:" + mMaxRunningUsers);
+ pw.println(" mUserSwitchUiEnabled:" + mUserSwitchUiEnabled);
}
}
diff --git a/services/core/java/com/android/server/appop/AppOpsService.java b/services/core/java/com/android/server/appop/AppOpsService.java
index 7e9a17b..366766e 100644
--- a/services/core/java/com/android/server/appop/AppOpsService.java
+++ b/services/core/java/com/android/server/appop/AppOpsService.java
@@ -1115,6 +1115,7 @@
// There is some actively running operation... need to find it
// and appropriately update its state.
final long now = System.currentTimeMillis();
+ final long nowElapsed = SystemClock.elapsedRealtime();
for (int i = uidState.pkgOps.size() - 1; i >= 0; i--) {
final Ops ops = uidState.pkgOps.valueAt(i);
for (int j = ops.size() - 1; j >= 0; j--) {
@@ -1136,7 +1137,7 @@
featureOp.finished(now, duration, oldPendingState,
AppOpsManager.OP_FLAG_SELF);
// Start the op in the new state
- featureOp.startRealtime = now;
+ featureOp.startRealtime = nowElapsed;
featureOp.started(now, newState, AppOpsManager.OP_FLAG_SELF);
}
}
diff --git a/services/core/java/com/android/server/appop/HistoricalRegistry.java b/services/core/java/com/android/server/appop/HistoricalRegistry.java
index 5983785..2175ca0 100644
--- a/services/core/java/com/android/server/appop/HistoricalRegistry.java
+++ b/services/core/java/com/android/server/appop/HistoricalRegistry.java
@@ -46,7 +46,6 @@
import android.util.Xml;
import com.android.internal.annotations.GuardedBy;
-import com.android.internal.config.sysui.SystemUiDeviceConfigFlags;
import com.android.internal.os.AtomicDirectory;
import com.android.internal.os.BackgroundThread;
import com.android.internal.util.ArrayUtils;
@@ -128,6 +127,7 @@
private static final String PARAMETER_DELIMITER = ",";
private static final String PARAMETER_ASSIGNMENT = "=";
+ private static final String PROPERTY_PERMISSIONS_HUB_ENABLED = "permissions_hub_enabled";
@GuardedBy("mLock")
private @NonNull LinkedList<HistoricalOps> mPendingWrites = new LinkedList<>();
@@ -701,7 +701,7 @@
private static boolean isApiEnabled() {
return Binder.getCallingUid() == Process.myUid()
|| DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_PRIVACY,
- SystemUiDeviceConfigFlags.PROPERTY_PERMISSIONS_HUB_ENABLED, false);
+ PROPERTY_PERMISSIONS_HUB_ENABLED, false);
}
private static final class Persistence {
diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java
index e426c6c..4bf1de6 100644
--- a/services/core/java/com/android/server/audio/AudioService.java
+++ b/services/core/java/com/android/server/audio/AudioService.java
@@ -269,6 +269,7 @@
private static final int MSG_OBSERVE_DEVICES_FOR_ALL_STREAMS = 27;
private static final int MSG_HDMI_VOLUME_CHECK = 28;
private static final int MSG_PLAYBACK_CONFIG_CHANGE = 29;
+ private static final int MSG_BROADCAST_MICROPHONE_MUTE = 30;
// start of messages handled under wakelock
// these messages can only be queued, i.e. sent with queueMsgUnderWakeLock(),
// and not with sendMsg(..., ..., SENDMSG_QUEUE, ...)
@@ -2925,9 +2926,8 @@
AudioSystem.muteMicrophone(muted);
try {
if (muted != currentMute) {
- mContext.sendBroadcastAsUser(
- new Intent(AudioManager.ACTION_MICROPHONE_MUTE_CHANGED)
- .setFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY), UserHandle.ALL);
+ sendMsg(mAudioHandler, MSG_BROADCAST_MICROPHONE_MUTE,
+ SENDMSG_NOOP, 0, 0, null, 0);
}
} finally {
Binder.restoreCallingIdentity(identity);
@@ -5236,6 +5236,13 @@
case MSG_PLAYBACK_CONFIG_CHANGE:
onPlaybackConfigChange((List<AudioPlaybackConfiguration>) msg.obj);
break;
+
+ case MSG_BROADCAST_MICROPHONE_MUTE:
+ mContext.sendBroadcastAsUser(
+ new Intent(AudioManager.ACTION_MICROPHONE_MUTE_CHANGED)
+ .setFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY),
+ UserHandle.ALL);
+ break;
}
}
}
diff --git a/services/core/java/com/android/server/compat/CompatChange.java b/services/core/java/com/android/server/compat/CompatChange.java
index 8762435..95582f7 100644
--- a/services/core/java/com/android/server/compat/CompatChange.java
+++ b/services/core/java/com/android/server/compat/CompatChange.java
@@ -38,6 +38,20 @@
*/
public final class CompatChange extends CompatibilityChangeInfo {
+ /**
+ * Callback listener for when compat changes are updated for a package.
+ * See {@link #registerListener(ChangeListener)} for more details.
+ */
+ public interface ChangeListener {
+ /**
+ * Called upon an override change for packageName and the change this listener is
+ * registered for. Called before the app is killed.
+ */
+ void onCompatChange(String packageName);
+ }
+
+ ChangeListener mListener = null;
+
private Map<String, Boolean> mPackageOverrides;
public CompatChange(long changeId) {
@@ -64,6 +78,15 @@
change.getDisabled());
}
+ void registerListener(ChangeListener listener) {
+ if (mListener != null) {
+ throw new IllegalStateException(
+ "Listener for change " + toString() + " already registered.");
+ }
+ mListener = listener;
+ }
+
+
/**
* Force the enabled state of this change for a given package name. The change will only take
* effect after that packages process is killed and restarted.
@@ -78,6 +101,7 @@
mPackageOverrides = new HashMap<>();
}
mPackageOverrides.put(pname, enabled);
+ notifyListener(pname);
}
/**
@@ -89,7 +113,9 @@
*/
void removePackageOverride(String pname) {
if (mPackageOverrides != null) {
- mPackageOverrides.remove(pname);
+ if (mPackageOverrides.remove(pname) != null) {
+ notifyListener(pname);
+ }
}
}
@@ -131,4 +157,10 @@
}
return sb.append(")").toString();
}
+
+ private void notifyListener(String packageName) {
+ if (mListener != null) {
+ mListener.onCompatChange(packageName);
+ }
+ }
}
diff --git a/services/core/java/com/android/server/compat/CompatConfig.java b/services/core/java/com/android/server/compat/CompatConfig.java
index 490cce3..39c6e75 100644
--- a/services/core/java/com/android/server/compat/CompatConfig.java
+++ b/services/core/java/com/android/server/compat/CompatConfig.java
@@ -228,7 +228,7 @@
/**
* Removes all overrides previously added via {@link #addOverride(long, String, boolean)} or
- * {@link #addAppOverrides(CompatibilityChangeConfig, String)} for a certain package.
+ * {@link #addOverrides(CompatibilityChangeConfig, String)} for a certain package.
*
* <p>This restores the default behaviour for the given change and app, once any app
* processes have been restarted.
@@ -243,6 +243,27 @@
}
}
+ boolean registerListener(long changeId, CompatChange.ChangeListener listener) {
+ boolean alreadyKnown = true;
+ synchronized (mChanges) {
+ CompatChange c = mChanges.get(changeId);
+ if (c == null) {
+ alreadyKnown = false;
+ c = new CompatChange(changeId);
+ addChange(c);
+ }
+ c.registerListener(listener);
+ }
+ return alreadyKnown;
+ }
+
+ @VisibleForTesting
+ void clearChanges() {
+ synchronized (mChanges) {
+ mChanges.clear();
+ }
+ }
+
/**
* Dumps the current list of compatibility config information.
*
diff --git a/services/core/java/com/android/server/compat/PlatformCompat.java b/services/core/java/com/android/server/compat/PlatformCompat.java
index 311e24f..6ec4b9f 100644
--- a/services/core/java/com/android/server/compat/PlatformCompat.java
+++ b/services/core/java/com/android/server/compat/PlatformCompat.java
@@ -108,6 +108,23 @@
return enabled;
}
+ /**
+ * Register a listener for change state overrides. Only one listener per change is allowed.
+ *
+ * <p>{@code listener.onCompatChange(String)} method is guaranteed to be called with
+ * packageName before the app is killed upon an override change. The state of a change is not
+ * guaranteed to change when {@code listener.onCompatChange(String)} is called.
+ *
+ * @param changeId to get updates for
+ * @param listener the listener that will be called upon a potential change for package.
+ * @throws IllegalStateException if a listener was already registered for changeId
+ * @returns {@code true} if a change with changeId was already known, or (@code false}
+ * otherwise.
+ */
+ public boolean registerListener(long changeId, CompatChange.ChangeListener listener) {
+ return CompatConfig.get().registerListener(changeId, listener);
+ }
+
@Override
public void setOverrides(CompatibilityChangeConfig overrides, String packageName) {
CompatConfig.get().addOverrides(overrides, packageName);
diff --git a/services/core/java/com/android/server/connectivity/IpConnectivityMetrics.java b/services/core/java/com/android/server/connectivity/IpConnectivityMetrics.java
index 79b56c6..33f6ed5 100644
--- a/services/core/java/com/android/server/connectivity/IpConnectivityMetrics.java
+++ b/services/core/java/com/android/server/connectivity/IpConnectivityMetrics.java
@@ -20,6 +20,7 @@
import android.net.ConnectivityMetricsEvent;
import android.net.IIpConnectivityMetrics;
import android.net.INetdEventCallback;
+import android.net.NetworkStack;
import android.net.metrics.ApfProgramEvent;
import android.net.metrics.IpConnectivityLog;
import android.os.Binder;
@@ -276,7 +277,7 @@
@Override
public int logEvent(ConnectivityMetricsEvent event) {
- enforceConnectivityInternalPermission();
+ NetworkStack.checkNetworkStackPermission(getContext());
return append(event);
}
@@ -299,10 +300,6 @@
}
}
- private void enforceConnectivityInternalPermission() {
- enforcePermission(android.Manifest.permission.CONNECTIVITY_INTERNAL);
- }
-
private void enforceDumpPermission() {
enforcePermission(android.Manifest.permission.DUMP);
}
diff --git a/services/core/java/com/android/server/connectivity/NetworkAgentInfo.java b/services/core/java/com/android/server/connectivity/NetworkAgentInfo.java
index 24a5b7f..bb7f862 100644
--- a/services/core/java/com/android/server/connectivity/NetworkAgentInfo.java
+++ b/services/core/java/com/android/server/connectivity/NetworkAgentInfo.java
@@ -580,7 +580,7 @@
// semantics of WakeupMessage guarantee that if cancel is called then the alarm will
// never call its callback (handleLingerComplete), even if it has already fired.
// WakeupMessage makes no such guarantees about rescheduling a message, so if mLingerMessage
- // has already been dispatched, rescheduling to some time in the future it won't stop it
+ // has already been dispatched, rescheduling to some time in the future won't stop it
// from calling its callback immediately.
if (mLingerMessage != null) {
mLingerMessage.cancel();
diff --git a/services/core/java/com/android/server/connectivity/NetworkNotificationManager.java b/services/core/java/com/android/server/connectivity/NetworkNotificationManager.java
index d13e675..bc83780 100644
--- a/services/core/java/com/android/server/connectivity/NetworkNotificationManager.java
+++ b/services/core/java/com/android/server/connectivity/NetworkNotificationManager.java
@@ -18,6 +18,7 @@
import static android.net.NetworkCapabilities.NET_CAPABILITY_INTERNET;
import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR;
+import static android.net.NetworkCapabilities.TRANSPORT_VPN;
import static android.net.NetworkCapabilities.TRANSPORT_WIFI;
import android.app.Notification;
@@ -89,14 +90,22 @@
mNotificationTypeMap = new SparseIntArray();
}
+ @VisibleForTesting
+ protected static int approximateTransportType(NetworkAgentInfo nai) {
+ return nai.isVPN() ? TRANSPORT_VPN : getFirstTransportType(nai);
+ }
+
// TODO: deal more gracefully with multi-transport networks.
private static int getFirstTransportType(NetworkAgentInfo nai) {
+ // TODO: The range is wrong, the safer and correct way is to change the range from
+ // MIN_TRANSPORT to MAX_TRANSPORT.
for (int i = 0; i < 64; i++) {
if (nai.networkCapabilities.hasTransport(i)) return i;
}
return -1;
}
+ // TODO: Remove @TransportType or change it to @Transport.
private static String getTransportName(@TransportType int transportType) {
Resources r = Resources.getSystem();
String[] networkTypes = r.getStringArray(R.array.network_switch_type_name);
@@ -146,7 +155,7 @@
final int transportType;
final String name;
if (nai != null) {
- transportType = getFirstTransportType(nai);
+ transportType = approximateTransportType(nai);
final String extraInfo = nai.networkInfo.getExtraInfo();
name = TextUtils.isEmpty(extraInfo) ? nai.networkCapabilities.getSSID() : extraInfo;
// Only notify for Internet-capable networks.
@@ -175,7 +184,7 @@
tag, nameOf(eventId), getTransportName(transportType), name, highPriority));
}
- Resources r = Resources.getSystem();
+ Resources r = mContext.getResources();
final CharSequence title;
final CharSequence details;
int icon = getIcon(transportType, notifyType);
@@ -239,7 +248,7 @@
details = r.getString(R.string.captive_portal_logged_in_detailed);
} else if (notifyType == NotificationType.NETWORK_SWITCH) {
String fromTransport = getTransportName(transportType);
- String toTransport = getTransportName(getFirstTransportType(switchToNai));
+ String toTransport = getTransportName(approximateTransportType(switchToNai));
title = r.getString(R.string.network_switch_metered, toTransport);
details = r.getString(R.string.network_switch_metered_detail, toTransport,
fromTransport);
@@ -340,8 +349,8 @@
}
public void showToast(NetworkAgentInfo fromNai, NetworkAgentInfo toNai) {
- String fromTransport = getTransportName(getFirstTransportType(fromNai));
- String toTransport = getTransportName(getFirstTransportType(toNai));
+ String fromTransport = getTransportName(approximateTransportType(fromNai));
+ String toTransport = getTransportName(approximateTransportType(toNai));
String text = mContext.getResources().getString(
R.string.network_switch_metered_toast, fromTransport, toTransport);
Toast.makeText(mContext, text, Toast.LENGTH_LONG).show();
diff --git a/services/core/java/com/android/server/connectivity/PermissionMonitor.java b/services/core/java/com/android/server/connectivity/PermissionMonitor.java
index 29c4bad..f0b7150 100644
--- a/services/core/java/com/android/server/connectivity/PermissionMonitor.java
+++ b/services/core/java/com/android/server/connectivity/PermissionMonitor.java
@@ -17,7 +17,6 @@
package com.android.server.connectivity;
import static android.Manifest.permission.CHANGE_NETWORK_STATE;
-import static android.Manifest.permission.CONNECTIVITY_INTERNAL;
import static android.Manifest.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS;
import static android.Manifest.permission.INTERNET;
import static android.Manifest.permission.NETWORK_STACK;
@@ -25,6 +24,7 @@
import static android.content.pm.PackageInfo.REQUESTED_PERMISSION_GRANTED;
import static android.content.pm.PackageManager.GET_PERMISSIONS;
import static android.content.pm.PackageManager.MATCH_ANY_USER;
+import static android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK;
import static android.os.Process.INVALID_UID;
import static android.os.Process.SYSTEM_UID;
@@ -229,22 +229,22 @@
}
@VisibleForTesting
- boolean hasPermission(PackageInfo app, String permission) {
- if (app.requestedPermissions != null) {
- for (String p : app.requestedPermissions) {
- if (permission.equals(p)) {
- return true;
- }
- }
+ boolean hasPermission(@NonNull final PackageInfo app, @NonNull final String permission) {
+ if (app.requestedPermissions == null || app.requestedPermissionsFlags == null) {
+ return false;
}
- return false;
+ final int index = ArrayUtils.indexOf(app.requestedPermissions, permission);
+ if (index < 0 || index >= app.requestedPermissionsFlags.length) return false;
+ return (app.requestedPermissionsFlags[index] & REQUESTED_PERMISSION_GRANTED) != 0;
}
- private boolean hasNetworkPermission(PackageInfo app) {
+ @VisibleForTesting
+ boolean hasNetworkPermission(@NonNull final PackageInfo app) {
return hasPermission(app, CHANGE_NETWORK_STATE);
}
- private boolean hasRestrictedNetworkPermission(PackageInfo app) {
+ @VisibleForTesting
+ boolean hasRestrictedNetworkPermission(@NonNull final PackageInfo app) {
// 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) {
@@ -259,34 +259,20 @@
return true;
}
}
- return hasPermission(app, CONNECTIVITY_INTERNAL)
+
+ return hasPermission(app, PERMISSION_MAINLINE_NETWORK_STACK)
+ || hasPermission(app, NETWORK_STACK)
|| hasPermission(app, CONNECTIVITY_USE_RESTRICTED_NETWORKS);
}
- private boolean hasUseBackgroundNetworksPermission(PackageInfo app) {
- // This function defines what it means to hold the permission to use
- // background networks.
- return hasPermission(app, CHANGE_NETWORK_STATE)
- || hasPermission(app, NETWORK_STACK)
- || hasRestrictedNetworkPermission(app);
- }
-
- public boolean hasUseBackgroundNetworksPermission(int uid) {
- final String[] names = mPackageManager.getPackagesForUid(uid);
- if (null == names || names.length == 0) return false;
- try {
- // Only using the first package name. There may be multiple names if multiple
- // apps share the same UID, but in that case they also share permissions so
- // querying with any of the names will return the same results.
- int userId = UserHandle.getUserId(uid);
- final PackageInfo app = mPackageManager.getPackageInfoAsUser(
- names[0], GET_PERMISSIONS, userId);
- return hasUseBackgroundNetworksPermission(app);
- } catch (NameNotFoundException e) {
- // App not found.
- loge("NameNotFoundException " + names[0], e);
- return false;
- }
+ /** Returns whether the given uid has using background network permission. */
+ public synchronized boolean hasUseBackgroundNetworksPermission(final int uid) {
+ // Apps with any of the CHANGE_NETWORK_STATE, NETWORK_STACK, CONNECTIVITY_INTERNAL or
+ // CONNECTIVITY_USE_RESTRICTED_NETWORKS permission has the permission to use background
+ // networks. mApps contains the result of checks for both hasNetworkPermission and
+ // hasRestrictedNetworkPermission. If uid is in the mApps list that means uid has one of
+ // permissions at least.
+ return mApps.containsKey(uid);
}
private int[] toIntArray(Collection<Integer> list) {
diff --git a/services/core/java/com/android/server/connectivity/tethering/TetheringDependencies.java b/services/core/java/com/android/server/connectivity/tethering/TetheringDependencies.java
deleted file mode 100644
index 4ad7ac4..0000000
--- a/services/core/java/com/android/server/connectivity/tethering/TetheringDependencies.java
+++ /dev/null
@@ -1,96 +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.
- */
-
-package com.android.server.connectivity.tethering;
-
-import android.content.Context;
-import android.net.NetworkRequest;
-import android.net.ip.IpServer;
-import android.net.util.SharedLog;
-import android.os.Handler;
-
-import com.android.internal.util.StateMachine;
-import com.android.server.connectivity.MockableSystemProperties;
-
-import java.util.ArrayList;
-
-
-/**
- * Capture tethering dependencies, for injection.
- *
- * @hide
- */
-public class TetheringDependencies {
- /**
- * Get a reference to the offload hardware interface to be used by tethering.
- */
- public OffloadHardwareInterface getOffloadHardwareInterface(Handler h, SharedLog log) {
- return new OffloadHardwareInterface(h, log);
- }
-
- /**
- * Get a reference to the UpstreamNetworkMonitor to be used by tethering.
- */
- public UpstreamNetworkMonitor getUpstreamNetworkMonitor(Context ctx, StateMachine target,
- SharedLog log, int what) {
- return new UpstreamNetworkMonitor(ctx, target, log, what);
- }
-
- /**
- * Get a reference to the IPv6TetheringCoordinator to be used by tethering.
- */
- public IPv6TetheringCoordinator getIPv6TetheringCoordinator(
- ArrayList<IpServer> notifyList, SharedLog log) {
- return new IPv6TetheringCoordinator(notifyList, log);
- }
-
- /**
- * Get dependencies to be used by IpServer.
- */
- public IpServer.Dependencies getIpServerDependencies() {
- return new IpServer.Dependencies();
- }
-
- /**
- * Indicates whether tethering is supported on the device.
- */
- public boolean isTetheringSupported() {
- return true;
- }
-
- /**
- * Get the NetworkRequest that should be fulfilled by the default network.
- */
- public NetworkRequest getDefaultNetworkRequest() {
- return null;
- }
-
- /**
- * Get a reference to the EntitlementManager to be used by tethering.
- */
- public EntitlementManager getEntitlementManager(Context ctx, StateMachine target,
- SharedLog log, int what, MockableSystemProperties systemProperties) {
- return new EntitlementManager(ctx, target, log, what, systemProperties);
- }
-
- /**
- * Generate a new TetheringConfiguration according to input sub Id.
- */
- public TetheringConfiguration generateTetheringConfiguration(Context ctx, SharedLog log,
- int subId) {
- return new TetheringConfiguration(ctx, log, subId);
- }
-}
diff --git a/services/core/java/com/android/server/display/DisplayDevice.java b/services/core/java/com/android/server/display/DisplayDevice.java
index 9882f6c..7ce63c5 100644
--- a/services/core/java/com/android/server/display/DisplayDevice.java
+++ b/services/core/java/com/android/server/display/DisplayDevice.java
@@ -138,13 +138,17 @@
}
/**
- * Sets the display modes the system is allowed to switch between, roughly ordered by
- * preference.
+ * Sets the refresh ranges, and display modes that the system is allowed to switch between.
+ * Display modes are roughly ordered by preference.
*
* Not all display devices will automatically switch between modes, so it's important that the
* most-desired modes are at the beginning of the allowed array.
+ *
+ * @param defaultModeId is used, if the device does not support multiple refresh
+ * rates, and to navigate other parameters.
*/
- public void setAllowedDisplayModesLocked(int[] modes) {
+ public void setDesiredDisplayConfigSpecs(int defaultModeId, float minRefreshRate,
+ float maxRefreshRate, int[] modes) {
}
/**
diff --git a/services/core/java/com/android/server/display/DisplayManagerService.java b/services/core/java/com/android/server/display/DisplayManagerService.java
index c466640..d20191d 100644
--- a/services/core/java/com/android/server/display/DisplayManagerService.java
+++ b/services/core/java/com/android/server/display/DisplayManagerService.java
@@ -431,7 +431,7 @@
recordTopInsetLocked(mLogicalDisplays.get(Display.DEFAULT_DISPLAY));
}
- mDisplayModeDirector.setListener(new AllowedDisplayModeObserver());
+ mDisplayModeDirector.setDisplayModeListener(new AllowedDisplayModeObserver());
mDisplayModeDirector.start(mSensorManager);
mHandler.sendEmptyMessage(MSG_REGISTER_ADDITIONAL_DISPLAY_ADAPTERS);
@@ -2488,7 +2488,7 @@
}
- class AllowedDisplayModeObserver implements DisplayModeDirector.Listener {
+ class AllowedDisplayModeObserver implements DisplayModeDirector.DisplayModeListener {
public void onAllowedDisplayModesChanged() {
onAllowedDisplayModesChangedInternal();
}
diff --git a/services/core/java/com/android/server/display/DisplayModeDirector.java b/services/core/java/com/android/server/display/DisplayModeDirector.java
index d24bd1a..2df682f 100644
--- a/services/core/java/com/android/server/display/DisplayModeDirector.java
+++ b/services/core/java/com/android/server/display/DisplayModeDirector.java
@@ -18,26 +18,22 @@
import android.annotation.NonNull;
import android.annotation.Nullable;
-import android.content.BroadcastReceiver;
import android.content.ContentResolver;
import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
import android.content.res.Resources;
import android.database.ContentObserver;
-import android.hardware.display.DisplayManager;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
-
+import android.hardware.display.DisplayManager;
import android.net.Uri;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
-import android.os.UserHandle;
import android.os.PowerManager;
import android.os.SystemClock;
+import android.os.UserHandle;
import android.provider.DeviceConfig;
import android.provider.Settings;
import android.text.TextUtils;
@@ -47,11 +43,11 @@
import android.view.Display;
import android.view.DisplayInfo;
-import com.android.internal.os.BackgroundThread;
import com.android.internal.R;
+import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.os.BackgroundThread;
import com.android.server.display.utils.AmbientFilter;
import com.android.server.display.utils.AmbientFilterFactory;
-import com.android.server.display.whitebalance.DisplayWhiteBalanceFactory;
import java.io.PrintWriter;
import java.util.ArrayList;
@@ -87,11 +83,11 @@
// A map from the display ID to the collection of votes and their priority. The latter takes
// the form of another map from the priority to the vote itself so that each priority is
// guaranteed to have exactly one vote, which is also easily and efficiently replaceable.
- private final SparseArray<SparseArray<Vote>> mVotesByDisplay;
+ private SparseArray<SparseArray<Vote>> mVotesByDisplay;
// A map from the display ID to the supported modes on that display.
- private final SparseArray<Display.Mode[]> mSupportedModesByDisplay;
+ private SparseArray<Display.Mode[]> mSupportedModesByDisplay;
// A map from the display ID to the default mode of that display.
- private final SparseArray<Display.Mode> mDefaultModeByDisplay;
+ private SparseArray<Display.Mode> mDefaultModeByDisplay;
private final AppRequestObserver mAppRequestObserver;
private final SettingsObserver mSettingsObserver;
@@ -99,7 +95,7 @@
private final BrightnessObserver mBrightnessObserver;
private final DeviceConfigDisplaySettings mDeviceConfigDisplaySettings;
- private Listener mListener;
+ private DisplayModeListener mDisplayModeListener;
public DisplayModeDirector(@NonNull Context context, @NonNull Handler handler) {
mContext = context;
@@ -143,17 +139,7 @@
*/
@NonNull
public int[] getAllowedModes(int displayId) {
- synchronized (mLock) {
- SparseArray<Vote> votes = getVotesLocked(displayId);
- Display.Mode[] modes = mSupportedModesByDisplay.get(displayId);
- Display.Mode defaultMode = mDefaultModeByDisplay.get(displayId);
- if (modes == null || defaultMode == null) {
- Slog.e(TAG, "Asked about unknown display, returning empty allowed set! (id="
- + displayId + ")");
- return new int[0];
- }
- return getAllowedModesLocked(votes, modes, defaultMode);
- }
+ return getDesiredDisplayConfigSpecs(displayId).allowedConfigs;
}
@NonNull
@@ -178,76 +164,101 @@
return votes;
}
+ /**
+ * Calculates the refresh rate ranges and display modes that the system is allowed to freely
+ * switch between based on global and display-specific constraints.
+ *
+ * @param displayId The display to query for.
+ * @return The ID of the default mode the system should use, and the refresh rate range the
+ * system is allowed to switch between.
+ */
@NonNull
- private int[] getAllowedModesLocked(@NonNull SparseArray<Vote> votes,
- @NonNull Display.Mode[] modes, @NonNull Display.Mode defaultMode) {
- int lowestConsideredPriority = Vote.MIN_PRIORITY;
- while (lowestConsideredPriority <= Vote.MAX_PRIORITY) {
+ public DesiredDisplayConfigSpecs getDesiredDisplayConfigSpecs(int displayId) {
+ synchronized (mLock) {
+ SparseArray<Vote> votes = getVotesLocked(displayId);
+ Display.Mode[] modes = mSupportedModesByDisplay.get(displayId);
+ Display.Mode defaultMode = mDefaultModeByDisplay.get(displayId);
+ if (modes == null || defaultMode == null) {
+ Slog.e(TAG, "Asked about unknown display, returning empty desired configs!"
+ + "(id=" + displayId + ")");
+ return new DesiredDisplayConfigSpecs(displayId, new RefreshRateRange(60, 60),
+ new int[0]);
+ }
+
+ int[] availableModes = new int[]{defaultMode.getModeId()};
float minRefreshRate = 0f;
float maxRefreshRate = Float.POSITIVE_INFINITY;
- int height = Vote.INVALID_SIZE;
- int width = Vote.INVALID_SIZE;
+ int lowestConsideredPriority = Vote.MIN_PRIORITY;
+ while (lowestConsideredPriority <= Vote.MAX_PRIORITY) {
+ int height = Vote.INVALID_SIZE;
+ int width = Vote.INVALID_SIZE;
- for (int priority = Vote.MAX_PRIORITY;
- priority >= lowestConsideredPriority;
- priority--) {
- Vote vote = votes.get(priority);
- if (vote == null) {
- continue;
+ for (int priority = Vote.MAX_PRIORITY;
+ priority >= lowestConsideredPriority; priority--) {
+ Vote vote = votes.get(priority);
+ if (vote == null) {
+ continue;
+ }
+ // For refresh rates, just use the tightest bounds of all the votes
+ minRefreshRate = Math.max(minRefreshRate, vote.refreshRateRange.min);
+ maxRefreshRate = Math.min(maxRefreshRate, vote.refreshRateRange.max);
+ // For display size, use only the first vote we come across (i.e. the highest
+ // priority vote that includes the width / height).
+ if (height == Vote.INVALID_SIZE && width == Vote.INVALID_SIZE
+ && vote.height > 0 && vote.width > 0) {
+ width = vote.width;
+ height = vote.height;
+ }
}
- // For refresh rates, just use the tightest bounds of all the votes
- minRefreshRate = Math.max(minRefreshRate, vote.minRefreshRate);
- maxRefreshRate = Math.min(maxRefreshRate, vote.maxRefreshRate);
- // For display size, use only the first vote we come across (i.e. the highest
- // priority vote that includes the width / height).
- if (height == Vote.INVALID_SIZE && width == Vote.INVALID_SIZE
- && vote.height > 0 && vote.width > 0) {
- width = vote.width;
- height = vote.height;
+
+ // If we don't have anything specifying the width / height of the display, just use
+ // the default width and height. We don't want these switching out from underneath
+ // us since it's a pretty disruptive behavior.
+ if (height == Vote.INVALID_SIZE || width == Vote.INVALID_SIZE) {
+ width = defaultMode.getPhysicalWidth();
+ height = defaultMode.getPhysicalHeight();
}
- }
- // If we don't have anything specifying the width / height of the display, just use the
- // default width and height. We don't want these switching out from underneath us since
- // it's a pretty disruptive behavior.
- if (height == Vote.INVALID_SIZE || width == Vote.INVALID_SIZE) {
- width = defaultMode.getPhysicalWidth();
- height = defaultMode.getPhysicalHeight();
- }
+ availableModes = filterModes(modes, width, height, minRefreshRate, maxRefreshRate);
+ if (availableModes.length > 0) {
+ if (DEBUG) {
+ Slog.w(TAG, "Found available modes=" + Arrays.toString(availableModes)
+ + " with lowest priority considered "
+ + Vote.priorityToString(lowestConsideredPriority)
+ + " and constraints: "
+ + "width=" + width
+ + ", height=" + height
+ + ", minRefreshRate=" + minRefreshRate
+ + ", maxRefreshRate=" + maxRefreshRate);
+ }
+ break;
+ }
- int[] availableModes =
- filterModes(modes, width, height, minRefreshRate, maxRefreshRate);
- if (availableModes.length > 0) {
if (DEBUG) {
- Slog.w(TAG, "Found available modes=" + Arrays.toString(availableModes)
- + " with lowest priority considered "
+ Slog.w(TAG, "Couldn't find available modes with lowest priority set to "
+ Vote.priorityToString(lowestConsideredPriority)
- + " and constraints: "
+ + " and with the following constraints: "
+ "width=" + width
+ ", height=" + height
+ ", minRefreshRate=" + minRefreshRate
+ ", maxRefreshRate=" + maxRefreshRate);
}
- return availableModes;
+
+ // If we haven't found anything with the current set of votes, drop the
+ // current lowest priority vote.
+ lowestConsideredPriority++;
}
- if (DEBUG) {
- Slog.w(TAG, "Couldn't find available modes with lowest priority set to "
- + Vote.priorityToString(lowestConsideredPriority)
- + " and with the following constraints: "
- + "width=" + width
- + ", height=" + height
- + ", minRefreshRate=" + minRefreshRate
- + ", maxRefreshRate=" + maxRefreshRate);
+ int defaultModeId = defaultMode.getModeId();
+ if (availableModes.length > 0) {
+ defaultModeId = availableModes[0];
}
- // If we haven't found anything with the current set of votes, drop the current lowest
- // priority vote.
- lowestConsideredPriority++;
+ // filterModes function is going to filter the modes based on the voting system. If
+ // the application requests a given mode with preferredModeId function, it will be
+ // stored as the first and only element in available modes array.
+ return new DesiredDisplayConfigSpecs(defaultModeId,
+ new RefreshRateRange(minRefreshRate, maxRefreshRate), availableModes);
}
-
- // If we still haven't found anything that matches our current set of votes, just fall back
- // to the default mode.
- return new int[] { defaultMode.getModeId() };
}
private int[] filterModes(Display.Mode[] supportedModes,
@@ -300,11 +311,11 @@
}
/**
- * Sets the listener for changes to allowed display modes.
+ * Sets the modeListener for changes to allowed display modes.
*/
- public void setListener(@Nullable Listener listener) {
+ public void setDisplayModeListener(@Nullable DisplayModeListener displayModeListener) {
synchronized (mLock) {
- mListener = listener;
+ mDisplayModeListener = displayModeListener;
}
}
@@ -382,12 +393,12 @@
}
private void notifyAllowedModesChangedLocked() {
- if (mListener != null && !mHandler.hasMessages(MSG_ALLOWED_MODES_CHANGED)) {
+ if (mDisplayModeListener != null && !mHandler.hasMessages(MSG_ALLOWED_MODES_CHANGED)) {
// We need to post this to a handler to avoid calling out while holding the lock
// since we know there are things that both listen for changes as well as provide
// information. If we did call out while holding the lock, then there's no guaranteed
// lock order and we run the real of risk deadlock.
- Message msg = mHandler.obtainMessage(MSG_ALLOWED_MODES_CHANGED, mListener);
+ Message msg = mHandler.obtainMessage(MSG_ALLOWED_MODES_CHANGED, mDisplayModeListener);
msg.sendToTarget();
}
}
@@ -403,10 +414,25 @@
}
}
+ @VisibleForTesting
+ void injectSupportedModesByDisplay(SparseArray<Display.Mode[]> supportedModesByDisplay) {
+ mSupportedModesByDisplay = supportedModesByDisplay;
+ }
+
+ @VisibleForTesting
+ void injectDefaultModeByDisplay(SparseArray<Display.Mode> defaultModeByDisplay) {
+ mDefaultModeByDisplay = defaultModeByDisplay;
+ }
+
+ @VisibleForTesting
+ void injectVotesByDisplay(SparseArray<SparseArray<Vote>> votesByDisplay) {
+ mVotesByDisplay = votesByDisplay;
+ }
+
/**
* Listens for changes to display mode coordination.
*/
- public interface Listener {
+ public interface DisplayModeListener {
/**
* Called when the allowed display modes may have changed.
*/
@@ -422,8 +448,8 @@
public void handleMessage(Message msg) {
switch (msg.what) {
case MSG_ALLOWED_MODES_CHANGED:
- Listener listener = (Listener) msg.obj;
- listener.onAllowedDisplayModesChanged();
+ DisplayModeListener displayModeListener = (DisplayModeListener) msg.obj;
+ displayModeListener.onAllowedDisplayModesChanged();
break;
case MSG_BRIGHTNESS_THRESHOLDS_CHANGED:
@@ -452,7 +478,129 @@
}
}
- private static final class Vote {
+ /**
+ * Information about the min and max refresh rate DM would like to set the display to.
+ */
+ public static final class RefreshRateRange {
+ /**
+ * The lowest desired refresh rate.
+ */
+ public final float min;
+ /**
+ * The highest desired refresh rate.
+ */
+ public final float max;
+
+ public RefreshRateRange(float min, float max) {
+ if (min < 0 || max < 0 || min > max) {
+ Slog.e(TAG, "Wrong values for min and max when initializing RefreshRateRange : "
+ + min + " " + max);
+ this.min = this.max = 0;
+ return;
+ }
+ this.min = min;
+ this.max = max;
+ }
+
+ /**
+ * Checks whether the two objects have the same values.
+ */
+ @Override
+ public boolean equals(Object other) {
+ if (other == this) {
+ return true;
+ }
+
+ if (!(other instanceof RefreshRateRange)) {
+ return false;
+ }
+
+ RefreshRateRange refreshRateRange = (RefreshRateRange) other;
+ return (min == refreshRateRange.min && max == refreshRateRange.max);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(min, max);
+ }
+
+ @Override
+ public String toString() {
+ return "(" + min + " " + max + ")";
+ }
+ }
+
+ /**
+ * Information about the desired configuration to be set by the system. Includes the default
+ * configuration ID, refresh rate range, and the list of policy decisions that influenced the
+ * choice.
+ */
+ public static final class DesiredDisplayConfigSpecs {
+ /**
+ * Default configuration ID. This is what system defaults to for all other settings, or
+ * if the refresh rate range is not available.
+ */
+ public final int defaultModeId;
+ /**
+ * The refresh rate range.
+ */
+ public final RefreshRateRange refreshRateRange;
+ /**
+ * For legacy reasons, keep a list of allowed configs.
+ * TODO(b/142507213): Re-assess whether the list of allowed configs is still necessary.
+ */
+ public final int[] allowedConfigs;
+
+ public DesiredDisplayConfigSpecs(int defaultModeId,
+ @NonNull RefreshRateRange refreshRateRange,
+ @NonNull int[] allowedConfigs) {
+ this.defaultModeId = defaultModeId;
+ this.refreshRateRange = refreshRateRange;
+ this.allowedConfigs = allowedConfigs;
+ }
+
+ /**
+ * Returns a string representation of the object.
+ */
+ @Override
+ public String toString() {
+ return "DesiredDisplayConfigSpecs(defaultModeId=" + defaultModeId
+ + ", refreshRateRange=" + refreshRateRange.toString()
+ + ", allowedConfigs=" + Arrays.toString(allowedConfigs) + ")";
+ }
+ /**
+ * Checks whether the two objects have the same values.
+ */
+ @Override
+ public boolean equals(Object other) {
+ if (other == this) {
+ return true;
+ }
+
+ if (!(other instanceof DesiredDisplayConfigSpecs)) {
+ return false;
+ }
+
+ DesiredDisplayConfigSpecs desiredDisplayConfigSpecs =
+ (DesiredDisplayConfigSpecs) other;
+
+ if (defaultModeId != desiredDisplayConfigSpecs.defaultModeId) {
+ return false;
+ }
+ if (!refreshRateRange.equals(desiredDisplayConfigSpecs.refreshRateRange)) {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(defaultModeId, refreshRateRange);
+ }
+ }
+
+ @VisibleForTesting
+ static final class Vote {
// LOW_BRIGHTNESS votes for a single refresh rate like [60,60], [90,90] or null.
// If the higher voters result is a range, it will fix the rate to a single choice.
// It's used to avoid rate switch in certain conditions.
@@ -499,15 +647,10 @@
* The requested height of the display in pixels, or INVALID_SIZE;
*/
public final int height;
-
/**
- * The lowest desired refresh rate.
+ * Information about the min and max refresh rate DM would like to set the display to.
*/
- public final float minRefreshRate;
- /**
- * The highest desired refresh rate.
- */
- public final float maxRefreshRate;
+ public final RefreshRateRange refreshRateRange;
public static Vote forRefreshRates(float minRefreshRate, float maxRefreshRate) {
return new Vote(INVALID_SIZE, INVALID_SIZE, minRefreshRate, maxRefreshRate);
@@ -521,8 +664,8 @@
float minRefreshRate, float maxRefreshRate) {
this.width = width;
this.height = height;
- this.minRefreshRate = minRefreshRate;
- this.maxRefreshRate = maxRefreshRate;
+ this.refreshRateRange =
+ new RefreshRateRange(minRefreshRate, maxRefreshRate);
}
public static String priorityToString(int priority) {
@@ -547,11 +690,9 @@
@Override
public String toString() {
return "Vote{"
- + "width=" + width
- + ", height=" + height
- + ", minRefreshRate=" + minRefreshRate
- + ", maxRefreshRate=" + maxRefreshRate
- + "}";
+ + "width=" + width + ", height=" + height
+ + ", minRefreshRate=" + refreshRateRange.min
+ + ", maxRefreshRate=" + refreshRateRange.max + "}";
}
}
diff --git a/services/core/java/com/android/server/display/LocalDisplayAdapter.java b/services/core/java/com/android/server/display/LocalDisplayAdapter.java
index b03dc3b..c4ea81a 100644
--- a/services/core/java/com/android/server/display/LocalDisplayAdapter.java
+++ b/services/core/java/com/android/server/display/LocalDisplayAdapter.java
@@ -173,6 +173,8 @@
private int mActiveModeId;
private boolean mActiveModeInvalid;
private int[] mAllowedModeIds;
+ private float mMinRefreshRate;
+ private float mMaxRefreshRate;
private boolean mAllowedModeIdsInvalid;
private int mActivePhysIndex;
private int[] mAllowedPhysIndexes;
@@ -623,7 +625,9 @@
}
@Override
- public void setAllowedDisplayModesLocked(int[] modes) {
+ public void setDesiredDisplayConfigSpecs(int defaultModeId, float minRefreshRate,
+ float maxRefreshRate, int[] modes) {
+ updateDesiredDisplayConfigSpecs(defaultModeId, minRefreshRate, maxRefreshRate);
updateAllowedModesLocked(modes);
}
@@ -653,6 +657,7 @@
return true;
}
+ // TODO(b/142507213): Remove once refresh rates are plummed through to kernel.
public void updateAllowedModesLocked(int[] allowedModes) {
if (Arrays.equals(allowedModes, mAllowedModeIds) && !mAllowedModeIdsInvalid) {
return;
@@ -662,6 +667,39 @@
}
}
+ public void updateDesiredDisplayConfigSpecs(int defaultModeId, float minRefreshRate,
+ float maxRefreshRate) {
+ if (minRefreshRate == mMinRefreshRate
+ && maxRefreshRate == mMaxRefreshRate
+ && defaultModeId == mDefaultModeId) {
+ return;
+ }
+ if (updateDesiredDisplayConfigSpecsInternalLocked(defaultModeId, minRefreshRate,
+ maxRefreshRate)) {
+ updateDeviceInfoLocked();
+ }
+ }
+
+ public boolean updateDesiredDisplayConfigSpecsInternalLocked(int defaultModeId,
+ float minRefreshRate, float maxRefreshRate) {
+ if (DEBUG) {
+ Slog.w(TAG, "updateDesiredDisplayConfigSpecsInternalLocked("
+ + "defaultModeId="
+ + Integer.toString(defaultModeId)
+ + ", minRefreshRate="
+ + Float.toString(minRefreshRate)
+ + ", maxRefreshRate="
+ + Float.toString(minRefreshRate));
+ }
+
+ final IBinder token = getDisplayTokenLocked();
+ SurfaceControl.setDesiredDisplayConfigSpecs(token,
+ new SurfaceControl.DesiredDisplayConfigSpecs(
+ defaultModeId, minRefreshRate, maxRefreshRate));
+ int activePhysIndex = SurfaceControl.getActiveConfig(token);
+ return updateActiveModeLocked(activePhysIndex);
+ }
+
public boolean updateAllowedModesInternalLocked(int[] allowedModes) {
if (DEBUG) {
Slog.w(TAG, "updateAllowedModesInternalLocked(allowedModes="
@@ -735,6 +773,8 @@
pw.println("mPhysicalDisplayId=" + mPhysicalDisplayId);
pw.println("mAllowedPhysIndexes=" + Arrays.toString(mAllowedPhysIndexes));
pw.println("mAllowedModeIds=" + Arrays.toString(mAllowedModeIds));
+ pw.println("mMinRefreshRate=" + mMinRefreshRate);
+ pw.println("mMaxRefreshRate=" + mMaxRefreshRate);
pw.println("mAllowedModeIdsInvalid=" + mAllowedModeIdsInvalid);
pw.println("mActivePhysIndex=" + mActivePhysIndex);
pw.println("mActiveModeId=" + mActiveModeId);
diff --git a/services/core/java/com/android/server/display/LogicalDisplay.java b/services/core/java/com/android/server/display/LogicalDisplay.java
index dcef998..f4b2dc8 100644
--- a/services/core/java/com/android/server/display/LogicalDisplay.java
+++ b/services/core/java/com/android/server/display/LogicalDisplay.java
@@ -352,11 +352,12 @@
// Set the color mode and allowed display mode.
if (device == mPrimaryDisplayDevice) {
- device.setAllowedDisplayModesLocked(mAllowedDisplayModes);
+ // See ag/9588196 for correct values.
+ device.setDesiredDisplayConfigSpecs(0, 60, 60, mAllowedDisplayModes);
device.setRequestedColorModeLocked(mRequestedColorMode);
} else {
// Reset to default for non primary displays
- device.setAllowedDisplayModesLocked(new int[] {0});
+ device.setDesiredDisplayConfigSpecs(0, 60, 60, new int[] {0});
device.setRequestedColorModeLocked(0);
}
diff --git a/services/core/java/com/android/server/display/OverlayDisplayAdapter.java b/services/core/java/com/android/server/display/OverlayDisplayAdapter.java
index 60cfbd0..739dd64 100644
--- a/services/core/java/com/android/server/display/OverlayDisplayAdapter.java
+++ b/services/core/java/com/android/server/display/OverlayDisplayAdapter.java
@@ -315,16 +315,9 @@
}
@Override
- public void setAllowedDisplayModesLocked(int[] modes) {
- final int id;
- if (modes.length > 0) {
- // The allowed modes should be ordered by preference, so just use the first mode
- // here.
- id = modes[0];
- } else {
- // If we don't have any allowed modes, just use the default mode.
- id = 0;
- }
+ public void setDesiredDisplayConfigSpecs(int defaultModeId, float minRefreshRate,
+ float maxRefreshRate, int[] modes) {
+ final int id = defaultModeId;
int index = -1;
if (id == 0) {
// Use the default.
diff --git a/services/core/java/com/android/server/display/WifiDisplayController.java b/services/core/java/com/android/server/display/WifiDisplayController.java
index 283a78b..2992f1e 100644
--- a/services/core/java/com/android/server/display/WifiDisplayController.java
+++ b/services/core/java/com/android/server/display/WifiDisplayController.java
@@ -508,8 +508,7 @@
Slog.d(TAG, "updateDesiredDevice: new information "
+ describeWifiP2pDevice(device));
}
- mDesiredDevice.updateSupplicantDetails(device);
- mDesiredDevice.status = device.status;
+ mDesiredDevice.update(device);
if (mAdvertisedDisplay != null
&& mAdvertisedDisplay.getDeviceAddress().equals(address)) {
readvertiseDisplay(createWifiDisplay(mDesiredDevice));
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
index 9a85f952..a702ce5 100644
--- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
+++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
@@ -1557,6 +1557,18 @@
if (!connected) {
removeCecSwitches(portId);
}
+
+ // Turning System Audio Mode off when the AVR is unlugged or standby.
+ // When the device is not unplugged but reawaken from standby, we check if the System
+ // Audio Control Feature is enabled or not then decide if turning SAM on/off accordingly.
+ if (getAvrDeviceInfo() != null && portId == getAvrDeviceInfo().getPortId()) {
+ if (!connected) {
+ setSystemAudioMode(false);
+ } else if (mSystemAudioControlFeatureEnabled != mService.isSystemAudioActivated()){
+ setSystemAudioMode(mSystemAudioControlFeatureEnabled);
+ }
+ }
+
// Tv device will have permanent HotplugDetectionAction.
List<HotplugDetectionAction> hotplugActions = getActions(HotplugDetectionAction.class);
if (!hotplugActions.isEmpty()) {
diff --git a/services/core/java/com/android/server/input/InputManagerService.java b/services/core/java/com/android/server/input/InputManagerService.java
index 67a23dd..16b7d99 100644
--- a/services/core/java/com/android/server/input/InputManagerService.java
+++ b/services/core/java/com/android/server/input/InputManagerService.java
@@ -171,7 +171,6 @@
private final ArrayList<InputDevice>
mTempFullKeyboards = new ArrayList<InputDevice>(); // handler thread only
private boolean mKeyboardLayoutNotificationShown;
- private PendingIntent mKeyboardLayoutIntent;
private Toast mSwitchedKeyboardLayoutToast;
// State for vibrator tokens.
@@ -205,6 +204,7 @@
private static native void nativeUnregisterInputChannel(long ptr, InputChannel inputChannel);
private static native void nativePilferPointers(long ptr, IBinder token);
private static native void nativeSetInputFilterEnabled(long ptr, boolean enable);
+ private static native void nativeSetInTouchMode(long ptr, boolean inTouchMode);
private static native int nativeInjectInputEvent(long ptr, InputEvent event,
int injectorPid, int injectorUid, int syncMode, int timeoutMillis,
int policyFlags);
@@ -603,6 +603,25 @@
}
}
+ /**
+ * Set the state of the touch mode.
+ *
+ * WindowManager remains the source of truth of the touch mode state.
+ * However, we need to keep a copy of this state in input.
+ *
+ * The apps determine the touch mode state. Therefore, a single app will
+ * affect the global state. That state change needs to be propagated to
+ * other apps, when they become focused.
+ *
+ * When input dispatches focus to the apps, the touch mode state
+ * will be sent together with the focus change.
+ *
+ * @param inTouchMode true if the device is in touch mode.
+ */
+ public void setInTouchMode(boolean inTouchMode) {
+ nativeSetInTouchMode(mPtr, inTouchMode);
+ }
+
@Override // Binder call
public boolean injectInputEvent(InputEvent event, int mode) {
return injectInputEventInternal(event, mode);
diff --git a/services/core/java/com/android/server/integrity/engine/RuleEvaluationEngine.java b/services/core/java/com/android/server/integrity/engine/RuleEvaluationEngine.java
index f0bb192..b8202b6 100644
--- a/services/core/java/com/android/server/integrity/engine/RuleEvaluationEngine.java
+++ b/services/core/java/com/android/server/integrity/engine/RuleEvaluationEngine.java
@@ -16,9 +16,10 @@
package com.android.server.integrity.engine;
-import com.android.server.integrity.model.AppInstallMetadata;
+import android.content.integrity.AppInstallMetadata;
+import android.content.integrity.Rule;
+
import com.android.server.integrity.model.IntegrityCheckResult;
-import com.android.server.integrity.model.Rule;
import java.util.ArrayList;
import java.util.List;
@@ -26,8 +27,8 @@
/**
* The engine used to evaluate rules against app installs.
*
- * <p>Every app install is evaluated against rules (pushed by the verifier) by the evaluation
- * engine to allow/block that install.
+ * <p>Every app install is evaluated against rules (pushed by the verifier) by the evaluation engine
+ * to allow/block that install.
*/
public final class RuleEvaluationEngine {
private static final String TAG = "RuleEvaluation";
@@ -36,9 +37,7 @@
// installs against rules.
private static RuleEvaluationEngine sRuleEvaluationEngine;
- /**
- * Provide a singleton instance of the rule evaluation engine.
- */
+ /** Provide a singleton instance of the rule evaluation engine. */
public static synchronized RuleEvaluationEngine getRuleEvaluationEngine() {
if (sRuleEvaluationEngine == null) {
return new RuleEvaluationEngine();
@@ -50,7 +49,7 @@
* Load, and match the list of rules against an app install metadata.
*
* @param appInstallMetadata Metadata of the app to be installed, and to evaluate the rules
- * against.
+ * against.
* @return result of the integrity check
*/
public IntegrityCheckResult evaluate(AppInstallMetadata appInstallMetadata) {
diff --git a/services/core/java/com/android/server/integrity/engine/RuleEvaluator.java b/services/core/java/com/android/server/integrity/engine/RuleEvaluator.java
index 7deae46..ee51d4f 100644
--- a/services/core/java/com/android/server/integrity/engine/RuleEvaluator.java
+++ b/services/core/java/com/android/server/integrity/engine/RuleEvaluator.java
@@ -16,18 +16,18 @@
package com.android.server.integrity.engine;
-import static com.android.server.integrity.model.Rule.DENY;
-import static com.android.server.integrity.model.Rule.FORCE_ALLOW;
+import static android.content.integrity.Rule.DENY;
+import static android.content.integrity.Rule.FORCE_ALLOW;
import android.annotation.NonNull;
+import android.content.integrity.AppInstallMetadata;
+import android.content.integrity.AtomicFormula;
+import android.content.integrity.CompoundFormula;
+import android.content.integrity.Formula;
+import android.content.integrity.Rule;
import android.util.Slog;
-import com.android.server.integrity.model.AppInstallMetadata;
-import com.android.server.integrity.model.AtomicFormula;
-import com.android.server.integrity.model.Formula;
import com.android.server.integrity.model.IntegrityCheckResult;
-import com.android.server.integrity.model.OpenFormula;
-import com.android.server.integrity.model.Rule;
import java.util.ArrayList;
import java.util.List;
@@ -89,17 +89,17 @@
if (isAtomicFormula(formula)) {
return true;
}
- OpenFormula openFormula = (OpenFormula) formula;
- return openFormula.getConnector() == OpenFormula.AND
- && openFormula.getFormulas().stream().allMatch(RuleEvaluator::isAtomicFormula);
+ CompoundFormula compoundFormula = (CompoundFormula) formula;
+ return compoundFormula.getConnector() == CompoundFormula.AND
+ && compoundFormula.getFormulas().stream().allMatch(RuleEvaluator::isAtomicFormula);
}
private static boolean isAtomicFormula(Formula formula) {
if (formula instanceof AtomicFormula) {
return true;
}
- OpenFormula openFormula = (OpenFormula) formula;
- return openFormula.getConnector() == OpenFormula.NOT
- && openFormula.getFormulas().get(0) instanceof AtomicFormula;
+ CompoundFormula compoundFormula = (CompoundFormula) formula;
+ return compoundFormula.getConnector() == CompoundFormula.NOT
+ && compoundFormula.getFormulas().get(0) instanceof AtomicFormula;
}
}
diff --git a/services/core/java/com/android/server/integrity/engine/RuleLoader.java b/services/core/java/com/android/server/integrity/engine/RuleLoader.java
index af24d7a..4ba2bfb 100644
--- a/services/core/java/com/android/server/integrity/engine/RuleLoader.java
+++ b/services/core/java/com/android/server/integrity/engine/RuleLoader.java
@@ -16,7 +16,7 @@
package com.android.server.integrity.engine;
-import com.android.server.integrity.model.Rule;
+import android.content.integrity.Rule;
import java.util.ArrayList;
import java.util.List;
diff --git a/services/core/java/com/android/server/integrity/model/IntegrityCheckResult.java b/services/core/java/com/android/server/integrity/model/IntegrityCheckResult.java
index ef0751d..b3cb31a 100644
--- a/services/core/java/com/android/server/integrity/model/IntegrityCheckResult.java
+++ b/services/core/java/com/android/server/integrity/model/IntegrityCheckResult.java
@@ -17,6 +17,7 @@
package com.android.server.integrity.model;
import android.annotation.Nullable;
+import android.content.integrity.Rule;
/**
* A class encapsulating the result from the evaluation engine after evaluating rules against app
diff --git a/services/core/java/com/android/server/integrity/parser/RuleBinaryParser.java b/services/core/java/com/android/server/integrity/parser/RuleBinaryParser.java
index 5ed282c..aad177e 100644
--- a/services/core/java/com/android/server/integrity/parser/RuleBinaryParser.java
+++ b/services/core/java/com/android/server/integrity/parser/RuleBinaryParser.java
@@ -16,7 +16,7 @@
package com.android.server.integrity.parser;
-import com.android.server.integrity.model.Rule;
+import android.content.integrity.Rule;
import java.io.InputStream;
import java.util.List;
@@ -25,7 +25,7 @@
public class RuleBinaryParser implements RuleParser {
@Override
- public List<Rule> parse(String ruleText) {
+ public List<Rule> parse(byte[] ruleBytes) {
// TODO: Implement binary text parser.
return null;
}
diff --git a/services/core/java/com/android/server/integrity/parser/RuleParser.java b/services/core/java/com/android/server/integrity/parser/RuleParser.java
index 08e0a5d..81783d5 100644
--- a/services/core/java/com/android/server/integrity/parser/RuleParser.java
+++ b/services/core/java/com/android/server/integrity/parser/RuleParser.java
@@ -16,7 +16,7 @@
package com.android.server.integrity.parser;
-import com.android.server.integrity.model.Rule;
+import android.content.integrity.Rule;
import java.io.InputStream;
import java.util.List;
@@ -24,8 +24,8 @@
/** A helper class to parse rules into the {@link Rule} model. */
public interface RuleParser {
- /** Parse rules from a string. */
- List<Rule> parse(String ruleText) throws RuleParseException;
+ /** Parse rules from bytes. */
+ List<Rule> parse(byte[] ruleBytes) throws RuleParseException;
/** Parse rules from an input stream. */
List<Rule> parse(InputStream inputStream) throws RuleParseException;
diff --git a/services/core/java/com/android/server/integrity/parser/RuleXmlParser.java b/services/core/java/com/android/server/integrity/parser/RuleXmlParser.java
index 11a3979..2e99d0f 100644
--- a/services/core/java/com/android/server/integrity/parser/RuleXmlParser.java
+++ b/services/core/java/com/android/server/integrity/parser/RuleXmlParser.java
@@ -16,13 +16,12 @@
package com.android.server.integrity.parser;
+import android.content.integrity.AtomicFormula;
+import android.content.integrity.CompoundFormula;
+import android.content.integrity.Formula;
+import android.content.integrity.Rule;
import android.util.Xml;
-import com.android.server.integrity.model.AtomicFormula;
-import com.android.server.integrity.model.Formula;
-import com.android.server.integrity.model.OpenFormula;
-import com.android.server.integrity.model.Rule;
-
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
@@ -32,10 +31,9 @@
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
+import java.util.Optional;
-/**
- * A helper class to parse rules into the {@link Rule} model from Xml representation.
- */
+/** A helper class to parse rules into the {@link Rule} model from Xml representation. */
public final class RuleXmlParser implements RuleParser {
public static final String TAG = "RuleXmlParser";
@@ -50,12 +48,13 @@
private static final String OPERATOR_ATTRIBUTE = "O";
private static final String VALUE_ATTRIBUTE = "V";
private static final String CONNECTOR_ATTRIBUTE = "C";
+ private static final String IS_HASHED_VALUE_ATTRIBUTE = "H";
@Override
- public List<Rule> parse(String ruleText) throws RuleParseException {
+ public List<Rule> parse(byte[] ruleBytes) throws RuleParseException {
try {
XmlPullParser xmlPullParser = Xml.newPullParser();
- xmlPullParser.setInput(new StringReader(ruleText));
+ xmlPullParser.setInput(new StringReader(new String(ruleBytes, StandardCharsets.UTF_8)));
return parseRules(xmlPullParser);
} catch (Exception e) {
throw new RuleParseException(e.getMessage(), e);
@@ -88,7 +87,8 @@
// corrupt in the XML, it will be skipped to the next rule.
if (!nodeName.equals(RULE_LIST_TAG)) {
throw new RuntimeException(
- String.format("Rules must start with RuleList <RL> tag. Found: %s at %s",
+ String.format(
+ "Rules must start with RuleList <RL> tag. Found: %s at %s",
nodeName, parser.getPositionDescription()));
}
@@ -106,7 +106,7 @@
private static Rule parseRule(XmlPullParser parser) throws IOException, XmlPullParserException {
Formula formula = null;
- @Rule.Effect int effect = Integer.parseInt(extractAttributeValue(parser, EFFECT_ATTRIBUTE));
+ int effect = Integer.parseInt(extractAttributeValue(parser, EFFECT_ATTRIBUTE).orElse("-1"));
int eventType;
while ((eventType = parser.next()) != XmlPullParser.END_DOCUMENT) {
@@ -139,8 +139,8 @@
private static Formula parseOpenFormula(XmlPullParser parser)
throws IOException, XmlPullParserException {
- @OpenFormula.Connector int connector = Integer.parseInt(
- extractAttributeValue(parser, CONNECTOR_ATTRIBUTE));
+ int connector =
+ Integer.parseInt(extractAttributeValue(parser, CONNECTOR_ATTRIBUTE).orElse("-1"));
List<Formula> formulas = new ArrayList<>();
int eventType;
@@ -169,15 +169,17 @@
}
}
- return new OpenFormula(connector, formulas);
+ return new CompoundFormula(connector, formulas);
}
private static Formula parseAtomicFormula(XmlPullParser parser)
throws IOException, XmlPullParserException {
- @AtomicFormula.Key int key = Integer.parseInt(extractAttributeValue(parser, KEY_ATTRIBUTE));
- @AtomicFormula.Operator int operator = Integer.parseInt(
- extractAttributeValue(parser, OPERATOR_ATTRIBUTE));
- String value = extractAttributeValue(parser, VALUE_ATTRIBUTE);
+ int key = Integer.parseInt(extractAttributeValue(parser, KEY_ATTRIBUTE).orElse("-1"));
+ int operator =
+ Integer.parseInt(extractAttributeValue(parser, OPERATOR_ATTRIBUTE).orElse("-1"));
+ String value = extractAttributeValue(parser, VALUE_ATTRIBUTE).orElse(null);
+ String isHashedValue =
+ extractAttributeValue(parser, IS_HASHED_VALUE_ATTRIBUTE).orElse(null);
int eventType;
while ((eventType = parser.next()) != XmlPullParser.END_DOCUMENT) {
@@ -185,17 +187,21 @@
break;
}
}
- return constructAtomicFormulaBasedOnKey(key, operator, value);
+ return constructAtomicFormulaBasedOnKey(key, operator, value, isHashedValue);
}
- private static Formula constructAtomicFormulaBasedOnKey(@AtomicFormula.Key int key,
- @AtomicFormula.Operator int operator, String value) {
+ private static Formula constructAtomicFormulaBasedOnKey(
+ @AtomicFormula.Key int key,
+ @AtomicFormula.Operator int operator,
+ String value,
+ String isHashedValue) {
switch (key) {
case AtomicFormula.PACKAGE_NAME:
case AtomicFormula.INSTALLER_NAME:
case AtomicFormula.APP_CERTIFICATE:
case AtomicFormula.INSTALLER_CERTIFICATE:
- return new AtomicFormula.StringAtomicFormula(key, value);
+ return new AtomicFormula.StringAtomicFormula(
+ key, value, Boolean.parseBoolean(isHashedValue));
case AtomicFormula.PRE_INSTALLED:
return new AtomicFormula.BooleanAtomicFormula(key, Boolean.parseBoolean(value));
case AtomicFormula.VERSION_CODE:
@@ -205,11 +211,7 @@
}
}
- private static String extractAttributeValue(XmlPullParser parser, String attribute) {
- String attributeValue = parser.getAttributeValue(NAMESPACE, attribute);
- if (attributeValue == null) {
- throw new RuntimeException(String.format("Attribute not found: %s", attribute));
- }
- return attributeValue;
+ private static Optional<String> extractAttributeValue(XmlPullParser parser, String attribute) {
+ return Optional.ofNullable(parser.getAttributeValue(NAMESPACE, attribute));
}
}
diff --git a/services/core/java/com/android/server/integrity/serializer/RuleBinarySerializer.java b/services/core/java/com/android/server/integrity/serializer/RuleBinarySerializer.java
index ee95d2b..d4f41eb 100644
--- a/services/core/java/com/android/server/integrity/serializer/RuleBinarySerializer.java
+++ b/services/core/java/com/android/server/integrity/serializer/RuleBinarySerializer.java
@@ -16,21 +16,23 @@
package com.android.server.integrity.serializer;
-import com.android.server.integrity.model.Rule;
+import android.content.integrity.Rule;
import java.io.OutputStream;
import java.util.List;
+import java.util.Optional;
/** A helper class to serialize rules from the {@link Rule} model to Xml representation. */
public class RuleBinarySerializer implements RuleSerializer {
@Override
- public void serialize(List<Rule> rules, OutputStream outputStream) {
+ public void serialize(
+ List<Rule> rules, Optional<Integer> formatVersion, OutputStream outputStream) {
// TODO: Implement stream serializer.
}
@Override
- public String serialize(List<Rule> rules) {
+ public byte[] serialize(List<Rule> rules, Optional<Integer> formatVersion) {
// TODO: Implement text serializer.
return null;
}
diff --git a/services/core/java/com/android/server/integrity/serializer/RuleSerializer.java b/services/core/java/com/android/server/integrity/serializer/RuleSerializer.java
index 5c99c5a..4fcff65 100644
--- a/services/core/java/com/android/server/integrity/serializer/RuleSerializer.java
+++ b/services/core/java/com/android/server/integrity/serializer/RuleSerializer.java
@@ -16,17 +16,20 @@
package com.android.server.integrity.serializer;
-import com.android.server.integrity.model.Rule;
+import android.content.integrity.Rule;
import java.io.OutputStream;
import java.util.List;
+import java.util.Optional;
/** A helper class to serialize rules from the {@link Rule} model. */
public interface RuleSerializer {
/** Serialize rules to an output stream */
- void serialize(List<Rule> rules, OutputStream outputStream) throws RuleSerializeException;
+ void serialize(List<Rule> rules, Optional<Integer> formatVersion, OutputStream outputStream)
+ throws RuleSerializeException;
- /** Serialize rules to a string. */
- String serialize(List<Rule> rule) throws RuleSerializeException;
+ /** Serialize rules to a ByteArray. */
+ byte[] serialize(List<Rule> rule, Optional<Integer> formatVersion)
+ throws RuleSerializeException;
}
diff --git a/services/core/java/com/android/server/integrity/serializer/RuleXmlSerializer.java b/services/core/java/com/android/server/integrity/serializer/RuleXmlSerializer.java
index 1f22afb..3ec9cf2 100644
--- a/services/core/java/com/android/server/integrity/serializer/RuleXmlSerializer.java
+++ b/services/core/java/com/android/server/integrity/serializer/RuleXmlSerializer.java
@@ -16,13 +16,12 @@
package com.android.server.integrity.serializer;
+import android.content.integrity.AtomicFormula;
+import android.content.integrity.CompoundFormula;
+import android.content.integrity.Formula;
+import android.content.integrity.Rule;
import android.util.Xml;
-import com.android.server.integrity.model.AtomicFormula;
-import com.android.server.integrity.model.Formula;
-import com.android.server.integrity.model.OpenFormula;
-import com.android.server.integrity.model.Rule;
-
import org.xmlpull.v1.XmlSerializer;
import java.io.IOException;
@@ -30,10 +29,9 @@
import java.io.StringWriter;
import java.nio.charset.StandardCharsets;
import java.util.List;
+import java.util.Optional;
-/**
- * A helper class to serialize rules from the {@link Rule} model to Xml representation.
- */
+/** A helper class to serialize rules from the {@link Rule} model to Xml representation. */
public class RuleXmlSerializer implements RuleSerializer {
public static final String TAG = "RuleXmlSerializer";
@@ -48,9 +46,11 @@
private static final String OPERATOR_ATTRIBUTE = "O";
private static final String VALUE_ATTRIBUTE = "V";
private static final String CONNECTOR_ATTRIBUTE = "C";
+ private static final String IS_HASHED_VALUE_ATTRIBUTE = "H";
@Override
- public void serialize(List<Rule> rules, OutputStream outputStream)
+ public void serialize(
+ List<Rule> rules, Optional<Integer> formatVersion, OutputStream outputStream)
throws RuleSerializeException {
try {
XmlSerializer xmlSerializer = Xml.newSerializer();
@@ -62,13 +62,14 @@
}
@Override
- public String serialize(List<Rule> rules) throws RuleSerializeException {
+ public byte[] serialize(List<Rule> rules, Optional<Integer> formatVersion)
+ throws RuleSerializeException {
try {
XmlSerializer xmlSerializer = Xml.newSerializer();
StringWriter writer = new StringWriter();
xmlSerializer.setOutput(writer);
serializeRules(rules, xmlSerializer);
- return writer.toString();
+ return writer.toString().getBytes(StandardCharsets.UTF_8);
} catch (Exception e) {
throw new RuleSerializeException(e.getMessage(), e);
}
@@ -96,23 +97,23 @@
private void serializeFormula(Formula formula, XmlSerializer xmlSerializer) throws IOException {
if (formula instanceof AtomicFormula) {
serializeAtomicFormula((AtomicFormula) formula, xmlSerializer);
- } else if (formula instanceof OpenFormula) {
- serializeOpenFormula((OpenFormula) formula, xmlSerializer);
+ } else if (formula instanceof CompoundFormula) {
+ serializeOpenFormula((CompoundFormula) formula, xmlSerializer);
} else {
throw new IllegalArgumentException(
String.format("Invalid formula type: %s", formula.getClass()));
}
}
- private void serializeOpenFormula(OpenFormula openFormula, XmlSerializer xmlSerializer)
+ private void serializeOpenFormula(CompoundFormula compoundFormula, XmlSerializer xmlSerializer)
throws IOException {
- if (openFormula == null) {
+ if (compoundFormula == null) {
return;
}
xmlSerializer.startTag(NAMESPACE, OPEN_FORMULA_TAG);
- serializeAttributeValue(CONNECTOR_ATTRIBUTE, String.valueOf(openFormula.getConnector()),
- xmlSerializer);
- for (Formula formula : openFormula.getFormulas()) {
+ serializeAttributeValue(
+ CONNECTOR_ATTRIBUTE, String.valueOf(compoundFormula.getConnector()), xmlSerializer);
+ for (Formula formula : compoundFormula.getFormulas()) {
serializeFormula(formula, xmlSerializer);
}
xmlSerializer.endTag(NAMESPACE, OPEN_FORMULA_TAG);
@@ -124,20 +125,30 @@
return;
}
xmlSerializer.startTag(NAMESPACE, ATOMIC_FORMULA_TAG);
- serializeAttributeValue(KEY_ATTRIBUTE, String.valueOf(atomicFormula.getKey()),
- xmlSerializer);
+ serializeAttributeValue(
+ KEY_ATTRIBUTE, String.valueOf(atomicFormula.getKey()), xmlSerializer);
if (atomicFormula instanceof AtomicFormula.StringAtomicFormula) {
- serializeAttributeValue(VALUE_ATTRIBUTE,
- ((AtomicFormula.StringAtomicFormula) atomicFormula).getValue(), xmlSerializer);
+ serializeAttributeValue(
+ VALUE_ATTRIBUTE,
+ ((AtomicFormula.StringAtomicFormula) atomicFormula).getValue(),
+ xmlSerializer);
+ serializeAttributeValue(
+ IS_HASHED_VALUE_ATTRIBUTE,
+ String.valueOf(
+ ((AtomicFormula.StringAtomicFormula) atomicFormula).getIsHashedValue()),
+ xmlSerializer);
} else if (atomicFormula instanceof AtomicFormula.IntAtomicFormula) {
- serializeAttributeValue(OPERATOR_ATTRIBUTE,
+ serializeAttributeValue(
+ OPERATOR_ATTRIBUTE,
String.valueOf(((AtomicFormula.IntAtomicFormula) atomicFormula).getOperator()),
xmlSerializer);
- serializeAttributeValue(VALUE_ATTRIBUTE,
+ serializeAttributeValue(
+ VALUE_ATTRIBUTE,
String.valueOf(((AtomicFormula.IntAtomicFormula) atomicFormula).getValue()),
xmlSerializer);
} else if (atomicFormula instanceof AtomicFormula.BooleanAtomicFormula) {
- serializeAttributeValue(VALUE_ATTRIBUTE,
+ serializeAttributeValue(
+ VALUE_ATTRIBUTE,
String.valueOf(((AtomicFormula.BooleanAtomicFormula) atomicFormula).getValue()),
xmlSerializer);
} else {
@@ -147,9 +158,8 @@
xmlSerializer.endTag(NAMESPACE, ATOMIC_FORMULA_TAG);
}
- private void serializeAttributeValue(String attribute, String value,
- XmlSerializer xmlSerializer)
- throws IOException {
+ private void serializeAttributeValue(
+ String attribute, String value, XmlSerializer xmlSerializer) throws IOException {
if (value == null) {
return;
}
diff --git a/services/core/java/com/android/server/lights/LightsService.java b/services/core/java/com/android/server/lights/LightsService.java
index ac906bb..eaae2ed 100644
--- a/services/core/java/com/android/server/lights/LightsService.java
+++ b/services/core/java/com/android/server/lights/LightsService.java
@@ -84,8 +84,12 @@
if (DEBUG) {
Slog.d(TAG, "Using new setBrightness path!");
}
- SurfaceControl.setDisplayBrightness(mDisplayToken,
- (float) brightness / mSurfaceControlMaximumBrightness);
+ if (brightness == 0) {
+ SurfaceControl.setDisplayBrightness(mDisplayToken, -1.0f);
+ } else {
+ SurfaceControl.setDisplayBrightness(mDisplayToken,
+ (float) (brightness - 1) / (mSurfaceControlMaximumBrightness - 1));
+ }
} else {
int color = brightness & 0x000000ff;
color = 0xff000000 | (color << 16) | (color << 8) | color;
diff --git a/services/core/java/com/android/server/location/ContextHubClientBroker.java b/services/core/java/com/android/server/location/ContextHubClientBroker.java
index 675e59e..45d9bae 100644
--- a/services/core/java/com/android/server/location/ContextHubClientBroker.java
+++ b/services/core/java/com/android/server/location/ContextHubClientBroker.java
@@ -29,10 +29,12 @@
import android.hardware.location.IContextHubClient;
import android.hardware.location.IContextHubClientCallback;
import android.hardware.location.NanoAppMessage;
+import android.os.Binder;
import android.os.IBinder;
import android.os.RemoteException;
import android.util.Log;
+import java.util.concurrent.atomic.AtomicBoolean;
import java.util.function.Supplier;
/**
@@ -97,6 +99,16 @@
private final PendingIntentRequest mPendingIntentRequest;
/*
+ * The host package associated with this client.
+ */
+ private final String mPackage;
+
+ /*
+ * True if a PendingIntent has been cancelled.
+ */
+ private AtomicBoolean mIsPendingIntentCancelled = new AtomicBoolean(false);
+
+ /*
* Helper class to manage registered PendingIntent requests from the client.
*/
private class PendingIntentRequest {
@@ -110,11 +122,14 @@
*/
private long mNanoAppId;
+ private boolean mValid = false;
+
PendingIntentRequest() {}
PendingIntentRequest(PendingIntent pendingIntent, long nanoAppId) {
mPendingIntent = pendingIntent;
mNanoAppId = nanoAppId;
+ mValid = true;
}
public long getNanoAppId() {
@@ -132,6 +147,10 @@
public void clear() {
mPendingIntent = null;
}
+
+ public boolean isValid() {
+ return mValid;
+ }
}
/* package */ ContextHubClientBroker(
@@ -145,6 +164,7 @@
mHostEndPointId = hostEndPointId;
mCallbackInterface = callback;
mPendingIntentRequest = new PendingIntentRequest();
+ mPackage = mContext.getPackageManager().getNameForUid(Binder.getCallingUid());
}
/* package */ ContextHubClientBroker(
@@ -157,6 +177,7 @@
mAttachedContextHubInfo = contextHubInfo;
mHostEndPointId = hostEndPointId;
mPendingIntentRequest = new PendingIntentRequest(pendingIntent, nanoAppId);
+ mPackage = pendingIntent.getCreatorPackage();
}
/**
@@ -313,6 +334,13 @@
}
/**
+ * @return true if the client is a PendingIntent client that has been cancelled.
+ */
+ /* package */ boolean isPendingIntentCancelled() {
+ return mIsPendingIntentCancelled.get();
+ }
+
+ /**
* Helper function to invoke a specified client callback, if the connection is open.
*
* @param consumer the consumer specifying the callback to invoke
@@ -392,6 +420,7 @@
Manifest.permission.LOCATION_HARDWARE /* requiredPermission */,
null /* options */);
} catch (PendingIntent.CanceledException e) {
+ mIsPendingIntentCancelled.set(true);
// The PendingIntent is no longer valid
Log.w(TAG, "PendingIntent has been canceled, unregistering from client"
+ " (host endpoint ID " + mHostEndPointId + ")");
@@ -419,4 +448,20 @@
mRegistered = false;
}
}
+
+ @Override
+ public String toString() {
+ String out = "[ContextHubClient ";
+ out += "endpointID: " + getHostEndPointId() + ", ";
+ out += "contextHub: " + getAttachedContextHubId() + ", ";
+ if (mPendingIntentRequest.isValid()) {
+ out += "intentCreatorPackage: " + mPackage + ", ";
+ out += "nanoAppId: 0x" + Long.toHexString(mPendingIntentRequest.getNanoAppId());
+ } else {
+ out += "package: " + mPackage;
+ }
+ out += "]";
+
+ return out;
+ }
}
diff --git a/services/core/java/com/android/server/location/ContextHubClientManager.java b/services/core/java/com/android/server/location/ContextHubClientManager.java
index 00b7d62..46db8dc 100644
--- a/services/core/java/com/android/server/location/ContextHubClientManager.java
+++ b/services/core/java/com/android/server/location/ContextHubClientManager.java
@@ -16,6 +16,7 @@
package com.android.server.location;
+import android.annotation.IntDef;
import android.app.PendingIntent;
import android.content.Context;
import android.hardware.contexthub.V1_0.ContextHubMsg;
@@ -27,7 +28,12 @@
import android.os.RemoteException;
import android.util.Log;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.Calendar;
+import java.util.Iterator;
import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentLinkedDeque;
import java.util.function.Consumer;
/**
@@ -71,6 +77,79 @@
*/
private int mNextHostEndPointId = 0;
+ /*
+ * The list of previous registration records.
+ */
+ private static final int NUM_CLIENT_RECORDS = 20;
+ private final ConcurrentLinkedEvictingDeque<RegistrationRecord> mRegistrationRecordDeque =
+ new ConcurrentLinkedEvictingDeque<>(NUM_CLIENT_RECORDS);
+
+ @Retention(RetentionPolicy.SOURCE)
+ @IntDef(prefix = { "ACTION_" }, value = {
+ ACTION_REGISTERED,
+ ACTION_UNREGISTERED,
+ ACTION_CANCELLED,
+ })
+ public @interface Action {}
+ public static final int ACTION_REGISTERED = 0;
+ public static final int ACTION_UNREGISTERED = 1;
+ public static final int ACTION_CANCELLED = 2;
+
+ /**
+ * Helper class to make a ConcurrentLinkedDeque fixed-size, evicting old entries when full.
+ */
+ private class ConcurrentLinkedEvictingDeque<E> extends ConcurrentLinkedDeque<E> {
+ private int mSize;
+
+ ConcurrentLinkedEvictingDeque(int size) {
+ mSize = size;
+ }
+
+ @Override
+ public boolean add(E elem) {
+ synchronized (this) {
+ if (size() == mSize) {
+ poll();
+ }
+
+ return super.add(elem);
+ }
+ }
+ }
+
+ /**
+ * A container class to store a record of ContextHubClient registration.
+ */
+ private class RegistrationRecord {
+ private final String mBroker;
+ private final int mAction;
+ private final String mDate;
+
+ RegistrationRecord(String broker, @Action int action) {
+ mBroker = broker;
+ mAction = action;
+ Calendar instance = Calendar.getInstance();
+ mDate = String.format("%02d", instance.get(Calendar.MONTH) + 1) // Jan == 0
+ + "/" + String.format("%02d", instance.get(Calendar.DAY_OF_MONTH))
+ + " " + String.format("%02d", instance.get(Calendar.HOUR_OF_DAY))
+ + ":" + String.format("%02d", instance.get(Calendar.MINUTE))
+ + ":" + String.format("%02d", instance.get(Calendar.SECOND))
+ + "." + String.format("%03d", instance.get(Calendar.MILLISECOND));
+ }
+
+ @Override
+ public String toString() {
+ String out = "";
+ out += mDate + " ";
+ out += mAction == ACTION_REGISTERED ? "+ " : "- ";
+ out += mBroker;
+ if (mAction == ACTION_CANCELLED) {
+ out += " (cancelled)";
+ }
+ return out;
+ }
+ }
+
/* package */ ContextHubClientManager(
Context context, IContexthub contextHubProxy) {
mContext = context;
@@ -96,6 +175,8 @@
mContext, mContextHubProxy, this /* clientManager */, contextHubInfo,
hostEndPointId, clientCallback);
mHostEndPointIdToClientMap.put(hostEndPointId, broker);
+ mRegistrationRecordDeque.add(
+ new RegistrationRecord(broker.toString(), ACTION_REGISTERED));
}
try {
@@ -136,6 +217,8 @@
hostEndPointId, pendingIntent, nanoAppId);
mHostEndPointIdToClientMap.put(hostEndPointId, broker);
registerString = "Registered";
+ mRegistrationRecordDeque.add(
+ new RegistrationRecord(broker.toString(), ACTION_REGISTERED));
}
}
@@ -178,6 +261,13 @@
* @param hostEndPointId the host endpoint ID of the client that has died
*/
/* package */ void unregisterClient(short hostEndPointId) {
+ ContextHubClientBroker broker = mHostEndPointIdToClientMap.get(hostEndPointId);
+ if (broker != null) {
+ @Action int action =
+ broker.isPendingIntentCancelled() ? ACTION_CANCELLED : ACTION_UNREGISTERED;
+ mRegistrationRecordDeque.add(new RegistrationRecord(broker.toString(), action));
+ }
+
if (mHostEndPointIdToClientMap.remove(hostEndPointId) != null) {
Log.d(TAG, "Unregistered client with host endpoint ID " + hostEndPointId);
} else {
@@ -285,4 +375,20 @@
return null;
}
+
+ @Override
+ public String toString() {
+ String out = "";
+ for (ContextHubClientBroker broker : mHostEndPointIdToClientMap.values()) {
+ out += broker + "\n";
+ }
+
+ out += "\nRegistration history:\n";
+ Iterator<RegistrationRecord> it = mRegistrationRecordDeque.descendingIterator();
+ while (it.hasNext()) {
+ out += it.next() + "\n";
+ }
+
+ return out;
+ }
}
diff --git a/services/core/java/com/android/server/location/ContextHubService.java b/services/core/java/com/android/server/location/ContextHubService.java
index 36b0342..787a800 100644
--- a/services/core/java/com/android/server/location/ContextHubService.java
+++ b/services/core/java/com/android/server/location/ContextHubService.java
@@ -795,6 +795,10 @@
// Dump nanoAppHash
mNanoAppStateManager.foreachNanoAppInstanceInfo((info) -> pw.println(info));
+ pw.println("");
+ pw.println("=================== CLIENTS ====================");
+ pw.println(mClientManager);
+
// dump eventLog
}
diff --git a/services/core/java/com/android/server/location/GnssLocationProvider.java b/services/core/java/com/android/server/location/GnssLocationProvider.java
index c84745e..557ba54 100644
--- a/services/core/java/com/android/server/location/GnssLocationProvider.java
+++ b/services/core/java/com/android/server/location/GnssLocationProvider.java
@@ -1447,11 +1447,13 @@
private float[] mSvElevations;
private float[] mSvAzimuths;
private float[] mSvCarrierFreqs;
+ private float[] mBasebandCn0s;
}
@NativeEntryPoint
private void reportSvStatus(int svCount, int[] svidWithFlags, float[] cn0s,
- float[] svElevations, float[] svAzimuths, float[] svCarrierFreqs) {
+ float[] svElevations, float[] svAzimuths, float[] svCarrierFreqs,
+ float[] basebandCn0s) {
SvStatusInfo svStatusInfo = new SvStatusInfo();
svStatusInfo.mSvCount = svCount;
svStatusInfo.mSvidWithFlags = svidWithFlags;
@@ -1459,6 +1461,7 @@
svStatusInfo.mSvElevations = svElevations;
svStatusInfo.mSvAzimuths = svAzimuths;
svStatusInfo.mSvCarrierFreqs = svCarrierFreqs;
+ svStatusInfo.mBasebandCn0s = basebandCn0s;
sendMessage(REPORT_SV_STATUS, 0, svStatusInfo);
}
@@ -1470,7 +1473,8 @@
info.mCn0s,
info.mSvElevations,
info.mSvAzimuths,
- info.mSvCarrierFreqs);
+ info.mSvCarrierFreqs,
+ info.mBasebandCn0s);
// Log CN0 as part of GNSS metrics
mGnssMetrics.logCn0(info.mCn0s, info.mSvCount, info.mSvCarrierFreqs);
@@ -1485,7 +1489,8 @@
info.mCn0s,
info.mSvElevations,
info.mSvAzimuths,
- info.mSvCarrierFreqs);
+ info.mSvCarrierFreqs,
+ info.mBasebandCn0s);
int usedInFixCount = 0;
int maxCn0 = 0;
int meanCn0 = 0;
@@ -1501,13 +1506,15 @@
if (VERBOSE) {
Log.v(TAG, "svid: " + gnssStatus.getSvid(i)
+ " cn0: " + gnssStatus.getCn0DbHz(i)
+ + " basebandCn0: " + gnssStatus.getBasebandCn0DbHz(i)
+ " elev: " + gnssStatus.getElevationDegrees(i)
+ " azimuth: " + gnssStatus.getAzimuthDegrees(i)
+ " carrier frequency: " + gnssStatus.getCn0DbHz(i)
+ (gnssStatus.hasEphemerisData(i) ? " E" : " ")
+ (gnssStatus.hasAlmanacData(i) ? " A" : " ")
+ (gnssStatus.usedInFix(i) ? "U" : "")
- + (gnssStatus.hasCarrierFrequencyHz(i) ? "F" : ""));
+ + (gnssStatus.hasCarrierFrequencyHz(i) ? "F" : "")
+ + (gnssStatus.hasBasebandCn0DbHz(i) ? "B" : ""));
}
}
if (usedInFixCount > 0) {
diff --git a/services/core/java/com/android/server/location/GnssStatusListenerHelper.java b/services/core/java/com/android/server/location/GnssStatusListenerHelper.java
index d67d0c5..eaf63c8 100644
--- a/services/core/java/com/android/server/location/GnssStatusListenerHelper.java
+++ b/services/core/java/com/android/server/location/GnssStatusListenerHelper.java
@@ -71,7 +71,8 @@
final float[] cn0s,
final float[] elevations,
final float[] azimuths,
- final float[] carrierFreqs) {
+ final float[] carrierFreqs,
+ final float[] basebandCn0s) {
foreach((IGnssStatusListener listener, CallerIdentity callerIdentity) -> {
if (!hasPermission(mContext, callerIdentity)) {
logPermissionDisabledEventNotReported(TAG, callerIdentity.mPackageName,
@@ -79,7 +80,7 @@
return;
}
listener.onSvStatusChanged(svCount, prnWithFlags, cn0s, elevations, azimuths,
- carrierFreqs);
+ carrierFreqs, basebandCn0s);
});
}
diff --git a/services/core/java/com/android/server/location/LocationSettingsStore.java b/services/core/java/com/android/server/location/LocationSettingsStore.java
index dc5628e..eb2a37b 100644
--- a/services/core/java/com/android/server/location/LocationSettingsStore.java
+++ b/services/core/java/com/android/server/location/LocationSettingsStore.java
@@ -33,21 +33,51 @@
import android.os.UserHandle;
import android.provider.Settings;
import android.text.TextUtils;
+import android.util.ArraySet;
import com.android.internal.util.IndentingPrintWriter;
+import com.android.internal.util.Preconditions;
+import com.android.server.SystemConfig;
import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
+import java.util.Set;
import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.function.Supplier;
/**
* Provides accessors and listeners for all location related settings.
*/
public class LocationSettingsStore {
+ /**
+ * Listener for user-specific settings changes.
+ */
+ public interface UserSettingChangedListener {
+ /**
+ * Called when setting changes.
+ */
+ void onSettingChanged(int userId);
+ }
+
+ /**
+ * Listener for global settings changes.
+ */
+ public interface GlobalSettingChangedListener extends UserSettingChangedListener {
+ /**
+ * Called when setting changes.
+ */
+ void onSettingChanged();
+
+ @Override
+ default void onSettingChanged(int userId) {
+ onSettingChanged();
+ }
+ }
+
private static final String LOCATION_PACKAGE_BLACKLIST = "locationPackagePrefixBlacklist";
private static final String LOCATION_PACKAGE_WHITELIST = "locationPackagePrefixWhitelist";
@@ -63,9 +93,10 @@
private final LongGlobalSetting mBackgroundThrottleIntervalMs;
private final StringListCachedSecureSetting mLocationPackageBlacklist;
private final StringListCachedSecureSetting mLocationPackageWhitelist;
- private final StringListCachedGlobalSetting mBackgroundThrottlePackageWhitelist;
- private final StringListCachedGlobalSetting mIgnoreSettingsPackageWhitelist;
+ private final StringSetCachedGlobalSetting mBackgroundThrottlePackageWhitelist;
+ private final StringSetCachedGlobalSetting mIgnoreSettingsPackageWhitelist;
+ // TODO: get rid of handler
public LocationSettingsStore(Context context, Handler handler) {
mContext = context;
@@ -78,10 +109,12 @@
LOCATION_PACKAGE_BLACKLIST, handler);
mLocationPackageWhitelist = new StringListCachedSecureSetting(context,
LOCATION_PACKAGE_WHITELIST, handler);
- mBackgroundThrottlePackageWhitelist = new StringListCachedGlobalSetting(context,
- LOCATION_BACKGROUND_THROTTLE_PACKAGE_WHITELIST, handler);
- mIgnoreSettingsPackageWhitelist = new StringListCachedGlobalSetting(context,
- LOCATION_IGNORE_SETTINGS_PACKAGE_WHITELIST, handler);
+ mBackgroundThrottlePackageWhitelist = new StringSetCachedGlobalSetting(context,
+ LOCATION_BACKGROUND_THROTTLE_PACKAGE_WHITELIST,
+ () -> SystemConfig.getInstance().getAllowUnthrottledLocation(), handler);
+ mIgnoreSettingsPackageWhitelist = new StringSetCachedGlobalSetting(context,
+ LOCATION_IGNORE_SETTINGS_PACKAGE_WHITELIST,
+ () -> SystemConfig.getInstance().getAllowIgnoreLocationSettings(), handler);
}
/**
@@ -94,14 +127,14 @@
/**
* Add a listener for changes to the location enabled setting.
*/
- public void addOnLocationEnabledChangedListener(Runnable listener) {
+ public void addOnLocationEnabledChangedListener(UserSettingChangedListener listener) {
mLocationMode.addListener(listener);
}
/**
* Remove a listener for changes to the location enabled setting.
*/
- public void removeOnLocationEnabledChangedListener(Runnable listener) {
+ public void removeOnLocationEnabledChangedListener(UserSettingChangedListener listener) {
mLocationMode.addListener(listener);
}
@@ -115,15 +148,16 @@
/**
* Add a listener for changes to the currently allowed location providers.
*/
- public void addOnLocationProvidersAllowedChangedListener(Runnable runnable) {
- mLocationProvidersAllowed.addListener(runnable);
+ public void addOnLocationProvidersAllowedChangedListener(UserSettingChangedListener listener) {
+ mLocationProvidersAllowed.addListener(listener);
}
/**
* Remove a listener for changes to the currently allowed location providers.
*/
- public void removeOnLocationProvidersAllowedChangedListener(Runnable runnable) {
- mLocationProvidersAllowed.removeListener(runnable);
+ public void removeOnLocationProvidersAllowedChangedListener(
+ UserSettingChangedListener listener) {
+ mLocationProvidersAllowed.removeListener(listener);
}
/**
@@ -136,14 +170,16 @@
/**
* Add a listener for changes to the background throttle interval.
*/
- public void addOnBackgroundThrottleIntervalChangedListener(Runnable listener) {
+ public void addOnBackgroundThrottleIntervalChangedListener(
+ GlobalSettingChangedListener listener) {
mBackgroundThrottleIntervalMs.addListener(listener);
}
/**
* Remove a listener for changes to the background throttle interval.
*/
- public void removeOnBackgroundThrottleIntervalChangedListener(Runnable listener) {
+ public void removeOnBackgroundThrottleIntervalChangedListener(
+ GlobalSettingChangedListener listener) {
mBackgroundThrottleIntervalMs.removeListener(listener);
}
@@ -175,42 +211,46 @@
/**
* Retrieve the background throttle package whitelist.
*/
- public List<String> getBackgroundThrottlePackageWhitelist() {
+ public Set<String> getBackgroundThrottlePackageWhitelist() {
return mBackgroundThrottlePackageWhitelist.getValue();
}
/**
* Add a listener for changes to the background throttle package whitelist.
*/
- public void addOnBackgroundThrottlePackageWhitelistChangedListener(Runnable listener) {
+ public void addOnBackgroundThrottlePackageWhitelistChangedListener(
+ GlobalSettingChangedListener listener) {
mBackgroundThrottlePackageWhitelist.addListener(listener);
}
/**
* Remove a listener for changes to the background throttle package whitelist.
*/
- public void removeOnBackgroundThrottlePackageWhitelistChangedListener(Runnable listener) {
+ public void removeOnBackgroundThrottlePackageWhitelistChangedListener(
+ GlobalSettingChangedListener listener) {
mBackgroundThrottlePackageWhitelist.removeListener(listener);
}
/**
* Retrieve the ignore settings package whitelist.
*/
- public List<String> getIgnoreSettingsPackageWhitelist() {
+ public Set<String> getIgnoreSettingsPackageWhitelist() {
return mIgnoreSettingsPackageWhitelist.getValue();
}
/**
* Add a listener for changes to the ignore settings package whitelist.
*/
- public void addOnIgnoreSettingsPackageWhitelistChangedListener(Runnable listener) {
+ public void addOnIgnoreSettingsPackageWhitelistChangedListener(
+ GlobalSettingChangedListener listener) {
mIgnoreSettingsPackageWhitelist.addListener(listener);
}
/**
* Remove a listener for changes to the ignore settings package whitelist.
*/
- public void removeOnIgnoreSettingsPackageWhitelistChangedListener(Runnable listener) {
+ public void removeOnIgnoreSettingsPackageWhitelistChangedListener(
+ GlobalSettingChangedListener listener) {
mIgnoreSettingsPackageWhitelist.removeListener(listener);
}
@@ -264,7 +304,7 @@
}
}
- List<String> backgroundThrottlePackageWhitelist =
+ Set<String> backgroundThrottlePackageWhitelist =
mBackgroundThrottlePackageWhitelist.getValue();
if (!backgroundThrottlePackageWhitelist.isEmpty()) {
ipw.println("Throttling Whitelisted Packages:");
@@ -275,7 +315,7 @@
ipw.decreaseIndent();
}
- List<String> ignoreSettingsPackageWhitelist = mIgnoreSettingsPackageWhitelist.getValue();
+ Set<String> ignoreSettingsPackageWhitelist = mIgnoreSettingsPackageWhitelist.getValue();
if (!ignoreSettingsPackageWhitelist.isEmpty()) {
ipw.println("Bypass Whitelisted Packages:");
ipw.increaseIndent();
@@ -288,7 +328,7 @@
private abstract static class ObservingSetting extends ContentObserver {
- private final CopyOnWriteArrayList<Runnable> mListeners;
+ private final CopyOnWriteArrayList<UserSettingChangedListener> mListeners;
private ObservingSetting(Context context, String settingName, Handler handler) {
super(handler);
@@ -298,11 +338,11 @@
getUriFor(settingName), false, this, UserHandle.USER_ALL);
}
- public void addListener(Runnable listener) {
+ public void addListener(UserSettingChangedListener listener) {
mListeners.add(listener);
}
- public void removeListener(Runnable listener) {
+ public void removeListener(UserSettingChangedListener listener) {
mListeners.remove(listener);
}
@@ -310,8 +350,8 @@
@Override
public void onChange(boolean selfChange, Uri uri, int userId) {
- for (Runnable listener : mListeners) {
- listener.run();
+ for (UserSettingChangedListener listener : mListeners) {
+ listener.onSettingChanged(userId);
}
}
}
@@ -354,6 +394,8 @@
}
public synchronized List<String> getValueForUser(int userId) {
+ Preconditions.checkArgument(userId != UserHandle.USER_NULL);
+
if (userId != mCachedUserId) {
String setting = Settings.Secure.getStringForUser(mContext.getContentResolver(),
mSettingName, userId);
@@ -409,29 +451,30 @@
}
}
- private static class StringListCachedGlobalSetting extends ObservingSetting {
+ private static class StringSetCachedGlobalSetting extends ObservingSetting {
private final Context mContext;
private final String mSettingName;
+ private final Supplier<ArraySet<String>> mBaseValuesSupplier;
private boolean mValid;
- private List<String> mCachedValue;
+ private ArraySet<String> mCachedValue;
- private StringListCachedGlobalSetting(Context context, String settingName,
- Handler handler) {
+ private StringSetCachedGlobalSetting(Context context, String settingName,
+ Supplier<ArraySet<String>> baseValuesSupplier, Handler handler) {
super(context, settingName, handler);
mContext = context;
mSettingName = settingName;
+ mBaseValuesSupplier = baseValuesSupplier;
}
- public synchronized List<String> getValue() {
+ public synchronized Set<String> getValue() {
if (!mValid) {
+ mCachedValue = new ArraySet<>(mBaseValuesSupplier.get());
String setting = Settings.Global.getString(mContext.getContentResolver(),
mSettingName);
- if (TextUtils.isEmpty(setting)) {
- mCachedValue = Collections.emptyList();
- } else {
- mCachedValue = Arrays.asList(setting.split(","));
+ if (!TextUtils.isEmpty(setting)) {
+ mCachedValue.addAll(Arrays.asList(setting.split(",")));
}
mValid = true;
}
diff --git a/services/core/java/com/android/server/locksettings/LockSettingsService.java b/services/core/java/com/android/server/locksettings/LockSettingsService.java
index a4e7ac4..83b6215 100644
--- a/services/core/java/com/android/server/locksettings/LockSettingsService.java
+++ b/services/core/java/com/android/server/locksettings/LockSettingsService.java
@@ -181,6 +181,7 @@
private static final String SEPARATE_PROFILE_CHALLENGE_KEY = "lockscreen.profilechallenge";
private static final String PREV_SYNTHETIC_PASSWORD_HANDLE_KEY = "prev-sp-handle";
private static final String SYNTHETIC_PASSWORD_UPDATE_TIME_KEY = "sp-handle-ts";
+ private static final String USER_SERIAL_NUMBER_KEY = "serial-number";
// No challenge provided
private static final int CHALLENGE_NONE = 0;
@@ -661,6 +662,34 @@
}
/**
+ * Clean up states associated with the given user, in case the userId is reused but LSS didn't
+ * get a chance to do cleanup previously during ACTION_USER_REMOVED.
+ *
+ * Internally, LSS stores serial number for each user and check it against the current user's
+ * serial number to determine if the userId is reused and invoke cleanup code.
+ */
+ private void cleanupDataForReusedUserIdIfNecessary(int userId) {
+ if (userId == UserHandle.USER_SYSTEM) {
+ // Short circuit as we never clean up user 0.
+ return;
+ }
+ // Serial number is never reusued, so we can use it as a distinguisher for user Id reuse.
+ int serialNumber = mUserManager.getUserSerialNumber(userId);
+
+ int storedSerialNumber = getIntUnchecked(USER_SERIAL_NUMBER_KEY, -1, userId);
+ if (storedSerialNumber != serialNumber) {
+ // If LockSettingsStorage does not have a copy of the serial number, it could be either
+ // this is a user created before the serial number recording logic is introduced, or
+ // the user does not exist or was removed and cleaned up properly. In either case, don't
+ // invoke removeUser().
+ if (storedSerialNumber != -1) {
+ removeUser(userId, /* unknownUser */ true);
+ }
+ setIntUnchecked(USER_SERIAL_NUMBER_KEY, serialNumber, userId);
+ }
+ }
+
+ /**
* Check if profile got unlocked but the keystore is still locked. This happens on full disk
* encryption devices since the profile may not yet be running when we consider unlocking it
* during the normal flow. In this case unlock the keystore for the profile.
@@ -684,6 +713,7 @@
mHandler.post(new Runnable() {
@Override
public void run() {
+ cleanupDataForReusedUserIdIfNecessary(userId);
ensureProfileKeystoreUnlocked(userId);
// Hide notification first, as tie managed profile lock takes time
hideEncryptionNotification(new UserHandle(userId));
@@ -729,9 +759,6 @@
if (Intent.ACTION_USER_ADDED.equals(intent.getAction())) {
// Notify keystore that a new user was added.
final int userHandle = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, 0);
- if (userHandle > UserHandle.USER_SYSTEM) {
- removeUser(userHandle, /* unknownUser= */ true);
- }
final KeyStore ks = KeyStore.getInstance();
final UserInfo parentInfo = mUserManager.getProfileParent(userHandle);
final int parentHandle = parentInfo != null ? parentInfo.id : -1;
@@ -1066,6 +1093,10 @@
setStringUnchecked(key, userId, Long.toString(value));
}
+ private void setIntUnchecked(String key, int value, int userId) {
+ setStringUnchecked(key, userId, Integer.toString(value));
+ }
+
@Override
public void setString(String key, String value, int userId) {
checkWritePermission(userId);
@@ -1104,6 +1135,11 @@
return TextUtils.isEmpty(value) ? defaultValue : Long.parseLong(value);
}
+ private int getIntUnchecked(String key, int defaultValue, int userId) {
+ String value = getStringUnchecked(key, null, userId);
+ return TextUtils.isEmpty(value) ? defaultValue : Integer.parseInt(value);
+ }
+
@Override
public String getString(String key, String defaultValue, int userId) {
checkReadPermission(key, userId);
@@ -2171,8 +2207,8 @@
}
private void removeUser(int userId, boolean unknownUser) {
+ Slog.i(TAG, "RemoveUser: " + userId);
mSpManager.removeUser(userId);
- mStorage.removeUser(userId);
mStrongAuth.removeUser(userId);
tryRemoveUserFromSpCacheLater(userId);
@@ -2183,6 +2219,9 @@
if (unknownUser || mUserManager.getUserInfo(userId).isManagedProfile()) {
removeKeystoreProfileKey(userId);
}
+ // Clean up storage last, this is to ensure that cleanupDataForReusedUserIdIfNecessary()
+ // can make the assumption that no USER_SERIAL_NUMBER_KEY means user is fully removed.
+ mStorage.removeUser(userId);
}
private void removeKeystoreProfileKey(int targetUserId) {
diff --git a/services/core/java/com/android/server/locksettings/SyntheticPasswordManager.java b/services/core/java/com/android/server/locksettings/SyntheticPasswordManager.java
index f23ac34..e9a8085 100644
--- a/services/core/java/com/android/server/locksettings/SyntheticPasswordManager.java
+++ b/services/core/java/com/android/server/locksettings/SyntheticPasswordManager.java
@@ -38,6 +38,7 @@
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.util.ArrayUtils;
+import com.android.internal.util.Preconditions;
import com.android.internal.widget.ICheckCredentialProgressCallback;
import com.android.internal.widget.LockPatternUtils;
import com.android.internal.widget.LockscreenCredential;
@@ -139,17 +140,38 @@
public VerifyCredentialResponse gkResponse;
}
+ /**
+ * This class represents the master cryptographic secret for a given user (a.k.a synthietic
+ * password). This secret is derived from the user's lockscreen credential or password escrow
+ * token. All other cryptograhic keys related to the user, including disk encryption key,
+ * keystore encryption key, gatekeeper auth key, vendor auth secret and others are directly
+ * derived from this token.
+ * <p>
+ * The master secret associated with an authentication token is retrievable from
+ * {@link AuthenticationToken#getSyntheticPassword()} and the authentication token can be
+ * reconsturcted from the master secret later with
+ * {@link AuthenticationToken#recreateDirectly(byte[])}. The first time an authentication token
+ * is needed, it should be created with {@link AuthenticationToken#create()} so that the
+ * necessary escrow data ({@link #mEncryptedEscrowSplit0} and {@link #mEscrowSplit1}) is
+ * properly initialized. The caller can either persist the (non-secret) esscrow data if escrow
+ * is required, or discard it to cryptograhically disable escrow. To support escrow, the caller
+ * needs to securely store the secret returned from
+ * {@link AuthenticationToken#getEscrowSecret()}, and at the time of use, load the escrow data
+ * back with {@link AuthenticationToken#setEscrowData(byte[], byte[])} and then re-create the
+ * master secret from the escrow secret via
+ * {@link AuthenticationToken#recreateFromEscrow(byte[])}.
+ */
static class AuthenticationToken {
private final byte mVersion;
- /*
- * Here is the relationship between all three fields:
- * P0 and P1 are two randomly-generated blocks. P1 is stored on disk but P0 is not.
- * syntheticPassword = hash(P0 || P1)
- * E0 = P0 encrypted under syntheticPassword, stored on disk.
+ /**
+ * Here is the relationship between these fields:
+ * Generate two random block P0 and P1. P1 is recorded in mEscrowSplit1 but P0 is not.
+ * mSyntheticPassword = hash(P0 || P1)
+ * E0 = P0 encrypted under syntheticPassword, recoreded in mEncryptedEscrowSplit0.
*/
- private @Nullable byte[] E0;
- private @Nullable byte[] P1;
- private @NonNull String syntheticPassword;
+ private @NonNull byte[] mSyntheticPassword;
+ private @Nullable byte[] mEncryptedEscrowSplit0;
+ private @Nullable byte[] mEscrowSplit1;
AuthenticationToken(byte version) {
mVersion = version;
@@ -157,11 +179,11 @@
private byte[] derivePassword(byte[] personalization) {
if (mVersion == SYNTHETIC_PASSWORD_VERSION_V3) {
- return (new SP800Derive(syntheticPassword.getBytes()))
+ return (new SP800Derive(mSyntheticPassword))
.withContext(personalization, PERSONALISATION_CONTEXT);
} else {
return SyntheticPasswordCrypto.personalisedHash(personalization,
- syntheticPassword.getBytes());
+ mSyntheticPassword);
}
}
@@ -185,32 +207,77 @@
return derivePassword(PERSONALIZATION_PASSWORD_HASH);
}
- private void initialize(byte[] P0, byte[] P1) {
- this.P1 = P1;
- this.syntheticPassword = String.valueOf(HexEncoding.encode(
- SyntheticPasswordCrypto.personalisedHash(
- PERSONALIZATION_SP_SPLIT, P0, P1)));
- this.E0 = SyntheticPasswordCrypto.encrypt(this.syntheticPassword.getBytes(),
- PERSONALIZATION_E0, P0);
+ /**
+ * Assign escrow data to this auth token. This is a prerequisite to call
+ * {@link AuthenticationToken#recreateFromEscrow}.
+ */
+ public void setEscrowData(@Nullable byte[] encryptedEscrowSplit0,
+ @Nullable byte[] escrowSplit1) {
+ mEncryptedEscrowSplit0 = encryptedEscrowSplit0;
+ mEscrowSplit1 = escrowSplit1;
}
- public void recreate(byte[] secret) {
- initialize(secret, this.P1);
+ /**
+ * Re-creates authentication token from escrow secret (escrowSplit0, returned from
+ * {@link AuthenticationToken#getEscrowSecret}). Escrow data needs to be loaded
+ * by {@link #setEscrowData} before calling this.
+ */
+ public void recreateFromEscrow(byte[] escrowSplit0) {
+ Preconditions.checkNotNull(mEscrowSplit1);
+ Preconditions.checkNotNull(mEncryptedEscrowSplit0);
+ recreate(escrowSplit0, mEscrowSplit1);
}
- protected static AuthenticationToken create() {
+ /**
+ * Re-creates authentication token from synthetic password directly.
+ */
+ public void recreateDirectly(byte[] syntheticPassword) {
+ this.mSyntheticPassword = Arrays.copyOf(syntheticPassword, syntheticPassword.length);
+ }
+
+ /**
+ * Generates a new random synthetic password with escrow data.
+ */
+ static AuthenticationToken create() {
AuthenticationToken result = new AuthenticationToken(SYNTHETIC_PASSWORD_VERSION_V3);
- result.initialize(secureRandom(SYNTHETIC_PASSWORD_LENGTH),
- secureRandom(SYNTHETIC_PASSWORD_LENGTH));
+ byte[] escrowSplit0 = secureRandom(SYNTHETIC_PASSWORD_LENGTH);
+ byte[] escrowSplit1 = secureRandom(SYNTHETIC_PASSWORD_LENGTH);
+ result.recreate(escrowSplit0, escrowSplit1);
+ byte[] encrypteEscrowSplit0 = SyntheticPasswordCrypto.encrypt(result.mSyntheticPassword,
+ PERSONALIZATION_E0, escrowSplit0);
+ result.setEscrowData(encrypteEscrowSplit0, escrowSplit1);
return result;
}
- public byte[] computeP0() {
- if (E0 == null) {
+ /**
+ * Re-creates synthetic password from both escrow splits. See javadoc for
+ * AuthenticationToken.mSyntheticPassword for details on what each block means.
+ */
+ private void recreate(byte[] escrowSplit0, byte[] escrowSplit1) {
+ mSyntheticPassword = String.valueOf(HexEncoding.encode(
+ SyntheticPasswordCrypto.personalisedHash(
+ PERSONALIZATION_SP_SPLIT, escrowSplit0, escrowSplit1))).getBytes();
+ }
+
+ /**
+ * Returns the escrow secret that can be used later to reconstruct this authentication
+ * token from {@link #recreateFromEscrow(byte[])}. Only possible if escrow is not disabled
+ * (encryptedEscrowSplit0 known).
+ */
+ public byte[] getEscrowSecret() {
+ if (mEncryptedEscrowSplit0 == null) {
return null;
}
- return SyntheticPasswordCrypto.decrypt(syntheticPassword.getBytes(), PERSONALIZATION_E0,
- E0);
+ return SyntheticPasswordCrypto.decrypt(mSyntheticPassword, PERSONALIZATION_E0,
+ mEncryptedEscrowSplit0);
+ }
+
+ /**
+ * Returns the raw synthetic password that can be used later to reconstruct this
+ * authentication token from {@link #recreateDirectly(byte[])}
+ */
+ public byte[] getSyntheticPassword() {
+ return mSyntheticPassword;
}
}
@@ -537,14 +604,15 @@
}
private boolean loadEscrowData(AuthenticationToken authToken, int userId) {
- authToken.E0 = loadState(SP_E0_NAME, DEFAULT_HANDLE, userId);
- authToken.P1 = loadState(SP_P1_NAME, DEFAULT_HANDLE, userId);
- return authToken.E0 != null && authToken.P1 != null;
+ byte[] e0 = loadState(SP_E0_NAME, DEFAULT_HANDLE, userId);
+ byte[] p1 = loadState(SP_P1_NAME, DEFAULT_HANDLE, userId);
+ authToken.setEscrowData(e0, p1);
+ return e0 != null && p1 != null;
}
private void saveEscrowData(AuthenticationToken authToken, int userId) {
- saveState(SP_E0_NAME, authToken.E0, DEFAULT_HANDLE, userId);
- saveState(SP_P1_NAME, authToken.P1, DEFAULT_HANDLE, userId);
+ saveState(SP_E0_NAME, authToken.mEncryptedEscrowSplit0, DEFAULT_HANDLE, userId);
+ saveState(SP_P1_NAME, authToken.mEscrowSplit1, DEFAULT_HANDLE, userId);
}
public boolean hasEscrowData(int userId) {
@@ -862,9 +930,9 @@
byte[] applicationId, long sid, int userId) {
final byte[] secret;
if (type == SYNTHETIC_PASSWORD_TOKEN_BASED) {
- secret = authToken.computeP0();
+ secret = authToken.getEscrowSecret();
} else {
- secret = authToken.syntheticPassword.getBytes();
+ secret = authToken.getSyntheticPassword();
}
byte[] content = createSPBlob(getHandleName(handle), secret, applicationId, sid);
byte[] blob = new byte[content.length + 1 + 1];
@@ -1058,9 +1126,9 @@
Slog.e(TAG, "User is not escrowable: " + userId);
return null;
}
- result.recreate(secret);
+ result.recreateFromEscrow(secret);
} else {
- result.syntheticPassword = new String(secret);
+ result.recreateDirectly(secret);
}
if (version == SYNTHETIC_PASSWORD_VERSION_V1) {
Slog.i(TAG, "Upgrade v1 SP blob for user " + userId + ", type = " + type);
diff --git a/services/core/java/com/android/server/media/MediaRoute2Provider.java b/services/core/java/com/android/server/media/MediaRoute2Provider.java
index 91c9253..9a49c16 100644
--- a/services/core/java/com/android/server/media/MediaRoute2Provider.java
+++ b/services/core/java/com/android/server/media/MediaRoute2Provider.java
@@ -22,6 +22,7 @@
import android.content.Intent;
import android.media.MediaRoute2Info;
import android.media.MediaRoute2ProviderInfo;
+import android.os.Bundle;
import java.util.Objects;
@@ -29,7 +30,7 @@
final ComponentName mComponentName;
final String mUniqueId;
- private Callback mCallback;
+ Callback mCallback;
private MediaRoute2ProviderInfo mProviderInfo;
MediaRoute2Provider(@NonNull ComponentName componentName) {
@@ -77,6 +78,9 @@
}
public interface Callback {
- void onProviderStateChanged(MediaRoute2Provider provider);
+ void onProviderStateChanged(@Nullable MediaRoute2Provider provider);
+ void onRouteSelected(@NonNull MediaRoute2ProviderProxy provider,
+ @NonNull String clientPackageName, @NonNull MediaRoute2Info route,
+ @Nullable Bundle controlHints, int seq);
}
}
diff --git a/services/core/java/com/android/server/media/MediaRoute2ProviderProxy.java b/services/core/java/com/android/server/media/MediaRoute2ProviderProxy.java
index 3b6580a..a5abb18 100644
--- a/services/core/java/com/android/server/media/MediaRoute2ProviderProxy.java
+++ b/services/core/java/com/android/server/media/MediaRoute2ProviderProxy.java
@@ -26,6 +26,7 @@
import android.media.MediaRoute2Info;
import android.media.MediaRoute2ProviderInfo;
import android.media.MediaRoute2ProviderService;
+import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.os.IBinder.DeathRecipient;
@@ -253,6 +254,20 @@
setAndNotifyProviderInfo(info);
}
+ private void onRouteSelected(Connection connection,
+ String packageName, String routeId, Bundle controlHints, int seq) {
+ if (mActiveConnection != connection) {
+ return;
+ }
+ MediaRoute2ProviderInfo providerInfo = getProviderInfo();
+ MediaRoute2Info route = (providerInfo == null) ? null : providerInfo.getRoute(routeId);
+ if (route == null) {
+ Slog.w(TAG, this + ": Unknown route " + routeId + " is selected from remove provider");
+ return;
+ }
+ mCallback.onRouteSelected(this, packageName, route, controlHints, seq);
+ }
+
private void disconnect() {
if (mActiveConnection != null) {
mConnectionReady = false;
@@ -341,6 +356,11 @@
void postProviderInfoUpdated(MediaRoute2ProviderInfo info) {
mHandler.post(() -> onProviderInfoUpdated(Connection.this, info));
}
+
+ void postRouteSelected(String packageName, String routeId, Bundle controlHints, int seq) {
+ mHandler.post(() -> onRouteSelected(Connection.this,
+ packageName, routeId, controlHints, seq));
+ }
}
private static final class ProviderClient extends IMediaRoute2ProviderClient.Stub {
@@ -361,5 +381,15 @@
connection.postProviderInfoUpdated(info);
}
}
+
+ @Override
+ public void notifyRouteSelected(String packageName, String routeId,
+ Bundle controlHints, int seq) {
+ Connection connection = mConnectionRef.get();
+ if (connection != null) {
+ connection.postRouteSelected(packageName, routeId, controlHints, seq);
+ }
+ }
+
}
}
diff --git a/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java b/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java
index 2cf920d..9fcee50 100644
--- a/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java
+++ b/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java
@@ -26,7 +26,6 @@
import android.content.pm.PackageManager;
import android.media.IMediaRouter2Client;
import android.media.IMediaRouter2Manager;
-import android.media.IMediaRouterClient;
import android.media.MediaRoute2Info;
import android.media.MediaRoute2ProviderInfo;
import android.media.MediaRouter2;
@@ -71,13 +70,13 @@
@GuardedBy("mLock")
private final SparseArray<UserRecord> mUserRecords = new SparseArray<>();
@GuardedBy("mLock")
- private final ArrayMap<IBinder, ClientRecord> mAllClientRecords = new ArrayMap<>();
+ private final ArrayMap<IBinder, Client2Record> mAllClientRecords = new ArrayMap<>();
@GuardedBy("mLock")
private final ArrayMap<IBinder, ManagerRecord> mAllManagerRecords = new ArrayMap<>();
@GuardedBy("mLock")
private int mCurrentUserId = -1;
@GuardedBy("mLock")
- private int mSelectRouteRequestSequenceNumber = 0;
+ private int mSelectRouteRequestSequenceNumber = 1;
MediaRouter2ServiceImpl(Context context) {
mContext = context;
@@ -183,29 +182,14 @@
}
}
- //TODO: What would happen if a media app used MediaRouter and MediaRouter2 simultaneously?
- public void setControlCategories(@NonNull IMediaRouterClient client,
- @Nullable List<String> categories) {
- Objects.requireNonNull(client, "client must not be null");
- final long token = Binder.clearCallingIdentity();
- try {
- synchronized (mLock) {
- ClientRecord clientRecord = mAllClientRecords.get(client.asBinder());
- setControlCategoriesLocked(clientRecord, categories);
- }
- } finally {
- Binder.restoreCallingIdentity(token);
- }
- }
-
- public void setControlCategories2(@NonNull IMediaRouter2Client client,
+ public void setControlCategories(@NonNull IMediaRouter2Client client,
@Nullable List<String> categories) {
Objects.requireNonNull(client, "client must not be null");
final long token = Binder.clearCallingIdentity();
try {
synchronized (mLock) {
- ClientRecord clientRecord = mAllClientRecords.get(client.asBinder());
+ Client2Record clientRecord = mAllClientRecords.get(client.asBinder());
setControlCategoriesLocked(clientRecord, categories);
}
} finally {
@@ -218,7 +202,7 @@
final long token = Binder.clearCallingIdentity();
try {
synchronized (mLock) {
- requestSelectRoute2Locked(mAllClientRecords.get(client.asBinder()), route);
+ requestSelectRoute2Locked(mAllClientRecords.get(client.asBinder()), false, route);
}
} finally {
Binder.restoreCallingIdentity(token);
@@ -295,37 +279,6 @@
}
}
-
- public void registerClient(@NonNull IMediaRouterClient client, @NonNull String packageName) {
- Objects.requireNonNull(client, "client must not be null");
-
- final int uid = Binder.getCallingUid();
- final int pid = Binder.getCallingPid();
- final int userId = UserHandle.getUserId(uid);
-
- final long token = Binder.clearCallingIdentity();
- try {
- synchronized (mLock) {
- registerClient1Locked(client, packageName, userId);
- }
- } finally {
- Binder.restoreCallingIdentity(token);
- }
- }
-
- public void unregisterClient(@NonNull IMediaRouterClient client) {
- Objects.requireNonNull(client, "client must not be null");
-
- final long token = Binder.clearCallingIdentity();
- try {
- synchronized (mLock) {
- unregisterClient1Locked(client);
- }
- } finally {
- Binder.restoreCallingIdentity(token);
- }
- }
-
//TODO: Review this is handling multi-user properly.
void switchUser() {
synchronized (mLock) {
@@ -389,7 +342,7 @@
}
private void unregisterClient2Locked(IMediaRouter2Client client, boolean died) {
- Client2Record clientRecord = (Client2Record) mAllClientRecords.remove(client.asBinder());
+ Client2Record clientRecord = mAllClientRecords.remove(client.asBinder());
if (clientRecord != null) {
UserRecord userRecord = clientRecord.mUserRecord;
userRecord.mClientRecords.remove(clientRecord);
@@ -399,10 +352,12 @@
}
}
- private void requestSelectRoute2Locked(ClientRecord clientRecord, MediaRoute2Info route) {
+ private void requestSelectRoute2Locked(Client2Record clientRecord, boolean selectedByManager,
+ MediaRoute2Info route) {
if (clientRecord != null) {
MediaRoute2Info oldRoute = clientRecord.mSelectedRoute;
clientRecord.mSelectingRoute = route;
+ clientRecord.mIsManagerSelecting = selectedByManager;
UserHandler handler = clientRecord.mUserRecord.mHandler;
//TODO: Handle transfer instead of unselect and select
@@ -417,7 +372,6 @@
handler.sendMessage(obtainMessage(
UserHandler::requestSelectRoute, handler, clientRecord.mPackageName,
route, seq));
-
// Remove all previous timeout messages
for (int previousSeq : clientRecord.mSelectRouteSequenceNumbers) {
clientRecord.mUserRecord.mHandler.removeMessages(previousSeq);
@@ -434,7 +388,7 @@
}
}
- private void setControlCategoriesLocked(ClientRecord clientRecord, List<String> categories) {
+ private void setControlCategoriesLocked(Client2Record clientRecord, List<String> categories) {
if (clientRecord != null) {
clientRecord.mControlCategories = categories;
@@ -447,7 +401,7 @@
private void sendControlRequestLocked(IMediaRouter2Client client, MediaRoute2Info route,
Intent request) {
final IBinder binder = client.asBinder();
- ClientRecord clientRecord = mAllClientRecords.get(binder);
+ Client2Record clientRecord = mAllClientRecords.get(binder);
if (clientRecord != null) {
clientRecord.mUserRecord.mHandler.sendMessage(
@@ -459,7 +413,7 @@
private void requestSetVolumeLocked(IMediaRouter2Client client, MediaRoute2Info route,
int volume) {
final IBinder binder = client.asBinder();
- ClientRecord clientRecord = mAllClientRecords.get(binder);
+ Client2Record clientRecord = mAllClientRecords.get(binder);
if (clientRecord != null) {
clientRecord.mUserRecord.mHandler.sendMessage(
@@ -471,7 +425,7 @@
private void requestUpdateVolumeLocked(IMediaRouter2Client client, MediaRoute2Info route,
int delta) {
final IBinder binder = client.asBinder();
- ClientRecord clientRecord = mAllClientRecords.get(binder);
+ Client2Record clientRecord = mAllClientRecords.get(binder);
if (clientRecord != null) {
clientRecord.mUserRecord.mHandler.sendMessage(
@@ -510,7 +464,7 @@
obtainMessage(UserHandler::notifyRoutesToManager,
userRecord.mHandler, manager));
- for (ClientRecord clientRecord : userRecord.mClientRecords) {
+ for (Client2Record clientRecord : userRecord.mClientRecords) {
// TODO: Do not use updateClientUsage since it updates all managers.
// Instead, Notify only to the manager that is currently being registered.
@@ -537,13 +491,13 @@
String packageName, MediaRoute2Info route) {
ManagerRecord managerRecord = mAllManagerRecords.get(manager.asBinder());
if (managerRecord != null) {
- ClientRecord clientRecord =
+ Client2Record clientRecord =
managerRecord.mUserRecord.findClientRecordLocked(packageName);
if (clientRecord == null) {
Slog.w(TAG, "Ignoring route selection for unknown client.");
}
if (clientRecord != null && managerRecord.mTrusted) {
- requestSelectRoute2Locked(clientRecord, route);
+ requestSelectRoute2Locked(clientRecord, true, route);
}
}
}
@@ -599,41 +553,10 @@
}
}
- private void registerClient1Locked(IMediaRouterClient client, String packageName,
- int userId) {
- final IBinder binder = client.asBinder();
- if (mAllClientRecords.get(binder) == null) {
- boolean newUser = false;
- UserRecord userRecord = mUserRecords.get(userId);
- if (userRecord == null) {
- userRecord = new UserRecord(userId);
- newUser = true;
- }
- ClientRecord clientRecord = new Client1Record(userRecord, client, packageName);
-
- if (newUser) {
- mUserRecords.put(userId, userRecord);
- initializeUserLocked(userRecord);
- }
-
- userRecord.mClientRecords.add(clientRecord);
- mAllClientRecords.put(binder, clientRecord);
- }
- }
-
- private void unregisterClient1Locked(IMediaRouterClient client) {
- ClientRecord clientRecord = mAllClientRecords.remove(client.asBinder());
- if (clientRecord != null) {
- UserRecord userRecord = clientRecord.mUserRecord;
- userRecord.mClientRecords.remove(clientRecord);
- disposeUserIfNeededLocked(userRecord);
- }
- }
-
final class UserRecord {
public final int mUserId;
//TODO: make records private for thread-safety
- final ArrayList<ClientRecord> mClientRecords = new ArrayList<>();
+ final ArrayList<Client2Record> mClientRecords = new ArrayList<>();
final ArrayList<ManagerRecord> mManagerRecords = new ArrayList<>();
final UserHandler mHandler;
@@ -642,8 +565,8 @@
mHandler = new UserHandler(MediaRouter2ServiceImpl.this, this);
}
- ClientRecord findClientRecordLocked(String packageName) {
- for (ClientRecord clientRecord : mClientRecords) {
+ Client2Record findClientRecordLocked(String packageName) {
+ for (Client2Record clientRecord : mClientRecords) {
if (TextUtils.equals(clientRecord.mPackageName, packageName)) {
return clientRecord;
}
@@ -652,42 +575,26 @@
}
}
- class ClientRecord {
+ final class Client2Record implements IBinder.DeathRecipient {
public final UserRecord mUserRecord;
public final String mPackageName;
public final List<Integer> mSelectRouteSequenceNumbers;
- public List<String> mControlCategories;
- public MediaRoute2Info mSelectingRoute;
- public MediaRoute2Info mSelectedRoute;
-
- ClientRecord(UserRecord userRecord, String packageName) {
- mUserRecord = userRecord;
- mPackageName = packageName;
- mSelectRouteSequenceNumbers = new ArrayList<>();
- mControlCategories = Collections.emptyList();
- }
- }
-
- final class Client1Record extends ClientRecord {
- public final IMediaRouterClient mClient;
-
- Client1Record(UserRecord userRecord, IMediaRouterClient client,
- String packageName) {
- super(userRecord, packageName);
- mClient = client;
- }
- }
-
- final class Client2Record extends ClientRecord
- implements IBinder.DeathRecipient {
public final IMediaRouter2Client mClient;
public final int mUid;
public final int mPid;
public final boolean mTrusted;
+ public List<String> mControlCategories;
+ public boolean mIsManagerSelecting;
+ public MediaRoute2Info mSelectingRoute;
+ public MediaRoute2Info mSelectedRoute;
+
Client2Record(UserRecord userRecord, IMediaRouter2Client client,
int uid, int pid, String packageName, boolean trusted) {
- super(userRecord, packageName);
+ mUserRecord = userRecord;
+ mPackageName = packageName;
+ mSelectRouteSequenceNumbers = new ArrayList<>();
+ mControlCategories = Collections.emptyList();
mClient = client;
mUid = uid;
mPid = pid;
@@ -802,9 +709,8 @@
sendMessage(PooledLambda.obtainMessage(UserHandler::updateProvider, this, provider));
}
- // TODO: When introducing MediaRoute2ProviderService#sendControlHints(),
- // Make this method to be called.
- public void onRouteSelectionRequestHandled(@NonNull MediaRoute2ProviderProxy provider,
+ @Override
+ public void onRouteSelected(@NonNull MediaRoute2ProviderProxy provider,
String clientPackageName, MediaRoute2Info route, Bundle controlHints, int seq) {
sendMessage(PooledLambda.obtainMessage(
UserHandler::updateSelectedRoute, this, provider, clientPackageName, route,
@@ -907,15 +813,12 @@
return;
}
- ClientRecord clientRecord;
+ Client2Record clientRecord;
synchronized (service.mLock) {
clientRecord = mUserRecord.findClientRecordLocked(clientPackageName);
}
- if (!(clientRecord instanceof Client2Record)) {
- Log.w(TAG, "Ignoring route selection for unknown client.");
- unselectRoute(clientPackageName, selectedRoute);
- return;
- }
+
+ //TODO: handle a case such that controlHints is null. (How should we notify MR2?)
if (clientRecord.mSelectingRoute == null || !TextUtils.equals(
clientRecord.mSelectingRoute.getUniqueId(), selectedRoute.getUniqueId())) {
@@ -927,9 +830,11 @@
clientRecord.mSelectingRoute = null;
clientRecord.mSelectedRoute = selectedRoute;
- notifyRouteSelectedToClient(((Client2Record) clientRecord).mClient,
+ notifyRouteSelectedToClient(clientRecord.mClient,
selectedRoute,
- MediaRouter2.SELECT_REASON_USER_SELECTED,
+ clientRecord.mIsManagerSelecting
+ ? MediaRouter2.SELECT_REASON_SYSTEM_SELECTED :
+ MediaRouter2.SELECT_REASON_USER_SELECTED,
controlHints);
updateClientUsage(clientRecord);
@@ -944,14 +849,10 @@
return;
}
- ClientRecord clientRecord;
+ Client2Record clientRecord;
synchronized (service.mLock) {
clientRecord = mUserRecord.findClientRecordLocked(clientPackageName);
}
- if (!(clientRecord instanceof Client2Record)) {
- Log.w(TAG, "Ignoring fallback route selection for unknown client.");
- return;
- }
if (clientRecord.mSelectingRoute == null || !TextUtils.equals(
clientRecord.mSelectingRoute.getUniqueId(), selectingRoute.getUniqueId())) {
@@ -966,7 +867,7 @@
MediaRoute2Info fallbackRoute = null;
clientRecord.mSelectedRoute = fallbackRoute;
- notifyRouteSelectedToClient(((Client2Record) clientRecord).mClient,
+ notifyRouteSelectedToClient(clientRecord.mClient,
fallbackRoute,
MediaRouter2.SELECT_REASON_FALLBACK,
Bundle.EMPTY /* controlHints */);
@@ -1023,10 +924,8 @@
return clients;
}
synchronized (service.mLock) {
- for (ClientRecord clientRecord : mUserRecord.mClientRecords) {
- if (clientRecord instanceof Client2Record) {
- clients.add(((Client2Record) clientRecord).mClient);
- }
+ for (Client2Record clientRecord : mUserRecord.mClientRecords) {
+ clients.add(clientRecord.mClient);
}
}
return clients;
@@ -1151,7 +1050,7 @@
}
}
- private void updateClientUsage(ClientRecord clientRecord) {
+ private void updateClientUsage(Client2Record clientRecord) {
MediaRouter2ServiceImpl service = mServiceRef.get();
if (service == null) {
return;
diff --git a/services/core/java/com/android/server/media/MediaRouterService.java b/services/core/java/com/android/server/media/MediaRouterService.java
index 9336af4..9c99e8f 100644
--- a/services/core/java/com/android/server/media/MediaRouterService.java
+++ b/services/core/java/com/android/server/media/MediaRouterService.java
@@ -249,7 +249,6 @@
synchronized (mLock) {
registerClientLocked(client, uid, pid, packageName, resolvedUserId, trusted);
}
- mService2.registerClient(client, packageName);
} finally {
Binder.restoreCallingIdentity(token);
}
@@ -290,7 +289,6 @@
synchronized (mLock) {
unregisterClientLocked(client, false);
}
- mService2.unregisterClient(client);
} finally {
Binder.restoreCallingIdentity(token);
}
@@ -397,12 +395,6 @@
// Binder call
@Override
- public void setControlCategories(IMediaRouterClient client, List<String> controlCategories) {
- mService2.setControlCategories(client, controlCategories);
- }
-
- // Binder call
- @Override
public void requestUpdateVolume(IMediaRouterClient client, String routeId, int direction) {
if (client == null) {
throw new IllegalArgumentException("client must not be null");
@@ -501,8 +493,8 @@
// Binder call
@Override
- public void setControlCategories2(IMediaRouter2Client client, List<String> categories) {
- mService2.setControlCategories2(client, categories);
+ public void setControlCategories(IMediaRouter2Client client, List<String> categories) {
+ mService2.setControlCategories(client, categories);
}
// Binder call
@@ -601,7 +593,6 @@
synchronized (mLock) {
unregisterClientLocked(clientRecord.mClient, true);
}
- mService2.unregisterClient(clientRecord.mClient);
}
private void registerClientLocked(IMediaRouterClient client,
diff --git a/services/core/java/com/android/server/net/LockdownVpnTracker.java b/services/core/java/com/android/server/net/LockdownVpnTracker.java
index 77fbe41..4cb41da 100644
--- a/services/core/java/com/android/server/net/LockdownVpnTracker.java
+++ b/services/core/java/com/android/server/net/LockdownVpnTracker.java
@@ -16,7 +16,7 @@
package com.android.server.net;
-import static android.Manifest.permission.CONNECTIVITY_INTERNAL;
+import static android.Manifest.permission.NETWORK_STACK;
import static android.provider.Settings.ACTION_VPN_SETTINGS;
import android.annotation.NonNull;
@@ -202,8 +202,7 @@
mVpn.setLockdown(true);
final IntentFilter resetFilter = new IntentFilter(ACTION_LOCKDOWN_RESET);
- mContext.registerReceiver(mResetReceiver, resetFilter, CONNECTIVITY_INTERNAL, mHandler);
-
+ mContext.registerReceiver(mResetReceiver, resetFilter, NETWORK_STACK, mHandler);
handleStateChangedLocked();
}
diff --git a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
index 32d4b72..dfdc2c1 100644
--- a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
+++ b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
@@ -20,6 +20,9 @@
import static android.Manifest.permission.CONNECTIVITY_INTERNAL;
import static android.Manifest.permission.MANAGE_NETWORK_POLICY;
import static android.Manifest.permission.MANAGE_SUBSCRIPTION_PLANS;
+import static android.Manifest.permission.NETWORK_SETTINGS;
+import static android.Manifest.permission.NETWORK_STACK;
+import static android.Manifest.permission.OBSERVE_NETWORK_POLICY;
import static android.Manifest.permission.READ_NETWORK_USAGE_HISTORY;
import static android.Manifest.permission.READ_PHONE_STATE;
import static android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE;
@@ -33,6 +36,7 @@
import static android.content.pm.PackageManager.MATCH_DIRECT_BOOT_UNAWARE;
import static android.content.pm.PackageManager.MATCH_DISABLED_COMPONENTS;
import static android.content.pm.PackageManager.MATCH_UNINSTALLED_PACKAGES;
+import static android.content.pm.PackageManager.PERMISSION_GRANTED;
import static android.net.ConnectivityManager.CONNECTIVITY_ACTION;
import static android.net.ConnectivityManager.RESTRICT_BACKGROUND_STATUS_DISABLED;
import static android.net.ConnectivityManager.RESTRICT_BACKGROUND_STATUS_ENABLED;
@@ -153,6 +157,7 @@
import android.net.NetworkQuotaInfo;
import android.net.NetworkRequest;
import android.net.NetworkSpecifier;
+import android.net.NetworkStack;
import android.net.NetworkState;
import android.net.NetworkStats;
import android.net.NetworkTemplate;
@@ -825,7 +830,7 @@
// watch for network interfaces to be claimed
final IntentFilter connFilter = new IntentFilter(CONNECTIVITY_ACTION);
- mContext.registerReceiver(mConnReceiver, connFilter, CONNECTIVITY_INTERNAL, mHandler);
+ mContext.registerReceiver(mConnReceiver, connFilter, NETWORK_STACK, mHandler);
// listen for package changes to update policy
final IntentFilter packageFilter = new IntentFilter();
@@ -1128,7 +1133,7 @@
@Override
public void limitReached(String limitName, String iface) {
// only someone like NMS should be calling us
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+ NetworkStack.checkNetworkStackPermission(mContext);
if (!LIMIT_GLOBAL_ALERT.equals(limitName)) {
mHandler.obtainMessage(MSG_LIMIT_REACHED, iface).sendToTarget();
@@ -1483,7 +1488,7 @@
private BroadcastReceiver mConnReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
- // on background handler thread, and verified CONNECTIVITY_INTERNAL
+ // on background handler thread, and verified NETWORK_STACK
// permission above.
updateNetworksInternal();
}
@@ -2721,17 +2726,35 @@
return changed;
}
+ private boolean checkAnyPermissionOf(String... permissions) {
+ for (String permission : permissions) {
+ if (mContext.checkCallingOrSelfPermission(permission) == PERMISSION_GRANTED) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private void enforceAnyPermissionOf(String... permissions) {
+ if (!checkAnyPermissionOf(permissions)) {
+ throw new SecurityException("Requires one of the following permissions: "
+ + String.join(", ", permissions) + ".");
+ }
+ }
+
@Override
public void registerListener(INetworkPolicyListener listener) {
- // TODO: create permission for observing network policy
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+ // TODO: Remove CONNECTIVITY_INTERNAL and the *AnyPermissionOf methods above after all apps
+ // have declared OBSERVE_NETWORK_POLICY.
+ enforceAnyPermissionOf(CONNECTIVITY_INTERNAL, OBSERVE_NETWORK_POLICY);
mListeners.register(listener);
}
@Override
public void unregisterListener(INetworkPolicyListener listener) {
- // TODO: create permission for observing network policy
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+ // TODO: Remove CONNECTIVITY_INTERNAL and the *AnyPermissionOf methods above after all apps
+ // have declared OBSERVE_NETWORK_POLICY.
+ enforceAnyPermissionOf(CONNECTIVITY_INTERNAL, OBSERVE_NETWORK_POLICY);
mListeners.unregister(listener);
}
@@ -4965,7 +4988,7 @@
@Override
public void factoryReset(String subscriber) {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+ mContext.enforceCallingOrSelfPermission(NETWORK_SETTINGS, TAG);
if (mUserManager.hasUserRestriction(UserManager.DISALLOW_NETWORK_RESET)) {
return;
@@ -4998,7 +5021,7 @@
public boolean isUidNetworkingBlocked(int uid, boolean isNetworkMetered) {
final long startTime = mStatLogger.getTime();
- mContext.enforceCallingOrSelfPermission(MANAGE_NETWORK_POLICY, TAG);
+ mContext.enforceCallingOrSelfPermission(OBSERVE_NETWORK_POLICY, TAG);
final int uidRules;
final boolean isBackgroundRestricted;
synchronized (mUidRulesFirstLock) {
diff --git a/services/core/java/com/android/server/net/NetworkStatsService.java b/services/core/java/com/android/server/net/NetworkStatsService.java
index 08c9426..16424f2 100644
--- a/services/core/java/com/android/server/net/NetworkStatsService.java
+++ b/services/core/java/com/android/server/net/NetworkStatsService.java
@@ -17,7 +17,6 @@
package com.android.server.net;
import static android.Manifest.permission.ACCESS_NETWORK_STATE;
-import static android.Manifest.permission.CONNECTIVITY_INTERNAL;
import static android.Manifest.permission.READ_NETWORK_USAGE_HISTORY;
import static android.content.Intent.ACTION_SHUTDOWN;
import static android.content.Intent.ACTION_UID_REMOVED;
@@ -91,6 +90,7 @@
import android.net.NetworkCapabilities;
import android.net.NetworkIdentity;
import android.net.NetworkInfo;
+import android.net.NetworkStack;
import android.net.NetworkState;
import android.net.NetworkStats;
import android.net.NetworkStats.NonMonotonicObserver;
@@ -138,7 +138,6 @@
import com.android.internal.util.IndentingPrintWriter;
import com.android.server.EventLogTags;
import com.android.server.LocalServices;
-import com.android.server.connectivity.Tethering;
import java.io.File;
import java.io.FileDescriptor;
@@ -1021,8 +1020,6 @@
private BroadcastReceiver mTetherReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
- // on background handler thread, and verified CONNECTIVITY_INTERNAL
- // permission above.
performPoll(FLAG_PERSIST_NETWORK);
}
};
@@ -1096,7 +1093,7 @@
@Override
public void limitReached(String limitName, String iface) {
// only someone like NMS should be calling us
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+ NetworkStack.checkNetworkStackPermission(mContext);
if (LIMIT_GLOBAL_ALERT.equals(limitName)) {
// kick off background poll to collect network stats unless there is already
diff --git a/services/core/java/com/android/server/notification/NotificationHistoryDatabase.java b/services/core/java/com/android/server/notification/NotificationHistoryDatabase.java
index 378ca4a..2247e54 100644
--- a/services/core/java/com/android/server/notification/NotificationHistoryDatabase.java
+++ b/services/core/java/com/android/server/notification/NotificationHistoryDatabase.java
@@ -183,6 +183,7 @@
public NotificationHistory readNotificationHistory() {
synchronized (mLock) {
NotificationHistory notifications = new NotificationHistory();
+ notifications.addNotificationsToWrite(mBuffer);
for (AtomicFile file : mHistoryFiles) {
try {
@@ -223,6 +224,13 @@
}
}
+ public void disableHistory() {
+ synchronized (mLock) {
+ mHistoryDir.delete();
+ mHistoryFiles.clear();
+ }
+ }
+
/**
* Remove any files that are too old and schedule jobs to clean up the rest
*/
@@ -241,6 +249,7 @@
Slog.d(TAG, "Removed " + currentOldestFile.getBaseFile().getName());
}
currentOldestFile.delete();
+ // TODO: delete all relevant bitmaps, once they exist
mHistoryFiles.removeLast();
} else {
// all remaining files are newer than the cut off; schedule jobs to delete
diff --git a/services/core/java/com/android/server/notification/NotificationHistoryManager.java b/services/core/java/com/android/server/notification/NotificationHistoryManager.java
index a350a6b..1b56c7b 100644
--- a/services/core/java/com/android/server/notification/NotificationHistoryManager.java
+++ b/services/core/java/com/android/server/notification/NotificationHistoryManager.java
@@ -21,9 +21,16 @@
import android.annotation.UserIdInt;
import android.app.NotificationHistory;
import android.app.NotificationHistory.HistoricalNotification;
+import android.content.ContentResolver;
import android.content.Context;
+import android.content.pm.UserInfo;
+import android.database.ContentObserver;
+import android.net.Uri;
import android.os.Environment;
+import android.os.Handler;
+import android.os.UserHandle;
import android.os.UserManager;
+import android.provider.Settings;
import android.util.Slog;
import android.util.SparseArray;
import android.util.SparseBooleanArray;
@@ -49,6 +56,8 @@
private final Context mContext;
private final UserManager mUserManager;
+ @VisibleForTesting
+ final SettingsObserver mSettingsObserver;
private final Object mLock = new Object();
@GuardedBy("mLock")
private final SparseArray<NotificationHistoryDatabase> mUserState = new SparseArray<>();
@@ -57,19 +66,26 @@
// TODO: does this need to be persisted across reboots?
@GuardedBy("mLock")
private final SparseArray<List<String>> mUserPendingPackageRemovals = new SparseArray<>();
+ @GuardedBy("mLock")
+ private final SparseBooleanArray mHistoryEnabled = new SparseBooleanArray();
- public NotificationHistoryManager(Context context) {
+ public NotificationHistoryManager(Context context, Handler handler) {
mContext = context;
mUserManager = context.getSystemService(UserManager.class);
+ mSettingsObserver = new SettingsObserver(handler);
}
- public void onUserUnlocked(@UserIdInt int userId) {
+ void onBootPhaseAppsCanStart() {
+ mSettingsObserver.observe();
+ }
+
+ void onUserUnlocked(@UserIdInt int userId) {
synchronized (mLock) {
mUserUnlockedStates.put(userId, true);
final NotificationHistoryDatabase userHistory =
getUserHistoryAndInitializeIfNeededLocked(userId);
if (userHistory == null) {
- Slog.i(TAG, "Attempted to unlock stopped or removed user " + userId);
+ Slog.i(TAG, "Attempted to unlock gone/disabled user " + userId);
return;
}
@@ -81,6 +97,11 @@
}
mUserPendingPackageRemovals.put(userId, null);
}
+
+ // delete history if it was disabled when the user was locked
+ if (!mHistoryEnabled.get(userId)) {
+ userHistory.disableHistory();
+ }
}
}
@@ -91,22 +112,25 @@
}
}
- void onUserRemoved(@UserIdInt int userId) {
+ public void onUserRemoved(@UserIdInt int userId) {
synchronized (mLock) {
// Actual data deletion is handled by other parts of the system (the entire directory is
// removed) - we just need clean up our internal state for GC
mUserPendingPackageRemovals.put(userId, null);
+ mHistoryEnabled.put(userId, false);
onUserStopped(userId);
}
}
- void onPackageRemoved(int userId, String packageName) {
+ public void onPackageRemoved(int userId, String packageName) {
synchronized (mLock) {
if (!mUserUnlockedStates.get(userId, false)) {
- List<String> userPendingRemovals =
- mUserPendingPackageRemovals.get(userId, new ArrayList<>());
- userPendingRemovals.add(packageName);
- mUserPendingPackageRemovals.put(userId, userPendingRemovals);
+ if (mHistoryEnabled.get(userId, false)) {
+ List<String> userPendingRemovals =
+ mUserPendingPackageRemovals.get(userId, new ArrayList<>());
+ userPendingRemovals.add(packageName);
+ mUserPendingPackageRemovals.put(userId, userPendingRemovals);
+ }
return;
}
final NotificationHistoryDatabase userHistory = mUserState.get(userId);
@@ -118,7 +142,8 @@
}
}
- void triggerWriteToDisk() {
+ // TODO: wire this up to AMS when power button is long pressed
+ public void triggerWriteToDisk() {
synchronized (mLock) {
final int userCount = mUserState.size();
for (int i = 0; i < userCount; i++) {
@@ -139,7 +164,7 @@
final NotificationHistoryDatabase userHistory =
getUserHistoryAndInitializeIfNeededLocked(notification.getUserId());
if (userHistory == null) {
- Slog.w(TAG, "Attempted to add notif for locked/gone user "
+ Slog.w(TAG, "Attempted to add notif for locked/gone/disabled user "
+ notification.getUserId());
return;
}
@@ -157,7 +182,7 @@
final NotificationHistoryDatabase userHistory =
getUserHistoryAndInitializeIfNeededLocked(userId);
if (userHistory == null) {
- Slog.i(TAG, "Attempted to read history for locked/gone user " +userId);
+ Slog.i(TAG, "Attempted to read history for locked/gone/disabled user " +userId);
continue;
}
mergedHistory.addNotificationsToWrite(userHistory.readNotificationHistory());
@@ -172,7 +197,7 @@
final NotificationHistoryDatabase userHistory =
getUserHistoryAndInitializeIfNeededLocked(userId);
if (userHistory == null) {
- Slog.i(TAG, "Attempted to read history for locked/gone user " +userId);
+ Slog.i(TAG, "Attempted to read history for locked/gone/disabled user " +userId);
return new android.app.NotificationHistory();
}
@@ -180,9 +205,38 @@
}
}
+ boolean isHistoryEnabled(@UserIdInt int userId) {
+ synchronized (mLock) {
+ return mHistoryEnabled.get(userId);
+ }
+ }
+
+ void onHistoryEnabledChanged(@UserIdInt int userId, boolean historyEnabled) {
+ synchronized (mLock) {
+ mHistoryEnabled.put(userId, historyEnabled);
+
+ // These requests might fail if the user is locked; onUserUnlocked will pick up those
+ // cases
+ final NotificationHistoryDatabase userHistory =
+ getUserHistoryAndInitializeIfNeededLocked(userId);
+ if (userHistory != null) {
+ if (!historyEnabled) {
+ userHistory.disableHistory();
+ }
+ }
+ }
+ }
+
@GuardedBy("mLock")
private @Nullable NotificationHistoryDatabase getUserHistoryAndInitializeIfNeededLocked(
int userId) {
+ if (!mHistoryEnabled.get(userId)) {
+ if (DEBUG) {
+ Slog.i(TAG, "History disabled for user " + userId);
+ }
+ mUserState.put(userId, null);
+ return null;
+ }
NotificationHistoryDatabase userHistory = mUserState.get(userId);
if (userHistory == null) {
final File historyDir = new File(Environment.getDataSystemCeDirectory(userId),
@@ -242,4 +296,39 @@
return mUserPendingPackageRemovals.get(userId);
}
}
+
+ final class SettingsObserver extends ContentObserver {
+ private final Uri NOTIFICATION_HISTORY_URI
+ = Settings.Secure.getUriFor(Settings.Secure.NOTIFICATION_HISTORY_ENABLED);
+
+ SettingsObserver(Handler handler) {
+ super(handler);
+ }
+
+ void observe() {
+ ContentResolver resolver = mContext.getContentResolver();
+ resolver.registerContentObserver(NOTIFICATION_HISTORY_URI,
+ false, this, UserHandle.USER_ALL);
+ synchronized (mLock) {
+ for (UserInfo userInfo : mUserManager.getUsers()) {
+ update(null, userInfo.id);
+ }
+ }
+ }
+
+ @Override
+ public void onChange(boolean selfChange, Uri uri, int userId) {
+ update(uri, userId);
+ }
+
+ public void update(Uri uri, int userId) {
+ ContentResolver resolver = mContext.getContentResolver();
+ if (uri == null || NOTIFICATION_HISTORY_URI.equals(uri)) {
+ boolean historyEnabled = Settings.Secure.getIntForUser(resolver,
+ Settings.Secure.NOTIFICATION_HISTORY_ENABLED, 0, userId)
+ != 0;
+ onHistoryEnabledChanged(userId, historyEnabled);
+ }
+ }
+ }
}
diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java
index d5f2d7e..293fd40 100755
--- a/services/core/java/com/android/server/notification/NotificationManagerService.java
+++ b/services/core/java/com/android/server/notification/NotificationManagerService.java
@@ -103,6 +103,8 @@
import android.annotation.CallbackExecutor;
import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.annotation.RequiresPermission;
+import android.annotation.WorkerThread;
import android.app.ActivityManager;
import android.app.ActivityManagerInternal;
import android.app.AlarmManager;
@@ -116,6 +118,8 @@
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationChannelGroup;
+import android.app.NotificationHistory;
+import android.app.NotificationHistory.HistoricalNotification;
import android.app.NotificationManager;
import android.app.NotificationManager.Policy;
import android.app.PendingIntent;
@@ -160,6 +164,7 @@
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
+import android.os.HandlerExecutor;
import android.os.HandlerThread;
import android.os.IBinder;
import android.os.IDeviceIdleController;
@@ -319,6 +324,7 @@
static final int VIBRATE_PATTERN_MAXLEN = 8 * 2 + 1; // up to eight bumps
static final int INVALID_UID = -1;
+ static final String ROOT_PKG = "root";
static final boolean ENABLE_BLOCKED_TOASTS = true;
@@ -477,12 +483,14 @@
private long mLastOverRateLogTime;
private float mMaxPackageEnqueueRate = DEFAULT_MAX_NOTIFICATION_ENQUEUE_RATE;
+ private NotificationHistoryManager mHistoryManager;
private SnoozeHelper mSnoozeHelper;
private GroupHelper mGroupHelper;
private int mAutoGroupAtCount;
private boolean mIsTelevision;
private boolean mIsAutomotive;
private boolean mNotificationEffectsEnabledForAutomotive;
+ private DeviceConfig.OnPropertiesChangedListener mDeviceConfigChangedListener;
private int mWarnRemoteViewsSizeBytes;
private int mStripRemoteViewsSizeBytes;
@@ -1547,6 +1555,7 @@
mListeners.onUserRemoved(userId);
mConditionProviders.onUserRemoved(userId);
mAssistants.onUserRemoved(userId);
+ mHistoryManager.onUserRemoved(userId);
handleSavePolicyFile();
} else if (action.equals(Intent.ACTION_USER_UNLOCKED)) {
final int userId = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, USER_NULL);
@@ -1775,8 +1784,8 @@
// TODO: All tests should use this init instead of the one-off setters above.
@VisibleForTesting
- void init(Looper looper, RankingHandler rankingHandler, IPackageManager packageManager,
- PackageManager packageManagerClient,
+ void init(WorkerHandler handler, RankingHandler rankingHandler,
+ IPackageManager packageManager, PackageManager packageManagerClient,
LightsManager lightsManager, NotificationListeners notificationListeners,
NotificationAssistants notificationAssistants, ConditionProviders conditionProviders,
ICompanionDeviceManager companionManager, SnoozeHelper snoozeHelper,
@@ -1784,7 +1793,8 @@
ActivityManager activityManager, GroupHelper groupHelper, IActivityManager am,
UsageStatsManagerInternal appUsageStats, DevicePolicyManagerInternal dpm,
IUriGrantsManager ugm, UriGrantsManagerInternal ugmInternal, AppOpsManager appOps,
- UserManager userManager) {
+ UserManager userManager, NotificationHistoryManager historyManager) {
+ mHandler = handler;
Resources resources = getContext().getResources();
mMaxPackageEnqueueRate = Settings.Global.getFloat(getContext().getContentResolver(),
Settings.Global.MAX_NOTIFICATION_ENQUEUE_RATE,
@@ -1810,7 +1820,6 @@
mPlatformCompat = IPlatformCompat.Stub.asInterface(
ServiceManager.getService(Context.PLATFORM_COMPAT_SERVICE));
- mHandler = new WorkerHandler(looper);
mUiHandler = new Handler(UiThread.get().getLooper());
String[] extractorNames;
try {
@@ -1869,6 +1878,7 @@
extractorNames);
mSnoozeHelper = snoozeHelper;
mGroupHelper = groupHelper;
+ mHistoryManager = historyManager;
// This is a ManagedServices object that keeps track of the listeners.
mListeners = notificationListeners;
@@ -1966,7 +1976,9 @@
final File systemDir = new File(Environment.getDataDirectory(), "system");
mRankingThread.start();
- init(Looper.myLooper(), new RankingHandlerWorker(mRankingThread.getLooper()),
+ WorkerHandler handler = new WorkerHandler(Looper.myLooper());
+
+ init(handler, new RankingHandlerWorker(mRankingThread.getLooper()),
AppGlobals.getPackageManager(), getContext().getPackageManager(),
getLocalService(LightsManager.class),
new NotificationListeners(AppGlobals.getPackageManager()),
@@ -1983,7 +1995,8 @@
UriGrantsManager.getService(),
LocalServices.getService(UriGrantsManagerInternal.class),
(AppOpsManager) getContext().getSystemService(Context.APP_OPS_SERVICE),
- getContext().getSystemService(UserManager.class));
+ getContext().getSystemService(UserManager.class),
+ new NotificationHistoryManager(getContext(), handler));
// register for various Intents
IntentFilter filter = new IntentFilter();
@@ -2036,19 +2049,26 @@
}
private void registerDeviceConfigChange() {
+ mDeviceConfigChangedListener = properties -> {
+ if (!DeviceConfig.NAMESPACE_SYSTEMUI.equals(properties.getNamespace())) {
+ return;
+ }
+ if (properties.getKeyset()
+ .contains(SystemUiDeviceConfigFlags.NAS_DEFAULT_SERVICE)) {
+ mAssistants.allowAdjustmentType(Adjustment.KEY_IMPORTANCE);
+ mAssistants.resetDefaultAssistantsIfNecessary();
+ }
+ };
DeviceConfig.addOnPropertiesChangedListener(
DeviceConfig.NAMESPACE_SYSTEMUI,
- getContext().getMainExecutor(),
- (properties) -> {
- if (!DeviceConfig.NAMESPACE_SYSTEMUI.equals(properties.getNamespace())) {
- return;
- }
- if (properties.getKeyset()
- .contains(SystemUiDeviceConfigFlags.NAS_DEFAULT_SERVICE)) {
- mAssistants.allowAdjustmentType(Adjustment.KEY_IMPORTANCE);
- mAssistants.resetDefaultAssistantsIfNecessary();
- }
- });
+ new HandlerExecutor(mHandler),
+ mDeviceConfigChangedListener);
+ }
+
+ void unregisterDeviceConfigChange() {
+ if (mDeviceConfigChangedListener != null) {
+ DeviceConfig.removeOnPropertiesChangedListener(mDeviceConfigChangedListener);
+ }
}
private GroupHelper getGroupHelper() {
@@ -2134,10 +2154,21 @@
mListeners.onBootPhaseAppsCanStart();
mAssistants.onBootPhaseAppsCanStart();
mConditionProviders.onBootPhaseAppsCanStart();
+ mHistoryManager.onBootPhaseAppsCanStart();
registerDeviceConfigChange();
}
}
+ @Override
+ public void onUnlockUser(@NonNull UserInfo userInfo) {
+ mHandler.post(() -> mHistoryManager.onUserUnlocked(userInfo.id));
+ }
+
+ @Override
+ public void onStopUser(@NonNull UserInfo userInfo) {
+ mHandler.post(() -> mHistoryManager.onUserStopped(userInfo.id));
+ }
+
@GuardedBy("mNotificationLock")
private void updateListenerHintsLocked() {
final int hints = calculateHints();
@@ -2449,10 +2480,56 @@
mAppUsageStats.reportInterruptiveNotification(r.sbn.getPackageName(),
r.getChannel().getId(),
getRealUserId(r.sbn.getUserId()));
+ mHistoryManager.addNotification(new HistoricalNotification.Builder()
+ .setPackage(r.sbn.getPackageName())
+ .setUid(r.sbn.getUid())
+ .setChannelId(r.getChannel().getId())
+ .setChannelName(r.getChannel().getName().toString())
+ .setPostedTimeMs(r.sbn.getPostTime())
+ .setTitle(getHistoryTitle(r.getNotification()))
+ .setText(getHistoryText(
+ r.sbn.getPackageContext(getContext()), r.getNotification()))
+ .setIcon(r.getNotification().getSmallIcon())
+ .build());
r.setRecordedInterruption(true);
}
}
+ private String getHistoryTitle(Notification n) {
+ CharSequence title = null;
+ if (n.extras != null) {
+ title = n.extras.getCharSequence(Notification.EXTRA_TITLE);
+ }
+ return title == null? null : String.valueOf(title);
+ }
+
+ /**
+ * Returns the appropriate substring for this notification based on the style of notification.
+ */
+ private String getHistoryText(Context appContext, Notification n) {
+ CharSequence text = null;
+ if (n.extras != null) {
+ text = n.extras.getCharSequence(Notification.EXTRA_TEXT);
+
+ Notification.Builder nb = Notification.Builder.recoverBuilder(appContext, n);
+
+ if (nb.getStyle() instanceof Notification.BigTextStyle) {
+ text = ((Notification.BigTextStyle) nb.getStyle()).getBigText();
+ } else if (nb.getStyle() instanceof Notification.MessagingStyle) {
+ Notification.MessagingStyle ms = (Notification.MessagingStyle) nb.getStyle();
+ final List<Notification.MessagingStyle.Message> messages = ms.getMessages();
+ if (messages != null && messages.size() > 0) {
+ text = messages.get(messages.size() - 1).getText();
+ }
+ }
+
+ if (TextUtils.isEmpty(text)) {
+ text = n.extras.getCharSequence(Notification.EXTRA_TEXT);
+ }
+ }
+ return text == null ? null : String.valueOf(text);
+ }
+
/**
* Report to usage stats that the user interacted with the notification.
* @param r notification record
@@ -3343,10 +3420,9 @@
/**
* System-only API for getting a list of recent (cleared, no longer shown) notifications.
- *
- * Requires ACCESS_NOTIFICATIONS which is signature|system.
*/
@Override
+ @RequiresPermission(android.Manifest.permission.ACCESS_NOTIFICATIONS)
public StatusBarNotification[] getHistoricalNotifications(String callingPkg, int count) {
// enforce() will ensure the calling uid has the correct permission
getContext().enforceCallingOrSelfPermission(
@@ -3367,6 +3443,29 @@
}
/**
+ * System-only API for getting a list of historical notifications. May contain multiple days
+ * of notifications.
+ */
+ @Override
+ @WorkerThread
+ @RequiresPermission(android.Manifest.permission.ACCESS_NOTIFICATIONS)
+ public NotificationHistory getNotificationHistory(String callingPkg) {
+ // enforce() will ensure the calling uid has the correct permission
+ getContext().enforceCallingOrSelfPermission(
+ android.Manifest.permission.ACCESS_NOTIFICATIONS,
+ "NotificationManagerService.getNotificationHistory");
+ int uid = Binder.getCallingUid();
+
+ // noteOp will check to make sure the callingPkg matches the uid
+ if (mAppOps.noteOpNoThrow(AppOpsManager.OP_ACCESS_NOTIFICATIONS, uid, callingPkg)
+ == AppOpsManager.MODE_ALLOWED) {
+ IntArray currentUserIds = mUserProfiles.getCurrentProfileIds();
+ return mHistoryManager.readNotificationHistory(currentUserIds.toArray());
+ }
+ return new NotificationHistory();
+ }
+
+ /**
* Register a listener binder directly with the notification manager.
*
* Only works with system callers. Apps should extend
@@ -6831,7 +6930,7 @@
}
}
- private void handleOnPackageChanged(boolean removingPackage, int changeUserId,
+ void handleOnPackageChanged(boolean removingPackage, int changeUserId,
String[] pkgList, int[] uidList) {
boolean preferencesChanged = removingPackage;
mListeners.onPackagesChanged(removingPackage, pkgList, uidList);
@@ -6839,6 +6938,14 @@
mConditionProviders.onPackagesChanged(removingPackage, pkgList, uidList);
preferencesChanged |= mPreferencesHelper.onPackagesChanged(
removingPackage, changeUserId, pkgList, uidList);
+ if (removingPackage) {
+ int size = Math.min(pkgList.length, uidList.length);
+ for (int i = 0; i < size; i++) {
+ final String pkg = pkgList[i];
+ final int uid = uidList[i];
+ mHistoryManager.onPackageRemoved(UserHandle.getUserId(uid), pkg);
+ }
+ }
if (preferencesChanged) {
handleSavePolicyFile();
}
@@ -7673,7 +7780,8 @@
protected boolean isUidSystemOrPhone(int uid) {
final int appid = UserHandle.getAppId(uid);
- return (appid == Process.SYSTEM_UID || appid == Process.PHONE_UID || uid == 0);
+ return (appid == Process.SYSTEM_UID || appid == Process.PHONE_UID
+ || uid == Process.ROOT_UID);
}
// TODO: Most calls should probably move to isCallerSystem.
@@ -7682,7 +7790,8 @@
}
private void checkCallerIsSystemOrShell() {
- if (Binder.getCallingUid() == Process.SHELL_UID) {
+ int callingUid = Binder.getCallingUid();
+ if (callingUid == Process.SHELL_UID || callingUid == Process.ROOT_UID) {
return;
}
checkCallerIsSystem();
@@ -7696,7 +7805,8 @@
}
private void checkCallerIsSystemOrSystemUiOrShell() {
- if (Binder.getCallingUid() == Process.SHELL_UID) {
+ int callingUid = Binder.getCallingUid();
+ if (callingUid == Process.SHELL_UID || callingUid == Process.ROOT_UID) {
return;
}
if (isCallerSystemOrPhone()) {
@@ -7771,6 +7881,9 @@
}
private void checkCallerIsSameApp(String pkg, int uid, int userId) {
+ if (uid == Process.ROOT_UID && ROOT_PKG.equals(pkg)) {
+ return;
+ }
try {
ApplicationInfo ai = mPackageManager.getApplicationInfo(
pkg, 0, userId);
@@ -8162,7 +8275,7 @@
try {
assistant.onAllowedAdjustmentsChanged();
} catch (RemoteException ex) {
- Slog.e(TAG, "unable to notify assistant (capabilities): " + assistant, ex);
+ Slog.e(TAG, "unable to notify assistant (capabilities): " + info, ex);
}
}
@@ -8172,7 +8285,7 @@
try {
assistant.onNotificationsSeen(keys);
} catch (RemoteException ex) {
- Slog.e(TAG, "unable to notify assistant (seen): " + assistant, ex);
+ Slog.e(TAG, "unable to notify assistant (seen): " + info, ex);
}
}
@@ -8478,7 +8591,7 @@
listener.onStatusBarIconsBehaviorChanged(hideSilentStatusIcons);
} catch (RemoteException ex) {
Slog.e(TAG, "unable to notify listener "
- + "(hideSilentStatusIcons): " + listener, ex);
+ + "(hideSilentStatusIcons): " + info, ex);
}
});
}
@@ -8771,7 +8884,7 @@
try {
listener.onNotificationPosted(sbnHolder, rankingUpdate);
} catch (RemoteException ex) {
- Slog.e(TAG, "unable to notify listener (posted): " + listener, ex);
+ Slog.e(TAG, "unable to notify listener (posted): " + info, ex);
}
}
@@ -8785,7 +8898,7 @@
try {
listener.onNotificationRemoved(sbnHolder, rankingUpdate, stats, reason);
} catch (RemoteException ex) {
- Slog.e(TAG, "unable to notify listener (removed): " + listener, ex);
+ Slog.e(TAG, "unable to notify listener (removed): " + info, ex);
}
}
@@ -8795,7 +8908,7 @@
try {
listener.onNotificationRankingUpdate(rankingUpdate);
} catch (RemoteException ex) {
- Slog.e(TAG, "unable to notify listener (ranking update): " + listener, ex);
+ Slog.e(TAG, "unable to notify listener (ranking update): " + info, ex);
}
}
@@ -8804,7 +8917,7 @@
try {
listener.onListenerHintsChanged(hints);
} catch (RemoteException ex) {
- Slog.e(TAG, "unable to notify listener (listener hints): " + listener, ex);
+ Slog.e(TAG, "unable to notify listener (listener hints): " + info, ex);
}
}
@@ -8814,7 +8927,7 @@
try {
listener.onInterruptionFilterChanged(interruptionFilter);
} catch (RemoteException ex) {
- Slog.e(TAG, "unable to notify listener (interruption filter): " + listener, ex);
+ Slog.e(TAG, "unable to notify listener (interruption filter): " + info, ex);
}
}
@@ -8825,7 +8938,7 @@
try {
listener.onNotificationChannelModification(pkg, user, channel, modificationType);
} catch (RemoteException ex) {
- Slog.e(TAG, "unable to notify listener (channel changed): " + listener, ex);
+ Slog.e(TAG, "unable to notify listener (channel changed): " + info, ex);
}
}
@@ -8836,7 +8949,7 @@
try {
listener.onNotificationChannelGroupModification(pkg, user, group, modificationType);
} catch (RemoteException ex) {
- Slog.e(TAG, "unable to notify listener (channel group changed): " + listener, ex);
+ Slog.e(TAG, "unable to notify listener (channel group changed): " + info, ex);
}
}
diff --git a/services/core/java/com/android/server/notification/NotificationShellCmd.java b/services/core/java/com/android/server/notification/NotificationShellCmd.java
index 50f16bc..2b5ba25 100644
--- a/services/core/java/com/android/server/notification/NotificationShellCmd.java
+++ b/services/core/java/com/android/server/notification/NotificationShellCmd.java
@@ -125,9 +125,13 @@
final int callingUid = Binder.getCallingUid();
long identity = Binder.clearCallingIdentity();
try {
- String[] packages = mPm.getPackagesForUid(callingUid);
- if (packages != null && packages.length > 0) {
- callingPackage = packages[0];
+ if (callingUid == Process.ROOT_UID) {
+ callingPackage = NotificationManagerService.ROOT_PKG;
+ } else {
+ String[] packages = mPm.getPackagesForUid(callingUid);
+ if (packages != null && packages.length > 0) {
+ callingPackage = packages[0];
+ }
}
} catch (Exception e) {
Slog.e(TAG, "failed to get caller pkg", e);
diff --git a/services/core/java/com/android/server/notification/SnoozeHelper.java b/services/core/java/com/android/server/notification/SnoozeHelper.java
index 8125d0d..9e32d0e 100644
--- a/services/core/java/com/android/server/notification/SnoozeHelper.java
+++ b/services/core/java/com/android/server/notification/SnoozeHelper.java
@@ -374,9 +374,6 @@
return;
}
NotificationRecord existing = pkgRecords.get(record.getKey());
- if (existing != null && existing.isCanceled) {
- return;
- }
pkgRecords.put(record.getKey(), record);
}
diff --git a/services/core/java/com/android/server/pm/ApexManager.java b/services/core/java/com/android/server/pm/ApexManager.java
index 44c36ee0..1222d9a 100644
--- a/services/core/java/com/android/server/pm/ApexManager.java
+++ b/services/core/java/com/android/server/pm/ApexManager.java
@@ -206,7 +206,14 @@
*
* @return {@code true} upon success, {@code false} if any remote exception occurs
*/
- abstract boolean abortActiveSession();
+ abstract boolean revertActiveSessions();
+
+ /**
+ * Abandons the staged session with the given sessionId.
+ *
+ * @return {@code true} upon success, {@code false} if any remote exception occurs
+ */
+ abstract boolean abortStagedSession(int sessionId) throws PackageManagerException;
/**
* Uninstalls given {@code apexPackage}.
@@ -485,9 +492,9 @@
}
@Override
- boolean abortActiveSession() {
+ boolean revertActiveSessions() {
try {
- mApexService.abortActiveSession();
+ mApexService.revertActiveSessions();
return true;
} catch (RemoteException re) {
Slog.e(TAG, "Unable to contact apexservice", re);
@@ -496,6 +503,21 @@
}
@Override
+ boolean abortStagedSession(int sessionId) throws PackageManagerException {
+ try {
+ mApexService.abortStagedSession(sessionId);
+ return true;
+ } catch (RemoteException re) {
+ Slog.e(TAG, "Unable to contact apexservice", re);
+ return false;
+ } catch (Exception e) {
+ throw new PackageManagerException(
+ PackageInstaller.SessionInfo.STAGED_SESSION_VERIFICATION_FAILED,
+ "Failed to abort staged session : " + e.getMessage());
+ }
+ }
+
+ @Override
boolean uninstallApex(String apexPackagePath) {
try {
mApexService.unstagePackages(Collections.singletonList(apexPackagePath));
@@ -678,7 +700,12 @@
}
@Override
- boolean abortActiveSession() {
+ boolean revertActiveSessions() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ boolean abortStagedSession(int sessionId) throws PackageManagerException {
throw new UnsupportedOperationException();
}
diff --git a/services/core/java/com/android/server/pm/BackgroundDexOptService.java b/services/core/java/com/android/server/pm/BackgroundDexOptService.java
index 08e55d3..c712431 100644
--- a/services/core/java/com/android/server/pm/BackgroundDexOptService.java
+++ b/services/core/java/com/android/server/pm/BackgroundDexOptService.java
@@ -34,8 +34,6 @@
import android.os.SystemProperties;
import android.os.UserHandle;
import android.os.storage.StorageManager;
-import android.provider.DeviceConfig;
-import android.text.TextUtils;
import android.util.ArraySet;
import android.util.Log;
import android.util.StatsLog;
@@ -86,12 +84,6 @@
// Used for calculating space threshold for downgrading unused apps.
private static final int LOW_THRESHOLD_MULTIPLIER_FOR_DOWNGRADE = 2;
- private static final int DEFAULT_INACTIVE_APP_THRESHOLD_DAYS = 10;
-
- private static final String DOWNGRADE_UNUSED_APPS_ENABLED = "downgrade_unused_apps_enabled";
- private static final String INACTIVE_APP_THRESHOLD_DAYS = "inactive_app_threshold_days";
- private static final String LOW_STORAGE_MULTIPLIER_FOR_DOWNGRADE =
- "low_storage_threshold_multiplier_for_downgrade";
/**
* Set of failed packages remembered across job runs.
@@ -111,6 +103,8 @@
private final AtomicBoolean mExitPostBootUpdate = new AtomicBoolean(false);
private final File mDataDir = Environment.getDataDirectory();
+ private static final long mDowngradeUnusedAppsThresholdInMillis =
+ getDowngradeUnusedAppsThresholdInMillis();
public static void schedule(Context context) {
if (isBackgroundDexoptDisabled()) {
@@ -352,14 +346,14 @@
// Only downgrade apps when space is low on device.
// Threshold is selected above the lowStorageThreshold so that we can pro-actively clean
// up disk before user hits the actual lowStorageThreshold.
- final long lowStorageThresholdForDowngrade = getLowThresholdMultiplierForDowngrade()
+ final long lowStorageThresholdForDowngrade = LOW_THRESHOLD_MULTIPLIER_FOR_DOWNGRADE
* lowStorageThreshold;
boolean shouldDowngrade = shouldDowngrade(lowStorageThresholdForDowngrade);
Log.d(TAG, "Should Downgrade " + shouldDowngrade);
if (shouldDowngrade) {
Set<String> unusedPackages =
- pm.getUnusedPackages(getDowngradeUnusedAppsThresholdInMillis());
- Log.d(TAG, "Unused Packages " + String.join(",", unusedPackages));
+ pm.getUnusedPackages(mDowngradeUnusedAppsThresholdInMillis);
+ Log.d(TAG, "Unsused Packages " + String.join(",", unusedPackages));
if (!unusedPackages.isEmpty()) {
for (String pkg : unusedPackages) {
@@ -368,9 +362,12 @@
// Should be aborted by the scheduler.
return abortCode;
}
- if (downgradePackage(pm, pkg)) {
+ if (downgradePackage(pm, pkg, /*isForPrimaryDex*/ true)) {
updatedPackages.add(pkg);
}
+ if (supportSecondaryDex) {
+ downgradePackage(pm, pkg, /*isForPrimaryDex*/ false);
+ }
}
pkgs = new ArraySet<>(pkgs);
@@ -418,45 +415,39 @@
* Try to downgrade the package to a smaller compilation filter.
* eg. if the package is in speed-profile the package will be downgraded to verify.
* @param pm PackageManagerService
- * @param pkg The package to be downgraded
- * @return true if the package was downgraded
+ * @param pkg The package to be downgraded.
+ * @param isForPrimaryDex. Apps can have several dex file, primary and secondary.
+ * @return true if the package was downgraded.
*/
- private boolean downgradePackage(PackageManagerService pm, String pkg) {
+ private boolean downgradePackage(PackageManagerService pm, String pkg,
+ boolean isForPrimaryDex) {
Log.d(TAG, "Downgrading " + pkg);
- boolean downgradedPrimary = false;
+ boolean dex_opt_performed = false;
int reason = PackageManagerService.REASON_INACTIVE_PACKAGE_DOWNGRADE;
int dexoptFlags = DexoptOptions.DEXOPT_BOOT_COMPLETE
| DexoptOptions.DEXOPT_IDLE_BACKGROUND_JOB
| DexoptOptions.DEXOPT_DOWNGRADE;
-
long package_size_before = getPackageSize(pm, pkg);
- // An aggressive downgrade deletes the oat files.
- boolean aggressive = false;
- // This applies for system apps or if packages location is not a directory, i.e.
- // monolithic install.
- if (!pm.canHaveOatDir(pkg)) {
- // For apps that don't have the oat directory, instead of downgrading,
- // remove their compiler artifacts from dalvik cache.
- pm.deleteOatArtifactsOfPackage(pkg);
- aggressive = true;
- downgradedPrimary = true;
- } else {
- downgradedPrimary = performDexOptPrimary(pm, pkg, reason, dexoptFlags);
- if (supportSecondaryDex()) {
- performDexOptSecondary(pm, pkg, reason, dexoptFlags);
+ if (isForPrimaryDex) {
+ // This applies for system apps or if packages location is not a directory, i.e.
+ // monolithic install.
+ if (!pm.canHaveOatDir(pkg)) {
+ // For apps that don't have the oat directory, instead of downgrading,
+ // remove their compiler artifacts from dalvik cache.
+ pm.deleteOatArtifactsOfPackage(pkg);
+ } else {
+ dex_opt_performed = performDexOptPrimary(pm, pkg, reason, dexoptFlags);
}
+ } else {
+ dex_opt_performed = performDexOptSecondary(pm, pkg, reason, dexoptFlags);
}
- // This metric aims to log the storage savings when downgrading.
- // The way disk size is measured using getPackageSize only looks at the primary apks.
- // Any logs that are due to secondary dex files will show 0% size reduction and pollute
- // the metrics.
- if (downgradedPrimary) {
+ if (dex_opt_performed) {
StatsLog.write(StatsLog.APP_DOWNGRADED, pkg, package_size_before,
- getPackageSize(pm, pkg), aggressive);
+ getPackageSize(pm, pkg), /*aggressive=*/ false);
}
- return downgradedPrimary;
+ return dex_opt_performed;
}
private boolean supportSecondaryDex() {
@@ -480,7 +471,7 @@
* concurrent jobs because PackageDexOptimizer.performDexOpt is synchronized.
* @param pm An instance of PackageManagerService
* @param pkg The package to be downgraded.
- * @param isForPrimaryDex Apps can have several dex file, primary and secondary.
+ * @param isForPrimaryDex. Apps can have several dex file, primary and secondary.
* @return true if the package was downgraded.
*/
private boolean optimizePackage(PackageManagerService pm, String pkg,
@@ -597,6 +588,12 @@
// the checks above. This check is not "live" - the value is determined by a background
// restart with a period of ~1 minute.
PackageManagerService pm = (PackageManagerService)ServiceManager.getService("package");
+ if (pm.isStorageLow()) {
+ if (DEBUG_DEXOPT) {
+ Log.i(TAG, "Low storage, skipping this run");
+ }
+ return false;
+ }
final ArraySet<String> pkgs = pm.getOptimizablePackages();
if (pkgs.isEmpty()) {
@@ -646,77 +643,17 @@
}
private static long getDowngradeUnusedAppsThresholdInMillis() {
- long defaultValue = Long.MAX_VALUE;
- if (isDowngradeFeatureEnabled()) {
- return getInactiveAppsThresholdMillis();
- }
final String sysPropKey = "pm.dexopt.downgrade_after_inactive_days";
String sysPropValue = SystemProperties.get(sysPropKey);
if (sysPropValue == null || sysPropValue.isEmpty()) {
Log.w(TAG, "SysProp " + sysPropKey + " not set");
- return defaultValue;
+ return Long.MAX_VALUE;
}
- try {
- return TimeUnit.DAYS.toMillis(Long.parseLong(sysPropValue));
- } catch (NumberFormatException e) {
- Log.w(TAG, "Couldn't parse long for pm.dexopt.downgrade_after_inactive_days: "
- + sysPropValue + ". Returning default value instead.");
- return defaultValue;
- }
+ return TimeUnit.DAYS.toMillis(Long.parseLong(sysPropValue));
}
private static boolean isBackgroundDexoptDisabled() {
return SystemProperties.getBoolean("pm.dexopt.disable_bg_dexopt" /* key */,
false /* default */);
}
-
- private static boolean isDowngradeFeatureEnabled() {
- // DeviceConfig enables the control of on device features via remotely configurable flags,
- // compared to SystemProperties which is only a way of sharing info system-widely, but are
- // not configurable on the server-side.
- String downgradeUnusedAppsEnabledFlag =
- DeviceConfig.getProperty(
- DeviceConfig.NAMESPACE_PACKAGE_MANAGER_SERVICE,
- DOWNGRADE_UNUSED_APPS_ENABLED);
- return !TextUtils.isEmpty(downgradeUnusedAppsEnabledFlag)
- && Boolean.parseBoolean(downgradeUnusedAppsEnabledFlag);
- }
-
- private static long getInactiveAppsThresholdMillis() {
- long defaultValue = TimeUnit.DAYS.toMillis(DEFAULT_INACTIVE_APP_THRESHOLD_DAYS);
- String inactiveAppThresholdDaysFlag =
- DeviceConfig.getProperty(DeviceConfig.NAMESPACE_PACKAGE_MANAGER_SERVICE,
- INACTIVE_APP_THRESHOLD_DAYS);
- if (!TextUtils.isEmpty(inactiveAppThresholdDaysFlag)) {
- try {
- return TimeUnit.DAYS.toMillis(Long.parseLong(inactiveAppThresholdDaysFlag));
- } catch (NumberFormatException e) {
- Log.w(TAG, "Couldn't parse long for " + INACTIVE_APP_THRESHOLD_DAYS + " flag: "
- + inactiveAppThresholdDaysFlag + ". Returning default value instead.");
- return defaultValue;
- }
- }
- return defaultValue;
- }
-
- private static int getLowThresholdMultiplierForDowngrade() {
- int defaultValue = LOW_THRESHOLD_MULTIPLIER_FOR_DOWNGRADE;
- if (isDowngradeFeatureEnabled()) {
- String lowStorageThresholdMultiplierFlag =
- DeviceConfig.getProperty(DeviceConfig.NAMESPACE_PACKAGE_MANAGER_SERVICE,
- LOW_STORAGE_MULTIPLIER_FOR_DOWNGRADE);
- if (!TextUtils.isEmpty(lowStorageThresholdMultiplierFlag)) {
- try {
- return Integer.parseInt(lowStorageThresholdMultiplierFlag);
- } catch (NumberFormatException e) {
- Log.w(TAG, "Couldn't parse long for "
- + LOW_STORAGE_MULTIPLIER_FOR_DOWNGRADE + " flag: "
- + lowStorageThresholdMultiplierFlag
- + ". Returning default value instead.");
- return defaultValue;
- }
- }
- }
- return defaultValue;
- }
}
diff --git a/services/core/java/com/android/server/pm/PackageAbiHelperImpl.java b/services/core/java/com/android/server/pm/PackageAbiHelperImpl.java
index 259200b..7e47800 100644
--- a/services/core/java/com/android/server/pm/PackageAbiHelperImpl.java
+++ b/services/core/java/com/android/server/pm/PackageAbiHelperImpl.java
@@ -19,6 +19,7 @@
import static android.content.pm.PackageManager.INSTALL_FAILED_INTERNAL_ERROR;
import static android.content.pm.PackageParser.isApkFile;
import static android.os.Trace.TRACE_TAG_PACKAGE_MANAGER;
+import static android.os.incremental.IncrementalManager.isIncrementalPath;
import static com.android.internal.content.NativeLibraryHelper.LIB64_DIR_NAME;
import static com.android.internal.content.NativeLibraryHelper.LIB_DIR_NAME;
@@ -309,6 +310,7 @@
final String nativeLibraryRootStr = initialLibraryPaths.nativeLibraryRootDir;
final boolean useIsaSpecificSubdirs = initialLibraryPaths.nativeLibraryRootRequiresIsa;
+ final boolean onIncremental = isIncrementalPath(pkg.codePath);
String primaryCpuAbi = null;
String secondaryCpuAbi = null;
@@ -341,10 +343,18 @@
int abi64 = PackageManager.NO_NATIVE_LIBRARIES;
if (Build.SUPPORTED_32_BIT_ABIS.length > 0) {
if (extractLibs) {
- Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "copyNativeBinaries");
- abi32 = NativeLibraryHelper.copyNativeBinariesForSupportedAbi(handle,
- nativeLibraryRoot, Build.SUPPORTED_32_BIT_ABIS,
- useIsaSpecificSubdirs);
+ if (onIncremental) {
+ Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER,
+ "incrementalNativeBinaries");
+ abi32 = NativeLibraryHelper.configureNativeBinariesForSupportedAbi(pkg,
+ handle, nativeLibraryRoot, Build.SUPPORTED_32_BIT_ABIS,
+ useIsaSpecificSubdirs);
+ } else {
+ Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "copyNativeBinaries");
+ abi32 = NativeLibraryHelper.copyNativeBinariesForSupportedAbi(handle,
+ nativeLibraryRoot, Build.SUPPORTED_32_BIT_ABIS,
+ useIsaSpecificSubdirs);
+ }
} else {
Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "findSupportedAbi");
abi32 = NativeLibraryHelper.findSupportedAbi(
@@ -364,10 +374,18 @@
if (Build.SUPPORTED_64_BIT_ABIS.length > 0) {
if (extractLibs) {
- Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "copyNativeBinaries");
- abi64 = NativeLibraryHelper.copyNativeBinariesForSupportedAbi(handle,
- nativeLibraryRoot, Build.SUPPORTED_64_BIT_ABIS,
- useIsaSpecificSubdirs);
+ if (onIncremental) {
+ Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER,
+ "incrementalNativeBinaries");
+ abi64 = NativeLibraryHelper.configureNativeBinariesForSupportedAbi(pkg,
+ handle, nativeLibraryRoot, Build.SUPPORTED_64_BIT_ABIS,
+ useIsaSpecificSubdirs);
+ } else {
+ Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "copyNativeBinaries");
+ abi64 = NativeLibraryHelper.copyNativeBinariesForSupportedAbi(handle,
+ nativeLibraryRoot, Build.SUPPORTED_64_BIT_ABIS,
+ useIsaSpecificSubdirs);
+ }
} else {
Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "findSupportedAbi");
abi64 = NativeLibraryHelper.findSupportedAbi(
@@ -418,9 +436,15 @@
final int copyRet;
if (extractLibs) {
- Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "copyNativeBinaries");
- copyRet = NativeLibraryHelper.copyNativeBinariesForSupportedAbi(handle,
- nativeLibraryRoot, abiList, useIsaSpecificSubdirs);
+ if (onIncremental) {
+ Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "incrementalNativeBinaries");
+ copyRet = NativeLibraryHelper.configureNativeBinariesForSupportedAbi(pkg,
+ handle, nativeLibraryRoot, abiList, useIsaSpecificSubdirs);
+ } else {
+ Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "copyNativeBinaries");
+ copyRet = NativeLibraryHelper.copyNativeBinariesForSupportedAbi(handle,
+ nativeLibraryRoot, abiList, useIsaSpecificSubdirs);
+ }
} else {
Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "findSupportedAbi");
copyRet = NativeLibraryHelper.findSupportedAbi(handle, abiList);
diff --git a/services/core/java/com/android/server/pm/PackageInstallerService.java b/services/core/java/com/android/server/pm/PackageInstallerService.java
index 93249e9..dceca0a 100644
--- a/services/core/java/com/android/server/pm/PackageInstallerService.java
+++ b/services/core/java/com/android/server/pm/PackageInstallerService.java
@@ -494,7 +494,7 @@
}
// Only apps with INSTALL_PACKAGES are allowed to set an installer that is not the
// caller.
- if (!requestedInstallerPackageName.equals(installerPackageName)) {
+ if (!TextUtils.equals(requestedInstallerPackageName, installerPackageName)) {
if (mContext.checkCallingOrSelfPermission(Manifest.permission.INSTALL_PACKAGES)
!= PackageManager.PERMISSION_GRANTED) {
mAppOps.checkPackage(callingUid, requestedInstallerPackageName);
diff --git a/services/core/java/com/android/server/pm/PackageInstallerSession.java b/services/core/java/com/android/server/pm/PackageInstallerSession.java
index a09657b..4852947 100644
--- a/services/core/java/com/android/server/pm/PackageInstallerSession.java
+++ b/services/core/java/com/android/server/pm/PackageInstallerSession.java
@@ -133,6 +133,7 @@
private static final int MSG_COMMIT = 1;
private static final int MSG_ON_PACKAGE_INSTALLED = 2;
private static final int MSG_SEAL = 3;
+ private static final int MSG_TRANSFER = 4;
/** XML constants used for persisting a session */
static final String TAG_SESSION = "session";
@@ -332,6 +333,9 @@
private final Handler.Callback mHandlerCallback = new Handler.Callback() {
@Override
public boolean handleMessage(Message msg) {
+ SomeArgs args;
+ String packageName;
+ IntentSender statusReceiver;
switch (msg.what) {
case MSG_SEAL:
handleSeal((IntentSender) msg.obj);
@@ -339,12 +343,20 @@
case MSG_COMMIT:
handleCommit();
break;
+ case MSG_TRANSFER:
+ args = (SomeArgs) msg.obj;
+ packageName = (String) args.arg1;
+ statusReceiver = (IntentSender) args.arg2;
+ args.recycle();
+
+ handleTransfer(statusReceiver, packageName);
+ break;
case MSG_ON_PACKAGE_INSTALLED:
- final SomeArgs args = (SomeArgs) msg.obj;
- final String packageName = (String) args.arg1;
+ args = (SomeArgs) msg.obj;
+ packageName = (String) args.arg1;
final String message = (String) args.arg2;
final Bundle extras = (Bundle) args.arg3;
- final IntentSender statusReceiver = (IntentSender) args.arg4;
+ statusReceiver = (IntentSender) args.arg4;
final int returnCode = args.argi1;
args.recycle();
@@ -378,7 +390,7 @@
* Checks if the permissions still need to be confirmed.
*
* <p>This is dependant on the identity of the installer, hence this cannot be cached if the
- * installer might still {@link #transfer(String) change}.
+ * installer might still {@link #transfer(String, IntentSender) change}.
*
* @return {@code true} iff we need to ask to confirm the permissions?
*/
@@ -959,9 +971,13 @@
assertPreparedAndNotDestroyedLocked("commit");
assertNoWriteFileTransfersOpenLocked();
- if (forTransfer) {
+ final boolean enforceInstallPackages = forTransfer
+ || (android.provider.Settings.Secure.getInt(mContext.getContentResolver(),
+ android.provider.Settings.Secure.SECURE_FRP_MODE, 0) == 1);
+ if (enforceInstallPackages) {
mContext.enforceCallingOrSelfPermission(Manifest.permission.INSTALL_PACKAGES, null);
-
+ }
+ if (forTransfer) {
if (mInstallerUid == mOriginalInstallerUid) {
throw new IllegalArgumentException("Session has not been transferred");
}
@@ -1179,13 +1195,11 @@
}
}
- @Override
- public void transfer(String packageName) {
- Preconditions.checkNotNull(packageName);
-
+ private int assertCanBeTransferredAndReturnNewOwner(String packageName)
+ throws PackageManager.NameNotFoundException {
ApplicationInfo newOwnerAppInfo = mPm.getApplicationInfo(packageName, 0, userId);
if (newOwnerAppInfo == null) {
- throw new ParcelableException(new PackageManager.NameNotFoundException(packageName));
+ throw new PackageManager.NameNotFoundException(packageName);
}
if (PackageManager.PERMISSION_GRANTED != mPm.checkUidPermission(
@@ -1200,31 +1214,104 @@
throw new SecurityException("Can only transfer sessions that use public options");
}
- List<PackageInstallerSession> childSessions = getChildSessions();
+ return newOwnerAppInfo.uid;
+ }
+
+ @Override
+ public void transfer(String packageName, IntentSender statusReceiver) {
+ Preconditions.checkNotNull(statusReceiver);
+ Preconditions.checkNotNull(packageName);
+
+ try {
+ assertCanBeTransferredAndReturnNewOwner(packageName);
+ } catch (PackageManager.NameNotFoundException e) {
+ throw new ParcelableException(e);
+ }
synchronized (mLock) {
assertCallerIsOwnerOrRootLocked();
assertPreparedAndNotSealedLocked("transfer");
+ }
- try {
- sealAndValidateLocked(childSessions);
- } catch (PackageManagerException e) {
- throw new IllegalArgumentException("Package is not valid", e);
+ final SomeArgs args = SomeArgs.obtain();
+ args.arg1 = packageName;
+ args.arg2 = statusReceiver;
+
+ mHandler.obtainMessage(MSG_TRANSFER, args).sendToTarget();
+ }
+
+ private void handleTransfer(IntentSender statusReceiver, String packageName) {
+ List<PackageInstallerSession> childSessions = getChildSessions();
+
+ try {
+ final int uid = assertCanBeTransferredAndReturnNewOwner(packageName);
+
+ synchronized (mLock) {
+ assertPreparedAndNotSealedLocked("transfer");
+
+ try {
+ sealAndValidateLocked(childSessions);
+ } catch (PackageManagerException e) {
+ throw new IllegalArgumentException("Package is not valid", e);
+ }
+
+ if (!mPackageName.equals(mInstallSource.installerPackageName)) {
+ throw new SecurityException(
+ "Can only transfer sessions that update the original installer");
+ }
+
+ mInstallerUid = uid;
+ mInstallSource = InstallSource.create(packageName, null, packageName, false);
}
-
- if (!mPackageName.equals(mInstallSource.installerPackageName)) {
- throw new SecurityException("Can only transfer sessions that update the original "
- + "installer");
- }
-
- mInstallerUid = newOwnerAppInfo.uid;
- mInstallSource = InstallSource.create(packageName, null, packageName, false);
+ } catch (PackageManager.NameNotFoundException e) {
+ onSessionTransferStatus(statusReceiver, packageName,
+ PackageInstaller.STATUS_FAILURE_NAME_NOT_FOUND, e.getMessage());
+ return;
+ } catch (IllegalStateException e) {
+ onSessionTransferStatus(statusReceiver, packageName,
+ PackageInstaller.STATUS_FAILURE_ILLEGAL_STATE, e.getMessage());
+ return;
+ } catch (SecurityException e) {
+ onSessionTransferStatus(statusReceiver, packageName,
+ PackageInstaller.STATUS_FAILURE_SECURITY, e.getMessage());
+ return;
+ } catch (Throwable e) {
+ onSessionTransferStatus(statusReceiver, packageName, PackageInstaller.STATUS_FAILURE,
+ e.getMessage());
+ return;
}
// Persist the fact that we've sealed ourselves to prevent
// mutations of any hard links we create. We do this without holding
// the session lock, since otherwise it's a lock inversion.
mCallback.onSessionSealedBlocking(this);
+
+ // Report success.
+ onSessionTransferStatus(statusReceiver, packageName, PackageInstaller.STATUS_SUCCESS, null);
+ }
+
+ private void onSessionTransferStatus(IntentSender statusReceiver, String otherPackageName,
+ int status, String statusMessage) {
+ final String packageName;
+ synchronized (mLock) {
+ packageName = mPackageName;
+ }
+
+ final Intent fillIn = new Intent();
+ fillIn.putExtra(PackageInstaller.EXTRA_PACKAGE_NAME, packageName);
+ fillIn.putExtra(PackageInstaller.EXTRA_SESSION_ID, sessionId);
+ fillIn.putExtra(PackageInstaller.EXTRA_OTHER_PACKAGE_NAME, otherPackageName);
+
+ fillIn.putExtra(PackageInstaller.EXTRA_STATUS, status);
+ if (!TextUtils.isEmpty(statusMessage)) {
+ fillIn.putExtra(PackageInstaller.EXTRA_STATUS_MESSAGE, statusMessage);
+ }
+
+ try {
+ statusReceiver.sendIntent(mContext, 0, fillIn, null, null);
+ } catch (IntentSender.SendIntentException ignored) {
+ }
+
}
private void handleCommit() {
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index eebc8d7..4e0e4ff 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -87,6 +87,7 @@
import static android.content.pm.PackageManager.RESTRICTION_NONE;
import static android.content.pm.PackageParser.isApkFile;
import static android.os.Trace.TRACE_TAG_PACKAGE_MANAGER;
+import static android.os.incremental.IncrementalManager.isIncrementalPath;
import static android.os.storage.StorageManager.FLAG_STORAGE_CE;
import static android.os.storage.StorageManager.FLAG_STORAGE_DE;
import static android.os.storage.StorageManager.FLAG_STORAGE_EXTERNAL;
@@ -226,6 +227,7 @@
import android.os.UserHandle;
import android.os.UserManager;
import android.os.UserManagerInternal;
+import android.os.incremental.IncrementalManager;
import android.os.storage.DiskInfo;
import android.os.storage.IStorageManager;
import android.os.storage.StorageEventListener;
@@ -1074,6 +1076,8 @@
private Future<?> mPrepareAppDataFuture;
+ private final IncrementalManager mIncrementalManager;
+
private static class IFVerificationParams {
PackageParser.Package pkg;
boolean replacing;
@@ -1492,7 +1496,6 @@
final @Nullable String mAppPredictionServicePackage;
final @Nullable String mIncidentReportApproverPackage;
final @Nullable String[] mTelephonyPackages;
- final @Nullable String mWifiPackage;
final @NonNull String mServicesSystemSharedLibraryPackageName;
final @NonNull String mSharedSystemSharedLibraryPackageName;
@@ -2361,6 +2364,37 @@
PackageManagerService m = new PackageManagerService(injector, factoryTest, onlyCore);
t.traceEnd(); // "create package manager"
+ injector.getCompatibility().registerListener(SELinuxMMAC.SELINUX_LATEST_CHANGES,
+ packageName -> {
+ synchronized (m.mInstallLock) {
+ final PackageParser.Package pkg;
+ final SharedUserSetting sharedUser;
+ synchronized (m.mLock) {
+ PackageSetting ps = m.mSettings.getPackageLPr(packageName);
+ if (ps == null) {
+ Slog.e(TAG, "Failed to find package setting " + packageName);
+ return;
+ }
+ pkg = ps.pkg;
+ sharedUser = ps.sharedUser;
+ }
+
+ if (pkg == null) {
+ Slog.e(TAG, "Failed to find package " + packageName);
+ return;
+ }
+ final String newSeInfo = SELinuxMMAC.getSeInfo(pkg, sharedUser,
+ m.mInjector.getCompatibility());
+
+ if (!newSeInfo.equals(pkg.applicationInfo.seInfo)) {
+ Slog.i(TAG, "Updating seInfo for package " + packageName + " from: "
+ + pkg.applicationInfo.seInfo + " to: " + newSeInfo);
+ pkg.applicationInfo.seInfo = newSeInfo;
+ m.prepareAppDataAfterInstallLIF(pkg);
+ }
+ }
+ });
+
m.installWhitelistedSystemPackages();
ServiceManager.addService("package", m);
final PackageManagerNative pmn = m.new PackageManagerNative();
@@ -2510,6 +2544,8 @@
mPermissionManager = injector.getPermissionManagerServiceInternal();
mSettings = injector.getSettings();
mPermissionManagerService = (IPermissionManager) ServiceManager.getService("permissionmgr");
+ mIncrementalManager =
+ (IncrementalManager) mContext.getSystemService(Context.INCREMENTAL_SERVICE);
// CHECKSTYLE:ON IndentationCheck
t.traceEnd();
@@ -2974,7 +3010,6 @@
mAppPredictionServicePackage = getAppPredictionServicePackageName();
mIncidentReportApproverPackage = getIncidentReportApproverPackageName();
mTelephonyPackages = getTelephonyPackageNames();
- mWifiPackage = mContext.getString(R.string.config_wifiPackage);
// Now that we know all of the shared libraries, update all clients to have
// the correct library paths.
@@ -8800,6 +8835,7 @@
// Full APK verification can be skipped during certificate collection, only if the file is
// in verified partition, or can be verified on access (when apk verity is enabled). In both
// cases, only data in Signing Block is verified instead of the whole file.
+ // TODO(b/136132412): skip for Incremental installation
final boolean skipVerify = scanSystemPartition
|| (forceCollect && canSkipForcedPackageVerification(pkg));
collectCertificatesLI(pkgSetting, pkg, forceCollect, skipVerify);
@@ -10779,24 +10815,8 @@
pkg.applicationInfo.flags |= ApplicationInfo.FLAG_UPDATED_SYSTEM_APP;
}
- // Apps which share a sharedUserId must be placed in the same selinux domain. If this
- // package is the first app installed as this shared user, set seInfoTargetSdkVersion to its
- // targetSdkVersion. These are later adjusted in PackageManagerService's constructor to be
- // the lowest targetSdkVersion of all apps within the shared user, which corresponds to the
- // least restrictive selinux domain.
- // NOTE: As new packages are installed / updated, the shared user's seinfoTargetSdkVersion
- // will NOT be modified until next boot, even if a lower targetSdkVersion is used. This
- // ensures that all packages continue to run in the same selinux domain.
- final int targetSdkVersion =
- ((sharedUserSetting != null) && (sharedUserSetting.packages.size() != 0)) ?
- sharedUserSetting.seInfoTargetSdkVersion : pkg.applicationInfo.targetSdkVersion;
- // TODO(b/71593002): isPrivileged for sharedUser and appInfo should never be out of sync.
- // They currently can be if the sharedUser apps are signed with the platform key.
- final boolean isPrivileged = (sharedUserSetting != null) ?
- sharedUserSetting.isPrivileged() | pkg.isPrivileged() : pkg.isPrivileged();
-
- pkg.applicationInfo.seInfo = SELinuxMMAC.getSeInfo(pkg, isPrivileged,
- targetSdkVersion);
+ pkg.applicationInfo.seInfo = SELinuxMMAC.getSeInfo(pkg, sharedUserSetting,
+ injector.getCompatibility());
pkg.applicationInfo.seInfoUser = SELinuxUtil.assignSeinfoUser(pkgSetting.readUserState(
userId == UserHandle.USER_ALL ? UserHandle.USER_SYSTEM : userId));
@@ -14677,9 +14697,16 @@
final File afterCodeFile = getNextCodePath(targetDir, pkg.packageName);
if (DEBUG_INSTALL) Slog.d(TAG, "Renaming " + beforeCodeFile + " to " + afterCodeFile);
+ final boolean onIncremental = mIncrementalManager != null
+ && isIncrementalPath(beforeCodeFile.getAbsolutePath());
try {
- Os.rename(beforeCodeFile.getAbsolutePath(), afterCodeFile.getAbsolutePath());
- } catch (ErrnoException e) {
+ if (onIncremental) {
+ mIncrementalManager.rename(beforeCodeFile.getAbsolutePath(),
+ afterCodeFile.getAbsolutePath());
+ } else {
+ Os.rename(beforeCodeFile.getAbsolutePath(), afterCodeFile.getAbsolutePath());
+ }
+ } catch (IOException | ErrnoException e) {
Slog.w(TAG, "Failed to rename", e);
return false;
}
@@ -14739,6 +14766,11 @@
return false;
}
+ String codePath = codeFile.getAbsolutePath();
+ if (mIncrementalManager != null && isIncrementalPath(codePath)) {
+ mIncrementalManager.closeStorage(codePath);
+ }
+
removeCodePathLI(codeFile);
if (resourceFile != null && !FileUtils.contains(codeFile, resourceFile)) {
@@ -15930,6 +15962,8 @@
& PackageManagerService.SCAN_AS_INSTANT_APP) != 0);
final PackageParser.Package pkg = reconciledPkg.pkgSetting.pkg;
final String packageName = pkg.packageName;
+ final boolean onIncremental = mIncrementalManager != null
+ && isIncrementalPath(pkg.codePath);
prepareAppDataAfterInstallLIF(pkg);
if (reconciledPkg.prepareResult.clearCodeCache) {
clearAppDataLIF(pkg, UserHandle.USER_ALL, FLAG_STORAGE_DE | FLAG_STORAGE_CE
@@ -15960,6 +15994,7 @@
// We only need to dexopt if the package meets ALL of the following conditions:
// 1) it is not an instant app or if it is then dexopt is enabled via gservices.
// 2) it is not debuggable.
+ // 3) it is not on Incremental File System.
//
// Note that we do not dexopt instant apps by default. dexopt can take some time to
// complete, so we skip this step during installation. Instead, we'll take extra time
@@ -15970,7 +16005,8 @@
final boolean performDexopt =
(!instantApp || Global.getInt(mContext.getContentResolver(),
Global.INSTANT_APP_DEXOPT_ENABLED, 0) != 0)
- && ((pkg.applicationInfo.flags & ApplicationInfo.FLAG_DEBUGGABLE) == 0);
+ && ((pkg.applicationInfo.flags & ApplicationInfo.FLAG_DEBUGGABLE) == 0)
+ && (!onIncremental);
if (performDexopt) {
// Compile the layout resources.
@@ -16202,6 +16238,7 @@
if (args.signingDetails != PackageParser.SigningDetails.UNKNOWN) {
pkg.setSigningDetails(args.signingDetails);
} else {
+ // TODO(b/136132412): skip for Incremental installation
PackageParser.collectCertificates(pkg, false /* skipVerify */);
}
} catch (PackageParserException e) {
@@ -22938,8 +22975,6 @@
return filterOnlySystemPackages(mAppPredictionServicePackage);
case PackageManagerInternal.PACKAGE_TELEPHONY:
return filterOnlySystemPackages(mTelephonyPackages);
- case PackageManagerInternal.PACKAGE_WIFI:
- return filterOnlySystemPackages(mWifiPackage);
default:
return ArrayUtils.emptyArray(String.class);
}
@@ -23527,7 +23562,7 @@
@Override
public void uninstallApex(String packageName, long versionCode, int userId,
- IntentSender intentSender) {
+ IntentSender intentSender, int flags) {
final int callerUid = Binder.getCallingUid();
if (callerUid != Process.ROOT_UID && callerUid != Process.SHELL_UID) {
throw new SecurityException("Not allowed to uninstall apexes");
@@ -23536,7 +23571,7 @@
new PackageInstallerService.PackageDeleteObserverAdapter(
PackageManagerService.this.mContext, intentSender, packageName,
false, userId);
- if (userId != UserHandle.USER_ALL) {
+ if ((flags & PackageManager.DELETE_ALL_USERS) == 0) {
adapter.onPackageDeleted(packageName, PackageManager.DELETE_FAILED_ABORTED,
"Can't uninstall an apex for a single user");
return;
diff --git a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
index 232374c..1b73602 100644
--- a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
+++ b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
@@ -504,11 +504,9 @@
getErrPrintWriter().println("Error: no package specified");
return 1;
}
- userId = translateUserId(userId, true /*allowAll*/, "runPath");
- if (userId == UserHandle.USER_ALL) {
- userId = UserHandle.USER_SYSTEM;
- }
- return displayPackageFilePath(pkg, userId);
+ final int translatedUserId =
+ translateUserId(userId, UserHandle.USER_NULL, "runPath");
+ return displayPackageFilePath(pkg, translatedUserId);
}
private int runList() throws RemoteException {
@@ -730,13 +728,14 @@
final String filter = getNextArg();
- userId = translateUserId(userId, true /*allowAll*/, "runListPackages");
if (userId == UserHandle.USER_ALL) {
- userId = UserHandle.USER_SYSTEM;
+ getFlags |= PackageManager.MATCH_KNOWN_PACKAGES;
}
+ final int translatedUserId =
+ translateUserId(userId, UserHandle.USER_SYSTEM, "runListPackages");
@SuppressWarnings("unchecked")
final ParceledListSlice<PackageInfo> slice =
- mInterface.getInstalledPackages(getFlags, userId);
+ mInterface.getInstalledPackages(getFlags, translatedUserId);
final List<PackageInfo> packages = slice.getList();
final int count = packages.size();
@@ -900,29 +899,29 @@
}
private int runListStagedSessions() {
- final IndentingPrintWriter pw = new IndentingPrintWriter(
- getOutPrintWriter(), /* singleIndent */ " ", /* wrapLength */ 120);
+ try (IndentingPrintWriter pw = new IndentingPrintWriter(
+ getOutPrintWriter(), /* singleIndent */ " ", /* wrapLength */ 120)) {
+ final SessionDump sessionDump = new SessionDump();
+ String opt;
+ while ((opt = getNextOption()) != null) {
+ if (!setSessionFlag(opt, sessionDump)) {
+ pw.println("Error: Unknown option: " + opt);
+ return -1;
+ }
+ }
- SessionDump sessionDump = new SessionDump();
- String opt;
- while ((opt = getNextOption()) != null) {
- if (!setSessionFlag(opt, sessionDump)) {
- pw.println("Error: Unknown option: " + opt);
+ try {
+ final List<SessionInfo> stagedSessions =
+ mInterface.getPackageInstaller().getStagedSessions().getList();
+ printSessionList(pw, stagedSessions, sessionDump);
+ } catch (RemoteException e) {
+ pw.println("Failure ["
+ + e.getClass().getName() + " - "
+ + e.getMessage() + "]");
return -1;
}
+ return 1;
}
-
- try {
- List<SessionInfo> stagedSessions =
- mInterface.getPackageInstaller().getStagedSessions().getList();
- printSessionList(pw, stagedSessions, sessionDump);
- } catch (RemoteException e) {
- pw.println("Failure ["
- + e.getClass().getName() + " - "
- + e.getMessage() + "]");
- return -1;
- }
- return 1;
}
private void printSessionList(IndentingPrintWriter pw, List<SessionInfo> stagedSessions,
@@ -1357,19 +1356,17 @@
pw.println("Error: package name not specified");
return 1;
}
- userId = translateUserId(userId, true /*allowAll*/, "runInstallExisting");
- if (userId == UserHandle.USER_ALL) {
- userId = UserHandle.USER_SYSTEM;
- }
+ final int translatedUserId =
+ translateUserId(userId, UserHandle.USER_NULL, "runInstallExisting");
int installReason = PackageManager.INSTALL_REASON_UNKNOWN;
try {
if (waitTillComplete) {
final LocalIntentReceiver receiver = new LocalIntentReceiver();
final IPackageInstaller installer = mInterface.getPackageInstaller();
- pw.println("Installing package " + packageName + " for user: " + userId);
+ pw.println("Installing package " + packageName + " for user: " + translatedUserId);
installer.installExistingPackage(packageName, installFlags, installReason,
- receiver.getIntentSender(), userId, null);
+ receiver.getIntentSender(), translatedUserId, null);
final Intent result = receiver.getResult();
final int status = result.getIntExtra(PackageInstaller.EXTRA_STATUS,
PackageInstaller.STATUS_FAILURE);
@@ -1377,12 +1374,12 @@
return status == PackageInstaller.STATUS_SUCCESS ? 0 : 1;
}
- final int res = mInterface.installExistingPackageAsUser(packageName, userId,
+ final int res = mInterface.installExistingPackageAsUser(packageName, translatedUserId,
installFlags, installReason, null);
if (res == PackageManager.INSTALL_FAILED_INVALID_URI) {
throw new NameNotFoundException("Package " + packageName + " doesn't exist");
}
- pw.println("Package " + packageName + " installed for user: " + userId);
+ pw.println("Package " + packageName + " installed for user: " + translatedUserId);
return 0;
} catch (RemoteException | NameNotFoundException e) {
pw.println(e.toString());
@@ -1845,36 +1842,37 @@
return runRemoveSplits(packageName, splitNames);
}
- userId = translateUserId(userId, true /*allowAll*/, "runUninstall");
+ if (userId == UserHandle.USER_ALL) {
+ flags |= PackageManager.DELETE_ALL_USERS;
+ }
+ final int translatedUserId =
+ translateUserId(userId, UserHandle.USER_SYSTEM, "runUninstall");
final LocalIntentReceiver receiver = new LocalIntentReceiver();
- PackageManagerInternal internal = LocalServices.getService(PackageManagerInternal.class);
+ final PackageManagerInternal internal =
+ LocalServices.getService(PackageManagerInternal.class);
if (internal.isApexPackage(packageName)) {
- internal.uninstallApex(packageName, versionCode, userId, receiver.getIntentSender());
- } else {
- if (userId == UserHandle.USER_ALL) {
- userId = UserHandle.USER_SYSTEM;
- flags |= PackageManager.DELETE_ALL_USERS;
- } else {
- final PackageInfo info = mInterface.getPackageInfo(packageName,
- PackageManager.MATCH_STATIC_SHARED_LIBRARIES, userId);
- if (info == null) {
- pw.println("Failure [not installed for " + userId + "]");
- return 1;
- }
- final boolean isSystem =
- (info.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0;
- // If we are being asked to delete a system app for just one
- // user set flag so it disables rather than reverting to system
- // version of the app.
- if (isSystem) {
- flags |= PackageManager.DELETE_SYSTEM_APP;
- }
+ internal.uninstallApex(
+ packageName, versionCode, translatedUserId, receiver.getIntentSender(), flags);
+ } else if ((flags & PackageManager.DELETE_ALL_USERS) != 0) {
+ final PackageInfo info = mInterface.getPackageInfo(packageName,
+ PackageManager.MATCH_STATIC_SHARED_LIBRARIES, translatedUserId);
+ if (info == null) {
+ pw.println("Failure [not installed for " + translatedUserId + "]");
+ return 1;
+ }
+ final boolean isSystem =
+ (info.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0;
+ // If we are being asked to delete a system app for just one
+ // user set flag so it disables rather than reverting to system
+ // version of the app.
+ if (isSystem) {
+ flags |= PackageManager.DELETE_SYSTEM_APP;
}
mInterface.getPackageInstaller().uninstall(new VersionedPackage(packageName,
versionCode), null /*callerPackageName*/, flags,
- receiver.getIntentSender(), userId);
+ receiver.getIntentSender(), translatedUserId);
}
final Intent result = receiver.getResult();
@@ -1948,8 +1946,10 @@
return 1;
}
- ClearDataObserver obs = new ClearDataObserver();
- ActivityManager.getService().clearApplicationUserData(pkg, false, obs, userId);
+ final int translatedUserId =
+ translateUserId(userId, UserHandle.USER_NULL, "runClear");
+ final ClearDataObserver obs = new ClearDataObserver();
+ ActivityManager.getService().clearApplicationUserData(pkg, false, obs, translatedUserId);
synchronized (obs) {
while (!obs.finished) {
try {
@@ -1991,28 +1991,26 @@
userId = UserHandle.parseUserArg(getNextArgRequired());
}
- String pkg = getNextArg();
+ final String pkg = getNextArg();
if (pkg == null) {
getErrPrintWriter().println("Error: no package or component specified");
return 1;
}
- userId = translateUserId(userId, true /*allowAll*/, "runSetEnabledSetting");
- if (userId == UserHandle.USER_ALL) {
- userId = UserHandle.USER_SYSTEM;
- }
- ComponentName cn = ComponentName.unflattenFromString(pkg);
+ final int translatedUserId =
+ translateUserId(userId, UserHandle.USER_NULL, "runSetEnabledSetting");
+ final ComponentName cn = ComponentName.unflattenFromString(pkg);
if (cn == null) {
- mInterface.setApplicationEnabledSetting(pkg, state, 0, userId,
+ mInterface.setApplicationEnabledSetting(pkg, state, 0, translatedUserId,
"shell:" + android.os.Process.myUid());
getOutPrintWriter().println("Package " + pkg + " new state: "
+ enabledSettingToString(
- mInterface.getApplicationEnabledSetting(pkg, userId)));
+ mInterface.getApplicationEnabledSetting(pkg, translatedUserId)));
return 0;
} else {
- mInterface.setComponentEnabledSetting(cn, state, 0, userId);
+ mInterface.setComponentEnabledSetting(cn, state, 0, translatedUserId);
getOutPrintWriter().println("Component " + cn.toShortString() + " new state: "
+ enabledSettingToString(
- mInterface.getComponentEnabledSetting(cn, userId)));
+ mInterface.getComponentEnabledSetting(cn, translatedUserId)));
return 0;
}
}
@@ -2029,13 +2027,11 @@
getErrPrintWriter().println("Error: no package or component specified");
return 1;
}
- userId = translateUserId(userId, true /*allowAll*/, "runSetHiddenSetting");
- if (userId == UserHandle.USER_ALL) {
- userId = UserHandle.USER_SYSTEM;
- }
- mInterface.setApplicationHiddenSettingAsUser(pkg, state, userId);
+ final int translatedUserId =
+ translateUserId(userId, UserHandle.USER_NULL, "runSetHiddenSetting");
+ mInterface.setApplicationHiddenSettingAsUser(pkg, state, translatedUserId);
getOutPrintWriter().println("Package " + pkg + " new hidden state: "
- + mInterface.getApplicationHiddenSettingAsUser(pkg, userId));
+ + mInterface.getApplicationHiddenSettingAsUser(pkg, translatedUserId));
return 0;
}
@@ -2102,16 +2098,14 @@
info = null;
}
try {
- userId = translateUserId(userId, true /*allowAll*/, "runSuspend");
- if (userId == UserHandle.USER_ALL) {
- userId = UserHandle.USER_SYSTEM;
- }
+ final int translatedUserId =
+ translateUserId(userId, UserHandle.USER_NULL, "runSuspend");
mInterface.setPackagesSuspendedAsUser(new String[]{packageName}, suspendedState,
((appExtras.size() > 0) ? appExtras : null),
((launcherExtras.size() > 0) ? launcherExtras : null),
- info, callingPackage, userId);
+ info, callingPackage, translatedUserId);
pw.println("Package " + packageName + " new suspended state: "
- + mInterface.isPackageSuspendedForUser(packageName, userId));
+ + mInterface.isPackageSuspendedForUser(packageName, translatedUserId));
return 0;
} catch (RemoteException | IllegalArgumentException e) {
pw.println(e.toString());
@@ -2139,11 +2133,12 @@
getErrPrintWriter().println("Error: no permission specified");
return 1;
}
- userId = translateUserId(userId, true /*allowAll*/, "runGrantRevokePermission");
+ final int translatedUserId =
+ translateUserId(userId, UserHandle.USER_NULL, "runGrantRevokePermission");
if (grant) {
- mPermissionManager.grantRuntimePermission(pkg, perm, userId);
+ mPermissionManager.grantRuntimePermission(pkg, perm, translatedUserId);
} else {
- mPermissionManager.revokeRuntimePermission(pkg, perm, userId);
+ mPermissionManager.revokeRuntimePermission(pkg, perm, translatedUserId);
}
return 0;
}
@@ -2327,11 +2322,9 @@
return 1;
}
- userId = translateUserId(userId, true /*allowAll*/, "runSetAppLink");
- if (userId == UserHandle.USER_ALL) {
- userId = UserHandle.USER_SYSTEM;
- }
- final PackageInfo info = mInterface.getPackageInfo(pkg, 0, userId);
+ final int translatedUserId =
+ translateUserId(userId, UserHandle.USER_NULL, "runSetAppLink");
+ final PackageInfo info = mInterface.getPackageInfo(pkg, 0, translatedUserId);
if (info == null) {
getErrPrintWriter().println("Error: package " + pkg + " not found.");
return 1;
@@ -2342,7 +2335,7 @@
return 1;
}
- if (!mInterface.updateIntentVerificationStatus(pkg, newMode, userId)) {
+ if (!mInterface.updateIntentVerificationStatus(pkg, newMode, translatedUserId)) {
getErrPrintWriter().println("Error: unable to update app link status for " + pkg);
return 1;
}
@@ -2371,11 +2364,9 @@
return 1;
}
- userId = translateUserId(userId, true /*allowAll*/, "runGetAppLink");
- if (userId == UserHandle.USER_ALL) {
- userId = UserHandle.USER_SYSTEM;
- }
- final PackageInfo info = mInterface.getPackageInfo(pkg, 0, userId);
+ final int translatedUserId =
+ translateUserId(userId, UserHandle.USER_NULL, "runGetAppLink");
+ final PackageInfo info = mInterface.getPackageInfo(pkg, 0, translatedUserId);
if (info == null) {
getErrPrintWriter().println("Error: package " + pkg + " not found.");
return 1;
@@ -2388,7 +2379,7 @@
}
getOutPrintWriter().println(linkStateToString(
- mInterface.getIntentVerificationStatus(pkg, userId)));
+ mInterface.getIntentVerificationStatus(pkg, translatedUserId)));
return 0;
}
@@ -2565,9 +2556,11 @@
getErrPrintWriter().println("Error: valid value not specified");
return 1;
}
- IUserManager um = IUserManager.Stub.asInterface(
+ final int translatedUserId =
+ translateUserId(userId, UserHandle.USER_NULL, "runSetUserRestriction");
+ final IUserManager um = IUserManager.Stub.asInterface(
ServiceManager.getService(Context.USER_SERVICE));
- um.setUserRestriction(restriction, value, userId);
+ um.setUserRestriction(restriction, value, translatedUserId);
return 0;
}
@@ -2763,14 +2756,15 @@
}
pkgName = componentName.getPackageName();
}
- userId = translateUserId(userId, true /*allowAll*/, "runInstallCreate");
+ final int translatedUserId =
+ translateUserId(userId, UserHandle.USER_NULL, "runSetHomeActivity");
final CompletableFuture<Boolean> future = new CompletableFuture<>();
final RemoteCallback callback = new RemoteCallback(res -> future.complete(res != null));
try {
IRoleManager roleManager = android.app.role.IRoleManager.Stub.asInterface(
ServiceManager.getServiceOrThrow(Context.ROLE_SERVICE));
roleManager.addRoleHolderAsUser(RoleManager.ROLE_HOME, pkgName,
- 0, userId, callback);
+ 0, translatedUserId, callback);
boolean success = future.get();
if (success) {
pw.println("Success");
@@ -2859,14 +2853,12 @@
}
}
- userId = translateUserId(userId, true /*allowAll*/, "runSetHarmfulAppWarning");
- if (userId == UserHandle.USER_ALL) {
- userId = UserHandle.USER_SYSTEM;
- }
+ final int translatedUserId =
+ translateUserId(userId, UserHandle.USER_NULL, "runSetHarmfulAppWarning");
final String packageName = getNextArgRequired();
final String warning = getNextArg();
- mInterface.setHarmfulAppWarning(packageName, warning, userId);
+ mInterface.setHarmfulAppWarning(packageName, warning, translatedUserId);
return 0;
}
@@ -2884,12 +2876,10 @@
}
}
- userId = translateUserId(userId, true /*allowAll*/, "runGetHarmfulAppWarning");
- if (userId == UserHandle.USER_ALL) {
- userId = UserHandle.USER_SYSTEM;
- }
+ final int translatedUserId =
+ translateUserId(userId, UserHandle.USER_NULL, "runGetHarmfulAppWarning");
final String packageName = getNextArgRequired();
- final CharSequence warning = mInterface.getHarmfulAppWarning(packageName, userId);
+ final CharSequence warning = mInterface.getHarmfulAppWarning(packageName, translatedUserId);
if (!TextUtils.isEmpty(warning)) {
getOutPrintWriter().println(warning);
return 0;
@@ -2917,21 +2907,22 @@
throw new IllegalArgumentException("ABI " + abi + " not supported on this device");
}
- private int translateUserId(int userId, boolean allowAll, String logContext) {
- return ActivityManager.handleIncomingUser(Binder.getCallingPid(), Binder.getCallingUid(),
- userId, allowAll, true, logContext, "pm command");
+ private int translateUserId(int userId, int allUserId, String logContext) {
+ final boolean allowAll = (allUserId != UserHandle.USER_NULL);
+ final int translatedUserId = ActivityManager.handleIncomingUser(Binder.getCallingPid(),
+ Binder.getCallingUid(), userId, allowAll, true, logContext, "pm command");
+ return translatedUserId == UserHandle.USER_ALL ? allUserId : translatedUserId;
}
private int doCreateSession(SessionParams params, String installerPackageName, int userId)
throws RemoteException {
- userId = translateUserId(userId, true /*allowAll*/, "doCreateSession");
if (userId == UserHandle.USER_ALL) {
- userId = UserHandle.USER_SYSTEM;
params.installFlags |= PackageManager.INSTALL_ALL_USERS;
}
-
+ final int translatedUserId =
+ translateUserId(userId, UserHandle.USER_SYSTEM, "doCreateSession");
final int sessionId = mInterface.getPackageInstaller()
- .createSession(params, installerPackageName, userId);
+ .createSession(params, installerPackageName, translatedUserId);
return sessionId;
}
@@ -3288,7 +3279,7 @@
pw.println(" [--user USER_ID] INTENT");
pw.println(" Prints all broadcast receivers that can handle the given INTENT.");
pw.println("");
- pw.println(" install [-rtsfdgw] [-i PACKAGE] [--user USER_ID|all|current]");
+ pw.println(" install [-rtfdgw] [-i PACKAGE] [--user USER_ID|all|current]");
pw.println(" [-p INHERIT_PACKAGE] [--install-location 0/1/2]");
pw.println(" [--install-reason 0/1/2/3/4] [--originating-uri URI]");
pw.println(" [--referrer URI] [--abi ABI_NAME] [--force-sdk]");
@@ -3302,7 +3293,6 @@
pw.println(" -R: disallow replacement of existing application");
pw.println(" -t: allow test packages");
pw.println(" -i: specify package name of installer owning the app");
- pw.println(" -s: install application on sdcard");
pw.println(" -f: install application on internal flash");
pw.println(" -d: allow version code downgrade (debuggable packages only)");
pw.println(" -p: partial application install (new split on top of existing pkg)");
diff --git a/services/core/java/com/android/server/pm/SELinuxMMAC.java b/services/core/java/com/android/server/pm/SELinuxMMAC.java
index b464988..d20f20f 100644
--- a/services/core/java/com/android/server/pm/SELinuxMMAC.java
+++ b/services/core/java/com/android/server/pm/SELinuxMMAC.java
@@ -16,6 +16,8 @@
package com.android.server.pm;
+import android.compat.annotation.ChangeId;
+import android.compat.annotation.EnabledAfter;
import android.content.pm.PackageParser;
import android.content.pm.PackageParser.SigningDetails;
import android.content.pm.Signature;
@@ -23,6 +25,8 @@
import android.util.Slog;
import android.util.Xml;
+import com.android.server.compat.PlatformCompat;
+
import libcore.io.IoUtils;
import org.xmlpull.v1.XmlPullParser;
@@ -72,6 +76,19 @@
// Append targetSdkVersion=n to existing seinfo label where n is the app's targetSdkVersion
private static final String TARGETSDKVERSION_STR = ":targetSdkVersion=";
+ /**
+ * This change gates apps access to untrusted_app_R-targetSDk SELinux domain. Allows opt-in
+ * to R targetSdkVersion enforced changes without changing target SDK. Turning this change
+ * off for an app targeting R is a no-op.
+ *
+ * <p>Has no effect for apps using shared user id.
+ *
+ * TODO(b/143539591): Update description with relevant SELINUX changes this opts in to.
+ */
+ @EnabledAfter(targetSdkVersion = android.os.Build.VERSION_CODES.Q)
+ @ChangeId
+ static final long SELINUX_LATEST_CHANGES = 143539591L;
+
// Only initialize sMacPermissions once.
static {
// Platform mac permissions.
@@ -319,6 +336,48 @@
}
}
+ private static int getTargetSdkVersionForSeInfo(PackageParser.Package pkg,
+ SharedUserSetting sharedUserSetting, PlatformCompat compatibility) {
+ // Apps which share a sharedUserId must be placed in the same selinux domain. If this
+ // package is the first app installed as this shared user, set seInfoTargetSdkVersion to its
+ // targetSdkVersion. These are later adjusted in PackageManagerService's constructor to be
+ // the lowest targetSdkVersion of all apps within the shared user, which corresponds to the
+ // least restrictive selinux domain.
+ // NOTE: As new packages are installed / updated, the shared user's seinfoTargetSdkVersion
+ // will NOT be modified until next boot, even if a lower targetSdkVersion is used. This
+ // ensures that all packages continue to run in the same selinux domain.
+ if ((sharedUserSetting != null) && (sharedUserSetting.packages.size() != 0)) {
+ return sharedUserSetting.seInfoTargetSdkVersion;
+ }
+ if (compatibility.isChangeEnabled(SELINUX_LATEST_CHANGES, pkg.applicationInfo)) {
+ return android.os.Build.VERSION_CODES.R;
+ }
+
+ return pkg.applicationInfo.targetSdkVersion;
+ }
+
+ /**
+ * Selects a security label to a package based on input parameters and the seinfo tag taken
+ * from a matched policy. All signature based policy stanzas are consulted and, if no match
+ * is found, the default seinfo label of 'default' is used. The security label is attached to
+ * the ApplicationInfo instance of the package.
+ *
+ * @param pkg object representing the package to be labeled.
+ * @param sharedUserSetting if the app shares a sharedUserId, then this has the shared setting.
+ * @param compatibility the PlatformCompat service to ask about state of compat changes.
+ * @return String representing the resulting seinfo.
+ */
+ public static String getSeInfo(PackageParser.Package pkg, SharedUserSetting sharedUserSetting,
+ PlatformCompat compatibility) {
+ final int targetSdkVersion = getTargetSdkVersionForSeInfo(pkg, sharedUserSetting,
+ compatibility);
+ // TODO(b/71593002): isPrivileged for sharedUser and appInfo should never be out of sync.
+ // They currently can be if the sharedUser apps are signed with the platform key.
+ final boolean isPrivileged = (sharedUserSetting != null)
+ ? sharedUserSetting.isPrivileged() | pkg.isPrivileged() : pkg.isPrivileged();
+ return getSeInfo(pkg, isPrivileged, targetSdkVersion);
+ }
+
/**
* Selects a security label to a package based on input parameters and the seinfo tag taken
* from a matched policy. All signature based policy stanzas are consulted and, if no match
diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java
index 69c7cf2..f67d3c0 100644
--- a/services/core/java/com/android/server/pm/Settings.java
+++ b/services/core/java/com/android/server/pm/Settings.java
@@ -1361,7 +1361,11 @@
if (tagName.equals(TAG_ITEM)) {
PreferredActivity pa = new PreferredActivity(parser);
if (pa.mPref.getParseError() == null) {
- editPreferredActivitiesLPw(userId).addFilter(pa);
+ final PreferredIntentResolver resolver = editPreferredActivitiesLPw(userId);
+ ArrayList<PreferredActivity> pal = resolver.findFilters(pa);
+ if (pal == null || pal.size() == 0) {
+ resolver.addFilter(pa);
+ }
} else {
PackageManagerService.reportSettingsProblem(Log.WARN,
"Error in package manager settings: <preferred-activity> "
diff --git a/services/core/java/com/android/server/pm/StagingManager.java b/services/core/java/com/android/server/pm/StagingManager.java
index 5bb42d4..7ea4e98 100644
--- a/services/core/java/com/android/server/pm/StagingManager.java
+++ b/services/core/java/com/android/server/pm/StagingManager.java
@@ -215,7 +215,7 @@
}
final long activeVersion = activePackage.applicationInfo.longVersionCode;
if (activeVersion != session.params.requiredInstalledVersionCode) {
- if (!mApexManager.abortActiveSession()) {
+ if (!mApexManager.abortStagedSession(session.sessionId)) {
Slog.e(TAG, "Failed to abort apex session " + session.sessionId);
}
throw new PackageManagerException(
@@ -234,7 +234,7 @@
final boolean allowsDowngrade = PackageManagerServiceUtils.isDowngradePermitted(
session.params.installFlags, activePackage.applicationInfo.flags);
if (activeVersion > newVersionCode && !allowsDowngrade) {
- if (!mApexManager.abortActiveSession()) {
+ if (!mApexManager.abortStagedSession(session.sessionId)) {
Slog.e(TAG, "Failed to abort apex session " + session.sessionId);
}
throw new PackageManagerException(
@@ -322,7 +322,7 @@
return;
}
- if (!mApexManager.abortActiveSession()) {
+ if (!mApexManager.revertActiveSessions()) {
Slog.e(TAG, "Failed to abort APEXd session");
} else {
Slog.e(TAG,
@@ -620,32 +620,6 @@
PackageManager.INSTALL_FAILED_OTHER_STAGED_SESSION_IN_PROGRESS,
"Cannot stage multiple sessions without checkpoint support", null);
}
-
- // TODO:b/141843321 Add support for staging multiple sessions in apexd
- // Since apexd doesn't support multiple staged sessions yet, we have to careful how
- // we handle apex sessions. We want to allow a set of apex sessions under the same
- // parent to be staged when there is no previously staged apex sessions.
- if (isApexSession(session) && isApexSession(stagedSession)) {
- // session is apex and it can co-exist with stagedSession only if they are from
- // same parent
- final boolean coExist;
- if (!session.hasParentSessionId() && !stagedSession.hasParentSessionId()) {
- // Both single package apex sessions. Cannot co-exist.
- coExist = false;
- } else {
- // At least one of the session has parent. Both must be from same parent.
- coExist =
- session.getParentSessionId() == stagedSession.getParentSessionId();
- }
- if (!coExist) {
- throw new PackageManagerException(
- PackageManager.INSTALL_FAILED_OTHER_STAGED_SESSION_IN_PROGRESS,
- "Package: " + session.getPackageName() + " in session: "
- + session.sessionId + " cannot be staged as there is "
- + "already another apex staged session: "
- + stagedSession.sessionId, null);
- }
- }
}
}
}
@@ -678,7 +652,10 @@
+ " because it is not active or APEXD is not reachable");
return;
}
- mApexManager.abortActiveSession();
+ try {
+ mApexManager.abortStagedSession(session.sessionId);
+ } catch (Exception ignore) {
+ }
}
}
diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java
index 8ddfad9..ad4411c 100644
--- a/services/core/java/com/android/server/pm/UserManagerService.java
+++ b/services/core/java/com/android/server/pm/UserManagerService.java
@@ -564,7 +564,7 @@
readUserListLP();
sInstance = this;
}
- mSystemPackageInstaller = new UserSystemPackageInstaller(this);
+ mSystemPackageInstaller = new UserSystemPackageInstaller(this, mUserTypes);
mLocalService = new LocalService();
LocalServices.addService(UserManagerInternal.class, mLocalService);
mLockPatternUtils = new LockPatternUtils(mContext);
@@ -1205,6 +1205,24 @@
}
}
+ /** Returns whether the given user type is one of the FULL user types. */
+ boolean isUserTypeSubtypeOfFull(String userType) {
+ UserTypeDetails userTypeDetails = mUserTypes.get(userType);
+ return userTypeDetails != null && userTypeDetails.isFull();
+ }
+
+ /** Returns whether the given user type is one of the PROFILE user types. */
+ boolean isUserTypeSubtypeOfProfile(String userType) {
+ UserTypeDetails userTypeDetails = mUserTypes.get(userType);
+ return userTypeDetails != null && userTypeDetails.isProfile();
+ }
+
+ /** Returns whether the given user type is one of the SYSTEM user types. */
+ boolean isUserTypeSubtypeOfSystem(String userType) {
+ UserTypeDetails userTypeDetails = mUserTypes.get(userType);
+ return userTypeDetails != null && userTypeDetails.isSystem();
+ }
+
@Override
public boolean hasBadge(@UserIdInt int userId) {
checkManageOrInteractPermIfCallerInOtherProfileGroup(userId, "hasBadge");
@@ -1616,13 +1634,14 @@
* See {@link UserManagerInternal#setDevicePolicyUserRestrictions}
*/
private void setDevicePolicyUserRestrictionsInner(@UserIdInt int userId,
- @Nullable Bundle restrictions, boolean isDeviceOwner, int cameraRestrictionScope) {
+ @Nullable Bundle restrictions,
+ @UserManagerInternal.OwnerType int restrictionOwnerType) {
final Bundle global = new Bundle();
final Bundle local = new Bundle();
// Sort restrictions into local and global ensuring they don't overlap.
- UserRestrictionsUtils.sortToGlobalAndLocal(restrictions, isDeviceOwner,
- cameraRestrictionScope, global, local);
+ UserRestrictionsUtils.sortToGlobalAndLocal(restrictions, restrictionOwnerType, global,
+ local);
boolean globalChanged, localChanged;
synchronized (mRestrictionsLock) {
@@ -1632,7 +1651,7 @@
localChanged = updateRestrictionsIfNeededLR(
userId, local, mDevicePolicyLocalUserRestrictions);
- if (isDeviceOwner) {
+ if (restrictionOwnerType == UserManagerInternal.OWNER_TYPE_DEVICE_OWNER) {
// Remember the global restriction owner userId to be able to make a distinction
// in getUserRestrictionSource on who set local policies.
mDeviceOwnerUserId = userId;
@@ -3088,36 +3107,11 @@
}
}
- // First try to use a pre-created user (if available).
- // TODO(b/142482943): Move this to its own function later.
- if (!preCreate
- && (parentId < 0 && isUserTypeEligibleForPreCreation(userTypeDetails))) {
- final UserData preCreatedUserData;
- synchronized (mUsersLock) {
- preCreatedUserData = getPreCreatedUserLU(userType);
- }
- if (preCreatedUserData != null) {
- final UserInfo preCreatedUser = preCreatedUserData.info;
- final int newFlags = preCreatedUser.flags | flags;
- if (!checkUserTypeConsistency(newFlags)) {
- Slog.wtf(LOG_TAG, "Cannot reuse pre-created user " + preCreatedUser.id
- + " of type " + userType + " because flags are inconsistent. "
- + "Flags (" + Integer.toHexString(flags) + "); preCreatedUserFlags ( "
- + Integer.toHexString(preCreatedUser.flags) + ").");
- } else {
- Log.i(LOG_TAG, "Reusing pre-created user " + preCreatedUser.id + " of type "
- + userType + " and bestowing on it flags "
- + UserInfo.flagsToString(flags));
- preCreatedUser.name = name;
- preCreatedUser.flags = newFlags;
- preCreatedUser.preCreated = false;
- preCreatedUser.creationTime = getCreationTime();
-
- dispatchUserAddedIntent(preCreatedUser);
- writeUserLP(preCreatedUserData);
- writeUserListLP();
- return preCreatedUser;
- }
+ // Try to use a pre-created user (if available).
+ if (!preCreate && parentId < 0 && isUserTypeEligibleForPreCreation(userTypeDetails)) {
+ final UserInfo preCreatedUser = convertPreCreatedUserIfPossible(userType, flags, name);
+ if (preCreatedUser != null) {
+ return preCreatedUser;
}
}
@@ -3191,6 +3185,13 @@
flags |= UserInfo.FLAG_EPHEMERAL;
}
+ // Always clear EPHEMERAL for pre-created users, otherwise the storage key
+ // won't be persisted. The flag will be re-added (if needed) when the
+ // pre-created user is "converted" to a normal user.
+ if (preCreate) {
+ flags &= ~UserInfo.FLAG_EPHEMERAL;
+ }
+
userInfo = new UserInfo(userId, name, null, flags, userType);
userInfo.serialNumber = mNextSerialNumber++;
userInfo.creationTime = getCreationTime();
@@ -3233,8 +3234,8 @@
StorageManager.FLAG_STORAGE_DE | StorageManager.FLAG_STORAGE_CE);
t.traceEnd();
- final Set<String> installablePackages = // TODO(b/142482943): use userType
- mSystemPackageInstaller.getInstallablePackagesForUserType(flags);
+ final Set<String> installablePackages =
+ mSystemPackageInstaller.getInstallablePackagesForUserType(userType);
t.traceBegin("PM.createNewUser");
mPm.createNewUser(userId, installablePackages, disallowedPackages);
t.traceEnd();
@@ -3294,6 +3295,44 @@
return userInfo;
}
+ /**
+ * Finds and converts a previously pre-created user into a regular user, if possible.
+ *
+ * @return the converted user, or {@code null} if no pre-created user could be converted.
+ */
+ private @Nullable UserInfo convertPreCreatedUserIfPossible(String userType,
+ @UserInfoFlag int flags, String name) {
+ final UserData preCreatedUserData;
+ synchronized (mUsersLock) {
+ preCreatedUserData = getPreCreatedUserLU(userType);
+ }
+ if (preCreatedUserData == null) {
+ return null;
+ }
+ final UserInfo preCreatedUser = preCreatedUserData.info;
+ final int newFlags = preCreatedUser.flags | flags;
+ if (!checkUserTypeConsistency(newFlags)) {
+ Slog.wtf(LOG_TAG, "Cannot reuse pre-created user " + preCreatedUser.id
+ + " of type " + userType + " because flags are inconsistent. "
+ + "Flags (" + Integer.toHexString(flags) + "); preCreatedUserFlags ( "
+ + Integer.toHexString(preCreatedUser.flags) + ").");
+ return null;
+ }
+ Log.i(LOG_TAG, "Reusing pre-created user " + preCreatedUser.id + " of type "
+ + userType + " and bestowing on it flags " + UserInfo.flagsToString(flags));
+ preCreatedUser.name = name;
+ preCreatedUser.flags = newFlags;
+ preCreatedUser.preCreated = false;
+ preCreatedUser.creationTime = getCreationTime();
+
+ dispatchUserAddedIntent(preCreatedUser);
+ synchronized (mPackagesLock) {
+ writeUserLP(preCreatedUserData);
+ writeUserListLP();
+ }
+ return preCreatedUser;
+ }
+
/** Checks that the flags do not contain mutually exclusive types/properties. */
static boolean checkUserTypeConsistency(@UserInfoFlag int flags) {
// Mask to check that flags don't refer to multiple user types.
@@ -3413,8 +3452,13 @@
/**
* Find the current guest user. If the Guest user is partial,
* then do not include it in the results as it is about to die.
+ *
+ * @return The current guest user. Null if it doesn't exist.
+ * @hide
*/
- private UserInfo findCurrentGuestUser() {
+ @Override
+ public UserInfo findCurrentGuestUser() {
+ checkManageUsersPermission("findCurrentGuestUser");
synchronized (mUsersLock) {
final int size = mUsers.size();
for (int i = 0; i < size; i++) {
@@ -4409,6 +4453,7 @@
pw.println(" Supports switchable users: " + UserManager.supportsMultipleUsers());
pw.println(" All guests ephemeral: " + Resources.getSystem().getBoolean(
com.android.internal.R.bool.config_guestUserEphemeral));
+ pw.println(" Force ephemeral users: " + mForceEphemeralUsers);
pw.println(" Is split-system user: " + UserManager.isSplitSystemUser());
pw.println(" Is headless-system mode: " + UserManager.isHeadlessSystemUserMode());
pw.println(" User version: " + mUserVersion);
@@ -4466,9 +4511,9 @@
private class LocalService extends UserManagerInternal {
@Override
public void setDevicePolicyUserRestrictions(@UserIdInt int userId,
- @Nullable Bundle restrictions, boolean isDeviceOwner, int cameraRestrictionScope) {
- UserManagerService.this.setDevicePolicyUserRestrictionsInner(userId, restrictions,
- isDeviceOwner, cameraRestrictionScope);
+ @Nullable Bundle restrictions, @OwnerType int restrictionOwnerType) {
+ UserManagerService.this.setDevicePolicyUserRestrictionsInner(userId,
+ restrictions, restrictionOwnerType);
}
@Override
diff --git a/services/core/java/com/android/server/pm/UserRestrictionsUtils.java b/services/core/java/com/android/server/pm/UserRestrictionsUtils.java
index 3be51c5..0beff7a 100644
--- a/services/core/java/com/android/server/pm/UserRestrictionsUtils.java
+++ b/services/core/java/com/android/server/pm/UserRestrictionsUtils.java
@@ -20,7 +20,6 @@
import android.annotation.Nullable;
import android.app.ActivityManager;
import android.app.AppGlobals;
-import android.app.admin.DevicePolicyManager;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
@@ -194,7 +193,18 @@
UserManager.DISALLOW_SYSTEM_ERROR_DIALOGS,
UserManager.DISALLOW_RUN_IN_BACKGROUND,
UserManager.DISALLOW_UNMUTE_MICROPHONE,
- UserManager.DISALLOW_UNMUTE_DEVICE
+ UserManager.DISALLOW_UNMUTE_DEVICE,
+ UserManager.DISALLOW_CAMERA
+ );
+
+ /**
+ * Special user restrictions that are applied globally when set by the profile owner of a
+ * managed profile that was created during the device provisioning flow.
+ */
+ private static final Set<String> PROFILE_OWNER_ORGANIZATION_OWNED_GLOBAL_RESTRICTIONS =
+ Sets.newArraySet(
+ UserManager.DISALLOW_CONFIG_DATE_TIME,
+ UserManager.DISALLOW_CAMERA
);
/**
@@ -419,15 +429,9 @@
* Takes restrictions that can be set by device owner, and sort them into what should be applied
* globally and what should be applied only on the current user.
*/
- public static void sortToGlobalAndLocal(@Nullable Bundle in, boolean isDeviceOwner,
- int cameraRestrictionScope,
- @NonNull Bundle global, @NonNull Bundle local) {
- // Camera restriction (as well as all others) goes to at most one bundle.
- if (cameraRestrictionScope == UserManagerInternal.CAMERA_DISABLED_GLOBALLY) {
- global.putBoolean(UserManager.DISALLOW_CAMERA, true);
- } else if (cameraRestrictionScope == UserManagerInternal.CAMERA_DISABLED_LOCALLY) {
- local.putBoolean(UserManager.DISALLOW_CAMERA, true);
- }
+ public static void sortToGlobalAndLocal(@Nullable Bundle in,
+ @UserManagerInternal.OwnerType int restrictionOwnerType, @NonNull Bundle global,
+ @NonNull Bundle local) {
if (in == null || in.size() == 0) {
return;
}
@@ -435,7 +439,7 @@
if (!in.getBoolean(key)) {
continue;
}
- if (isGlobal(isDeviceOwner, key)) {
+ if (isGlobal(restrictionOwnerType, key)) {
global.putBoolean(key, true);
} else {
local.putBoolean(key, true);
@@ -446,9 +450,13 @@
/**
* Whether given user restriction should be enforced globally.
*/
- private static boolean isGlobal(boolean isDeviceOwner, String key) {
- return (isDeviceOwner &&
- (PRIMARY_USER_ONLY_RESTRICTIONS.contains(key) || GLOBAL_RESTRICTIONS.contains(key)))
+ private static boolean isGlobal(@UserManagerInternal.OwnerType int restrictionOwnerType,
+ String key) {
+ return ((restrictionOwnerType == UserManagerInternal.OWNER_TYPE_DEVICE_OWNER) && (
+ PRIMARY_USER_ONLY_RESTRICTIONS.contains(key) || GLOBAL_RESTRICTIONS.contains(key)))
+ || ((restrictionOwnerType
+ == UserManagerInternal.OWNER_TYPE_PROFILE_OWNER_OF_ORGANIZATION_OWNED_DEVICE)
+ && PROFILE_OWNER_ORGANIZATION_OWNED_GLOBAL_RESTRICTIONS.contains(key))
|| PROFILE_GLOBAL_RESTRICTIONS.contains(key)
|| DEVICE_OWNER_ONLY_RESTRICTIONS.contains(key);
}
@@ -569,10 +577,6 @@
if (newValue) {
android.provider.Settings.Global.putStringForUser(
context.getContentResolver(),
- android.provider.Settings.Global.PACKAGE_VERIFIER_ENABLE, "1",
- userId);
- android.provider.Settings.Global.putStringForUser(
- context.getContentResolver(),
android.provider.Settings.Global.PACKAGE_VERIFIER_INCLUDE_ADB, "1",
userId);
}
@@ -708,7 +712,6 @@
restriction = UserManager.DISALLOW_DEBUGGING_FEATURES;
break;
- case android.provider.Settings.Global.PACKAGE_VERIFIER_ENABLE:
case android.provider.Settings.Global.PACKAGE_VERIFIER_INCLUDE_ADB:
if ("1".equals(value)) {
return false;
@@ -773,16 +776,6 @@
break;
case android.provider.Settings.Global.AUTO_TIME:
- DevicePolicyManager dpm = context.getSystemService(DevicePolicyManager.class);
- if (dpm != null && dpm.getAutoTimeRequired()
- && "0".equals(value)) {
- return true;
- } else if (callingUid == Process.SYSTEM_UID) {
- return false;
- }
- restriction = UserManager.DISALLOW_CONFIG_DATE_TIME;
- break;
-
case android.provider.Settings.Global.AUTO_TIME_ZONE:
if (callingUid == Process.SYSTEM_UID) {
return false;
diff --git a/services/core/java/com/android/server/pm/UserSystemPackageInstaller.java b/services/core/java/com/android/server/pm/UserSystemPackageInstaller.java
index 95197b0..0a6a435 100644
--- a/services/core/java/com/android/server/pm/UserSystemPackageInstaller.java
+++ b/services/core/java/com/android/server/pm/UserSystemPackageInstaller.java
@@ -22,7 +22,6 @@
import android.annotation.UserIdInt;
import android.content.pm.PackageManagerInternal;
import android.content.pm.PackageParser;
-import android.content.pm.UserInfo;
import android.content.res.Resources;
import android.os.SystemProperties;
import android.os.UserHandle;
@@ -37,6 +36,8 @@
import java.io.PrintWriter;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.util.Arrays;
+import java.util.Map;
import java.util.Set;
/**
@@ -84,58 +85,84 @@
* System Property whether to only install system packages on a user if they're whitelisted for
* that user type. These are flags and can be freely combined.
* <ul>
- * <li> 0 (0b000) - disable whitelist (install all system packages; no logging)</li>
- * <li> 1 (0b001) - enforce (only install system packages if they are whitelisted)</li>
- * <li> 2 (0b010) - log (log when a non-whitelisted package is run)</li>
- * <li> 4 (0b100) - implicitly whitelist any package not mentioned in the whitelist</li>
- * <li>-1 - use device default (as defined in res/res/values/config.xml)</li>
+ * <li> 0 (0b0000) - disable whitelist (install all system packages; no logging)</li>
+ * <li> 1 (0b0001) - enforce (only install system packages if they are whitelisted)</li>
+ * <li> 2 (0b0010) - log (log when a non-whitelisted package is run)</li>
+ * <li> 4 (0b0100) - implicitly whitelist any package not mentioned in the whitelist</li>
+ * <li> 8 (0b1000) - ignore OTAs (don't install system packages during OTAs)</li>
+ * <li>-1 - use device default (as defined in res/res/values/config.xml)</li>
* </ul>
* Note: This list must be kept current with config_userTypePackageWhitelistMode in
* frameworks/base/core/res/res/values/config.xml
*/
static final String PACKAGE_WHITELIST_MODE_PROP = "persist.debug.user.package_whitelist_mode";
static final int USER_TYPE_PACKAGE_WHITELIST_MODE_DISABLE = 0;
- static final int USER_TYPE_PACKAGE_WHITELIST_MODE_ENFORCE = 0b001;
- static final int USER_TYPE_PACKAGE_WHITELIST_MODE_LOG = 0b010;
- static final int USER_TYPE_PACKAGE_WHITELIST_MODE_IMPLICIT_WHITELIST = 0b100;
+ static final int USER_TYPE_PACKAGE_WHITELIST_MODE_ENFORCE = 0b0001;
+ static final int USER_TYPE_PACKAGE_WHITELIST_MODE_LOG = 0b0010;
+ static final int USER_TYPE_PACKAGE_WHITELIST_MODE_IMPLICIT_WHITELIST = 0b0100;
+ static final int USER_TYPE_PACKAGE_WHITELIST_MODE_IGNORE_OTA = 0b1000;
static final int USER_TYPE_PACKAGE_WHITELIST_MODE_DEVICE_DEFAULT = -1;
@IntDef(flag = true, prefix = "USER_TYPE_PACKAGE_WHITELIST_MODE_", value = {
USER_TYPE_PACKAGE_WHITELIST_MODE_DISABLE,
USER_TYPE_PACKAGE_WHITELIST_MODE_ENFORCE,
- USER_TYPE_PACKAGE_WHITELIST_MODE_ENFORCE,
USER_TYPE_PACKAGE_WHITELIST_MODE_LOG,
USER_TYPE_PACKAGE_WHITELIST_MODE_IMPLICIT_WHITELIST,
+ USER_TYPE_PACKAGE_WHITELIST_MODE_IGNORE_OTA,
})
@Retention(RetentionPolicy.SOURCE)
public @interface PackageWhitelistMode {}
/**
- * Maps system package manifest names to the user flags on which they should be initially
- * installed.
- * <p>Packages that are whitelisted, but then blacklisted so that they aren't to be installed on
+ * Maps system package manifest names to a bitset representing (via {@link #getUserTypeMask})
+ * the user types on which they should be initially installed.
+ * <p>
+ * E.g. if package "pkg1" should be installed on "usertype_d", which is the user type for which
+ * {@link #getUserTypeMask}("usertype_d") returns (1 << 3)
+ * then mWhitelistedPackagesForUserTypes.get("pkg1") will be a Long whose
+ * bit in position 3 will equal 1.
+ * <p>
+ * Packages that are whitelisted, but then blacklisted so that they aren't to be installed on
* any user, are purposefully still present in this list.
*/
- private final ArrayMap<String, Integer> mWhitelistedPackagesForUserTypes;
+ private final ArrayMap<String, Long> mWhitelistedPackagesForUserTypes;
private final UserManagerService mUm;
- UserSystemPackageInstaller(UserManagerService ums) {
- mUm = ums;
+ /**
+ * Alphabetically sorted list of user types.
+ * Throughout this class, a long (functioning as a bitset) has its ith bit representing
+ * the user type stored in mUserTypes[i].
+ * mUserTypes cannot exceed Long.SIZE (since we are using long for our bitset).
+ */
+ private final String[] mUserTypes;
+
+ UserSystemPackageInstaller(UserManagerService um, ArrayMap<String, UserTypeDetails> userTypes) {
+ mUm = um;
+ mUserTypes = getAndSortKeysFromMap(userTypes);
+ if (mUserTypes.length > Long.SIZE) {
+ throw new IllegalArgumentException("Device contains " + userTypes.size()
+ + " user types. However, UserSystemPackageInstaller does not work if there are"
+ + " more than " + Long.SIZE + " user types.");
+ // UserSystemPackageInstaller could use a BitSet instead of Long in this case.
+ // But, currently, 64 user types is far beyond expectations, so we have not done so.
+ }
mWhitelistedPackagesForUserTypes =
determineWhitelistedPackagesForUserTypes(SystemConfig.getInstance());
}
/** Constructor for testing purposes. */
@VisibleForTesting
- UserSystemPackageInstaller(UserManagerService ums, ArrayMap<String, Integer> whitelist) {
+ UserSystemPackageInstaller(UserManagerService ums, ArrayMap<String, Long> whitelist,
+ String[] sortedUserTypes) {
mUm = ums;
+ mUserTypes = sortedUserTypes;
mWhitelistedPackagesForUserTypes = whitelist;
}
/**
* During OTAs and first boot, install/uninstall all system packages for all users based on the
- * user's UserInfo flags and the SystemConfig whitelist.
+ * user's user type and the SystemConfig whitelist.
* We do NOT uninstall packages during an OTA though.
*
* This is responsible for enforcing the whitelist for pre-existing users (i.e. USER_SYSTEM);
@@ -144,11 +171,17 @@
boolean installWhitelistedSystemPackages(boolean isFirstBoot, boolean isUpgrade) {
final int mode = getWhitelistMode();
checkWhitelistedSystemPackages(mode);
- if (!isUpgrade && !isFirstBoot) {
+ final boolean isConsideredUpgrade = isUpgrade && !isIgnoreOtaMode(mode);
+ if (!isConsideredUpgrade && !isFirstBoot) {
+ return false;
+ }
+ if (isFirstBoot && !isEnforceMode(mode)) {
+ // Note that if !isEnforceMode, we nonetheless still install packages if isUpgrade
+ // in order to undo any previous non-installing. isFirstBoot lacks this requirement.
return false;
}
Slog.i(TAG, "Reviewing whitelisted packages due to "
- + (isFirstBoot ? "[firstBoot]" : "") + (isUpgrade ? "[upgrade]" : ""));
+ + (isFirstBoot ? "[firstBoot]" : "") + (isConsideredUpgrade ? "[upgrade]" : ""));
final PackageManagerInternal pmInt = LocalServices.getService(PackageManagerInternal.class);
// Install/uninstall system packages per user.
for (int userId : mUm.getUserIds()) {
@@ -160,7 +193,7 @@
final boolean install =
(userWhitelist == null || userWhitelist.contains(pkg.packageName))
&& !pkg.applicationInfo.hiddenUntilInstalled;
- if (isUpgrade && !isFirstBoot && !install) {
+ if (isConsideredUpgrade && !isFirstBoot && !install) {
return; // To be careful, we don’t uninstall apps during OTAs
}
final boolean changed = pmInt.setInstalled(pkg, userId, install);
@@ -220,6 +253,19 @@
}
/**
+ * Whether to ignore OTAs, and therefore not install missing system packages during OTAs.
+ * <p>Note:
+ * If in this mode, old system packages will not be installed on pre-existing users during OTAs.
+ * Any system packages that had not been installed at the time of the user's creation,
+ * due to {@link UserSystemPackageInstaller}'s previous actions, will therefore continue to
+ * remain uninstalled, even if the whitelist (or enforcement mode) now declares that they should
+ * be.
+ */
+ boolean isIgnoreOtaMode() {
+ return isIgnoreOtaMode(getWhitelistMode());
+ }
+
+ /**
* Whether to log a warning concerning potential problems with the user-type package whitelist.
*/
boolean isLogMode() {
@@ -239,6 +285,11 @@
return (whitelistMode & USER_TYPE_PACKAGE_WHITELIST_MODE_ENFORCE) != 0;
}
+ /** See {@link #isIgnoreOtaMode()}. */
+ private static boolean isIgnoreOtaMode(int whitelistMode) {
+ return (whitelistMode & USER_TYPE_PACKAGE_WHITELIST_MODE_IGNORE_OTA) != 0;
+ }
+
/** See {@link #isLogMode()}. */
private static boolean isLogMode(int whitelistMode) {
return (whitelistMode & USER_TYPE_PACKAGE_WHITELIST_MODE_LOG) != 0;
@@ -262,27 +313,27 @@
/**
* Gets the system packages names that should be installed on the given user.
- * See {@link #getInstallablePackagesForUserType(int)}.
+ * See {@link #getInstallablePackagesForUserType(String)}.
*/
private @Nullable Set<String> getInstallablePackagesForUserId(@UserIdInt int userId) {
- return getInstallablePackagesForUserType(mUm.getUserInfo(userId).flags);
+ return getInstallablePackagesForUserType(mUm.getUserInfo(userId).userType);
}
/**
- * Gets the system package names that should be installed on a user with the given flags, as
+ * Gets the system package names that should be installed on users of the given user type, as
* determined by SystemConfig, the whitelist mode, and the apps actually on the device.
* Names are the {@link PackageParser.Package#packageName}, not necessarily the manifest names.
*
- * Returns null if all system packages should be installed (due enforce-mode being off).
+ * Returns null if all system packages should be installed (due to enforce-mode being off).
*/
- @Nullable Set<String> getInstallablePackagesForUserType(int flags) {
+ @Nullable Set<String> getInstallablePackagesForUserType(String userType) {
final int mode = getWhitelistMode();
if (!isEnforceMode(mode)) {
return null;
}
- final boolean isSystemUser = (flags & UserInfo.FLAG_SYSTEM) != 0;
+ final boolean isSystemUser = mUm.isUserTypeSubtypeOfSystem(userType);
final boolean isImplicitWhitelistMode = isImplicitWhitelistMode(mode);
- final Set<String> whitelistedPackages = getWhitelistedPackagesForUserType(flags);
+ final Set<String> whitelistedPackages = getWhitelistedPackagesForUserType(userType);
final Set<String> installPackages = new ArraySet<>();
final PackageManagerInternal pmInt = LocalServices.getService(PackageManagerInternal.class);
@@ -304,8 +355,9 @@
* the given whitelist of system packages.
*
* @param sysPkg the system package. Must be a system package; no verification for this is done.
- * @param userTypeWhitelist map of package manifest names to user flags on which they should be
- * installed
+ * @param userTypeWhitelist map of package manifest names to user types on which they should be
+ * installed. This is only used for overriding the userWhitelist in
+ * certain situations (based on its keyset).
* @param userWhitelist set of package manifest names that should be installed on this
* particular user. This must be consistent with userTypeWhitelist, but is
* passed in separately to avoid repeatedly calculating it from
@@ -315,7 +367,7 @@
*/
@VisibleForTesting
static boolean shouldInstallPackage(PackageParser.Package sysPkg,
- @NonNull ArrayMap<String, Integer> userTypeWhitelist,
+ @NonNull ArrayMap<String, Long> userTypeWhitelist,
@NonNull Set<String> userWhitelist, boolean isImplicitWhitelistMode,
boolean isSystemUser) {
@@ -335,16 +387,17 @@
}
/**
- * Gets the package manifest names that are whitelisted for a user with the given flags,
+ * Gets the package manifest names that are whitelisted for users of the given user type,
* as determined by SystemConfig.
*/
@VisibleForTesting
- @NonNull Set<String> getWhitelistedPackagesForUserType(int flags) {
- Set<String> installablePkgs = new ArraySet<>(mWhitelistedPackagesForUserTypes.size());
+ @NonNull Set<String> getWhitelistedPackagesForUserType(String userType) {
+ final long userTypeMask = getUserTypeMask(userType);
+ final Set<String> installablePkgs = new ArraySet<>(mWhitelistedPackagesForUserTypes.size());
for (int i = 0; i < mWhitelistedPackagesForUserTypes.size(); i++) {
- String pkgName = mWhitelistedPackagesForUserTypes.keyAt(i);
- int whitelistedUserTypes = mWhitelistedPackagesForUserTypes.valueAt(i);
- if ((flags & whitelistedUserTypes) != 0) {
+ final String pkgName = mWhitelistedPackagesForUserTypes.keyAt(i);
+ final long whitelistedUserTypes = mWhitelistedPackagesForUserTypes.valueAt(i);
+ if ((userTypeMask & whitelistedUserTypes) != 0) {
installablePkgs.add(pkgName);
}
}
@@ -364,7 +417,8 @@
}
/**
- * Returns a map of package manifest names to the user flags on which it is to be installed.
+ * Returns a map of package manifest names to the bit set representing (via
+ * {@link #getUserTypeMask}) the user types on which they are to be installed.
* Also, clears this data from SystemConfig where it was stored inefficiently (and therefore
* should be called exactly once, even if the data isn't useful).
*
@@ -375,89 +429,132 @@
* <li>Packages that never whitelisted at all (even if they are explicitly blacklisted) are
* ignored.</li>
* <li>Packages that are blacklisted whenever they are whitelisted will be stored with the
- * flag 0 (since this is a valid scenario, e.g. if an OEM completely blacklists an AOSP
- * app).</li>
+ * value 0 (since this is a valid scenario, e.g. if an OEM completely blacklists an
+ * AOSP app).</li>
* </ul>
+ *
+ * @see #mWhitelistedPackagesForUserTypes
*/
@VisibleForTesting
- static ArrayMap<String, Integer> determineWhitelistedPackagesForUserTypes(
- SystemConfig sysConfig) {
+ ArrayMap<String, Long> determineWhitelistedPackagesForUserTypes(SystemConfig sysConfig) {
+ // We first get the list of user types that correspond to FULL, SYSTEM, and PROFILE.
+ final Map<String, Long> baseTypeBitSets = getBaseTypeBitSets();
final ArrayMap<String, Set<String>> whitelist =
sysConfig.getAndClearPackageToUserTypeWhitelist();
// result maps packageName -> userTypes on which the package should be installed.
- final ArrayMap<String, Integer> result = new ArrayMap<>(whitelist.size() + 1);
+ final ArrayMap<String, Long> result = new ArrayMap<>(whitelist.size() + 1);
// First, do the whitelisted user types.
for (int i = 0; i < whitelist.size(); i++) {
final String pkgName = whitelist.keyAt(i).intern();
- final int flags = getFlagsFromUserTypes(whitelist.valueAt(i));
- if (flags != 0) {
- result.put(pkgName, flags);
+ final long typesBitSet = getTypesBitSet(whitelist.valueAt(i), baseTypeBitSets);
+ if (typesBitSet != 0) {
+ result.put(pkgName, typesBitSet);
}
}
// Then, un-whitelist any blacklisted user types.
- // TODO(b/141370854): Right now, the blacklist is actually just an 'unwhitelist'. Which
- // direction we go depends on how we design user subtypes, which is still
- // being designed. For now, unwhitelisting works for current use-cases.
final ArrayMap<String, Set<String>> blacklist =
sysConfig.getAndClearPackageToUserTypeBlacklist();
for (int i = 0; i < blacklist.size(); i++) {
final String pkgName = blacklist.keyAt(i).intern();
- final int nonFlags = getFlagsFromUserTypes(blacklist.valueAt(i));
- final Integer flags = result.get(pkgName);
- if (flags != null) {
- result.put(pkgName, flags & ~nonFlags);
+ final long nonTypesBitSet = getTypesBitSet(blacklist.valueAt(i), baseTypeBitSets);
+ final Long typesBitSet = result.get(pkgName);
+ if (typesBitSet != null) {
+ result.put(pkgName, typesBitSet & ~nonTypesBitSet);
+ } else if (nonTypesBitSet != 0) {
+ // Package was never whitelisted but is validly blacklisted.
+ result.put(pkgName, 0L);
}
}
// Regardless of the whitelists/blacklists, ensure mandatory packages.
- result.put("android",
- UserInfo.FLAG_SYSTEM | UserInfo.FLAG_FULL | UserInfo.FLAG_PROFILE);
+ result.put("android", ~0L);
return result;
}
- /** Converts a user types, as used in SystemConfig, to a UserInfo flag. */
- private static int getFlagsFromUserTypes(Iterable<String> userTypes) {
- // TODO(b/142482943): Update all this for the new UserTypes.
- int flags = 0;
- for (String type : userTypes) {
- switch (type) {
- case "GUEST":
- flags |= UserInfo.FLAG_GUEST;
- break;
- case "RESTRICTED":
- flags |= UserInfo.FLAG_RESTRICTED;
- break;
- case "MANAGED_PROFILE":
- flags |= UserInfo.FLAG_MANAGED_PROFILE;
- break;
- case "EPHEMERAL":
- flags |= UserInfo.FLAG_EPHEMERAL;
- break;
- case "DEMO":
- flags |= UserInfo.FLAG_DEMO;
- break;
- case "FULL":
- flags |= UserInfo.FLAG_FULL;
- break;
- case "SYSTEM":
- flags |= UserInfo.FLAG_SYSTEM;
- break;
- case "PROFILE":
- flags |= UserInfo.FLAG_PROFILE;
- break;
- default:
- Slog.w(TAG, "SystemConfig contained an invalid user type: " + type);
- break;
- // Other UserInfo flags are forbidden.
- // In particular, FLAG_INITIALIZED, FLAG_DISABLED, FLAG_QUIET_MODE are inapplicable.
- // The following are invalid now, but are reconsiderable: FLAG_PRIMARY, FLAG_ADMIN.
+ /**
+ * Returns the bitmask (with exactly one 1) corresponding to the given userType.
+ * Returns 0 if no such userType exists.
+ */
+ @VisibleForTesting
+ long getUserTypeMask(String userType) {
+ final int userTypeIndex = Arrays.binarySearch(mUserTypes, userType);
+ final long userTypeMask = userTypeIndex >= 0 ? (1 << userTypeIndex) : 0;
+ return userTypeMask;
+ }
+
+ /**
+ * Returns the mapping from the name of each base type to the bitset (as defined by
+ * {@link #getUserTypeMask}) of user types to which it corresponds (i.e. the base's subtypes).
+ * <p>
+ * E.g. if "android.type.ex" is a FULL user type for which getUserTypeMask() returns (1 << 3),
+ * then getBaseTypeBitSets().get("FULL") will contain true (1) in position 3.
+ */
+ private Map<String, Long> getBaseTypeBitSets() {
+ long typesBitSetFull = 0;
+ long typesBitSetSystem = 0;
+ long typesBitSetProfile = 0;
+ for (int idx = 0; idx < mUserTypes.length; idx++) {
+ if (mUm.isUserTypeSubtypeOfFull(mUserTypes[idx])) {
+ typesBitSetFull |= (1 << idx);
+ }
+ if (mUm.isUserTypeSubtypeOfSystem(mUserTypes[idx])) {
+ typesBitSetSystem |= (1 << idx);
+ }
+ if (mUm.isUserTypeSubtypeOfProfile(mUserTypes[idx])) {
+ typesBitSetProfile |= (1 << idx);
}
}
- return flags;
+
+ Map<String, Long> result = new ArrayMap<>(3);
+ result.put("FULL", typesBitSetFull);
+ result.put("SYSTEM", typesBitSetSystem);
+ result.put("PROFILE", typesBitSetProfile);
+ return result;
+ }
+
+ /**
+ * Converts a list of user types and base types, as used in SystemConfig, to a bit set
+ * representing (via {@link #getUserTypeMask}) user types.
+ *
+ * Returns 0 if userTypes does not contain any valid user or base types.
+ *
+ * @param baseTypeBitSets a map from the base types (FULL/SYSTEM/PROFILE) to their subtypes
+ * (represented as a bitset, as defined by {@link #getUserTypeMask}).
+ * (This can be created by {@link #getBaseTypeBitSets}.)
+ */
+ private long getTypesBitSet(Iterable<String> userTypes, Map<String, Long> baseTypeBitSets) {
+ long resultBitSet = 0;
+ for (String type : userTypes) {
+ // See if userType is a base type, like FULL.
+ final Long baseTypeBitSet = baseTypeBitSets.get(type);
+ if (baseTypeBitSet != null) {
+ resultBitSet |= baseTypeBitSet;
+ continue;
+ }
+ // userType wasn't a base type, so it should be the name of a specific user type.
+ final long userTypeBitSet = getUserTypeMask(type);
+ if (userTypeBitSet != 0) {
+ resultBitSet |= userTypeBitSet;
+ continue;
+ }
+ Slog.w(TAG, "SystemConfig contained an invalid user type: " + type);
+ }
+ return resultBitSet;
+ }
+
+ /** Returns a sorted array consisting of the keyset of the provided map. */
+ private static String[] getAndSortKeysFromMap(ArrayMap<String, ?> map) {
+ final String[] userTypeList = new String[map.size()];
+ for (int i = 0; i < map.size(); i++) {
+ userTypeList[i] = map.keyAt(i);
+ }
+ Arrays.sort(userTypeList);
+ return userTypeList;
}
void dump(PrintWriter pw) {
final String prefix = " ";
+ final String prefix2 = prefix + prefix;
final int mode = getWhitelistMode();
pw.println("Whitelisted packages per user type");
pw.print(prefix); pw.print("Mode: ");
@@ -465,20 +562,30 @@
pw.print(isEnforceMode(mode) ? " (enforced)" : "");
pw.print(isLogMode(mode) ? " (logged)" : "");
pw.print(isImplicitWhitelistMode(mode) ? " (implicit)" : "");
+ pw.print(isIgnoreOtaMode(mode) ? " (ignore OTAs)" : "");
pw.println();
+ pw.print(prefix); pw.println("Legend");
+ for (int idx = 0; idx < mUserTypes.length; idx++) {
+ pw.print(prefix2); pw.println(idx + " -> " + mUserTypes[idx]);
+ }
+
final int size = mWhitelistedPackagesForUserTypes.size();
if (size == 0) {
pw.print(prefix); pw.println("No packages");
return;
}
- final String prefix2 = prefix + prefix;
pw.print(prefix); pw.print(size); pw.println(" packages:");
- for (int i = 0; i < size; i++) {
- final String pkgName = mWhitelistedPackagesForUserTypes.keyAt(i);
- final String whitelistedUserTypes =
- UserInfo.flagsToString(mWhitelistedPackagesForUserTypes.valueAt(i));
- pw.print(prefix2); pw.print(pkgName); pw.print(": "); pw.println(whitelistedUserTypes);
+ for (int pkgIdx = 0; pkgIdx < size; pkgIdx++) {
+ final String pkgName = mWhitelistedPackagesForUserTypes.keyAt(pkgIdx);
+ pw.print(prefix2); pw.print(pkgName); pw.print(": ");
+ final long userTypesBitSet = mWhitelistedPackagesForUserTypes.valueAt(pkgIdx);
+ for (int idx = 0; idx < mUserTypes.length; idx++) {
+ if ((userTypesBitSet & (1 << idx)) != 0) {
+ pw.print(idx); pw.print(" ");
+ }
+ }
+ pw.println();
}
}
}
diff --git a/services/core/java/com/android/server/pm/UserTypeDetails.java b/services/core/java/com/android/server/pm/UserTypeDetails.java
index 5fc3ba1..1631df3 100644
--- a/services/core/java/com/android/server/pm/UserTypeDetails.java
+++ b/services/core/java/com/android/server/pm/UserTypeDetails.java
@@ -223,6 +223,14 @@
return (mBaseType & UserInfo.FLAG_PROFILE) != 0;
}
+ public boolean isFull() {
+ return (mBaseType & UserInfo.FLAG_FULL) != 0;
+ }
+
+ public boolean isSystem() {
+ return (mBaseType & UserInfo.FLAG_SYSTEM) != 0;
+ }
+
// TODO(b/142482943): Hook this up and don't return the original.
public List<String> getDefaultRestrictions() {
return mDefaultRestrictions;
diff --git a/services/core/java/com/android/server/pm/permission/BasePermission.java b/services/core/java/com/android/server/pm/permission/BasePermission.java
index 037912a..c39dcfe 100644
--- a/services/core/java/com/android/server/pm/permission/BasePermission.java
+++ b/services/core/java/com/android/server/pm/permission/BasePermission.java
@@ -279,9 +279,6 @@
public boolean isTelephony() {
return (protectionLevel & PermissionInfo.PROTECTION_FLAG_TELEPHONY) != 0;
}
- public boolean isWifi() {
- return (protectionLevel & PermissionInfo.PROTECTION_FLAG_WIFI) != 0;
- }
public void transfer(@NonNull String origPackageName, @NonNull String newPackageName) {
if (!origPackageName.equals(sourcePackageName)) {
diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
index e9aad4f..2ffba45 100644
--- a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
+++ b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
@@ -3292,13 +3292,6 @@
// Special permissions for the system telephony apps.
allowed = true;
}
- if (!allowed && bp.isWifi()
- && ArrayUtils.contains(mPackageManagerInt.getKnownPackageNames(
- PackageManagerInternal.PACKAGE_WIFI, UserHandle.USER_SYSTEM),
- pkg.packageName)) {
- // Special permissions for the system wifi.
- allowed = true;
- }
}
return allowed;
}
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java
index 5e1d93f..3e528f4 100644
--- a/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -3334,27 +3334,17 @@
return;
}
Bundle args = null;
- if (deviceId > Integer.MIN_VALUE) {
+ if (deviceId > Integer.MIN_VALUE || hint != null) {
args = new Bundle();
- args.putInt(Intent.EXTRA_ASSIST_INPUT_DEVICE_ID, deviceId);
- }
- if ((mContext.getResources().getConfiguration().uiMode
- & Configuration.UI_MODE_TYPE_MASK) == Configuration.UI_MODE_TYPE_TELEVISION) {
- // On TV, use legacy handling until assistants are implemented in the proper way.
- ((SearchManager) mContext.getSystemService(Context.SEARCH_SERVICE))
- .launchLegacyAssist(hint, mCurrentUserId, args);
- } else {
+ if (deviceId > Integer.MIN_VALUE) {
+ args.putInt(Intent.EXTRA_ASSIST_INPUT_DEVICE_ID, deviceId);
+ }
if (hint != null) {
- if (args == null) {
- args = new Bundle();
- }
args.putBoolean(hint, true);
}
- StatusBarManagerInternal statusbar = getStatusBarManagerInternal();
- if (statusbar != null) {
- statusbar.startAssist(args);
- }
}
+ ((SearchManager) mContext.createContextAsUser(UserHandle.of(mCurrentUserId), 0)
+ .getSystemService(Context.SEARCH_SERVICE)).launchAssist(args);
}
/** Launches ACTION_VOICE_ASSIST. Does nothing on keyguard. */
diff --git a/services/core/java/com/android/server/power/AttentionDetector.java b/services/core/java/com/android/server/power/AttentionDetector.java
index ed7d234..eec0d5f 100644
--- a/services/core/java/com/android/server/power/AttentionDetector.java
+++ b/services/core/java/com/android/server/power/AttentionDetector.java
@@ -16,6 +16,7 @@
package com.android.server.power;
+import static android.provider.DeviceConfig.NAMESPACE_ATTENTION_MANAGER_SERVICE;
import static android.provider.Settings.System.ADAPTIVE_SLEEP;
import android.Manifest;
@@ -33,6 +34,7 @@
import android.os.RemoteException;
import android.os.SystemClock;
import android.os.UserHandle;
+import android.provider.DeviceConfig;
import android.provider.Settings;
import android.service.attention.AttentionService;
import android.util.Slog;
@@ -58,6 +60,22 @@
private static final String TAG = "AttentionDetector";
private static final boolean DEBUG = false;
+ /**
+ * DeviceConfig flag name, describes how much in advance to start checking attention before the
+ * dim event.
+ */
+ static final String KEY_PRE_DIM_CHECK_DURATION_MILLIS = "pre_dim_check_duration_millis";
+
+ /** Default value in absence of {@link DeviceConfig} override. */
+ static final long DEFAULT_PRE_DIM_CHECK_DURATION_MILLIS = 2_000;
+
+ /** DeviceConfig flag name, describes how long to run the check beyond the screen dim event. */
+ static final String KEY_POST_DIM_CHECK_DURATION_MILLIS =
+ "post_dim_check_duration_millis";
+
+ /** Default value in absence of {@link DeviceConfig} override. */
+ static final long DEFAULT_POST_DIM_CHECK_DURATION_MILLIS = 0;
+
private Context mContext;
private boolean mIsSettingEnabled;
@@ -90,11 +108,6 @@
protected int mRequestId;
/**
- * {@link android.service.attention.AttentionService} API timeout.
- */
- private long mMaxAttentionApiTimeoutMillis;
-
- /**
* Last known user activity.
*/
private long mLastUserActivityTime;
@@ -124,6 +137,9 @@
@VisibleForTesting
AttentionCallbackInternalImpl mCallback;
+ /** Keep the last used post dim timeout for the dumpsys. */
+ private long mLastPostDimTimeout;
+
public AttentionDetector(Runnable onUserAttention, Object lock) {
mOnUserAttention = onUserAttention;
mLock = lock;
@@ -149,8 +165,6 @@
mWindowManager = LocalServices.getService(WindowManagerInternal.class);
mMaximumExtensionMillis = context.getResources().getInteger(
com.android.internal.R.integer.config_attentionMaximumExtension);
- mMaxAttentionApiTimeoutMillis = context.getResources().getInteger(
- com.android.internal.R.integer.config_attentionApiTimeout);
try {
final UserSwitchObserver observer = new UserSwitchObserver();
@@ -169,7 +183,8 @@
}, UserHandle.USER_ALL);
}
- public long updateUserActivity(long nextScreenDimming) {
+ /** To be called in {@link PowerManagerService#updateUserActivitySummaryLocked}. */
+ public long updateUserActivity(long nextScreenDimming, long dimDurationMillis) {
if (nextScreenDimming == mLastActedOnNextScreenDimming
|| !mIsSettingEnabled
|| mWindowManager.isKeyguardShowingAndNotOccluded()) {
@@ -184,7 +199,7 @@
}
final long now = SystemClock.uptimeMillis();
- final long whenToCheck = nextScreenDimming - getAttentionTimeout();
+ final long whenToCheck = nextScreenDimming - getPreDimCheckDurationMillis();
final long whenToStopExtending = mLastUserActivityTime + mMaximumExtensionMillis;
if (now < whenToCheck) {
if (DEBUG) {
@@ -213,7 +228,9 @@
mLastActedOnNextScreenDimming = nextScreenDimming;
mCallback = new AttentionCallbackInternalImpl(mRequestId);
Slog.v(TAG, "Checking user attention, ID: " + mRequestId);
- final boolean sent = mAttentionManager.checkAttention(getAttentionTimeout(), mCallback);
+ final boolean sent = mAttentionManager.checkAttention(
+ getPreDimCheckDurationMillis() + getPostDimCheckDurationMillis(dimDurationMillis),
+ mCallback);
if (!sent) {
mRequested.set(false);
}
@@ -272,11 +289,6 @@
}
}
- @VisibleForTesting
- long getAttentionTimeout() {
- return mMaxAttentionApiTimeoutMillis;
- }
-
/**
* {@see AttentionManagerInternal#isAttentionServiceSupported}
*/
@@ -301,12 +313,44 @@
pw.println("AttentionDetector:");
pw.println(" mIsSettingEnabled=" + mIsSettingEnabled);
pw.println(" mMaximumExtensionMillis=" + mMaximumExtensionMillis);
- pw.println(" mMaxAttentionApiTimeoutMillis=" + mMaxAttentionApiTimeoutMillis);
+ pw.println(" preDimCheckDurationMillis=" + getPreDimCheckDurationMillis());
+ pw.println(" postDimCheckDurationMillis=" + mLastPostDimTimeout);
pw.println(" mLastUserActivityTime(excludingAttention)=" + mLastUserActivityTime);
pw.println(" mAttentionServiceSupported=" + isAttentionServiceSupported());
pw.println(" mRequested=" + mRequested);
}
+ /** How long to check <b>before</b> the screen dims, capped at the dim duration. */
+ @VisibleForTesting
+ protected long getPreDimCheckDurationMillis() {
+ final long millis = DeviceConfig.getLong(NAMESPACE_ATTENTION_MANAGER_SERVICE,
+ KEY_PRE_DIM_CHECK_DURATION_MILLIS,
+ DEFAULT_PRE_DIM_CHECK_DURATION_MILLIS);
+
+ if (millis < 0 || millis > 13_000) {
+ Slog.w(TAG, "Bad flag value supplied for: " + KEY_PRE_DIM_CHECK_DURATION_MILLIS);
+ return DEFAULT_PRE_DIM_CHECK_DURATION_MILLIS;
+ }
+
+ return millis;
+ }
+
+ /** How long to check <b>after</b> the screen dims, capped at the dim duration. */
+ @VisibleForTesting
+ protected long getPostDimCheckDurationMillis(long dimDurationMillis) {
+ final long millis = DeviceConfig.getLong(NAMESPACE_ATTENTION_MANAGER_SERVICE,
+ KEY_POST_DIM_CHECK_DURATION_MILLIS,
+ DEFAULT_POST_DIM_CHECK_DURATION_MILLIS);
+
+ if (millis < 0 || millis > 10_000) {
+ Slog.w(TAG, "Bad flag value supplied for: " + KEY_POST_DIM_CHECK_DURATION_MILLIS);
+ return DEFAULT_POST_DIM_CHECK_DURATION_MILLIS;
+ }
+
+ mLastPostDimTimeout = Math.min(millis, dimDurationMillis);
+ return mLastPostDimTimeout;
+ }
+
@VisibleForTesting
final class AttentionCallbackInternalImpl extends AttentionCallbackInternal {
private final int mId;
diff --git a/services/core/java/com/android/server/power/PowerManagerService.java b/services/core/java/com/android/server/power/PowerManagerService.java
index 9cfd095..114a16a 100644
--- a/services/core/java/com/android/server/power/PowerManagerService.java
+++ b/services/core/java/com/android/server/power/PowerManagerService.java
@@ -2140,9 +2140,11 @@
nextTimeout = -1;
}
- if ((mUserActivitySummary & USER_ACTIVITY_SCREEN_BRIGHT) != 0
+ if (((mUserActivitySummary & USER_ACTIVITY_SCREEN_BRIGHT) != 0
+ || (mUserActivitySummary & USER_ACTIVITY_SCREEN_DIM) != 0)
&& (mWakeLockSummary & WAKE_LOCK_STAY_AWAKE) == 0) {
- nextTimeout = mAttentionDetector.updateUserActivity(nextTimeout);
+ nextTimeout = mAttentionDetector.updateUserActivity(nextTimeout,
+ screenDimDuration);
}
if (nextProfileTimeout > 0) {
diff --git a/services/core/java/com/android/server/power/ShutdownThread.java b/services/core/java/com/android/server/power/ShutdownThread.java
index 0a6b38f..6da8fb4 100644
--- a/services/core/java/com/android/server/power/ShutdownThread.java
+++ b/services/core/java/com/android/server/power/ShutdownThread.java
@@ -47,8 +47,8 @@
import android.view.WindowManager;
import com.android.internal.telephony.ITelephony;
-import com.android.server.RescueParty;
import com.android.server.LocalServices;
+import com.android.server.RescueParty;
import com.android.server.pm.PackageManagerService;
import com.android.server.statusbar.StatusBarManagerInternal;
@@ -307,7 +307,9 @@
com.android.internal.R.string.reboot_to_update_reboot));
}
} else if (mReason != null && mReason.equals(PowerManager.REBOOT_RECOVERY)) {
- if (RescueParty.isAttemptingFactoryReset()) {
+ if (showSysuiReboot()) {
+ return null;
+ } else if (RescueParty.isAttemptingFactoryReset()) {
// We're not actually doing a factory reset yet; we're rebooting
// to ask the user if they'd like to reset, so give them a less
// scary dialog message.
diff --git a/services/core/java/com/android/server/recoverysystem/RecoverySystemService.java b/services/core/java/com/android/server/recoverysystem/RecoverySystemService.java
index fe18fbf..fdb14be 100644
--- a/services/core/java/com/android/server/recoverysystem/RecoverySystemService.java
+++ b/services/core/java/com/android/server/recoverysystem/RecoverySystemService.java
@@ -400,13 +400,9 @@
* Sends a command to the uncrypt service.
*
* @param command command to send to the uncrypt service
- * @throws IOException if the socket is closed or there was an error writing to the socket
+ * @throws IOException if there was an error writing to the socket
*/
public void sendCommand(String command) throws IOException {
- if (mLocalSocket.isClosed()) {
- throw new IOException("socket is closed");
- }
-
byte[] cmdUtf8 = command.getBytes(StandardCharsets.UTF_8);
mOutputStream.writeInt(cmdUtf8.length);
mOutputStream.write(cmdUtf8, 0, cmdUtf8.length);
@@ -415,25 +411,17 @@
/**
* Reads the status from the uncrypt service which is usually represented as a percentage.
* @return an integer representing the percentage completed
- * @throws IOException if the socket was closed or there was an error reading the socket
+ * @throws IOException if there was an error reading the socket
*/
public int getPercentageUncrypted() throws IOException {
- if (mLocalSocket.isClosed()) {
- throw new IOException("socket is closed");
- }
-
return mInputStream.readInt();
}
/**
* Sends a confirmation to the uncrypt service.
- * @throws IOException if the socket was closed or there was an error writing to the socket
+ * @throws IOException if there was an error writing to the socket
*/
public void sendAck() throws IOException {
- if (mLocalSocket.isClosed()) {
- throw new IOException("socket is closed");
- }
-
mOutputStream.writeInt(0);
}
diff --git a/services/core/java/com/android/server/rollback/RollbackManagerServiceImpl.java b/services/core/java/com/android/server/rollback/RollbackManagerServiceImpl.java
index 01f29dc..00779ec 100644
--- a/services/core/java/com/android/server/rollback/RollbackManagerServiceImpl.java
+++ b/services/core/java/com/android/server/rollback/RollbackManagerServiceImpl.java
@@ -67,6 +67,7 @@
import java.time.Instant;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
@@ -82,6 +83,7 @@
class RollbackManagerServiceImpl extends IRollbackManager.Stub {
private static final String TAG = "RollbackManager";
+ private static final boolean LOCAL_LOGV = false;
// Rollbacks expire after 14 days.
private static final long DEFAULT_ROLLBACK_LIFETIME_DURATION_MILLIS =
@@ -220,6 +222,9 @@
if (Intent.ACTION_CANCEL_ENABLE_ROLLBACK.equals(intent.getAction())) {
int token = intent.getIntExtra(
PackageManagerInternal.EXTRA_ENABLE_ROLLBACK_TOKEN, -1);
+ if (LOCAL_LOGV) {
+ Slog.v(TAG, "broadcast=ACTION_CANCEL_ENABLE_ROLLBACK token=" + token);
+ }
synchronized (mLock) {
for (NewRollback rollback : mNewRollbacks) {
if (rollback.hasToken(token)) {
@@ -269,10 +274,17 @@
String action = intent.getAction();
if (Intent.ACTION_PACKAGE_REPLACED.equals(action)) {
String packageName = intent.getData().getSchemeSpecificPart();
+ if (LOCAL_LOGV) {
+ Slog.v(TAG, "broadcast=ACTION_PACKAGE_REPLACED" + " pkg=" + packageName);
+ }
onPackageReplaced(packageName);
}
if (Intent.ACTION_PACKAGE_FULLY_REMOVED.equals(action)) {
String packageName = intent.getData().getSchemeSpecificPart();
+ if (LOCAL_LOGV) {
+ Slog.v(TAG, "broadcast=ACTION_PACKAGE_FULLY_REMOVED"
+ + " pkg=" + packageName);
+ }
onPackageFullyRemoved(packageName);
}
}
@@ -359,7 +371,7 @@
*/
private void commitRollbackInternal(int rollbackId, List<VersionedPackage> causePackages,
String callerPackageName, IntentSender statusReceiver) {
- Slog.i(TAG, "Initiating rollback");
+ Slog.i(TAG, "commitRollback id=" + rollbackId + " caller=" + callerPackageName);
Rollback rollback = getRollbackForId(rollbackId);
if (rollback == null) {
@@ -444,6 +456,9 @@
}
void onUnlockUser(int userId) {
+ if (LOCAL_LOGV) {
+ Slog.v(TAG, "onUnlockUser id=" + userId);
+ }
// In order to ensure that no package begins running while a backup or restore is taking
// place, onUnlockUser must remain blocked until all pending backups and restores have
// completed.
@@ -611,6 +626,9 @@
if (!now.isBefore(
rollbackTimestamp
.plusMillis(mRollbackLifetimeDurationInMillis))) {
+ if (LOCAL_LOGV) {
+ Slog.v(TAG, "runExpiration id=" + rollback.info.getRollbackId());
+ }
iter.remove();
rollback.delete(mAppDataRollbackHelper);
} else if (oldest == null || oldest.isAfter(rollbackTimestamp)) {
@@ -675,6 +693,10 @@
*/
private boolean enableRollback(
int installFlags, File newPackageCodePath, @UserIdInt int user, int token) {
+ if (LOCAL_LOGV) {
+ Slog.v(TAG, "enableRollback user=" + user + " token=" + token
+ + " path=" + newPackageCodePath.getAbsolutePath());
+ }
// Find the session id associated with this install.
// TODO: It would be nice if package manager or package installer told
@@ -838,6 +860,10 @@
}
private void snapshotUserDataInternal(String packageName, int[] userIds) {
+ if (LOCAL_LOGV) {
+ Slog.v(TAG, "snapshotUserData pkg=" + packageName
+ + " users=" + Arrays.toString(userIds));
+ }
synchronized (mLock) {
// staged installs
for (int i = 0; i < mRollbacks.size(); i++) {
@@ -854,6 +880,10 @@
private void restoreUserDataInternal(
String packageName, int[] userIds, int appId, String seInfo) {
+ if (LOCAL_LOGV) {
+ Slog.v(TAG, "restoreUserData pkg=" + packageName
+ + " users=" + Arrays.toString(userIds));
+ }
synchronized (mLock) {
for (int i = 0; i < mRollbacks.size(); ++i) {
Rollback rollback = mRollbacks.get(i);
@@ -1041,6 +1071,9 @@
@Override
public void onFinished(int sessionId, boolean success) {
+ if (LOCAL_LOGV) {
+ Slog.v(TAG, "SessionCallback.onFinished id=" + sessionId + " success=" + success);
+ }
NewRollback newRollback;
synchronized (mLock) {
newRollback = getNewRollbackForPackageSessionLocked(sessionId);
@@ -1070,6 +1103,10 @@
*/
private Rollback completeEnableRollback(NewRollback newRollback, boolean success) {
Rollback rollback = newRollback.rollback;
+ if (LOCAL_LOGV) {
+ Slog.v(TAG, "completeEnableRollback id="
+ + rollback.info.getRollbackId() + " success=" + success);
+ }
if (!success) {
// The install session was aborted, clean up the pending install.
rollback.delete(mAppDataRollbackHelper);
@@ -1108,6 +1145,9 @@
@GuardedBy("rollback.getLock")
private void makeRollbackAvailable(Rollback rollback) {
+ if (LOCAL_LOGV) {
+ Slog.v(TAG, "makeRollbackAvailable id=" + rollback.info.getRollbackId());
+ }
rollback.makeAvailable();
// TODO(zezeozue): Provide API to explicitly start observing instead
@@ -1280,6 +1320,11 @@
final Rollback rollback;
int parentSessionId = parentSession.getSessionId();
+ if (LOCAL_LOGV) {
+ Slog.v(TAG, "createNewRollback id=" + rollbackId
+ + " user=" + userId + " installer=" + installerPackageName);
+ }
+
if (parentSession.isStaged()) {
rollback = mRollbackStore.createStagedRollback(rollbackId, parentSessionId, userId,
installerPackageName);
diff --git a/services/core/java/com/android/server/search/SearchManagerService.java b/services/core/java/com/android/server/search/SearchManagerService.java
index bc1a12f..1494edf 100644
--- a/services/core/java/com/android/server/search/SearchManagerService.java
+++ b/services/core/java/com/android/server/search/SearchManagerService.java
@@ -18,7 +18,6 @@
import android.app.ActivityManager;
import android.app.ActivityTaskManager;
-import android.app.IActivityManager;
import android.app.IActivityTaskManager;
import android.app.ISearchManager;
import android.app.SearchManager;
@@ -29,6 +28,7 @@
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
+import android.content.res.Configuration;
import android.database.ContentObserver;
import android.os.Binder;
import android.os.Bundle;
@@ -265,11 +265,17 @@
}
@Override
- public void launchAssist(Bundle args) {
- StatusBarManagerInternal statusBarManager =
- LocalServices.getService(StatusBarManagerInternal.class);
- if (statusBarManager != null) {
- statusBarManager.startAssist(args);
+ public void launchAssist(int userHandle, Bundle args) {
+ if ((mContext.getResources().getConfiguration().uiMode
+ & Configuration.UI_MODE_TYPE_MASK) == Configuration.UI_MODE_TYPE_TELEVISION) {
+ // On TV, use legacy handling until assistants are implemented in the proper way.
+ launchLegacyAssist(null, userHandle, args);
+ } else {
+ StatusBarManagerInternal statusBarManager =
+ LocalServices.getService(StatusBarManagerInternal.class);
+ if (statusBarManager != null) {
+ statusBarManager.startAssist(args);
+ }
}
}
@@ -298,8 +304,7 @@
return null;
}
- @Override
- public boolean launchLegacyAssist(String hint, int userHandle, Bundle args) {
+ private boolean launchLegacyAssist(String hint, int userHandle, Bundle args) {
ComponentName comp = getLegacyAssistComponent(userHandle);
if (comp == null) {
return false;
diff --git a/services/core/java/com/android/server/storage/StorageSessionController.java b/services/core/java/com/android/server/storage/StorageSessionController.java
index 72a1b9d..d76836f 100644
--- a/services/core/java/com/android/server/storage/StorageSessionController.java
+++ b/services/core/java/com/android/server/storage/StorageSessionController.java
@@ -69,15 +69,21 @@
}
/**
- * Creates a storage session associated with {@code deviceFd} for {@code vol}. Sessions can be
- * started with {@link #onVolumeReady} and removed with {@link #onVolumeUnmount} or
- * {@link #onVolumeRemove}.
+ * Creates and starts a storage session associated with {@code deviceFd} for {@code vol}.
+ * Sessions can be started with {@link #onVolumeReady} and removed with {@link #onVolumeUnmount}
+ * or {@link #onVolumeRemove}.
+ *
+ * Throws an {@link IllegalStateException} if a session for {@code vol} has already been created
*
* Does nothing if {@link #shouldHandle} is {@code false}
*
+ * Blocks until the session is started or fails
+ *
+ * @throws ExternalStorageServiceException if the session fails to start
* @throws IllegalStateException if a session has already been created for {@code vol}
*/
- public void onVolumeMount(FileDescriptor deviceFd, VolumeInfo vol) {
+ public void onVolumeMount(FileDescriptor deviceFd, VolumeInfo vol)
+ throws ExternalStorageServiceException {
if (!shouldHandle(vol)) {
return;
}
@@ -87,71 +93,22 @@
String sessionId = vol.getId();
int userId = vol.getMountUserId();
- if (deviceFd == null) {
- Slog.w(TAG, "Null fd. Session not started for vol: " + vol);
- return;
- }
-
- // Get realpath for the fd, paths that are not /dev/null need additional
- // setup by the ExternalStorageService before they can be ready
- String realPath;
- try {
- realPath = ParcelFileDescriptor.getFile(deviceFd).getPath();
- } catch (IOException e) {
- Slog.wtf(TAG, "Could not get real path from fd: " + deviceFd, e);
- return;
- }
-
- if ("/dev/null".equals(realPath)) {
- Slog.i(TAG, "Volume ready for use with id: " + sessionId);
- return;
- }
-
+ StorageUserConnection connection = null;
synchronized (mLock) {
- StorageUserConnection connection = mConnections.get(userId);
+ connection = mConnections.get(userId);
if (connection == null) {
+ Slog.i(TAG, "Creating connection for user: " + userId);
connection = new StorageUserConnection(mContext, userId, this);
mConnections.put(userId, connection);
}
Slog.i(TAG, "Creating session with id: " + sessionId);
- connection.createSession(sessionId, new ParcelFileDescriptor(deviceFd));
- }
- }
-
- /**
- * Starts a storage session associated with {@code vol} after {@link #onVolumeMount}.
- *
- * Subsequent calls will attempt to start the storage session, but does nothing if already
- * started. If the user associated with {@code vol} is not yet ready, all pending sesssions
- * can be restarted with {@link onUnlockUser}.
- *
- * Does nothing if {@link #shouldHandle} is {@code false}
- *
- * Blocks until the session is started or fails
- *
- * @throws ExternalStorageServiceException if the session fails to start
- */
- public void onVolumeReady(VolumeInfo vol) throws ExternalStorageServiceException {
- if (!shouldHandle(vol)) {
- return;
+ connection.createSession(sessionId, new ParcelFileDescriptor(deviceFd),
+ vol.getPath().getPath(), vol.getInternalPath().getPath());
}
- Slog.i(TAG, "On volume ready " + vol);
- String sessionId = vol.getId();
-
- StorageUserConnection connection = null;
- synchronized (mLock) {
- connection = mConnections.get(vol.getMountUserId());
- if (connection == null) {
- Slog.i(TAG, "Volume ready but no associated connection");
- return;
- }
- }
-
- connection.initSession(sessionId, vol.getPath().getPath(),
- vol.getInternalPath().getPath());
-
- if (isReady()) {
+ // At boot, a volume can be mounted before user is unlocked, in that case, we create it
+ // above and save it so that we can restart all sessions when the user is unlocked
+ if (mExternalStorageServiceComponent != null) {
connection.startSession(sessionId);
} else {
Slog.i(TAG, "Controller not initialised, session not started " + sessionId);
@@ -205,14 +162,10 @@
if (connection != null) {
String sessionId = vol.getId();
- if (isReady()) {
- try {
- connection.removeSessionAndWait(sessionId);
- } catch (ExternalStorageServiceException e) {
- Slog.e(TAG, "Failed to end session for vol with id: " + sessionId, e);
- }
- } else {
- Slog.i(TAG, "Controller not initialised, session not ended " + sessionId);
+ try {
+ connection.removeSessionAndWait(sessionId);
+ } catch (ExternalStorageServiceException e) {
+ Slog.e(TAG, "Failed to end session for vol with id: " + sessionId, e);
}
}
}
@@ -232,7 +185,7 @@
Slog.i(TAG, "On user unlock " + userId);
if (userId == 0) {
- init();
+ initExternalStorageServiceComponent();
}
StorageUserConnection connection = null;
@@ -259,13 +212,6 @@
return;
}
- if (!isReady()) {
- synchronized (mLock) {
- mConnections.clear();
- }
- return;
- }
-
SparseArray<StorageUserConnection> connections = new SparseArray();
synchronized (mLock) {
mIsResetting = true;
@@ -311,7 +257,7 @@
}
}
- private void init() throws ExternalStorageServiceException {
+ private void initExternalStorageServiceComponent() throws ExternalStorageServiceException {
Slog.i(TAG, "Initialialising...");
ProviderInfo provider = mContext.getPackageManager().resolveContentProvider(
MediaStore.AUTHORITY, PackageManager.MATCH_DIRECT_BOOT_AWARE
@@ -415,8 +361,4 @@
private boolean shouldHandle(@Nullable VolumeInfo vol) {
return mIsFuseEnabled && !mIsResetting && (vol == null || isEmulatedOrPublic(vol));
}
-
- private boolean isReady() {
- return mExternalStorageServiceComponent != null;
- }
}
diff --git a/services/core/java/com/android/server/storage/StorageUserConnection.java b/services/core/java/com/android/server/storage/StorageUserConnection.java
index 24b56a4..7c47730 100644
--- a/services/core/java/com/android/server/storage/StorageUserConnection.java
+++ b/services/core/java/com/android/server/storage/StorageUserConnection.java
@@ -75,46 +75,20 @@
/**
* Creates and stores a storage {@link Session}.
*
- * Created sessions must be initialised with {@link #initSession} before starting with
- * {@link #startSession}.
- *
* They must also be cleaned up with {@link #removeSession}.
*
* @throws IllegalArgumentException if a {@code Session} with {@code sessionId} already exists
*/
- public void createSession(String sessionId, ParcelFileDescriptor pfd) {
+ public void createSession(String sessionId, ParcelFileDescriptor pfd, String upperPath,
+ String lowerPath) {
Preconditions.checkNotNull(sessionId);
Preconditions.checkNotNull(pfd);
+ Preconditions.checkNotNull(upperPath);
+ Preconditions.checkNotNull(lowerPath);
synchronized (mLock) {
Preconditions.checkArgument(!mSessions.containsKey(sessionId));
- mSessions.put(sessionId, new Session(sessionId, pfd));
- }
- }
-
- /**
- * Initialise a storage {@link Session}.
- *
- * Initialised sessions can be started with {@link #startSession}.
- *
- * They must also be cleaned up with {@link #removeSession}.
- *
- * @throws IllegalArgumentException if {@code sessionId} does not exist or is initialised
- */
- public void initSession(String sessionId, String upperPath, String lowerPath) {
- synchronized (mLock) {
- Session session = mSessions.get(sessionId);
- if (session == null) {
- throw new IllegalStateException("Failed to initialise non existent session. Id: "
- + sessionId + ". Upper path: " + upperPath + ". Lower path: " + lowerPath);
- } else if (session.isInitialisedLocked()) {
- throw new IllegalStateException("Already initialised session. Id: "
- + sessionId + ". Upper path: " + upperPath + ". Lower path: " + lowerPath);
- } else {
- session.upperPath = upperPath;
- session.lowerPath = lowerPath;
- Slog.i(TAG, "Initialised session: " + session);
- }
+ mSessions.put(sessionId, new Session(sessionId, pfd, upperPath, lowerPath));
}
}
@@ -440,14 +414,14 @@
private static final class Session implements AutoCloseable {
public final String sessionId;
public final ParcelFileDescriptor pfd;
- @GuardedBy("mLock")
- public String lowerPath;
- @GuardedBy("mLock")
- public String upperPath;
+ public final String lowerPath;
+ public final String upperPath;
- Session(String sessionId, ParcelFileDescriptor pfd) {
+ Session(String sessionId, ParcelFileDescriptor pfd, String upperPath, String lowerPath) {
this.sessionId = sessionId;
this.pfd = pfd;
+ this.upperPath = upperPath;
+ this.lowerPath = lowerPath;
}
@Override
diff --git a/services/core/java/com/android/server/testharness/TestHarnessModeService.java b/services/core/java/com/android/server/testharness/TestHarnessModeService.java
index fcf87ee..7786833 100644
--- a/services/core/java/com/android/server/testharness/TestHarnessModeService.java
+++ b/services/core/java/com/android/server/testharness/TestHarnessModeService.java
@@ -165,7 +165,7 @@
Settings.Global.putLong(cr, Settings.Global.ADB_ALLOWED_CONNECTION_TIME, 0);
Settings.Global.putInt(cr, Settings.Global.ADB_ENABLED, 1);
Settings.Global.putInt(cr, Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 1);
- Settings.Global.putInt(cr, Settings.Global.PACKAGE_VERIFIER_ENABLE, 0);
+ Settings.Global.putInt(cr, Settings.Global.PACKAGE_VERIFIER_INCLUDE_ADB, 0);
Settings.Global.putInt(
cr,
Settings.Global.STAY_ON_WHILE_PLUGGED_IN,
diff --git a/services/core/java/com/android/server/timedetector/SimpleTimeDetectorStrategy.java b/services/core/java/com/android/server/timedetector/SimpleTimeDetectorStrategy.java
index 9dbbf16..0b970bf 100644
--- a/services/core/java/com/android/server/timedetector/SimpleTimeDetectorStrategy.java
+++ b/services/core/java/com/android/server/timedetector/SimpleTimeDetectorStrategy.java
@@ -16,35 +16,58 @@
package com.android.server.timedetector;
+import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.app.AlarmManager;
+import android.app.timedetector.ManualTimeSuggestion;
import android.app.timedetector.PhoneTimeSuggestion;
import android.content.Intent;
+import android.util.LocalLog;
import android.util.Slog;
import android.util.TimestampedValue;
+import com.android.internal.annotations.GuardedBy;
import com.android.internal.telephony.TelephonyIntents;
+import com.android.internal.util.IndentingPrintWriter;
import java.io.PrintWriter;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
/**
* An implementation of TimeDetectorStrategy that passes only NITZ suggestions to
- * {@link AlarmManager}. The TimeDetectorService handles thread safety: all calls to
- * this class can be assumed to be single threaded (though the thread used may vary).
+ * {@link AlarmManager}.
+ *
+ * <p>Most public methods are marked synchronized to ensure thread safety around internal state.
*/
-// @NotThreadSafe
public final class SimpleTimeDetectorStrategy implements TimeDetectorStrategy {
- private final static String TAG = "timedetector.SimpleTimeDetectorStrategy";
+ private static final boolean DBG = false;
+ private static final String LOG_TAG = "SimpleTimeDetectorStrategy";
+
+ @IntDef({ ORIGIN_PHONE, ORIGIN_MANUAL })
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface Origin {}
+
+ /** Used when a time value originated from a telephony signal. */
+ @Origin
+ private static final int ORIGIN_PHONE = 1;
+
+ /** Used when a time value originated from a user / manual settings. */
+ @Origin
+ private static final int ORIGIN_MANUAL = 2;
/**
* CLOCK_PARANOIA: The maximum difference allowed between the expected system clock time and the
* actual system clock time before a warning is logged. Used to help identify situations where
- * there is something other than this class setting the system clock.
+ * there is something other than this class setting the system clock automatically.
*/
private static final long SYSTEM_CLOCK_PARANOIA_THRESHOLD_MILLIS = 2 * 1000;
+ // A log for changes made to the system clock and why.
+ @NonNull private final LocalLog mTimeChangesLog = new LocalLog(30);
+
// @NonNull after initialize()
private Callback mCallback;
@@ -52,11 +75,11 @@
@Nullable private PhoneTimeSuggestion mLastPhoneSuggestion;
// Information about the last time signal received: Used when toggling auto-time.
- @Nullable private TimestampedValue<Long> mLastSystemClockTime;
- private boolean mLastSystemClockTimeSendNetworkBroadcast;
+ @Nullable private TimestampedValue<Long> mLastAutoSystemClockTime;
+ private boolean mLastAutoSystemClockTimeSendNetworkBroadcast;
// System clock state.
- @Nullable private TimestampedValue<Long> mLastSystemClockTimeSet;
+ @Nullable private TimestampedValue<Long> mLastAutoSystemClockTimeSet;
@Override
public void initialize(@NonNull Callback callback) {
@@ -64,26 +87,32 @@
}
@Override
- public void suggestPhoneTime(@NonNull PhoneTimeSuggestion timeSuggestion) {
+ public synchronized void suggestPhoneTime(@NonNull PhoneTimeSuggestion timeSuggestion) {
// NITZ logic
+ // Empty suggestions are just ignored as we don't currently keep track of suggestion origin.
+ if (timeSuggestion.getUtcTime() == null) {
+ return;
+ }
+
boolean timeSuggestionIsValid =
validateNewPhoneSuggestion(timeSuggestion, mLastPhoneSuggestion);
if (!timeSuggestionIsValid) {
return;
}
// Always store the last NITZ value received, regardless of whether we go on to use it to
- // update the system clock. This is so that we can validate future NITZ signals.
+ // update the system clock. This is so that we can validate future phone suggestions.
mLastPhoneSuggestion = timeSuggestion;
// System clock update logic.
-
- // Historically, Android has sent a telephony broadcast only when setting the time using
- // NITZ.
- final boolean sendNetworkBroadcast = true;
-
final TimestampedValue<Long> newUtcTime = timeSuggestion.getUtcTime();
- setSystemClockIfRequired(newUtcTime, sendNetworkBroadcast);
+ setSystemClockIfRequired(ORIGIN_PHONE, newUtcTime, timeSuggestion);
+ }
+
+ @Override
+ public synchronized void suggestManualTime(ManualTimeSuggestion timeSuggestion) {
+ final TimestampedValue<Long> newUtcTime = timeSuggestion.getUtcTime();
+ setSystemClockIfRequired(ORIGIN_MANUAL, newUtcTime, timeSuggestion);
}
private static boolean validateNewPhoneSuggestion(@NonNull PhoneTimeSuggestion newSuggestion,
@@ -94,7 +123,7 @@
newSuggestion.getUtcTime(), lastSuggestion.getUtcTime());
if (referenceTimeDifference < 0 || referenceTimeDifference > Integer.MAX_VALUE) {
// Out of order or bogus.
- Slog.w(TAG, "validateNewNitzTime: Bad NITZ signal received."
+ Slog.w(LOG_TAG, "Bad NITZ signal received."
+ " referenceTimeDifference=" + referenceTimeDifference
+ " lastSuggestion=" + lastSuggestion
+ " newSuggestion=" + newSuggestion);
@@ -104,17 +133,37 @@
return true;
}
+ @GuardedBy("this")
private void setSystemClockIfRequired(
- TimestampedValue<Long> time, boolean sendNetworkBroadcast) {
+ @Origin int origin, TimestampedValue<Long> time, Object cause) {
+ // Historically, Android has sent a TelephonyIntents.ACTION_NETWORK_SET_TIME broadcast only
+ // when setting the time using NITZ.
+ boolean sendNetworkBroadcast = origin == ORIGIN_PHONE;
- // Store the last candidate we've seen in all cases so we can set the system clock
- // when/if time detection is enabled.
- mLastSystemClockTime = time;
- mLastSystemClockTimeSendNetworkBroadcast = sendNetworkBroadcast;
+ boolean isOriginAutomatic = isOriginAutomatic(origin);
+ if (isOriginAutomatic) {
+ // Store the last auto time candidate we've seen in all cases so we can set the system
+ // clock when/if time detection is off but later enabled.
+ mLastAutoSystemClockTime = time;
+ mLastAutoSystemClockTimeSendNetworkBroadcast = sendNetworkBroadcast;
- if (!mCallback.isTimeDetectionEnabled()) {
- Slog.d(TAG, "setSystemClockIfRequired: Time detection is not enabled. time=" + time);
- return;
+ if (!mCallback.isAutoTimeDetectionEnabled()) {
+ if (DBG) {
+ Slog.d(LOG_TAG, "Auto time detection is not enabled."
+ + " time=" + time
+ + ", cause=" + cause);
+ }
+ return;
+ }
+ } else {
+ if (mCallback.isAutoTimeDetectionEnabled()) {
+ if (DBG) {
+ Slog.d(LOG_TAG, "Auto time detection is enabled."
+ + " time=" + time
+ + ", cause=" + cause);
+ }
+ return;
+ }
}
mCallback.acquireWakeLock();
@@ -122,37 +171,45 @@
long elapsedRealtimeMillis = mCallback.elapsedRealtimeMillis();
long actualTimeMillis = mCallback.systemClockMillis();
- // CLOCK_PARANOIA : Check to see if this class owns the clock or if something else
- // may be setting the clock.
- if (mLastSystemClockTimeSet != null) {
- long expectedTimeMillis = TimeDetectorStrategy.getTimeAt(
- mLastSystemClockTimeSet, elapsedRealtimeMillis);
- long absSystemClockDifference = Math.abs(expectedTimeMillis - actualTimeMillis);
- if (absSystemClockDifference > SYSTEM_CLOCK_PARANOIA_THRESHOLD_MILLIS) {
- Slog.w(TAG, "System clock has not tracked elapsed real time clock. A clock may"
- + " be inaccurate or something unexpectedly set the system clock."
- + " elapsedRealtimeMillis=" + elapsedRealtimeMillis
- + " expectedTimeMillis=" + expectedTimeMillis
- + " actualTimeMillis=" + actualTimeMillis);
+ if (isOriginAutomatic) {
+ // CLOCK_PARANOIA : Check to see if this class owns the clock or if something else
+ // may be setting the clock.
+ if (mLastAutoSystemClockTimeSet != null) {
+ long expectedTimeMillis = TimeDetectorStrategy.getTimeAt(
+ mLastAutoSystemClockTimeSet, elapsedRealtimeMillis);
+ long absSystemClockDifference = Math.abs(expectedTimeMillis - actualTimeMillis);
+ if (absSystemClockDifference > SYSTEM_CLOCK_PARANOIA_THRESHOLD_MILLIS) {
+ Slog.w(LOG_TAG,
+ "System clock has not tracked elapsed real time clock. A clock may"
+ + " be inaccurate or something unexpectedly set the system"
+ + " clock."
+ + " elapsedRealtimeMillis=" + elapsedRealtimeMillis
+ + " expectedTimeMillis=" + expectedTimeMillis
+ + " actualTimeMillis=" + actualTimeMillis);
+ }
}
}
- final String reason = "New time signal";
adjustAndSetDeviceSystemClock(
- time, sendNetworkBroadcast, elapsedRealtimeMillis, actualTimeMillis, reason);
+ time, sendNetworkBroadcast, elapsedRealtimeMillis, actualTimeMillis, cause);
} finally {
mCallback.releaseWakeLock();
}
}
+ private static boolean isOriginAutomatic(@Origin int origin) {
+ return origin == ORIGIN_PHONE;
+ }
+
@Override
- public void handleAutoTimeDetectionToggle(boolean enabled) {
+ public synchronized void handleAutoTimeDetectionChanged() {
// If automatic time detection is enabled we update the system clock instantly if we can.
// Conversely, if automatic time detection is disabled we leave the clock as it is.
+ boolean enabled = mCallback.isAutoTimeDetectionEnabled();
if (enabled) {
- if (mLastSystemClockTime != null) {
+ if (mLastAutoSystemClockTime != null) {
// Only send the network broadcast if the last candidate would have caused one.
- final boolean sendNetworkBroadcast = mLastSystemClockTimeSendNetworkBroadcast;
+ final boolean sendNetworkBroadcast = mLastAutoSystemClockTimeSendNetworkBroadcast;
mCallback.acquireWakeLock();
try {
@@ -160,7 +217,7 @@
long actualTimeMillis = mCallback.systemClockMillis();
final String reason = "Automatic time detection enabled.";
- adjustAndSetDeviceSystemClock(mLastSystemClockTime, sendNetworkBroadcast,
+ adjustAndSetDeviceSystemClock(mLastAutoSystemClockTime, sendNetworkBroadcast,
elapsedRealtimeMillis, actualTimeMillis, reason);
} finally {
mCallback.releaseWakeLock();
@@ -169,22 +226,35 @@
} else {
// CLOCK_PARANOIA: We are losing "control" of the system clock so we cannot predict what
// it should be in future.
- mLastSystemClockTimeSet = null;
+ mLastAutoSystemClockTimeSet = null;
}
}
@Override
- public void dump(@NonNull PrintWriter pw, @Nullable String[] args) {
+ public synchronized void dump(@NonNull PrintWriter pw, @Nullable String[] args) {
pw.println("mLastPhoneSuggestion=" + mLastPhoneSuggestion);
- pw.println("mLastSystemClockTimeSet=" + mLastSystemClockTimeSet);
- pw.println("mLastSystemClockTime=" + mLastSystemClockTime);
- pw.println("mLastSystemClockTimeSendNetworkBroadcast="
- + mLastSystemClockTimeSendNetworkBroadcast);
+ pw.println("mLastAutoSystemClockTimeSet=" + mLastAutoSystemClockTimeSet);
+ pw.println("mLastAutoSystemClockTime=" + mLastAutoSystemClockTime);
+ pw.println("mLastAutoSystemClockTimeSendNetworkBroadcast="
+ + mLastAutoSystemClockTimeSendNetworkBroadcast);
+
+ IndentingPrintWriter ipw = new IndentingPrintWriter(pw, " ");
+
+ ipw.println("TimeDetectorStrategyImpl logs:");
+ ipw.increaseIndent(); // level 1
+
+ ipw.println("Time change log:");
+ ipw.increaseIndent(); // level 2
+ mTimeChangesLog.dump(ipw);
+ ipw.decreaseIndent(); // level 2
+
+ ipw.decreaseIndent(); // level 1
}
+ @GuardedBy("this")
private void adjustAndSetDeviceSystemClock(
TimestampedValue<Long> newTime, boolean sendNetworkBroadcast,
- long elapsedRealtimeMillis, long actualSystemClockMillis, String reason) {
+ long elapsedRealtimeMillis, long actualSystemClockMillis, Object cause) {
// Adjust for the time that has elapsed since the signal was received.
long newSystemClockMillis = TimeDetectorStrategy.getTimeAt(newTime, elapsedRealtimeMillis);
@@ -194,24 +264,30 @@
long absTimeDifference = Math.abs(newSystemClockMillis - actualSystemClockMillis);
long systemClockUpdateThreshold = mCallback.systemClockUpdateThresholdMillis();
if (absTimeDifference < systemClockUpdateThreshold) {
- Slog.d(TAG, "adjustAndSetDeviceSystemClock: Not setting system clock. New time and"
- + " system clock are close enough."
- + " elapsedRealtimeMillis=" + elapsedRealtimeMillis
- + " newTime=" + newTime
- + " reason=" + reason
- + " systemClockUpdateThreshold=" + systemClockUpdateThreshold
- + " absTimeDifference=" + absTimeDifference);
+ if (DBG) {
+ Slog.d(LOG_TAG, "Not setting system clock. New time and"
+ + " system clock are close enough."
+ + " elapsedRealtimeMillis=" + elapsedRealtimeMillis
+ + " newTime=" + newTime
+ + " cause=" + cause
+ + " systemClockUpdateThreshold=" + systemClockUpdateThreshold
+ + " absTimeDifference=" + absTimeDifference);
+ }
return;
}
- Slog.d(TAG, "Setting system clock using time=" + newTime
- + " reason=" + reason
- + " elapsedRealtimeMillis=" + elapsedRealtimeMillis
- + " newTimeMillis=" + newSystemClockMillis);
mCallback.setSystemClock(newSystemClockMillis);
+ String logMsg = "Set system clock using time=" + newTime
+ + " cause=" + cause
+ + " elapsedRealtimeMillis=" + elapsedRealtimeMillis
+ + " newSystemClockMillis=" + newSystemClockMillis;
+ if (DBG) {
+ Slog.d(LOG_TAG, logMsg);
+ }
+ mTimeChangesLog.log(logMsg);
// CLOCK_PARANOIA : Record the last time this class set the system clock.
- mLastSystemClockTimeSet = newTime;
+ mLastAutoSystemClockTimeSet = newTime;
if (sendNetworkBroadcast) {
// Send a broadcast that telephony code used to send after setting the clock.
diff --git a/services/core/java/com/android/server/timedetector/TimeDetectorService.java b/services/core/java/com/android/server/timedetector/TimeDetectorService.java
index ee42279..34400ff 100644
--- a/services/core/java/com/android/server/timedetector/TimeDetectorService.java
+++ b/services/core/java/com/android/server/timedetector/TimeDetectorService.java
@@ -19,14 +19,14 @@
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.app.timedetector.ITimeDetectorService;
+import android.app.timedetector.ManualTimeSuggestion;
import android.app.timedetector.PhoneTimeSuggestion;
import android.content.ContentResolver;
import android.content.Context;
import android.database.ContentObserver;
-import android.os.Binder;
+import android.os.Handler;
import android.provider.Settings;
-import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.util.DumpUtils;
import com.android.server.FgThread;
@@ -38,7 +38,7 @@
import java.util.Objects;
public final class TimeDetectorService extends ITimeDetectorService.Stub {
- private static final String TAG = "timedetector.TimeDetectorService";
+ private static final String TAG = "TimeDetectorService";
public static class Lifecycle extends SystemService {
@@ -56,29 +56,25 @@
}
}
+ @NonNull private final Handler mHandler;
@NonNull private final Context mContext;
@NonNull private final Callback mCallback;
-
- // The lock used when call the strategy to ensure thread safety.
- @NonNull private final Object mStrategyLock = new Object();
-
- @GuardedBy("mStrategyLock")
@NonNull private final TimeDetectorStrategy mTimeDetectorStrategy;
private static TimeDetectorService create(@NonNull Context context) {
- final TimeDetectorStrategy timeDetector = new SimpleTimeDetectorStrategy();
- final TimeDetectorStrategyCallbackImpl callback =
- new TimeDetectorStrategyCallbackImpl(context);
+ TimeDetectorStrategy timeDetector = new SimpleTimeDetectorStrategy();
+ TimeDetectorStrategyCallbackImpl callback = new TimeDetectorStrategyCallbackImpl(context);
timeDetector.initialize(callback);
+ Handler handler = FgThread.getHandler();
TimeDetectorService timeDetectorService =
- new TimeDetectorService(context, callback, timeDetector);
+ new TimeDetectorService(context, handler, callback, timeDetector);
// Wire up event listening.
ContentResolver contentResolver = context.getContentResolver();
contentResolver.registerContentObserver(
Settings.Global.getUriFor(Settings.Global.AUTO_TIME), true,
- new ContentObserver(FgThread.getHandler()) {
+ new ContentObserver(handler) {
public void onChange(boolean selfChange) {
timeDetectorService.handleAutoTimeDetectionToggle();
}
@@ -88,34 +84,33 @@
}
@VisibleForTesting
- public TimeDetectorService(@NonNull Context context, @NonNull Callback callback,
- @NonNull TimeDetectorStrategy timeDetectorStrategy) {
+ public TimeDetectorService(@NonNull Context context, @NonNull Handler handler,
+ @NonNull Callback callback, @NonNull TimeDetectorStrategy timeDetectorStrategy) {
mContext = Objects.requireNonNull(context);
+ mHandler = Objects.requireNonNull(handler);
mCallback = Objects.requireNonNull(callback);
mTimeDetectorStrategy = Objects.requireNonNull(timeDetectorStrategy);
}
@Override
public void suggestPhoneTime(@NonNull PhoneTimeSuggestion timeSignal) {
- enforceSetTimePermission();
+ enforceSuggestPhoneTimePermission();
Objects.requireNonNull(timeSignal);
- long idToken = Binder.clearCallingIdentity();
- try {
- synchronized (mStrategyLock) {
- mTimeDetectorStrategy.suggestPhoneTime(timeSignal);
- }
- } finally {
- Binder.restoreCallingIdentity(idToken);
- }
+ mHandler.post(() -> mTimeDetectorStrategy.suggestPhoneTime(timeSignal));
+ }
+
+ @Override
+ public void suggestManualTime(@NonNull ManualTimeSuggestion timeSignal) {
+ enforceSuggestManualTimePermission();
+ Objects.requireNonNull(timeSignal);
+
+ mHandler.post(() -> mTimeDetectorStrategy.suggestManualTime(timeSignal));
}
@VisibleForTesting
public void handleAutoTimeDetectionToggle() {
- synchronized (mStrategyLock) {
- final boolean timeDetectionEnabled = mCallback.isTimeDetectionEnabled();
- mTimeDetectorStrategy.handleAutoTimeDetectionToggle(timeDetectionEnabled);
- }
+ mHandler.post(mTimeDetectorStrategy::handleAutoTimeDetectionChanged);
}
@Override
@@ -123,12 +118,14 @@
@Nullable String[] args) {
if (!DumpUtils.checkDumpPermission(mContext, TAG, pw)) return;
- synchronized (mStrategyLock) {
- mTimeDetectorStrategy.dump(pw, args);
- }
+ mTimeDetectorStrategy.dump(pw, args);
}
- private void enforceSetTimePermission() {
+ private void enforceSuggestPhoneTimePermission() {
mContext.enforceCallingPermission(android.Manifest.permission.SET_TIME, "set time");
}
-}
\ No newline at end of file
+
+ private void enforceSuggestManualTimePermission() {
+ mContext.enforceCallingOrSelfPermission(android.Manifest.permission.SET_TIME, "set time");
+ }
+}
diff --git a/services/core/java/com/android/server/timedetector/TimeDetectorStrategy.java b/services/core/java/com/android/server/timedetector/TimeDetectorStrategy.java
index 7c2a945..32cee2d 100644
--- a/services/core/java/com/android/server/timedetector/TimeDetectorStrategy.java
+++ b/services/core/java/com/android/server/timedetector/TimeDetectorStrategy.java
@@ -18,6 +18,7 @@
import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.app.timedetector.ManualTimeSuggestion;
import android.app.timedetector.PhoneTimeSuggestion;
import android.content.Intent;
import android.util.TimestampedValue;
@@ -26,12 +27,14 @@
/**
* The interface for classes that implement the time detection algorithm used by the
- * TimeDetectorService. The TimeDetectorService handles thread safety: all calls to implementations
- * of this interface can be assumed to be single threaded (though the thread used may vary).
+ * TimeDetectorService.
+ *
+ * <p>Most calls will be handled by a single thread but that is not true for all calls. For example
+ * {@link #dump(PrintWriter, String[])}) may be called on a different thread so implementations must
+ * handle thread safety.
*
* @hide
*/
-// @NotThreadSafe
public interface TimeDetectorStrategy {
/**
@@ -47,7 +50,7 @@
int systemClockUpdateThresholdMillis();
/** Returns true if automatic time detection is enabled. */
- boolean isTimeDetectionEnabled();
+ boolean isAutoTimeDetectionEnabled();
/** Acquire a suitable wake lock. Must be followed by {@link #releaseWakeLock()} */
void acquireWakeLock();
@@ -71,11 +74,14 @@
/** Initialize the strategy. */
void initialize(@NonNull Callback callback);
- /** Process the suggested time. */
+ /** Process the suggested time from telephony sources. */
void suggestPhoneTime(@NonNull PhoneTimeSuggestion timeSuggestion);
+ /** Process the suggested manually entered time. */
+ void suggestManualTime(@NonNull ManualTimeSuggestion timeSuggestion);
+
/** Handle the auto-time setting being toggled on or off. */
- void handleAutoTimeDetectionToggle(boolean enabled);
+ void handleAutoTimeDetectionChanged();
/** Dump debug information. */
void dump(@NonNull PrintWriter pw, @Nullable String[] args);
diff --git a/services/core/java/com/android/server/timedetector/TimeDetectorStrategyCallbackImpl.java b/services/core/java/com/android/server/timedetector/TimeDetectorStrategyCallbackImpl.java
index 77b9e62..42d59d5 100644
--- a/services/core/java/com/android/server/timedetector/TimeDetectorStrategyCallbackImpl.java
+++ b/services/core/java/com/android/server/timedetector/TimeDetectorStrategyCallbackImpl.java
@@ -72,7 +72,7 @@
}
@Override
- public boolean isTimeDetectionEnabled() {
+ public boolean isAutoTimeDetectionEnabled() {
try {
return Settings.Global.getInt(mContentResolver, Settings.Global.AUTO_TIME) != 0;
} catch (Settings.SettingNotFoundException snfe) {
diff --git a/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorCallbackImpl.java b/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorCallbackImpl.java
new file mode 100644
index 0000000..e034ad4
--- /dev/null
+++ b/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorCallbackImpl.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2019 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.timezonedetector;
+
+import android.annotation.Nullable;
+import android.app.AlarmManager;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.Intent;
+import android.os.SystemProperties;
+import android.os.UserHandle;
+import android.provider.Settings;
+
+import com.android.internal.telephony.TelephonyIntents;
+
+/**
+ * The real implementation of {@link TimeZoneDetectorStrategy.Callback}.
+ */
+public final class TimeZoneDetectorCallbackImpl implements TimeZoneDetectorStrategy.Callback {
+
+ private static final String TIMEZONE_PROPERTY = "persist.sys.timezone";
+
+ private final Context mContext;
+ private final ContentResolver mCr;
+
+ TimeZoneDetectorCallbackImpl(Context context) {
+ mContext = context;
+ mCr = context.getContentResolver();
+ }
+
+ @Override
+ public boolean isAutoTimeZoneDetectionEnabled() {
+ return Settings.Global.getInt(mCr, Settings.Global.AUTO_TIME_ZONE, 1 /* default */) > 0;
+ }
+
+ @Override
+ public boolean isDeviceTimeZoneInitialized() {
+ // timezone.equals("GMT") will be true and only true if the time zone was
+ // set to a default value by the system server (when starting, system server
+ // sets the persist.sys.timezone to "GMT" if it's not set). "GMT" is not used by
+ // any code that sets it explicitly (in case where something sets GMT explicitly,
+ // "Etc/GMT" Olson ID would be used).
+
+ String timeZoneId = getDeviceTimeZone();
+ return timeZoneId != null && timeZoneId.length() > 0 && !timeZoneId.equals("GMT");
+ }
+
+ @Override
+ @Nullable
+ public String getDeviceTimeZone() {
+ return SystemProperties.get(TIMEZONE_PROPERTY);
+ }
+
+ @Override
+ public void setDeviceTimeZone(String zoneId, boolean sendNetworkBroadcast) {
+ AlarmManager alarmManager = mContext.getSystemService(AlarmManager.class);
+ alarmManager.setTimeZone(zoneId);
+
+ if (sendNetworkBroadcast) {
+ // TODO Nothing in the platform appears to listen for this. Remove it.
+ Intent intent = new Intent(TelephonyIntents.ACTION_NETWORK_SET_TIMEZONE);
+ intent.addFlags(Intent.FLAG_RECEIVER_REPLACE_PENDING);
+ intent.putExtra("time-zone", zoneId);
+ mContext.sendStickyBroadcastAsUser(intent, UserHandle.ALL);
+ }
+ }
+}
diff --git a/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorService.java b/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorService.java
new file mode 100644
index 0000000..9a1fe65
--- /dev/null
+++ b/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorService.java
@@ -0,0 +1,127 @@
+/*
+ * Copyright (C) 2019 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.timezonedetector;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.app.timezonedetector.ITimeZoneDetectorService;
+import android.app.timezonedetector.ManualTimeZoneSuggestion;
+import android.app.timezonedetector.PhoneTimeZoneSuggestion;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.database.ContentObserver;
+import android.os.Handler;
+import android.provider.Settings;
+
+import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.util.DumpUtils;
+import com.android.server.FgThread;
+import com.android.server.SystemService;
+
+import java.io.FileDescriptor;
+import java.io.PrintWriter;
+import java.util.Objects;
+
+/**
+ * The implementation of ITimeZoneDetectorService.aidl.
+ */
+public final class TimeZoneDetectorService extends ITimeZoneDetectorService.Stub {
+ private static final String TAG = "TimeZoneDetectorService";
+
+ /**
+ * Handles the lifecycle for {@link TimeZoneDetectorService}.
+ */
+ public static class Lifecycle extends SystemService {
+
+ public Lifecycle(@NonNull Context context) {
+ super(context);
+ }
+
+ @Override
+ public void onStart() {
+ TimeZoneDetectorService service = TimeZoneDetectorService.create(getContext());
+
+ // Publish the binder service so it can be accessed from other (appropriately
+ // permissioned) processes.
+ publishBinderService(Context.TIME_ZONE_DETECTOR_SERVICE, service);
+ }
+ }
+
+ @NonNull private final Context mContext;
+ @NonNull private final Handler mHandler;
+ @NonNull private final TimeZoneDetectorStrategy mTimeZoneDetectorStrategy;
+
+ private static TimeZoneDetectorService create(@NonNull Context context) {
+ final TimeZoneDetectorStrategy timeZoneDetectorStrategy =
+ TimeZoneDetectorStrategy.create(context);
+
+ Handler handler = FgThread.getHandler();
+ ContentResolver contentResolver = context.getContentResolver();
+ contentResolver.registerContentObserver(
+ Settings.Global.getUriFor(Settings.Global.AUTO_TIME_ZONE), true,
+ new ContentObserver(handler) {
+ public void onChange(boolean selfChange) {
+ timeZoneDetectorStrategy.handleAutoTimeZoneDetectionChange();
+ }
+ });
+
+ return new TimeZoneDetectorService(context, handler, timeZoneDetectorStrategy);
+ }
+
+ @VisibleForTesting
+ public TimeZoneDetectorService(@NonNull Context context, @NonNull Handler handler,
+ @NonNull TimeZoneDetectorStrategy timeZoneDetectorStrategy) {
+ mContext = Objects.requireNonNull(context);
+ mHandler = Objects.requireNonNull(handler);
+ mTimeZoneDetectorStrategy = Objects.requireNonNull(timeZoneDetectorStrategy);
+ }
+
+ @Override
+ public void suggestManualTimeZone(@NonNull ManualTimeZoneSuggestion timeZoneSuggestion) {
+ enforceSuggestManualTimeZonePermission();
+ Objects.requireNonNull(timeZoneSuggestion);
+
+ mHandler.post(() -> mTimeZoneDetectorStrategy.suggestManualTimeZone(timeZoneSuggestion));
+ }
+
+ @Override
+ public void suggestPhoneTimeZone(@NonNull PhoneTimeZoneSuggestion timeZoneSuggestion) {
+ enforceSuggestPhoneTimeZonePermission();
+ Objects.requireNonNull(timeZoneSuggestion);
+
+ mHandler.post(() -> mTimeZoneDetectorStrategy.suggestPhoneTimeZone(timeZoneSuggestion));
+ }
+
+ @Override
+ protected void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw,
+ @Nullable String[] args) {
+ if (!DumpUtils.checkDumpPermission(mContext, TAG, pw)) return;
+
+ mTimeZoneDetectorStrategy.dumpState(pw, args);
+ }
+
+ private void enforceSuggestPhoneTimeZonePermission() {
+ mContext.enforceCallingPermission(
+ android.Manifest.permission.SET_TIME_ZONE, "set time zone");
+ }
+
+ private void enforceSuggestManualTimeZonePermission() {
+ mContext.enforceCallingOrSelfPermission(
+ android.Manifest.permission.SET_TIME_ZONE, "set time zone");
+ }
+}
+
diff --git a/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorStrategy.java b/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorStrategy.java
new file mode 100644
index 0000000..5db12c7
--- /dev/null
+++ b/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorStrategy.java
@@ -0,0 +1,555 @@
+/*
+ * Copyright 2019 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.timezonedetector;
+
+import static android.app.timezonedetector.PhoneTimeZoneSuggestion.MATCH_TYPE_EMULATOR_ZONE_ID;
+import static android.app.timezonedetector.PhoneTimeZoneSuggestion.MATCH_TYPE_TEST_NETWORK_OFFSET_ONLY;
+import static android.app.timezonedetector.PhoneTimeZoneSuggestion.QUALITY_MULTIPLE_ZONES_WITH_DIFFERENT_OFFSETS;
+import static android.app.timezonedetector.PhoneTimeZoneSuggestion.QUALITY_MULTIPLE_ZONES_WITH_SAME_OFFSET;
+import static android.app.timezonedetector.PhoneTimeZoneSuggestion.QUALITY_SINGLE_ZONE;
+
+import android.annotation.IntDef;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.app.timezonedetector.ManualTimeZoneSuggestion;
+import android.app.timezonedetector.PhoneTimeZoneSuggestion;
+import android.content.Context;
+import android.util.ArrayMap;
+import android.util.LocalLog;
+import android.util.Slog;
+
+import com.android.internal.annotations.GuardedBy;
+import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.util.IndentingPrintWriter;
+
+import java.io.PrintWriter;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.LinkedList;
+import java.util.Map;
+import java.util.Objects;
+
+/**
+ * A singleton, stateful time zone detection strategy that is aware of user (manual) suggestions and
+ * suggestions from multiple phone devices. Suggestions are acted on or ignored as needed, dependent
+ * on the current "auto time zone detection" setting.
+ *
+ * <p>For automatic detection it keeps track of the most recent suggestion from each phone it uses
+ * the best suggestion based on a scoring algorithm. If several phones provide the same score then
+ * the phone with the lowest numeric ID "wins". If the situation changes and it is no longer
+ * possible to be confident about the time zone, phones must submit an empty suggestion in order to
+ * "withdraw" their previous suggestion.
+ */
+public class TimeZoneDetectorStrategy {
+
+ /**
+ * Used by {@link TimeZoneDetectorStrategy} to interact with the surrounding service. It can be
+ * faked for tests.
+ *
+ * <p>Note: Because the system properties-derived values like
+ * {@link #isAutoTimeZoneDetectionEnabled()}, {@link #isAutoTimeZoneDetectionEnabled()},
+ * {@link #getDeviceTimeZone()} can be modified independently and from different threads (and
+ * processes!), their use are prone to race conditions. That will be true until the
+ * responsibility for setting their values is moved to {@link TimeZoneDetectorStrategy}.
+ */
+ @VisibleForTesting
+ public interface Callback {
+
+ /**
+ * Returns true if automatic time zone detection is enabled in settings.
+ */
+ boolean isAutoTimeZoneDetectionEnabled();
+
+ /**
+ * Returns true if the device has had an explicit time zone set.
+ */
+ boolean isDeviceTimeZoneInitialized();
+
+ /**
+ * Returns the device's currently configured time zone.
+ */
+ String getDeviceTimeZone();
+
+ /**
+ * Sets the device's time zone.
+ */
+ void setDeviceTimeZone(@NonNull String zoneId, boolean sendNetworkBroadcast);
+ }
+
+ private static final String LOG_TAG = "TimeZoneDetectorStrategy";
+ private static final boolean DBG = false;
+
+ @IntDef({ ORIGIN_PHONE, ORIGIN_MANUAL })
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface Origin {}
+
+ /** Used when a time value originated from a telephony signal. */
+ @Origin
+ private static final int ORIGIN_PHONE = 1;
+
+ /** Used when a time value originated from a user / manual settings. */
+ @Origin
+ private static final int ORIGIN_MANUAL = 2;
+
+ /**
+ * The abstract score for an empty or invalid phone suggestion.
+ *
+ * Used to score phone suggestions where there is no zone.
+ */
+ @VisibleForTesting
+ public static final int PHONE_SCORE_NONE = 0;
+
+ /**
+ * The abstract score for a low quality phone suggestion.
+ *
+ * Used to score suggestions where:
+ * The suggested zone ID is one of several possibilities, and the possibilities have different
+ * offsets.
+ *
+ * You would have to be quite desperate to want to use this choice.
+ */
+ @VisibleForTesting
+ public static final int PHONE_SCORE_LOW = 1;
+
+ /**
+ * The abstract score for a medium quality phone suggestion.
+ *
+ * Used for:
+ * The suggested zone ID is one of several possibilities but at least the possibilities have the
+ * same offset. Users would get the correct time but for the wrong reason. i.e. their device may
+ * switch to DST at the wrong time and (for example) their calendar events.
+ */
+ @VisibleForTesting
+ public static final int PHONE_SCORE_MEDIUM = 2;
+
+ /**
+ * The abstract score for a high quality phone suggestion.
+ *
+ * Used for:
+ * The suggestion was for one zone ID and the answer was unambiguous and likely correct given
+ * the info available.
+ */
+ @VisibleForTesting
+ public static final int PHONE_SCORE_HIGH = 3;
+
+ /**
+ * The abstract score for a highest quality phone suggestion.
+ *
+ * Used for:
+ * Suggestions that must "win" because they constitute test or emulator zone ID.
+ */
+ @VisibleForTesting
+ public static final int PHONE_SCORE_HIGHEST = 4;
+
+ /**
+ * The threshold at which phone suggestions are good enough to use to set the device's time
+ * zone.
+ */
+ @VisibleForTesting
+ public static final int PHONE_SCORE_USAGE_THRESHOLD = PHONE_SCORE_MEDIUM;
+
+ /** The number of previous phone suggestions to keep for each ID (for use during debugging). */
+ private static final int KEEP_PHONE_SUGGESTION_HISTORY_SIZE = 30;
+
+ @NonNull
+ private final Callback mCallback;
+
+ /**
+ * A log that records the decisions / decision metadata that affected the device's time zone
+ * (for use during debugging).
+ */
+ @NonNull
+ private final LocalLog mTimeZoneChangesLog = new LocalLog(30);
+
+ /**
+ * A mapping from phoneId to a linked list of phone time zone suggestions (the head being the
+ * latest). We typically expect one or two entries in this Map: devices will have a small number
+ * of telephony devices and phoneIds are assumed to be stable. The LinkedList associated with
+ * the ID will not exceed {@link #KEEP_PHONE_SUGGESTION_HISTORY_SIZE} in size.
+ */
+ @GuardedBy("this")
+ private ArrayMap<Integer, LinkedList<QualifiedPhoneTimeZoneSuggestion>> mSuggestionByPhoneId =
+ new ArrayMap<>();
+
+ /**
+ * Creates a new instance of {@link TimeZoneDetectorStrategy}.
+ */
+ public static TimeZoneDetectorStrategy create(Context context) {
+ Callback timeZoneDetectionServiceHelper = new TimeZoneDetectorCallbackImpl(context);
+ return new TimeZoneDetectorStrategy(timeZoneDetectionServiceHelper);
+ }
+
+ @VisibleForTesting
+ public TimeZoneDetectorStrategy(Callback callback) {
+ mCallback = Objects.requireNonNull(callback);
+ }
+
+ /** Process the suggested manually- / user-entered time zone. */
+ public synchronized void suggestManualTimeZone(@NonNull ManualTimeZoneSuggestion suggestion) {
+ Objects.requireNonNull(suggestion);
+
+ String timeZoneId = suggestion.getZoneId();
+ String cause = "Manual time suggestion received: suggestion=" + suggestion;
+ setDeviceTimeZoneIfRequired(ORIGIN_MANUAL, timeZoneId, cause);
+ }
+
+ /**
+ * Suggests a time zone for the device, or withdraws a previous suggestion if
+ * {@link PhoneTimeZoneSuggestion#getZoneId()} is {@code null}. The suggestion is scoped to a
+ * specific {@link PhoneTimeZoneSuggestion#getPhoneId() phone}.
+ * See {@link PhoneTimeZoneSuggestion} for an explanation of the metadata associated with a
+ * suggestion. The strategy uses suggestions to decide whether to modify the device's time zone
+ * setting and what to set it to.
+ */
+ public synchronized void suggestPhoneTimeZone(@NonNull PhoneTimeZoneSuggestion suggestion) {
+ if (DBG) {
+ Slog.d(LOG_TAG, "Phone suggestion received. newSuggestion=" + suggestion);
+ }
+ Objects.requireNonNull(suggestion);
+
+ // Score the suggestion.
+ int score = scorePhoneSuggestion(suggestion);
+ QualifiedPhoneTimeZoneSuggestion scoredSuggestion =
+ new QualifiedPhoneTimeZoneSuggestion(suggestion, score);
+
+ // Store the suggestion against the correct phoneId.
+ LinkedList<QualifiedPhoneTimeZoneSuggestion> suggestions =
+ mSuggestionByPhoneId.get(suggestion.getPhoneId());
+ if (suggestions == null) {
+ suggestions = new LinkedList<>();
+ mSuggestionByPhoneId.put(suggestion.getPhoneId(), suggestions);
+ }
+ suggestions.addFirst(scoredSuggestion);
+ if (suggestions.size() > KEEP_PHONE_SUGGESTION_HISTORY_SIZE) {
+ suggestions.removeLast();
+ }
+
+ // Now perform auto time zone detection. The new suggestion may be used to modify the time
+ // zone setting.
+ String reason = "New phone time suggested. suggestion=" + suggestion;
+ doAutoTimeZoneDetection(reason);
+ }
+
+ private static int scorePhoneSuggestion(@NonNull PhoneTimeZoneSuggestion suggestion) {
+ int score;
+ if (suggestion.getZoneId() == null) {
+ score = PHONE_SCORE_NONE;
+ } else if (suggestion.getMatchType() == MATCH_TYPE_TEST_NETWORK_OFFSET_ONLY
+ || suggestion.getMatchType() == MATCH_TYPE_EMULATOR_ZONE_ID) {
+ // Handle emulator / test cases : These suggestions should always just be used.
+ score = PHONE_SCORE_HIGHEST;
+ } else if (suggestion.getQuality() == QUALITY_SINGLE_ZONE) {
+ score = PHONE_SCORE_HIGH;
+ } else if (suggestion.getQuality() == QUALITY_MULTIPLE_ZONES_WITH_SAME_OFFSET) {
+ // The suggestion may be wrong, but at least the offset should be correct.
+ score = PHONE_SCORE_MEDIUM;
+ } else if (suggestion.getQuality() == QUALITY_MULTIPLE_ZONES_WITH_DIFFERENT_OFFSETS) {
+ // The suggestion has a good chance of being wrong.
+ score = PHONE_SCORE_LOW;
+ } else {
+ throw new AssertionError();
+ }
+ return score;
+ }
+
+ /**
+ * Finds the best available time zone suggestion from all phones. If it is high-enough quality
+ * and automatic time zone detection is enabled then it will be set on the device. The outcome
+ * can be that this strategy becomes / remains un-opinionated and nothing is set.
+ */
+ @GuardedBy("this")
+ private void doAutoTimeZoneDetection(@NonNull String detectionReason) {
+ if (!mCallback.isAutoTimeZoneDetectionEnabled()) {
+ // Avoid doing unnecessary work with this (race-prone) check.
+ return;
+ }
+
+ QualifiedPhoneTimeZoneSuggestion bestPhoneSuggestion = findBestPhoneSuggestion();
+
+ // Work out what to do with the best suggestion.
+ if (bestPhoneSuggestion == null) {
+ // There is no phone suggestion available at all. Become un-opinionated.
+ if (DBG) {
+ Slog.d(LOG_TAG, "Could not determine time zone: No best phone suggestion."
+ + " detectionReason=" + detectionReason);
+ }
+ return;
+ }
+
+ // Special case handling for uninitialized devices. This should only happen once.
+ String newZoneId = bestPhoneSuggestion.suggestion.getZoneId();
+ if (newZoneId != null && !mCallback.isDeviceTimeZoneInitialized()) {
+ String cause = "Device has no time zone set. Attempting to set the device to the best"
+ + " available suggestion."
+ + " bestPhoneSuggestion=" + bestPhoneSuggestion
+ + ", detectionReason=" + detectionReason;
+ Slog.i(LOG_TAG, cause);
+ setDeviceTimeZoneIfRequired(ORIGIN_PHONE, newZoneId, cause);
+ return;
+ }
+
+ boolean suggestionGoodEnough = bestPhoneSuggestion.score >= PHONE_SCORE_USAGE_THRESHOLD;
+ if (!suggestionGoodEnough) {
+ if (DBG) {
+ Slog.d(LOG_TAG, "Best suggestion not good enough."
+ + " bestPhoneSuggestion=" + bestPhoneSuggestion
+ + ", detectionReason=" + detectionReason);
+ }
+ return;
+ }
+
+ // Paranoia: Every suggestion above the SCORE_USAGE_THRESHOLD should have a non-null time
+ // zone ID.
+ if (newZoneId == null) {
+ Slog.w(LOG_TAG, "Empty zone suggestion scored higher than expected. This is an error:"
+ + " bestPhoneSuggestion=" + bestPhoneSuggestion
+ + " detectionReason=" + detectionReason);
+ return;
+ }
+
+ String zoneId = bestPhoneSuggestion.suggestion.getZoneId();
+ String cause = "Found good suggestion."
+ + ", bestPhoneSuggestion=" + bestPhoneSuggestion
+ + ", detectionReason=" + detectionReason;
+ setDeviceTimeZoneIfRequired(ORIGIN_PHONE, zoneId, cause);
+ }
+
+ @GuardedBy("this")
+ private void setDeviceTimeZoneIfRequired(
+ @Origin int origin, @NonNull String newZoneId, @NonNull String cause) {
+ Objects.requireNonNull(newZoneId);
+ Objects.requireNonNull(cause);
+
+ boolean sendNetworkBroadcast = (origin == ORIGIN_PHONE);
+ boolean isOriginAutomatic = isOriginAutomatic(origin);
+ if (isOriginAutomatic) {
+ if (!mCallback.isAutoTimeZoneDetectionEnabled()) {
+ if (DBG) {
+ Slog.d(LOG_TAG, "Auto time zone detection is not enabled."
+ + " origin=" + origin
+ + ", newZoneId=" + newZoneId
+ + ", cause=" + cause);
+ }
+ return;
+ }
+ } else {
+ if (mCallback.isAutoTimeZoneDetectionEnabled()) {
+ if (DBG) {
+ Slog.d(LOG_TAG, "Auto time zone detection is enabled."
+ + " origin=" + origin
+ + ", newZoneId=" + newZoneId
+ + ", cause=" + cause);
+ }
+ return;
+ }
+ }
+
+ String currentZoneId = mCallback.getDeviceTimeZone();
+
+ // Avoid unnecessary changes / intents.
+ if (newZoneId.equals(currentZoneId)) {
+ // No need to set the device time zone - the setting is already what we would be
+ // suggesting.
+ if (DBG) {
+ Slog.d(LOG_TAG, "No need to change the time zone;"
+ + " device is already set to the suggested zone."
+ + " origin=" + origin
+ + ", newZoneId=" + newZoneId
+ + ", cause=" + cause);
+ }
+ return;
+ }
+
+ mCallback.setDeviceTimeZone(newZoneId, sendNetworkBroadcast);
+ String msg = "Set device time zone."
+ + " origin=" + origin
+ + ", currentZoneId=" + currentZoneId
+ + ", newZoneId=" + newZoneId
+ + ", sendNetworkBroadcast" + sendNetworkBroadcast
+ + ", cause=" + cause;
+ if (DBG) {
+ Slog.d(LOG_TAG, msg);
+ }
+ mTimeZoneChangesLog.log(msg);
+ }
+
+ private static boolean isOriginAutomatic(@Origin int origin) {
+ return origin == ORIGIN_PHONE;
+ }
+
+ @GuardedBy("this")
+ @Nullable
+ private QualifiedPhoneTimeZoneSuggestion findBestPhoneSuggestion() {
+ QualifiedPhoneTimeZoneSuggestion bestSuggestion = null;
+
+ // Iterate over the latest QualifiedPhoneTimeZoneSuggestion objects received for each phone
+ // and find the best. Note that we deliberately do not look at age: the caller can
+ // rate-limit so age is not a strong indicator of confidence. Instead, the callers are
+ // expected to withdraw suggestions they no longer have confidence in.
+ for (int i = 0; i < mSuggestionByPhoneId.size(); i++) {
+ LinkedList<QualifiedPhoneTimeZoneSuggestion> phoneSuggestions =
+ mSuggestionByPhoneId.valueAt(i);
+ if (phoneSuggestions == null) {
+ // Unexpected
+ continue;
+ }
+ QualifiedPhoneTimeZoneSuggestion candidateSuggestion = phoneSuggestions.getFirst();
+ if (candidateSuggestion == null) {
+ // Unexpected
+ continue;
+ }
+
+ if (bestSuggestion == null) {
+ bestSuggestion = candidateSuggestion;
+ } else if (candidateSuggestion.score > bestSuggestion.score) {
+ bestSuggestion = candidateSuggestion;
+ } else if (candidateSuggestion.score == bestSuggestion.score) {
+ // Tie! Use the suggestion with the lowest phoneId.
+ int candidatePhoneId = candidateSuggestion.suggestion.getPhoneId();
+ int bestPhoneId = bestSuggestion.suggestion.getPhoneId();
+ if (candidatePhoneId < bestPhoneId) {
+ bestSuggestion = candidateSuggestion;
+ }
+ }
+ }
+ return bestSuggestion;
+ }
+
+ /**
+ * Returns the current best phone suggestion. Not intended for general use: it is used during
+ * tests to check strategy behavior.
+ */
+ @VisibleForTesting
+ @Nullable
+ public synchronized QualifiedPhoneTimeZoneSuggestion findBestPhoneSuggestionForTests() {
+ return findBestPhoneSuggestion();
+ }
+
+ /**
+ * Called when there has been a change to the automatic time zone detection setting.
+ */
+ @VisibleForTesting
+ public synchronized void handleAutoTimeZoneDetectionChange() {
+ if (DBG) {
+ Slog.d(LOG_TAG, "handleTimeZoneDetectionChange() called");
+ }
+ if (mCallback.isAutoTimeZoneDetectionEnabled()) {
+ // When the user enabled time zone detection, run the time zone detection and change the
+ // device time zone if possible.
+ String reason = "Auto time zone detection setting enabled.";
+ doAutoTimeZoneDetection(reason);
+ }
+ }
+
+ /**
+ * Dumps internal state such as field values.
+ */
+ public synchronized void dumpState(PrintWriter pw, String[] args) {
+ pw.println("TimeZoneDetectorStrategy:");
+ pw.println("mCallback.isTimeZoneDetectionEnabled()="
+ + mCallback.isAutoTimeZoneDetectionEnabled());
+ pw.println("mCallback.isDeviceTimeZoneInitialized()="
+ + mCallback.isDeviceTimeZoneInitialized());
+ pw.println("mCallback.getDeviceTimeZone()="
+ + mCallback.getDeviceTimeZone());
+
+ IndentingPrintWriter ipw = new IndentingPrintWriter(pw, " ");
+ ipw.println("Time zone change log:");
+ ipw.increaseIndent(); // level 2
+ mTimeZoneChangesLog.dump(ipw);
+ ipw.decreaseIndent(); // level 2
+
+ ipw.println("Phone suggestion history:");
+ ipw.increaseIndent(); // level 2
+ for (Map.Entry<Integer, LinkedList<QualifiedPhoneTimeZoneSuggestion>> entry
+ : mSuggestionByPhoneId.entrySet()) {
+ ipw.println("Phone " + entry.getKey());
+
+ ipw.increaseIndent(); // level 3
+ for (QualifiedPhoneTimeZoneSuggestion suggestion : entry.getValue()) {
+ ipw.println(suggestion);
+ }
+ ipw.decreaseIndent(); // level 3
+ }
+ ipw.decreaseIndent(); // level 2
+ ipw.decreaseIndent(); // level 1
+ ipw.flush();
+
+ pw.flush();
+ }
+
+ /**
+ * A method used to inspect strategy state during tests. Not intended for general use.
+ */
+ @VisibleForTesting
+ public synchronized QualifiedPhoneTimeZoneSuggestion getLatestPhoneSuggestion(int phoneId) {
+ LinkedList<QualifiedPhoneTimeZoneSuggestion> suggestions =
+ mSuggestionByPhoneId.get(phoneId);
+ if (suggestions == null) {
+ return null;
+ }
+ return suggestions.getFirst();
+ }
+
+ /**
+ * A {@link PhoneTimeZoneSuggestion} with additional qualifying metadata.
+ */
+ @VisibleForTesting
+ public static class QualifiedPhoneTimeZoneSuggestion {
+
+ @VisibleForTesting
+ public final PhoneTimeZoneSuggestion suggestion;
+
+ /**
+ * The score the suggestion has been given. This can be used to rank against other
+ * suggestions of the same type.
+ */
+ @VisibleForTesting
+ public final int score;
+
+ @VisibleForTesting
+ public QualifiedPhoneTimeZoneSuggestion(PhoneTimeZoneSuggestion suggestion, int score) {
+ this.suggestion = suggestion;
+ this.score = score;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ QualifiedPhoneTimeZoneSuggestion that = (QualifiedPhoneTimeZoneSuggestion) o;
+ return score == that.score
+ && suggestion.equals(that.suggestion);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(score, suggestion);
+ }
+
+ @Override
+ public String toString() {
+ return "QualifiedPhoneTimeZoneSuggestion{"
+ + "suggestion=" + suggestion
+ + ", score=" + score
+ + '}';
+ }
+ }
+}
diff --git a/services/core/java/com/android/server/updates/EmergencyNumberDbInstallReceiver.java b/services/core/java/com/android/server/updates/EmergencyNumberDbInstallReceiver.java
index cb0b45c..c78a8e6 100644
--- a/services/core/java/com/android/server/updates/EmergencyNumberDbInstallReceiver.java
+++ b/services/core/java/com/android/server/updates/EmergencyNumberDbInstallReceiver.java
@@ -37,9 +37,8 @@
Slog.i(TAG, "Emergency number database is updated in file partition");
// Notify EmergencyNumberTracker for emergency number installation complete.
- Intent notifyInstallComplete = new Intent(
- TelephonyManager.ACTION_OTA_EMERGENCY_NUMBER_DB_INSTALLED);
- context.sendBroadcast(
- notifyInstallComplete, android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE);
+ TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(
+ Context.TELEPHONY_SERVICE);
+ telephonyManager.notifyOtaEmergencyNumberDbInstalled();
}
}
diff --git a/services/core/java/com/android/server/wm/ActivityDisplay.java b/services/core/java/com/android/server/wm/ActivityDisplay.java
index be7dfe5..db94cf1 100644
--- a/services/core/java/com/android/server/wm/ActivityDisplay.java
+++ b/services/core/java/com/android/server/wm/ActivityDisplay.java
@@ -73,8 +73,9 @@
import android.view.Display;
import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.util.function.pooled.PooledConsumer;
import com.android.internal.util.function.pooled.PooledLambda;
-import com.android.server.am.EventLogTags;
+import com.android.internal.util.function.pooled.PooledPredicate;
import com.android.server.protolog.common.ProtoLog;
import java.io.PrintWriter;
@@ -299,7 +300,7 @@
final ActivityStack currentFocusedStack = getFocusedStack();
if (currentFocusedStack != prevFocusedStack) {
mLastFocusedStack = prevFocusedStack;
- EventLogTags.writeAmFocusedStack(mRootActivityContainer.mCurrentUser, mDisplayId,
+ EventLogTags.writeWmFocusedStack(mRootActivityContainer.mCurrentUser, mDisplayId,
currentFocusedStack == null ? -1 : currentFocusedStack.getStackId(),
mLastFocusedStack == null ? -1 : mLastFocusedStack.getStackId(),
updateLastFocusedStackReason);
@@ -618,7 +619,7 @@
continue;
}
- stack.findTaskLocked(r, mTmpFindTaskResult);
+ mTmpFindTaskResult.process(r, stack);
// It is possible to have tasks in multiple stacks with the same root affinity, so
// we should keep looking after finding an affinity match to see if there is a
// better match in another stack. Also, task affinity isn't a good enough reason
@@ -1191,12 +1192,11 @@
}
boolean isUidPresent(int uid) {
- for (ActivityStack stack : mStacks) {
- if (stack.isUidPresent(uid)) {
- return true;
- }
- }
- return false;
+ final PooledPredicate p = PooledLambda.obtainPredicate(
+ ActivityRecord::isUid, PooledLambda.__(ActivityRecord.class), uid);
+ final boolean isUidPresent = mDisplayContent.getActivity(p) != null;
+ p.recycle();
+ return isUidPresent;
}
/**
@@ -1292,12 +1292,16 @@
/** Update and get all UIDs that are present on the display and have access to it. */
IntArray getPresentUIDs() {
mDisplayAccessUIDs.clear();
- for (ActivityStack stack : mStacks) {
- stack.getPresentUIDs(mDisplayAccessUIDs);
- }
+ final PooledConsumer c = PooledLambda.obtainConsumer(ActivityDisplay::addActivityUid,
+ PooledLambda.__(ActivityRecord.class), mDisplayAccessUIDs);
+ mDisplayContent.forAllActivities(c);
+ c.recycle();
return mDisplayAccessUIDs;
}
+ private static void addActivityUid(ActivityRecord r, IntArray uids) {
+ uids.add(r.getUid());
+ }
/**
* Checks if system decorations should be shown on this display.
*
@@ -1450,22 +1454,16 @@
return null;
}
- final ArrayList<Task> tasks = mHomeStack.getAllTasks();
- for (int taskNdx = tasks.size() - 1; taskNdx >= 0; --taskNdx) {
- final Task task = tasks.get(taskNdx);
- if (!task.isActivityTypeHome()) {
- continue;
- }
+ final PooledPredicate p = PooledLambda.obtainPredicate(
+ ActivityDisplay::isHomeActivityForUser, PooledLambda.__(ActivityRecord.class),
+ userId);
+ final ActivityRecord r = mHomeStack.getActivity(p);
+ p.recycle();
+ return r;
+ }
- for (int activityNdx = task.getChildCount() - 1; activityNdx >= 0; --activityNdx) {
- final ActivityRecord r = task.getChildAt(activityNdx);
- if (r.isActivityTypeHome()
- && ((userId == UserHandle.USER_ALL) || (r.mUserId == userId))) {
- return r;
- }
- }
- }
- return null;
+ private static boolean isHomeActivityForUser(ActivityRecord r, int userId) {
+ return r.isActivityTypeHome() && (userId == UserHandle.USER_ALL || r.mUserId == userId);
}
boolean isSleeping() {
diff --git a/services/core/java/com/android/server/wm/ActivityMetricsLogger.java b/services/core/java/com/android/server/wm/ActivityMetricsLogger.java
index 0a861ad..de51d4b 100644
--- a/services/core/java/com/android/server/wm/ActivityMetricsLogger.java
+++ b/services/core/java/com/android/server/wm/ActivityMetricsLogger.java
@@ -56,33 +56,32 @@
import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.TYPE_TRANSITION_REPORTED_DRAWN_NO_BUNDLE;
import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.TYPE_TRANSITION_REPORTED_DRAWN_WITH_BUNDLE;
import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.TYPE_TRANSITION_WARM_LAUNCH;
-import static com.android.server.am.EventLogTags.AM_ACTIVITY_LAUNCH_TIME;
import static com.android.server.am.MemoryStatUtil.MemoryStat;
import static com.android.server.am.MemoryStatUtil.readMemoryStatFromFilesystem;
import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_METRICS;
import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_ATM;
import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_WITH_CLASS_NAME;
import static com.android.server.wm.ActivityTaskManagerInternal.APP_TRANSITION_TIMEOUT;
+import static com.android.server.wm.EventLogTags.WM_ACTIVITY_LAUNCH_TIME;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
import android.app.WaitResult;
import android.app.WindowConfiguration.WindowingMode;
import android.content.ComponentName;
-import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.dex.ArtManagerInternal;
import android.content.pm.dex.PackageOptimizationInfo;
import android.metrics.LogMaker;
-import android.os.Handler;
+import android.os.Binder;
import android.os.Looper;
-import android.os.Message;
import android.os.SystemClock;
import android.os.Trace;
+import android.util.ArrayMap;
import android.util.EventLog;
import android.util.Log;
import android.util.Slog;
-import android.util.SparseArray;
-import android.util.SparseIntArray;
import android.util.StatsLog;
import android.util.TimeUtils;
import android.util.proto.ProtoOutputStream;
@@ -90,16 +89,23 @@
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.os.BackgroundThread;
-import com.android.internal.os.SomeArgs;
+import com.android.internal.util.function.pooled.PooledLambda;
import com.android.server.LocalServices;
+import java.util.ArrayList;
+import java.util.LinkedList;
import java.util.concurrent.TimeUnit;
/**
* Listens to activity launches, transitions, visibility changes and window drawn callbacks to
* determine app launch times and draw delays. Source of truth for activity metrics and provides
* data for Tron, logcat, event logs and {@link android.app.WaitResult}.
- *
+ * <p>
+ * A typical sequence of a launch event could be:
+ * {@link #notifyActivityLaunching}, {@link #notifyActivityLaunched},
+ * {@link #notifyStartingWindowDrawn} (optional), {@link #notifyTransitionStarting}
+ * {@link #notifyWindowsDrawn}.
+ * <p>
* Tests:
* atest CtsWindowManagerDeviceTestCases:ActivityMetricsLoggerTests
*/
@@ -115,12 +121,14 @@
private static final int WINDOW_STATE_ASSISTANT = 3;
private static final int WINDOW_STATE_INVALID = -1;
- private static final long INVALID_START_TIME = -1;
+ /**
+ * The flag for {@link #notifyActivityLaunching} to skip associating a new launch with an active
+ * transition, in the case the launch is standalone (e.g. from recents).
+ */
+ private static final int IGNORE_CALLER = -1;
private static final int INVALID_DELAY = -1;
private static final int INVALID_TRANSITION_TYPE = -1;
- private static final int MSG_CHECK_VISIBILITY = 0;
-
// Preallocated strings we are sending to tron, so we don't have to allocate a new one every
// time we log.
private static final String[] TRON_WINDOW_STATE_VARZ_STRINGS = {
@@ -129,27 +137,12 @@
private int mWindowState = WINDOW_STATE_STANDARD;
private long mLastLogTimeSecs;
private final ActivityStackSupervisor mSupervisor;
- private final Context mContext;
private final MetricsLogger mMetricsLogger = new MetricsLogger();
- // set to INVALID_START_TIME in reset.
- // set to valid value in notifyActivityLaunching
- private long mCurrentTransitionStartTimeNs = INVALID_START_TIME;
- private long mLastTransitionStartTimeNs = INVALID_START_TIME;
-
- private int mCurrentTransitionDeviceUptime;
- private int mCurrentTransitionDelayMs;
-
- /** If the any app transitions have been logged as starting, after the latest reset. */
- private boolean mLoggedTransitionStarting;
-
- /** Map : @WindowingMode int => WindowingModeTransitionInfo */
- private final SparseArray<WindowingModeTransitionInfo> mWindowingModeTransitionInfo =
- new SparseArray<>();
- /** Map : @WindowingMode int => WindowingModeTransitionInfo */
- private final SparseArray<WindowingModeTransitionInfo> mLastWindowingModeTransitionInfo =
- new SparseArray<>();
- private final H mHandler;
+ /** All active transitions. */
+ private final ArrayList<TransitionInfo> mTransitionInfoList = new ArrayList<>();
+ /** Map : Last launched activity => {@link TransitionInfo} */
+ private final ArrayMap<ActivityRecord, TransitionInfo> mLastTransitionInfo = new ArrayMap<>();
private ArtManagerInternal mArtManagerInternal;
private final StringBuilder mStringBuilder = new StringBuilder();
@@ -161,54 +154,151 @@
private final LaunchObserverRegistryImpl mLaunchObserver;
@VisibleForTesting static final int LAUNCH_OBSERVER_ACTIVITY_RECORD_PROTO_CHUNK_SIZE = 512;
- private final class H extends Handler {
+ /**
+ * The information created when an intent is incoming but we do not yet know whether it will be
+ * launched successfully.
+ */
+ static final class LaunchingState {
+ /** The timestamp of {@link #notifyActivityLaunching}. */
+ private long mCurrentTransitionStartTimeNs;
+ /** Non-null when a {@link TransitionInfo} is created for this state. */
+ private TransitionInfo mAssociatedTransitionInfo;
- public H(Looper looper) {
- super(looper);
- }
-
- @Override
- public void handleMessage(Message msg) {
- switch (msg.what) {
- case MSG_CHECK_VISIBILITY:
- final SomeArgs args = (SomeArgs) msg.obj;
- checkVisibility((Task) args.arg1, (ActivityRecord) args.arg2);
- break;
- }
+ @VisibleForTesting
+ boolean allDrawn() {
+ return mAssociatedTransitionInfo != null && mAssociatedTransitionInfo.allDrawn();
}
}
- private final class WindowingModeTransitionInfo {
+ /** The information created when an activity is confirmed to be launched. */
+ private static final class TransitionInfo {
+ /**
+ * The field to lookup and update an existing transition efficiently between
+ * {@link #notifyActivityLaunching} and {@link #notifyActivityLaunched}.
+ *
+ * @see LaunchingState#mAssociatedTransitionInfo
+ */
+ final LaunchingState mLaunchingState;
+ /**
+ * The timestamp of the first {@link #notifyActivityLaunching}. It can be used as a key for
+ * observer to identify which callbacks belong to a launch event.
+ */
+ final long mTransitionStartTimeNs;
+ /** The device uptime in seconds when this transition info is created. */
+ final int mCurrentTransitionDeviceUptime;
+ /** The type can be cold (new process), warm (new activity), or hot (bring to front). */
+ final int mTransitionType;
+ /** Whether the process was already running when the transition started. */
+ final boolean mProcessRunning;
+ /** The activities that should be drawn. */
+ final LinkedList<ActivityRecord> mPendingDrawActivities = new LinkedList<>();
/** The latest activity to have been launched. */
- private ActivityRecord launchedActivity;
- private int startResult;
- private boolean currentTransitionProcessRunning;
+ @NonNull ActivityRecord mLastLaunchedActivity;
+
+ /** The time from {@link #mTransitionStartTimeNs} to {@link #notifyTransitionStarting}. */
+ int mCurrentTransitionDelayMs;
+ /** The time from {@link #mTransitionStartTimeNs} to {@link #notifyStartingWindowDrawn}. */
+ int mStartingWindowDelayMs = INVALID_DELAY;
+ /** The time from {@link #mTransitionStartTimeNs} to {@link #notifyBindApplication}. */
+ int mBindApplicationDelayMs = INVALID_DELAY;
/** Elapsed time from when we launch an activity to when its windows are drawn. */
- private int windowsDrawnDelayMs;
- private int startingWindowDelayMs = INVALID_DELAY;
- private int bindApplicationDelayMs = INVALID_DELAY;
- private int reason = APP_TRANSITION_TIMEOUT;
- // TODO(b/132736359) The number may need to consider the visibility change.
- private int numUndrawnActivities = 1;
+ int mWindowsDrawnDelayMs;
+ /** The reason why the transition started (see ActivityManagerInternal.APP_TRANSITION_*). */
+ int mReason = APP_TRANSITION_TIMEOUT;
+ /** The flag ensures that {@link #mStartingWindowDelayMs} is only set once. */
+ boolean mLoggedStartingWindowDrawn;
+ /** If the any app transitions have been logged as starting. */
+ boolean mLoggedTransitionStarting;
+
/** Non-null if the application has reported drawn but its window hasn't. */
- private Runnable pendingFullyDrawn;
- private boolean loggedStartingWindowDrawn;
- private boolean launchTraceActive;
+ @Nullable Runnable mPendingFullyDrawn;
+ /** Non-null if the trace is active. */
+ @Nullable String mLaunchTraceName;
+
+ /** @return Non-null if there will be a window drawn event for the launch. */
+ @Nullable
+ static TransitionInfo create(@NonNull ActivityRecord r,
+ @NonNull LaunchingState launchingState, boolean processRunning, int startResult) {
+ int transitionType = INVALID_TRANSITION_TYPE;
+ if (processRunning) {
+ if (startResult == START_SUCCESS) {
+ transitionType = TYPE_TRANSITION_WARM_LAUNCH;
+ } else if (startResult == START_TASK_TO_FRONT) {
+ transitionType = TYPE_TRANSITION_HOT_LAUNCH;
+ }
+ } else if (startResult == START_SUCCESS || startResult == START_TASK_TO_FRONT) {
+ // Task may still exist when cold launching an activity and the start result will be
+ // set to START_TASK_TO_FRONT. Treat this as a COLD launch.
+ transitionType = TYPE_TRANSITION_COLD_LAUNCH;
+ }
+ if (transitionType == INVALID_TRANSITION_TYPE) {
+ // That means the startResult is neither START_SUCCESS nor START_TASK_TO_FRONT.
+ return null;
+ }
+ return new TransitionInfo(r, launchingState, transitionType, processRunning);
+ }
+
+ /** Use {@link TransitionInfo#create} instead to ensure the transition type is valid. */
+ private TransitionInfo(ActivityRecord r, LaunchingState launchingState, int transitionType,
+ boolean processRunning) {
+ mLaunchingState = launchingState;
+ mTransitionStartTimeNs = launchingState.mCurrentTransitionStartTimeNs;
+ mTransitionType = transitionType;
+ mProcessRunning = processRunning;
+ mCurrentTransitionDeviceUptime =
+ (int) TimeUnit.MILLISECONDS.toSeconds(SystemClock.uptimeMillis());
+ setLatestLaunchedActivity(r);
+ launchingState.mAssociatedTransitionInfo = this;
+ }
/**
* Remembers the latest launched activity to represent the final transition. This also
- * increments the number of activities that should be drawn, so a consecutive launching
- * sequence can be coalesced as one event.
+ * tracks the activities that should be drawn, so a consecutive launching sequence can be
+ * coalesced as one event.
*/
void setLatestLaunchedActivity(ActivityRecord r) {
- if (launchedActivity == r) {
+ if (mLastLaunchedActivity == r) {
return;
}
- launchedActivity = r;
+ mLastLaunchedActivity = r;
+ if (!r.noDisplay) {
+ if (DEBUG_METRICS) Slog.i(TAG, "Add pending draw " + r);
+ mPendingDrawActivities.add(r);
+ }
+ }
+
+ /** @return {@code true} if the activity matches a launched activity in this transition. */
+ boolean contains(ActivityRecord r) {
+ return r == mLastLaunchedActivity || mPendingDrawActivities.contains(r);
+ }
+
+ /** Called when the activity is drawn or won't be drawn. */
+ void removePendingDrawActivity(ActivityRecord r) {
+ if (DEBUG_METRICS) Slog.i(TAG, "Remove pending draw " + r);
+ mPendingDrawActivities.remove(r);
+ }
+
+ boolean allDrawn() {
+ return mPendingDrawActivities.isEmpty();
+ }
+
+ int calculateCurrentDelay() {
+ return calculateDelay(SystemClock.elapsedRealtimeNanos());
+ }
+
+ int calculateDelay(long timestampNs) {
+ // Shouldn't take more than 25 days to launch an app, so int is fine here.
+ return (int) TimeUnit.NANOSECONDS.toMillis(timestampNs - mTransitionStartTimeNs);
+ }
+
+ @Override
+ public String toString() {
+ return "TransitionInfo{" + Integer.toHexString(System.identityHashCode(this))
+ + " a=" + mLastLaunchedActivity + " ua=" + mPendingDrawActivities + "}";
}
}
- final class WindowingModeTransitionInfoSnapshot {
+ static final class TransitionInfoSnapshot {
final private ApplicationInfo applicationInfo;
final private WindowProcessController processRecord;
final String packageName;
@@ -231,17 +321,12 @@
final int windowsFullyDrawnDelayMs;
final int activityRecordIdHashCode;
- private WindowingModeTransitionInfoSnapshot(WindowingModeTransitionInfo info) {
- this(info, info.launchedActivity);
+ private TransitionInfoSnapshot(TransitionInfo info) {
+ this(info, info.mLastLaunchedActivity, INVALID_DELAY);
}
- private WindowingModeTransitionInfoSnapshot(WindowingModeTransitionInfo info,
- ActivityRecord launchedActivity) {
- this(info, launchedActivity, INVALID_DELAY);
- }
-
- private WindowingModeTransitionInfoSnapshot(WindowingModeTransitionInfo info,
- ActivityRecord launchedActivity, int windowsFullyDrawnDelayMs) {
+ private TransitionInfoSnapshot(TransitionInfo info, ActivityRecord launchedActivity,
+ int windowsFullyDrawnDelayMs) {
applicationInfo = launchedActivity.info.applicationInfo;
packageName = launchedActivity.packageName;
launchedActivityName = launchedActivity.info.name;
@@ -250,12 +335,12 @@
launchedActivityAppRecordRequiredAbi = launchedActivity.app == null
? null
: launchedActivity.app.getRequiredAbi();
- reason = info.reason;
- startingWindowDelayMs = info.startingWindowDelayMs;
- bindApplicationDelayMs = info.bindApplicationDelayMs;
- windowsDrawnDelayMs = info.windowsDrawnDelayMs;
- type = getTransitionType(info);
- processRecord = findProcessForActivity(launchedActivity);
+ reason = info.mReason;
+ startingWindowDelayMs = info.mStartingWindowDelayMs;
+ bindApplicationDelayMs = info.mBindApplicationDelayMs;
+ windowsDrawnDelayMs = info.mWindowsDrawnDelayMs;
+ type = info.mTransitionType;
+ processRecord = launchedActivity.app;
processName = launchedActivity.processName;
userId = launchedActivity.mUserId;
launchedActivityShortComponentName = launchedActivity.shortComponentName;
@@ -277,11 +362,9 @@
}
}
- ActivityMetricsLogger(ActivityStackSupervisor supervisor, Context context, Looper looper) {
+ ActivityMetricsLogger(ActivityStackSupervisor supervisor, Looper looper) {
mLastLogTimeSecs = SystemClock.elapsedRealtime() / 1000;
mSupervisor = supervisor;
- mContext = context;
- mHandler = new H(looper);
mLaunchObserver = new LaunchObserverRegistryImpl(looper);
}
@@ -291,7 +374,7 @@
// We log even if the window state hasn't changed, because the user might remain in
// home/fullscreen move forever and we would like to track this kind of behavior
// too.
- MetricsLogger.count(mContext, TRON_WINDOW_STATE_VARZ_STRINGS[mWindowState],
+ mMetricsLogger.count(TRON_WINDOW_STATE_VARZ_STRINGS[mWindowState],
(int) (now - mLastLogTimeSecs));
}
mLastLogTimeSecs = now;
@@ -332,145 +415,169 @@
}
}
+ /** @return Non-null {@link TransitionInfo} if the activity is found in an active transition. */
+ @Nullable
+ private TransitionInfo getActiveTransitionInfo(ActivityRecord r) {
+ for (int i = mTransitionInfoList.size() - 1; i >= 0; i--) {
+ final TransitionInfo info = mTransitionInfoList.get(i);
+ if (info.contains(r)) {
+ return info;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * This method should be only used by starting recents and starting from recents, or internal
+ * tests. Because it doesn't lookup caller and always creates a new launching state.
+ *
+ * @see #notifyActivityLaunching(Intent, ActivityRecord, int)
+ */
+ LaunchingState notifyActivityLaunching(Intent intent) {
+ return notifyActivityLaunching(intent, null /* caller */, IGNORE_CALLER);
+ }
+
+ /**
+ * If the caller is found in an active transition, it will be considered as consecutive launch
+ * and coalesced into the active transition.
+ *
+ * @see #notifyActivityLaunching(Intent, ActivityRecord, int)
+ */
+ LaunchingState notifyActivityLaunching(Intent intent, @Nullable ActivityRecord caller) {
+ return notifyActivityLaunching(intent, caller, Binder.getCallingUid());
+ }
+
/**
* Notifies the tracker at the earliest possible point when we are starting to launch an
- * activity.
+ * activity. The caller must ensure that {@link #notifyActivityLaunched} will be called later
+ * with the returned {@link LaunchingState}.
*/
- void notifyActivityLaunching(Intent intent) {
+ private LaunchingState notifyActivityLaunching(Intent intent, @Nullable ActivityRecord caller,
+ int callingUid) {
+ final long transitionStartTimeNs = SystemClock.elapsedRealtimeNanos();
+ TransitionInfo existingInfo = null;
+ if (callingUid != IGNORE_CALLER) {
+ // Associate the launching event to an active transition if the caller is found in its
+ // launched activities.
+ for (int i = mTransitionInfoList.size() - 1; i >= 0; i--) {
+ final TransitionInfo info = mTransitionInfoList.get(i);
+ if (caller != null && info.contains(caller)) {
+ existingInfo = info;
+ break;
+ }
+ if (existingInfo == null && callingUid == info.mLastLaunchedActivity.getUid()) {
+ // Fallback to check the most recent matched uid for the case that the caller is
+ // not an activity.
+ existingInfo = info;
+ }
+ }
+ }
if (DEBUG_METRICS) {
- Slog.i(TAG, String.format("notifyActivityLaunching: active:%b, intent:%s",
- isAnyTransitionActive(),
- intent));
+ Slog.i(TAG, "notifyActivityLaunching intent=" + intent
+ + " existingInfo=" + existingInfo);
}
- if (mCurrentTransitionStartTimeNs == INVALID_START_TIME) {
-
- mCurrentTransitionStartTimeNs = SystemClock.elapsedRealtimeNanos();
- mLastTransitionStartTimeNs = mCurrentTransitionStartTimeNs;
-
- launchObserverNotifyIntentStarted(intent, mCurrentTransitionStartTimeNs);
+ if (existingInfo == null) {
+ // Only notify the observer for a new launching event.
+ launchObserverNotifyIntentStarted(intent, transitionStartTimeNs);
+ final LaunchingState launchingState = new LaunchingState();
+ launchingState.mCurrentTransitionStartTimeNs = transitionStartTimeNs;
+ return launchingState;
}
+ existingInfo.mLaunchingState.mCurrentTransitionStartTimeNs = transitionStartTimeNs;
+ return existingInfo.mLaunchingState;
}
/**
* Notifies the tracker that the activity is actually launching.
*
- * @param resultCode one of the ActivityManager.START_* flags, indicating the result of the
- * launch
- * @param launchedActivity the activity that is being launched
+ * @param launchingState The launching state to track the new or active transition.
+ * @param resultCode One of the {@link android.app.ActivityManager}.START_* flags, indicating
+ * the result of the launch.
+ * @param launchedActivity The activity that is being launched
*/
- void notifyActivityLaunched(int resultCode, ActivityRecord launchedActivity) {
- final WindowProcessController processRecord = findProcessForActivity(launchedActivity);
- final boolean processRunning = processRecord != null;
+ void notifyActivityLaunched(@NonNull LaunchingState launchingState, int resultCode,
+ @Nullable ActivityRecord launchedActivity) {
+ if (launchedActivity == null) {
+ // The launch is aborted, e.g. intent not resolved, class not found.
+ abort(null /* info */, "nothing launched");
+ return;
+ }
+ final WindowProcessController processRecord = launchedActivity.app != null
+ ? launchedActivity.app
+ : mSupervisor.mService.getProcessController(
+ launchedActivity.processName, launchedActivity.info.applicationInfo.uid);
+ // Whether the process that will contains the activity is already running.
+ final boolean processRunning = processRecord != null;
// We consider this a "process switch" if the process of the activity that gets launched
// didn't have an activity that was in started state. In this case, we assume that lot
// of caches might be purged so the time until it produces the first frame is very
// interesting.
- final boolean processSwitch = processRecord == null
+ final boolean processSwitch = !processRunning
|| !processRecord.hasStartedActivity(launchedActivity);
- notifyActivityLaunched(resultCode, launchedActivity, processRunning, processSwitch);
- }
-
- /**
- * Notifies the tracker the the activity is actually launching.
- *
- * @param resultCode one of the ActivityManager.START_* flags, indicating the result of the
- * launch
- * @param launchedActivity the activity being launched
- * @param processRunning whether the process that will contains the activity is already running
- * @param processSwitch whether the process that will contain the activity didn't have any
- * activity that was stopped, i.e. the started activity is "switching"
- * processes
- */
- private void notifyActivityLaunched(int resultCode, ActivityRecord launchedActivity,
- boolean processRunning, boolean processSwitch) {
-
- if (DEBUG_METRICS) Slog.i(TAG, "notifyActivityLaunched"
- + " resultCode=" + resultCode
- + " launchedActivity=" + launchedActivity
- + " processRunning=" + processRunning
- + " processSwitch=" + processSwitch);
-
- // If we are already in an existing transition, only update the activity name, but not the
- // other attributes.
- final @WindowingMode int windowingMode = launchedActivity != null
- ? launchedActivity.getWindowingMode()
- : WINDOWING_MODE_UNDEFINED;
- final WindowingModeTransitionInfo info = mWindowingModeTransitionInfo.get(windowingMode);
- if (mCurrentTransitionStartTimeNs == INVALID_START_TIME) {
- // No transition is active ignore this launch.
- return;
+ final TransitionInfo info = launchingState.mAssociatedTransitionInfo;
+ if (DEBUG_METRICS) {
+ Slog.i(TAG, "notifyActivityLaunched" + " resultCode=" + resultCode
+ + " launchedActivity=" + launchedActivity + " processRunning=" + processRunning
+ + " processSwitch=" + processSwitch + " info=" + info);
}
- if (launchedActivity != null && launchedActivity.mDrawn) {
+ if (launchedActivity.mDrawn) {
// Launched activity is already visible. We cannot measure windows drawn delay.
abort(info, "launched activity already visible");
return;
}
- if (launchedActivity != null && info != null) {
+ if (info != null) {
// If we are already in an existing transition, only update the activity name, but not
// the other attributes.
+ if (DEBUG_METRICS) Slog.i(TAG, "notifyActivityLaunched update launched activity");
// Coalesce multiple (trampoline) activities from a single sequence together.
info.setLatestLaunchedActivity(launchedActivity);
return;
}
- final boolean otherWindowModesLaunching =
- mWindowingModeTransitionInfo.size() > 0 && info == null;
- if ((!isLoggableResultCode(resultCode) || launchedActivity == null || !processSwitch
- || windowingMode == WINDOWING_MODE_UNDEFINED) && !otherWindowModesLaunching) {
- // Failed to launch or it was not a process switch, so we don't care about the timing.
- abort(info, "failed to launch or not a process switch");
+ if (!processSwitch) {
+ abort(info, "not a process switch");
return;
- } else if (otherWindowModesLaunching) {
- // Don't log this windowing mode but continue with the other windowing modes.
+ }
+
+ final TransitionInfo newInfo = TransitionInfo.create(launchedActivity, launchingState,
+ processRunning, resultCode);
+ if (newInfo == null) {
+ abort(info, "unrecognized launch");
return;
}
if (DEBUG_METRICS) Slog.i(TAG, "notifyActivityLaunched successful");
-
- // A new launch sequence [with the windowingMode] has begun.
- // Start tracking it.
- final WindowingModeTransitionInfo newInfo = new WindowingModeTransitionInfo();
- newInfo.setLatestLaunchedActivity(launchedActivity);
- newInfo.currentTransitionProcessRunning = processRunning;
- newInfo.startResult = resultCode;
- mWindowingModeTransitionInfo.put(windowingMode, newInfo);
- mLastWindowingModeTransitionInfo.put(windowingMode, newInfo);
- mCurrentTransitionDeviceUptime = (int) (SystemClock.uptimeMillis() / 1000);
- startTraces(newInfo);
+ // A new launch sequence has begun. Start tracking it.
+ mTransitionInfoList.add(newInfo);
+ mLastTransitionInfo.put(launchedActivity, newInfo);
+ startLaunchTrace(newInfo);
launchObserverNotifyActivityLaunched(newInfo);
}
/**
- * @return True if we should start logging an event for an activity start that returned
- * {@code resultCode} and that we'll indeed get a windows drawn event.
- */
- private boolean isLoggableResultCode(int resultCode) {
- return resultCode == START_SUCCESS || resultCode == START_TASK_TO_FRONT;
- }
-
- /**
* Notifies the tracker that all windows of the app have been drawn.
*/
- WindowingModeTransitionInfoSnapshot notifyWindowsDrawn(@WindowingMode int windowingMode,
- long timestampNs) {
- if (DEBUG_METRICS) Slog.i(TAG, "notifyWindowsDrawn windowingMode=" + windowingMode);
+ @Nullable
+ TransitionInfoSnapshot notifyWindowsDrawn(@NonNull ActivityRecord r, long timestampNs) {
+ if (DEBUG_METRICS) Slog.i(TAG, "notifyWindowsDrawn " + r);
- final WindowingModeTransitionInfo info = mWindowingModeTransitionInfo.get(windowingMode);
- if (info == null || info.numUndrawnActivities == 0) {
+ final TransitionInfo info = getActiveTransitionInfo(r);
+ if (info == null || info.allDrawn()) {
+ if (DEBUG_METRICS) Slog.i(TAG, "notifyWindowsDrawn no activity to be drawn");
return null;
}
- info.windowsDrawnDelayMs = calculateDelay(timestampNs);
- info.numUndrawnActivities--;
- final WindowingModeTransitionInfoSnapshot infoSnapshot =
- new WindowingModeTransitionInfoSnapshot(info);
- if (allWindowsDrawn() && mLoggedTransitionStarting) {
- reset(false /* abort */, info, "notifyWindowsDrawn - all windows drawn", timestampNs);
+ // Always calculate the delay because the caller may need to know the individual drawn time.
+ info.mWindowsDrawnDelayMs = info.calculateDelay(timestampNs);
+ info.removePendingDrawActivity(r);
+ final TransitionInfoSnapshot infoSnapshot = new TransitionInfoSnapshot(info);
+ if (info.mLoggedTransitionStarting && info.allDrawn()) {
+ done(false /* abort */, info, "notifyWindowsDrawn - all windows drawn", timestampNs);
}
return infoSnapshot;
}
@@ -478,88 +585,87 @@
/**
* Notifies the tracker that the starting window was drawn.
*/
- void notifyStartingWindowDrawn(@WindowingMode int windowingMode, long timestampNs) {
- final WindowingModeTransitionInfo info = mWindowingModeTransitionInfo.get(windowingMode);
- if (info == null || info.loggedStartingWindowDrawn) {
+ void notifyStartingWindowDrawn(@NonNull ActivityRecord r) {
+ final TransitionInfo info = getActiveTransitionInfo(r);
+ if (info == null || info.mLoggedStartingWindowDrawn) {
return;
}
- info.loggedStartingWindowDrawn = true;
- info.startingWindowDelayMs = calculateDelay(timestampNs);
+ if (DEBUG_METRICS) Slog.i(TAG, "notifyStartingWindowDrawn " + r);
+ info.mLoggedStartingWindowDrawn = true;
+ info.mStartingWindowDelayMs = info.calculateDelay(SystemClock.elapsedRealtimeNanos());
}
/**
* Notifies the tracker that the app transition is starting.
*
- * @param windowingModeToReason A map from windowing mode to a reason integer, which must be on
- * of ActivityTaskManagerInternal.APP_TRANSITION_* reasons.
+ * @param activityToReason A map from activity to a reason integer, which must be on of
+ * ActivityTaskManagerInternal.APP_TRANSITION_* reasons.
*/
- void notifyTransitionStarting(SparseIntArray windowingModeToReason, long timestampNs) {
- if (!isAnyTransitionActive() || mLoggedTransitionStarting) {
- // Ignore calls to this made after a reset and prior to notifyActivityLaunching.
-
- // Ignore any subsequent notifyTransitionStarting until the next reset.
- return;
- }
+ void notifyTransitionStarting(ArrayMap<ActivityRecord, Integer> activityToReason) {
if (DEBUG_METRICS) Slog.i(TAG, "notifyTransitionStarting");
- mCurrentTransitionDelayMs = calculateDelay(timestampNs);
- mLoggedTransitionStarting = true;
- WindowingModeTransitionInfo foundInfo = null;
- for (int index = windowingModeToReason.size() - 1; index >= 0; index--) {
- final @WindowingMode int windowingMode = windowingModeToReason.keyAt(index);
- final WindowingModeTransitionInfo info = mWindowingModeTransitionInfo.get(
- windowingMode);
- if (info == null) {
+ final long timestampNs = SystemClock.elapsedRealtimeNanos();
+ for (int index = activityToReason.size() - 1; index >= 0; index--) {
+ final ActivityRecord r = activityToReason.keyAt(index);
+ final TransitionInfo info = getActiveTransitionInfo(r);
+ if (info == null || info.mLoggedTransitionStarting) {
+ // Ignore any subsequent notifyTransitionStarting.
continue;
}
- info.reason = windowingModeToReason.valueAt(index);
- foundInfo = info;
+ if (DEBUG_METRICS) {
+ Slog.i(TAG, "notifyTransitionStarting activity=" + r + " info=" + info);
+ }
+
+ info.mCurrentTransitionDelayMs = info.calculateDelay(timestampNs);
+ info.mReason = activityToReason.valueAt(index);
+ info.mLoggedTransitionStarting = true;
+ if (info.allDrawn()) {
+ done(false /* abort */, info, "notifyTransitionStarting - all windows drawn",
+ timestampNs);
+ }
}
- if (allWindowsDrawn()) {
- // abort metrics collection if we cannot find a matching transition.
- final boolean abortMetrics = foundInfo == null;
- reset(abortMetrics, foundInfo, "notifyTransitionStarting - all windows drawn",
- timestampNs /* timestampNs */);
- }
+ }
+
+ /** Makes sure that the reference to the removed activity is cleared. */
+ void notifyActivityRemoved(@NonNull ActivityRecord r) {
+ mLastTransitionInfo.remove(r);
}
/**
* Notifies the tracker that the visibility of an app is changing.
*
- * @param activityRecord the app that is changing its visibility
+ * @param r the app that is changing its visibility
*/
- void notifyVisibilityChanged(ActivityRecord activityRecord) {
- final WindowingModeTransitionInfo info = mWindowingModeTransitionInfo.get(
- activityRecord.getWindowingMode());
+ void notifyVisibilityChanged(@NonNull ActivityRecord r) {
+ final TransitionInfo info = getActiveTransitionInfo(r);
if (info == null) {
return;
}
- if (info.launchedActivity != activityRecord) {
+ if (DEBUG_METRICS) {
+ Slog.i(TAG, "notifyVisibilityChanged " + r + " visible=" + r.mVisibleRequested
+ + " state=" + r.getState() + " finishing=" + r.finishing);
+ }
+ if (!r.mVisibleRequested || r.finishing) {
+ info.removePendingDrawActivity(r);
+ }
+ if (info.mLastLaunchedActivity != r) {
return;
}
- final Task t = activityRecord.getTask();
- final SomeArgs args = SomeArgs.obtain();
- args.arg1 = t;
- args.arg2 = activityRecord;
- mHandler.obtainMessage(MSG_CHECK_VISIBILITY, args).sendToTarget();
+ // The activity and its task are passed separately because the activity may be removed from
+ // the task later.
+ r.mAtmService.mH.sendMessage(PooledLambda.obtainMessage(
+ ActivityMetricsLogger::checkVisibility, this, r.getTask(), r));
}
/** @return {@code true} if the given task has an activity will be drawn. */
private static boolean hasActivityToBeDrawn(Task t) {
- for (int i = t.getChildCount() - 1; i >= 0; --i) {
- final ActivityRecord r = t.getChildAt(i);
- if (r.mVisibleRequested && !r.mDrawn && !r.finishing) {
- return true;
- }
- }
- return false;
+ return t.forAllActivities((r) -> r.mVisibleRequested && !r.mDrawn && !r.finishing);
}
private void checkVisibility(Task t, ActivityRecord r) {
synchronized (mSupervisor.mService.mGlobalLock) {
- final WindowingModeTransitionInfo info = mWindowingModeTransitionInfo.get(
- r.getWindowingMode());
+ final TransitionInfo info = getActiveTransitionInfo(r);
// If we have an active transition that's waiting on a certain activity that will be
// invisible now, we'll never get onWindowsDrawn, so abort the transition if necessary.
@@ -571,7 +677,7 @@
// The notified activity whose visibility changed is no longer the launched activity.
// We can still wait to get onWindowsDrawn.
- if (info.launchedActivity != r) {
+ if (info.mLastLaunchedActivity != r) {
return;
}
@@ -585,11 +691,7 @@
if (DEBUG_METRICS) Slog.i(TAG, "notifyVisibilityChanged to invisible activity=" + r);
logAppTransitionCancel(info);
- // Abort if this is the only one active transition.
- if (mWindowingModeTransitionInfo.size() == 1
- && mWindowingModeTransitionInfo.get(r.getWindowingMode()) != null) {
- abort(info, "notifyVisibilityChanged to invisible");
- }
+ abort(info, "notifyVisibilityChanged to invisible");
}
}
@@ -599,137 +701,86 @@
* @param appInfo The client into which we'll call bindApplication.
*/
void notifyBindApplication(ApplicationInfo appInfo) {
- for (int i = mWindowingModeTransitionInfo.size() - 1; i >= 0; i--) {
- final WindowingModeTransitionInfo info = mWindowingModeTransitionInfo.valueAt(i);
+ for (int i = mTransitionInfoList.size() - 1; i >= 0; i--) {
+ final TransitionInfo info = mTransitionInfoList.get(i);
// App isn't attached to record yet, so match with info.
- if (info.launchedActivity.info.applicationInfo == appInfo) {
- info.bindApplicationDelayMs = calculateCurrentDelay();
+ if (info.mLastLaunchedActivity.info.applicationInfo == appInfo) {
+ info.mBindApplicationDelayMs = info.calculateCurrentDelay();
}
}
}
- @VisibleForTesting
- boolean allWindowsDrawn() {
- for (int index = mWindowingModeTransitionInfo.size() - 1; index >= 0; index--) {
- if (mWindowingModeTransitionInfo.valueAt(index).numUndrawnActivities != 0) {
- return false;
- }
- }
- return true;
- }
-
- private boolean isAnyTransitionActive() {
- return mCurrentTransitionStartTimeNs != INVALID_START_TIME
- && mWindowingModeTransitionInfo.size() > 0;
- }
-
/** Aborts tracking of current launch metrics. */
- private void abort(WindowingModeTransitionInfo info, String cause) {
- reset(true /* abort */, info, cause, 0L /* timestampNs */);
+ private void abort(TransitionInfo info, String cause) {
+ done(true /* abort */, info, cause, 0L /* timestampNs */);
}
- private void reset(boolean abort, WindowingModeTransitionInfo info, String cause,
+ /** Called when the given transition (info) is no longer active. */
+ private void done(boolean abort, @Nullable TransitionInfo info, String cause,
long timestampNs) {
- final boolean isAnyTransitionActive = isAnyTransitionActive();
if (DEBUG_METRICS) {
- Slog.i(TAG, "reset abort=" + abort + " cause=" + cause + " timestamp=" + timestampNs
- + " active=" + isAnyTransitionActive);
+ Slog.i(TAG, "done abort=" + abort + " cause=" + cause + " timestamp=" + timestampNs
+ + " info=" + info);
}
- if (!abort && isAnyTransitionActive) {
- logAppTransitionMultiEvents();
- }
- stopLaunchTrace(info);
-
- // Ignore reset-after reset.
- if (isAnyTransitionActive) {
- // LaunchObserver callbacks.
- if (abort) {
- launchObserverNotifyActivityLaunchCancelled(info);
- } else {
- launchObserverNotifyActivityLaunchFinished(info, timestampNs);
- }
- } else {
+ if (info == null) {
launchObserverNotifyIntentFailed();
- }
-
- mCurrentTransitionStartTimeNs = INVALID_START_TIME;
- mCurrentTransitionDelayMs = INVALID_DELAY;
- mLoggedTransitionStarting = false;
- mWindowingModeTransitionInfo.clear();
- }
-
- private int calculateCurrentDelay() {
- // Shouldn't take more than 25 days to launch an app, so int is fine here.
- return (int) TimeUnit.NANOSECONDS
- .toMillis(SystemClock.elapsedRealtimeNanos() - mCurrentTransitionStartTimeNs);
- }
-
- private int calculateDelay(long timestampNs) {
- // Shouldn't take more than 25 days to launch an app, so int is fine here.
- return (int) TimeUnit.NANOSECONDS.toMillis(timestampNs -
- mCurrentTransitionStartTimeNs);
- }
-
- private void logAppTransitionCancel(WindowingModeTransitionInfo info) {
- final int type = getTransitionType(info);
- if (type == INVALID_TRANSITION_TYPE) {
return;
}
+
+ stopLaunchTrace(info);
+ if (abort) {
+ launchObserverNotifyActivityLaunchCancelled(info);
+ } else {
+ logAppTransitionFinished(info);
+ launchObserverNotifyActivityLaunchFinished(info, timestampNs);
+ }
+ info.mPendingDrawActivities.clear();
+ mTransitionInfoList.remove(info);
+ }
+
+ private void logAppTransitionCancel(TransitionInfo info) {
+ final int type = info.mTransitionType;
+ final ActivityRecord activity = info.mLastLaunchedActivity;
final LogMaker builder = new LogMaker(APP_TRANSITION_CANCELLED);
- builder.setPackageName(info.launchedActivity.packageName);
+ builder.setPackageName(activity.packageName);
builder.setType(type);
- builder.addTaggedData(FIELD_CLASS_NAME, info.launchedActivity.info.name);
+ builder.addTaggedData(FIELD_CLASS_NAME, activity.info.name);
mMetricsLogger.write(builder);
StatsLog.write(
StatsLog.APP_START_CANCELED,
- info.launchedActivity.info.applicationInfo.uid,
- info.launchedActivity.packageName,
+ activity.info.applicationInfo.uid,
+ activity.packageName,
convertAppStartTransitionType(type),
- info.launchedActivity.info.name);
+ activity.info.name);
if (DEBUG_METRICS) {
Slog.i(TAG, String.format("APP_START_CANCELED(%s, %s, %s, %s)",
- info.launchedActivity.info.applicationInfo.uid,
- info.launchedActivity.packageName,
+ activity.info.applicationInfo.uid,
+ activity.packageName,
convertAppStartTransitionType(type),
- info.launchedActivity.info.name));
+ activity.info.name));
}
}
- private void logAppTransitionMultiEvents() {
- if (DEBUG_METRICS) Slog.i(TAG, "logging transition events");
- for (int index = mWindowingModeTransitionInfo.size() - 1; index >= 0; index--) {
- final WindowingModeTransitionInfo info = mWindowingModeTransitionInfo.valueAt(index);
- final int type = getTransitionType(info);
- if (type == INVALID_TRANSITION_TYPE) {
- if (DEBUG_METRICS) {
- Slog.i(TAG, "invalid transition type"
- + " processRunning=" + info.currentTransitionProcessRunning
- + " startResult=" + info.startResult);
- }
- return;
- }
+ private void logAppTransitionFinished(@NonNull TransitionInfo info) {
+ if (DEBUG_METRICS) Slog.i(TAG, "logging finished transition " + info);
- // Take a snapshot of the transition info before sending it to the handler for logging.
- // This will avoid any races with other operations that modify the ActivityRecord.
- final WindowingModeTransitionInfoSnapshot infoSnapshot =
- new WindowingModeTransitionInfoSnapshot(info);
- final int currentTransitionDeviceUptime = mCurrentTransitionDeviceUptime;
- final int currentTransitionDelayMs = mCurrentTransitionDelayMs;
- BackgroundThread.getHandler().post(() -> logAppTransition(
- currentTransitionDeviceUptime, currentTransitionDelayMs, infoSnapshot));
- BackgroundThread.getHandler().post(() -> logAppDisplayed(infoSnapshot));
- if (info.pendingFullyDrawn != null) {
- info.pendingFullyDrawn.run();
- }
-
- info.launchedActivity.info.launchToken = null;
+ // Take a snapshot of the transition info before sending it to the handler for logging.
+ // This will avoid any races with other operations that modify the ActivityRecord.
+ final TransitionInfoSnapshot infoSnapshot = new TransitionInfoSnapshot(info);
+ BackgroundThread.getHandler().post(() -> logAppTransition(
+ info.mCurrentTransitionDeviceUptime, info.mCurrentTransitionDelayMs, infoSnapshot));
+ BackgroundThread.getHandler().post(() -> logAppDisplayed(infoSnapshot));
+ if (info.mPendingFullyDrawn != null) {
+ info.mPendingFullyDrawn.run();
}
+
+ info.mLastLaunchedActivity.info.launchToken = null;
}
// This gets called on a background thread without holding the activity manager lock.
private void logAppTransition(int currentTransitionDeviceUptime, int currentTransitionDelayMs,
- WindowingModeTransitionInfoSnapshot info) {
+ TransitionInfoSnapshot info) {
final LogMaker builder = new LogMaker(APP_TRANSITION);
builder.setPackageName(info.packageName);
builder.setType(info.type);
@@ -800,12 +851,12 @@
logAppStartMemoryStateCapture(info);
}
- private void logAppDisplayed(WindowingModeTransitionInfoSnapshot info) {
+ private void logAppDisplayed(TransitionInfoSnapshot info) {
if (info.type != TYPE_TRANSITION_WARM_LAUNCH && info.type != TYPE_TRANSITION_COLD_LAUNCH) {
return;
}
- EventLog.writeEvent(AM_ACTIVITY_LAUNCH_TIME,
+ EventLog.writeEvent(WM_ACTIVITY_LAUNCH_TIME,
info.userId, info.activityRecordIdHashCode, info.launchedActivityShortComponentName,
info.windowsDrawnDelayMs);
@@ -831,26 +882,25 @@
return StatsLog.APP_START_OCCURRED__TYPE__UNKNOWN;
}
- /** @return the last known window drawn delay of the given windowing mode. */
- int getLastDrawnDelayMs(@WindowingMode int windowingMode) {
- final WindowingModeTransitionInfo info = mLastWindowingModeTransitionInfo.get(
- windowingMode);
- return info != null ? info.windowsDrawnDelayMs : INVALID_DELAY;
+ /** @return the last known window drawn delay of the given activity. */
+ int getLastDrawnDelayMs(ActivityRecord r) {
+ final TransitionInfo info = mLastTransitionInfo.get(r);
+ return info != null ? info.mWindowsDrawnDelayMs : INVALID_DELAY;
}
- WindowingModeTransitionInfoSnapshot logAppTransitionReportedDrawn(ActivityRecord r,
+ /** @see android.app.Activity#reportFullyDrawn */
+ TransitionInfoSnapshot logAppTransitionReportedDrawn(ActivityRecord r,
boolean restoredFromBundle) {
- final WindowingModeTransitionInfo info = mLastWindowingModeTransitionInfo.get(
- r.getWindowingMode());
+ final TransitionInfo info = mLastTransitionInfo.get(r);
if (info == null) {
return null;
}
- if (info.numUndrawnActivities > 0 && info.pendingFullyDrawn == null) {
+ if (!info.allDrawn() && info.mPendingFullyDrawn == null) {
// There are still undrawn activities, postpone reporting fully drawn until all of its
// windows are drawn. So that is closer to an usable state.
- info.pendingFullyDrawn = () -> {
+ info.mPendingFullyDrawn = () -> {
logAppTransitionReportedDrawn(r, restoredFromBundle);
- info.pendingFullyDrawn = null;
+ info.mPendingFullyDrawn = null;
};
return null;
}
@@ -859,39 +909,39 @@
// actually used to trace this function, but instead the logical task that this function
// fullfils (handling reportFullyDrawn() callbacks).
Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER,
- "ActivityManager:ReportingFullyDrawn " + info.launchedActivity.packageName);
+ "ActivityManager:ReportingFullyDrawn " + info.mLastLaunchedActivity.packageName);
final LogMaker builder = new LogMaker(APP_TRANSITION_REPORTED_DRAWN);
builder.setPackageName(r.packageName);
builder.addTaggedData(FIELD_CLASS_NAME, r.info.name);
final long currentTimestampNs = SystemClock.elapsedRealtimeNanos();
- final long startupTimeMs = info.pendingFullyDrawn != null
- ? info.windowsDrawnDelayMs
- : TimeUnit.NANOSECONDS.toMillis(currentTimestampNs - mLastTransitionStartTimeNs);
+ final long startupTimeMs = info.mPendingFullyDrawn != null
+ ? info.mWindowsDrawnDelayMs
+ : TimeUnit.NANOSECONDS.toMillis(currentTimestampNs - info.mTransitionStartTimeNs);
builder.addTaggedData(APP_TRANSITION_REPORTED_DRAWN_MS, startupTimeMs);
builder.setType(restoredFromBundle
? TYPE_TRANSITION_REPORTED_DRAWN_WITH_BUNDLE
: TYPE_TRANSITION_REPORTED_DRAWN_NO_BUNDLE);
builder.addTaggedData(APP_TRANSITION_PROCESS_RUNNING,
- info.currentTransitionProcessRunning ? 1 : 0);
+ info.mProcessRunning ? 1 : 0);
mMetricsLogger.write(builder);
StatsLog.write(
StatsLog.APP_START_FULLY_DRAWN,
- info.launchedActivity.info.applicationInfo.uid,
- info.launchedActivity.packageName,
+ info.mLastLaunchedActivity.info.applicationInfo.uid,
+ info.mLastLaunchedActivity.packageName,
restoredFromBundle
? StatsLog.APP_START_FULLY_DRAWN__TYPE__WITH_BUNDLE
: StatsLog.APP_START_FULLY_DRAWN__TYPE__WITHOUT_BUNDLE,
- info.launchedActivity.info.name,
- info.currentTransitionProcessRunning,
+ info.mLastLaunchedActivity.info.name,
+ info.mProcessRunning,
startupTimeMs);
// Ends the trace started at the beginning of this function. This is located here to allow
// the trace slice to have a noticable duration.
Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);
- final WindowingModeTransitionInfoSnapshot infoSnapshot =
- new WindowingModeTransitionInfoSnapshot(info, r, (int) startupTimeMs);
+ final TransitionInfoSnapshot infoSnapshot =
+ new TransitionInfoSnapshot(info, r, (int) startupTimeMs);
BackgroundThread.getHandler().post(() -> logAppFullyDrawn(infoSnapshot));
// Notify reportFullyDrawn event.
@@ -900,7 +950,7 @@
return infoSnapshot;
}
- private void logAppFullyDrawn(WindowingModeTransitionInfoSnapshot info) {
+ private void logAppFullyDrawn(TransitionInfoSnapshot info) {
if (info.type != TYPE_TRANSITION_WARM_LAUNCH && info.type != TYPE_TRANSITION_COLD_LAUNCH) {
return;
}
@@ -976,23 +1026,7 @@
mMetricsLogger.write(builder);
}
- private int getTransitionType(WindowingModeTransitionInfo info) {
- if (info.currentTransitionProcessRunning) {
- if (info.startResult == START_SUCCESS) {
- return TYPE_TRANSITION_WARM_LAUNCH;
- } else if (info.startResult == START_TASK_TO_FRONT) {
- return TYPE_TRANSITION_HOT_LAUNCH;
- }
- } else if (info.startResult == START_SUCCESS
- || (info.startResult == START_TASK_TO_FRONT)) {
- // Task may still exist when cold launching an activity and the start
- // result will be set to START_TASK_TO_FRONT. Treat this as a COLD launch.
- return TYPE_TRANSITION_COLD_LAUNCH;
- }
- return INVALID_TRANSITION_TYPE;
- }
-
- private void logAppStartMemoryStateCapture(WindowingModeTransitionInfoSnapshot info) {
+ private void logAppStartMemoryStateCapture(TransitionInfoSnapshot info) {
if (info.processRecord == null) {
if (DEBUG_METRICS) Slog.i(TAG, "logAppStartMemoryStateCapture processRecord null");
return;
@@ -1018,13 +1052,6 @@
memoryStat.swapInBytes);
}
- private WindowProcessController findProcessForActivity(ActivityRecord launchedActivity) {
- return launchedActivity != null
- ? mSupervisor.mService.mProcessNames.get(
- launchedActivity.processName, launchedActivity.info.applicationInfo.uid)
- : null;
- }
-
private ArtManagerInternal getArtManagerInternal() {
if (mArtManagerInternal == null) {
// Note that this may be null.
@@ -1035,30 +1062,24 @@
return mArtManagerInternal;
}
- /**
- * Starts traces for app launch.
- *
- * @param info
- * */
- private void startTraces(WindowingModeTransitionInfo info) {
- if (!Trace.isTagEnabled(Trace.TRACE_TAG_ACTIVITY_MANAGER) || info == null
- || info.launchTraceActive) {
+ /** Starts trace for an activity is actually launching. */
+ private void startLaunchTrace(@NonNull TransitionInfo info) {
+ if (DEBUG_METRICS) Slog.i(TAG, "startLaunchTrace " + info);
+ if (!Trace.isTagEnabled(Trace.TRACE_TAG_ACTIVITY_MANAGER)) {
return;
}
- Trace.asyncTraceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "launching: "
- + info.launchedActivity.packageName, 0);
- info.launchTraceActive = true;
+ info.mLaunchTraceName = "launching: " + info.mLastLaunchedActivity.packageName;
+ Trace.asyncTraceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, info.mLaunchTraceName, 0);
}
- private void stopLaunchTrace(WindowingModeTransitionInfo info) {
- if (info == null) {
+ /** Stops trace for the launch is completed or cancelled. */
+ private void stopLaunchTrace(@NonNull TransitionInfo info) {
+ if (DEBUG_METRICS) Slog.i(TAG, "stopLaunchTrace " + info);
+ if (info.mLaunchTraceName == null) {
return;
}
- if (info.launchTraceActive) {
- Trace.asyncTraceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER, "launching: "
- + info.launchedActivity.packageName, 0);
- info.launchTraceActive = false;
- }
+ Trace.asyncTraceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER, info.mLaunchTraceName, 0);
+ info.mLaunchTraceName = null;
}
public ActivityMetricsLaunchObserverRegistry getLaunchObserverRegistry() {
@@ -1094,16 +1115,16 @@
* Notify the {@link ActivityMetricsLaunchObserver} that the current launch sequence's activity
* has started.
*/
- private void launchObserverNotifyActivityLaunched(WindowingModeTransitionInfo info) {
+ private void launchObserverNotifyActivityLaunched(TransitionInfo info) {
Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER,
"MetricsLogger:launchObserverNotifyActivityLaunched");
@ActivityMetricsLaunchObserver.Temperature int temperature =
- convertTransitionTypeToLaunchObserverTemperature(getTransitionType(info));
+ convertTransitionTypeToLaunchObserverTemperature(info.mTransitionType);
// Beginning a launch is timing sensitive and so should be observed as soon as possible.
- mLaunchObserver.onActivityLaunched(convertActivityRecordToProto(info.launchedActivity),
- temperature);
+ mLaunchObserver.onActivityLaunched(convertActivityRecordToProto(info.mLastLaunchedActivity),
+ temperature);
Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);
}
@@ -1122,12 +1143,12 @@
* Notify the {@link ActivityMetricsLaunchObserver} that the current launch sequence is
* cancelled.
*/
- private void launchObserverNotifyActivityLaunchCancelled(WindowingModeTransitionInfo info) {
+ private void launchObserverNotifyActivityLaunchCancelled(TransitionInfo info) {
Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER,
"MetricsLogger:launchObserverNotifyActivityLaunchCancelled");
final @ActivityMetricsLaunchObserver.ActivityRecordProto byte[] activityRecordProto =
- info != null ? convertActivityRecordToProto(info.launchedActivity) : null;
+ info != null ? convertActivityRecordToProto(info.mLastLaunchedActivity) : null;
mLaunchObserver.onActivityLaunchCancelled(activityRecordProto);
@@ -1138,14 +1159,12 @@
* Notify the {@link ActivityMetricsLaunchObserver} that the current launch sequence's activity
* has fully finished (successfully).
*/
- private void launchObserverNotifyActivityLaunchFinished(WindowingModeTransitionInfo info,
- long timestampNs) {
+ private void launchObserverNotifyActivityLaunchFinished(TransitionInfo info, long timestampNs) {
Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER,
"MetricsLogger:launchObserverNotifyActivityLaunchFinished");
- mLaunchObserver
- .onActivityLaunchFinished(convertActivityRecordToProto(info.launchedActivity),
- timestampNs);
+ mLaunchObserver.onActivityLaunchFinished(
+ convertActivityRecordToProto(info.mLastLaunchedActivity), timestampNs);
Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);
}
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java
index f627dda..963e090 100644
--- a/services/core/java/com/android/server/wm/ActivityRecord.java
+++ b/services/core/java/com/android/server/wm/ActivityRecord.java
@@ -122,8 +122,6 @@
import static com.android.server.am.ActivityRecordProto.TRANSLUCENT;
import static com.android.server.am.ActivityRecordProto.VISIBLE;
import static com.android.server.am.ActivityRecordProto.VISIBLE_REQUESTED;
-import static com.android.server.am.EventLogTags.AM_RELAUNCH_ACTIVITY;
-import static com.android.server.am.EventLogTags.AM_RELAUNCH_RESUME_ACTIVITY;
import static com.android.server.policy.WindowManagerPolicy.FINISH_LAYOUT_REDO_ANIM;
import static com.android.server.policy.WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER;
import static com.android.server.wm.ActivityStack.ActivityState.DESTROYED;
@@ -303,16 +301,18 @@
import com.android.internal.content.ReferrerIntent;
import com.android.internal.util.ToBooleanFunction;
import com.android.internal.util.XmlUtils;
+import com.android.internal.util.function.pooled.PooledConsumer;
+import com.android.internal.util.function.pooled.PooledFunction;
+import com.android.internal.util.function.pooled.PooledLambda;
import com.android.server.AttributeCache;
import com.android.server.LocalServices;
import com.android.server.am.AppTimeTracker;
-import com.android.server.am.EventLogTags;
import com.android.server.am.PendingIntentRecord;
import com.android.server.display.color.ColorDisplayService;
import com.android.server.policy.WindowManagerPolicy;
import com.android.server.protolog.common.ProtoLog;
import com.android.server.uri.UriPermissionOwner;
-import com.android.server.wm.ActivityMetricsLogger.WindowingModeTransitionInfoSnapshot;
+import com.android.server.wm.ActivityMetricsLogger.TransitionInfoSnapshot;
import com.android.server.wm.ActivityStack.ActivityState;
import com.android.server.wm.WindowManagerService.H;
import com.android.server.wm.utils.InsetUtils;
@@ -698,12 +698,6 @@
}
}
- void dump(PrintWriter pw, String prefix) {
- }
-
- /**
- * Copied from old AppWindowToken.
- */
@Override
void dump(PrintWriter pw, String prefix, boolean dumpAll) {
final long now = SystemClock.uptimeMillis();
@@ -943,6 +937,10 @@
}
}
+ void setAppTimeTracker(AppTimeTracker att) {
+ appTimeTracker = att;
+ }
+
/** Update the saved state of an activity. */
void setSavedState(@Nullable Bundle savedState) {
mIcicle = savedState;
@@ -1170,6 +1168,15 @@
super.onParentChanged(newParent, oldParent);
+ if (isPersistable()) {
+ if (oldTask != null) {
+ mAtmService.notifyTaskPersisterLocked(oldTask, false);
+ }
+ if (newTask != null) {
+ mAtmService.notifyTaskPersisterLocked(newTask, false);
+ }
+ }
+
if (oldParent == null && newParent != null) {
// First time we are adding the activity to the system.
mVoiceInteraction = newTask.voiceSession != null;
@@ -1264,12 +1271,8 @@
if (prevDc.mFocusedApp == this) {
prevDc.setFocusedApp(null);
- final ActivityStack stack = dc.getTopStack();
- if (stack != null) {
- final Task task = stack.getTopChild();
- if (task != null && task.getTopChild() == this) {
- dc.setFocusedApp(this);
- }
+ if (dc.getTopMostActivity() == this) {
+ dc.setFocusedApp(this);
}
}
@@ -1523,7 +1526,13 @@
hasBeenLaunched = false;
mStackSupervisor = supervisor;
- taskAffinity = aInfo.taskAffinity;
+ // b/35954083: Limit task affinity to uid to avoid various issues associated with sharing
+ // affinity across uids.
+ final String uid = Integer.toString(info.applicationInfo.uid);
+ if (info.taskAffinity != null && !info.taskAffinity.startsWith(uid)) {
+ info.taskAffinity = uid + ":" + info.taskAffinity;
+ }
+ taskAffinity = info.taskAffinity;
stateNotNeeded = (aInfo.flags & FLAG_STATE_NOT_NEEDED) != 0;
nonLocalizedLabel = aInfo.nonLocalizedLabel;
labelRes = aInfo.labelRes;
@@ -1801,7 +1810,7 @@
// task snapshot starting window.
return STARTING_WINDOW_TYPE_SPLASH_SCREEN;
}
- return snapshot == null ? STARTING_WINDOW_TYPE_SPLASH_SCREEN
+ return snapshot == null ? STARTING_WINDOW_TYPE_NONE
: snapshotOrientationSameAsTask(snapshot) || fromRecents
? STARTING_WINDOW_TYPE_SNAPSHOT : STARTING_WINDOW_TYPE_SPLASH_SCREEN;
} else {
@@ -2209,7 +2218,7 @@
OP_PICTURE_IN_PICTURE, info.applicationInfo.uid, packageName) == MODE_ALLOWED;
}
- boolean isAlwaysFocusable() {
+ private boolean isAlwaysFocusable() {
return (info.flags & FLAG_ALWAYS_FOCUSABLE) != 0;
}
@@ -2266,23 +2275,28 @@
return true;
}
+ void finishIfSubActivity(ActivityRecord parent, String otherResultWho, int otherRequestCode) {
+ if (resultTo != parent
+ || requestCode != otherRequestCode
+ || !Objects.equals(resultWho, otherResultWho)) return;
+
+ finishIfPossible("request-sub", false /* oomAdj */);
+ }
+
/** Finish all activities in the task with the same affinity as this one. */
- void finishActivityAffinity() {
- final ArrayList<ActivityRecord> activities = task.mChildren;
- for (int index = activities.indexOf(this); index >= 0; --index) {
- final ActivityRecord cur = activities.get(index);
- if (!Objects.equals(cur.taskAffinity, taskAffinity)) {
- break;
- }
- cur.finishIfPossible("request-affinity", true /* oomAdj */);
- }
+ boolean finishIfSameAffinity(ActivityRecord r) {
+ // End search once we get to the activity that doesn't have the same affinity.
+ if (!Objects.equals(r.taskAffinity, taskAffinity)) return true;
+
+ r.finishIfPossible("request-affinity", true /* oomAdj */);
+ return false;
}
/**
* Sets the result for activity that started this one, clears the references to activities
* started for result from this one, and clears new intents.
*/
- void finishActivityResults(int resultCode, Intent resultData) {
+ private void finishActivityResults(int resultCode, Intent resultData) {
// Send the result if needed
if (resultTo != null) {
if (DEBUG_RESULTS) {
@@ -2379,17 +2393,14 @@
// Make a local reference to its task since this.task could be set to null once this
// activity is destroyed and detached from task.
final Task task = getTask();
- EventLog.writeEvent(EventLogTags.AM_FINISH_ACTIVITY,
- mUserId, System.identityHashCode(this),
+ EventLogTags.writeWmFinishActivity(mUserId, System.identityHashCode(this),
task.mTaskId, shortComponentName, reason);
- final ArrayList<ActivityRecord> activities = task.mChildren;
- final int index = activities.indexOf(this);
- if (index < (task.getChildCount() - 1)) {
+ ActivityRecord next = task.getActivityAbove(this);
+ if (next != null) {
if ((intent.getFlags() & Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET) != 0) {
// If the caller asked that this activity (and all above it)
// be cleared when the task is reset, don't lose that information,
// but propagate it up to the next activity.
- final ActivityRecord next = task.getChildAt(index + 1);
next.intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
}
}
@@ -2407,7 +2418,7 @@
} else {
// Only move the next stack to top in its display.
final ActivityDisplay display = stack.getDisplay();
- final ActivityRecord next = display.topRunningActivity();
+ next = display.topRunningActivity();
if (next != null) {
display.positionChildAtTop(next.getActivityStack(),
false /* includingParents */, "finish-display-top");
@@ -2417,7 +2428,8 @@
finishActivityResults(resultCode, resultData);
- final boolean endTask = index <= 0 && !task.isClearingToReuseTask();
+ final boolean endTask = task.getActivityBelow(this) == null
+ && !task.isClearingToReuseTask();
final int transit = endTask ? TRANSIT_TASK_CLOSE : TRANSIT_ACTIVITY_CLOSE;
if (isState(RESUMED)) {
if (endTask) {
@@ -2477,16 +2489,13 @@
// sync with the activity visibility being set for this finishing activity above.
// In this case, we can set the visibility of all the task overlay activities when
// we detect the last one is finishing to keep them in sync.
- if (task.onlyHasTaskOverlayActivities(true /* excludeFinishing */)) {
- for (int i = task.getChildCount() - 1; i >= 0 ; --i) {
- final ActivityRecord taskOverlay = task.getChildAt(i);
- if (!taskOverlay.mTaskOverlay) {
- continue;
- }
- taskOverlay.prepareActivityHideTransitionAnimation(transit);
- }
+ if (task.onlyHasTaskOverlayActivities(false /* includeFinishing */)) {
+ final PooledConsumer c = PooledLambda.obtainConsumer(
+ ActivityRecord::prepareActivityHideTransitionAnimationIfOvarlay,
+ PooledLambda.__(ActivityRecord.class), transit);
+ task.forAllActivities(c);
+ c.recycle();
}
-
return removedActivity ? FINISH_RESULT_REMOVED : FINISH_RESULT_REQUESTED;
} else {
if (DEBUG_PAUSE) Slog.v(TAG_PAUSE, "Finish waiting for pause of: " + this);
@@ -2498,6 +2507,12 @@
}
}
+ private void prepareActivityHideTransitionAnimationIfOvarlay(int transit) {
+ if (mTaskOverlay) {
+ prepareActivityHideTransitionAnimation(transit);
+ }
+ }
+
private void prepareActivityHideTransitionAnimation(int transit) {
final DisplayContent dc = getDisplay().mDisplayContent;
dc.prepareAppTransition(transit, false);
@@ -2655,8 +2670,8 @@
return false;
}
- EventLog.writeEvent(EventLogTags.AM_DESTROY_ACTIVITY, mUserId,
- System.identityHashCode(this), task.mTaskId, shortComponentName, reason);
+ EventLogTags.writeWmDestroyActivity(mUserId, System.identityHashCode(this),
+ task.mTaskId, shortComponentName, reason);
final ActivityStack stack = getActivityStack();
if (hasProcess() && !stack.inLruList(this)) {
@@ -2995,6 +3010,7 @@
getDisplayContent().mChangingApps.remove(this);
getDisplayContent().mUnknownAppVisibilityController.appRemovedOrHidden(this);
mWmService.mTaskSnapshotController.onAppRemoved(this);
+ mStackSupervisor.getActivityMetricsLogger().notifyActivityRemoved(this);
waitingToShow = false;
if (getDisplayContent().mClosingApps.contains(this)) {
delayed = true;
@@ -3060,7 +3076,7 @@
}
// Reset the last saved PiP snap fraction on removal.
- mDisplayContent.mPinnedStackControllerLocked.resetReentrySnapFraction(mActivityComponent);
+ mDisplayContent.mPinnedStackControllerLocked.resetReentryBounds(mActivityComponent);
mRemovingFromDisplay = false;
}
@@ -3269,15 +3285,16 @@
* immediately finishes after, so we have to transfer T to M.
*/
void transferStartingWindowFromHiddenAboveTokenIfNeeded() {
- for (int i = task.mChildren.size() - 1; i >= 0; i--) {
- final ActivityRecord fromActivity = task.mChildren.get(i);
- if (fromActivity == this) {
- return;
- }
- if (!fromActivity.mVisibleRequested && transferStartingWindow(fromActivity.token)) {
- return;
- }
- }
+ final PooledFunction p = PooledLambda.obtainFunction(ActivityRecord::transferStartingWindow,
+ this, PooledLambda.__(ActivityRecord.class));
+ task.forAllActivities(p);
+ p.recycle();
+ }
+
+ private boolean transferStartingWindow(ActivityRecord fromActivity) {
+ if (fromActivity == this) return true;
+
+ return !fromActivity.mVisibleRequested && transferStartingWindow(fromActivity.token);
}
void checkKeyguardFlagsChanged() {
@@ -3349,7 +3366,7 @@
if (!inPinnedWindowingMode() && (mShowWhenLocked || containsShowWhenLockedWindow())) {
return true;
} else if (mInheritShownWhenLocked) {
- final ActivityRecord r = getActivityBelow();
+ final ActivityRecord r = task.getActivityBelow(this);
return r != null && !r.inPinnedWindowingMode() && (r.mShowWhenLocked
|| r.containsShowWhenLockedWindow());
} else {
@@ -3374,19 +3391,6 @@
true /* topToBottom */);
}
- /**
- * @return an {@link ActivityRecord} of the activity below this activity, or {@code null} if no
- * such activity exists.
- */
- @Nullable
- private ActivityRecord getActivityBelow() {
- final int pos = task.mChildren.indexOf(this);
- if (pos == -1) {
- throw new IllegalStateException("Activity not found in its task");
- }
- return pos == 0 ? null : task.getChildAt(pos - 1);
- }
-
WindowState getImeTargetBelowWindow(WindowState w) {
final int index = mChildren.indexOf(w);
if (index > 0) {
@@ -3430,7 +3434,8 @@
}
@Override
- boolean forAllActivities(Function<ActivityRecord, Boolean> callback) {
+ boolean forAllActivities(
+ Function<ActivityRecord, Boolean> callback, boolean traverseTopToBottom) {
return callback.apply(this);
}
@@ -3607,7 +3612,9 @@
clearOptionsLocked(false /* withAbort */);
} else {
// This will clear the options for all the ActivityRecords for this Task.
- task.clearAllPendingOptions();
+ task.forAllActivities((r) -> {
+ r.clearOptionsLocked(false /* withAbort */);
+ });
}
}
}
@@ -4323,7 +4330,7 @@
ProtoLog.v(WM_DEBUG_ADD_REMOVE, "notifyAppStopped: %s", this);
mAppStopped = true;
// Reset the last saved PiP snap fraction on app stop.
- mDisplayContent.mPinnedStackControllerLocked.resetReentrySnapFraction(mActivityComponent);
+ mDisplayContent.mPinnedStackControllerLocked.resetReentryBounds(mActivityComponent);
destroySurfaces();
// Remove any starting window that was added for this app if they are still around.
removeStartingWindow();
@@ -4535,8 +4542,12 @@
* @param activeActivity the activity that is active or just completed pause action. We won't
* resume if this activity is active.
*/
- private boolean shouldPauseActivity(ActivityRecord activeActivity) {
- return shouldMakeActive(activeActivity) && !isFocusable() && !isState(PAUSING, PAUSED);
+ @VisibleForTesting
+ boolean shouldPauseActivity(ActivityRecord activeActivity) {
+ return shouldMakeActive(activeActivity) && !isFocusable() && !isState(PAUSING, PAUSED)
+ // We will only allow pausing if results is null, otherwise it will cause this
+ // activity to resume before getting result
+ && (results == null);
}
/**
@@ -4596,19 +4607,16 @@
}
// Check if position in task allows to become paused
- final int positionInTask = task.mChildren.indexOf(this);
- if (positionInTask == -1) {
+ if (!task.hasChild(this)) {
throw new IllegalStateException("Activity not found in its task");
}
- if (positionInTask == task.getChildCount() - 1) {
+ final ActivityRecord activityAbove = task.getActivityAbove(this);
+ if (activityAbove == null) {
// It's the topmost activity in the task - should become resumed now
return true;
}
// Check if activity above is finishing now and this one becomes the topmost in task.
- final ActivityRecord activityAbove = task.getChildAt(positionInTask + 1);
- if (activityAbove.finishing && results == null) {
- // We will only allow making active if activity above wasn't launched for result.
- // Otherwise it will cause this activity to resume before getting result.
+ if (activityAbove.finishing) {
return true;
}
return false;
@@ -4663,7 +4671,7 @@
stopped = false;
if (isActivityTypeHome()) {
- mStackSupervisor.updateHomeProcess(task.getChildAt(0).app);
+ mStackSupervisor.updateHomeProcess(task.getBottomMostActivity().app);
}
if (nowVisible) {
@@ -4739,7 +4747,7 @@
if (!mVisibleRequested) {
setVisibility(false);
}
- EventLogTags.writeAmStopActivity(
+ EventLogTags.writeWmStopActivity(
mUserId, System.identityHashCode(this), shortComponentName);
mAtmService.getLifecycleManager().scheduleTransaction(app.getThread(), appToken,
StopActivityItem.obtain(mVisibleRequested, configChangeFlags));
@@ -4808,8 +4816,8 @@
void addToStopping(boolean scheduleIdle, boolean idleDelayed, String reason) {
if (!mStackSupervisor.mStoppingActivities.contains(this)) {
- EventLog.writeEvent(EventLogTags.AM_ADD_TO_STOPPING, mUserId,
- System.identityHashCode(this), shortComponentName, reason);
+ EventLogTags.writeWmAddToStopping(mUserId, System.identityHashCode(this),
+ shortComponentName, reason);
mStackSupervisor.mStoppingActivities.add(this);
}
@@ -4978,7 +4986,7 @@
}
void reportFullyDrawnLocked(boolean restoredFromBundle) {
- final WindowingModeTransitionInfoSnapshot info = mStackSupervisor
+ final TransitionInfoSnapshot info = mStackSupervisor
.getActivityMetricsLogger().logAppTransitionReportedDrawn(this, restoredFromBundle);
if (info != null) {
mStackSupervisor.reportActivityLaunchedLocked(false /* timeout */, this,
@@ -5010,8 +5018,8 @@
if (!drawn) {
return;
}
- final WindowingModeTransitionInfoSnapshot info = mStackSupervisor
- .getActivityMetricsLogger().notifyWindowsDrawn(getWindowingMode(), timestampNs);
+ final TransitionInfoSnapshot info = mStackSupervisor
+ .getActivityMetricsLogger().notifyWindowsDrawn(this, timestampNs);
final int windowsDrawnDelayMs = info != null ? info.windowsDrawnDelayMs : INVALID_DELAY;
final @LaunchState int launchState = info != null ? info.getLaunchState() : -1;
mStackSupervisor.reportActivityLaunchedLocked(false /* timeout */, this,
@@ -5212,7 +5220,8 @@
}
}
} else if (w.isDrawnLw()) {
- onStartingWindowDrawn(SystemClock.elapsedRealtimeNanos());
+ // The starting window for this container is drawn.
+ mStackSupervisor.getActivityMetricsLogger().notifyStartingWindowDrawn(this);
startingDisplayed = true;
}
}
@@ -5220,14 +5229,6 @@
return isInterestingAndDrawn;
}
- /** Called when the starting window for this container is drawn. */
- private void onStartingWindowDrawn(long timestampNs) {
- synchronized (mAtmService.mGlobalLock) {
- mAtmService.mStackSupervisor.getActivityMetricsLogger().notifyStartingWindowDrawn(
- getWindowingMode(), timestampNs);
- }
- }
-
/**
* Called when the key dispatching to a window associated with the app window container
* timed-out.
@@ -5290,6 +5291,10 @@
&& mAtmService.mAmInternal.isUserRunning(mUserId, 0 /* flags */));
}
+ boolean canBeTopRunning() {
+ return !finishing && okToShowLocked();
+ }
+
/**
* This method will return true if the activity is either visible, is becoming visible, is
* currently pausing, or is resumed.
@@ -5321,13 +5326,12 @@
static int getTaskForActivityLocked(IBinder token, boolean onlyRoot) {
final ActivityRecord r = ActivityRecord.forTokenLocked(token);
- if (r == null) {
+ if (r == null || r.getParent() == null) {
return INVALID_TASK_ID;
}
final Task task = r.task;
- final int activityNdx = task.mChildren.indexOf(r);
- if (activityNdx < 0
- || (onlyRoot && activityNdx > task.findRootIndex(true /* effectiveRoot */))) {
+ if (onlyRoot && r.compareTo(task.getRootActivity(
+ false /*ignoreRelinquishIdentity*/, true /*setToBottomIfNone*/)) > 0) {
return INVALID_TASK_ID;
}
return task.mTaskId;
@@ -6239,9 +6243,6 @@
// relatively fixed.
overrideConfig.colorMode = fullConfig.colorMode;
overrideConfig.densityDpi = fullConfig.densityDpi;
- overrideConfig.screenLayout = fullConfig.screenLayout
- & (Configuration.SCREENLAYOUT_LONG_MASK
- | Configuration.SCREENLAYOUT_SIZE_MASK);
// The smallest screen width is the short side of screen bounds. Because the bounds
// and density won't be changed, smallestScreenWidthDp is also fixed.
overrideConfig.smallestScreenWidthDp = fullConfig.smallestScreenWidthDp;
@@ -6376,6 +6377,10 @@
// Use resolvedBounds to compute other override configurations such as appBounds
task.computeConfigResourceOverrides(resolvedConfig, newParentConfiguration,
mCompatDisplayInsets);
+ // Use current screen layout as source because the size of app is independent to parent.
+ resolvedConfig.screenLayout = Task.computeScreenLayoutOverride(
+ getConfiguration().screenLayout, resolvedConfig.screenWidthDp,
+ resolvedConfig.screenHeightDp);
// Use parent orientation if it cannot be decided by bounds, so the activity can fit inside
// the parent bounds appropriately.
@@ -6561,7 +6566,7 @@
stackBounds = mTmpRect;
pinnedStack.getBounds(stackBounds);
}
- mDisplayContent.mPinnedStackControllerLocked.saveReentrySnapFraction(
+ mDisplayContent.mPinnedStackControllerLocked.saveReentryBounds(
mActivityComponent, stackBounds);
}
@@ -6939,9 +6944,13 @@
"Relaunching: " + this + " with results=" + pendingResults
+ " newIntents=" + pendingNewIntents + " andResume=" + andResume
+ " preserveWindow=" + preserveWindow);
- EventLog.writeEvent(andResume ? AM_RELAUNCH_RESUME_ACTIVITY
- : AM_RELAUNCH_ACTIVITY, mUserId, System.identityHashCode(this),
- task.mTaskId, shortComponentName);
+ if (andResume) {
+ EventLogTags.writeWmRelaunchResumeActivity(mUserId, System.identityHashCode(this),
+ task.mTaskId, shortComponentName);
+ } else {
+ EventLogTags.writeWmRelaunchActivity(mUserId, System.identityHashCode(this),
+ task.mTaskId, shortComponentName);
+ }
startFreezingScreenLocked(0);
@@ -7213,6 +7222,10 @@
return info.applicationInfo.uid;
}
+ boolean isUid(int uid) {
+ return info.applicationInfo.uid == uid;
+ }
+
int getPid() {
return app != null ? app.getPid() : 0;
}
@@ -7276,13 +7289,8 @@
if (task == null) {
return false;
}
- final ActivityRecord rootActivity = task.getRootActivity();
- if (rootActivity != null) {
- return this == rootActivity;
- }
- // No non-finishing activity found. In this case the bottom-most activity is considered to
- // be the root.
- return task.getChildAt(0) == this;
+ final ActivityRecord rootActivity = task.getRootActivity(true);
+ return this == rootActivity;
}
@Override
diff --git a/services/core/java/com/android/server/wm/ActivityStack.java b/services/core/java/com/android/server/wm/ActivityStack.java
index f1c47eb..bb3126b 100644
--- a/services/core/java/com/android/server/wm/ActivityStack.java
+++ b/services/core/java/com/android/server/wm/ActivityStack.java
@@ -76,15 +76,12 @@
import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_APP;
import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_CLEANUP;
import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_PAUSE;
-import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_RELEASE;
import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_RESULTS;
import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_STACK;
import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_STATES;
import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_SWITCH;
-import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_TASKS;
import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_TRANSITION;
import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_USER_LEAVING;
-import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_VISIBILITY;
import static com.android.server.wm.ActivityTaskManagerDebugConfig.POSTFIX_ADD_REMOVE;
import static com.android.server.wm.ActivityTaskManagerDebugConfig.POSTFIX_APP;
import static com.android.server.wm.ActivityTaskManagerDebugConfig.POSTFIX_CLEANUP;
@@ -108,7 +105,6 @@
import static com.android.server.wm.BoundsAnimationController.SCHEDULE_PIP_MODE_CHANGED_ON_END;
import static com.android.server.wm.BoundsAnimationController.SCHEDULE_PIP_MODE_CHANGED_ON_START;
import static com.android.server.wm.DragResizeMode.DRAG_RESIZE_MODE_DOCKED_DIVIDER;
-import static com.android.server.wm.RootActivityContainer.FindTaskResult;
import static com.android.server.wm.StackProto.ADJUSTED_BOUNDS;
import static com.android.server.wm.StackProto.ADJUSTED_FOR_IME;
import static com.android.server.wm.StackProto.ADJUST_DIVIDER_AMOUNT;
@@ -144,12 +140,10 @@
import android.content.ComponentName;
import android.content.Intent;
import android.content.pm.ActivityInfo;
-import android.content.pm.ApplicationInfo;
import android.content.res.Configuration;
import android.graphics.Point;
import android.graphics.Rect;
import android.graphics.Region;
-import android.net.Uri;
import android.os.Binder;
import android.os.Debug;
import android.os.Handler;
@@ -163,8 +157,6 @@
import android.service.voice.IVoiceInteractionSession;
import android.util.ArraySet;
import android.util.DisplayMetrics;
-import android.util.EventLog;
-import android.util.IntArray;
import android.util.Log;
import android.util.Slog;
import android.util.proto.ProtoOutputStream;
@@ -180,26 +172,26 @@
import com.android.internal.os.logging.MetricsLoggerWrapper;
import com.android.internal.policy.DividerSnapAlgorithm;
import com.android.internal.policy.DockedDividerUtils;
+import com.android.internal.util.function.pooled.PooledConsumer;
+import com.android.internal.util.function.pooled.PooledFunction;
import com.android.internal.util.function.pooled.PooledLambda;
+import com.android.internal.util.function.pooled.PooledPredicate;
import com.android.server.Watchdog;
import com.android.server.am.ActivityManagerService;
import com.android.server.am.ActivityManagerService.ItemMatcher;
import com.android.server.am.AppTimeTracker;
-import com.android.server.am.EventLogTags;
import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
-import java.util.Set;
import java.util.function.Consumer;
/**
* State and management of a single stack of activities.
*/
-class ActivityStack extends WindowContainer<Task> implements BoundsAnimationTarget,
- ConfigurationContainerListener {
+class ActivityStack extends WindowContainer<Task> implements BoundsAnimationTarget {
private static final String TAG = TAG_WITH_CLASS_NAME ? "ActivityStack" : TAG_ATM;
static final String TAG_ADD_REMOVE = TAG + POSTFIX_ADD_REMOVE;
private static final String TAG_APP = TAG + POSTFIX_APP;
@@ -502,7 +494,7 @@
case DESTROY_ACTIVITIES_MSG: {
ScheduleDestroyArgs args = (ScheduleDestroyArgs)msg.obj;
synchronized (mService.mGlobalLock) {
- destroyActivitiesLocked(args.mOwner, args.mReason);
+ destroyActivities(args.mOwner, args.mReason);
}
} break;
case TRANSLUCENT_TIMEOUT_MSG: {
@@ -517,13 +509,226 @@
private static final ResetTargetTaskHelper sResetTargetTaskHelper = new ResetTargetTaskHelper();
private final EnsureActivitiesVisibleHelper mEnsureActivitiesVisibleHelper =
new EnsureActivitiesVisibleHelper(this);
+ private final EnsureVisibleActivitiesConfigHelper mEnsureVisibleActivitiesConfigHelper =
+ new EnsureVisibleActivitiesConfigHelper();
+ private class EnsureVisibleActivitiesConfigHelper {
+ private boolean mUpdateConfig;
+ private boolean mPreserveWindow;
+ private boolean mBehindFullscreen;
- int numActivities() {
- int count = 0;
- for (int taskNdx = getChildCount() - 1; taskNdx >= 0; --taskNdx) {
- count += getChildAt(taskNdx).getChildCount();
+ void reset(boolean preserveWindow) {
+ mPreserveWindow = preserveWindow;
+ mUpdateConfig = false;
+ mBehindFullscreen = false;
}
- return count;
+
+ void process(ActivityRecord start, boolean preserveWindow) {
+ if (start == null || !start.mVisibleRequested) {
+ return;
+ }
+ reset(preserveWindow);
+
+ final PooledFunction f = PooledLambda.obtainFunction(
+ EnsureVisibleActivitiesConfigHelper::processActivity, this,
+ PooledLambda.__(ActivityRecord.class));
+ forAllActivities(f, start.getTask(), true /*includeBoundary*/,
+ true /*traverseTopToBottom*/);
+ f.recycle();
+
+ if (mUpdateConfig) {
+ // Ensure the resumed state of the focus activity if we updated the configuration of
+ // any activity.
+ mRootActivityContainer.resumeFocusedStacksTopActivities();
+ }
+ }
+
+ boolean processActivity(ActivityRecord r) {
+ mUpdateConfig |= r.ensureActivityConfiguration(0 /*globalChanges*/, mPreserveWindow);
+ mBehindFullscreen |= r.occludesParent();
+ return mBehindFullscreen;
+ }
+ }
+
+ private final CheckBehindFullscreenActivityHelper mCheckBehindFullscreenActivityHelper =
+ new CheckBehindFullscreenActivityHelper();
+ private class CheckBehindFullscreenActivityHelper {
+ private boolean mAboveTop;
+ private boolean mBehindFullscreenActivity;
+ private ActivityRecord mToCheck;
+ private Consumer<ActivityRecord> mHandleBehindFullscreenActivity;
+ private boolean mHandlingOccluded;
+
+ private void reset(ActivityRecord toCheck,
+ Consumer<ActivityRecord> handleBehindFullscreenActivity) {
+ mToCheck = toCheck;
+ mHandleBehindFullscreenActivity = handleBehindFullscreenActivity;
+ mAboveTop = true;
+ mBehindFullscreenActivity = false;
+
+ if (!shouldBeVisible(null)) {
+ // The stack is not visible, so no activity in it should be displaying a starting
+ // window. Mark all activities below top and behind fullscreen.
+ mAboveTop = false;
+ mBehindFullscreenActivity = true;
+ }
+
+ mHandlingOccluded = mToCheck == null && mHandleBehindFullscreenActivity != null;
+ }
+
+ boolean process(ActivityRecord toCheck,
+ Consumer<ActivityRecord> handleBehindFullscreenActivity) {
+ reset(toCheck, handleBehindFullscreenActivity);
+
+ if (!mHandlingOccluded && mBehindFullscreenActivity) {
+ return true;
+ }
+
+ final ActivityRecord topActivity = topRunningActivityLocked();
+ final PooledFunction f = PooledLambda.obtainFunction(
+ CheckBehindFullscreenActivityHelper::processActivity, this,
+ PooledLambda.__(ActivityRecord.class), topActivity);
+ forAllActivities(f);
+ f.recycle();
+
+ return mBehindFullscreenActivity;
+ }
+
+ private boolean processActivity(ActivityRecord r, ActivityRecord topActivity) {
+ if (mAboveTop) {
+ if (r == topActivity) {
+ if (r == mToCheck) {
+ // It is the top activity in a visible stack.
+ mBehindFullscreenActivity = false;
+ return true;
+ }
+ mAboveTop = false;
+ }
+ mBehindFullscreenActivity |= r.occludesParent();
+ return false;
+ }
+
+ if (mHandlingOccluded) {
+ mHandleBehindFullscreenActivity.accept(r);
+ } else if (r == mToCheck) {
+ return true;
+ } else if (mBehindFullscreenActivity) {
+ // It is occluded before {@param toCheck} is found.
+ return true;
+ }
+ mBehindFullscreenActivity |= r.occludesParent();
+ return false;
+ }
+ }
+
+ // TODO: Can we just loop through WindowProcessController#mActivities instead of doing this?
+ private final RemoveHistoryRecordsForApp mRemoveHistoryRecordsForApp =
+ new RemoveHistoryRecordsForApp();
+ private class RemoveHistoryRecordsForApp {
+ private boolean mHasVisibleActivities;
+ private boolean mIsProcessRemoved;
+ private WindowProcessController mApp;
+ private ArrayList<ActivityRecord> mToRemove = new ArrayList<>();
+
+ boolean process(WindowProcessController app) {
+ mToRemove.clear();
+ mHasVisibleActivities = false;
+ mApp = app;
+ mIsProcessRemoved = app.isRemoved();
+ if (mIsProcessRemoved) {
+ // The package of the died process should be force-stopped, so make its activities
+ // as finishing to prevent the process from being started again if the next top
+ // (or being visible) activity also resides in the same process.
+ app.makeFinishingForProcessRemoved();
+ }
+
+ final PooledConsumer c = PooledLambda.obtainConsumer(
+ RemoveHistoryRecordsForApp::addActivityToRemove, this,
+ PooledLambda.__(ActivityRecord.class));
+ forAllActivities(c);
+ c.recycle();
+
+ while (!mToRemove.isEmpty()) {
+ processActivity(mToRemove.remove(0));
+ }
+
+ mApp = null;
+ return mHasVisibleActivities;
+ }
+
+ private void addActivityToRemove(ActivityRecord r) {
+ if (r.app == mApp) {
+ mToRemove.add(r);
+ }
+ }
+
+ private void processActivity(ActivityRecord r) {
+ if (DEBUG_CLEANUP) Slog.v(TAG_CLEANUP, "Record " + r + ": app=" + r.app);
+
+ if (r.app != mApp) {
+ return;
+ }
+ if (r.isVisible() || r.mVisibleRequested) {
+ // While an activity launches a new activity, it's possible that the old
+ // activity is already requested to be hidden (mVisibleRequested=false), but
+ // this visibility is not yet committed, so isVisible()=true.
+ mHasVisibleActivities = true;
+ }
+ final boolean remove;
+ if ((r.mRelaunchReason == RELAUNCH_REASON_WINDOWING_MODE_RESIZE
+ || r.mRelaunchReason == RELAUNCH_REASON_FREE_RESIZE)
+ && r.launchCount < 3 && !r.finishing) {
+ // If the process crashed during a resize, always try to relaunch it, unless
+ // it has failed more than twice. Skip activities that's already finishing
+ // cleanly by itself.
+ remove = false;
+ } else if ((!r.hasSavedState() && !r.stateNotNeeded
+ && !r.isState(ActivityState.RESTARTING_PROCESS)) || r.finishing) {
+ // Don't currently have state for the activity, or
+ // it is finishing -- always remove it.
+ remove = true;
+ } else if (!r.mVisibleRequested && r.launchCount > 2
+ && r.lastLaunchTime > (SystemClock.uptimeMillis() - 60000)) {
+ // We have launched this activity too many times since it was
+ // able to run, so give up and remove it.
+ // (Note if the activity is visible, we don't remove the record.
+ // We leave the dead window on the screen but the process will
+ // not be restarted unless user explicitly tap on it.)
+ remove = true;
+ } else {
+ // The process may be gone, but the activity lives on!
+ remove = false;
+ }
+ if (remove) {
+ if (DEBUG_ADD_REMOVE || DEBUG_CLEANUP) Slog.i(TAG_ADD_REMOVE,
+ "Removing activity " + r + " from stack "
+ + ": hasSavedState=" + r.hasSavedState()
+ + " stateNotNeeded=" + r.stateNotNeeded
+ + " finishing=" + r.finishing
+ + " state=" + r.getState() + " callers=" + Debug.getCallers(5));
+ if (!r.finishing || mIsProcessRemoved) {
+ Slog.w(TAG, "Force removing " + r + ": app died, no saved state");
+ EventLogTags.writeWmFinishActivity(r.mUserId,
+ System.identityHashCode(r), r.getTask().mTaskId,
+ r.shortComponentName, "proc died without state saved");
+ }
+ } else {
+ // We have the current state for this activity, so
+ // it can be restarted later when needed.
+ if (DEBUG_ALL) Slog.v(TAG, "Keeping entry, setting app to null");
+ if (DEBUG_APP) Slog.v(TAG_APP,
+ "Clearing app during removeHistory for activity " + r);
+ r.app = null;
+ // Set nowVisible to previous visible state. If the app was visible while
+ // it died, we leave the dead window on screen so it's basically visible.
+ // This is needed when user later tap on the dead window, we need to stop
+ // other apps when user transfers focus to the restarted activity.
+ r.nowVisible = r.mVisibleRequested;
+ }
+ r.cleanUp(true /* cleanServices */, true /* setState */);
+ if (remove) {
+ r.removeFromHistory("appDied");
+ }
+ }
}
ActivityStack(ActivityDisplay display, int stackId, ActivityStackSupervisor supervisor,
@@ -533,7 +738,7 @@
mDockedStackMinimizeThickness =
supervisor.mService.mWindowManager.mContext.getResources().getDimensionPixelSize(
com.android.internal.R.dimen.docked_stack_minimize_thickness);
- EventLog.writeEvent(com.android.server.EventLogTags.WM_STACK_CREATED, stackId);
+ EventLogTags.writeWmStackCreated(stackId);
mStackSupervisor = supervisor;
mService = supervisor.mService;
mRootActivityContainer = mService.mRootActivityContainer;
@@ -944,7 +1149,7 @@
}
}
- boolean updateBoundsAllowed(Rect bounds) {
+ private boolean updateBoundsAllowed(Rect bounds) {
if (!mUpdateBoundsDeferred) {
return true;
}
@@ -957,7 +1162,7 @@
return false;
}
- boolean updateDisplayedBoundsAllowed(Rect bounds) {
+ private boolean updateDisplayedBoundsAllowed(Rect bounds) {
if (!mUpdateBoundsDeferred) {
return true;
}
@@ -974,47 +1179,29 @@
return topRunningActivityLocked(false /* focusableOnly */);
}
- void getAllRunningVisibleActivitiesLocked(ArrayList<ActivityRecord> outActivities) {
- outActivities.clear();
- for (int taskNdx = getChildCount() - 1; taskNdx >= 0; --taskNdx) {
- getChildAt(taskNdx).getAllRunningVisibleActivitiesLocked(outActivities);
- }
- }
-
ActivityRecord topRunningActivityLocked(boolean focusableOnly) {
- for (int taskNdx = getChildCount() - 1; taskNdx >= 0; --taskNdx) {
- ActivityRecord r = getChildAt(taskNdx).topRunningActivityLocked();
- if (r != null && (!focusableOnly || r.isFocusable())) {
- return r;
- }
+ // Split into 2 to avoid object creation due to variable capture.
+ if (focusableOnly) {
+ return getActivity((r) -> r.canBeTopRunning() && r.isFocusable());
+ } else {
+ return getActivity(ActivityRecord::canBeTopRunning);
}
- return null;
}
- ActivityRecord topRunningNonOverlayTaskActivity() {
- for (int taskNdx = getChildCount() - 1; taskNdx >= 0; --taskNdx) {
- final Task task = getChildAt(taskNdx);
- for (int activityNdx = task.getChildCount() - 1; activityNdx >= 0; --activityNdx) {
- final ActivityRecord r = task.getChildAt(activityNdx);
- if (!r.finishing && !r.mTaskOverlay) {
- return r;
- }
- }
- }
- return null;
+ private ActivityRecord topRunningNonOverlayTaskActivity() {
+ return getActivity((r) -> (r.canBeTopRunning() && !r.mTaskOverlay));
}
ActivityRecord topRunningNonDelayedActivityLocked(ActivityRecord notTop) {
- for (int taskNdx = getChildCount() - 1; taskNdx >= 0; --taskNdx) {
- final Task task = getChildAt(taskNdx);
- for (int activityNdx = task.getChildCount() - 1; activityNdx >= 0; --activityNdx) {
- final ActivityRecord r = task.getChildAt(activityNdx);
- if (!r.finishing && !r.delayedResume && r != notTop && r.okToShowLocked()) {
- return r;
- }
- }
- }
- return null;
+ final PooledPredicate p = PooledLambda.obtainPredicate(ActivityStack::isTopRunningNonDelayed
+ , PooledLambda.__(ActivityRecord.class), notTop);
+ final ActivityRecord r = getActivity(p);
+ p.recycle();
+ return r;
+ }
+
+ private static boolean isTopRunningNonDelayed(ActivityRecord r, ActivityRecord notTop) {
+ return !r.delayedResume && r != notTop && r.canBeTopRunning();
}
/**
@@ -1027,30 +1214,19 @@
* @return Returns the HistoryRecord of the next activity on the stack.
*/
final ActivityRecord topRunningActivityLocked(IBinder token, int taskId) {
- for (int taskNdx = getChildCount() - 1; taskNdx >= 0; --taskNdx) {
- Task task = getChildAt(taskNdx);
- if (task.mTaskId == taskId) {
- continue;
- }
- for (int activityNdx = task.getChildCount() - 1; activityNdx >= 0; --activityNdx) {
- final ActivityRecord r = task.getChildAt(activityNdx);
- // Note: the taskId check depends on real taskId fields being non-zero
- if (!r.finishing && (token != r.appToken) && r.okToShowLocked()) {
- return r;
- }
- }
- }
- return null;
+ final PooledPredicate p = PooledLambda.obtainPredicate(ActivityStack::isTopRunning,
+ PooledLambda.__(ActivityRecord.class), taskId, token);
+ final ActivityRecord r = getActivity(p);
+ p.recycle();
+ return r;
+ }
+
+ private static boolean isTopRunning(ActivityRecord r, int taskId, IBinder notTop) {
+ return r.getTask().mTaskId == taskId && r.appToken != notTop && r.canBeTopRunning();
}
ActivityRecord getTopNonFinishingActivity() {
- for (int taskNdx = getChildCount() - 1; taskNdx >= 0; --taskNdx) {
- final ActivityRecord r = getChildAt(taskNdx).getTopNonFinishingActivity();
- if (r != null) {
- return r;
- }
- }
- return null;
+ return getTopActivity(false /*includeFinishing*/, true /*includeOverlays*/);
}
final Task topTask() {
@@ -1090,35 +1266,6 @@
return null;
}
- boolean isInStackLocked(Task task) {
- return mChildren.contains(task);
- }
-
- /** Checks if there are tasks with specific UID in the stack. */
- boolean isUidPresent(int uid) {
- for (int j = getChildCount() - 1; j >= 0; --j) {
- final Task task = getChildAt(j);
- for (int i = task.getChildCount() - 1; i >= 0 ; --i) {
- final ActivityRecord r = task.getChildAt(i);
- if (r.getUid() == uid) {
- return true;
- }
- }
- }
- return false;
- }
-
- /** Get all UIDs that are present in the stack. */
- void getPresentUIDs(IntArray presentUIDs) {
- for (int j = getChildCount() - 1; j >= 0; --j) {
- final Task task = getChildAt(j);
- for (int i = task.getChildCount() - 1; i >= 0 ; --i) {
- final ActivityRecord r = task.getChildAt(i);
- presentUIDs.add(r.getUid());
- }
- }
- }
-
/** @return true if the stack can only contain one task */
boolean isSingleTaskInstance() {
final ActivityDisplay display = getDisplay();
@@ -1235,138 +1382,6 @@
return display != null && !display.isRemoved();
}
- /**
- * Returns the top activity in any existing task matching the given Intent in the input result.
- * Returns null if no such task is found.
- */
- void findTaskLocked(ActivityRecord target, FindTaskResult result) {
- Intent intent = target.intent;
- ActivityInfo info = target.info;
- ComponentName cls = intent.getComponent();
- if (info.targetActivity != null) {
- cls = new ComponentName(info.packageName, info.targetActivity);
- }
- final int userId = UserHandle.getUserId(info.applicationInfo.uid);
- boolean isDocument = intent != null & intent.isDocument();
- // If documentData is non-null then it must match the existing task data.
- Uri documentData = isDocument ? intent.getData() : null;
-
- if (DEBUG_TASKS) Slog.d(TAG_TASKS, "Looking for task of " + target + " in " + this);
- for (int taskNdx = getChildCount() - 1; taskNdx >= 0; --taskNdx) {
- final Task task = getChildAt(taskNdx);
- if (task.voiceSession != null) {
- // We never match voice sessions; those always run independently.
- if (DEBUG_TASKS) Slog.d(TAG_TASKS, "Skipping " + task + ": voice session");
- continue;
- }
- if (task.mUserId != userId) {
- // Looking for a different task.
- if (DEBUG_TASKS) Slog.d(TAG_TASKS, "Skipping " + task + ": different user");
- continue;
- }
-
- // Overlays should not be considered as the task's logical top activity.
- final ActivityRecord r = task.getTopNonFinishingActivity(false /* includeOverlays */);
- if (r == null || r.finishing || r.mUserId != userId ||
- r.launchMode == ActivityInfo.LAUNCH_SINGLE_INSTANCE) {
- if (DEBUG_TASKS) Slog.d(TAG_TASKS, "Skipping " + task + ": mismatch root " + r);
- continue;
- }
- if (!r.hasCompatibleActivityType(target)) {
- if (DEBUG_TASKS) Slog.d(TAG_TASKS, "Skipping " + task + ": mismatch activity type");
- continue;
- }
-
- final Intent taskIntent = task.intent;
- final Intent affinityIntent = task.affinityIntent;
- final boolean taskIsDocument;
- final Uri taskDocumentData;
- if (taskIntent != null && taskIntent.isDocument()) {
- taskIsDocument = true;
- taskDocumentData = taskIntent.getData();
- } else if (affinityIntent != null && affinityIntent.isDocument()) {
- taskIsDocument = true;
- taskDocumentData = affinityIntent.getData();
- } else {
- taskIsDocument = false;
- taskDocumentData = null;
- }
-
- if (DEBUG_TASKS) Slog.d(TAG_TASKS, "Comparing existing cls="
- + (task.realActivity != null ? task.realActivity.flattenToShortString() : "")
- + "/aff=" + r.getTask().rootAffinity + " to new cls="
- + intent.getComponent().flattenToShortString() + "/aff=" + info.taskAffinity);
- // TODO Refactor to remove duplications. Check if logic can be simplified.
- if (task.realActivity != null && task.realActivity.compareTo(cls) == 0
- && Objects.equals(documentData, taskDocumentData)) {
- if (DEBUG_TASKS) Slog.d(TAG_TASKS, "Found matching class!");
- //dump();
- if (DEBUG_TASKS) Slog.d(TAG_TASKS,
- "For Intent " + intent + " bringing to top: " + r.intent);
- result.mRecord = r;
- result.mIdealMatch = true;
- break;
- } else if (affinityIntent != null && affinityIntent.getComponent() != null &&
- affinityIntent.getComponent().compareTo(cls) == 0 &&
- Objects.equals(documentData, taskDocumentData)) {
- if (DEBUG_TASKS) Slog.d(TAG_TASKS, "Found matching class!");
- //dump();
- if (DEBUG_TASKS) Slog.d(TAG_TASKS,
- "For Intent " + intent + " bringing to top: " + r.intent);
- result.mRecord = r;
- result.mIdealMatch = true;
- break;
- } else if (!isDocument && !taskIsDocument
- && result.mRecord == null && task.rootAffinity != null) {
- if (task.rootAffinity.equals(target.taskAffinity)) {
- if (DEBUG_TASKS) Slog.d(TAG_TASKS, "Found matching affinity candidate!");
- // It is possible for multiple tasks to have the same root affinity especially
- // if they are in separate stacks. We save off this candidate, but keep looking
- // to see if there is a better candidate.
- result.mRecord = r;
- result.mIdealMatch = false;
- }
- } else if (DEBUG_TASKS) Slog.d(TAG_TASKS, "Not a match: " + task);
- }
- }
-
- /**
- * Returns the first activity (starting from the top of the stack) that
- * is the same as the given activity. Returns null if no such activity
- * is found.
- */
- ActivityRecord findActivityLocked(Intent intent, ActivityInfo info,
- boolean compareIntentFilters) {
- ComponentName cls = intent.getComponent();
- if (info.targetActivity != null) {
- cls = new ComponentName(info.packageName, info.targetActivity);
- }
- final int userId = UserHandle.getUserId(info.applicationInfo.uid);
-
- for (int taskNdx = getChildCount() - 1; taskNdx >= 0; --taskNdx) {
- final Task task = getChildAt(taskNdx);
- for (int activityNdx = task.getChildCount() - 1; activityNdx >= 0; --activityNdx) {
- final ActivityRecord r = task.getChildAt(activityNdx);
- if (!r.okToShowLocked()) {
- continue;
- }
- if (!r.finishing && r.mUserId == userId) {
- if (compareIntentFilters) {
- if (r.intent.filterEquals(intent)) {
- return r;
- }
- } else {
- if (r.intent.getComponent().equals(cls)) {
- return r;
- }
- }
- }
- }
- }
-
- return null;
- }
-
// TODO: Should each user have there own stacks?
@Override
void switchUser(int userId) {
@@ -1404,35 +1419,13 @@
void awakeFromSleepingLocked() {
// Ensure activities are no longer sleeping.
- for (int taskNdx = getChildCount() - 1; taskNdx >= 0; --taskNdx) {
- final Task task = getChildAt(taskNdx);
- for (int activityNdx = task.getChildCount() - 1; activityNdx >= 0; --activityNdx) {
- final ActivityRecord r = task.getChildAt(activityNdx);
- r.setSleeping(false);
- }
- }
+ forAllActivities((Consumer<ActivityRecord>) (r) -> r.setSleeping(false));
if (mPausingActivity != null) {
Slog.d(TAG, "awakeFromSleepingLocked: previously pausing activity didn't pause");
activityPausedLocked(mPausingActivity.appToken, true);
}
}
- void updateActivityApplicationInfoLocked(ApplicationInfo aInfo) {
- final String packageName = aInfo.packageName;
- final int userId = UserHandle.getUserId(aInfo.uid);
-
- for (int taskNdx = getChildCount() - 1; taskNdx >= 0; --taskNdx) {
- final Task task = getChildAt(taskNdx);
- for (int activityNdx = task.getChildCount() - 1; activityNdx >= 0; --activityNdx) {
- final ActivityRecord ar = task.getChildAt(activityNdx);
-
- if ((userId == ar.mUserId) && packageName.equals(ar.packageName)) {
- ar.updateApplicationInfo(aInfo);
- }
- }
- }
- }
-
void checkReadyForSleep() {
if (shouldSleepActivities() && goToSleepIfPossible(false /* shuttingDown */)) {
mStackSupervisor.checkReadyForSleepLocked(true /* allowDelay */);
@@ -1498,15 +1491,11 @@
// Make sure any paused or stopped but visible activities are now sleeping.
// This ensures that the activity's onStop() is called.
- for (int taskNdx = getChildCount() - 1; taskNdx >= 0; --taskNdx) {
- final Task task = getChildAt(taskNdx);
- for (int activityNdx = task.getChildCount() - 1; activityNdx >= 0; --activityNdx) {
- final ActivityRecord r = task.getChildAt(activityNdx);
- if (r.isState(STARTED, STOPPING, STOPPED, PAUSED, PAUSING)) {
- r.setSleeping(true);
- }
+ forAllActivities((r) -> {
+ if (r.isState(STARTED, STOPPING, STOPPED, PAUSED, PAUSING)) {
+ r.setSleeping(true);
}
- }
+ });
}
private boolean containsActivityFromStack(List<ActivityRecord> rs) {
@@ -1586,7 +1575,7 @@
if (prev.attachedToProcess()) {
if (DEBUG_PAUSE) Slog.v(TAG_PAUSE, "Enqueueing pending pause: " + prev);
try {
- EventLogTags.writeAmPauseActivity(prev.mUserId, System.identityHashCode(prev),
+ EventLogTags.writeWmPauseActivity(prev.mUserId, System.identityHashCode(prev),
prev.shortComponentName, "userLeaving=" + userLeaving);
mService.getLifecycleManager().scheduleTransaction(prev.app.getThread(),
@@ -1663,10 +1652,9 @@
}
return;
} else {
- EventLog.writeEvent(EventLogTags.AM_FAILED_TO_PAUSE,
- r.mUserId, System.identityHashCode(r), r.shortComponentName,
- mPausingActivity != null
- ? mPausingActivity.shortComponentName : "(none)");
+ EventLogTags.writeWmFailedToPause(r.mUserId, System.identityHashCode(r),
+ r.shortComponentName, mPausingActivity != null
+ ? mPausingActivity.shortComponentName : "(none)");
if (r.isState(PAUSING)) {
r.setState(PAUSED, "activityPausedLocked");
if (r.finishing) {
@@ -1783,31 +1771,32 @@
if (!isAttached() || mForceHidden) {
return true;
}
- for (int taskNdx = getChildCount() - 1; taskNdx >= 0; --taskNdx) {
- final Task task = getChildAt(taskNdx);
- for (int activityNdx = task.getChildCount() - 1; activityNdx >= 0; --activityNdx) {
- final ActivityRecord r = task.getChildAt(activityNdx);
+ final PooledPredicate p = PooledLambda.obtainPredicate(ActivityStack::isOpaqueActivity,
+ PooledLambda.__(ActivityRecord.class), starting);
+ final ActivityRecord opaque = getActivity(p);
+ p.recycle();
+ return opaque == null;
+ }
- if (r.finishing) {
- // We don't factor in finishing activities when determining translucency since
- // they will be gone soon.
- continue;
- }
-
- if (!r.visibleIgnoringKeyguard && r != starting) {
- // Also ignore invisible activities that are not the currently starting
- // activity (about to be visible).
- continue;
- }
-
- if (r.occludesParent() || r.hasWallpaper) {
- // Stack isn't translucent if it has at least one fullscreen activity
- // that is visible.
- return false;
- }
- }
+ private static boolean isOpaqueActivity(ActivityRecord r, ActivityRecord starting) {
+ if (r.finishing) {
+ // We don't factor in finishing activities when determining translucency since
+ // they will be gone soon.
+ return false;
}
- return true;
+
+ if (!r.visibleIgnoringKeyguard && r != starting) {
+ // Also ignore invisible activities that are not the currently starting
+ // activity (about to be visible).
+ return false;
+ }
+
+ if (r.occludesParent() || r.hasWallpaper) {
+ // Stack isn't translucent if it has at least one fullscreen activity
+ // that is visible.
+ return true;
+ }
+ return false;
}
boolean isTopStackOnDisplay() {
@@ -1962,20 +1951,6 @@
: STACK_VISIBILITY_VISIBLE;
}
- final int rankTaskLayers(int baseLayer) {
- int layer = 0;
- for (int taskNdx = getChildCount() - 1; taskNdx >= 0; --taskNdx) {
- final Task task = getChildAt(taskNdx);
- ActivityRecord r = task.topRunningActivityLocked();
- if (r == null || r.finishing || !r.mVisibleRequested) {
- task.mLayerRank = -1;
- } else {
- task.mLayerRank = baseLayer + layer++;
- }
- }
- return layer;
- }
-
/**
* Make sure that all activities that need to be visible in the stack (that is, they
* currently can be seen by the user) actually are and update their configuration.
@@ -2010,12 +1985,6 @@
}
}
- void addStartingWindowsForVisibleActivities(boolean taskSwitch) {
- for (int taskNdx = getChildCount() - 1; taskNdx >= 0; --taskNdx) {
- getChildAt(taskNdx).addStartingWindowsForVisibleActivities(taskSwitch);
- }
- }
-
/**
* @return true if the top visible activity wants to occlude the Keyguard, false otherwise
*/
@@ -2131,18 +2100,6 @@
mHandler.sendEmptyMessageDelayed(TRANSLUCENT_TIMEOUT_MSG, TRANSLUCENT_CONVERSION_TIMEOUT);
}
- void clearOtherAppTimeTrackers(AppTimeTracker except) {
- for (int taskNdx = getChildCount() - 1; taskNdx >= 0; --taskNdx) {
- final Task task = getChildAt(taskNdx);
- for (int activityNdx = task.getChildCount() - 1; activityNdx >= 0; --activityNdx) {
- final ActivityRecord r = task.getChildAt(activityNdx);
- if ( r.appTimeTracker != except) {
- r.appTimeTracker = null;
- }
- }
- }
- }
-
/**
* Called as activities below the top translucent activity are redrawn. When the last one is
* redrawn notify the top activity by calling
@@ -2190,50 +2147,8 @@
*/
boolean checkBehindFullscreenActivity(ActivityRecord toCheck,
Consumer<ActivityRecord> handleBehindFullscreenActivity) {
- boolean aboveTop = true;
- boolean behindFullscreenActivity = false;
-
- if (!shouldBeVisible(null)) {
- // The stack is not visible, so no activity in it should be displaying a starting
- // window. Mark all activities below top and behind fullscreen.
- aboveTop = false;
- behindFullscreenActivity = true;
- }
-
- final boolean handlingOccluded = toCheck == null && handleBehindFullscreenActivity != null;
- if (!handlingOccluded && behindFullscreenActivity) {
- return true;
- }
-
- final ActivityRecord topActivity = topRunningActivityLocked();
- for (int taskNdx = getChildCount() - 1; taskNdx >= 0; --taskNdx) {
- final Task task = getChildAt(taskNdx);
- for (int activityNdx = task.getChildCount() - 1; activityNdx >= 0; --activityNdx) {
- final ActivityRecord r = task.getChildAt(activityNdx);
- if (aboveTop) {
- if (r == topActivity) {
- if (r == toCheck) {
- // It is the top activity in a visible stack.
- return false;
- }
- aboveTop = false;
- }
- behindFullscreenActivity |= r.occludesParent();
- continue;
- }
-
- if (handlingOccluded) {
- handleBehindFullscreenActivity.accept(r);
- } else if (r == toCheck) {
- return behindFullscreenActivity;
- } else if (behindFullscreenActivity) {
- // It is occluded before {@param toCheck} is found.
- return true;
- }
- behindFullscreenActivity |= r.occludesParent();
- }
- }
- return behindFullscreenActivity;
+ return mCheckBehindFullscreenActivityHelper.process(
+ toCheck, handleBehindFullscreenActivity);
}
/**
@@ -2659,9 +2574,8 @@
// Clear app token stopped state in window manager if needed.
next.notifyAppResumed(next.stopped);
- EventLog.writeEvent(EventLogTags.AM_RESUME_ACTIVITY, next.mUserId,
- System.identityHashCode(next), next.getTask().mTaskId,
- next.shortComponentName);
+ EventLogTags.writeWmResumeActivity(next.mUserId, System.identityHashCode(next),
+ next.getTask().mTaskId, next.shortComponentName);
next.sleeping = false;
mService.getAppWarningsLocked().onResumeActivity(next);
@@ -2792,7 +2706,7 @@
}
break;
} else if (!isOccluded) {
- isOccluded = task.forAllActivities(ActivityRecord::occludesParent);
+ isOccluded = task.getActivity(ActivityRecord::occludesParent) != null;
}
}
}
@@ -2817,7 +2731,7 @@
// The transition animation and starting window are not needed if {@code allowMoveToFront}
// is false, because the activity won't be visible.
- if ((!isHomeOrRecentsStack() || numActivities() > 0) && allowMoveToFront) {
+ if ((!isHomeOrRecentsStack() || hasActivity()) && allowMoveToFront) {
final DisplayContent dc = getDisplay().mDisplayContent;
if (DEBUG_TRANSITION) Slog.v(TAG_TRANSITION,
"Prepare open transition: starting " + r);
@@ -2920,8 +2834,7 @@
return true;
}
- private boolean isTaskSwitch(ActivityRecord r,
- ActivityRecord topFocusedActivity) {
+ private boolean isTaskSwitch(ActivityRecord r, ActivityRecord topFocusedActivity) {
return topFocusedActivity != null && r.getTask() != topFocusedActivity.getTask();
}
@@ -3001,23 +2914,6 @@
return stack;
}
- /** Finish all activities that were started for result from the specified activity. */
- final void finishSubActivityLocked(ActivityRecord self, String resultWho, int requestCode) {
- for (int taskNdx = getChildCount() - 1; taskNdx >= 0; --taskNdx) {
- final Task task = getChildAt(taskNdx);
- for (int activityNdx = task.getChildCount() - 1; activityNdx >= 0; --activityNdx) {
- final ActivityRecord r = task.getChildAt(activityNdx);
- if (r.resultTo == self && r.requestCode == requestCode) {
- if ((r.resultWho == null && resultWho == null) ||
- (r.resultWho != null && r.resultWho.equals(resultWho))) {
- r.finishIfPossible("request-sub", false /* oomAdj */);
- }
- }
- }
- }
- mService.updateOomAdj();
- }
-
/**
* Finish the topmost activity that belongs to the crashed app. We may also finish the activity
* that requested launch of the crashed one to prevent launch-crash loop.
@@ -3028,103 +2924,84 @@
*/
final Task finishTopCrashedActivityLocked(WindowProcessController app, String reason) {
ActivityRecord r = topRunningActivityLocked();
- Task finishedTask = null;
if (r == null || r.app != app) {
return null;
}
Slog.w(TAG, " Force finishing activity "
+ r.intent.getComponent().flattenToShortString());
- finishedTask = r.getTask();
- int taskNdx = mChildren.indexOf(finishedTask);
- final Task task = finishedTask;
- int activityNdx = task.mChildren.indexOf(r);
+ Task finishedTask = r.getTask();
getDisplay().mDisplayContent.prepareAppTransition(
TRANSIT_CRASHING_ACTIVITY_CLOSE, false /* alwaysKeepCurrent */);
r.finishIfPossible(reason, false /* oomAdj */);
- finishedTask = task;
- // Also terminate any activities below it that aren't yet
- // stopped, to avoid a situation where one will get
- // re-start our crashing activity once it gets resumed again.
- --activityNdx;
- if (activityNdx < 0) {
- do {
- --taskNdx;
- if (taskNdx < 0) {
- break;
- }
- activityNdx = getChildAt(taskNdx).getChildCount() - 1;
- } while (activityNdx < 0);
- }
- if (activityNdx >= 0) {
- r = getChildAt(taskNdx).getChildAt(activityNdx);
- if (r.isState(STARTED, RESUMED, PAUSING, PAUSED)) {
- if (!r.isActivityTypeHome() || mService.mHomeProcess != r.app) {
+
+ // Also terminate any activities below it that aren't yet stopped, to avoid a situation
+ // where one will get re-start our crashing activity once it gets resumed again.
+ final ActivityRecord activityBelow = getActivityBelow(r);
+ if (activityBelow != null) {
+ if (activityBelow.isState(STARTED, RESUMED, PAUSING, PAUSED)) {
+ if (!activityBelow.isActivityTypeHome()
+ || mService.mHomeProcess != activityBelow.app) {
Slog.w(TAG, " Force finishing activity "
- + r.intent.getComponent().flattenToShortString());
- r.finishIfPossible(reason, false /* oomAdj */);
+ + activityBelow.intent.getComponent().flattenToShortString());
+ activityBelow.finishIfPossible(reason, false /* oomAdj */);
}
}
}
+
return finishedTask;
}
- final void finishVoiceTask(IVoiceInteractionSession session) {
- IBinder sessionBinder = session.asBinder();
- boolean didOne = false;
- for (int taskNdx = getChildCount() - 1; taskNdx >= 0; --taskNdx) {
- Task tr = getChildAt(taskNdx);
- if (tr.voiceSession != null && tr.voiceSession.asBinder() == sessionBinder) {
- for (int activityNdx = tr.getChildCount() - 1; activityNdx >= 0; --activityNdx) {
- ActivityRecord r = tr.getChildAt(activityNdx);
- if (!r.finishing) {
- r.finishIfPossible("finish-voice", false /* oomAdj */);
- didOne = true;
- }
- }
- } else {
- // Check if any of the activities are using voice
- for (int activityNdx = tr.getChildCount() - 1; activityNdx >= 0; --activityNdx) {
- ActivityRecord r = tr.getChildAt(activityNdx);
- if (r.voiceSession != null && r.voiceSession.asBinder() == sessionBinder) {
- // Inform of cancellation
- r.clearVoiceSessionLocked();
- try {
- r.app.getThread().scheduleLocalVoiceInteractionStarted(
- r.appToken, null);
- } catch (RemoteException re) {
- // Ok
- }
- mService.finishRunningVoiceLocked();
- break;
- }
- }
- }
- }
+ void finishVoiceTask(IVoiceInteractionSession session) {
+ final PooledConsumer c = PooledLambda.obtainConsumer(ActivityStack::finishIfVoiceTask,
+ PooledLambda.__(Task.class), session.asBinder());
+ forAllTasks(c);
+ c.recycle();
+ }
- if (didOne) {
- mService.updateOomAdj();
+ private static void finishIfVoiceTask(Task tr, IBinder binder) {
+ if (tr.voiceSession != null && tr.voiceSession.asBinder() == binder) {
+ tr.forAllActivities((r) -> {
+ if (r.finishing) return;
+ r.finishIfPossible("finish-voice", false /* oomAdj */);
+ tr.mAtmService.updateOomAdj();
+ });
+ } else {
+ // Check if any of the activities are using voice
+ final PooledFunction f = PooledLambda.obtainFunction(
+ ActivityStack::finishIfVoiceActivity, PooledLambda.__(ActivityRecord.class),
+ binder);
+ tr.forAllActivities(f);
+ f.recycle();
}
}
+ private static boolean finishIfVoiceActivity(ActivityRecord r, IBinder binder) {
+ if (r.voiceSession == null || r.voiceSession.asBinder() != binder) return false;
+ // Inform of cancellation
+ r.clearVoiceSessionLocked();
+ try {
+ r.app.getThread().scheduleLocalVoiceInteractionStarted(r.appToken, null);
+ } catch (RemoteException re) {
+ // Ok Boomer...
+ }
+ r.mAtmService.finishRunningVoiceLocked();
+ return true;
+ }
+
/** Finish all activities in the stack without waiting. */
void finishAllActivitiesImmediately() {
- boolean noActivitiesInStack = true;
- for (int taskNdx = getChildCount() - 1; taskNdx >= 0; --taskNdx) {
- final Task task = getChildAt(taskNdx);
- for (int activityNdx = task.getChildCount() - 1; activityNdx >= 0; --activityNdx) {
- final ActivityRecord r = task.getChildAt(activityNdx);
- noActivitiesInStack = false;
- Slog.d(TAG, "finishAllActivitiesImmediatelyLocked: finishing " + r);
- r.destroyIfPossible("finishAllActivitiesImmediatelyLocked");
- }
- }
- if (noActivitiesInStack) {
+ if (!hasChild()) {
removeIfPossible();
+ return;
}
+ forAllActivities((r) -> {
+ Slog.d(TAG, "finishAllActivitiesImmediatelyLocked: finishing " + r);
+ r.destroyIfPossible("finishAllActivitiesImmediately");
+ });
}
/** @return true if the stack behind this one is a standard activity type. */
- boolean inFrontOfStandardStack() {
+ private boolean inFrontOfStandardStack() {
final ActivityDisplay display = getDisplay();
if (display == null) {
return false;
@@ -3171,28 +3048,25 @@
return false;
}
- final boolean navigateUpToLocked(ActivityRecord srec, Intent destIntent, int resultCode,
+ boolean navigateUpTo(ActivityRecord srec, Intent destIntent, int resultCode,
Intent resultData) {
final Task task = srec.getTask();
- final ArrayList<ActivityRecord> activities = task.mChildren;
- final int start = activities.indexOf(srec);
- if (!mChildren.contains(task) || (start < 0)) {
+
+ if (!mChildren.contains(task) || !task.hasChild(srec)) {
return false;
}
- int finishTo = start - 1;
- ActivityRecord parent = finishTo < 0 ? null : task.getChildAt(finishTo);
+
+ ActivityRecord parent = task.getActivityBelow(srec);
boolean foundParentInTask = false;
final ComponentName dest = destIntent.getComponent();
- if (start > 0 && dest != null) {
- for (int i = finishTo; i >= 0; i--) {
- ActivityRecord r = task.getChildAt(i);
- if (r.info.packageName.equals(dest.getPackageName()) &&
- r.info.name.equals(dest.getClassName())) {
- finishTo = i;
- parent = r;
- foundParentInTask = true;
- break;
- }
+ if (task.getBottomMostActivity() != srec && dest != null) {
+ final ActivityRecord candidate = task.getActivity((ar) ->
+ ar.info.packageName.equals(dest.getPackageName()) &&
+ ar.info.name.equals(dest.getClassName()), srec, false /*includeBoundary*/,
+ true /*traverseTopToBottom*/);
+ if (candidate != null) {
+ parent = candidate;
+ foundParentInTask = true;
}
}
@@ -3217,13 +3091,24 @@
}
}
final long origId = Binder.clearCallingIdentity();
- for (int i = start; i > finishTo; i--) {
- final ActivityRecord r = activities.get(i);
- r.finishIfPossible(resultCode, resultData, "navigate-up", true /* oomAdj */);
+
+ final int[] resultCodeHolder = new int[1];
+ resultCodeHolder[0] = resultCode;
+ final Intent[] resultDataHolder = new Intent[1];
+ resultDataHolder[0] = resultData;
+ final ActivityRecord finalParent = parent;
+ task.forAllActivities((ar) -> {
+ if (ar == finalParent) return true;
+
+ ar.finishIfPossible(
+ resultCodeHolder[0], resultDataHolder[0], "navigate-up", true /* oomAdj */);
// Only return the supplied result for the first activity finished
- resultCode = Activity.RESULT_CANCELED;
- resultData = null;
- }
+ resultCodeHolder[0] = Activity.RESULT_CANCELED;
+ resultDataHolder[0] = null;
+ return false;
+ }, srec, true, true);
+ resultCode = resultCodeHolder[0];
+ resultData = resultDataHolder[0];
if (parent != null && foundParentInTask) {
final int parentLaunchMode = parent.info.launchMode;
@@ -3290,7 +3175,6 @@
}
}
- /// HANDLER INTERFACE BEGIN
void removeTimeoutsForActivity(ActivityRecord r) {
mStackSupervisor.removeTimeoutsForActivityLocked(r);
removePauseTimeoutForActivity(r);
@@ -3348,86 +3232,33 @@
}
/// HANDLER INTERFACE END
- private void destroyActivitiesLocked(WindowProcessController owner, String reason) {
- boolean lastIsOpaque = false;
- boolean activityRemoved = false;
- for (int taskNdx = getChildCount() - 1; taskNdx >= 0; --taskNdx) {
- final Task task = getChildAt(taskNdx);
- for (int activityNdx = task.getChildCount() - 1; activityNdx >= 0; --activityNdx) {
- final ActivityRecord r = task.getChildAt(activityNdx);
- if (r.finishing) {
- continue;
- }
- if (r.occludesParent()) {
- lastIsOpaque = true;
- }
- if (owner != null && r.app != owner) {
- continue;
- }
- if (!lastIsOpaque) {
- continue;
- }
- if (r.isDestroyable()) {
- if (DEBUG_SWITCH) Slog.v(TAG_SWITCH, "Destroying " + r
- + " in state " + r.getState()
- + " resumed=" + mResumedActivity
- + " pausing=" + mPausingActivity + " for reason " + reason);
- if (r.destroyImmediately(true /* removeFromTask */, reason)) {
- activityRemoved = true;
- }
- }
- }
- }
- if (activityRemoved) {
+ private void destroyActivities(WindowProcessController owner, String reason) {
+ try {
+ mStackSupervisor.beginDeferResume();
+
+ final PooledConsumer c = PooledLambda.obtainConsumer(ActivityStack::destroyActivity,
+ PooledLambda.__(ActivityRecord.class), owner, reason);
+ forAllActivities(c);
+ c.recycle();
+ } finally {
+ mStackSupervisor.endDeferResume();
mRootActivityContainer.resumeFocusedStacksTopActivities();
}
}
- final int releaseSomeActivitiesLocked(WindowProcessController app, ArraySet<Task> tasks,
- String reason) {
- // Iterate over tasks starting at the back (oldest) first.
- if (DEBUG_RELEASE) Slog.d(TAG_RELEASE, "Trying to release some activities in " + app);
- int maxTasks = tasks.size() / 4;
- if (maxTasks < 1) {
- maxTasks = 1;
- }
- int numReleased = 0;
- for (int taskNdx = 0; taskNdx < getChildCount() && maxTasks > 0; taskNdx++) {
- final Task task = getChildAt(taskNdx);
- if (!tasks.contains(task)) {
- continue;
- }
- if (DEBUG_RELEASE) Slog.d(TAG_RELEASE, "Looking for activities to release in " + task);
- int curNum = 0;
- for (int actNdx = 0; actNdx < task.getChildCount(); actNdx++) {
- final ActivityRecord activity = task.getChildAt(actNdx);
- if (activity.app == app && activity.isDestroyable()) {
- if (DEBUG_RELEASE) Slog.v(TAG_RELEASE, "Destroying " + activity
- + " in state " + activity.getState() + " resumed=" + mResumedActivity
- + " pausing=" + mPausingActivity + " for reason " + reason);
- activity.destroyImmediately(true /* removeFromApp */, reason);
- if (task.getChildAt(actNdx) != activity) {
- // Was removed from list, back up so we don't miss the next one.
- actNdx--;
- }
- curNum++;
- }
- }
- if (curNum > 0) {
- numReleased += curNum;
- maxTasks--;
- if (getChildAt(taskNdx) != task) {
- // The entire task got removed, back up so we don't miss the next one.
- taskNdx--;
- }
- }
- }
- if (DEBUG_RELEASE) Slog.d(TAG_RELEASE,
- "Done releasing: did " + numReleased + " activities");
- return numReleased;
+ private static void destroyActivity(
+ ActivityRecord r, WindowProcessController owner, String reason) {
+ if (r.finishing || (owner != null && r.app != owner) || !r.isDestroyable()) return;
+
+ if (DEBUG_SWITCH) Slog.v(TAG_SWITCH, "Destroying " + r
+ + " in state " + r.getState()
+ + " resumed=" + r.getStack().mResumedActivity
+ + " pausing=" + r.getStack().mPausingActivity + " for reason " + reason);
+
+ r.destroyImmediately(true /* removeFromTask */, reason);
}
- private void removeHistoryRecordsForAppLocked(ArrayList<ActivityRecord> list,
+ private void removeHistoryRecordsForApp(ArrayList<ActivityRecord> list,
WindowProcessController app, String listName) {
int i = list.size();
if (DEBUG_CLEANUP) Slog.v(TAG_CLEANUP,
@@ -3444,108 +3275,15 @@
}
}
- private boolean removeHistoryRecordsForAppLocked(WindowProcessController app) {
- removeHistoryRecordsForAppLocked(mLruActivities, app, "mLruActivities");
- removeHistoryRecordsForAppLocked(mStackSupervisor.mStoppingActivities, app,
+ private boolean removeHistoryRecordsForApp(WindowProcessController app) {
+ removeHistoryRecordsForApp(mLruActivities, app, "mLruActivities");
+ removeHistoryRecordsForApp(mStackSupervisor.mStoppingActivities, app,
"mStoppingActivities");
- removeHistoryRecordsForAppLocked(mStackSupervisor.mGoingToSleepActivities, app,
+ removeHistoryRecordsForApp(mStackSupervisor.mGoingToSleepActivities, app,
"mGoingToSleepActivities");
- removeHistoryRecordsForAppLocked(mStackSupervisor.mFinishingActivities, app,
+ removeHistoryRecordsForApp(mStackSupervisor.mFinishingActivities, app,
"mFinishingActivities");
-
- final boolean isProcessRemoved = app.isRemoved();
- if (isProcessRemoved) {
- // The package of the died process should be force-stopped, so make its activities as
- // finishing to prevent the process from being started again if the next top (or being
- // visible) activity also resides in the same process.
- app.makeFinishingForProcessRemoved();
- }
-
- boolean hasVisibleActivities = false;
-
- // Clean out the history list.
- int i = numActivities();
- if (DEBUG_CLEANUP) Slog.v(TAG_CLEANUP,
- "Removing app " + app + " from history with " + i + " entries");
- for (int taskNdx = getChildCount() - 1; taskNdx >= 0; --taskNdx) {
- final ArrayList<ActivityRecord> activities = getChildAt(taskNdx).mChildren;
- mTmpActivities.clear();
- mTmpActivities.addAll(activities);
-
- while (!mTmpActivities.isEmpty()) {
- final int targetIndex = mTmpActivities.size() - 1;
- final ActivityRecord r = mTmpActivities.remove(targetIndex);
- if (DEBUG_CLEANUP) Slog.v(TAG_CLEANUP,
- "Record #" + targetIndex + " " + r + ": app=" + r.app);
-
- if (r.app == app) {
- if (r.isVisible() || r.mVisibleRequested) {
- // While an activity launches a new activity, it's possible that the old
- // activity is already requested to be hidden (mVisibleRequested=false), but
- // this visibility is not yet committed, so isVisible()=true.
- hasVisibleActivities = true;
- }
- final boolean remove;
- if ((r.mRelaunchReason == RELAUNCH_REASON_WINDOWING_MODE_RESIZE
- || r.mRelaunchReason == RELAUNCH_REASON_FREE_RESIZE)
- && r.launchCount < 3 && !r.finishing) {
- // If the process crashed during a resize, always try to relaunch it, unless
- // it has failed more than twice. Skip activities that's already finishing
- // cleanly by itself.
- remove = false;
- } else if ((!r.hasSavedState() && !r.stateNotNeeded
- && !r.isState(ActivityState.RESTARTING_PROCESS)) || r.finishing) {
- // Don't currently have state for the activity, or
- // it is finishing -- always remove it.
- remove = true;
- } else if (!r.mVisibleRequested && r.launchCount > 2
- && r.lastLaunchTime > (SystemClock.uptimeMillis() - 60000)) {
- // We have launched this activity too many times since it was
- // able to run, so give up and remove it.
- // (Note if the activity is visible, we don't remove the record.
- // We leave the dead window on the screen but the process will
- // not be restarted unless user explicitly tap on it.)
- remove = true;
- } else {
- // The process may be gone, but the activity lives on!
- remove = false;
- }
- if (remove) {
- if (DEBUG_ADD_REMOVE || DEBUG_CLEANUP) Slog.i(TAG_ADD_REMOVE,
- "Removing activity " + r + " from stack at " + i
- + ": hasSavedState=" + r.hasSavedState()
- + " stateNotNeeded=" + r.stateNotNeeded
- + " finishing=" + r.finishing
- + " state=" + r.getState() + " callers=" + Debug.getCallers(5));
- if (!r.finishing || isProcessRemoved) {
- Slog.w(TAG, "Force removing " + r + ": app died, no saved state");
- EventLog.writeEvent(EventLogTags.AM_FINISH_ACTIVITY,
- r.mUserId, System.identityHashCode(r),
- r.getTask().mTaskId, r.shortComponentName,
- "proc died without state saved");
- }
- } else {
- // We have the current state for this activity, so
- // it can be restarted later when needed.
- if (DEBUG_ALL) Slog.v(TAG, "Keeping entry, setting app to null");
- if (DEBUG_APP) Slog.v(TAG_APP,
- "Clearing app during removeHistory for activity " + r);
- r.app = null;
- // Set nowVisible to previous visible state. If the app was visible while
- // it died, we leave the dead window on screen so it's basically visible.
- // This is needed when user later tap on the dead window, we need to stop
- // other apps when user transfers focus to the restarted activity.
- r.nowVisible = r.mVisibleRequested;
- }
- r.cleanUp(true /* cleanServices */, true /* setState */);
- if (remove) {
- r.removeFromHistory("appDied");
- }
- }
- }
- }
-
- return hasVisibleActivities;
+ return mRemoveHistoryRecordsForApp.process(app);
}
private void updateTransitLocked(int transit, ActivityOptions options) {
@@ -3565,8 +3303,7 @@
if (DEBUG_SWITCH) Slog.v(TAG_SWITCH, "moveTaskToFront: " + tr);
final ActivityStack topStack = getDisplay().getTopStack();
- final ActivityRecord topActivity = topStack != null
- ? topStack.getTopNonFinishingActivity() : null;
+ final ActivityRecord topActivity = topStack != null ? topStack.getTopNonFinishingActivity() : null;
final int numTasks = getChildCount();
final int index = mChildren.indexOf(tr);
if (numTasks == 0 || index < 0) {
@@ -3581,9 +3318,10 @@
if (timeTracker != null) {
// The caller wants a time tracker associated with this task.
- for (int i = tr.getChildCount() - 1; i >= 0; i--) {
- tr.getChildAt(i).appTimeTracker = timeTracker;
- }
+ final PooledConsumer c = PooledLambda.obtainConsumer(ActivityRecord::setAppTimeTracker,
+ PooledLambda.__(ActivityRecord.class), timeTracker);
+ tr.forAllActivities(c);
+ c.recycle();
}
try {
@@ -3634,7 +3372,7 @@
}
mRootActivityContainer.resumeFocusedStacksTopActivities();
- EventLog.writeEvent(EventLogTags.AM_TASK_TO_FRONT, tr.mUserId, tr.mTaskId);
+ EventLogTags.writeWmTaskToFront(tr.mUserId, tr.mTaskId);
mService.getTaskChangeNotificationController().notifyTaskMovedToFront(tr.getTaskInfo());
} finally {
getDisplay().continueUpdateImeTarget();
@@ -3717,38 +3455,8 @@
/**
* Ensures all visible activities at or below the input activity have the right configuration.
*/
- void ensureVisibleActivitiesConfigurationLocked(ActivityRecord start, boolean preserveWindow) {
- if (start == null || !start.mVisibleRequested) {
- return;
- }
-
- final Task startTask = start.getTask();
- boolean behindFullscreen = false;
- boolean updatedConfig = false;
-
- for (int taskIndex = mChildren.indexOf(startTask); taskIndex >= 0; --taskIndex) {
- final Task task = getChildAt(taskIndex);
- final ArrayList<ActivityRecord> activities = task.mChildren;
- int activityIndex = (start.getTask() == task)
- ? activities.indexOf(start) : activities.size() - 1;
- for (; activityIndex >= 0; --activityIndex) {
- final ActivityRecord r = activities.get(activityIndex);
- updatedConfig |= r.ensureActivityConfiguration(0 /* globalChanges */,
- preserveWindow);
- if (r.occludesParent()) {
- behindFullscreen = true;
- break;
- }
- }
- if (behindFullscreen) {
- break;
- }
- }
- if (updatedConfig) {
- // Ensure the resumed state of the focus activity if we updated the configuration of
- // any activity.
- mRootActivityContainer.resumeFocusedStacksTopActivities();
- }
+ void ensureVisibleActivitiesConfiguration(ActivityRecord start, boolean preserveWindow) {
+ mEnsureVisibleActivitiesConfigHelper.process(start, preserveWindow);
}
// TODO: Can only be called from special methods in ActivityStackSupervisor.
@@ -3780,7 +3488,7 @@
setBounds(bounds);
if (!deferResume) {
- ensureVisibleActivitiesConfigurationLocked(
+ ensureVisibleActivitiesConfiguration(
topRunningActivityLocked(), preserveWindows);
}
} finally {
@@ -3824,85 +3532,23 @@
}
}
- boolean willActivityBeVisibleLocked(IBinder token) {
- for (int taskNdx = getChildCount() - 1; taskNdx >= 0; --taskNdx) {
- final Task task = getChildAt(taskNdx);
- for (int activityNdx = task.getChildCount() - 1; activityNdx >= 0; --activityNdx) {
- final ActivityRecord r = task.getChildAt(activityNdx);
- if (r.appToken == token) {
- return true;
- }
- if (r.occludesParent() && !r.finishing) {
- return false;
- }
- }
- }
+ boolean willActivityBeVisible(IBinder token) {
final ActivityRecord r = ActivityRecord.forTokenLocked(token);
if (r == null) {
return false;
}
- if (r.finishing) Slog.e(TAG, "willActivityBeVisibleLocked: Returning false,"
+
+ // See if there is an occluding activity on-top of this one.
+ final ActivityRecord occludingActivity = getActivity((ar) ->
+ ar.occludesParent() && !ar.finishing,
+ r, false /*includeBoundary*/, true /*traverseTopToBottom*/);
+ if (occludingActivity != null) return false;
+
+ if (r.finishing) Slog.e(TAG, "willActivityBeVisible: Returning false,"
+ " would have returned true for r=" + r);
return !r.finishing;
}
- void closeSystemDialogsLocked() {
- for (int taskNdx = getChildCount() - 1; taskNdx >= 0; --taskNdx) {
- final Task task = getChildAt(taskNdx);
- for (int activityNdx = task.getChildCount() - 1; activityNdx >= 0; --activityNdx) {
- final ActivityRecord r = task.getChildAt(activityNdx);
- if ((r.info.flags&ActivityInfo.FLAG_FINISH_ON_CLOSE_SYSTEM_DIALOGS) != 0) {
- r.finishIfPossible("close-sys", true /* oomAdj */);
- }
- }
- }
- }
-
- boolean finishDisabledPackageActivitiesLocked(String packageName, Set<String> filterByClasses,
- boolean doit, boolean evenPersistent, int userId) {
- boolean didSomething = false;
- Task lastTask = null;
- ComponentName homeActivity = null;
- for (int taskNdx = getChildCount() - 1; taskNdx >= 0; --taskNdx) {
- final ArrayList<ActivityRecord> activities = getChildAt(taskNdx).mChildren;
- mTmpActivities.clear();
- mTmpActivities.addAll(activities);
-
- while (!mTmpActivities.isEmpty()) {
- ActivityRecord r = mTmpActivities.remove(0);
- final boolean sameComponent =
- (r.packageName.equals(packageName) && (filterByClasses == null
- || filterByClasses.contains(r.mActivityComponent.getClassName())))
- || (packageName == null && r.mUserId == userId);
- if ((userId == UserHandle.USER_ALL || r.mUserId == userId)
- && (sameComponent || r.getTask() == lastTask)
- && (r.app == null || evenPersistent || !r.app.isPersistent())) {
- if (!doit) {
- if (r.finishing) {
- // If this activity is just finishing, then it is not
- // interesting as far as something to stop.
- continue;
- }
- return true;
- }
- if (r.isActivityTypeHome()) {
- if (homeActivity != null && homeActivity.equals(r.mActivityComponent)) {
- Slog.i(TAG, "Skip force-stop again " + r);
- continue;
- } else {
- homeActivity = r.mActivityComponent;
- }
- }
- didSomething = true;
- Slog.i(TAG, " Force finishing activity " + r);
- lastTask = r.getTask();
- r.finishIfPossible("force-stop", true);
- }
- }
- }
- return didSomething;
- }
-
/**
* @return The set of running tasks through {@param tasksOut} that are available to the caller.
* If {@param ignoreActivityType} or {@param ignoreWindowingMode} are not undefined,
@@ -3954,14 +3600,11 @@
}
void unhandledBackLocked() {
- final int top = getChildCount() - 1;
- if (DEBUG_SWITCH) Slog.d(TAG_SWITCH, "Performing unhandledBack(): top activity at " + top);
- if (top >= 0) {
- final Task task = getChildAt(top);
- int activityTop = task.getChildCount() - 1;
- if (activityTop >= 0) {
- task.getChildAt(activityTop).finishIfPossible("unhandled-back", true /* oomAdj */);
- }
+ final ActivityRecord topActivity = getTopMostActivity();
+ if (DEBUG_SWITCH) Slog.d(TAG_SWITCH,
+ "Performing unhandledBack(): top activity: " + topActivity);
+ if (topActivity != null) {
+ topActivity.finishIfPossible("unhandled-back", true /* oomAdj */);
}
}
@@ -3981,25 +3624,7 @@
mLastNoHistoryActivity = null;
}
- return removeHistoryRecordsForAppLocked(app);
- }
-
- void handleAppCrash(WindowProcessController app) {
- for (int taskNdx = getChildCount() - 1; taskNdx >= 0; --taskNdx) {
- final Task task = getChildAt(taskNdx);
- for (int activityNdx = task.getChildCount() - 1; activityNdx >= 0; --activityNdx) {
- final ActivityRecord r = task.getChildAt(activityNdx);
- if (r.app == app) {
- Slog.w(TAG, " Force finishing activity "
- + r.intent.getComponent().flattenToShortString());
- // Force the destroy to skip right to removal.
- r.app = null;
- getDisplay().mDisplayContent.prepareAppTransition(
- TRANSIT_CRASHING_ACTIVITY_CLOSE, false /* alwaysKeepCurrent */);
- r.destroyIfPossible("handleAppCrashedLocked");
- }
- }
- }
+ return removeHistoryRecordsForApp(app);
}
boolean dump(FileDescriptor fd, PrintWriter pw, boolean dumpAll, boolean dumpClient,
@@ -4010,8 +3635,7 @@
pw.println(" isSleeping=" + shouldSleepActivities());
pw.println(" mBounds=" + getRequestedOverrideBounds());
- boolean printed = dumpActivitiesLocked(fd, pw, dumpAll, dumpClient, dumpPackage,
- needSep);
+ boolean printed = dumpActivities(fd, pw, dumpAll, dumpClient, dumpPackage, needSep);
printed |= dumpHistoryList(fd, pw, mLruActivities, " ", "Run", false,
!dumpAll, false, dumpPackage, true,
@@ -4043,15 +3667,14 @@
return printed;
}
- boolean dumpActivitiesLocked(FileDescriptor fd, PrintWriter pw, boolean dumpAll,
+ private boolean dumpActivities(FileDescriptor fd, PrintWriter pw, boolean dumpAll,
boolean dumpClient, String dumpPackage, boolean needSep) {
if (!hasChild()) {
return false;
}
final String prefix = " ";
- for (int taskNdx = getChildCount() - 1; taskNdx >= 0; --taskNdx) {
- final Task task = getChildAt(taskNdx);
+ forAllTasks((task) -> {
if (needSep) {
pw.println("");
}
@@ -4062,9 +3685,11 @@
pw.println(prefix + "mLastNonFullscreenBounds=" + task.mLastNonFullscreenBounds);
pw.println(prefix + "* " + task);
task.dump(pw, prefix + " ");
- dumpHistoryList(fd, pw, getChildAt(taskNdx).mChildren,
- prefix, "Hist", true, !dumpAll, dumpClient, dumpPackage, false, null, task);
- }
+ final ArrayList<ActivityRecord> activities = new ArrayList<>();
+ forAllActivities((Consumer<ActivityRecord>) activities::add);
+ dumpHistoryList(fd, pw, activities, prefix, "Hist", true, !dumpAll, dumpClient,
+ dumpPackage, false, null, task);
+ });
return true;
}
@@ -4072,31 +3697,21 @@
ArrayList<ActivityRecord> activities = new ArrayList<>();
if ("all".equals(name)) {
- for (int taskNdx = getChildCount() - 1; taskNdx >= 0; --taskNdx) {
- activities.addAll(getChildAt(taskNdx).mChildren);
- }
+ forAllActivities((Consumer<ActivityRecord>) activities::add);
} else if ("top".equals(name)) {
- final int top = getChildCount() - 1;
- if (top >= 0) {
- final Task task = getChildAt(top);
- int listTop = task.getChildCount() - 1;
- if (listTop >= 0) {
- activities.add(task.getChildAt(listTop));
- }
+ final ActivityRecord topActivity = getTopMostActivity();
+ if (topActivity != null) {
+ activities.add(topActivity);
}
} else {
ItemMatcher matcher = new ItemMatcher();
matcher.build(name);
- for (int taskNdx = getChildCount() - 1; taskNdx >= 0; --taskNdx) {
- final Task task = getChildAt(taskNdx);
- for (int activityNdx = task.getChildCount() - 1; activityNdx >= 0; --activityNdx) {
- final ActivityRecord r1 = task.getChildAt(activityNdx);
- if (matcher.match(r1, r1.intent.getComponent())) {
- activities.add(r1);
- }
+ forAllActivities((r) -> {
+ if (matcher.match(r, r.intent.getComponent())) {
+ activities.add(r);
}
- }
+ });
}
return activities;
@@ -4107,22 +3722,24 @@
// All activities that came from the package must be
// restarted as if there was a config change.
- for (int taskNdx = getChildCount() - 1; taskNdx >= 0; --taskNdx) {
- final Task task = getChildAt(taskNdx);
- for (int activityNdx = task.getChildCount() - 1; activityNdx >= 0; --activityNdx) {
- final ActivityRecord a = task.getChildAt(activityNdx);
- if (a.info.packageName.equals(packageName)) {
- a.forceNewConfig = true;
- if (starting != null && a == starting && a.mVisibleRequested) {
- a.startFreezingScreenLocked(CONFIG_SCREEN_LAYOUT);
- }
- }
- }
- }
+ PooledConsumer c = PooledLambda.obtainConsumer(ActivityStack::restartPackage,
+ PooledLambda.__(ActivityRecord.class), starting, packageName);
+ forAllActivities(c);
+ c.recycle();
return starting;
}
+ private static void restartPackage(
+ ActivityRecord r, ActivityRecord starting, String packageName) {
+ if (r.info.packageName.equals(packageName)) {
+ r.forceNewConfig = true;
+ if (starting != null && r == starting && r.mVisibleRequested) {
+ r.startFreezingScreenLocked(CONFIG_SCREEN_LAYOUT);
+ }
+ }
+ }
+
/**
* Removes the input task from this stack.
*
@@ -4141,7 +3758,7 @@
super.removeChild(child);
- EventLog.writeEvent(EventLogTags.AM_REMOVE_TASK, child.mTaskId, mStackId);
+ EventLogTags.writeWmRemoveTask(child.mTaskId, mStackId);
if (display.isSingleTaskInstance()) {
mService.notifySingleTaskDisplayEmpty(display.mDisplayId);
@@ -4820,9 +4437,7 @@
}
final int toTop = targetPosition == mChildren.size() - 1 ? 1 : 0;
- EventLog.writeEvent(com.android.server.EventLogTags.WM_TASK_MOVED, child.mTaskId, toTop,
- targetPosition);
-
+ EventLogTags.writeWmTaskMoved(child.mTaskId, toTop, targetPosition);
return targetPosition;
}
@@ -4872,8 +4487,7 @@
}
super.onParentChanged(newParent, oldParent);
if (getParent() == null && mDisplayContent != null) {
- EventLog.writeEvent(com.android.server.EventLogTags.WM_STACK_REMOVED, mStackId);
-
+ EventLogTags.writeWmStackRemoved(mStackId);
mDisplayContent = null;
mWmService.mWindowPlacerLocked.requestTraversal();
}
diff --git a/services/core/java/com/android/server/wm/ActivityStackSupervisor.java b/services/core/java/com/android/server/wm/ActivityStackSupervisor.java
index 304f230..d98aa6f 100644
--- a/services/core/java/com/android/server/wm/ActivityStackSupervisor.java
+++ b/services/core/java/com/android/server/wm/ActivityStackSupervisor.java
@@ -126,7 +126,6 @@
import android.provider.MediaStore;
import android.util.ArrayMap;
import android.util.ArraySet;
-import android.util.EventLog;
import android.util.MergedConfiguration;
import android.util.Slog;
import android.util.SparseArray;
@@ -139,10 +138,11 @@
import com.android.internal.os.TransferPipe;
import com.android.internal.os.logging.MetricsLoggerWrapper;
import com.android.internal.util.ArrayUtils;
+import com.android.internal.util.function.pooled.PooledConsumer;
import com.android.internal.util.function.pooled.PooledLambda;
import com.android.server.am.ActivityManagerService;
-import com.android.server.am.EventLogTags;
import com.android.server.am.UserState;
+import com.android.server.wm.ActivityMetricsLogger.LaunchingState;
import java.io.FileDescriptor;
import java.io.IOException;
@@ -444,8 +444,7 @@
mInitialized = true;
setRunningTasks(new RunningTasks());
- mActivityMetricsLogger = new ActivityMetricsLogger(this, mService.mContext,
- mHandler.getLooper());
+ mActivityMetricsLogger = new ActivityMetricsLogger(this, mHandler.getLooper());
mKeyguardController = new KeyguardController(mService, this);
mPersisterQueue = new PersisterQueue();
@@ -577,8 +576,7 @@
}
void stopWaitingForActivityVisible(ActivityRecord r) {
- stopWaitingForActivityVisible(r,
- getActivityMetricsLogger().getLastDrawnDelayMs(r.getWindowingMode()));
+ stopWaitingForActivityVisible(r, getActivityMetricsLogger().getLastDrawnDelayMs(r));
}
void stopWaitingForActivityVisible(ActivityRecord r, long totalTime) {
@@ -823,11 +821,11 @@
"Launching: " + r + " savedState=" + r.getSavedState()
+ " with results=" + results + " newIntents=" + newIntents
+ " andResume=" + andResume);
- EventLog.writeEvent(EventLogTags.AM_RESTART_ACTIVITY, r.mUserId,
- System.identityHashCode(r), task.mTaskId, r.shortComponentName);
+ EventLogTags.writeWmRestartActivity(r.mUserId, System.identityHashCode(r),
+ task.mTaskId, r.shortComponentName);
if (r.isActivityTypeHome()) {
// Home process is the root process of the task.
- updateHomeProcess(task.getChildAt(0).app);
+ updateHomeProcess(task.getBottomMostActivity().app);
}
mService.getPackageManagerInternalLocked().notifyPackageUse(
r.intent.getComponent().getPackageName(), NOTIFY_PACKAGE_USE_ACTIVITY);
@@ -1690,7 +1688,7 @@
}
}
if (!deferResume) {
- stack.ensureVisibleActivitiesConfigurationLocked(r, preserveWindows);
+ stack.ensureVisibleActivitiesConfiguration(r, preserveWindows);
}
} finally {
mAllowDockedStackResize = true;
@@ -2487,18 +2485,23 @@
return;
}
- for (int i = task.getChildCount() - 1; i >= 0; i--) {
- final ActivityRecord r = task.getChildAt(i);
- if (r.attachedToProcess()) {
- mMultiWindowModeChangedActivities.add(r);
- }
- }
+ final PooledConsumer c = PooledLambda.obtainConsumer(
+ ActivityStackSupervisor::addToMultiWindowModeChangedList, this,
+ PooledLambda.__(ActivityRecord.class));
+ task.forAllActivities(c);
+ c.recycle();
if (!mHandler.hasMessages(REPORT_MULTI_WINDOW_MODE_CHANGED_MSG)) {
mHandler.sendEmptyMessage(REPORT_MULTI_WINDOW_MODE_CHANGED_MSG);
}
}
+ private void addToMultiWindowModeChangedList(ActivityRecord r) {
+ if (r.attachedToProcess()) {
+ mMultiWindowModeChangedActivities.add(r);
+ }
+ }
+
void scheduleUpdatePictureInPictureModeIfNeeded(Task task, ActivityStack prevStack) {
final ActivityStack stack = task.getStack();
if (prevStack == null || prevStack == stack
@@ -2509,17 +2512,13 @@
scheduleUpdatePictureInPictureModeIfNeeded(task, stack.getRequestedOverrideBounds());
}
- void scheduleUpdatePictureInPictureModeIfNeeded(Task task, Rect targetStackBounds) {
- for (int i = task.getChildCount() - 1; i >= 0; i--) {
- final ActivityRecord r = task.getChildAt(i);
- if (r.attachedToProcess()) {
- mPipModeChangedActivities.add(r);
- // If we are scheduling pip change, then remove this activity from multi-window
- // change list as the processing of pip change will make sure multi-window changed
- // message is processed in the right order relative to pip changed.
- mMultiWindowModeChangedActivities.remove(r);
- }
- }
+ private void scheduleUpdatePictureInPictureModeIfNeeded(Task task, Rect targetStackBounds) {
+ final PooledConsumer c = PooledLambda.obtainConsumer(
+ ActivityStackSupervisor::addToPipModeChangedList, this,
+ PooledLambda.__(ActivityRecord.class));
+ task.forAllActivities(c);
+ c.recycle();
+
mPipModeChangedTargetStackBounds = targetStackBounds;
if (!mHandler.hasMessages(REPORT_PIP_MODE_CHANGED_MSG)) {
@@ -2527,14 +2526,23 @@
}
}
+ private void addToPipModeChangedList(ActivityRecord r) {
+ if (!r.attachedToProcess()) return;
+
+ mPipModeChangedActivities.add(r);
+ // If we are scheduling pip change, then remove this activity from multi-window
+ // change list as the processing of pip change will make sure multi-window changed
+ // message is processed in the right order relative to pip changed.
+ mMultiWindowModeChangedActivities.remove(r);
+ }
+
void updatePictureInPictureMode(Task task, Rect targetStackBounds, boolean forceUpdate) {
mHandler.removeMessages(REPORT_PIP_MODE_CHANGED_MSG);
- for (int i = task.getChildCount() - 1; i >= 0; i--) {
- final ActivityRecord r = task.getChildAt(i);
- if (r.attachedToProcess()) {
- r.updatePictureInPictureMode(targetStackBounds, forceUpdate);
- }
- }
+ final PooledConsumer c = PooledLambda.obtainConsumer(
+ ActivityRecord::updatePictureInPictureMode,
+ PooledLambda.__(ActivityRecord.class), targetStackBounds, forceUpdate);
+ task.forAllActivities(c);
+ c.recycle();
}
void wakeUp(String reason) {
@@ -2753,7 +2761,8 @@
mRootActivityContainer.sendPowerHintForLaunchStartIfNeeded(
true /* forceSend */, targetActivity);
- mActivityMetricsLogger.notifyActivityLaunching(task.intent);
+ final LaunchingState launchingState =
+ mActivityMetricsLogger.notifyActivityLaunching(task.intent);
try {
mService.moveTaskToFrontLocked(null /* appThread */, null /* callingPackage */,
task.mTaskId, 0, options, true /* fromRecents */);
@@ -2761,8 +2770,8 @@
// the override pending app transition will be applied immediately.
targetActivity.applyOptionsLocked();
} finally {
- mActivityMetricsLogger.notifyActivityLaunched(START_TASK_TO_FRONT,
- targetActivity);
+ mActivityMetricsLogger.notifyActivityLaunched(launchingState,
+ START_TASK_TO_FRONT, targetActivity);
}
mService.getActivityStartController().postStartActivityProcessingForLastStarter(
diff --git a/services/core/java/com/android/server/wm/ActivityStartInterceptor.java b/services/core/java/com/android/server/wm/ActivityStartInterceptor.java
index 8420695..b2fb93d 100644
--- a/services/core/java/com/android/server/wm/ActivityStartInterceptor.java
+++ b/services/core/java/com/android/server/wm/ActivityStartInterceptor.java
@@ -156,16 +156,16 @@
mInTask = inTask;
mActivityOptions = activityOptions;
- if (interceptSuspendedPackageIfNeeded()) {
- // Skip the rest of interceptions as the package is suspended by device admin so
- // no user action can undo this.
- return true;
- }
if (interceptQuietProfileIfNeeded()) {
// If work profile is turned off, skip the work challenge since the profile can only
// be unlocked when profile's user is running.
return true;
}
+ if (interceptSuspendedPackageIfNeeded()) {
+ // Skip the rest of interceptions as the package is suspended by device admin so
+ // no user action can undo this.
+ return true;
+ }
if (interceptHarmfulAppIfNeeded()) {
// If the app has a "harmful app" warning associated with it, we should ask to uninstall
// before issuing the work challenge.
diff --git a/services/core/java/com/android/server/wm/ActivityStarter.java b/services/core/java/com/android/server/wm/ActivityStarter.java
index 8455c6d..8164bf4 100644
--- a/services/core/java/com/android/server/wm/ActivityStarter.java
+++ b/services/core/java/com/android/server/wm/ActivityStarter.java
@@ -60,7 +60,6 @@
import static android.view.Display.DEFAULT_DISPLAY;
import static android.view.Display.INVALID_DISPLAY;
-import static com.android.server.am.EventLogTags.AM_NEW_INTENT;
import static com.android.server.wm.ActivityStack.ActivityState.RESUMED;
import static com.android.server.wm.ActivityStackSupervisor.DEFER_RESUME;
import static com.android.server.wm.ActivityStackSupervisor.ON_TOP;
@@ -114,16 +113,15 @@
import android.service.voice.IVoiceInteractionSession;
import android.text.TextUtils;
import android.util.ArraySet;
-import android.util.EventLog;
import android.util.Pools.SynchronizedPool;
import android.util.Slog;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.app.HeavyWeightSwitcherActivity;
import com.android.internal.app.IVoiceInteractor;
-import com.android.server.am.EventLogTags;
import com.android.server.am.PendingIntentRecord;
import com.android.server.pm.InstantAppResolver;
+import com.android.server.wm.ActivityMetricsLogger.LaunchingState;
import com.android.server.wm.ActivityStackSupervisor.PendingActivityLaunch;
import com.android.server.wm.LaunchParamsController.LaunchParams;
@@ -152,7 +150,8 @@
private final ActivityStartController mController;
// Share state variable among methods when starting an activity.
- private ActivityRecord mStartActivity;
+ @VisibleForTesting
+ ActivityRecord mStartActivity;
private Intent mIntent;
private int mCallingUid;
private ActivityOptions mOptions;
@@ -176,7 +175,8 @@
private int mPreferredDisplayId;
private Task mInTask;
- private boolean mAddingToTask;
+ @VisibleForTesting
+ boolean mAddingToTask;
private Task mReuseTask;
private ActivityInfo mNewTaskInfo;
@@ -573,15 +573,16 @@
IVoiceInteractionSession voiceSession, IVoiceInteractor voiceInteractor,
int startFlags, boolean doResume, ActivityOptions options, Task inTask) {
try {
- mSupervisor.getActivityMetricsLogger().notifyActivityLaunching(r.intent);
+ final LaunchingState launchingState = mSupervisor.getActivityMetricsLogger()
+ .notifyActivityLaunching(r.intent, r.resultTo);
mLastStartReason = "startResolvedActivity";
mLastStartActivityTimeMs = System.currentTimeMillis();
mLastStartActivityRecord = r;
mLastStartActivityResult = startActivityUnchecked(r, sourceRecord, voiceSession,
voiceInteractor, startFlags, doResume, options, inTask,
false /* restrictedBgActivity */);
- mSupervisor.getActivityMetricsLogger().notifyActivityLaunched(mLastStartActivityResult,
- mLastStartActivityRecord);
+ mSupervisor.getActivityMetricsLogger().notifyActivityLaunched(launchingState,
+ mLastStartActivityResult, mLastStartActivityRecord);
} finally {
onExecutionComplete();
}
@@ -599,8 +600,14 @@
throw new IllegalArgumentException("File descriptors passed in Intent");
}
- mSupervisor.getActivityMetricsLogger().notifyActivityLaunching(mRequest.intent);
+ final LaunchingState launchingState;
+ synchronized (mService.mGlobalLock) {
+ final ActivityRecord caller = ActivityRecord.forTokenLocked(mRequest.resultTo);
+ launchingState = mSupervisor.getActivityMetricsLogger().notifyActivityLaunching(
+ mRequest.intent, caller);
+ }
+ // Do not lock the resolving to avoid potential deadlock.
if (mRequest.activityInfo == null) {
mRequest.resolveActivity(mSupervisor);
}
@@ -644,7 +651,7 @@
// Notify ActivityMetricsLogger that the activity has launched.
// ActivityMetricsLogger will then wait for the windows to be drawn and populate
// WaitResult.
- mSupervisor.getActivityMetricsLogger().notifyActivityLaunched(res,
+ mSupervisor.getActivityMetricsLogger().notifyActivityLaunched(launchingState, res,
mLastStartActivityRecord);
return getExternalResult(mRequest.waitResult == null ? res
: waitForResult(res, mLastStartActivityRecord));
@@ -1447,7 +1454,7 @@
// Stack should also be detached from display and be removed if it's empty.
if (startedActivityStack != null && startedActivityStack.isAttached()
- && startedActivityStack.numActivities() == 0
+ && !startedActivityStack.hasActivity()
&& !startedActivityStack.isActivityTypeHome()) {
startedActivityStack.removeIfPossible();
startedActivityStack = null;
@@ -1550,11 +1557,12 @@
UserHandle.getAppId(mStartActivity.info.applicationInfo.uid)
);
if (newTask) {
- EventLog.writeEvent(EventLogTags.AM_CREATE_TASK, mStartActivity.mUserId,
+ EventLogTags.writeWmCreateTask(mStartActivity.mUserId,
mStartActivity.getTask().mTaskId);
}
mStartActivity.logStartActivity(
- EventLogTags.AM_CREATE_ACTIVITY, mStartActivity.getTask());
+ EventLogTags.WM_CREATE_ACTIVITY, mStartActivity.getTask());
+
mTargetStack.mLastPausedActivity = null;
mRootActivityContainer.sendPowerHintForLaunchStartIfNeeded(
@@ -1640,7 +1648,7 @@
return START_CANCELED;
}
- if (mRestrictedBgActivity && (newTask || !targetTask.containsAppUid(mCallingUid))
+ if (mRestrictedBgActivity && (newTask || !targetTask.isUidPresent(mCallingUid))
&& handleBackgroundActivityAbort(mStartActivity)) {
Slog.e(TAG, "Abort background activity starts from " + mCallingUid);
return START_ABORTED;
@@ -1667,7 +1675,16 @@
* - Comply to the specified activity launch flags
* - Determine whether need to add a new activity on top or just brought the task to front.
*/
- private int recycleTask(Task targetTask, ActivityRecord targetTaskTop, Task reusedTask) {
+ @VisibleForTesting
+ int recycleTask(Task targetTask, ActivityRecord targetTaskTop, Task reusedTask) {
+ // Should not recycle task which is from a different user, just adding the starting
+ // activity to the task.
+ if (targetTask.mUserId != mStartActivity.mUserId) {
+ mTargetStack = targetTask.getStack();
+ mAddingToTask = true;
+ return START_SUCCESS;
+ }
+
// True if we are clearing top and resetting of a standard (default) launch mode
// ({@code LAUNCH_MULTIPLE}) activity. The existing activity will be finished.
final boolean clearTopAndResetStandardLaunchMode =
@@ -1871,8 +1888,8 @@
// In this case, we are launching an activity in our own task that may
// already be running somewhere in the history, and we want to shuffle it to
// the front of the stack if so.
- final ActivityRecord act = targetTask.findActivityInHistoryLocked(
- mStartActivity);
+ final ActivityRecord act =
+ targetTask.findActivityInHistory(mStartActivity.mActivityComponent);
if (act != null) {
final Task task = act.getTask();
task.moveActivityToFrontLocked(act);
@@ -2405,7 +2422,7 @@
return;
}
- activity.logStartActivity(AM_NEW_INTENT, activity.getTask());
+ activity.logStartActivity(EventLogTags.WM_NEW_INTENT, activity.getTask());
activity.deliverNewIntentLocked(mCallingUid, mStartActivity.intent,
mStartActivity.launchedFromPackage);
mIntentDelivered = true;
diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java b/services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java
index cce005b..25f6d6f 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java
@@ -32,9 +32,7 @@
import android.os.Bundle;
import android.os.IBinder;
import android.os.RemoteException;
-import android.os.SystemClock;
import android.service.voice.IVoiceInteractionSession;
-import android.util.SparseIntArray;
import android.util.proto.ProtoOutputStream;
import com.android.internal.app.IVoiceInteractor;
@@ -154,17 +152,6 @@
IVoiceInteractor mInteractor);
/**
- * Callback for window manager to let activity manager know that we are finally starting the
- * app transition;
- *
- * @param reasons A map from windowing mode to a reason integer why the transition was started,
- * which must be one of the APP_TRANSITION_* values.
- * @param timestampNs The time at which the app transition started in
- * {@link SystemClock#elapsedRealtimeNs()} ()} timebase.
- */
- public abstract void notifyAppTransitionStarting(SparseIntArray reasons, long timestampNs);
-
- /**
* Callback for window manager to let activity manager know that the app transition was
* cancelled.
*/
diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
index bef4f5a..d097368 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
@@ -83,6 +83,8 @@
import static com.android.server.am.ActivityManagerServiceDumpProcessesProto.SCREEN_COMPAT_PACKAGES;
import static com.android.server.am.ActivityManagerServiceDumpProcessesProto.ScreenCompatPackage.MODE;
import static com.android.server.am.ActivityManagerServiceDumpProcessesProto.ScreenCompatPackage.PACKAGE;
+import static com.android.server.am.EventLogTags.writeBootProgressEnableScreen;
+import static com.android.server.am.EventLogTags.writeConfigurationChanged;
import static com.android.server.wm.ActivityStack.ActivityState.DESTROYED;
import static com.android.server.wm.ActivityStack.ActivityState.DESTROYING;
import static com.android.server.wm.ActivityStackSupervisor.DEFER_RESUME;
@@ -215,11 +217,9 @@
import android.text.format.TimeMigrationUtils;
import android.util.ArrayMap;
import android.util.ArraySet;
-import android.util.EventLog;
import android.util.Log;
import android.util.Slog;
import android.util.SparseArray;
-import android.util.SparseIntArray;
import android.util.StatsLog;
import android.util.TimeUtils;
import android.util.proto.ProtoOutputStream;
@@ -246,6 +246,8 @@
import com.android.internal.util.ArrayUtils;
import com.android.internal.util.FastPrintWriter;
import com.android.internal.util.Preconditions;
+import com.android.internal.util.function.pooled.PooledConsumer;
+import com.android.internal.util.function.pooled.PooledFunction;
import com.android.internal.util.function.pooled.PooledLambda;
import com.android.server.AttributeCache;
import com.android.server.LocalServices;
@@ -258,7 +260,6 @@
import com.android.server.am.ActivityManagerServiceDumpProcessesProto;
import com.android.server.am.AppTimeTracker;
import com.android.server.am.BaseErrorDialog;
-import com.android.server.am.EventLogTags;
import com.android.server.am.PendingIntentController;
import com.android.server.am.PendingIntentRecord;
import com.android.server.am.UserState;
@@ -695,6 +696,13 @@
int caller() default NONE;
}
+ private final Runnable mUpdateOomAdjRunnable = new Runnable() {
+ @Override
+ public void run() {
+ mAmInternal.updateOomAdj();
+ }
+ };
+
@VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE)
public ActivityTaskManagerService(Context context) {
mContext = context;
@@ -1219,25 +1227,23 @@
Intent intent, String resolvedType, IBinder resultTo, String resultWho, int requestCode,
int startFlags, ProfilerInfo profilerInfo, Bundle bOptions, int userId) {
final WaitResult res = new WaitResult();
- synchronized (mGlobalLock) {
- enforceNotIsolatedCaller("startActivityAndWait");
- userId = handleIncomingUser(Binder.getCallingPid(), Binder.getCallingUid(),
- userId, "startActivityAndWait");
- // TODO: Switch to user app stacks here.
- getActivityStartController().obtainStarter(intent, "startActivityAndWait")
- .setCaller(caller)
- .setCallingPackage(callingPackage)
- .setResolvedType(resolvedType)
- .setResultTo(resultTo)
- .setResultWho(resultWho)
- .setRequestCode(requestCode)
- .setStartFlags(startFlags)
- .setActivityOptions(bOptions)
- .setUserId(userId)
- .setProfilerInfo(profilerInfo)
- .setWaitResult(res)
- .execute();
- }
+ enforceNotIsolatedCaller("startActivityAndWait");
+ userId = handleIncomingUser(Binder.getCallingPid(), Binder.getCallingUid(),
+ userId, "startActivityAndWait");
+ // TODO: Switch to user app stacks here.
+ getActivityStartController().obtainStarter(intent, "startActivityAndWait")
+ .setCaller(caller)
+ .setCallingPackage(callingPackage)
+ .setResolvedType(resolvedType)
+ .setResultTo(resultTo)
+ .setResultWho(resultWho)
+ .setRequestCode(requestCode)
+ .setStartFlags(startFlags)
+ .setActivityOptions(bOptions)
+ .setUserId(userId)
+ .setProfilerInfo(profilerInfo)
+ .setWaitResult(res)
+ .execute();
return res;
}
@@ -1245,24 +1251,22 @@
public final int startActivityWithConfig(IApplicationThread caller, String callingPackage,
Intent intent, String resolvedType, IBinder resultTo, String resultWho, int requestCode,
int startFlags, Configuration config, Bundle bOptions, int userId) {
- synchronized (mGlobalLock) {
- enforceNotIsolatedCaller("startActivityWithConfig");
- userId = handleIncomingUser(Binder.getCallingPid(), Binder.getCallingUid(), userId,
- "startActivityWithConfig");
- // TODO: Switch to user app stacks here.
- return getActivityStartController().obtainStarter(intent, "startActivityWithConfig")
- .setCaller(caller)
- .setCallingPackage(callingPackage)
- .setResolvedType(resolvedType)
- .setResultTo(resultTo)
- .setResultWho(resultWho)
- .setRequestCode(requestCode)
- .setStartFlags(startFlags)
- .setGlobalConfiguration(config)
- .setActivityOptions(bOptions)
- .setUserId(userId)
- .execute();
- }
+ enforceNotIsolatedCaller("startActivityWithConfig");
+ userId = handleIncomingUser(Binder.getCallingPid(), Binder.getCallingUid(), userId,
+ "startActivityWithConfig");
+ // TODO: Switch to user app stacks here.
+ return getActivityStartController().obtainStarter(intent, "startActivityWithConfig")
+ .setCaller(caller)
+ .setCallingPackage(callingPackage)
+ .setResolvedType(resolvedType)
+ .setResultTo(resultTo)
+ .setResultWho(resultWho)
+ .setRequestCode(requestCode)
+ .setStartFlags(startFlags)
+ .setGlobalConfiguration(config)
+ .setActivityOptions(bOptions)
+ .setUserId(userId)
+ .execute();
}
@@ -1661,7 +1665,14 @@
if (getLockTaskController().activityBlockedFromFinish(r)) {
return false;
}
- r.finishActivityAffinity();
+
+ final PooledFunction p = PooledLambda.obtainFunction(
+ ActivityRecord::finishIfSameAffinity, r,
+ PooledLambda.__(ActivityRecord.class));
+ r.getTask().forAllActivities(
+ p, r, true /*includeBoundary*/, true /*traverseTopToBottom*/);
+ p.recycle();
+
return true;
} finally {
Binder.restoreCallingIdentity(origId);
@@ -1994,10 +2005,8 @@
if (r == null) {
return false;
}
- final Task task = r.getTask();
- int index = task.mChildren.lastIndexOf(r);
- if (index > 0) {
- ActivityRecord under = task.getChildAt(index - 1);
+ final ActivityRecord under = r.getTask().getActivityBelow(r);
+ if (under != null) {
under.returningOptions = safeOptions != null ? safeOptions.getOptions(r) : null;
}
return r.setOccludesParent(false);
@@ -2163,7 +2172,7 @@
synchronized (mGlobalLock) {
final ActivityRecord r = ActivityRecord.forTokenLocked(token);
if (r != null) {
- return r.getActivityStack().navigateUpToLocked(
+ return r.getActivityStack().navigateUpTo(
r, destIntent, resultCode, resultData);
}
return false;
@@ -2548,11 +2557,22 @@
public final void finishSubActivity(IBinder token, String resultWho, int requestCode) {
synchronized (mGlobalLock) {
final long origId = Binder.clearCallingIdentity();
- ActivityRecord r = ActivityRecord.isInStackLocked(token);
- if (r != null) {
- r.getActivityStack().finishSubActivityLocked(r, resultWho, requestCode);
+ try {
+ ActivityRecord r = ActivityRecord.isInStackLocked(token);
+ if (r == null) return;
+
+ final PooledConsumer c = PooledLambda.obtainConsumer(
+ ActivityRecord::finishIfSubActivity, PooledLambda.__(ActivityRecord.class),
+ r, resultWho, requestCode);
+ // TODO: This should probably only loop over the task since you need to be in the
+ // same task to return results.
+ r.getActivityStack().forAllActivities(c);
+ c.recycle();
+
+ updateOomAdj();
+ } finally {
+ Binder.restoreCallingIdentity(origId);
}
- Binder.restoreCallingIdentity(origId);
}
}
@@ -2561,7 +2581,7 @@
synchronized (mGlobalLock) {
ActivityStack stack = ActivityRecord.getStackLocked(token);
if (stack != null) {
- return stack.willActivityBeVisibleLocked(token);
+ return stack.willActivityBeVisible(token);
}
return false;
}
@@ -3332,7 +3352,7 @@
final long origId = Binder.clearCallingIdentity();
try {
final WindowProcessController app = getProcessController(appInt);
- mRootActivityContainer.releaseSomeActivitiesLocked(app, "low-mem");
+ app.releaseSomeActivities("low-mem");
} finally {
Binder.restoreCallingIdentity(origId);
}
@@ -5195,8 +5215,7 @@
if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.i(TAG_CONFIGURATION,
"Updating global configuration to: " + values);
-
- EventLog.writeEvent(EventLogTags.CONFIGURATION_CHANGED, changes);
+ writeConfigurationChanged(changes);
StatsLog.write(StatsLog.RESOURCE_CONFIGURATION_CHANGED,
values.colorMode,
values.densityDpi,
@@ -5359,8 +5378,7 @@
}
void enableScreenAfterBoot(boolean booted) {
- EventLog.writeEvent(EventLogTags.BOOT_PROGRESS_ENABLE_SCREEN,
- SystemClock.uptimeMillis());
+ writeBootProgressEnableScreen(SystemClock.uptimeMillis());
mWindowManager.enableScreenAfterBoot();
synchronized (mGlobalLock) {
@@ -5491,7 +5509,7 @@
applyUpdateLockStateLocked(r);
applyUpdateVrModeLocked(r);
- EventLogTags.writeAmSetResumedActivity(
+ EventLogTags.writeWmSetResumedActivity(
r == null ? -1 : r.mUserId,
r == null ? "NULL" : r.shortComponentName,
reason);
@@ -5547,7 +5565,8 @@
}
void updateOomAdj() {
- mH.post(mAmInternal::updateOomAdj);
+ mH.removeCallbacks(mUpdateOomAdjRunnable);
+ mH.post(mUpdateOomAdjRunnable);
}
void updateCpuStats() {
@@ -6075,15 +6094,6 @@
}
@Override
- public void notifyAppTransitionStarting(SparseIntArray reasons,
- long timestampNs) {
- synchronized (mGlobalLock) {
- mStackSupervisor.getActivityMetricsLogger().notifyTransitionStarting(
- reasons, timestampNs);
- }
- }
-
- @Override
public void notifySingleTaskDisplayDrawn(int displayId) {
mTaskChangeNotificationController.notifySingleTaskDisplayDrawn(displayId);
}
@@ -6419,8 +6429,7 @@
@Override
public void enableScreenAfterBoot(boolean booted) {
synchronized (mGlobalLock) {
- EventLog.writeEvent(EventLogTags.BOOT_PROGRESS_ENABLE_SCREEN,
- SystemClock.uptimeMillis());
+ writeBootProgressEnableScreen(SystemClock.uptimeMillis());
mWindowManager.enableScreenAfterBoot();
updateEventDispatchingLocked(booted);
}
diff --git a/services/core/java/com/android/server/wm/AlertWindowNotification.java b/services/core/java/com/android/server/wm/AlertWindowNotification.java
index 9177d25..0de94d9 100644
--- a/services/core/java/com/android/server/wm/AlertWindowNotification.java
+++ b/services/core/java/com/android/server/wm/AlertWindowNotification.java
@@ -21,7 +21,7 @@
import static android.content.Context.NOTIFICATION_SERVICE;
import static android.content.Intent.FLAG_ACTIVITY_CLEAR_TASK;
import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
-import static android.provider.Settings.ACTION_MANAGE_OVERLAY_PERMISSION;
+import static android.provider.Settings.ACTION_MANAGE_APP_OVERLAY_PERMISSION;
import android.app.Notification;
import android.app.NotificationChannel;
@@ -29,13 +29,11 @@
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
-
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
-
import android.net.Uri;
import android.os.Bundle;
@@ -137,7 +135,7 @@
}
private PendingIntent getContentIntent(Context context, String packageName) {
- final Intent intent = new Intent(ACTION_MANAGE_OVERLAY_PERMISSION,
+ final Intent intent = new Intent(ACTION_MANAGE_APP_OVERLAY_PERMISSION,
Uri.fromParts("package", packageName, null));
intent.setFlags(FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_CLEAR_TASK);
// Calls into activity manager...
diff --git a/services/core/java/com/android/server/wm/AppTransitionController.java b/services/core/java/com/android/server/wm/AppTransitionController.java
index ff1b423..e9ad0d3 100644
--- a/services/core/java/com/android/server/wm/AppTransitionController.java
+++ b/services/core/java/com/android/server/wm/AppTransitionController.java
@@ -52,11 +52,10 @@
import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME;
import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM;
-import android.os.SystemClock;
import android.os.Trace;
+import android.util.ArrayMap;
import android.util.ArraySet;
import android.util.Slog;
-import android.util.SparseIntArray;
import android.view.Display;
import android.view.RemoteAnimationAdapter;
import android.view.RemoteAnimationDefinition;
@@ -81,7 +80,7 @@
private final WallpaperController mWallpaperControllerLocked;
private RemoteAnimationDefinition mRemoteAnimationDefinition = null;
- private final SparseIntArray mTempTransitionReasons = new SparseIntArray();
+ private final ArrayMap<ActivityRecord, Integer> mTempTransitionReasons = new ArrayMap<>();
AppTransitionController(WindowManagerService service, DisplayContent displayContent) {
mService = service;
@@ -208,8 +207,8 @@
mDisplayContent.computeImeTarget(true /* updateImeTarget */);
- mService.mAtmInternal.notifyAppTransitionStarting(mTempTransitionReasons.clone(),
- SystemClock.elapsedRealtimeNanos());
+ mService.mAtmService.mStackSupervisor.getActivityMetricsLogger().notifyTransitionStarting(
+ mTempTransitionReasons);
if (transit == TRANSIT_SHOW_SINGLE_TASK_DISPLAY) {
mService.mAnimator.addAfterPrepareSurfacesRunnable(() -> {
@@ -442,7 +441,8 @@
}
}
- private boolean transitionGoodToGo(ArraySet<ActivityRecord> apps, SparseIntArray outReasons) {
+ private boolean transitionGoodToGo(ArraySet<ActivityRecord> apps,
+ ArrayMap<ActivityRecord, Integer> outReasons) {
ProtoLog.v(WM_DEBUG_APP_TRANSITIONS,
"Checking %d opening apps (frozen=%b timeout=%b)...", apps.size(),
mService.mDisplayFrozen, mDisplayContent.mAppTransition.isTimeout());
@@ -478,11 +478,10 @@
if (!allDrawn && !activity.startingDisplayed && !activity.startingMoved) {
return false;
}
- final int windowingMode = activity.getWindowingMode();
if (allDrawn) {
- outReasons.put(windowingMode, APP_TRANSITION_WINDOWS_DRAWN);
+ outReasons.put(activity, APP_TRANSITION_WINDOWS_DRAWN);
} else {
- outReasons.put(windowingMode,
+ outReasons.put(activity,
activity.mStartingData instanceof SplashScreenStartingData
? APP_TRANSITION_SPLASH_SCREEN
: APP_TRANSITION_SNAPSHOT);
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java
index 283b92c..b046b08 100644
--- a/services/core/java/com/android/server/wm/DisplayContent.java
+++ b/services/core/java/com/android/server/wm/DisplayContent.java
@@ -2482,7 +2482,7 @@
&& !mDividerControllerLocked.isImeHideRequested();
final ActivityStack dockedStack = getSplitScreenPrimaryStack();
final boolean dockVisible = dockedStack != null;
- final Task topDockedTask = dockVisible ? dockedStack.getTopChild() : null;
+ final Task topDockedTask = dockVisible ? dockedStack.getTask((t) -> true): null;
final ActivityStack imeTargetStack = mWmService.getImeFocusStackLocked();
final int imeDockSide = (dockVisible && imeTargetStack != null) ?
imeTargetStack.getDockSide() : DOCKED_INVALID;
diff --git a/services/core/java/com/android/server/wm/DisplayRotation.java b/services/core/java/com/android/server/wm/DisplayRotation.java
index c76d03c..c7c3f8a 100644
--- a/services/core/java/com/android/server/wm/DisplayRotation.java
+++ b/services/core/java/com/android/server/wm/DisplayRotation.java
@@ -52,6 +52,7 @@
import android.util.Slog;
import android.util.SparseArray;
import android.view.IDisplayWindowRotationCallback;
+import android.view.IWindowManager;
import android.view.Surface;
import android.view.WindowContainerTransaction;
@@ -184,32 +185,11 @@
private boolean mDefaultFixedToUserRotation;
/**
- * No overridden behavior is provided in terms of fixing rotation to user rotation. Use other
- * flags to derive the default behavior, such as {@link WindowManagerService#mIsPc} and
- * {@link WindowManagerService#mForceDesktopModeOnExternalDisplays}.
- */
- static final int FIXED_TO_USER_ROTATION_DEFAULT = 0;
- /**
- * Don't fix display rotation to {@link #mUserRotation} only. Always allow other factors to play
- * a role in deciding display rotation.
- */
- static final int FIXED_TO_USER_ROTATION_DISABLED = 1;
- /**
- * Only use {@link #mUserRotation} as the display rotation.
- */
- static final int FIXED_TO_USER_ROTATION_ENABLED = 2;
- @IntDef({ FIXED_TO_USER_ROTATION_DEFAULT, FIXED_TO_USER_ROTATION_DISABLED,
- FIXED_TO_USER_ROTATION_ENABLED })
- @Retention(RetentionPolicy.SOURCE)
- @interface FixedToUserRotation {}
-
- /**
* A flag to indicate if the display rotation should be fixed to user specified rotation
* regardless of all other states (including app requrested orientation). {@code true} the
* display rotation should be fixed to user specified rotation, {@code false} otherwise.
*/
- @FixedToUserRotation
- private int mFixedToUserRotation = FIXED_TO_USER_ROTATION_DEFAULT;
+ private int mFixedToUserRotation = IWindowManager.FIXED_TO_USER_ROTATION_DEFAULT;
private int mDemoHdmiRotation;
private int mDemoRotation;
@@ -723,8 +703,7 @@
}
}
- void restoreSettings(int userRotationMode, int userRotation,
- @FixedToUserRotation int fixedToUserRotation) {
+ void restoreSettings(int userRotationMode, int userRotation, int fixedToUserRotation) {
mFixedToUserRotation = fixedToUserRotation;
// We will retrieve user rotation and user rotation mode from settings for default display.
@@ -746,7 +725,7 @@
mUserRotation = userRotation;
}
- void setFixedToUserRotation(@FixedToUserRotation int fixedToUserRotation) {
+ void setFixedToUserRotation(int fixedToUserRotation) {
if (mFixedToUserRotation == fixedToUserRotation) {
return;
}
@@ -808,9 +787,9 @@
boolean isFixedToUserRotation() {
switch (mFixedToUserRotation) {
- case FIXED_TO_USER_ROTATION_DISABLED:
+ case IWindowManager.FIXED_TO_USER_ROTATION_DISABLED:
return false;
- case FIXED_TO_USER_ROTATION_ENABLED:
+ case IWindowManager.FIXED_TO_USER_ROTATION_ENABLED:
return true;
default:
return mDefaultFixedToUserRotation;
diff --git a/services/core/java/com/android/server/wm/DisplayWindowSettings.java b/services/core/java/com/android/server/wm/DisplayWindowSettings.java
index dac8b14..df7c070 100644
--- a/services/core/java/com/android/server/wm/DisplayWindowSettings.java
+++ b/services/core/java/com/android/server/wm/DisplayWindowSettings.java
@@ -22,7 +22,6 @@
import static com.android.server.wm.DisplayContent.FORCE_SCALING_MODE_AUTO;
import static com.android.server.wm.DisplayContent.FORCE_SCALING_MODE_DISABLED;
-import static com.android.server.wm.DisplayRotation.FIXED_TO_USER_ROTATION_DEFAULT;
import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME;
import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM;
@@ -38,6 +37,7 @@
import android.view.Display;
import android.view.DisplayAddress;
import android.view.DisplayInfo;
+import android.view.IWindowManager;
import android.view.Surface;
import com.android.internal.annotations.VisibleForTesting;
@@ -111,8 +111,7 @@
private boolean mShouldShowWithInsecureKeyguard = false;
private boolean mShouldShowSystemDecors = false;
private boolean mShouldShowIme = false;
- private @DisplayRotation.FixedToUserRotation int mFixedToUserRotation =
- FIXED_TO_USER_ROTATION_DEFAULT;
+ private int mFixedToUserRotation = IWindowManager.FIXED_TO_USER_ROTATION_DEFAULT;
private Entry(String name) {
mName = name;
@@ -145,7 +144,7 @@
&& !mShouldShowWithInsecureKeyguard
&& !mShouldShowSystemDecors
&& !mShouldShowIme
- && mFixedToUserRotation == FIXED_TO_USER_ROTATION_DEFAULT;
+ && mFixedToUserRotation == IWindowManager.FIXED_TO_USER_ROTATION_DEFAULT;
}
}
@@ -242,8 +241,7 @@
writeSettingsIfNeeded(entry, displayInfo);
}
- void setFixedToUserRotation(DisplayContent displayContent,
- @DisplayRotation.FixedToUserRotation int fixedToUserRotation) {
+ void setFixedToUserRotation(DisplayContent displayContent, int fixedToUserRotation) {
final DisplayInfo displayInfo = displayContent.getDisplayInfo();
final Entry entry = getOrCreateEntry(displayInfo);
entry.mFixedToUserRotation = fixedToUserRotation;
@@ -610,7 +608,7 @@
if (entry.mShouldShowIme) {
out.attribute(null, "shouldShowIme", Boolean.toString(entry.mShouldShowIme));
}
- if (entry.mFixedToUserRotation != FIXED_TO_USER_ROTATION_DEFAULT) {
+ if (entry.mFixedToUserRotation != IWindowManager.FIXED_TO_USER_ROTATION_DEFAULT) {
out.attribute(null, "fixedToUserRotation",
Integer.toString(entry.mFixedToUserRotation));
}
diff --git a/services/core/java/com/android/server/wm/EmbeddedWindowController.java b/services/core/java/com/android/server/wm/EmbeddedWindowController.java
index 24948a2..0291017 100644
--- a/services/core/java/com/android/server/wm/EmbeddedWindowController.java
+++ b/services/core/java/com/android/server/wm/EmbeddedWindowController.java
@@ -16,8 +16,8 @@
package com.android.server.wm;
-import static com.android.server.wm.ActivityRecord.INVALID_PID;
+import android.annotation.Nullable;
import android.os.IBinder;
import android.os.RemoteException;
import android.util.ArrayMap;
@@ -39,8 +39,21 @@
mWmLock = wmLock;
}
- void add(IBinder inputToken, IWindow window, WindowState hostWindowState, int ownerUid,
- int ownerPid) {
+ /**
+ * Adds a new embedded window.
+ *
+ * @param inputToken input channel token passed in by the embedding process when it requests
+ * the server to add an input channel to the embedded surface.
+ * @param window client token used to clean up the map if the embedding process dies
+ * @param hostWindowState input channel token belonging to the host window. This is needed to
+ * handle input callbacks to wm. It's used when raising ANR and when
+ * the user taps out side of the focused region on screen. This can be
+ * null if there is no host window.
+ * @param ownerUid calling uid
+ * @param ownerPid calling pid used for anr blaming
+ */
+ void add(IBinder inputToken, IWindow window, @Nullable WindowState hostWindowState,
+ int ownerUid, int ownerPid) {
EmbeddedWindow embeddedWindow = new EmbeddedWindow(window, hostWindowState, ownerUid,
ownerPid);
try {
@@ -61,31 +74,30 @@
return embeddedWindow != null ? embeddedWindow.mHostWindowState : null;
}
- int getOwnerPid(IBinder inputToken) {
- EmbeddedWindow embeddedWindow = mWindows.get(inputToken);
- return embeddedWindow != null ? embeddedWindow.mOwnerPid : INVALID_PID;
- }
-
void remove(IWindow client) {
- for (ArrayMap.Entry<IBinder, EmbeddedWindow> entry: mWindows.entrySet()) {
- if (entry.getValue().mClient.asBinder() == client.asBinder()) {
- mWindows.remove(entry.getKey());
+ for (int i = mWindows.size() - 1; i >= 0; i--) {
+ if (mWindows.valueAt(i).mClient.asBinder() == client.asBinder()) {
+ mWindows.removeAt(i);
return;
}
}
}
void removeWindowsWithHost(WindowState host) {
- for (ArrayMap.Entry<IBinder, EmbeddedWindow> entry: mWindows.entrySet()) {
- if (entry.getValue().mHostWindowState == host) {
- mWindows.remove(entry.getKey());
+ for (int i = mWindows.size() - 1; i >= 0; i--) {
+ if (mWindows.valueAt(i).mHostWindowState == host) {
+ mWindows.removeAt(i);
}
}
}
- private static class EmbeddedWindow {
+ EmbeddedWindow get(IBinder inputToken) {
+ return mWindows.get(inputToken);
+ }
+
+ static class EmbeddedWindow {
final IWindow mClient;
- final WindowState mHostWindowState;
+ @Nullable final WindowState mHostWindowState;
final int mOwnerUid;
final int mOwnerPid;
diff --git a/services/core/java/com/android/server/wm/EventLogTags.logtags b/services/core/java/com/android/server/wm/EventLogTags.logtags
new file mode 100644
index 0000000..aab901e
--- /dev/null
+++ b/services/core/java/com/android/server/wm/EventLogTags.logtags
@@ -0,0 +1,77 @@
+# See system/core/logcat/event.logtags for a description of the format of this file.
+
+option java_package com.android.server.wm
+
+# Do not change these names without updating the checkin_events setting in
+# google3/googledata/wireless/android/provisioning/gservices.config !!
+#
+# An activity is being finished:
+30001 wm_finish_activity (User|1|5),(Token|1|5),(Task ID|1|5),(Component Name|3),(Reason|3)
+# A task is being brought to the front of the screen:
+30002 wm_task_to_front (User|1|5),(Task|1|5)
+# An existing activity is being given a new intent:
+30003 wm_new_intent (User|1|5),(Token|1|5),(Task ID|1|5),(Component Name|3),(Action|3),(MIME Type|3),(URI|3),(Flags|1|5)
+# A new task is being created:
+30004 wm_create_task (User|1|5),(Task ID|1|5)
+# A new activity is being created in an existing task:
+30005 wm_create_activity (User|1|5),(Token|1|5),(Task ID|1|5),(Component Name|3),(Action|3),(MIME Type|3),(URI|3),(Flags|1|5)
+# An activity has been resumed into the foreground but was not already running:
+30006 wm_restart_activity (User|1|5),(Token|1|5),(Task ID|1|5),(Component Name|3)
+# An activity has been resumed and is now in the foreground:
+30007 wm_resume_activity (User|1|5),(Token|1|5),(Task ID|1|5),(Component Name|3)
+
+# Activity launch time
+30009 wm_activity_launch_time (User|1|5),(Token|1|5),(Component Name|3),(time|2|3)
+
+# The Activity Manager failed to pause the given activity.
+30012 wm_failed_to_pause (User|1|5),(Token|1|5),(Wanting to pause|3),(Currently pausing|3)
+# Attempting to pause the current activity
+30013 wm_pause_activity (User|1|5),(Token|1|5),(Component Name|3),(User Leaving|3)
+# Application process has been started
+
+# An activity is being destroyed:
+30018 wm_destroy_activity (User|1|5),(Token|1|5),(Task ID|1|5),(Component Name|3),(Reason|3)
+# An activity has been relaunched, resumed, and is now in the foreground:
+30019 wm_relaunch_resume_activity (User|1|5),(Token|1|5),(Task ID|1|5),(Component Name|3)
+# An activity has been relaunched:
+30020 wm_relaunch_activity (User|1|5),(Token|1|5),(Task ID|1|5),(Component Name|3)
+# The activity's onPause has been called.
+30021 wm_on_paused_called (Token|1|5),(Component Name|3),(Reason|3)
+# The activity's onResume has been called.
+30022 wm_on_resume_called (Token|1|5),(Component Name|3),(Reason|3)
+
+# Activity set to resumed
+30043 wm_set_resumed_activity (User|1|5),(Component Name|3),(Reason|3)
+
+# Stack focus
+30044 wm_focused_stack (User|1|5),(Display Id|1|5),(Focused Stack Id|1|5),(Last Focused Stack Id|1|5),(Reason|3)
+
+# Attempting to stop an activity
+30048 wm_stop_activity (User|1|5),(Token|1|5),(Component Name|3)
+
+# The task is being removed from its parent stack
+30061 wm_remove_task (Task ID|1|5), (Stack ID|1|5)
+
+# An activity been add into stopping list
+30066 wm_add_to_stopping (User|1|5),(Token|1|5),(Component Name|3),(Reason|3)
+
+# Keyguard status changed
+30067 wm_set_keyguard_shown (keyguardShowing|1),(aodShowing|1),(keyguardGoingAway|1),(Reason|3)
+
+# Out of memory for surfaces.
+31000 wm_no_surface_memory (Window|3),(PID|1|5),(Operation|3)
+# Task created.
+31001 wm_task_created (TaskId|1|5),(StackId|1|5)
+# Task moved to top (1) or bottom (0).
+31002 wm_task_moved (TaskId|1|5),(ToTop|1),(Index|1)
+# Task removed with source explanation.
+31003 wm_task_removed (TaskId|1|5),(Reason|3)
+# Stack created.
+31004 wm_stack_created (StackId|1|5)
+# Home stack moved to top (1) or bottom (0).
+31005 wm_home_stack_moved (ToTop|1)
+# Stack removed.
+31006 wm_stack_removed (StackId|1|5)
+# bootanim finished:
+31007 wm_boot_animation_done (time|2|3)
+
diff --git a/services/core/java/com/android/server/wm/HighRefreshRateBlacklist.java b/services/core/java/com/android/server/wm/HighRefreshRateBlacklist.java
index 29b6bc4..d9cf637 100644
--- a/services/core/java/com/android/server/wm/HighRefreshRateBlacklist.java
+++ b/services/core/java/com/android/server/wm/HighRefreshRateBlacklist.java
@@ -105,8 +105,10 @@
private class OnPropertiesChangedListener implements DeviceConfig.OnPropertiesChangedListener {
public void onPropertiesChanged(@NonNull DeviceConfig.Properties properties) {
- updateBlacklist(
- properties.getString(KEY_HIGH_REFRESH_RATE_BLACKLIST, null /*default*/));
+ if (properties.getKeyset().contains(KEY_HIGH_REFRESH_RATE_BLACKLIST)) {
+ updateBlacklist(
+ properties.getString(KEY_HIGH_REFRESH_RATE_BLACKLIST, null /*default*/));
+ }
}
}
}
diff --git a/services/core/java/com/android/server/wm/InputManagerCallback.java b/services/core/java/com/android/server/wm/InputManagerCallback.java
index 2a6fb4a..1f9f883 100644
--- a/services/core/java/com/android/server/wm/InputManagerCallback.java
+++ b/services/core/java/com/android/server/wm/InputManagerCallback.java
@@ -20,6 +20,7 @@
import android.view.WindowManager;
import com.android.server.input.InputManagerService;
+import com.android.server.wm.EmbeddedWindowController.EmbeddedWindow;
import java.io.PrintWriter;
import java.util.concurrent.atomic.AtomicReference;
@@ -90,20 +91,39 @@
int windowPid = INVALID_PID;
//TODO(b/141764879) Limit scope of wm lock when input calls notifyANR
synchronized (mService.mGlobalLock) {
+
+ // Check if we can blame a window
if (token != null) {
windowState = mService.mInputToWindowMap.get(token);
if (windowState != null) {
activity = windowState.mActivityRecord;
windowPid = windowState.mSession.mPid;
- } else {
- // Check if this is an embedded window and if so get the embedded app pid
- windowPid = mService.mEmbeddedWindowController.getOwnerPid(token);
- WindowState hostWindowState =
- mService.mEmbeddedWindowController.getHostWindow(token);
- aboveSystem = isWindowAboveSystem(hostWindowState);
+ // Figure out whether this window is layered above system windows.
+ // We need to do this here to help the activity manager know how to
+ // layer its ANR dialog.
+ aboveSystem = isWindowAboveSystem(windowState);
}
}
+ // Check if we can blame an embedded window
+ if (token != null && windowState == null) {
+ EmbeddedWindow embeddedWindow = mService.mEmbeddedWindowController.get(token);
+ if (embeddedWindow != null) {
+ windowPid = embeddedWindow.mOwnerPid;
+ WindowState hostWindowState = embeddedWindow.mHostWindowState;
+ if (hostWindowState == null) {
+ // The embedded window has no host window and we cannot easily determine
+ // its z order. Try to place the anr dialog as high as possible.
+ aboveSystem = true;
+ } else {
+ aboveSystem = isWindowAboveSystem(hostWindowState);
+ }
+ }
+ }
+
+ // Check if we can blame an activity. If we don't have an activity to blame, pull out
+ // the token passed in via input application handle. This can happen if there are no
+ // focused windows but input dispatcher knows the focused app.
if (activity == null && inputApplicationHandle != null) {
activity = ActivityRecord.forTokenLocked(inputApplicationHandle.token);
}
@@ -112,10 +132,6 @@
Slog.i(TAG_WM, "Input event dispatching timed out "
+ "sending to " + windowState.mAttrs.getTitle()
+ ". Reason: " + reason);
- // Figure out whether this window is layered above system windows.
- // We need to do this here to help the activity manager know how to
- // layer its ANR dialog.
- aboveSystem = isWindowAboveSystem(windowState);
} else if (activity != null) {
Slog.i(TAG_WM, "Input event dispatching timed out "
+ "sending to application " + activity.stringName
diff --git a/services/core/java/com/android/server/wm/KeyguardController.java b/services/core/java/com/android/server/wm/KeyguardController.java
index 52cc422..7645de5 100644
--- a/services/core/java/com/android/server/wm/KeyguardController.java
+++ b/services/core/java/com/android/server/wm/KeyguardController.java
@@ -43,13 +43,11 @@
import android.os.IBinder;
import android.os.RemoteException;
import android.os.Trace;
-import android.util.EventLog;
import android.util.Slog;
import android.util.SparseArray;
import android.util.proto.ProtoOutputStream;
import com.android.internal.policy.IKeyguardDismissCallback;
-import com.android.server.am.EventLogTags;
import com.android.server.policy.WindowManagerPolicy;
import com.android.server.wm.ActivityTaskManagerInternal.SleepToken;
@@ -143,7 +141,7 @@
if (!keyguardChanged && !aodChanged) {
return;
}
- EventLog.writeEvent(EventLogTags.AM_SET_KEYGUARD_SHOWN,
+ EventLogTags.writeWmSetKeyguardShown(
keyguardShowing ? 1 : 0,
aodShowing ? 1 : 0,
mKeyguardGoingAway ? 1 : 0,
@@ -184,7 +182,7 @@
mService.deferWindowLayout();
try {
setKeyguardGoingAway(true);
- EventLog.writeEvent(EventLogTags.AM_SET_KEYGUARD_SHOWN,
+ EventLogTags.writeWmSetKeyguardShown(
1 /* keyguardShowing */,
mAodShowing ? 1 : 0,
1 /* keyguardGoingAway */,
@@ -198,8 +196,7 @@
// Some stack visibility might change (e.g. docked stack)
mRootActivityContainer.resumeFocusedStacksTopActivities();
mRootActivityContainer.ensureActivitiesVisible(null, 0, !PRESERVE_WINDOWS);
- mRootActivityContainer.addStartingWindowsForVisibleActivities(
- true /* taskSwitch */);
+ mRootActivityContainer.addStartingWindowsForVisibleActivities();
mWindowManager.executeAppTransition();
} finally {
mService.continueWindowLayout();
diff --git a/services/core/java/com/android/server/wm/PinnedStackController.java b/services/core/java/com/android/server/wm/PinnedStackController.java
index a5b1fda..0853f1f 100644
--- a/services/core/java/com/android/server/wm/PinnedStackController.java
+++ b/services/core/java/com/android/server/wm/PinnedStackController.java
@@ -236,10 +236,10 @@
/**
* Saves the current snap fraction for re-entry of the current activity into PiP.
*/
- void saveReentrySnapFraction(final ComponentName componentName, final Rect stackBounds) {
+ void saveReentryBounds(final ComponentName componentName, final Rect stackBounds) {
if (mPinnedStackListener == null) return;
try {
- mPinnedStackListener.onSaveReentrySnapFraction(componentName, stackBounds);
+ mPinnedStackListener.onSaveReentryBounds(componentName, stackBounds);
} catch (RemoteException e) {
Slog.e(TAG_WM, "Error delivering save reentry fraction event.", e);
}
@@ -248,10 +248,10 @@
/**
* Resets the last saved snap fraction so that the default bounds will be returned.
*/
- void resetReentrySnapFraction(ComponentName componentName) {
+ void resetReentryBounds(ComponentName componentName) {
if (mPinnedStackListener == null) return;
try {
- mPinnedStackListener.onResetReentrySnapFraction(componentName);
+ mPinnedStackListener.onResetReentryBounds(componentName);
} catch (RemoteException e) {
Slog.e(TAG_WM, "Error delivering reset reentry fraction event.", e);
}
diff --git a/services/core/java/com/android/server/wm/RecentsAnimation.java b/services/core/java/com/android/server/wm/RecentsAnimation.java
index 824a3c8..f4c867c 100644
--- a/services/core/java/com/android/server/wm/RecentsAnimation.java
+++ b/services/core/java/com/android/server/wm/RecentsAnimation.java
@@ -42,7 +42,10 @@
import android.util.Slog;
import android.view.IRecentsAnimationRunner;
+import com.android.internal.util.function.pooled.PooledLambda;
+import com.android.internal.util.function.pooled.PooledPredicate;
import com.android.server.protolog.common.ProtoLog;
+import com.android.server.wm.ActivityMetricsLogger.LaunchingState;
import com.android.server.wm.RecentsAnimationController.RecentsAnimationCallbacks;
/**
@@ -194,7 +197,8 @@
true /* forceSend */, targetActivity);
}
- mStackSupervisor.getActivityMetricsLogger().notifyActivityLaunching(mTargetIntent);
+ final LaunchingState launchingState =
+ mStackSupervisor.getActivityMetricsLogger().notifyActivityLaunching(mTargetIntent);
if (mCaller != null) {
mCaller.setRunningRecentsAnimation(true);
@@ -253,8 +257,8 @@
// we fetch the visible tasks to be controlled by the animation
mService.mRootActivityContainer.ensureActivitiesVisible(null, 0, PRESERVE_WINDOWS);
- mStackSupervisor.getActivityMetricsLogger().notifyActivityLaunched(START_TASK_TO_FRONT,
- targetActivity);
+ mStackSupervisor.getActivityMetricsLogger().notifyActivityLaunched(launchingState,
+ START_TASK_TO_FRONT, targetActivity);
// Register for stack order changes
mDefaultDisplay.registerStackOrderChangedListener(this);
@@ -490,13 +494,15 @@
return null;
}
- for (int i = targetStack.getChildCount() - 1; i >= 0; i--) {
- final Task task = targetStack.getChildAt(i);
- if (task.mUserId == mUserId
- && task.getBaseIntent().getComponent().equals(mTargetIntent.getComponent())) {
- return task.getTopNonFinishingActivity();
- }
- }
- return null;
+ final PooledPredicate p = PooledLambda.obtainPredicate(RecentsAnimation::matchesTarget,
+ this, PooledLambda.__(Task.class));
+ final Task task = targetStack.getTask(p);
+ p.recycle();
+ return task != null ? task.getTopNonFinishingActivity() : null;
+ }
+
+ private boolean matchesTarget(Task task) {
+ return task.mUserId == mUserId
+ && task.getBaseIntent().getComponent().equals(mTargetIntent.getComponent());
}
}
diff --git a/services/core/java/com/android/server/wm/RecentsAnimationController.java b/services/core/java/com/android/server/wm/RecentsAnimationController.java
index 282144e..39d08a2 100644
--- a/services/core/java/com/android/server/wm/RecentsAnimationController.java
+++ b/services/core/java/com/android/server/wm/RecentsAnimationController.java
@@ -16,7 +16,6 @@
package com.android.server.wm;
-import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY;
import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED;
import static android.view.RemoteAnimationTarget.MODE_CLOSING;
@@ -42,10 +41,10 @@
import android.os.IBinder.DeathRecipient;
import android.os.RemoteException;
import android.os.SystemClock;
+import android.util.ArrayMap;
import android.util.ArraySet;
import android.util.Slog;
import android.util.SparseBooleanArray;
-import android.util.SparseIntArray;
import android.util.proto.ProtoOutputStream;
import android.view.IRecentsAnimationController;
import android.view.IRecentsAnimationRunner;
@@ -55,6 +54,9 @@
import android.view.SurfaceControl.Transaction;
import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.util.function.pooled.PooledConsumer;
+import com.android.internal.util.function.pooled.PooledFunction;
+import com.android.internal.util.function.pooled.PooledLambda;
import com.android.server.LocalServices;
import com.android.server.inputmethod.InputMethodManagerInternal;
import com.android.server.protolog.common.ProtoLog;
@@ -369,13 +371,13 @@
final ActivityStack targetStack = mDisplayContent.getStack(WINDOWING_MODE_UNDEFINED,
targetActivityType);
if (targetStack != null) {
- for (int i = targetStack.getChildCount() - 1; i >= 0; i--) {
- final Task t = targetStack.getChildAt(i);
- if (!visibleTasks.contains(t)) {
- visibleTasks.add(t);
- }
- }
+ final PooledConsumer c = PooledLambda.obtainConsumer((t, outList) ->
+ { if (!outList.contains(t)) outList.add(t); }, PooledLambda.__(Task.class),
+ visibleTasks);
+ targetStack.forAllTasks(c);
+ c.recycle();
}
+
final int taskCount = visibleTasks.size();
for (int i = 0; i < taskCount; i++) {
final Task task = visibleTasks.get(i);
@@ -499,10 +501,13 @@
} catch (RemoteException e) {
Slog.e(TAG, "Failed to start recents animation", e);
}
- final SparseIntArray reasons = new SparseIntArray();
- reasons.put(WINDOWING_MODE_FULLSCREEN, APP_TRANSITION_RECENTS_ANIM);
- mService.mAtmInternal
- .notifyAppTransitionStarting(reasons, SystemClock.elapsedRealtimeNanos());
+
+ if (mTargetActivityRecord != null) {
+ final ArrayMap<ActivityRecord, Integer> reasons = new ArrayMap<>(1);
+ reasons.put(mTargetActivityRecord, APP_TRANSITION_RECENTS_ANIM);
+ mService.mAtmService.mStackSupervisor.getActivityMetricsLogger()
+ .notifyTransitionStarting(reasons);
+ }
}
private RemoteAnimationTarget[] createAppAnimations() {
@@ -800,12 +805,12 @@
private boolean isAnimatingApp(ActivityRecord activity) {
for (int i = mPendingAnimations.size() - 1; i >= 0; i--) {
final Task task = mPendingAnimations.get(i).mTask;
- for (int j = task.getChildCount() - 1; j >= 0; j--) {
- final ActivityRecord app = task.getChildAt(j);
- if (app == activity) {
- return true;
- }
- }
+ final PooledFunction f = PooledLambda.obtainFunction(
+ (a, b) -> a == b, activity,
+ PooledLambda.__(ActivityRecord.class));
+ boolean isAnimatingApp = task.forAllActivities(f);
+ f.recycle();
+ return isAnimatingApp;
}
return false;
}
diff --git a/services/core/java/com/android/server/wm/ResetTargetTaskHelper.java b/services/core/java/com/android/server/wm/ResetTargetTaskHelper.java
index fe91ba5..3aa91d5 100644
--- a/services/core/java/com/android/server/wm/ResetTargetTaskHelper.java
+++ b/services/core/java/com/android/server/wm/ResetTargetTaskHelper.java
@@ -77,10 +77,10 @@
}
private void processTask(Task task) {
+ reset(task);
mRoot = task.getRootActivity(true);
if (mRoot == null) return;
- reset(task);
final boolean isTargetTask = task == mTargetTask;
if (isTargetTask) mTargetTaskFound = true;
@@ -125,8 +125,7 @@
// TODO: We should probably look for other stacks also, since corresponding
// task with the same affinity is unlikely to be in the same stack.
final Task targetTask;
- final ActivityRecord bottom = mParent.getActivity(
- (ar) -> true, false /*traverseTopToBottom*/);
+ final ActivityRecord bottom = mParent.getBottomMostActivity();
if (bottom != null && r.taskAffinity.equals(bottom.getTask().affinity)) {
// If the activity currently at the bottom has the same task affinity as
@@ -210,10 +209,8 @@
// we have put it on top of another instance of the same activity? Then we drop
// the instance below so it remains singleTop.
if (r.info.launchMode == ActivityInfo.LAUNCH_SINGLE_TOP) {
- final ArrayList<ActivityRecord> taskActivities = mTargetTask.mChildren;
- final int targetNdx = taskActivities.indexOf(r);
- if (targetNdx > 0) {
- final ActivityRecord p = taskActivities.get(targetNdx - 1);
+ final ActivityRecord p = mTargetTask.getActivityBelow(r);
+ if (p != null) {
if (p.intent.getComponent().equals(r.intent.getComponent())) {
p.finishIfPossible("replace", false /* oomAdj */);
}
diff --git a/services/core/java/com/android/server/wm/RootActivityContainer.java b/services/core/java/com/android/server/wm/RootActivityContainer.java
index 8f1d6ee..5fd59fa 100644
--- a/services/core/java/com/android/server/wm/RootActivityContainer.java
+++ b/services/core/java/com/android/server/wm/RootActivityContainer.java
@@ -33,6 +33,7 @@
import static android.content.pm.ActivityInfo.LAUNCH_SINGLE_TASK;
import static android.view.Display.DEFAULT_DISPLAY;
import static android.view.Display.INVALID_DISPLAY;
+import static android.view.WindowManager.TRANSIT_CRASHING_ACTIVITY_CLOSE;
import static android.view.WindowManager.TRANSIT_SHOW_SINGLE_TASK_DISPLAY;
import static com.android.server.am.ActivityStackSupervisorProto.CONFIGURATION_CONTAINER;
@@ -86,6 +87,7 @@
import android.hardware.display.DisplayManager;
import android.hardware.display.DisplayManagerInternal;
import android.hardware.power.V1_0.PowerHint;
+import android.net.Uri;
import android.os.FactoryTest;
import android.os.IBinder;
import android.os.RemoteException;
@@ -108,6 +110,11 @@
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.app.ResolverActivity;
+import com.android.internal.util.ToBooleanFunction;
+import com.android.internal.util.function.pooled.PooledConsumer;
+import com.android.internal.util.function.pooled.PooledFunction;
+import com.android.internal.util.function.pooled.PooledLambda;
+import com.android.internal.util.function.pooled.PooledPredicate;
import com.android.server.LocalServices;
import com.android.server.am.ActivityManagerService;
import com.android.server.am.AppTimeTracker;
@@ -121,6 +128,7 @@
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
+import java.util.Objects;
import java.util.Set;
/**
@@ -201,14 +209,46 @@
// Whether tasks have moved and we need to rank the tasks before next OOM scoring
private boolean mTaskLayersChanged = true;
+ private int mTmpTaskLayerRank;
- private final ArrayList<ActivityRecord> mTmpActivityList = new ArrayList<>();
+ private boolean mTmpBoolean;
+ private RemoteException mTmpRemoteException;
private final FindTaskResult mTmpFindTaskResult = new FindTaskResult();
- static class FindTaskResult {
+ static class FindTaskResult implements ToBooleanFunction<Task> {
ActivityRecord mRecord;
boolean mIdealMatch;
+ private ActivityRecord mTarget;
+ private Intent intent;
+ private ActivityInfo info;
+ private ComponentName cls;
+ private int userId;
+ private boolean isDocument;
+ private Uri documentData;
+
+ /**
+ * Returns the top activity in any existing task matching the given Intent in the input
+ * result. Returns null if no such task is found.
+ */
+ void process(ActivityRecord target, ActivityStack parent) {
+ mTarget = target;
+
+ intent = target.intent;
+ info = target.info;
+ cls = intent.getComponent();
+ if (info.targetActivity != null) {
+ cls = new ComponentName(info.packageName, info.targetActivity);
+ }
+ userId = UserHandle.getUserId(info.applicationInfo.uid);
+ isDocument = intent != null & intent.isDocument();
+ // If documentData is non-null then it must match the existing task data.
+ documentData = isDocument ? intent.getData() : null;
+
+ if (DEBUG_TASKS) Slog.d(TAG_TASKS, "Looking for task of " + target + " in " + parent);
+ parent.forAllTasks(this);
+ }
+
void clear() {
mRecord = null;
mIdealMatch = false;
@@ -218,6 +258,84 @@
mRecord = result.mRecord;
mIdealMatch = result.mIdealMatch;
}
+
+ @Override
+ public boolean apply(Task task) {
+ if (task.voiceSession != null) {
+ // We never match voice sessions; those always run independently.
+ if (DEBUG_TASKS) Slog.d(TAG_TASKS, "Skipping " + task + ": voice session");
+ return false;
+ }
+ if (task.mUserId != userId) {
+ // Looking for a different task.
+ if (DEBUG_TASKS) Slog.d(TAG_TASKS, "Skipping " + task + ": different user");
+ return false;
+ }
+
+ // Overlays should not be considered as the task's logical top activity.
+ final ActivityRecord r = task.getTopNonFinishingActivity(false /* includeOverlays */);
+ if (r == null || r.finishing || r.mUserId != userId ||
+ r.launchMode == ActivityInfo.LAUNCH_SINGLE_INSTANCE) {
+ if (DEBUG_TASKS) Slog.d(TAG_TASKS, "Skipping " + task + ": mismatch root " + r);
+ return false;
+ }
+ if (!r.hasCompatibleActivityType(mTarget)) {
+ if (DEBUG_TASKS) Slog.d(TAG_TASKS, "Skipping " + task + ": mismatch activity type");
+ return false;
+ }
+
+ final Intent taskIntent = task.intent;
+ final Intent affinityIntent = task.affinityIntent;
+ final boolean taskIsDocument;
+ final Uri taskDocumentData;
+ if (taskIntent != null && taskIntent.isDocument()) {
+ taskIsDocument = true;
+ taskDocumentData = taskIntent.getData();
+ } else if (affinityIntent != null && affinityIntent.isDocument()) {
+ taskIsDocument = true;
+ taskDocumentData = affinityIntent.getData();
+ } else {
+ taskIsDocument = false;
+ taskDocumentData = null;
+ }
+
+ if (DEBUG_TASKS) Slog.d(TAG_TASKS, "Comparing existing cls="
+ + (task.realActivity != null ? task.realActivity.flattenToShortString() : "")
+ + "/aff=" + r.getTask().rootAffinity + " to new cls="
+ + intent.getComponent().flattenToShortString() + "/aff=" + info.taskAffinity);
+ // TODO Refactor to remove duplications. Check if logic can be simplified.
+ if (task.realActivity != null && task.realActivity.compareTo(cls) == 0
+ && Objects.equals(documentData, taskDocumentData)) {
+ if (DEBUG_TASKS) Slog.d(TAG_TASKS, "Found matching class!");
+ //dump();
+ if (DEBUG_TASKS) Slog.d(TAG_TASKS,
+ "For Intent " + intent + " bringing to top: " + r.intent);
+ mRecord = r;
+ mIdealMatch = true;
+ return true;
+ } else if (affinityIntent != null && affinityIntent.getComponent() != null &&
+ affinityIntent.getComponent().compareTo(cls) == 0 &&
+ Objects.equals(documentData, taskDocumentData)) {
+ if (DEBUG_TASKS) Slog.d(TAG_TASKS, "Found matching class!");
+ if (DEBUG_TASKS) Slog.d(TAG_TASKS,
+ "For Intent " + intent + " bringing to top: " + r.intent);
+ mRecord = r;
+ mIdealMatch = true;
+ return true;
+ } else if (!isDocument && !taskIsDocument
+ && mRecord == null && task.rootAffinity != null) {
+ if (task.rootAffinity.equals(mTarget.taskAffinity)) {
+ if (DEBUG_TASKS) Slog.d(TAG_TASKS, "Found matching affinity candidate!");
+ // It is possible for multiple tasks to have the same root affinity especially
+ // if they are in separate stacks. We save off this candidate, but keep looking
+ // to see if there is a better candidate.
+ mRecord = r;
+ mIdealMatch = false;
+ }
+ } else if (DEBUG_TASKS) Slog.d(TAG_TASKS, "Not a match: " + task);
+
+ return false;
+ }
}
RootActivityContainer(ActivityTaskManagerService service) {
@@ -772,27 +890,21 @@
for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) {
final ActivityDisplay display = mActivityDisplays.get(displayNdx);
final ActivityStack stack = display.getFocusedStack();
- if (stack != null) {
- stack.getAllRunningVisibleActivitiesLocked(mTmpActivityList);
- final ActivityRecord top = stack.topRunningActivityLocked();
- final int size = mTmpActivityList.size();
- for (int i = 0; i < size; i++) {
- final ActivityRecord activity = mTmpActivityList.get(i);
- if (activity.app == null && app.mUid == activity.info.applicationInfo.uid
- && processName.equals(activity.processName)) {
- try {
- if (mStackSupervisor.realStartActivityLocked(activity, app,
- top == activity /* andResume */, true /* checkConfig */)) {
- didSomething = true;
- }
- } catch (RemoteException e) {
- Slog.w(TAG, "Exception in new application when starting activity "
- + top.intent.getComponent().flattenToShortString(), e);
- throw e;
- }
- }
- }
+ if (stack == null) {
+ continue;
}
+
+ mTmpRemoteException = null;
+ mTmpBoolean = false; // Set to true if an activity was started.
+ final PooledFunction c = PooledLambda.obtainFunction(
+ RootActivityContainer::startActivityForAttachedApplicationIfNeeded, this,
+ PooledLambda.__(ActivityRecord.class), app, stack.topRunningActivityLocked());
+ stack.forAllActivities(c);
+ c.recycle();
+ if (mTmpRemoteException != null) {
+ throw mTmpRemoteException;
+ }
+ didSomething |= mTmpBoolean;
}
if (!didSomething) {
ensureActivitiesVisible(null, 0, false /* preserve_windows */);
@@ -800,6 +912,27 @@
return didSomething;
}
+ private boolean startActivityForAttachedApplicationIfNeeded(ActivityRecord r,
+ WindowProcessController app, ActivityRecord top) {
+ if (r.finishing || !r.okToShowLocked() || !r.visibleIgnoringKeyguard || r.app != null
+ || app.mUid != r.info.applicationInfo.uid || !app.mName.equals(r.processName)) {
+ return false;
+ }
+
+ try {
+ if (mStackSupervisor.realStartActivityLocked(r, app, top == r /*andResume*/,
+ true /*checkConfig*/)) {
+ mTmpBoolean = true;
+ }
+ } catch (RemoteException e) {
+ Slog.w(TAG, "Exception in new application when starting activity "
+ + top.intent.getComponent().flattenToShortString(), e);
+ mTmpRemoteException = e;
+ return true;
+ }
+ return false;
+ }
+
/**
* Make sure that all activities that need to be visible in the system actually are and update
* their configuration.
@@ -1526,14 +1659,12 @@
}
}
- void addStartingWindowsForVisibleActivities(boolean taskSwitch) {
- for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) {
- final ActivityDisplay display = mActivityDisplays.get(displayNdx);
- for (int stackNdx = display.getChildCount() - 1; stackNdx >= 0; --stackNdx) {
- final ActivityStack stack = display.getChildAt(stackNdx);
- stack.addStartingWindowsForVisibleActivities(taskSwitch);
+ void addStartingWindowsForVisibleActivities() {
+ mRootWindowContainer.forAllActivities((r) -> {
+ if (r.mVisibleRequested) {
+ r.showStartingWindow(null /* prev */, false /* newTask */, true /*taskSwitch*/);
}
- }
+ });
}
void invalidateTaskLayers() {
@@ -1541,27 +1672,37 @@
}
void rankTaskLayersIfNeeded() {
- if (!mTaskLayersChanged) {
+ if (!mTaskLayersChanged || mRootWindowContainer == null) {
return;
}
mTaskLayersChanged = false;
- for (int displayNdx = 0; displayNdx < mActivityDisplays.size(); displayNdx++) {
- final ActivityDisplay display = mActivityDisplays.get(displayNdx);
- int baseLayer = 0;
- for (int stackNdx = display.getChildCount() - 1; stackNdx >= 0; --stackNdx) {
- final ActivityStack stack = display.getChildAt(stackNdx);
- baseLayer += stack.rankTaskLayers(baseLayer);
- }
+ mTmpTaskLayerRank = 0;
+ final PooledConsumer c = PooledLambda.obtainConsumer(
+ RootActivityContainer::rankTaskLayerForActivity, this,
+ PooledLambda.__(ActivityRecord.class));
+ mRootWindowContainer.forAllActivities(c);
+ c.recycle();
+ }
+
+ private void rankTaskLayerForActivity(ActivityRecord r) {
+ if (r.canBeTopRunning() && r.mVisibleRequested) {
+ r.getTask().mLayerRank = ++mTmpTaskLayerRank;
+ } else {
+ r.getTask().mLayerRank = -1;
}
}
void clearOtherAppTimeTrackers(AppTimeTracker except) {
- for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) {
- final ActivityDisplay display = mActivityDisplays.get(displayNdx);
- for (int stackNdx = display.getChildCount() - 1; stackNdx >= 0; --stackNdx) {
- final ActivityStack stack = display.getChildAt(stackNdx);
- stack.clearOtherAppTimeTrackers(except);
- }
+ final PooledConsumer c = PooledLambda.obtainConsumer(
+ RootActivityContainer::clearOtherAppTimeTrackers,
+ PooledLambda.__(ActivityRecord.class), except);
+ mRootWindowContainer.forAllActivities(c);
+ c.recycle();
+ }
+
+ private static void clearOtherAppTimeTrackers(ActivityRecord r, AppTimeTracker except) {
+ if ( r.appTimeTracker != except) {
+ r.appTimeTracker = null;
}
}
@@ -1575,30 +1716,6 @@
}
}
- void releaseSomeActivitiesLocked(WindowProcessController app, String reason) {
- // Tasks is non-null only if two or more tasks are found.
- ArraySet<Task> tasks = app.getReleaseSomeActivitiesTasks();
- if (tasks == null) {
- if (DEBUG_RELEASE) Slog.d(TAG_RELEASE, "Didn't find two or more tasks to release");
- return;
- }
- // If we have activities in multiple tasks that are in a position to be destroyed,
- // let's iterate through the tasks and release the oldest one.
- final int numDisplays = mActivityDisplays.size();
- for (int displayNdx = 0; displayNdx < numDisplays; ++displayNdx) {
- final ActivityDisplay display = mActivityDisplays.get(displayNdx);
- final int stackCount = display.getChildCount();
- // Step through all stacks starting from behind, to hit the oldest things first.
- for (int stackNdx = 0; stackNdx < stackCount; stackNdx++) {
- final ActivityStack stack = display.getChildAt(stackNdx);
- // Try to release activities in this stack; if we manage to, we are done.
- if (stack.releaseSomeActivitiesLocked(app, tasks, reason) > 0) {
- return;
- }
- }
- }
- }
-
// Tries to put all activity stacks to sleep. Returns true if all stacks were
// successfully put to sleep.
boolean putStacksToSleep(boolean allowDelay, boolean shuttingDown) {
@@ -1625,28 +1742,52 @@
}
void handleAppCrash(WindowProcessController app) {
- for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) {
- final ActivityDisplay display = mActivityDisplays.get(displayNdx);
- for (int stackNdx = display.getChildCount() - 1; stackNdx >= 0; --stackNdx) {
- final ActivityStack stack = display.getChildAt(stackNdx);
- stack.handleAppCrash(app);
- }
- }
+ final PooledConsumer c = PooledLambda.obtainConsumer(
+ RootActivityContainer::handleAppCrash, PooledLambda.__(ActivityRecord.class), app);
+ mRootWindowContainer.forAllActivities(c);
+ c.recycle();
+ }
+
+ private static void handleAppCrash(ActivityRecord r, WindowProcessController app) {
+ if (r.app != app) return;
+ Slog.w(TAG, " Force finishing activity "
+ + r.intent.getComponent().flattenToShortString());
+ // Force the destroy to skip right to removal.
+ r.app = null;
+ r.getDisplay().mDisplayContent.prepareAppTransition(
+ TRANSIT_CRASHING_ACTIVITY_CLOSE, false /* alwaysKeepCurrent */);
+ r.destroyIfPossible("handleAppCrashed");
}
ActivityRecord findActivity(Intent intent, ActivityInfo info, boolean compareIntentFilters) {
- for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) {
- final ActivityDisplay display = mActivityDisplays.get(displayNdx);
- for (int stackNdx = display.getChildCount() - 1; stackNdx >= 0; --stackNdx) {
- final ActivityStack stack = display.getChildAt(stackNdx);
- final ActivityRecord ar = stack.findActivityLocked(
- intent, info, compareIntentFilters);
- if (ar != null) {
- return ar;
- }
+ ComponentName cls = intent.getComponent();
+ if (info.targetActivity != null) {
+ cls = new ComponentName(info.packageName, info.targetActivity);
+ }
+ final int userId = UserHandle.getUserId(info.applicationInfo.uid);
+
+ final PooledPredicate p = PooledLambda.obtainPredicate(
+ RootActivityContainer::matchesActivity, PooledLambda.__(ActivityRecord.class),
+ userId, compareIntentFilters, intent, cls);
+ final ActivityRecord r = mRootWindowContainer.getActivity(p);
+ p.recycle();
+ return r;
+ }
+
+ private static boolean matchesActivity(ActivityRecord r, int userId,
+ boolean compareIntentFilters, Intent intent, ComponentName cls) {
+ if (!r.canBeTopRunning() || r.mUserId != userId) return false;
+
+ if (compareIntentFilters) {
+ if (r.intent.filterEquals(intent)) {
+ return true;
+ }
+ } else {
+ if (r.intent.getComponent().equals(cls)) {
+ return true;
}
}
- return null;
+ return false;
}
boolean hasAwakeDisplay() {
@@ -1978,39 +2119,104 @@
}
void closeSystemDialogs() {
- for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) {
- final ActivityDisplay display = mActivityDisplays.get(displayNdx);
- for (int stackNdx = display.getChildCount() - 1; stackNdx >= 0; --stackNdx) {
- final ActivityStack stack = display.getChildAt(stackNdx);
- stack.closeSystemDialogsLocked();
+ mRootWindowContainer.forAllActivities((r) -> {
+ if ((r.info.flags & ActivityInfo.FLAG_FINISH_ON_CLOSE_SYSTEM_DIALOGS) != 0) {
+ r.finishIfPossible("close-sys", true /* oomAdj */);
}
+ });
+ }
+
+ FinishDisabledPackageActivitiesHelper mFinishDisabledPackageActivitiesHelper =
+ new FinishDisabledPackageActivitiesHelper();
+ class FinishDisabledPackageActivitiesHelper {
+ private boolean mDidSomething;
+ private String mPackageName;
+ private Set<String> mFilterByClasses;
+ private boolean mDoit;
+ private boolean mEvenPersistent;
+ private int mUserId;
+ private Task mLastTask;
+ private ComponentName mHomeActivity;
+
+ private void reset(String packageName, Set<String> filterByClasses,
+ boolean doit, boolean evenPersistent, int userId) {
+ mDidSomething = false;
+ mPackageName = packageName;
+ mFilterByClasses = filterByClasses;
+ mDoit = doit;
+ mEvenPersistent = evenPersistent;
+ mUserId = userId;
+ mLastTask = null;
+ mHomeActivity = null;
+ }
+
+ boolean process(String packageName, Set<String> filterByClasses,
+ boolean doit, boolean evenPersistent, int userId) {
+ reset(packageName, filterByClasses, doit, evenPersistent, userId);
+
+ final PooledFunction f = PooledLambda.obtainFunction(
+ FinishDisabledPackageActivitiesHelper::processActivity, this,
+ PooledLambda.__(ActivityRecord.class));
+ mRootWindowContainer.forAllActivities(f);
+ f.recycle();
+ return mDidSomething;
+ }
+
+ private boolean processActivity(ActivityRecord r) {
+ final boolean sameComponent =
+ (r.packageName.equals(mPackageName) && (mFilterByClasses == null
+ || mFilterByClasses.contains(r.mActivityComponent.getClassName())))
+ || (mPackageName == null && r.mUserId == mUserId);
+ if ((mUserId == UserHandle.USER_ALL || r.mUserId == mUserId)
+ && (sameComponent || r.getTask() == mLastTask)
+ && (r.app == null || mEvenPersistent || !r.app.isPersistent())) {
+ if (!mDoit) {
+ if (r.finishing) {
+ // If this activity is just finishing, then it is not
+ // interesting as far as something to stop.
+ return false;
+ }
+ return true;
+ }
+ if (r.isActivityTypeHome()) {
+ if (mHomeActivity != null && mHomeActivity.equals(r.mActivityComponent)) {
+ Slog.i(TAG, "Skip force-stop again " + r);
+ return false;
+ } else {
+ mHomeActivity = r.mActivityComponent;
+ }
+ }
+ mDidSomething = true;
+ Slog.i(TAG, " Force finishing activity " + r);
+ mLastTask = r.getTask();
+ r.finishIfPossible("force-stop", true);
+ }
+
+ return false;
}
}
/** @return true if some activity was finished (or would have finished if doit were true). */
boolean finishDisabledPackageActivities(String packageName, Set<String> filterByClasses,
boolean doit, boolean evenPersistent, int userId) {
- boolean didSomething = false;
- for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) {
- final ActivityDisplay display = mActivityDisplays.get(displayNdx);
- for (int stackNdx = display.getChildCount() - 1; stackNdx >= 0; --stackNdx) {
- final ActivityStack stack = display.getChildAt(stackNdx);
- if (stack.finishDisabledPackageActivitiesLocked(
- packageName, filterByClasses, doit, evenPersistent, userId)) {
- didSomething = true;
- }
- }
- }
- return didSomething;
+ return mFinishDisabledPackageActivitiesHelper.process(packageName, filterByClasses, doit,
+ evenPersistent, userId);
}
void updateActivityApplicationInfo(ApplicationInfo aInfo) {
- for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) {
- final ActivityDisplay display = mActivityDisplays.get(displayNdx);
- for (int stackNdx = display.getChildCount() - 1; stackNdx >= 0; --stackNdx) {
- final ActivityStack stack = display.getChildAt(stackNdx);
- stack.updateActivityApplicationInfoLocked(aInfo);
- }
+ final String packageName = aInfo.packageName;
+ final int userId = UserHandle.getUserId(aInfo.uid);
+ final PooledConsumer c = PooledLambda.obtainConsumer(
+ RootActivityContainer::updateActivityApplicationInfo,
+ PooledLambda.__(ActivityRecord.class), aInfo, userId, packageName);
+ mRootWindowContainer.forAllActivities(c);
+ c.recycle();
+ }
+
+ private static void updateActivityApplicationInfo(
+ ActivityRecord r, ApplicationInfo aInfo, int userId, String packageName) {
+ if (r.mUserId == userId && packageName.equals(r.packageName)) {
+ r.updateApplicationInfo(aInfo);
}
}
@@ -2063,7 +2269,7 @@
// If the focused stack is not null or not empty, there should have some activities
// resuming or resumed. Make sure these activities are idle.
final ActivityStack stack = display.getFocusedStack();
- if (stack == null || stack.numActivities() == 0) {
+ if (stack == null || !stack.hasActivity()) {
continue;
}
final ActivityRecord resumedActivity = stack.getResumedActivity();
diff --git a/services/core/java/com/android/server/wm/RootWindowContainer.java b/services/core/java/com/android/server/wm/RootWindowContainer.java
index 565f95e..5ec9599 100644
--- a/services/core/java/com/android/server/wm/RootWindowContainer.java
+++ b/services/core/java/com/android/server/wm/RootWindowContainer.java
@@ -68,7 +68,6 @@
import android.os.Trace;
import android.os.UserHandle;
import android.util.ArraySet;
-import android.util.EventLog;
import android.util.Slog;
import android.util.SparseIntArray;
import android.util.proto.ProtoOutputStream;
@@ -77,7 +76,6 @@
import android.view.SurfaceControl;
import android.view.WindowManager;
-import com.android.server.EventLogTags;
import com.android.server.protolog.common.ProtoLog;
import java.io.PrintWriter;
@@ -488,10 +486,8 @@
final WindowSurfaceController surfaceController = winAnimator.mSurfaceController;
boolean leakedSurface = false;
boolean killedApps = false;
-
- EventLog.writeEvent(EventLogTags.WM_NO_SURFACE_MEMORY, winAnimator.mWin.toString(),
+ EventLogTags.writeWmNoSurfaceMemory(winAnimator.mWin.toString(),
winAnimator.mSession.mPid, operation);
-
final long callingIdentity = Binder.clearCallingIdentity();
try {
// There was some problem...first, do a sanity check of the window list to make sure
diff --git a/services/core/java/com/android/server/wm/Session.java b/services/core/java/com/android/server/wm/Session.java
index c0432b6..a175d63 100644
--- a/services/core/java/com/android/server/wm/Session.java
+++ b/services/core/java/com/android/server/wm/Session.java
@@ -621,8 +621,15 @@
return false;
}
+ @Override
public void grantInputChannel(int displayId, SurfaceControl surface,
IWindow window, IBinder hostInputToken, InputChannel outInputChannel) {
+ if (hostInputToken == null && !mCanAddInternalSystemWindow) {
+ // Callers without INTERNAL_SYSTEM_WINDOW permission cannot grant input channel to
+ // embedded windows without providing a host window input token
+ throw new SecurityException("Requires INTERNAL_SYSTEM_WINDOW permission");
+ }
+
final long identity = Binder.clearCallingIdentity();
try {
mService.grantInputChannel(mUid, mPid, displayId, surface, window,
diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java
index 3b16b59..88a38e0 100644
--- a/services/core/java/com/android/server/wm/Task.java
+++ b/services/core/java/com/android/server/wm/Task.java
@@ -56,8 +56,6 @@
import static android.view.Display.DEFAULT_DISPLAY;
import static android.view.SurfaceControl.METADATA_TASK_ID;
-import static com.android.server.EventLogTags.WM_TASK_CREATED;
-import static com.android.server.EventLogTags.WM_TASK_REMOVED;
import static com.android.server.am.TaskRecordProto.ACTIVITIES;
import static com.android.server.am.TaskRecordProto.ACTIVITY_TYPE;
import static com.android.server.am.TaskRecordProto.FULLSCREEN;
@@ -69,7 +67,6 @@
import static com.android.server.am.TaskRecordProto.RESIZE_MODE;
import static com.android.server.am.TaskRecordProto.STACK_ID;
import static com.android.server.am.TaskRecordProto.TASK;
-import static com.android.server.wm.ActivityRecord.FINISH_RESULT_REMOVED;
import static com.android.server.wm.ActivityRecord.STARTING_WINDOW_SHOWN;
import static com.android.server.wm.ActivityStackSupervisor.ON_TOP;
import static com.android.server.wm.ActivityStackSupervisor.PRESERVE_WINDOWS;
@@ -128,7 +125,6 @@
import android.provider.Settings;
import android.service.voice.IVoiceInteractionSession;
import android.util.DisplayMetrics;
-import android.util.EventLog;
import android.util.Slog;
import android.util.proto.ProtoOutputStream;
import android.view.Display;
@@ -141,6 +137,10 @@
import com.android.internal.app.IVoiceInteractor;
import com.android.internal.util.ToBooleanFunction;
import com.android.internal.util.XmlUtils;
+import com.android.internal.util.function.pooled.PooledConsumer;
+import com.android.internal.util.function.pooled.PooledFunction;
+import com.android.internal.util.function.pooled.PooledLambda;
+import com.android.internal.util.function.pooled.PooledPredicate;
import com.android.server.protolog.common.ProtoLog;
import com.android.server.wm.ActivityStack.ActivityState;
@@ -155,8 +155,9 @@
import java.util.ArrayList;
import java.util.Objects;
import java.util.function.Consumer;
+import java.util.function.Predicate;
-class Task extends WindowContainer<ActivityRecord> implements ConfigurationContainerListener {
+class Task extends WindowContainer<WindowContainer> {
private static final String TAG = TAG_WITH_CLASS_NAME ? "Task" : TAG_ATM;
private static final String TAG_ADD_REMOVE = TAG + POSTFIX_ADD_REMOVE;
private static final String TAG_RECENTS = TAG + POSTFIX_RECENTS;
@@ -385,6 +386,44 @@
/** @see #setCanAffectSystemUiFlags */
private boolean mCanAffectSystemUiFlags = true;
+ private static Exception sTmpException;
+
+ private final FindRootHelper mFindRootHelper = new FindRootHelper();
+ private class FindRootHelper {
+ private ActivityRecord mRoot;
+
+ private void clear() {
+ mRoot = null;
+ }
+
+ ActivityRecord findRoot(boolean ignoreRelinquishIdentity, boolean setToBottomIfNone) {
+ final PooledFunction f = PooledLambda.obtainFunction(FindRootHelper::processActivity,
+ this, PooledLambda.__(ActivityRecord.class), ignoreRelinquishIdentity,
+ setToBottomIfNone);
+ clear();
+ forAllActivities(f, false /*traverseTopToBottom*/);
+ f.recycle();
+ return mRoot;
+ }
+
+ private boolean processActivity(ActivityRecord r,
+ boolean ignoreRelinquishIdentity, boolean setToBottomIfNone) {
+ if (mRoot == null && setToBottomIfNone) {
+ // This is the first activity we are process. Set it as the candidate root in case
+ // we don't find a better one.
+ mRoot = r;
+ }
+
+ if (r.finishing) return false;
+
+ // Set this as the candidate root since it isn't finishing.
+ mRoot = r;
+
+ // Only end search if we are ignore relinquishing identity or we are not relinquishing.
+ return ignoreRelinquishIdentity || (r.info.flags & FLAG_RELINQUISH_TASK_IDENTITY) == 0;
+ }
+ }
+
/**
* Don't use constructor directly. Use {@link #create(ActivityTaskManagerService, int,
* ActivityInfo, Intent, TaskDescription)} instead.
@@ -421,8 +460,7 @@
ActivityStack stack) {
super(atmService.mWindowManager);
- EventLog.writeEvent(WM_TASK_CREATED, _taskId,
- stack != null ? stack.mStackId : INVALID_STACK_ID);
+ EventLogTags.writeWmTaskCreated(_taskId, stack != null ? stack.mStackId : INVALID_STACK_ID);
mAtmService = atmService;
mTaskId = _taskId;
mUserId = _userId;
@@ -468,7 +506,7 @@
mAtmService.getTaskChangeNotificationController().notifyTaskCreated(_taskId, realActivity);
}
- void cleanUpResourcesForDestroy() {
+ private void cleanUpResourcesForDestroy() {
if (hasChild()) {
return;
}
@@ -935,10 +973,11 @@
super.onParentChanged(newParent, oldParent);
if (oldStack != null) {
- for (int i = getChildCount() - 1; i >= 0; --i) {
- final ActivityRecord activity = getChildAt(i);
- oldStack.onActivityRemovedFromStack(activity);
- }
+ final PooledConsumer c = PooledLambda.obtainConsumer(
+ ActivityStack::onActivityRemovedFromStack, oldStack,
+ PooledLambda.__(ActivityRecord.class));
+ forAllActivities(c);
+ c.recycle();
if (oldStack.inPinnedWindowingMode()
&& (newStack == null || !newStack.inPinnedWindowingMode())) {
@@ -949,10 +988,11 @@
}
if (newStack != null) {
- for (int i = getChildCount() - 1; i >= 0; --i) {
- final ActivityRecord activity = getChildAt(i);
- newStack.onActivityAddedToStack(activity);
- }
+ final PooledConsumer c = PooledLambda.obtainConsumer(
+ ActivityStack::onActivityAddedToStack, newStack,
+ PooledLambda.__(ActivityRecord.class));
+ forAllActivities(c);
+ c.recycle();
// TODO: Ensure that this is actually necessary here
// Notify the voice session if required
@@ -1072,25 +1112,11 @@
}
ActivityRecord getRootActivity(boolean setToBottomIfNone) {
- return getRootActivity(false /*ignoreRelinquishIdentity*/, false /*setToBottomIfNone*/);
+ return getRootActivity(false /*ignoreRelinquishIdentity*/, setToBottomIfNone);
}
ActivityRecord getRootActivity(boolean ignoreRelinquishIdentity, boolean setToBottomIfNone) {
- ActivityRecord root;
- if (ignoreRelinquishIdentity) {
- root = getActivity((r) -> !r.finishing, false /*traverseTopToBottom*/);
- } else {
- root = getActivity((r) ->
- !r.finishing && (r.info.flags & FLAG_RELINQUISH_TASK_IDENTITY) == 0,
- false /*traverseTopToBottom*/);
- }
-
- if (root == null && setToBottomIfNone) {
- // All activities in the task are either finishing or relinquish task identity.
- // But we still want to update the intent, so let's use the bottom activity.
- root = getActivity((r) -> true, false /*traverseTopToBottom*/);
- }
- return root;
+ return mFindRootHelper.findRoot(ignoreRelinquishIdentity, setToBottomIfNone);
}
ActivityRecord getTopNonFinishingActivity() {
@@ -1098,101 +1124,42 @@
}
ActivityRecord getTopNonFinishingActivity(boolean includeOverlays) {
- for (int i = getChildCount() - 1; i >= 0; --i) {
- final ActivityRecord r = getChildAt(i);
- if (r.finishing || (!includeOverlays && r.mTaskOverlay)) {
- continue;
- }
- return r;
- }
- return null;
+ return getTopActivity(false /*includeFinishing*/, includeOverlays);
}
ActivityRecord topRunningActivityLocked() {
- if (mStack != null) {
- for (int activityNdx = getChildCount() - 1; activityNdx >= 0; --activityNdx) {
- ActivityRecord r = getChildAt(activityNdx);
- if (!r.finishing && r.okToShowLocked()) {
- return r;
- }
- }
+ if (getParent() == null) {
+ return null;
}
- return null;
+ return getActivity(ActivityRecord::canBeTopRunning);
}
/**
* Return true if any activities in this task belongs to input uid.
*/
- boolean containsAppUid(int uid) {
- for (int i = getChildCount() - 1; i >= 0; --i) {
- final ActivityRecord r = getChildAt(i);
- if (r.getUid() == uid) {
- return true;
- }
- }
- return false;
- }
-
- void getAllRunningVisibleActivitiesLocked(ArrayList<ActivityRecord> outActivities) {
- if (mStack != null) {
- for (int activityNdx = getChildCount() - 1; activityNdx >= 0; --activityNdx) {
- ActivityRecord r = getChildAt(activityNdx);
- if (!r.finishing && r.okToShowLocked() && r.visibleIgnoringKeyguard) {
- outActivities.add(r);
- }
- }
- }
+ boolean isUidPresent(int uid) {
+ final PooledPredicate p = PooledLambda.obtainPredicate(
+ ActivityRecord::isUid, PooledLambda.__(ActivityRecord.class), uid);
+ final boolean isUidPresent = getActivity(p) != null;
+ p.recycle();
+ return isUidPresent;
}
ActivityRecord topRunningActivityWithStartingWindowLocked() {
- if (mStack != null) {
- for (int activityNdx = getChildCount() - 1; activityNdx >= 0; --activityNdx) {
- ActivityRecord r = getChildAt(activityNdx);
- if (r.mStartingWindowState != STARTING_WINDOW_SHOWN
- || r.finishing || !r.okToShowLocked()) {
- continue;
- }
- return r;
- }
+ if (getParent() == null) {
+ return null;
}
- return null;
+ return getActivity((r) -> r.mStartingWindowState == STARTING_WINDOW_SHOWN
+ && r.canBeTopRunning());
}
/**
* Return the number of running activities, and the number of non-finishing/initializing
* activities in the provided {@param reportOut} respectively.
*/
- void getNumRunningActivities(TaskActivitiesReport reportOut) {
+ private void getNumRunningActivities(TaskActivitiesReport reportOut) {
reportOut.reset();
- for (int i = getChildCount() - 1; i >= 0; --i) {
- final ActivityRecord r = getChildAt(i);
- if (r.finishing) {
- continue;
- }
-
- reportOut.base = r;
-
- // Increment the total number of non-finishing activities
- reportOut.numActivities++;
-
- if (reportOut.top == null || (reportOut.top.isState(ActivityState.INITIALIZING))) {
- reportOut.top = r;
- // Reset the number of running activities until we hit the first non-initializing
- // activity
- reportOut.numRunning = 0;
- }
- if (r.attachedToProcess()) {
- // Increment the number of actually running activities
- reportOut.numRunning++;
- }
- }
- }
-
- boolean okToShowLocked() {
- // NOTE: If {@link Task#topRunningActivity} return is not null then it is
- // okay to show the activity when locked.
- return mAtmService.mStackSupervisor.isCurrentProfileLocked(mUserId)
- || topRunningActivityLocked() != null;
+ forAllActivities(reportOut);
}
/**
@@ -1216,10 +1183,11 @@
}
@Override
- void addChild(ActivityRecord r, int index) {
+ void addChild(WindowContainer child, int index) {
// If this task had any child before we added this one.
boolean hadChild = hasChild();
+ final ActivityRecord r = (ActivityRecord) child;
index = getAdjustedAddPosition(r, index);
super.addChild(r, index);
@@ -1248,9 +1216,6 @@
}
updateEffectiveIntent();
- if (r.isPersistable()) {
- mAtmService.notifyTaskPersisterLocked(this, false);
- }
// Make sure the list of display UID whitelists is updated
// now that this record is in a new task.
@@ -1262,16 +1227,13 @@
}
@Override
- void removeChild(ActivityRecord r) {
+ void removeChild(WindowContainer r) {
if (!mChildren.contains(r)) {
Slog.e(TAG, "removeChild: r=" + r + " not found in t=" + this);
return;
}
super.removeChild(r);
- if (r.isPersistable()) {
- mAtmService.notifyTaskPersisterLocked(this, false);
- }
if (inPinnedWindowingMode()) {
// We normally notify listeners of task stack changes on pause, however pinned stack
@@ -1287,7 +1249,7 @@
// The following block can be executed multiple times if there is more than one overlay.
// {@link ActivityStackSupervisor#removeTaskByIdLocked} handles this by reverse lookup
// of the task by id and exiting early if not found.
- if (onlyHasTaskOverlayActivities(false /* excludingFinishing */)) {
+ if (onlyHasTaskOverlayActivities(true /*includeFinishing*/)) {
// When destroying a task, tell the supervisor to remove it so that any activity it
// has can be cleaned up correctly. This is currently the only place where we remove
// a task with the DESTROYING mode, so instead of passing the onlyHasTaskOverlays
@@ -1301,7 +1263,7 @@
} else if (!mReuseTask) {
// Remove entire task if it doesn't have any activity left and it isn't marked for reuse
mStack.removeChild(this, reason);
- EventLog.writeEvent(WM_TASK_REMOVED, mTaskId,
+ EventLogTags.writeWmTaskRemoved(mTaskId,
"removeChild: last r=" + r + " in t=" + this);
removeIfPossible();
}
@@ -1309,25 +1271,20 @@
/**
* @return whether or not there are ONLY task overlay activities in the stack.
- * If {@param excludeFinishing} is set, then ignore finishing activities in the check.
- * If there are no task overlay activities, this call returns false.
+ * If {@param includeFinishing} is set, then don't ignore finishing activities in the
+ * check. If there are no task overlay activities, this call returns false.
*/
- boolean onlyHasTaskOverlayActivities(boolean excludeFinishing) {
- int count = 0;
- for (int i = getChildCount() - 1; i >= 0; i--) {
- final ActivityRecord r = getChildAt(i);
- if (excludeFinishing && r.finishing) {
- continue;
- }
- if (!r.mTaskOverlay) {
- return false;
- }
- count++;
+ boolean onlyHasTaskOverlayActivities(boolean includeFinishing) {
+ if (getChildCount() == 0) {
+ return false;
}
- return count > 0;
+ if (includeFinishing) {
+ return getActivity((r) -> r.mTaskOverlay) != null;
+ }
+ return getActivity((r) -> !r.finishing && r.mTaskOverlay) != null;
}
- boolean autoRemoveFromRecents() {
+ private boolean autoRemoveFromRecents() {
// We will automatically remove the task either if it has explicitly asked for
// this, or it is empty and has never contained an activity that got shown to
// the user.
@@ -1339,24 +1296,21 @@
* task starting at a specified index.
*/
private void performClearTaskAtIndexLocked(String reason) {
- int numActivities = getChildCount();
- for (int activityNdx = 0; activityNdx < numActivities; ++activityNdx) {
- final ActivityRecord r = getChildAt(activityNdx);
- if (r.finishing) {
- continue;
- }
- if (mStack == null) {
+ // Broken down into to cases to avoid object create due to capturing mStack.
+ if (mStack == null) {
+ forAllActivities((r) -> {
+ if (r.finishing) return;
// Task was restored from persistent storage.
r.takeFromHistory();
removeChild(r);
- --activityNdx;
- --numActivities;
- } else if (r.finishIfPossible(Activity.RESULT_CANCELED, null /* resultData */, reason,
- false /* oomAdj */)
- == FINISH_RESULT_REMOVED) {
- --activityNdx;
- --numActivities;
- }
+ });
+ } else {
+ forAllActivities((r) -> {
+ if (r.finishing) return;
+ // TODO: figure-out how to avoid object creation due to capture of reason variable.
+ r.finishIfPossible(Activity.RESULT_CANCELED, null /* resultData */, reason,
+ false /* oomAdj */);
+ });
}
}
@@ -1387,50 +1341,43 @@
* @return Returns the old activity that should be continued to be used,
* or {@code null} if none was found.
*/
- final ActivityRecord performClearTaskLocked(ActivityRecord newR, int launchFlags) {
- int numActivities = getChildCount();
- for (int activityNdx = numActivities - 1; activityNdx >= 0; --activityNdx) {
- ActivityRecord r = getChildAt(activityNdx);
- if (r.finishing) {
- continue;
- }
- if (r.mActivityComponent.equals(newR.mActivityComponent)) {
- // Here it is! Now finish everything in front...
- final ActivityRecord ret = r;
+ private ActivityRecord performClearTaskLocked(ActivityRecord newR, int launchFlags) {
+ final ActivityRecord r = findActivityInHistory(newR.mActivityComponent);
+ if (r == null) return null;
- for (++activityNdx; activityNdx < numActivities; ++activityNdx) {
- r = getChildAt(activityNdx);
- if (r.finishing) {
- continue;
- }
- ActivityOptions opts = r.takeOptionsLocked(false /* fromClient */);
- if (opts != null) {
- ret.updateOptionsLocked(opts);
- }
- if (r.finishIfPossible("clear-task-stack", false /* oomAdj */)
- == FINISH_RESULT_REMOVED) {
- --activityNdx;
- --numActivities;
- }
- }
+ final PooledFunction f = PooledLambda.obtainFunction(Task::finishActivityAbove,
+ PooledLambda.__(ActivityRecord.class), r);
+ forAllActivities(f);
+ f.recycle();
- // Finally, if this is a normal launch mode (that is, not
- // expecting onNewIntent()), then we will finish the current
- // instance of the activity so a new fresh one can be started.
- if (ret.launchMode == ActivityInfo.LAUNCH_MULTIPLE
- && (launchFlags & Intent.FLAG_ACTIVITY_SINGLE_TOP) == 0
- && !ActivityStarter.isDocumentLaunchesIntoExisting(launchFlags)) {
- if (!ret.finishing) {
- ret.finishIfPossible("clear-task-top", false /* oomAdj */);
- return null;
- }
- }
-
- return ret;
+ // Finally, if this is a normal launch mode (that is, not expecting onNewIntent()), then we
+ // will finish the current instance of the activity so a new fresh one can be started.
+ if (r.launchMode == ActivityInfo.LAUNCH_MULTIPLE
+ && (launchFlags & Intent.FLAG_ACTIVITY_SINGLE_TOP) == 0
+ && !ActivityStarter.isDocumentLaunchesIntoExisting(launchFlags)) {
+ if (!r.finishing) {
+ r.finishIfPossible("clear-task-top", false /* oomAdj */);
+ return null;
}
}
- return null;
+ return r;
+ }
+
+ private static boolean finishActivityAbove(ActivityRecord r, ActivityRecord boundaryActivity) {
+ // Stop operation once we reach the boundary activity.
+ if (r == boundaryActivity) return true;
+
+ if (!r.finishing) {
+ final ActivityOptions opts = r.takeOptionsLocked(false /* fromClient */);
+ if (opts != null) {
+ // TODO: Why is this updating the boundary activity vs. the current activity???
+ boundaryActivity.updateOptionsLocked(opts);
+ }
+ r.finishIfPossible("clear-task-stack", false /* oomAdj */);
+ }
+
+ return false;
}
void removeTaskActivitiesLocked(String reason) {
@@ -1541,140 +1488,83 @@
* Find the activity in the history stack within the given task. Returns
* the index within the history at which it's found, or < 0 if not found.
*/
- final ActivityRecord findActivityInHistoryLocked(ActivityRecord r) {
- final ComponentName realActivity = r.mActivityComponent;
- for (int activityNdx = getChildCount() - 1; activityNdx >= 0; --activityNdx) {
- ActivityRecord candidate = getChildAt(activityNdx);
- if (candidate.finishing) {
- continue;
- }
- if (candidate.mActivityComponent.equals(realActivity)) {
- return candidate;
- }
- }
- return null;
+ ActivityRecord findActivityInHistory(ComponentName component) {
+ final PooledPredicate p = PooledLambda.obtainPredicate(Task::matchesActivityInHistory,
+ PooledLambda.__(ActivityRecord.class), component);
+ final ActivityRecord r = getActivity(p);
+ p.recycle();
+ return r;
+ }
+
+ private static boolean matchesActivityInHistory(
+ ActivityRecord r, ComponentName activityComponent) {
+ return !r.finishing && r.mActivityComponent.equals(activityComponent);
}
/** Updates the last task description values. */
void updateTaskDescription() {
- // TODO(AM refactor): Cleanup to use findRootIndex()
- // Traverse upwards looking for any break between main task activities and
- // utility activities.
- int activityNdx;
- final int numActivities = getChildCount();
- final boolean relinquish = numActivities != 0
- && (getChildAt(0).info.flags & FLAG_RELINQUISH_TASK_IDENTITY) != 0;
- for (activityNdx = Math.min(numActivities, 1); activityNdx < numActivities; ++activityNdx) {
- final ActivityRecord r = getChildAt(activityNdx);
- if (relinquish && (r.info.flags & FLAG_RELINQUISH_TASK_IDENTITY) == 0) {
- // This will be the top activity for determining taskDescription. Pre-inc to
- // overcome initial decrement below.
- ++activityNdx;
- break;
- }
- if (r.intent != null
- && (r.intent.getFlags() & Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET) != 0) {
- break;
- }
+ final ActivityRecord root = getRootActivity(true);
+ if (root == null) return;
+
+ final TaskDescription taskDescription = new TaskDescription();
+ final PooledFunction f = PooledLambda.obtainFunction(
+ Task::setTaskDescriptionFromActivityAboveRoot,
+ PooledLambda.__(ActivityRecord.class), root, taskDescription);
+ forAllActivities(f);
+ f.recycle();
+ taskDescription.setResizeMode(mResizeMode);
+ taskDescription.setMinWidth(mMinWidth);
+ taskDescription.setMinHeight(mMinHeight);
+ setTaskDescription(taskDescription);
+ // Update the task affiliation color if we are the parent of the group
+ if (mTaskId == mAffiliatedTaskId) {
+ mAffiliatedTaskColor = taskDescription.getPrimaryColor();
}
- if (activityNdx > 0) {
- // Traverse downwards starting below break looking for set label, icon.
- // Note that if there are activities in the task but none of them set the
- // recent activity values, then we do not fall back to the last set
- // values in the Task.
- String label = null;
- String iconFilename = null;
- int iconResource = -1;
- int colorPrimary = 0;
- int colorBackground = 0;
- int statusBarColor = 0;
- int navigationBarColor = 0;
- boolean statusBarContrastWhenTransparent = false;
- boolean navigationBarContrastWhenTransparent = false;
- boolean topActivity = true;
- for (--activityNdx; activityNdx >= 0; --activityNdx) {
- final ActivityRecord r = getChildAt(activityNdx);
- if (r.mTaskOverlay) {
- continue;
- }
- if (r.taskDescription != null) {
- if (label == null) {
- label = r.taskDescription.getLabel();
- }
- if (iconResource == -1) {
- iconResource = r.taskDescription.getIconResource();
- }
- if (iconFilename == null) {
- iconFilename = r.taskDescription.getIconFilename();
- }
- if (colorPrimary == 0) {
- colorPrimary = r.taskDescription.getPrimaryColor();
- }
- if (topActivity) {
- colorBackground = r.taskDescription.getBackgroundColor();
- statusBarColor = r.taskDescription.getStatusBarColor();
- navigationBarColor = r.taskDescription.getNavigationBarColor();
- statusBarContrastWhenTransparent =
- r.taskDescription.getEnsureStatusBarContrastWhenTransparent();
- navigationBarContrastWhenTransparent =
- r.taskDescription.getEnsureNavigationBarContrastWhenTransparent();
- }
- }
- topActivity = false;
- }
- final TaskDescription taskDescription = new TaskDescription(label, null, iconResource,
- iconFilename, colorPrimary, colorBackground, statusBarColor, navigationBarColor,
- statusBarContrastWhenTransparent, navigationBarContrastWhenTransparent,
- mResizeMode, mMinWidth, mMinHeight);
- setTaskDescription(taskDescription);
- // Update the task affiliation color if we are the parent of the group
- if (mTaskId == mAffiliatedTaskId) {
- mAffiliatedTaskColor = taskDescription.getPrimaryColor();
- }
- mAtmService.getTaskChangeNotificationController().notifyTaskDescriptionChanged(
- getTaskInfo());
- }
+ mAtmService.getTaskChangeNotificationController().notifyTaskDescriptionChanged(
+ getTaskInfo());
}
- /**
- * Find the index of the root activity in the task. It will be the first activity from the
- * bottom that is not finishing.
- *
- * @param effectiveRoot Flag indicating whether 'effective root' should be returned - an
- * activity that defines the task identity (its base intent). It's the
- * first one that does not have
- * {@link ActivityInfo#FLAG_RELINQUISH_TASK_IDENTITY}.
- * @return index of the 'root' or 'effective' root in the list of activities, -1 if no eligible
- * activity was found.
- */
- int findRootIndex(boolean effectiveRoot) {
- int effectiveNdx = -1;
- final int topActivityNdx = getChildCount() - 1;
- for (int activityNdx = 0; activityNdx <= topActivityNdx; ++activityNdx) {
- final ActivityRecord r = getChildAt(activityNdx);
- if (r.finishing) {
- continue;
+ private static boolean setTaskDescriptionFromActivityAboveRoot(
+ ActivityRecord r, ActivityRecord root, TaskDescription td) {
+ if (!r.mTaskOverlay && r.taskDescription != null) {
+ final TaskDescription atd = r.taskDescription;
+ if (td.getLabel() == null) {
+ td.setLabel(atd.getLabel());
}
- effectiveNdx = activityNdx;
- if (!effectiveRoot || (r.info.flags & FLAG_RELINQUISH_TASK_IDENTITY) == 0) {
- break;
+ if (td.getIconResource() == 0) {
+ td.setIcon(atd.getIconResource());
}
+ if (td.getIconFilename() == null) {
+ td.setIconFilename(atd.getIconFilename());
+ }
+ if (td.getPrimaryColor() == 0) {
+ td.setPrimaryColor(atd.getPrimaryColor());
+ }
+ if (td.getBackgroundColor() == 0) {
+ td.setBackgroundColor(atd.getBackgroundColor());
+ }
+ if (td.getStatusBarColor() == 0) {
+ td.setStatusBarColor(atd.getStatusBarColor());
+ td.setEnsureStatusBarContrastWhenTransparent(
+ atd.getEnsureStatusBarContrastWhenTransparent());
+ }
+ if (td.getNavigationBarColor() == 0) {
+ td.setNavigationBarColor(atd.getNavigationBarColor());
+ td.setEnsureNavigationBarContrastWhenTransparent(
+ atd.getEnsureNavigationBarContrastWhenTransparent());
+ }
+
}
- return effectiveNdx;
+
+ // End search once we get to root.
+ return r == root;
}
// TODO (AM refactor): Invoke automatically when there is a change in children
@VisibleForTesting
void updateEffectiveIntent() {
- int effectiveRootIndex = findRootIndex(true /* effectiveRoot */);
- if (effectiveRootIndex == -1) {
- // All activities in the task are either finishing or relinquish task identity.
- // But we still want to update the intent, so let's use the bottom activity.
- effectiveRootIndex = 0;
- }
- final ActivityRecord r = getChildAt(effectiveRootIndex);
- setIntent(r);
-
+ final ActivityRecord root = getRootActivity(true /*setToBottomIfNone*/);
+ setIntent(root);
// Update the task description when the activities change
updateTaskDescription();
}
@@ -2064,17 +1954,22 @@
// could never go away in Honeycomb.
final int compatScreenWidthDp = (int) (mTmpNonDecorBounds.width() / density);
final int compatScreenHeightDp = (int) (mTmpNonDecorBounds.height() / density);
- // We're only overriding LONG, SIZE and COMPAT parts of screenLayout, so we start
- // override calculation with partial default.
// Reducing the screen layout starting from its parent config.
- final int sl = parentConfig.screenLayout
- & (Configuration.SCREENLAYOUT_LONG_MASK | Configuration.SCREENLAYOUT_SIZE_MASK);
- final int longSize = Math.max(compatScreenHeightDp, compatScreenWidthDp);
- final int shortSize = Math.min(compatScreenHeightDp, compatScreenWidthDp);
- inOutConfig.screenLayout = Configuration.reduceScreenLayout(sl, longSize, shortSize);
+ inOutConfig.screenLayout = computeScreenLayoutOverride(parentConfig.screenLayout,
+ compatScreenWidthDp, compatScreenHeightDp);
}
}
+ /** Computes LONG, SIZE and COMPAT parts of {@link Configuration#screenLayout}. */
+ static int computeScreenLayoutOverride(int sourceScreenLayout, int screenWidthDp,
+ int screenHeightDp) {
+ sourceScreenLayout = sourceScreenLayout
+ & (Configuration.SCREENLAYOUT_LONG_MASK | Configuration.SCREENLAYOUT_SIZE_MASK);
+ final int longSize = Math.max(screenWidthDp, screenHeightDp);
+ final int shortSize = Math.min(screenWidthDp, screenHeightDp);
+ return Configuration.reduceScreenLayout(sourceScreenLayout, longSize, shortSize);
+ }
+
@Override
void resolveOverrideConfiguration(Configuration newParentConfig) {
mTmpBounds.set(getResolvedOverrideConfiguration().windowConfiguration.getBounds());
@@ -2219,15 +2114,6 @@
return mLastNonFullscreenBounds;
}
- void addStartingWindowsForVisibleActivities(boolean taskSwitch) {
- for (int activityNdx = getChildCount() - 1; activityNdx >= 0; --activityNdx) {
- final ActivityRecord r = getChildAt(activityNdx);
- if (r.mVisibleRequested) {
- r.showStartingWindow(null /* prev */, false /* newTask */, taskSwitch);
- }
- }
- }
-
void setRootProcess(WindowProcessController proc) {
clearRootProcess();
if (intent != null
@@ -2244,12 +2130,6 @@
}
}
- void clearAllPendingOptions() {
- for (int i = getChildCount() - 1; i >= 0; i--) {
- getChildAt(i).clearOptionsLocked(false /* withAbort */);
- }
- }
-
@Override
DisplayContent getDisplayContent() {
return getTaskStack() != null ? getTaskStack().getDisplayContent() : null;
@@ -2259,20 +2139,14 @@
return (ActivityStack) getParent();
}
+ // TODO(task-hierarchy): Needs to take a generic WindowManager when task contains other tasks.
int getAdjustedAddPosition(ActivityRecord r, int suggestedPosition) {
int maxPosition = mChildren.size();
if (!r.mTaskOverlay) {
// We want to place all non-overlay activities below overlays.
- while (maxPosition > 0) {
- final ActivityRecord current = mChildren.get(maxPosition - 1);
- if (current.mTaskOverlay) {
- --maxPosition;
- continue;
- }
- break;
- }
- if (maxPosition < 0) {
- maxPosition = 0;
+ final ActivityRecord bottomMostOverlay = getActivity((ar) -> ar.mTaskOverlay, false);
+ if (bottomMostOverlay != null) {
+ maxPosition = Math.max(mChildren.indexOf(bottomMostOverlay) - 1, 0);
}
}
@@ -2280,18 +2154,13 @@
}
@Override
- void positionChildAt(int position, ActivityRecord child, boolean includingParents) {
- position = getAdjustedAddPosition(child, position);
+ void positionChildAt(int position, WindowContainer child, boolean includingParents) {
+ position = getAdjustedAddPosition((ActivityRecord) child, position);
super.positionChildAt(position, child, includingParents);
}
private boolean hasWindowsAlive() {
- for (int i = mChildren.size() - 1; i >= 0; i--) {
- if (mChildren.get(i).hasWindowsAlive()) {
- return true;
- }
- }
- return false;
+ return getActivity(ActivityRecord::hasWindowsAlive) != null;
}
@VisibleForTesting
@@ -2306,7 +2175,7 @@
@Override
void removeImmediately() {
if (DEBUG_STACK) Slog.i(TAG, "removeTask: removing taskId=" + mTaskId);
- EventLog.writeEvent(WM_TASK_REMOVED, mTaskId, "removeTask");
+ EventLogTags.writeWmTaskRemoved(mTaskId, "removeTask");
super.removeImmediately();
}
@@ -2314,7 +2183,7 @@
void reparent(ActivityStack stack, int position, boolean moveParents, String reason) {
if (DEBUG_STACK) Slog.i(TAG, "reParentTask: removing taskId=" + mTaskId
+ " from stack=" + getTaskStack());
- EventLog.writeEvent(WM_TASK_REMOVED, mTaskId, "reParentTask");
+ EventLogTags.writeWmTaskRemoved(mTaskId, "reParentTask");
final ActivityStack prevStack = getTaskStack();
final boolean wasTopFocusedStack =
@@ -2521,26 +2390,21 @@
* @param out Rect containing the max visible bounds.
* @return true if the task has some visible app windows; false otherwise.
*/
- private boolean getMaxVisibleBounds(Rect out) {
- boolean foundTop = false;
- for (int i = mChildren.size() - 1; i >= 0; i--) {
- final ActivityRecord token = mChildren.get(i);
- // skip hidden (or about to hide) apps
- if (token.mIsExiting || !token.isClientVisible() || !token.mVisibleRequested) {
- continue;
- }
- final WindowState win = token.findMainWindow();
- if (win == null) {
- continue;
- }
- if (!foundTop) {
- foundTop = true;
- out.setEmpty();
- }
-
- win.getMaxVisibleBounds(out);
+ private static void getMaxVisibleBounds(ActivityRecord token, Rect out, boolean[] foundTop) {
+ // skip hidden (or about to hide) apps
+ if (token.mIsExiting || !token.isClientVisible() || !token.mVisibleRequested) {
+ return;
}
- return foundTop;
+ final WindowState win = token.findMainWindow();
+ if (win == null) {
+ return;
+ }
+ if (!foundTop[0]) {
+ foundTop[0] = true;
+ out.setEmpty();
+ }
+
+ win.getMaxVisibleBounds(out);
}
/** Bounds of the task to be used for dimming, as well as touch related tests. */
@@ -2550,8 +2414,14 @@
// a DimLayer anyway if we weren't visible.
final boolean dockedResizing = displayContent != null
&& displayContent.mDividerControllerLocked.isResizing();
- if (inFreeformWindowingMode() && getMaxVisibleBounds(out)) {
- return;
+ if (inFreeformWindowingMode()) {
+ boolean[] foundTop = { false };
+ final PooledConsumer c = PooledLambda.obtainConsumer(Task::getMaxVisibleBounds,
+ PooledLambda.__(ActivityRecord.class), out, foundTop);
+ c.recycle();
+ if (foundTop[0]) {
+ return;
+ }
}
if (!matchParentBounds()) {
@@ -2657,8 +2527,9 @@
}
boolean showForAllUsers() {
- final int tokensCount = mChildren.size();
- return (tokensCount != 0) && mChildren.get(tokensCount - 1).mShowForAllUsers;
+ if (mChildren.isEmpty()) return false;
+ final ActivityRecord r = getTopNonFinishingActivity();
+ return r != null && r.mShowForAllUsers;
}
/**
@@ -2732,24 +2603,17 @@
}
ActivityRecord getTopFullscreenActivity() {
- for (int i = mChildren.size() - 1; i >= 0; i--) {
- final ActivityRecord activity = mChildren.get(i);
- final WindowState win = activity.findMainWindow();
- if (win != null && win.mAttrs.isFullscreen()) {
- return activity;
- }
- }
- return null;
+ return getActivity((r) -> {
+ final WindowState win = r.findMainWindow();
+ return (win != null && win.mAttrs.isFullscreen());
+ });
}
ActivityRecord getTopVisibleActivity() {
- for (int i = mChildren.size() - 1; i >= 0; i--) {
- final ActivityRecord activity = mChildren.get(i);
- if (!activity.mIsExiting && activity.isClientVisible() && activity.mVisibleRequested) {
- return activity;
- }
- }
- return null;
+ return getActivity((r) -> {
+ // skip hidden (or about to hide) apps
+ return !r.mIsExiting && r.isClientVisible() && r.mVisibleRequested;
+ });
}
void positionChildAtTop(ActivityRecord child) {
@@ -2805,6 +2669,13 @@
return callback.apply(this);
}
+ @Override
+ Task getTask(Predicate<Task> callback, boolean traverseTopToBottom) {
+ // I'm a task!
+ // TODO(task-hierarchy): Change to traverse children when tasks can contain other tasks.
+ return callback.test(this) ? this : null;
+ }
+
/**
* @param canAffectSystemUiFlags If false, all windows in this task can not affect SystemUI
* flags. See {@link WindowState#canAffectSystemUiFlags()}.
@@ -2860,10 +2731,9 @@
final long token = proto.start(fieldId);
super.writeToProto(proto, WINDOW_CONTAINER, logLevel);
proto.write(TaskProto.ID, mTaskId);
- for (int i = mChildren.size() - 1; i >= 0; i--) {
- final ActivityRecord activity = mChildren.get(i);
- activity.writeToProto(proto, APP_WINDOW_TOKENS, logLevel);
- }
+ forAllActivities((r) -> {
+ r.writeToProto(proto, APP_WINDOW_TOKENS, logLevel);
+ });
proto.write(FILLS_PARENT, matchParentBounds());
getBounds().writeToProto(proto, TaskProto.BOUNDS);
mOverrideDisplayedBounds.writeToProto(proto, DISPLAYED_BOUNDS);
@@ -2887,11 +2757,11 @@
final String triplePrefix = doublePrefix + " ";
final String quadruplePrefix = triplePrefix + " ";
- for (int i = mChildren.size() - 1; i >= 0; i--) {
- final ActivityRecord activity = mChildren.get(i);
- pw.println(triplePrefix + "Activity #" + i + " " + activity);
- activity.dump(pw, quadruplePrefix, dumpAll);
- }
+ int[] index = { 0 };
+ forAllActivities((r) -> {
+ pw.println(triplePrefix + "Activity #" + index[0]++ + " " + r);
+ r.dump(pw, quadruplePrefix, dumpAll);
+ });
}
/**
@@ -3070,10 +2940,10 @@
final long token = proto.start(fieldId);
writeToProtoInnerTaskOnly(proto, TASK, logLevel);
proto.write(com.android.server.am.TaskRecordProto.ID, mTaskId);
- for (int i = getChildCount() - 1; i >= 0; i--) {
- final ActivityRecord activity = getChildAt(i);
- activity.writeToProto(proto, ACTIVITIES);
- }
+
+ forAllActivities((r) -> {
+ r.writeToProto(proto, ACTIVITIES);
+ });
proto.write(STACK_ID, getStackId());
if (mLastNonFullscreenBounds != null) {
mLastNonFullscreenBounds.writeToProto(proto, LAST_NON_FULLSCREEN_BOUNDS);
@@ -3099,7 +2969,7 @@
}
/** @see #getNumRunningActivities(TaskActivitiesReport) */
- static class TaskActivitiesReport {
+ static class TaskActivitiesReport implements Consumer<ActivityRecord> {
int numRunning;
int numActivities;
ActivityRecord top;
@@ -3109,12 +2979,35 @@
numRunning = numActivities = 0;
top = base = null;
}
+
+ @Override
+ public void accept(ActivityRecord r) {
+ if (r.finishing) {
+ return;
+ }
+
+ base = r;
+
+ // Increment the total number of non-finishing activities
+ numActivities++;
+
+ if (top == null || (top.isState(ActivityState.INITIALIZING))) {
+ top = r;
+ // Reset the number of running activities until we hit the first non-initializing
+ // activity
+ numRunning = 0;
+ }
+ if (r.attachedToProcess()) {
+ // Increment the number of actually running activities
+ numRunning++;
+ }
+ }
}
/**
* Saves this {@link Task} to XML using given serializer.
*/
- void saveToXml(XmlSerializer out) throws IOException, XmlPullParserException {
+ void saveToXml(XmlSerializer out) throws Exception {
if (DEBUG_RECENTS) Slog.i(TAG_RECENTS, "Saving task=" + this);
out.attribute(null, ATTR_TASKID, String.valueOf(mTaskId));
@@ -3180,19 +3073,33 @@
out.endTag(null, TAG_INTENT);
}
- final int numActivities = getChildCount();
- for (int activityNdx = 0; activityNdx < numActivities; ++activityNdx) {
- final ActivityRecord r = getChildAt(activityNdx);
- if (r.info.persistableMode == ActivityInfo.PERSIST_ROOT_ONLY || !r.isPersistable()
- || ((r.intent.getFlags() & FLAG_ACTIVITY_NEW_DOCUMENT
- | FLAG_ACTIVITY_RETAIN_IN_RECENTS) == FLAG_ACTIVITY_NEW_DOCUMENT)
- && activityNdx > 0) {
- // Stop at first non-persistable or first break in task (CLEAR_WHEN_TASK_RESET).
- break;
- }
+ sTmpException = null;
+ final PooledFunction f = PooledLambda.obtainFunction(Task::saveActivityToXml,
+ PooledLambda.__(ActivityRecord.class), getBottomMostActivity(), out);
+ forAllActivities(f);
+ f.recycle();
+ if (sTmpException != null) {
+ throw sTmpException;
+ }
+ }
+
+ private static boolean saveActivityToXml(
+ ActivityRecord r, ActivityRecord first, XmlSerializer out) {
+ if (r.info.persistableMode == ActivityInfo.PERSIST_ROOT_ONLY || !r.isPersistable()
+ || ((r.intent.getFlags() & FLAG_ACTIVITY_NEW_DOCUMENT
+ | FLAG_ACTIVITY_RETAIN_IN_RECENTS) == FLAG_ACTIVITY_NEW_DOCUMENT)
+ && r != first) {
+ // Stop at first non-persistable or first break in task (CLEAR_WHEN_TASK_RESET).
+ return true;
+ }
+ try {
out.startTag(null, TAG_ACTIVITY);
r.saveToXml(out);
out.endTag(null, TAG_ACTIVITY);
+ return false;
+ } catch (Exception e) {
+ sTmpException = e;
+ return true;
}
}
diff --git a/services/core/java/com/android/server/wm/TaskPersister.java b/services/core/java/com/android/server/wm/TaskPersister.java
index 1e2f0d0..eb130a1 100644
--- a/services/core/java/com/android/server/wm/TaskPersister.java
+++ b/services/core/java/com/android/server/wm/TaskPersister.java
@@ -514,7 +514,7 @@
mService = service;
}
- private StringWriter saveToXml(Task task) throws IOException, XmlPullParserException {
+ private StringWriter saveToXml(Task task) throws Exception {
if (DEBUG) Slog.d(TAG, "saveToXml: task=" + task);
final XmlSerializer xmlSerializer = new FastXmlSerializer();
StringWriter stringWriter = new StringWriter();
@@ -550,8 +550,7 @@
try {
if (DEBUG) Slog.d(TAG, "Saving task=" + task);
stringWriter = saveToXml(task);
- } catch (IOException e) {
- } catch (XmlPullParserException e) {
+ } catch (Exception e) {
}
}
}
diff --git a/services/core/java/com/android/server/wm/TaskSnapshotCache.java b/services/core/java/com/android/server/wm/TaskSnapshotCache.java
index d07516a..5cbab5d 100644
--- a/services/core/java/com/android/server/wm/TaskSnapshotCache.java
+++ b/services/core/java/com/android/server/wm/TaskSnapshotCache.java
@@ -48,9 +48,9 @@
if (entry != null) {
mAppTaskMap.remove(entry.topApp);
}
- final ActivityRecord top = task.getTopChild();
+ final ActivityRecord top = task.getTopMostActivity();
mAppTaskMap.put(top, task.mTaskId);
- mRunningCache.put(task.mTaskId, new CacheEntry(snapshot, task.getTopChild()));
+ mRunningCache.put(task.mTaskId, new CacheEntry(snapshot, top));
}
/**
diff --git a/services/core/java/com/android/server/wm/TaskSnapshotController.java b/services/core/java/com/android/server/wm/TaskSnapshotController.java
index f83ceb0..c1a36c4 100644
--- a/services/core/java/com/android/server/wm/TaskSnapshotController.java
+++ b/services/core/java/com/android/server/wm/TaskSnapshotController.java
@@ -235,23 +235,18 @@
* children, which should be ignored.
*/
@Nullable private ActivityRecord findAppTokenForSnapshot(Task task) {
- for (int i = task.getChildCount() - 1; i >= 0; --i) {
- final ActivityRecord activity = task.getChildAt(i);
- if (activity == null || !activity.isSurfaceShowing()
- || activity.findMainWindow() == null) {
- continue;
+ return task.getActivity((r) -> {
+ if (r == null || !r.isSurfaceShowing() || r.findMainWindow() == null) {
+ return false;
}
- final boolean hasVisibleChild = activity.forAllWindows(
+ return r.forAllWindows(
// Ensure at least one window for the top app is visible before attempting to
// take a screenshot. Visible here means that the WSA surface is shown and has
// an alpha greater than 0.
ws -> ws.mWinAnimator != null && ws.mWinAnimator.getShown()
&& ws.mWinAnimator.mLastAlpha > 0f, true /* traverseTopToBottom */);
- if (hasVisibleChild) {
- return activity;
- }
- }
- return null;
+
+ });
}
@Nullable
@@ -380,7 +375,7 @@
@VisibleForTesting
int getSnapshotMode(Task task) {
- final ActivityRecord topChild = task.getTopChild();
+ final ActivityRecord topChild = task.getTopMostActivity();
if (!task.isActivityTypeStandardOrUndefined() && !task.isActivityTypeAssistant()) {
return SNAPSHOT_MODE_NONE;
} else if (topChild != null && topChild.shouldUseAppThemeSnapshot()) {
@@ -395,7 +390,7 @@
* as possible by using the theme's window background.
*/
private TaskSnapshot drawAppThemeSnapshot(Task task) {
- final ActivityRecord topChild = task.getTopChild();
+ final ActivityRecord topChild = task.getTopMostActivity();
if (topChild == null) {
return null;
}
diff --git a/services/core/java/com/android/server/wm/WindowContainer.java b/services/core/java/com/android/server/wm/WindowContainer.java
index 453514b2..5c1491e 100644
--- a/services/core/java/com/android/server/wm/WindowContainer.java
+++ b/services/core/java/com/android/server/wm/WindowContainer.java
@@ -310,6 +310,10 @@
final protected void setParent(WindowContainer<WindowContainer> parent) {
final WindowContainer oldParent = mParent;
mParent = parent;
+
+ if (mParent != null) {
+ mParent.onChildAdded(this);
+ }
if (!mReparenting) {
onParentChanged(mParent, oldParent);
}
@@ -389,7 +393,6 @@
} else {
mChildren.add(positionToAdd, child);
}
- onChildAdded(child);
// Set the parent after we've actually added a child in case a subclass depends on this.
child.setParent(this);
@@ -418,7 +421,6 @@
}
mChildren.add(index, child);
- onChildAdded(child);
// Set the parent after we've actually added a child in case a subclass depends on this.
child.setParent(this);
@@ -1096,11 +1098,22 @@
}
boolean forAllActivities(Function<ActivityRecord, Boolean> callback) {
- for (int i = mChildren.size() - 1; i >= 0; --i) {
- if (mChildren.get(i).forAllActivities(callback)) {
- return true;
+ return forAllActivities(callback, true /*traverseTopToBottom*/);
+ }
+
+ boolean forAllActivities(
+ Function<ActivityRecord, Boolean> callback, boolean traverseTopToBottom) {
+ if (traverseTopToBottom) {
+ for (int i = mChildren.size() - 1; i >= 0; --i) {
+ if (mChildren.get(i).forAllActivities(callback, traverseTopToBottom)) return true;
+ }
+ } else {
+ final int count = mChildren.size();
+ for (int i = 0; i < count; i++) {
+ if (mChildren.get(i).forAllActivities(callback, traverseTopToBottom)) return true;
}
}
+
return false;
}
@@ -1121,6 +1134,61 @@
}
}
+ /**
+ * Process all activities in this branch of the tree.
+ *
+ * @param callback Called for each activity found.
+ * @param boundary We don't return activities via {@param callback} until we get to this node in
+ * the tree.
+ * @param includeBoundary If the boundary from be processed to return activities.
+ * @param traverseTopToBottom direction to traverse the tree.
+ * @return {@code true} if we ended the search before reaching the end of the tree.
+ */
+ final boolean forAllActivities(Function<ActivityRecord, Boolean> callback,
+ WindowContainer boundary, boolean includeBoundary, boolean traverseTopToBottom) {
+ return forAllActivities(
+ callback, boundary, includeBoundary, traverseTopToBottom, new boolean[1]);
+ }
+
+ private boolean forAllActivities(Function<ActivityRecord, Boolean> callback,
+ WindowContainer boundary, boolean includeBoundary, boolean traverseTopToBottom,
+ boolean[] boundaryFound) {
+ if (traverseTopToBottom) {
+ for (int i = mChildren.size() - 1; i >= 0; --i) {
+ if (processForAllActivitiesWithBoundary(callback, boundary, includeBoundary,
+ traverseTopToBottom, boundaryFound, mChildren.get(i))) {
+ return true;
+ }
+ }
+ } else {
+ final int count = mChildren.size();
+ for (int i = 0; i < count; i++) {
+ if (processForAllActivitiesWithBoundary(callback, boundary, includeBoundary,
+ traverseTopToBottom, boundaryFound, mChildren.get(i))) {
+ return true;
+ }
+ }
+ }
+
+ return false;
+ }
+
+ private boolean processForAllActivitiesWithBoundary(Function<ActivityRecord, Boolean> callback,
+ WindowContainer boundary, boolean includeBoundary, boolean traverseTopToBottom,
+ boolean[] boundaryFound, WindowContainer wc) {
+ if (wc == boundary) {
+ boundaryFound[0] = true;
+ if (!includeBoundary) return false;
+ }
+
+ if (boundaryFound[0]) {
+ return wc.forAllActivities(callback, traverseTopToBottom);
+ }
+
+ return wc.forAllActivities(
+ callback, boundary, includeBoundary, traverseTopToBottom, boundaryFound);
+ }
+
/** @return {@code true} if this node or any of its children contains an activity. */
boolean hasActivity() {
for (int i = mChildren.size() - 1; i >= 0; --i) {
@@ -1156,6 +1224,81 @@
return null;
}
+ /**
+ * Gets an activity in a branch of the tree.
+ *
+ * @param callback called to test if this is the activity that should be returned.
+ * @param boundary We don't return activities via {@param callback} until we get to this node in
+ * the tree.
+ * @param includeBoundary If the boundary from be processed to return activities.
+ * @param traverseTopToBottom direction to traverse the tree.
+ * @return The activity if found or null.
+ */
+ final ActivityRecord getActivity(Predicate<ActivityRecord> callback,
+ WindowContainer boundary, boolean includeBoundary, boolean traverseTopToBottom) {
+ return getActivity(
+ callback, boundary, includeBoundary, traverseTopToBottom, new boolean[1]);
+ }
+
+ private ActivityRecord getActivity(Predicate<ActivityRecord> callback,
+ WindowContainer boundary, boolean includeBoundary, boolean traverseTopToBottom,
+ boolean[] boundaryFound) {
+ if (traverseTopToBottom) {
+ for (int i = mChildren.size() - 1; i >= 0; --i) {
+ final ActivityRecord r = processGetActivityWithBoundary(callback, boundary,
+ includeBoundary, traverseTopToBottom, boundaryFound, mChildren.get(i));
+ if (r != null) {
+ return r;
+ }
+ }
+ } else {
+ final int count = mChildren.size();
+ for (int i = 0; i < count; i++) {
+ final ActivityRecord r = processGetActivityWithBoundary(callback, boundary,
+ includeBoundary, traverseTopToBottom, boundaryFound, mChildren.get(i));
+ if (r != null) {
+ return r;
+ }
+ }
+ }
+
+ return null;
+ }
+
+ private ActivityRecord processGetActivityWithBoundary(Predicate<ActivityRecord> callback,
+ WindowContainer boundary, boolean includeBoundary, boolean traverseTopToBottom,
+ boolean[] boundaryFound, WindowContainer wc) {
+ if (wc == boundary || boundary == null) {
+ boundaryFound[0] = true;
+ if (!includeBoundary) return null;
+ }
+
+ if (boundaryFound[0]) {
+ return wc.getActivity(callback, traverseTopToBottom);
+ }
+
+ return wc.getActivity(
+ callback, boundary, includeBoundary, traverseTopToBottom, boundaryFound);
+ }
+
+ ActivityRecord getActivityAbove(ActivityRecord r) {
+ return getActivity((above) -> true, r,
+ false /*includeBoundary*/, false /*traverseTopToBottom*/);
+ }
+
+ ActivityRecord getActivityBelow(ActivityRecord r) {
+ return getActivity((below) -> true, r,
+ false /*includeBoundary*/, true /*traverseTopToBottom*/);
+ }
+
+ ActivityRecord getBottomMostActivity() {
+ return getActivity((r) -> true, false /*traverseTopToBottom*/);
+ }
+
+ ActivityRecord getTopMostActivity() {
+ return getActivity((r) -> true, true /*traverseTopToBottom*/);
+ }
+
ActivityRecord getTopActivity(boolean includeFinishing, boolean includeOverlays) {
// Break down into 4 calls to avoid object creation due to capturing input params.
if (includeFinishing) {
@@ -1187,6 +1330,31 @@
}
}
+ Task getTask(Predicate<Task> callback) {
+ return getTask(callback, true /*traverseTopToBottom*/);
+ }
+
+ Task getTask(Predicate<Task> callback, boolean traverseTopToBottom) {
+ if (traverseTopToBottom) {
+ for (int i = mChildren.size() - 1; i >= 0; --i) {
+ final Task t = mChildren.get(i).getTask(callback, traverseTopToBottom);
+ if (t != null) {
+ return t;
+ }
+ }
+ } else {
+ final int count = mChildren.size();
+ for (int i = 0; i < count; i++) {
+ final Task t = mChildren.get(i).getTask(callback, traverseTopToBottom);
+ if (t != null) {
+ return t;
+ }
+ }
+ }
+
+ return null;
+ }
+
/**
* For all tasks at or below this container call the callback.
*
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index a2467e6..4ec50f0 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -193,7 +193,6 @@
import android.util.ArrayMap;
import android.util.ArraySet;
import android.util.DisplayMetrics;
-import android.util.EventLog;
import android.util.Log;
import android.util.MergedConfiguration;
import android.util.Slog;
@@ -265,7 +264,6 @@
import com.android.internal.view.WindowManagerPolicyThread;
import com.android.server.AnimationThread;
import com.android.server.DisplayThread;
-import com.android.server.EventLogTags;
import com.android.server.FgThread;
import com.android.server.LocalServices;
import com.android.server.UiThread;
@@ -1106,6 +1104,7 @@
com.android.internal.R.bool.config_hasPermanentDpad);
mInTouchMode = context.getResources().getBoolean(
com.android.internal.R.bool.config_defaultInTouchMode);
+ inputManager.setInTouchMode(mInTouchMode);
mDrawLockTimeoutMillis = context.getResources().getInteger(
com.android.internal.R.integer.config_drawLockTimeoutMillis);
mAllowAnimationsInLowPowerMode = context.getResources().getBoolean(
@@ -2351,8 +2350,9 @@
win.setLastReportedMergedConfiguration(mergedConfiguration);
- // Update the last inset values here because the values are sent back to the client.
- // The last inset values represent the last client state.
+ // Update the last frames and inset values here because the values are sent back to the
+ // client. The last values represent the last client state.
+ win.updateLastFrames();
win.updateLastInsetValues();
win.getCompatFrame(outFrame);
@@ -3327,7 +3327,7 @@
ProtoLog.e(WM_ERROR, "Boot completed: SurfaceFlinger is dead!");
}
- EventLog.writeEvent(EventLogTags.WM_BOOT_ANIMATION_DONE, SystemClock.uptimeMillis());
+ EventLogTags.writeWmBootAnimationDone(SystemClock.uptimeMillis());
Trace.asyncTraceEnd(TRACE_TAG_WINDOW_MANAGER, "Stop bootanim", 0);
mDisplayEnabled = true;
ProtoLog.i(WM_DEBUG_SCREEN_ON, "******************** ENABLING SCREEN!");
@@ -3404,6 +3404,7 @@
synchronized (mGlobalLock) {
mInTouchMode = mode;
}
+ mInputManager.setInTouchMode(mode);
}
public void showEmulatorDisplayOverlayIfNeeded() {
@@ -3545,8 +3546,12 @@
}
}
- void setRotateForApp(int displayId,
- @DisplayRotation.FixedToUserRotation int fixedToUserRotation) {
+ @Override
+ public void setFixedToUserRotation(int displayId, int fixedToUserRotation) {
+ if (!checkCallingPermission(android.Manifest.permission.SET_ORIENTATION,
+ "freezeRotation()")) {
+ throw new SecurityException("Requires SET_ORIENTATION permission");
+ }
synchronized (mGlobalLock) {
final DisplayContent display = mRoot.getDisplayContent(displayId);
if (display == null) {
@@ -6791,19 +6796,23 @@
"setShouldShowWithInsecureKeyguard()")) {
throw new SecurityException("Requires INTERNAL_SYSTEM_WINDOW permission");
}
+ final long origId = Binder.clearCallingIdentity();
+ try {
+ synchronized (mGlobalLock) {
+ final DisplayContent displayContent = getDisplayContentOrCreate(displayId, null);
+ if (displayContent == null) {
+ ProtoLog.w(WM_ERROR, "Attempted to set flag to a display that does not exist: "
+ + "%d", displayId);
+ return;
+ }
- synchronized (mGlobalLock) {
- final DisplayContent displayContent = getDisplayContentOrCreate(displayId, null);
- if (displayContent == null) {
- ProtoLog.w(WM_ERROR, "Attempted to set flag to a display that does not exist: %d",
- displayId);
- return;
+ mDisplayWindowSettings.setShouldShowWithInsecureKeyguardLocked(displayContent,
+ shouldShow);
+
+ displayContent.reconfigureDisplayLocked();
}
-
- mDisplayWindowSettings.setShouldShowWithInsecureKeyguardLocked(displayContent,
- shouldShow);
-
- displayContent.reconfigureDisplayLocked();
+ } finally {
+ Binder.restoreCallingIdentity(origId);
}
}
@@ -6832,22 +6841,26 @@
if (!checkCallingPermission(INTERNAL_SYSTEM_WINDOW, "setShouldShowSystemDecors()")) {
throw new SecurityException("Requires INTERNAL_SYSTEM_WINDOW permission");
}
+ final long origId = Binder.clearCallingIdentity();
+ try {
+ synchronized (mGlobalLock) {
+ final DisplayContent displayContent = getDisplayContentOrCreate(displayId, null);
+ if (displayContent == null) {
+ ProtoLog.w(WM_ERROR, "Attempted to set system decors flag to a display that "
+ + "does not exist: %d", displayId);
+ return;
+ }
+ if (displayContent.isUntrustedVirtualDisplay()) {
+ throw new SecurityException("Attempted to set system decors flag to an "
+ + "untrusted virtual display: " + displayId);
+ }
- synchronized (mGlobalLock) {
- final DisplayContent displayContent = getDisplayContentOrCreate(displayId, null);
- if (displayContent == null) {
- ProtoLog.w(WM_ERROR, "Attempted to set system decors flag to a display that does "
- + "not exist: %d", displayId);
- return;
+ mDisplayWindowSettings.setShouldShowSystemDecorsLocked(displayContent, shouldShow);
+
+ displayContent.reconfigureDisplayLocked();
}
- if (displayContent.isUntrustedVirtualDisplay()) {
- throw new SecurityException("Attempted to set system decors flag to an untrusted "
- + "virtual display: " + displayId);
- }
-
- mDisplayWindowSettings.setShouldShowSystemDecorsLocked(displayContent, shouldShow);
-
- displayContent.reconfigureDisplayLocked();
+ } finally {
+ Binder.restoreCallingIdentity(origId);
}
}
@@ -6878,23 +6891,26 @@
if (!checkCallingPermission(INTERNAL_SYSTEM_WINDOW, "setShouldShowIme()")) {
throw new SecurityException("Requires INTERNAL_SYSTEM_WINDOW permission");
}
+ final long origId = Binder.clearCallingIdentity();
+ try {
+ synchronized (mGlobalLock) {
+ final DisplayContent displayContent = getDisplayContentOrCreate(displayId, null);
+ if (displayContent == null) {
+ ProtoLog.w(WM_ERROR, "Attempted to set IME flag to a display that does not "
+ + "exist: %d", displayId);
+ return;
+ }
+ if (displayContent.isUntrustedVirtualDisplay()) {
+ throw new SecurityException("Attempted to set IME flag to an untrusted "
+ + "virtual display: " + displayId);
+ }
- synchronized (mGlobalLock) {
- final DisplayContent displayContent = getDisplayContentOrCreate(displayId, null);
- if (displayContent == null) {
- ProtoLog.w(WM_ERROR,
- "Attempted to set IME flag to a display that does not exist: %d",
- displayId);
- return;
+ mDisplayWindowSettings.setShouldShowImeLocked(displayContent, shouldShow);
+
+ displayContent.reconfigureDisplayLocked();
}
- if (displayContent.isUntrustedVirtualDisplay()) {
- throw new SecurityException("Attempted to set IME flag to an untrusted "
- + "virtual display: " + displayId);
- }
-
- mDisplayWindowSettings.setShouldShowImeLocked(displayContent, shouldShow);
-
- displayContent.reconfigureDisplayLocked();
+ } finally {
+ Binder.restoreCallingIdentity(origId);
}
}
@@ -7674,19 +7690,17 @@
*/
void grantInputChannel(int callingUid, int callingPid, int displayId, SurfaceControl surface,
IWindow window, IBinder hostInputToken, InputChannel outInputChannel) {
- final InputApplicationHandle applicationHandle;
+ InputApplicationHandle applicationHandle = null;
final String name;
final InputChannel[] inputChannels;
final InputChannel clientChannel;
final InputChannel serverChannel;
synchronized (mGlobalLock) {
final WindowState hostWindow = mInputToWindowMap.get(hostInputToken);
- if (hostWindow == null) {
- Slog.e(TAG, "Failed to grant input channel");
- return;
- }
+ final String hostWindowName = (hostWindow != null)
+ ? hostWindow.getWindowTag().toString() : "Internal";
name = "EmbeddedWindow{ u" + UserHandle.getUserId(callingUid)
- + " " + hostWindow.getWindowTag() + "}";
+ + " " + hostWindowName + "}";
inputChannels = InputChannel.openInputChannelPair(name);
serverChannel = inputChannels[0];
@@ -7694,8 +7708,12 @@
mInputManager.registerInputChannel(serverChannel);
mEmbeddedWindowController.add(serverChannel.getToken(), window, hostWindow, callingUid,
callingPid);
- applicationHandle = new InputApplicationHandle(
- hostWindow.mInputWindowHandle.inputApplicationHandle);
+
+ if (hostWindow != null
+ && hostWindow.mInputWindowHandle.inputApplicationHandle != null) {
+ applicationHandle = new InputApplicationHandle(
+ hostWindow.mInputWindowHandle.inputApplicationHandle);
+ }
}
clientChannel.transferTo(outInputChannel);
diff --git a/services/core/java/com/android/server/wm/WindowManagerShellCommand.java b/services/core/java/com/android/server/wm/WindowManagerShellCommand.java
index 5da3eb6..619d87b 100644
--- a/services/core/java/com/android/server/wm/WindowManagerShellCommand.java
+++ b/services/core/java/com/android/server/wm/WindowManagerShellCommand.java
@@ -321,7 +321,7 @@
}
}
- private int runSetFixToUserRotation(PrintWriter pw) {
+ private int runSetFixToUserRotation(PrintWriter pw) throws RemoteException {
int displayId = Display.DEFAULT_DISPLAY;
String arg = getNextArgRequired();
if ("-d".equals(arg)) {
@@ -329,16 +329,16 @@
arg = getNextArgRequired();
}
- final @DisplayRotation.FixedToUserRotation int fixedToUserRotation;
+ final int fixedToUserRotation;
switch (arg) {
case "enabled":
- fixedToUserRotation = DisplayRotation.FIXED_TO_USER_ROTATION_ENABLED;
+ fixedToUserRotation = IWindowManager.FIXED_TO_USER_ROTATION_ENABLED;
break;
case "disabled":
- fixedToUserRotation = DisplayRotation.FIXED_TO_USER_ROTATION_DISABLED;
+ fixedToUserRotation = IWindowManager.FIXED_TO_USER_ROTATION_DISABLED;
break;
case "default":
- fixedToUserRotation = DisplayRotation.FIXED_TO_USER_ROTATION_DISABLED;
+ fixedToUserRotation = IWindowManager.FIXED_TO_USER_ROTATION_DEFAULT;
break;
default:
getErrPrintWriter().println("Error: expecting enabled, disabled or default, but we "
@@ -346,7 +346,7 @@
return -1;
}
- mInternal.setRotateForApp(displayId, fixedToUserRotation);
+ mInterface.setFixedToUserRotation(displayId, fixedToUserRotation);
return 0;
}
diff --git a/services/core/java/com/android/server/wm/WindowProcessController.java b/services/core/java/com/android/server/wm/WindowProcessController.java
index c1783ef..e169037 100644
--- a/services/core/java/com/android/server/wm/WindowProcessController.java
+++ b/services/core/java/com/android/server/wm/WindowProcessController.java
@@ -722,11 +722,10 @@
return true;
}
- ArraySet<Task> getReleaseSomeActivitiesTasks() {
+ void releaseSomeActivities(String reason) {
// Examine all activities currently running in the process.
- Task firstTask = null;
- // Tasks is non-null only if two or more tasks are found.
- ArraySet<Task> tasks = null;
+ // Candidate activities that can be destroyed.
+ ArrayList<ActivityRecord> candidates = null;
if (DEBUG_RELEASE) Slog.d(TAG_RELEASE, "Trying to release some activities in " + this);
for (int i = 0; i < mActivities.size(); i++) {
final ActivityRecord r = mActivities.get(i);
@@ -735,33 +734,37 @@
// down before we try to prune more activities.
if (r.finishing || r.isState(DESTROYING, DESTROYED)) {
if (DEBUG_RELEASE) Slog.d(TAG_RELEASE, "Abort release; already destroying: " + r);
- return null;
+ return;
}
// Don't consider any activities that are currently not in a state where they
// can be destroyed.
- if (r.mVisibleRequested || !r.stopped || !r.hasSavedState()
+ if (r.mVisibleRequested || !r.stopped || !r.hasSavedState() || !r.isDestroyable()
|| r.isState(STARTED, RESUMED, PAUSING, PAUSED, STOPPING)) {
if (DEBUG_RELEASE) Slog.d(TAG_RELEASE, "Not releasing in-use activity: " + r);
continue;
}
- final Task task = r.getTask();
- if (task != null) {
- if (DEBUG_RELEASE) Slog.d(TAG_RELEASE, "Collecting release task " + task
- + " from " + r);
- if (firstTask == null) {
- firstTask = task;
- } else if (firstTask != task) {
- if (tasks == null) {
- tasks = new ArraySet<>();
- tasks.add(firstTask);
- }
- tasks.add(task);
+ if (r.getParent() != null) {
+ if (candidates == null) {
+ candidates = new ArrayList<>();
}
+ candidates.add(r);
}
}
- return tasks;
+ if (candidates != null) {
+ // Sort based on z-order in hierarchy.
+ candidates.sort(WindowContainer::compareTo);
+ // Release some older activities
+ int maxRelease = Math.max(candidates.size(), 1);
+ do {
+ final ActivityRecord r = candidates.remove(0);
+ if (DEBUG_RELEASE) Slog.v(TAG_RELEASE, "Destroying " + r
+ + " in state " + r.getState() + " for reason " + reason);
+ r.destroyImmediately(true /*removeFromApp*/, reason);
+ --maxRelease;
+ } while (maxRelease > 0);
+ }
}
public interface ComputeOomAdjCallback {
diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java
index 0441669..ce26e5f 100644
--- a/services/core/java/com/android/server/wm/WindowState.java
+++ b/services/core/java/com/android/server/wm/WindowState.java
@@ -983,7 +983,7 @@
- mWindowFrames.mVisibleFrame.bottom;
if (bottomOverlap > 0) {
final int distanceToTop = Math.max(mWindowFrames.mContainingFrame.top
- - mWindowFrames.mDisplayFrame.top, 0);
+ - mWindowFrames.mContentFrame.top, 0);
int offs = Math.min(bottomOverlap, distanceToTop);
mWindowFrames.mContainingFrame.top -= offs;
}
@@ -1308,8 +1308,7 @@
// We update mLastFrame always rather than in the conditional with the last inset
// variables, because mFrameSizeChanged only tracks the width and height changing.
- mWindowFrames.mLastFrame.set(mWindowFrames.mFrame);
- mWindowFrames.mLastRelFrame.set(mWindowFrames.mRelFrame);
+ updateLastFrames();
if (didFrameInsetsChange
|| winAnimator.mSurfaceResized
@@ -4817,6 +4816,12 @@
return mEmbeddedDisplayContents.remove(dc);
}
+ /** Updates the last frames and relative frames to the current ones. */
+ void updateLastFrames() {
+ mWindowFrames.mLastFrame.set(mWindowFrames.mFrame);
+ mWindowFrames.mLastRelFrame.set(mWindowFrames.mRelFrame);
+ }
+
/**
* Updates the last inset values to the current ones.
*/
diff --git a/services/core/jni/Android.bp b/services/core/jni/Android.bp
index dd2b27d..fd8094c 100644
--- a/services/core/jni/Android.bp
+++ b/services/core/jni/Android.bp
@@ -53,7 +53,6 @@
"com_android_server_am_LowMemDetector.cpp",
"onload.cpp",
":lib_networkStatsFactory_native",
- ":tethering-jni-srcs",
],
include_dirs: [
@@ -125,6 +124,7 @@
"android.hardware.gnss@1.0",
"android.hardware.gnss@1.1",
"android.hardware.gnss@2.0",
+ "android.hardware.gnss@2.1",
"android.hardware.gnss.measurement_corrections@1.0",
"android.hardware.gnss.visibility_control@1.0",
"android.hardware.input.classifier@1.0",
@@ -133,7 +133,6 @@
"android.hardware.power@1.0",
"android.hardware.power@1.1",
"android.hardware.power.stats@1.0",
- "android.hardware.tetheroffload.config@1.0",
"android.hardware.thermal@1.0",
"android.hardware.tv.cec@1.0",
"android.hardware.tv.input@1.0",
diff --git a/services/core/jni/com_android_server_VibratorService.cpp b/services/core/jni/com_android_server_VibratorService.cpp
index 746610d..612a1e7 100644
--- a/services/core/jni/com_android_server_VibratorService.cpp
+++ b/services/core/jni/com_android_server_VibratorService.cpp
@@ -291,7 +291,7 @@
static void vibratorSetAmplitude(JNIEnv*, jclass, jint amplitude) {
if (auto hal = getHal<aidl::IVibrator>()) {
- auto status = hal->call(&aidl::IVibrator::IVibrator::setAmplitude, amplitude);
+ auto status = hal->call(&aidl::IVibrator::IVibrator::setAmplitude, static_cast<float>(amplitude) / UINT8_MAX);
if (!status.isOk()) {
ALOGE("Failed to set vibrator amplitude: %s", status.toString8().string());
}
diff --git a/services/core/jni/com_android_server_input_InputManagerService.cpp b/services/core/jni/com_android_server_input_InputManagerService.cpp
index b546a1d..9344a9b 100644
--- a/services/core/jni/com_android_server_input_InputManagerService.cpp
+++ b/services/core/jni/com_android_server_input_InputManagerService.cpp
@@ -1502,6 +1502,13 @@
im->getInputManager()->getDispatcher()->setInputFilterEnabled(enabled);
}
+static void nativeSetInTouchMode(JNIEnv* /* env */, jclass /* clazz */,
+ jlong ptr, jboolean inTouchMode) {
+ NativeInputManager* im = reinterpret_cast<NativeInputManager*>(ptr);
+
+ im->getInputManager()->getDispatcher()->setInTouchMode(inTouchMode);
+}
+
static jint nativeInjectInputEvent(JNIEnv* env, jclass /* clazz */,
jlong ptr, jobject inputEventObj, jint injectorPid, jint injectorUid,
jint syncMode, jint timeoutMillis, jint policyFlags) {
@@ -1781,6 +1788,8 @@
(void*) nativePilferPointers },
{ "nativeSetInputFilterEnabled", "(JZ)V",
(void*) nativeSetInputFilterEnabled },
+ { "nativeSetInTouchMode", "(JZ)V",
+ (void*) nativeSetInTouchMode },
{ "nativeInjectInputEvent", "(JLandroid/view/InputEvent;IIIII)I",
(void*) nativeInjectInputEvent },
{ "nativeToggleCapsLock", "(JI)V",
diff --git a/services/core/jni/com_android_server_location_GnssLocationProvider.cpp b/services/core/jni/com_android_server_location_GnssLocationProvider.cpp
index 3bc2838..6504e31 100644
--- a/services/core/jni/com_android_server_location_GnssLocationProvider.cpp
+++ b/services/core/jni/com_android_server_location_GnssLocationProvider.cpp
@@ -21,10 +21,12 @@
#include <android/hardware/gnss/1.0/IGnss.h>
#include <android/hardware/gnss/1.1/IGnss.h>
#include <android/hardware/gnss/2.0/IGnss.h>
+#include <android/hardware/gnss/2.1/IGnss.h>
#include <android/hardware/gnss/1.0/IGnssMeasurement.h>
#include <android/hardware/gnss/1.1/IGnssMeasurement.h>
#include <android/hardware/gnss/2.0/IGnssMeasurement.h>
+#include <android/hardware/gnss/2.1/IGnssMeasurement.h>
#include <android/hardware/gnss/measurement_corrections/1.0/IMeasurementCorrections.h>
#include <android/hardware/gnss/visibility_control/1.0/IGnssVisibilityControl.h>
#include <nativehelper/JNIHelp.h>
@@ -140,7 +142,6 @@
using android::hardware::gnss::V1_0::IGnssXtraCallback;
using android::hardware::gnss::V2_0::ElapsedRealtimeFlags;
-using android::hardware::gnss::V2_0::IGnssCallback;
using android::hardware::gnss::measurement_corrections::V1_0::MeasurementCorrections;
using android::hardware::gnss::measurement_corrections::V1_0::SingleSatCorrection;
@@ -153,7 +154,10 @@
using IGnss_V1_0 = android::hardware::gnss::V1_0::IGnss;
using IGnss_V1_1 = android::hardware::gnss::V1_1::IGnss;
using IGnss_V2_0 = android::hardware::gnss::V2_0::IGnss;
+using IGnss_V2_1 = android::hardware::gnss::V2_1::IGnss;
using IGnssCallback_V1_0 = android::hardware::gnss::V1_0::IGnssCallback;
+using IGnssCallback_V2_0 = android::hardware::gnss::V2_0::IGnssCallback;
+using IGnssCallback_V2_1 = android::hardware::gnss::V2_1::IGnssCallback;
using IGnssConfiguration_V1_0 = android::hardware::gnss::V1_0::IGnssConfiguration;
using IGnssConfiguration_V1_1 = android::hardware::gnss::V1_1::IGnssConfiguration;
using IGnssConfiguration_V2_0 = android::hardware::gnss::V2_0::IGnssConfiguration;
@@ -162,9 +166,11 @@
using IGnssMeasurement_V1_0 = android::hardware::gnss::V1_0::IGnssMeasurement;
using IGnssMeasurement_V1_1 = android::hardware::gnss::V1_1::IGnssMeasurement;
using IGnssMeasurement_V2_0 = android::hardware::gnss::V2_0::IGnssMeasurement;
+using IGnssMeasurement_V2_1 = android::hardware::gnss::V2_1::IGnssMeasurement;
using IGnssMeasurementCallback_V1_0 = android::hardware::gnss::V1_0::IGnssMeasurementCallback;
using IGnssMeasurementCallback_V1_1 = android::hardware::gnss::V1_1::IGnssMeasurementCallback;
using IGnssMeasurementCallback_V2_0 = android::hardware::gnss::V2_0::IGnssMeasurementCallback;
+using IGnssMeasurementCallback_V2_1 = android::hardware::gnss::V2_1::IGnssMeasurementCallback;
using IAGnssRil_V1_0 = android::hardware::gnss::V1_0::IAGnssRil;
using IAGnssRil_V2_0 = android::hardware::gnss::V2_0::IAGnssRil;
using IAGnss_V1_0 = android::hardware::gnss::V1_0::IAGnss;
@@ -201,6 +207,7 @@
sp<IGnss_V1_0> gnssHal = nullptr;
sp<IGnss_V1_1> gnssHal_V1_1 = nullptr;
sp<IGnss_V2_0> gnssHal_V2_0 = nullptr;
+sp<IGnss_V2_1> gnssHal_V2_1 = nullptr;
sp<IGnssXtra> gnssXtraIface = nullptr;
sp<IAGnssRil_V1_0> agnssRilIface = nullptr;
sp<IAGnssRil_V2_0> agnssRilIface_V2_0 = nullptr;
@@ -218,6 +225,7 @@
sp<IGnssMeasurement_V1_0> gnssMeasurementIface = nullptr;
sp<IGnssMeasurement_V1_1> gnssMeasurementIface_V1_1 = nullptr;
sp<IGnssMeasurement_V2_0> gnssMeasurementIface_V2_0 = nullptr;
+sp<IGnssMeasurement_V2_1> gnssMeasurementIface_V2_1 = nullptr;
sp<IGnssNavigationMessage> gnssNavigationMessageIface = nullptr;
sp<IMeasurementCorrections> gnssCorrectionsIface = nullptr;
sp<IGnssVisibilityControl> gnssVisibilityControlIface = nullptr;
@@ -582,9 +590,9 @@
/*
* GnssCallback class implements the callback methods for IGnss interface.
*/
-struct GnssCallback : public IGnssCallback {
+struct GnssCallback : public IGnssCallback_V2_1 {
Return<void> gnssLocationCb(const GnssLocation_V1_0& location) override;
- Return<void> gnssStatusCb(const IGnssCallback::GnssStatusValue status) override;
+ Return<void> gnssStatusCb(const IGnssCallback_V1_0::GnssStatusValue status) override;
Return<void> gnssSvStatusCb(const IGnssCallback_V1_0::GnssSvStatus& svStatus) override {
return gnssSvStatusCbImpl(svStatus);
}
@@ -595,7 +603,7 @@
Return<void> gnssRequestTimeCb() override;
Return<void> gnssRequestLocationCb(const bool independentFromGnss) override;
- Return<void> gnssSetSystemInfoCb(const IGnssCallback::GnssSystemInfo& info) override;
+ Return<void> gnssSetSystemInfoCb(const IGnssCallback_V1_0::GnssSystemInfo& info) override;
// New in 1.1
Return<void> gnssNameCb(const android::hardware::hidl_string& name) override;
@@ -605,10 +613,12 @@
override;
Return<void> gnssSetCapabilitiesCb_2_0(uint32_t capabilities) override;
Return<void> gnssLocationCb_2_0(const GnssLocation_V2_0& location) override;
- Return<void> gnssSvStatusCb_2_0(const hidl_vec<IGnssCallback::GnssSvInfo>& svInfoList) override {
+ Return<void> gnssSvStatusCb_2_0(const hidl_vec<IGnssCallback_V2_0::GnssSvInfo>& svInfoList) override {
return gnssSvStatusCbImpl(svInfoList);
}
-
+ Return<void> gnssSvStatusCb_2_1(const hidl_vec<IGnssCallback_V2_1::GnssSvInfo>& svInfoList) override {
+ return gnssSvStatusCbImpl(svInfoList);
+ }
Return<void> gnssSetCapabilitesCbImpl(uint32_t capabilities, bool hasSubHalCapabilityFlags);
// TODO: Reconsider allocation cost vs threadsafety on these statics
@@ -625,7 +635,11 @@
return svStatus.numSvs;
}
- uint32_t getGnssSvInfoListSize(const hidl_vec<IGnssCallback::GnssSvInfo>& svInfoList) {
+ uint32_t getGnssSvInfoListSize(const hidl_vec<IGnssCallback_V2_0::GnssSvInfo>& svInfoList) {
+ return svInfoList.size();
+ }
+
+ uint32_t getGnssSvInfoListSize(const hidl_vec<IGnssCallback_V2_1::GnssSvInfo>& svInfoList) {
return svInfoList.size();
}
@@ -635,17 +649,28 @@
}
const IGnssCallback_V1_0::GnssSvInfo& getGnssSvInfoOfIndex(
- const hidl_vec<IGnssCallback::GnssSvInfo>& svInfoList, size_t i) {
+ const hidl_vec<IGnssCallback_V2_0::GnssSvInfo>& svInfoList, size_t i) {
return svInfoList[i].v1_0;
}
+ const IGnssCallback_V1_0::GnssSvInfo& getGnssSvInfoOfIndex(
+ const hidl_vec<IGnssCallback_V2_1::GnssSvInfo>& svInfoList, size_t i) {
+ // TODO(b/144850155): fill baseband CN0 after it's available in Java object.
+ ALOGD("getGnssSvInfoOfIndex %d: baseband C/N0: %f", (int) i, svInfoList[i].basebandCN0DbHz);
+ return svInfoList[i].v2_0.v1_0;
+ }
+
uint32_t getConstellationType(const IGnssCallback_V1_0::GnssSvStatus& svStatus, size_t i) {
return static_cast<uint32_t>(svStatus.gnssSvList.data()[i].constellation);
}
- uint32_t getConstellationType(const hidl_vec<IGnssCallback::GnssSvInfo>& svInfoList, size_t i) {
+ uint32_t getConstellationType(const hidl_vec<IGnssCallback_V2_0::GnssSvInfo>& svInfoList, size_t i) {
return static_cast<uint32_t>(svInfoList[i].constellation);
}
+
+ uint32_t getConstellationType(const hidl_vec<IGnssCallback_V2_1::GnssSvInfo>& svInfoList, size_t i) {
+ return static_cast<uint32_t>(svInfoList[i].v2_0.constellation);
+ }
};
Return<void> GnssCallback::gnssNameCb(const android::hardware::hidl_string& name) {
@@ -686,7 +711,7 @@
return gnssLocationCbImpl<GnssLocation_V2_0>(location);
}
-Return<void> GnssCallback::gnssStatusCb(const IGnssCallback::GnssStatusValue status) {
+Return<void> GnssCallback::gnssStatusCb(const IGnssCallback_V2_0::GnssStatusValue status) {
JNIEnv* env = getJniEnv();
env->CallVoidMethod(mCallbacksObj, method_reportStatus, status);
checkAndClearExceptionFromCallback(env, __FUNCTION__);
@@ -704,20 +729,22 @@
jfloatArray elevArray = env->NewFloatArray(listSize);
jfloatArray azimArray = env->NewFloatArray(listSize);
jfloatArray carrierFreqArray = env->NewFloatArray(listSize);
+ jfloatArray basebandCn0Array = env->NewFloatArray(listSize);
jint* svidWithFlags = env->GetIntArrayElements(svidWithFlagArray, 0);
jfloat* cn0s = env->GetFloatArrayElements(cn0Array, 0);
jfloat* elev = env->GetFloatArrayElements(elevArray, 0);
jfloat* azim = env->GetFloatArrayElements(azimArray, 0);
jfloat* carrierFreq = env->GetFloatArrayElements(carrierFreqArray, 0);
+ jfloat* basebandCn0s = env->GetFloatArrayElements(basebandCn0Array, 0);
/*
* Read GNSS SV info.
*/
for (size_t i = 0; i < listSize; ++i) {
enum ShiftWidth: uint8_t {
- SVID_SHIFT_WIDTH = 8,
- CONSTELLATION_TYPE_SHIFT_WIDTH = 4
+ SVID_SHIFT_WIDTH = 12,
+ CONSTELLATION_TYPE_SHIFT_WIDTH = 8
};
const IGnssCallback_V1_0::GnssSvInfo& info = getGnssSvInfoOfIndex(svStatus, i);
@@ -728,6 +755,8 @@
elev[i] = info.elevationDegrees;
azim[i] = info.azimuthDegrees;
carrierFreq[i] = info.carrierFrequencyHz;
+ // TODO(b/144850155): fill svidWithFlags with hasBasebandCn0DbHz based on HAL versions
+ basebandCn0s[i] = 0.0;
}
env->ReleaseIntArrayElements(svidWithFlagArray, svidWithFlags, 0);
@@ -735,10 +764,11 @@
env->ReleaseFloatArrayElements(elevArray, elev, 0);
env->ReleaseFloatArrayElements(azimArray, azim, 0);
env->ReleaseFloatArrayElements(carrierFreqArray, carrierFreq, 0);
+ env->ReleaseFloatArrayElements(basebandCn0Array, basebandCn0s, 0);
env->CallVoidMethod(mCallbacksObj, method_reportSvStatus,
static_cast<jint>(listSize), svidWithFlagArray, cn0Array, elevArray, azimArray,
- carrierFreqArray);
+ carrierFreqArray, basebandCn0Array);
checkAndClearExceptionFromCallback(env, __FUNCTION__);
return Void();
@@ -803,7 +833,7 @@
return Void();
}
-Return<void> GnssCallback::gnssSetSystemInfoCb(const IGnssCallback::GnssSystemInfo& info) {
+Return<void> GnssCallback::gnssSetSystemInfoCb(const IGnssCallback_V2_0::GnssSystemInfo& info) {
ALOGD("%s: yearOfHw=%d\n", __func__, info.yearOfHw);
JNIEnv* env = getJniEnv();
@@ -992,7 +1022,9 @@
* GnssMeasurementCallback implements the callback methods required for the
* GnssMeasurement interface.
*/
-struct GnssMeasurementCallback : public IGnssMeasurementCallback_V2_0 {
+struct GnssMeasurementCallback : public IGnssMeasurementCallback_V2_1 {
+ Return<void> gnssMeasurementCb_2_1(const IGnssMeasurementCallback_V2_1::GnssData& data)
+ override;
Return<void> gnssMeasurementCb_2_0(const IGnssMeasurementCallback_V2_0::GnssData& data)
override;
Return<void> gnssMeasurementCb(const IGnssMeasurementCallback_V1_1::GnssData& data) override;
@@ -1016,6 +1048,12 @@
void setMeasurementData(JNIEnv* env, jobject clock, jobjectArray measurementArray);
};
+Return<void> GnssMeasurementCallback::gnssMeasurementCb_2_1(
+ const IGnssMeasurementCallback_V2_1::GnssData& data) {
+ translateAndSetGnssData(data);
+ return Void();
+}
+
Return<void> GnssMeasurementCallback::gnssMeasurementCb_2_0(
const IGnssMeasurementCallback_V2_0::GnssData& data) {
translateAndSetGnssData(data);
@@ -1137,6 +1175,17 @@
SET(ConstellationType, static_cast<int32_t>(measurement_V2_0->constellation));
}
+// Preallocate object as: JavaObject object(env, "android/location/GnssMeasurement");
+template<>
+void GnssMeasurementCallback::translateSingleGnssMeasurement
+ <IGnssMeasurementCallback_V2_1::GnssMeasurement>(
+ const IGnssMeasurementCallback_V2_1::GnssMeasurement* measurement_V2_1,
+ JavaObject& object) {
+ translateSingleGnssMeasurement(&(measurement_V2_1->v2_0), object);
+ // TODO(b/144850155): fill baseband CN0 after it's available in Java object
+ ALOGD("baseband CN0DbHz = %f\n", measurement_V2_1->basebandCN0DbHz);
+}
+
template<class T>
void GnssMeasurementCallback::translateGnssClock(JavaObject& object, const T& data) {
translateGnssClock(object, data.clock);
@@ -1518,6 +1567,17 @@
/* Initializes the GNSS service handle. */
static void android_location_GnssLocationProvider_set_gps_service_handle() {
+ ALOGD("Trying IGnss_V2_1::getService()");
+ gnssHal_V2_1 = IGnss_V2_1::getService();
+ if (gnssHal_V2_1 != nullptr) {
+ gnssHal = gnssHal_V2_1;
+ gnssHal_V2_0 = gnssHal_V2_1;
+ gnssHal_V1_1 = gnssHal_V2_1;
+ gnssHal = gnssHal_V2_1;
+ return;
+ }
+
+ ALOGD("gnssHal 2.1 was null, trying 2.0");
gnssHal_V2_0 = IGnss_V2_0::getService();
if (gnssHal_V2_0 != nullptr) {
gnssHal = gnssHal_V2_0;
@@ -1545,7 +1605,7 @@
method_reportLocation = env->GetMethodID(clazz, "reportLocation",
"(ZLandroid/location/Location;)V");
method_reportStatus = env->GetMethodID(clazz, "reportStatus", "(I)V");
- method_reportSvStatus = env->GetMethodID(clazz, "reportSvStatus", "(I[I[F[F[F[F)V");
+ method_reportSvStatus = env->GetMethodID(clazz, "reportSvStatus", "(I[I[F[F[F[F[F)V");
method_reportAGpsStatus = env->GetMethodID(clazz, "reportAGpsStatus", "(II[B)V");
method_reportNmea = env->GetMethodID(clazz, "reportNmea", "(J)V");
method_setTopHalCapabilities = env->GetMethodID(clazz, "setTopHalCapabilities", "(I)V");
@@ -1746,18 +1806,30 @@
}
// Allow all causal combinations between IGnss.hal and IGnssMeasurement.hal. That means,
+ // 2.1@IGnss can be paired with {1.0, 1,1, 2.0, 2.1}@IGnssMeasurement
// 2.0@IGnss can be paired with {1.0, 1,1, 2.0}@IGnssMeasurement
// 1.1@IGnss can be paired {1.0, 1.1}@IGnssMeasurement
// 1.0@IGnss is paired with 1.0@IGnssMeasurement
gnssMeasurementIface = nullptr;
- if (gnssHal_V2_0 != nullptr) {
+ if (gnssHal_V2_1 != nullptr) {
+ auto gnssMeasurement = gnssHal_V2_1->getExtensionGnssMeasurement_2_1();
+ if (!gnssMeasurement.isOk()) {
+ ALOGD("Unable to get a handle to GnssMeasurement_V2_1");
+ } else {
+ gnssMeasurementIface_V2_1 = gnssMeasurement;
+ gnssMeasurementIface_V2_0 = gnssMeasurementIface_V2_1;
+ gnssMeasurementIface_V1_1 = gnssMeasurementIface_V2_0;
+ gnssMeasurementIface = gnssMeasurementIface_V1_1;
+ }
+ }
+ if (gnssHal_V2_0 != nullptr && gnssMeasurementIface == nullptr) {
auto gnssMeasurement = gnssHal_V2_0->getExtensionGnssMeasurement_2_0();
if (!gnssMeasurement.isOk()) {
ALOGD("Unable to get a handle to GnssMeasurement_V2_0");
} else {
gnssMeasurementIface_V2_0 = gnssMeasurement;
gnssMeasurementIface_V1_1 = gnssMeasurementIface_V2_0;
- gnssMeasurementIface = gnssMeasurementIface_V2_0;
+ gnssMeasurementIface = gnssMeasurementIface_V1_1;
}
}
if (gnssHal_V1_1 != nullptr && gnssMeasurementIface == nullptr) {
@@ -1925,8 +1997,10 @@
Return<bool> result = false;
// Set top level IGnss.hal callback.
- sp<IGnssCallback> gnssCbIface = new GnssCallback();
- if (gnssHal_V2_0 != nullptr) {
+ sp<IGnssCallback_V2_1> gnssCbIface = new GnssCallback();
+ if (gnssHal_V2_1 != nullptr) {
+ result = gnssHal_V2_1->setCallback_2_1(gnssCbIface);
+ } else if (gnssHal_V2_0 != nullptr) {
result = gnssHal_V2_0->setCallback_2_0(gnssCbIface);
} else if (gnssHal_V1_1 != nullptr) {
result = gnssHal_V1_1->setCallback_1_1(gnssCbIface);
@@ -2559,7 +2633,9 @@
sp<GnssMeasurementCallback> cbIface = new GnssMeasurementCallback();
Return<IGnssMeasurement_V1_0::GnssMeasurementStatus> result =
IGnssMeasurement_V1_0::GnssMeasurementStatus::ERROR_GENERIC;
- if (gnssMeasurementIface_V2_0 != nullptr) {
+ if (gnssMeasurementIface_V2_1 != nullptr) {
+ result = gnssMeasurementIface_V2_1->setCallback_2_1(cbIface, enableFullTracking);
+ } else if (gnssMeasurementIface_V2_0 != nullptr) {
result = gnssMeasurementIface_V2_0->setCallback_2_0(cbIface, enableFullTracking);
} else if (gnssMeasurementIface_V1_1 != nullptr) {
result = gnssMeasurementIface_V1_1->setCallback_1_1(cbIface, enableFullTracking);
diff --git a/services/core/jni/onload.cpp b/services/core/jni/onload.cpp
index efffa6c..692c9d2 100644
--- a/services/core/jni/onload.cpp
+++ b/services/core/jni/onload.cpp
@@ -40,7 +40,6 @@
int register_android_server_VibratorService(JNIEnv* env);
int register_android_server_location_GnssLocationProvider(JNIEnv* env);
int register_android_server_connectivity_Vpn(JNIEnv* env);
-int register_android_server_connectivity_tethering_OffloadHardwareInterface(JNIEnv*);
int register_android_server_TestNetworkService(JNIEnv* env);
int register_android_server_devicepolicy_CryptoTestHelper(JNIEnv*);
int register_android_server_hdmi_HdmiCecController(JNIEnv* env);
@@ -88,7 +87,6 @@
register_android_server_SystemServer(env);
register_android_server_location_GnssLocationProvider(env);
register_android_server_connectivity_Vpn(env);
- register_android_server_connectivity_tethering_OffloadHardwareInterface(env);
register_android_server_TestNetworkService(env);
register_android_server_devicepolicy_CryptoTestHelper(env);
register_android_server_ConsumerIrService(env);
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
index 99f484e..2499ad8 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
@@ -137,6 +137,8 @@
import android.app.admin.SystemUpdateInfo;
import android.app.admin.SystemUpdatePolicy;
import android.app.backup.IBackupManager;
+import android.app.timedetector.ManualTimeSuggestion;
+import android.app.timedetector.TimeDetector;
import android.app.trust.TrustManager;
import android.app.usage.UsageStatsManagerInternal;
import android.compat.annotation.ChangeId;
@@ -1956,6 +1958,10 @@
return mContext.getSystemService(AlarmManager.class);
}
+ TimeDetector getTimeDetector() {
+ return mContext.getSystemService(TimeDetector.class);
+ }
+
ConnectivityManager getConnectivityManager() {
return mContext.getSystemService(ConnectivityManager.class);
}
@@ -5568,6 +5574,13 @@
}
}
+ private void enforceProfileOwnerOfOrganizationOwnedDevice(ActiveAdmin admin) {
+ if (!isProfileOwnerOfOrganizationOwnedDevice(admin)) {
+ throw new SecurityException(String.format("Provided admin %s is either not a profile "
+ + "owner or not on a corporate-owned device.", admin));
+ }
+ }
+
@Override
public boolean approveCaCert(String alias, int userId, boolean approval) {
enforceManageUsers();
@@ -6613,27 +6626,86 @@
}
@Override
- public void wipeDataWithReason(int flags, String wipeReasonForUser) {
+ public void wipeDataWithReason(int flags, String wipeReasonForUser,
+ boolean calledOnParentInstance) {
if (!mHasFeature) {
return;
}
- Preconditions.checkStringNotEmpty(wipeReasonForUser, "wipeReasonForUser is null or empty");
+
enforceFullCrossUsersPermission(mInjector.userHandleGetCallingUserId());
final ActiveAdmin admin;
synchronized (getLockObject()) {
admin = getActiveAdminForCallerLocked(null, DeviceAdminInfo.USES_POLICY_WIPE_DATA);
}
+
+ if (admin == null) {
+ throw new SecurityException(String.format("No active admin for user %d",
+ mInjector.userHandleGetCallingUserId()));
+ }
+
+ boolean calledByProfileOwnerOnOrgOwnedDevice =
+ isProfileOwnerOfOrganizationOwnedDevice(admin);
+
+ if (calledOnParentInstance && !calledByProfileOwnerOnOrgOwnedDevice) {
+ throw new SecurityException("Wiping the entire device can only be done by a profile"
+ + "owner on organization-owned device.");
+ }
+
+ if ((flags & WIPE_RESET_PROTECTION_DATA) != 0) {
+ if (!isDeviceOwner(admin) && !calledByProfileOwnerOnOrgOwnedDevice) {
+ throw new SecurityException(
+ "Only device owners or proflie owners of organization-owned device"
+ + " can set WIPE_RESET_PROTECTION_DATA");
+ }
+ }
+
+ if (TextUtils.isEmpty(wipeReasonForUser)) {
+ if (calledByProfileOwnerOnOrgOwnedDevice && !calledOnParentInstance) {
+ wipeReasonForUser = mContext.getString(R.string.device_ownership_relinquished);
+ } else {
+ wipeReasonForUser = mContext.getString(
+ R.string.work_profile_deleted_description_dpm_wipe);
+ }
+ }
+
+ int userId = admin.getUserHandle().getIdentifier();
+ if (calledByProfileOwnerOnOrgOwnedDevice) {
+ // When wipeData is called on the parent instance, it implies wiping the entire device.
+ if (calledOnParentInstance) {
+ userId = UserHandle.USER_SYSTEM;
+ } else {
+ // when wipeData is _not_ called on the parent instance, it implies relinquishing
+ // control over the device, wiping only the work profile. So the user restriction
+ // on profile removal needs to be removed first.
+
+ final long ident = mInjector.binderClearCallingIdentity();
+ try {
+ // Clear restriction as user.
+ mUserManager.setUserRestriction(
+ UserManager.DISALLOW_REMOVE_MANAGED_PROFILE, false,
+ UserHandle.SYSTEM);
+
+ // Device-wide policies set by the profile owner need to be cleaned up here.
+ mLockPatternUtils.setDeviceOwnerInfo(null);
+ } finally {
+ mInjector.binderRestoreCallingIdentity(ident);
+ }
+ }
+ }
+
DevicePolicyEventLogger
.createEvent(DevicePolicyEnums.WIPE_DATA_WITH_REASON)
.setAdmin(admin.info.getComponent())
.setInt(flags)
.write();
- String internalReason = "DevicePolicyManager.wipeDataWithReason() from "
- + admin.info.getComponent().flattenToShortString();
+ String internalReason = String.format(
+ "DevicePolicyManager.wipeDataWithReason() from %s, organization-owned? %s",
+ admin.info.getComponent().flattenToShortString(),
+ calledByProfileOwnerOnOrgOwnedDevice);
+
wipeDataNoLock(
- admin.info.getComponent(), flags, internalReason, wipeReasonForUser,
- admin.getUserHandle().getIdentifier());
+ admin.info.getComponent(), flags, internalReason, wipeReasonForUser, userId);
}
private void wipeDataNoLock(ComponentName admin, int flags, String internalReason,
@@ -6657,10 +6729,6 @@
}
if ((flags & WIPE_RESET_PROTECTION_DATA) != 0) {
- if (!isDeviceOwner(admin, userId)) {
- throw new SecurityException(
- "Only device owner admins can set WIPE_RESET_PROTECTION_DATA");
- }
PersistentDataBlockManager manager = (PersistentDataBlockManager)
mContext.getSystemService(Context.PERSISTENT_DATA_BLOCK_SERVICE);
if (manager != null) {
@@ -7298,6 +7366,7 @@
}
}
+ // TODO: (b/145604635) Add upgrade case
// Turn AUTO_TIME on in settings if it is required
if (required) {
long ident = mInjector.binderClearCallingIdentity();
@@ -7341,6 +7410,42 @@
}
}
+ /**
+ * Set whether auto time is enabled on the device.
+ */
+ @Override
+ public void setAutoTime(ComponentName who, boolean enabled) {
+ if (!mHasFeature) {
+ return;
+ }
+ Preconditions.checkNotNull(who, "ComponentName is null");
+ // TODO (b/145286957) Refactor security checks
+ enforceDeviceOwnerOrProfileOwnerOnUser0OrProfileOwnerOrganizationOwned();
+
+ mInjector.binderWithCleanCallingIdentity(() ->
+ mInjector.settingsGlobalPutInt(Settings.Global.AUTO_TIME, enabled ? 1 : 0));
+
+ DevicePolicyEventLogger
+ .createEvent(DevicePolicyEnums.SET_AUTO_TIME)
+ .setAdmin(who)
+ .setBoolean(enabled)
+ .write();
+ }
+
+ /**
+ * Returns whether or auto time is used on the device or not.
+ */
+ @Override
+ public boolean getAutoTime(ComponentName who) {
+ if (!mHasFeature) {
+ return false;
+ }
+ Preconditions.checkNotNull(who, "ComponentName is null");
+ enforceDeviceOwnerOrProfileOwnerOnUser0OrProfileOwnerOrganizationOwned();
+
+ return mInjector.settingsGlobalGetInt(Global.AUTO_TIME, 0) > 0;
+ }
+
@Override
public void setForceEphemeralUsers(ComponentName who, boolean forceEphemeralUsers) {
if (!mHasFeature) {
@@ -7950,10 +8055,39 @@
private boolean canProfileOwnerAccessDeviceIds(int userId) {
synchronized (getLockObject()) {
- return mOwners.canProfileOwnerAccessDeviceIds(userId);
+ return mOwners.isProfileOwnerOfOrganizationOwnedDevice(userId);
}
}
+ /**
+ * Returns true if the provided {@code admin} is a profile owner and the profile is marked
+ * as organization-owned.
+ * The {@code admin} parameter must be obtained by the service by calling
+ * {@code getActiveAdminForCallerLocked} or one of the similar variants, not caller-supplied
+ * input.
+ */
+ private boolean isProfileOwnerOfOrganizationOwnedDevice(@Nullable ActiveAdmin admin) {
+ if (admin == null) {
+ return false;
+ }
+
+ final int adminUserId = admin.getUserHandle().getIdentifier();
+
+ if (!isProfileOwner(admin.info.getComponent(), adminUserId)) {
+ Slog.w(LOG_TAG, String.format("%s is not profile owner of user %d",
+ admin.info.getComponent(), adminUserId));
+ return false;
+ }
+
+ if (!canProfileOwnerAccessDeviceIds(adminUserId)) {
+ Slog.w(LOG_TAG, String.format("Profile owner of user %d does not own the device.",
+ adminUserId));
+ return false;
+ }
+
+ return true;
+ }
+
@Override
public ComponentName getDeviceOwnerComponent(boolean callingUserOnly) {
if (!mHasFeature) {
@@ -8240,14 +8374,17 @@
}
synchronized (getLockObject()) {
- getActiveAdminForCallerLocked(who, DeviceAdminInfo.USES_POLICY_DEVICE_OWNER);
- long token = mInjector.binderClearCallingIdentity();
- try {
- mLockPatternUtils.setDeviceOwnerInfo(info != null ? info.toString() : null);
- } finally {
- mInjector.binderRestoreCallingIdentity(token);
+ ActiveAdmin admin = getActiveAdminForCallerLocked(who,
+ DeviceAdminInfo.USES_POLICY_PROFILE_OWNER);
+ if (!isProfileOwnerOfOrganizationOwnedDevice(admin) && !isDeviceOwner(admin)) {
+ throw new SecurityException("Only Device Owner or Profile Owner of"
+ + " organization-owned device can set screen lock info.");
}
}
+
+ mInjector.binderWithCleanCallingIdentity(() ->
+ mLockPatternUtils.setDeviceOwnerInfo(info != null ? info.toString() : null));
+
DevicePolicyEventLogger
.createEvent(DevicePolicyEnums.SET_DEVICE_OWNER_LOCK_SCREEN_INFO)
.setAdmin(who)
@@ -8499,20 +8636,42 @@
@Override
public boolean checkDeviceIdentifierAccess(String packageName, int pid, int uid) {
- // If the caller is not a system app then it should only be able to check its own device
- // identifier access.
- int callingUid = mInjector.binderGetCallingUid();
- int callingPid = mInjector.binderGetCallingPid();
- if (UserHandle.getAppId(callingUid) >= Process.FIRST_APPLICATION_UID
- && (callingUid != uid || callingPid != pid)) {
- String message = String.format(
- "Calling uid %d, pid %d cannot check device identifier access for package %s "
- + "(uid=%d, pid=%d)", callingUid, callingPid, packageName, uid, pid);
- Log.w(LOG_TAG, message);
- throw new SecurityException(message);
- }
+ ensureCallerIdentityMatchesIfNotSystem(packageName, pid, uid);
+
// Verify that the specified packages matches the provided uid.
- int userId = UserHandle.getUserId(uid);
+ if (!doesPackageMatchUid(packageName, uid)) {
+ return false;
+ }
+ // A device or profile owner must also have the READ_PHONE_STATE permission to access device
+ // identifiers. If the package being checked does not have this permission then deny access.
+ if (mContext.checkPermission(android.Manifest.permission.READ_PHONE_STATE, pid, uid)
+ != PackageManager.PERMISSION_GRANTED) {
+ return false;
+ }
+
+ // Allow access to the device owner or delegate cert installer.
+ ComponentName deviceOwner = getDeviceOwnerComponent(true);
+ if (deviceOwner != null && (deviceOwner.getPackageName().equals(packageName)
+ || isCallerDelegate(packageName, uid, DELEGATION_CERT_INSTALL))) {
+ return true;
+ }
+ final int userId = UserHandle.getUserId(uid);
+ // Allow access to the profile owner for the specified user, or delegate cert installer
+ // But only if this is an organization-owned device.
+ ComponentName profileOwner = getProfileOwnerAsUser(userId);
+ if (profileOwner != null && canProfileOwnerAccessDeviceIds(userId)
+ && (profileOwner.getPackageName().equals(packageName)
+ || isCallerDelegate(packageName, uid, DELEGATION_CERT_INSTALL))) {
+ return true;
+ }
+
+ Log.w(LOG_TAG, String.format("Package %s (uid=%d, pid=%d) cannot access Device IDs",
+ packageName, uid, pid));
+ return false;
+ }
+
+ private boolean doesPackageMatchUid(String packageName, int uid) {
+ final int userId = UserHandle.getUserId(uid);
try {
ApplicationInfo appInfo = mIPackageManager.getApplicationInfo(packageName, 0, userId);
// Since this call goes directly to PackageManagerService a NameNotFoundException is not
@@ -8534,29 +8693,22 @@
Log.e(LOG_TAG, "Exception caught obtaining appInfo for package " + packageName, e);
return false;
}
- // A device or profile owner must also have the READ_PHONE_STATE permission to access device
- // identifiers. If the package being checked does not have this permission then deny access.
- if (mContext.checkPermission(android.Manifest.permission.READ_PHONE_STATE, pid, uid)
- != PackageManager.PERMISSION_GRANTED) {
- return false;
- }
+ return true;
+ }
- // Allow access to the device owner or delegate cert installer.
- ComponentName deviceOwner = getDeviceOwnerComponent(true);
- if (deviceOwner != null && (deviceOwner.getPackageName().equals(packageName)
- || isCallerDelegate(packageName, uid, DELEGATION_CERT_INSTALL))) {
- return true;
+ private void ensureCallerIdentityMatchesIfNotSystem(String packageName, int pid, int uid) {
+ // If the caller is not a system app then it should only be able to check its own device
+ // identifier access.
+ int callingUid = mInjector.binderGetCallingUid();
+ int callingPid = mInjector.binderGetCallingPid();
+ if (UserHandle.getAppId(callingUid) >= Process.FIRST_APPLICATION_UID
+ && (callingUid != uid || callingPid != pid)) {
+ String message = String.format(
+ "Calling uid %d, pid %d cannot check device identifier access for package %s "
+ + "(uid=%d, pid=%d)", callingUid, callingPid, packageName, uid, pid);
+ Log.w(LOG_TAG, message);
+ throw new SecurityException(message);
}
- // Allow access to the profile owner for the specified user, or delegate cert installer
- ComponentName profileOwner = getProfileOwnerAsUser(userId);
- if (profileOwner != null && (profileOwner.getPackageName().equals(packageName)
- || isCallerDelegate(packageName, uid, DELEGATION_CERT_INSTALL))) {
- return true;
- }
-
- Log.w(LOG_TAG, String.format("Package %s (uid=%d, pid=%d) cannot access Device IDs",
- packageName, uid, pid));
- return false;
}
/**
@@ -8783,6 +8935,28 @@
"Only profile owner, device owner and system may call this method.");
}
+ private ActiveAdmin enforceDeviceOwnerOrProfileOwnerOnUser0OrProfileOwnerOrganizationOwned() {
+ synchronized (getLockObject()) {
+ // Check if there is a device owner
+ ActiveAdmin deviceOwner = getActiveAdminWithPolicyForUidLocked(null,
+ DeviceAdminInfo.USES_POLICY_DEVICE_OWNER, mInjector.binderGetCallingUid());
+ if (deviceOwner != null) return deviceOwner;
+
+ ActiveAdmin profileOwner = getActiveAdminWithPolicyForUidLocked(null,
+ DeviceAdminInfo.USES_POLICY_PROFILE_OWNER, mInjector.binderGetCallingUid());
+
+ // Check if there is a profile owner of an organization owned device
+ if (isProfileOwnerOfOrganizationOwnedDevice(profileOwner)) return profileOwner;
+
+ // Check if there is a profile owner called on user 0
+ if (profileOwner != null) {
+ enforceCallerSystemUserHandle();
+ return profileOwner;
+ }
+ }
+ throw new SecurityException("No active admin found");
+ }
+
private void enforceProfileOwnerOrFullCrossUsersPermission(int userId) {
if (userId == mInjector.userHandleGetCallingUserId()) {
synchronized (getLockObject()) {
@@ -10135,8 +10309,7 @@
synchronized (getLockObject()) {
final boolean isDeviceOwner = mOwners.isDeviceOwnerUserId(userId);
final Bundle userRestrictions;
- // Whether device owner enforces camera restriction.
- boolean disallowCameraGlobally = false;
+ final int restrictionOwnerType;
if (isDeviceOwner) {
final ActiveAdmin deviceOwner = getDeviceOwnerAdminLocked();
@@ -10144,33 +10317,45 @@
return; // Shouldn't happen.
}
userRestrictions = deviceOwner.userRestrictions;
- // DO can disable camera globally.
- disallowCameraGlobally = deviceOwner.disableCamera;
+ addOrRemoveDisableCameraRestriction(userRestrictions, deviceOwner);
+ restrictionOwnerType = UserManagerInternal.OWNER_TYPE_DEVICE_OWNER;
} else {
final ActiveAdmin profileOwner = getProfileOwnerAdminLocked(userId);
userRestrictions = profileOwner != null ? profileOwner.userRestrictions : null;
+ addOrRemoveDisableCameraRestriction(userRestrictions, userId);
+
+ if (isProfileOwnerOfOrganizationOwnedDevice(profileOwner)) {
+ restrictionOwnerType =
+ UserManagerInternal.OWNER_TYPE_PROFILE_OWNER_OF_ORGANIZATION_OWNED_DEVICE;
+ } else if (profileOwner != null) {
+ restrictionOwnerType = UserManagerInternal.OWNER_TYPE_PROFILE_OWNER;
+ } else {
+ restrictionOwnerType = UserManagerInternal.OWNER_TYPE_NO_OWNER;
+ }
}
- // Whether any admin enforces camera restriction.
- final int cameraRestrictionScope =
- getCameraRestrictionScopeLocked(userId, disallowCameraGlobally);
-
mUserManagerInternal.setDevicePolicyUserRestrictions(userId, userRestrictions,
- isDeviceOwner, cameraRestrictionScope);
+ restrictionOwnerType);
}
}
- /**
- * Get the scope of camera restriction for a given user if any.
- */
- private int getCameraRestrictionScopeLocked(int userId, boolean disallowCameraGlobally) {
- if (disallowCameraGlobally) {
- return UserManagerInternal.CAMERA_DISABLED_GLOBALLY;
- } else if (getCameraDisabled(
- /* who= */ null, userId, /* mergeDeviceOwnerRestriction= */ false)) {
- return UserManagerInternal.CAMERA_DISABLED_LOCALLY;
+ private void addOrRemoveDisableCameraRestriction(Bundle userRestrictions, ActiveAdmin admin) {
+ if (userRestrictions == null) return;
+ if (admin.disableCamera) {
+ userRestrictions.putBoolean(UserManager.DISALLOW_CAMERA, true);
+ } else {
+ userRestrictions.remove(UserManager.DISALLOW_CAMERA);
}
- return UserManagerInternal.CAMERA_NOT_DISABLED;
+ }
+
+ private void addOrRemoveDisableCameraRestriction(Bundle userRestrictions, int userId) {
+ if (userRestrictions == null) return;
+ if (getCameraDisabled(/* who= */ null, userId, /* mergeDeviceOwnerRestriction= */
+ false)) {
+ userRestrictions.putBoolean(UserManager.DISALLOW_CAMERA, true);
+ } else {
+ userRestrictions.remove(UserManager.DISALLOW_CAMERA);
+ }
}
@Override
@@ -10899,31 +11084,20 @@
@Override
public void setLocationEnabled(ComponentName who, boolean locationEnabled) {
Preconditions.checkNotNull(who, "ComponentName is null");
- int userId = mInjector.userHandleGetCallingUserId();
+ enforceDeviceOwner(who);
- synchronized (getLockObject()) {
- getActiveAdminForCallerLocked(who, DeviceAdminInfo.USES_POLICY_PROFILE_OWNER);
+ UserHandle userHandle = mInjector.binderGetCallingUserHandle();
+ mInjector.binderWithCleanCallingIdentity(
+ () -> mInjector.getLocationManager().setLocationEnabledForUser(locationEnabled,
+ userHandle));
- if (!isDeviceOwner(who, userId) && !isCurrentUserDemo()) {
- throw new SecurityException(
- "Permission denial: Profile owners cannot update location settings");
- }
- }
-
- long ident = mInjector.binderClearCallingIdentity();
- try {
- mInjector.getLocationManager().setLocationEnabledForUser(
- locationEnabled, UserHandle.of(userId));
- DevicePolicyEventLogger
- .createEvent(DevicePolicyEnums.SET_SECURE_SETTING)
- .setAdmin(who)
- .setStrings(Settings.Secure.LOCATION_MODE, Integer.toString(
- locationEnabled ? Settings.Secure.LOCATION_MODE_ON
- : Settings.Secure.LOCATION_MODE_OFF))
- .write();
- } finally {
- mInjector.binderRestoreCallingIdentity(ident);
- }
+ DevicePolicyEventLogger
+ .createEvent(DevicePolicyEnums.SET_SECURE_SETTING)
+ .setAdmin(who)
+ .setStrings(Settings.Secure.LOCATION_MODE, Integer.toString(
+ locationEnabled ? Settings.Secure.LOCATION_MODE_ON
+ : Settings.Secure.LOCATION_MODE_OFF))
+ .write();
}
@Override
@@ -10934,7 +11108,10 @@
if (mInjector.settingsGlobalGetInt(Global.AUTO_TIME, 0) == 1) {
return false;
}
- mInjector.binderWithCleanCallingIdentity(() -> mInjector.getAlarmManager().setTime(millis));
+ ManualTimeSuggestion manualTimeSuggestion = TimeDetector.createManualTimeSuggestion(
+ millis, "DevicePolicyManagerService: setTime");
+ mInjector.binderWithCleanCallingIdentity(
+ () -> mInjector.getTimeDetector().suggestManualTime(manualTimeSuggestion));
return true;
}
@@ -12573,14 +12750,14 @@
return false;
}
- private boolean hasGrantProfileOwnerDevcieIdAccessPermission() {
+ private boolean hasMarkProfileOwnerOnOrganizationOwnedDevicePermission() {
return mContext.checkCallingPermission(
- android.Manifest.permission.GRANT_PROFILE_OWNER_DEVICE_IDS_ACCESS)
+ permission.MARK_DEVICE_ORGANIZATION_OWNED)
== PackageManager.PERMISSION_GRANTED;
}
@Override
- public void grantDeviceIdsAccessToProfileOwner(ComponentName who, int userId) {
+ public void markProfileOwnerOnOrganizationOwnedDevice(ComponentName who, int userId) {
// As the caller is the system, it must specify the component name of the profile owner
// as a sanity / safety check.
Preconditions.checkNotNull(who);
@@ -12589,16 +12766,24 @@
return;
}
- // Only privileged system apps can grant the Profile Owner access to Device IDs.
- if (!(isCallerWithSystemUid() || isAdb()
- || hasGrantProfileOwnerDevcieIdAccessPermission())) {
+ // Only adb or system apps with the right permission can mark a profile owner on
+ // organization-owned device.
+ if (!(isAdb() || hasMarkProfileOwnerOnOrganizationOwnedDevicePermission())) {
throw new SecurityException(
- "Only the system can grant Device IDs access for a profile owner.");
+ "Only the system can mark a profile owner of organization-owned device.");
}
- if (isAdb() && hasIncompatibleAccountsOrNonAdbNoLock(userId, who)) {
- throw new SecurityException(
- "Can only be called from ADB if the device has no accounts.");
+ if (isAdb()) {
+ if (hasIncompatibleAccountsOrNonAdbNoLock(userId, who)) {
+ throw new SecurityException(
+ "Can only be called from ADB if the device has no accounts.");
+ }
+ } else {
+ if (hasUserSetupCompleted(UserHandle.USER_SYSTEM)) {
+ throw new IllegalStateException(
+ "Cannot mark profile owner as managing an organization-owned device after"
+ + " set-up");
+ }
}
// Grant access under lock.
@@ -12611,12 +12796,31 @@
who.flattenToString(), userId));
}
- Slog.i(LOG_TAG, String.format("Granting Device ID access to %s, for user %d",
- who.flattenToString(), userId));
+ Slog.i(LOG_TAG, String.format(
+ "Marking %s as profile owner on organization-owned device for user %d",
+ who.flattenToString(), userId));
- // setProfileOwnerCanAccessDeviceIds will trigger writing of the profile owner
+ // First, set restriction on removing the profile.
+ final long ident = mInjector.binderClearCallingIdentity();
+ try {
+ // Clear restriction as user.
+ UserHandle parentUser = mUserManager.getProfileParent(UserHandle.of(userId));
+ if (!parentUser.isSystem()) {
+ throw new IllegalStateException(
+ String.format("Only the profile owner of a managed profile on the"
+ + " primary user can be granted access to device identifiers, not"
+ + " on user %d", parentUser.getIdentifier()));
+ }
+
+ mUserManager.setUserRestriction(UserManager.DISALLOW_REMOVE_MANAGED_PROFILE, true,
+ parentUser);
+ } finally {
+ mInjector.binderRestoreCallingIdentity(ident);
+ }
+
+ // markProfileOwnerOfOrganizationOwnedDevice will trigger writing of the profile owner
// data, no need to do it manually.
- mOwners.setProfileOwnerCanAccessDeviceIds(userId);
+ mOwners.markProfileOwnerOfOrganizationOwnedDevice(userId);
}
}
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/Owners.java b/services/devicepolicy/java/com/android/server/devicepolicy/Owners.java
index 65bf86f..f70fe90 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/Owners.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/Owners.java
@@ -101,7 +101,12 @@
private static final String ATTR_USER_RESTRICTIONS_MIGRATED = "userRestrictionsMigrated";
private static final String ATTR_FREEZE_RECORD_START = "start";
private static final String ATTR_FREEZE_RECORD_END = "end";
+ // Legacy attribute, its presence would mean the profile owner associated with it is
+ // managing a profile on an organization-owned device.
private static final String ATTR_CAN_ACCESS_DEVICE_IDS = "canAccessDeviceIds";
+ // New attribute for profile owner of organization-owned device.
+ private static final String ATTR_PROFILE_OWNER_OF_ORG_OWNED_DEVICE =
+ "isPoOrganizationOwnedDevice";
private final UserManager mUserManager;
private final UserManagerInternal mUserManagerInternal;
@@ -286,7 +291,7 @@
// semantically compatible with the meaning of this flag.
mDeviceOwner = new OwnerInfo(ownerName, admin, userRestrictionsMigrated,
/* remoteBugreportUri =*/ null, /* remoteBugreportHash =*/
- null, /* canAccessDeviceIds =*/true);
+ null, /* isOrganizationOwnedDevice =*/true);
mDeviceOwnerUserId = userId;
mUserManagerInternal.setDeviceManaged(true);
@@ -313,7 +318,7 @@
// For a newly set PO, there's no need for migration.
mProfileOwners.put(userId, new OwnerInfo(ownerName, admin,
/* userRestrictionsMigrated =*/ true, /* remoteBugreportUri =*/ null,
- /* remoteBugreportHash =*/ null, /* canAccessDeviceIds =*/ false));
+ /* remoteBugreportHash =*/ null, /* isOrganizationOwnedDevice =*/ false));
mUserManagerInternal.setUserManaged(userId, true);
pushToPackageManagerLocked();
pushToAppOpsLocked();
@@ -334,8 +339,8 @@
final OwnerInfo ownerInfo = mProfileOwners.get(userId);
final OwnerInfo newOwnerInfo = new OwnerInfo(target.getPackageName(), target,
ownerInfo.userRestrictionsMigrated, ownerInfo.remoteBugreportUri,
- ownerInfo.remoteBugreportHash, /* canAccessDeviceIds =*/
- ownerInfo.canAccessDeviceIds);
+ ownerInfo.remoteBugreportHash, /* isOrganizationOwnedDevice =*/
+ ownerInfo.isOrganizationOwnedDevice);
mProfileOwners.put(userId, newOwnerInfo);
pushToPackageManagerLocked();
pushToAppOpsLocked();
@@ -348,8 +353,8 @@
// See DevicePolicyManagerService#getDeviceOwnerName
mDeviceOwner = new OwnerInfo(null, target,
mDeviceOwner.userRestrictionsMigrated, mDeviceOwner.remoteBugreportUri,
- mDeviceOwner.remoteBugreportHash, /* canAccessDeviceIds =*/
- mDeviceOwner.canAccessDeviceIds);
+ mDeviceOwner.remoteBugreportHash, /* isOrganizationOwnedDevice =*/
+ mDeviceOwner.isOrganizationOwnedDevice);
pushToPackageManagerLocked();
pushToActivityTaskManagerLocked();
pushToAppOpsLocked();
@@ -378,13 +383,13 @@
}
/**
- * Returns true if {@code userId} has a profile owner and that profile owner was granted
- * the ability to access device identifiers.
+ * Returns true if {@code userId} has a profile owner and that profile owner is on an
+ * organization-owned device, as indicated by the provisioning flow.
*/
- boolean canProfileOwnerAccessDeviceIds(int userId) {
+ boolean isProfileOwnerOfOrganizationOwnedDevice(int userId) {
synchronized (mLock) {
OwnerInfo profileOwner = mProfileOwners.get(userId);
- return profileOwner != null ? profileOwner.canAccessDeviceIds : false;
+ return profileOwner != null ? profileOwner.isOrganizationOwnedDevice : false;
}
}
@@ -523,15 +528,16 @@
}
}
- /** Sets the grant to access device IDs, and also writes to file. */
- void setProfileOwnerCanAccessDeviceIds(int userId) {
+ /** Sets the indicator that the profile owner manages an organization-owned device,
+ * then write to file. */
+ void markProfileOwnerOfOrganizationOwnedDevice(int userId) {
synchronized (mLock) {
OwnerInfo profileOwner = mProfileOwners.get(userId);
if (profileOwner != null) {
- profileOwner.canAccessDeviceIds = true;
+ profileOwner.isOrganizationOwnedDevice = true;
} else {
Slog.e(TAG, String.format(
- "Cannot grant Device IDs access for user %d, no profile owner.", userId));
+ "No profile owner for user %d to set as org-owned.", userId));
}
writeProfileOwner(userId);
}
@@ -558,7 +564,7 @@
String packageName = parser.getAttributeValue(null, ATTR_PACKAGE);
mDeviceOwner = new OwnerInfo(name, packageName,
/* userRestrictionsMigrated =*/ false, /* remoteBugreportUri =*/ null,
- /* remoteBugreportHash =*/ null, /* canAccessDeviceIds =*/ true);
+ /* remoteBugreportHash =*/ null, /* isOrganizationOwnedDevice =*/ true);
mDeviceOwnerUserId = UserHandle.USER_SYSTEM;
} else if (tag.equals(TAG_DEVICE_INITIALIZER)) {
// Deprecated tag
@@ -575,7 +581,7 @@
if (admin != null) {
profileOwnerInfo = new OwnerInfo(profileOwnerName, admin,
/* userRestrictionsMigrated =*/ false, null,
- null, /* canAccessDeviceIds =*/ false);
+ null, /* isOrganizationOwnedDevice =*/ false);
} else {
// This shouldn't happen but switch from package name -> component name
// might have written bad device owner files. b/17652534
@@ -587,7 +593,7 @@
profileOwnerInfo = new OwnerInfo(profileOwnerName, profileOwnerPackageName,
/* userRestrictionsMigrated =*/ false,
/* remoteBugreportUri =*/ null, /* remoteBugreportHash =*/
- null, /* canAccessDeviceIds =*/ false);
+ null, /* isOrganizationOwnedDevice =*/ false);
}
mProfileOwners.put(userId, profileOwnerInfo);
} else if (TAG_SYSTEM_UPDATE_POLICY.equals(tag)) {
@@ -947,28 +953,30 @@
public boolean userRestrictionsMigrated;
public String remoteBugreportUri;
public String remoteBugreportHash;
- public boolean canAccessDeviceIds;
+ public boolean isOrganizationOwnedDevice;
public OwnerInfo(String name, String packageName, boolean userRestrictionsMigrated,
- String remoteBugreportUri, String remoteBugreportHash, boolean canAccessDeviceIds) {
+ String remoteBugreportUri, String remoteBugreportHash,
+ boolean isOrganizationOwnedDevice) {
this.name = name;
this.packageName = packageName;
this.admin = new ComponentName(packageName, "");
this.userRestrictionsMigrated = userRestrictionsMigrated;
this.remoteBugreportUri = remoteBugreportUri;
this.remoteBugreportHash = remoteBugreportHash;
- this.canAccessDeviceIds = canAccessDeviceIds;
+ this.isOrganizationOwnedDevice = isOrganizationOwnedDevice;
}
public OwnerInfo(String name, ComponentName admin, boolean userRestrictionsMigrated,
- String remoteBugreportUri, String remoteBugreportHash, boolean canAccessDeviceIds) {
+ String remoteBugreportUri, String remoteBugreportHash,
+ boolean isOrganizationOwnedDevice) {
this.name = name;
this.admin = admin;
this.packageName = admin.getPackageName();
this.userRestrictionsMigrated = userRestrictionsMigrated;
this.remoteBugreportUri = remoteBugreportUri;
this.remoteBugreportHash = remoteBugreportHash;
- this.canAccessDeviceIds = canAccessDeviceIds;
+ this.isOrganizationOwnedDevice = isOrganizationOwnedDevice;
}
public void writeToXml(XmlSerializer out, String tag) throws IOException {
@@ -988,9 +996,9 @@
if (remoteBugreportHash != null) {
out.attribute(null, ATTR_REMOTE_BUGREPORT_HASH, remoteBugreportHash);
}
- if (canAccessDeviceIds) {
- out.attribute(null, ATTR_CAN_ACCESS_DEVICE_IDS,
- String.valueOf(canAccessDeviceIds));
+ if (isOrganizationOwnedDevice) {
+ out.attribute(null, ATTR_PROFILE_OWNER_OF_ORG_OWNED_DEVICE,
+ String.valueOf(isOrganizationOwnedDevice));
}
out.endTag(null, tag);
}
@@ -1012,13 +1020,17 @@
parser.getAttributeValue(null, ATTR_CAN_ACCESS_DEVICE_IDS);
final boolean canAccessDeviceIds =
("true".equals(canAccessDeviceIdsStr));
+ final String isOrgOwnedDeviceStr =
+ parser.getAttributeValue(null, ATTR_PROFILE_OWNER_OF_ORG_OWNED_DEVICE);
+ final boolean isOrgOwnedDevice =
+ ("true".equals(isOrgOwnedDeviceStr)) | canAccessDeviceIds;
// Has component name? If so, return [name, component]
if (componentName != null) {
final ComponentName admin = ComponentName.unflattenFromString(componentName);
if (admin != null) {
return new OwnerInfo(name, admin, userRestrictionsMigrated,
- remoteBugreportUri, remoteBugreportHash, canAccessDeviceIds);
+ remoteBugreportUri, remoteBugreportHash, isOrgOwnedDevice);
} else {
// This shouldn't happen but switch from package name -> component name
// might have written bad device owner files. b/17652534
@@ -1029,14 +1041,14 @@
// Else, build with [name, package]
return new OwnerInfo(name, packageName, userRestrictionsMigrated, remoteBugreportUri,
- remoteBugreportHash, canAccessDeviceIds);
+ remoteBugreportHash, isOrgOwnedDevice);
}
public void dump(IndentingPrintWriter pw) {
pw.println("admin=" + admin);
pw.println("name=" + name);
pw.println("package=" + packageName);
- pw.println("canAccessDeviceIds=" + canAccessDeviceIds);
+ pw.println("isOrganizationOwnedDevice=" + isOrganizationOwnedDevice);
}
}
diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java
index 39d840f..66f01f3 100644
--- a/services/java/com/android/server/SystemServer.java
+++ b/services/java/com/android/server/SystemServer.java
@@ -43,7 +43,7 @@
import android.hardware.display.DisplayManagerInternal;
import android.net.ConnectivityModuleConnector;
import android.net.NetworkStackClient;
-import android.net.wifi.WifiStackClient;
+import android.net.TetheringManager;
import android.os.BaseBundle;
import android.os.Binder;
import android.os.Build;
@@ -269,6 +269,8 @@
"com.android.internal.car.CarServiceHelperService";
private static final String TIME_DETECTOR_SERVICE_CLASS =
"com.android.server.timedetector.TimeDetectorService$Lifecycle";
+ private static final String TIME_ZONE_DETECTOR_SERVICE_CLASS =
+ "com.android.server.timezonedetector.TimeZoneDetectorService$Lifecycle";
private static final String ACCESSIBILITY_MANAGER_SERVICE_CLASS =
"com.android.server.accessibility.AccessibilityManagerService$Lifecycle";
private static final String ADB_SERVICE_CLASS =
@@ -388,15 +390,6 @@
EventLog.writeEvent(EventLogTags.SYSTEM_SERVER_START,
mStartCount, mRuntimeStartUptime, mRuntimeStartElapsedTime);
- // If a device's clock is before 1970 (before 0), a lot of
- // APIs crash dealing with negative numbers, notably
- // java.io.File#setLastModified, so instead we fake it and
- // hope that time from cell towers or NTP fixes it shortly.
- if (System.currentTimeMillis() < EARLIEST_SUPPORTED_TIME) {
- Slog.w(TAG, "System clock is before 1970; setting to 1970.");
- SystemClock.setCurrentTimeMillis(EARLIEST_SUPPORTED_TIME);
- }
-
//
// Default the timezone property to GMT if not set.
//
@@ -1121,9 +1114,10 @@
SignedConfigService.registerUpdateReceiver(mSystemContext);
t.traceEnd();
- } catch (RuntimeException e) {
+ } catch (Throwable e) {
Slog.e("System", "******************************************");
- Slog.e("System", "************ Failure starting core service", e);
+ Slog.e("System", "************ Failure starting core service");
+ throw e;
}
// Before things start rolling, be sure we have decided whether
@@ -1369,6 +1363,40 @@
t.traceEnd();
if (context.getPackageManager().hasSystemFeature(
+ PackageManager.FEATURE_WIFI)) {
+ // Wifi Service must be started first for wifi-related services.
+ t.traceBegin("StartWifi");
+ mSystemServiceManager.startService(WIFI_SERVICE_CLASS);
+ t.traceEnd();
+ t.traceBegin("StartWifiScanning");
+ mSystemServiceManager.startService(
+ "com.android.server.wifi.scanner.WifiScanningService");
+ t.traceEnd();
+ }
+
+ if (context.getPackageManager().hasSystemFeature(
+ PackageManager.FEATURE_WIFI_RTT)) {
+ t.traceBegin("StartRttService");
+ mSystemServiceManager.startService(
+ "com.android.server.wifi.rtt.RttService");
+ t.traceEnd();
+ }
+
+ if (context.getPackageManager().hasSystemFeature(
+ PackageManager.FEATURE_WIFI_AWARE)) {
+ t.traceBegin("StartWifiAware");
+ mSystemServiceManager.startService(WIFI_AWARE_SERVICE_CLASS);
+ t.traceEnd();
+ }
+
+ if (context.getPackageManager().hasSystemFeature(
+ PackageManager.FEATURE_WIFI_DIRECT)) {
+ t.traceBegin("StartWifiP2P");
+ mSystemServiceManager.startService(WIFI_P2P_SERVICE_CLASS);
+ t.traceEnd();
+ }
+
+ if (context.getPackageManager().hasSystemFeature(
PackageManager.FEATURE_LOWPAN)) {
t.traceBegin("StartLowpan");
mSystemServiceManager.startService(LOWPAN_SERVICE_CLASS);
@@ -1456,6 +1484,14 @@
}
t.traceEnd();
+ t.traceBegin("StartTimeZoneDetectorService");
+ try {
+ mSystemServiceManager.startService(TIME_ZONE_DETECTOR_SERVICE_CLASS);
+ } catch (Throwable e) {
+ reportWtf("starting StartTimeZoneDetectorService service", e);
+ }
+ t.traceEnd();
+
if (!isWatch) {
t.traceBegin("StartSearchManagerService");
try {
@@ -2180,11 +2216,12 @@
}
t.traceEnd();
- t.traceBegin("StartWifiStack");
+ t.traceBegin("StartTethering");
try {
- WifiStackClient.getInstance().start();
+ // Tethering must start after ConnectivityService and NetworkStack.
+ TetheringManager.getInstance().start();
} catch (Throwable e) {
- reportWtf("starting Wifi Stack", e);
+ reportWtf("starting Tethering", e);
}
t.traceEnd();
diff --git a/services/net/Android.bp b/services/net/Android.bp
index 42c69e0..3babb0b 100644
--- a/services/net/Android.bp
+++ b/services/net/Android.bp
@@ -8,41 +8,27 @@
java_library_static {
name: "services.net",
srcs: [
- ":tethering-servicesnet-srcs",
+ ":net-module-utils-srcs",
":services.net-sources",
+ ":tethering-manager",
],
static_libs: [
"dnsresolver_aidl_interface-V2-java",
"netd_aidl_interface-unstable-java",
+ "netlink-client",
"networkstack-client",
"tethering-client",
],
}
filegroup {
- name: "services-networkstack-shared-srcs",
- srcs: [
- "java/android/net/ip/InterfaceController.java", // TODO: move to NetworkStack with tethering
- "java/android/net/util/InterfaceParams.java", // TODO: move to NetworkStack with IpServer
- "java/android/net/shared/*.java",
- "java/android/net/netlink/*.java",
- ],
- path: "java",
- visibility: ["//packages/modules/NetworkStack"],
-}
-
-filegroup {
name: "services-tethering-shared-srcs",
srcs: [
":framework-annotations",
"java/android/net/ConnectivityModuleConnector.java",
"java/android/net/NetworkStackClient.java",
- "java/android/net/ip/InterfaceController.java",
- "java/android/net/netlink/*.java",
- "java/android/net/util/InterfaceParams.java",
"java/android/net/util/NetdService.java",
"java/android/net/util/NetworkConstants.java",
- "java/android/net/util/SharedLog.java"
],
visibility: ["//frameworks/base/packages/Tethering"],
}
diff --git a/services/net/java/android/net/ip/InterfaceController.java b/services/net/java/android/net/ip/InterfaceController.java
deleted file mode 100644
index 970bc9c..0000000
--- a/services/net/java/android/net/ip/InterfaceController.java
+++ /dev/null
@@ -1,193 +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.
- */
-
-package android.net.ip;
-
-import android.net.INetd;
-import android.net.InterfaceConfigurationParcel;
-import android.net.LinkAddress;
-import android.net.util.SharedLog;
-import android.os.RemoteException;
-import android.os.ServiceSpecificException;
-import android.system.OsConstants;
-
-import java.net.Inet4Address;
-import java.net.InetAddress;
-
-
-/**
- * Encapsulates the multiple IP configuration operations performed on an interface.
- *
- * TODO: refactor/eliminate the redundant ways to set and clear addresses.
- *
- * @hide
- */
-public class InterfaceController {
- private final static boolean DBG = false;
-
- private final String mIfName;
- private final INetd mNetd;
- private final SharedLog mLog;
-
- public InterfaceController(String ifname, INetd netd, SharedLog log) {
- mIfName = ifname;
- mNetd = netd;
- mLog = log;
- }
-
- private boolean setInterfaceAddress(LinkAddress addr) {
- final InterfaceConfigurationParcel ifConfig = new InterfaceConfigurationParcel();
- ifConfig.ifName = mIfName;
- ifConfig.ipv4Addr = addr.getAddress().getHostAddress();
- ifConfig.prefixLength = addr.getPrefixLength();
- ifConfig.hwAddr = "";
- ifConfig.flags = new String[0];
- try {
- mNetd.interfaceSetCfg(ifConfig);
- } catch (RemoteException | ServiceSpecificException e) {
- logError("Setting IPv4 address to %s/%d failed: %s",
- ifConfig.ipv4Addr, ifConfig.prefixLength, e);
- return false;
- }
- return true;
- }
-
- /**
- * Set the IPv4 address of the interface.
- */
- public boolean setIPv4Address(LinkAddress address) {
- if (!(address.getAddress() instanceof Inet4Address)) {
- return false;
- }
- return setInterfaceAddress(address);
- }
-
- /**
- * Clear the IPv4Address of the interface.
- */
- public boolean clearIPv4Address() {
- return setInterfaceAddress(new LinkAddress("0.0.0.0/0"));
- }
-
- private boolean setEnableIPv6(boolean enabled) {
- try {
- mNetd.interfaceSetEnableIPv6(mIfName, enabled);
- } catch (RemoteException | ServiceSpecificException e) {
- logError("%s IPv6 failed: %s", (enabled ? "enabling" : "disabling"), e);
- return false;
- }
- return true;
- }
-
- /**
- * Enable IPv6 on the interface.
- */
- public boolean enableIPv6() {
- return setEnableIPv6(true);
- }
-
- /**
- * Disable IPv6 on the interface.
- */
- public boolean disableIPv6() {
- return setEnableIPv6(false);
- }
-
- /**
- * Enable or disable IPv6 privacy extensions on the interface.
- * @param enabled Whether the extensions should be enabled.
- */
- public boolean setIPv6PrivacyExtensions(boolean enabled) {
- try {
- mNetd.interfaceSetIPv6PrivacyExtensions(mIfName, enabled);
- } catch (RemoteException | ServiceSpecificException e) {
- logError("error %s IPv6 privacy extensions: %s",
- (enabled ? "enabling" : "disabling"), e);
- return false;
- }
- return true;
- }
-
- /**
- * Set IPv6 address generation mode on the interface.
- *
- * <p>IPv6 should be disabled before changing the mode.
- */
- public boolean setIPv6AddrGenModeIfSupported(int mode) {
- try {
- mNetd.setIPv6AddrGenMode(mIfName, mode);
- } catch (RemoteException e) {
- logError("Unable to set IPv6 addrgen mode: %s", e);
- return false;
- } catch (ServiceSpecificException e) {
- if (e.errorCode != OsConstants.EOPNOTSUPP) {
- logError("Unable to set IPv6 addrgen mode: %s", e);
- return false;
- }
- }
- return true;
- }
-
- /**
- * Add an address to the interface.
- */
- public boolean addAddress(LinkAddress addr) {
- return addAddress(addr.getAddress(), addr.getPrefixLength());
- }
-
- /**
- * Add an address to the interface.
- */
- public boolean addAddress(InetAddress ip, int prefixLen) {
- try {
- mNetd.interfaceAddAddress(mIfName, ip.getHostAddress(), prefixLen);
- } catch (ServiceSpecificException | RemoteException e) {
- logError("failed to add %s/%d: %s", ip, prefixLen, e);
- return false;
- }
- return true;
- }
-
- /**
- * Remove an address from the interface.
- */
- public boolean removeAddress(InetAddress ip, int prefixLen) {
- try {
- mNetd.interfaceDelAddress(mIfName, ip.getHostAddress(), prefixLen);
- } catch (ServiceSpecificException | RemoteException e) {
- logError("failed to remove %s/%d: %s", ip, prefixLen, e);
- return false;
- }
- return true;
- }
-
- /**
- * Remove all addresses from the interface.
- */
- public boolean clearAllAddresses() {
- try {
- mNetd.interfaceClearAddrs(mIfName);
- } catch (Exception e) {
- logError("Failed to clear addresses: %s", e);
- return false;
- }
- return true;
- }
-
- private void logError(String fmt, Object... args) {
- mLog.e(String.format(fmt, args));
- }
-}
diff --git a/services/net/java/android/net/netlink/ConntrackMessage.java b/services/net/java/android/net/netlink/ConntrackMessage.java
deleted file mode 100644
index 6978739..0000000
--- a/services/net/java/android/net/netlink/ConntrackMessage.java
+++ /dev/null
@@ -1,109 +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.
- */
-
-package android.net.netlink;
-
-import static android.net.netlink.StructNlMsgHdr.NLM_F_ACK;
-import static android.net.netlink.StructNlMsgHdr.NLM_F_REPLACE;
-import static android.net.netlink.StructNlMsgHdr.NLM_F_REQUEST;
-
-import static java.nio.ByteOrder.BIG_ENDIAN;
-
-import android.system.OsConstants;
-
-import java.net.Inet4Address;
-import java.nio.ByteBuffer;
-import java.nio.ByteOrder;
-
-
-/**
- * A NetlinkMessage subclass for netlink conntrack messages.
- *
- * see also: <linux_src>/include/uapi/linux/netfilter/nfnetlink_conntrack.h
- *
- * @hide
- */
-public class ConntrackMessage extends NetlinkMessage {
- public static final int STRUCT_SIZE = StructNlMsgHdr.STRUCT_SIZE + StructNfGenMsg.STRUCT_SIZE;
-
- public static final short NFNL_SUBSYS_CTNETLINK = 1;
- public static final short IPCTNL_MSG_CT_NEW = 0;
-
- // enum ctattr_type
- public static final short CTA_TUPLE_ORIG = 1;
- public static final short CTA_TUPLE_REPLY = 2;
- public static final short CTA_TIMEOUT = 7;
-
- // enum ctattr_tuple
- public static final short CTA_TUPLE_IP = 1;
- public static final short CTA_TUPLE_PROTO = 2;
-
- // enum ctattr_ip
- public static final short CTA_IP_V4_SRC = 1;
- public static final short CTA_IP_V4_DST = 2;
-
- // enum ctattr_l4proto
- public static final short CTA_PROTO_NUM = 1;
- public static final short CTA_PROTO_SRC_PORT = 2;
- public static final short CTA_PROTO_DST_PORT = 3;
-
- public static byte[] newIPv4TimeoutUpdateRequest(
- int proto, Inet4Address src, int sport, Inet4Address dst, int dport, int timeoutSec) {
- // *** STYLE WARNING ***
- //
- // Code below this point uses extra block indentation to highlight the
- // packing of nested tuple netlink attribute types.
- final StructNlAttr ctaTupleOrig = new StructNlAttr(CTA_TUPLE_ORIG,
- new StructNlAttr(CTA_TUPLE_IP,
- new StructNlAttr(CTA_IP_V4_SRC, src),
- new StructNlAttr(CTA_IP_V4_DST, dst)),
- new StructNlAttr(CTA_TUPLE_PROTO,
- new StructNlAttr(CTA_PROTO_NUM, (byte) proto),
- new StructNlAttr(CTA_PROTO_SRC_PORT, (short) sport, BIG_ENDIAN),
- new StructNlAttr(CTA_PROTO_DST_PORT, (short) dport, BIG_ENDIAN)));
-
- final StructNlAttr ctaTimeout = new StructNlAttr(CTA_TIMEOUT, timeoutSec, BIG_ENDIAN);
-
- final int payloadLength = ctaTupleOrig.getAlignedLength() + ctaTimeout.getAlignedLength();
- final byte[] bytes = new byte[STRUCT_SIZE + payloadLength];
- final ByteBuffer byteBuffer = ByteBuffer.wrap(bytes);
- byteBuffer.order(ByteOrder.nativeOrder());
-
- final ConntrackMessage ctmsg = new ConntrackMessage();
- ctmsg.mHeader.nlmsg_len = bytes.length;
- ctmsg.mHeader.nlmsg_type = (NFNL_SUBSYS_CTNETLINK << 8) | IPCTNL_MSG_CT_NEW;
- ctmsg.mHeader.nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK | NLM_F_REPLACE;
- ctmsg.mHeader.nlmsg_seq = 1;
- ctmsg.pack(byteBuffer);
-
- ctaTupleOrig.pack(byteBuffer);
- ctaTimeout.pack(byteBuffer);
-
- return bytes;
- }
-
- protected StructNfGenMsg mNfGenMsg;
-
- private ConntrackMessage() {
- super(new StructNlMsgHdr());
- mNfGenMsg = new StructNfGenMsg((byte) OsConstants.AF_INET);
- }
-
- public void pack(ByteBuffer byteBuffer) {
- mHeader.pack(byteBuffer);
- mNfGenMsg.pack(byteBuffer);
- }
-}
diff --git a/services/net/java/android/net/netlink/InetDiagMessage.java b/services/net/java/android/net/netlink/InetDiagMessage.java
deleted file mode 100644
index ca07630..0000000
--- a/services/net/java/android/net/netlink/InetDiagMessage.java
+++ /dev/null
@@ -1,221 +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.netlink;
-
-import static android.net.netlink.NetlinkConstants.SOCK_DIAG_BY_FAMILY;
-import static android.net.netlink.NetlinkSocket.DEFAULT_RECV_BUFSIZE;
-import static android.net.netlink.StructNlMsgHdr.NLM_F_DUMP;
-import static android.net.netlink.StructNlMsgHdr.NLM_F_REQUEST;
-import static android.os.Process.INVALID_UID;
-import static android.system.OsConstants.AF_INET;
-import static android.system.OsConstants.AF_INET6;
-import static android.system.OsConstants.IPPROTO_UDP;
-import static android.system.OsConstants.NETLINK_INET_DIAG;
-
-import android.annotation.Nullable;
-import android.net.util.SocketUtils;
-import android.system.ErrnoException;
-import android.util.Log;
-
-import java.io.FileDescriptor;
-import java.io.IOException;
-import java.io.InterruptedIOException;
-import java.net.Inet4Address;
-import java.net.Inet6Address;
-import java.net.InetSocketAddress;
-import java.net.SocketException;
-import java.net.UnknownHostException;
-import java.nio.ByteBuffer;
-import java.nio.ByteOrder;
-
-/**
- * A NetlinkMessage subclass for netlink inet_diag messages.
- *
- * see also: <linux_src>/include/uapi/linux/inet_diag.h
- *
- * @hide
- */
-public class InetDiagMessage extends NetlinkMessage {
- public static final String TAG = "InetDiagMessage";
- private static final int TIMEOUT_MS = 500;
-
- public static byte[] InetDiagReqV2(int protocol, InetSocketAddress local,
- InetSocketAddress remote, int family, short flags) {
- return InetDiagReqV2(protocol, local, remote, family, flags, 0 /* pad */,
- 0 /* idiagExt */, StructInetDiagReqV2.INET_DIAG_REQ_V2_ALL_STATES);
- }
-
- /**
- * Construct an inet_diag_req_v2 message. This method will throw {@code NullPointerException}
- * if local and remote are not both null or both non-null.
- *
- * @param protocol the request protocol type. This should be set to one of IPPROTO_TCP,
- * IPPROTO_UDP, or IPPROTO_UDPLITE.
- * @param local local socket address of the target socket. This will be packed into a
- * {@Code StructInetDiagSockId}. Request to diagnose for all sockets if both of
- * local or remote address is null.
- * @param remote remote socket address of the target socket. This will be packed into a
- * {@Code StructInetDiagSockId}. Request to diagnose for all sockets if both of
- * local or remote address is null.
- * @param family the ip family of the request message. This should be set to either AF_INET or
- * AF_INET6 for IPv4 or IPv6 sockets respectively.
- * @param flags message flags. See <linux_src>/include/uapi/linux/netlink.h.
- * @param pad for raw socket protocol specification.
- * @param idiagExt a set of flags defining what kind of extended information to report.
- * @param state a bit mask that defines a filter of socket states.
- *
- * @return bytes array representation of the message
- **/
- public static byte[] InetDiagReqV2(int protocol, @Nullable InetSocketAddress local,
- @Nullable InetSocketAddress remote, int family, short flags, int pad, int idiagExt,
- int state) throws NullPointerException {
- final byte[] bytes = new byte[StructNlMsgHdr.STRUCT_SIZE + StructInetDiagReqV2.STRUCT_SIZE];
- final ByteBuffer byteBuffer = ByteBuffer.wrap(bytes);
- byteBuffer.order(ByteOrder.nativeOrder());
-
- final StructNlMsgHdr nlMsgHdr = new StructNlMsgHdr();
- nlMsgHdr.nlmsg_len = bytes.length;
- nlMsgHdr.nlmsg_type = SOCK_DIAG_BY_FAMILY;
- nlMsgHdr.nlmsg_flags = flags;
- nlMsgHdr.pack(byteBuffer);
- final StructInetDiagReqV2 inetDiagReqV2 =
- new StructInetDiagReqV2(protocol, local, remote, family, pad, idiagExt, state);
-
- inetDiagReqV2.pack(byteBuffer);
- return bytes;
- }
-
- public StructInetDiagMsg mStructInetDiagMsg;
-
- private InetDiagMessage(StructNlMsgHdr header) {
- super(header);
- mStructInetDiagMsg = new StructInetDiagMsg();
- }
-
- public static InetDiagMessage parse(StructNlMsgHdr header, ByteBuffer byteBuffer) {
- final InetDiagMessage msg = new InetDiagMessage(header);
- msg.mStructInetDiagMsg = StructInetDiagMsg.parse(byteBuffer);
- return msg;
- }
-
- private static int lookupUidByFamily(int protocol, InetSocketAddress local,
- InetSocketAddress remote, int family, short flags,
- FileDescriptor fd)
- throws ErrnoException, InterruptedIOException {
- byte[] msg = InetDiagReqV2(protocol, local, remote, family, flags);
- NetlinkSocket.sendMessage(fd, msg, 0, msg.length, TIMEOUT_MS);
- ByteBuffer response = NetlinkSocket.recvMessage(fd, DEFAULT_RECV_BUFSIZE, TIMEOUT_MS);
-
- final NetlinkMessage nlMsg = NetlinkMessage.parse(response);
- final StructNlMsgHdr hdr = nlMsg.getHeader();
- if (hdr.nlmsg_type == NetlinkConstants.NLMSG_DONE) {
- return INVALID_UID;
- }
- if (nlMsg instanceof InetDiagMessage) {
- return ((InetDiagMessage) nlMsg).mStructInetDiagMsg.idiag_uid;
- }
- return INVALID_UID;
- }
-
- private static final int FAMILY[] = {AF_INET6, AF_INET};
-
- private static int lookupUid(int protocol, InetSocketAddress local,
- InetSocketAddress remote, FileDescriptor fd)
- throws ErrnoException, InterruptedIOException {
- int uid;
-
- for (int family : FAMILY) {
- /**
- * For exact match lookup, swap local and remote for UDP lookups due to kernel
- * bug which will not be fixed. See aosp/755889 and
- * https://www.mail-archive.com/netdev@vger.kernel.org/msg248638.html
- */
- if (protocol == IPPROTO_UDP) {
- uid = lookupUidByFamily(protocol, remote, local, family, NLM_F_REQUEST, fd);
- } else {
- uid = lookupUidByFamily(protocol, local, remote, family, NLM_F_REQUEST, fd);
- }
- if (uid != INVALID_UID) {
- return uid;
- }
- }
-
- /**
- * For UDP it's possible for a socket to send packets to arbitrary destinations, even if the
- * socket is not connected (and even if the socket is connected to a different destination).
- * If we want this API to work for such packets, then on miss we need to do a second lookup
- * with only the local address and port filled in.
- * Always use flags == NLM_F_REQUEST | NLM_F_DUMP for wildcard.
- */
- if (protocol == IPPROTO_UDP) {
- try {
- InetSocketAddress wildcard = new InetSocketAddress(
- Inet6Address.getByName("::"), 0);
- uid = lookupUidByFamily(protocol, local, wildcard, AF_INET6,
- (short) (NLM_F_REQUEST | NLM_F_DUMP), fd);
- if (uid != INVALID_UID) {
- return uid;
- }
- wildcard = new InetSocketAddress(Inet4Address.getByName("0.0.0.0"), 0);
- uid = lookupUidByFamily(protocol, local, wildcard, AF_INET,
- (short) (NLM_F_REQUEST | NLM_F_DUMP), fd);
- if (uid != INVALID_UID) {
- return uid;
- }
- } catch (UnknownHostException e) {
- Log.e(TAG, e.toString());
- }
- }
- return INVALID_UID;
- }
-
- /**
- * Use an inet_diag socket to look up the UID associated with the input local and remote
- * address/port and protocol of a connection.
- */
- public static int getConnectionOwnerUid(int protocol, InetSocketAddress local,
- InetSocketAddress remote) {
- int uid = INVALID_UID;
- FileDescriptor fd = null;
- try {
- fd = NetlinkSocket.forProto(NETLINK_INET_DIAG);
- NetlinkSocket.connectToKernel(fd);
- uid = lookupUid(protocol, local, remote, fd);
- } catch (ErrnoException | SocketException | IllegalArgumentException
- | InterruptedIOException e) {
- Log.e(TAG, e.toString());
- } finally {
- if (fd != null) {
- try {
- SocketUtils.closeSocket(fd);
- } catch (IOException e) {
- Log.e(TAG, e.toString());
- }
- }
- }
- return uid;
- }
-
- @Override
- public String toString() {
- return "InetDiagMessage{ "
- + "nlmsghdr{" + (mHeader == null ? "" : mHeader.toString()) + "}, "
- + "inet_diag_msg{"
- + (mStructInetDiagMsg == null ? "" : mStructInetDiagMsg.toString()) + "} "
- + "}";
- }
-}
diff --git a/services/net/java/android/net/netlink/NetlinkConstants.java b/services/net/java/android/net/netlink/NetlinkConstants.java
deleted file mode 100644
index fc1551c..0000000
--- a/services/net/java/android/net/netlink/NetlinkConstants.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Copyright (C) 2015 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.netlink;
-
-import android.system.OsConstants;
-import com.android.internal.util.HexDump;
-
-import java.nio.ByteBuffer;
-
-
-/**
- * Various constants and static helper methods for netlink communications.
- *
- * Values taken from:
- *
- * <linux_src>/include/uapi/linux/netlink.h
- * <linux_src>/include/uapi/linux/rtnetlink.h
- *
- * @hide
- */
-public class NetlinkConstants {
- private NetlinkConstants() {}
-
- public static final int NLA_ALIGNTO = 4;
-
- public static final int alignedLengthOf(short length) {
- final int intLength = (int) length & 0xffff;
- return alignedLengthOf(intLength);
- }
-
- public static final int alignedLengthOf(int length) {
- if (length <= 0) { return 0; }
- return (((length + NLA_ALIGNTO - 1) / NLA_ALIGNTO) * NLA_ALIGNTO);
- }
-
- public static String stringForAddressFamily(int family) {
- if (family == OsConstants.AF_INET) { return "AF_INET"; }
- if (family == OsConstants.AF_INET6) { return "AF_INET6"; }
- if (family == OsConstants.AF_NETLINK) { return "AF_NETLINK"; }
- return String.valueOf(family);
- }
-
- public static String stringForProtocol(int protocol) {
- if (protocol == OsConstants.IPPROTO_TCP) { return "IPPROTO_TCP"; }
- if (protocol == OsConstants.IPPROTO_UDP) { return "IPPROTO_UDP"; }
- return String.valueOf(protocol);
- }
-
- public static String hexify(byte[] bytes) {
- if (bytes == null) { return "(null)"; }
- return HexDump.toHexString(bytes);
- }
-
- public static String hexify(ByteBuffer buffer) {
- if (buffer == null) { return "(null)"; }
- return HexDump.toHexString(
- buffer.array(), buffer.position(), buffer.remaining());
- }
-
- // Known values for struct nlmsghdr nlm_type.
- public static final short NLMSG_NOOP = 1; // Nothing
- public static final short NLMSG_ERROR = 2; // Error
- public static final short NLMSG_DONE = 3; // End of a dump
- public static final short NLMSG_OVERRUN = 4; // Data lost
- public static final short NLMSG_MAX_RESERVED = 15; // Max reserved value
-
- public static final short RTM_NEWLINK = 16;
- public static final short RTM_DELLINK = 17;
- public static final short RTM_GETLINK = 18;
- public static final short RTM_SETLINK = 19;
- public static final short RTM_NEWADDR = 20;
- public static final short RTM_DELADDR = 21;
- public static final short RTM_GETADDR = 22;
- public static final short RTM_NEWROUTE = 24;
- public static final short RTM_DELROUTE = 25;
- public static final short RTM_GETROUTE = 26;
- public static final short RTM_NEWNEIGH = 28;
- public static final short RTM_DELNEIGH = 29;
- public static final short RTM_GETNEIGH = 30;
- public static final short RTM_NEWRULE = 32;
- public static final short RTM_DELRULE = 33;
- public static final short RTM_GETRULE = 34;
- public static final short RTM_NEWNDUSEROPT = 68;
-
- /* see <linux_src>/include/uapi/linux/sock_diag.h */
- public static final short SOCK_DIAG_BY_FAMILY = 20;
-
- public static String stringForNlMsgType(short nlm_type) {
- switch (nlm_type) {
- case NLMSG_NOOP: return "NLMSG_NOOP";
- case NLMSG_ERROR: return "NLMSG_ERROR";
- case NLMSG_DONE: return "NLMSG_DONE";
- case NLMSG_OVERRUN: return "NLMSG_OVERRUN";
- case RTM_NEWLINK: return "RTM_NEWLINK";
- case RTM_DELLINK: return "RTM_DELLINK";
- case RTM_GETLINK: return "RTM_GETLINK";
- case RTM_SETLINK: return "RTM_SETLINK";
- case RTM_NEWADDR: return "RTM_NEWADDR";
- case RTM_DELADDR: return "RTM_DELADDR";
- case RTM_GETADDR: return "RTM_GETADDR";
- case RTM_NEWROUTE: return "RTM_NEWROUTE";
- case RTM_DELROUTE: return "RTM_DELROUTE";
- case RTM_GETROUTE: return "RTM_GETROUTE";
- case RTM_NEWNEIGH: return "RTM_NEWNEIGH";
- case RTM_DELNEIGH: return "RTM_DELNEIGH";
- case RTM_GETNEIGH: return "RTM_GETNEIGH";
- case RTM_NEWRULE: return "RTM_NEWRULE";
- case RTM_DELRULE: return "RTM_DELRULE";
- case RTM_GETRULE: return "RTM_GETRULE";
- case RTM_NEWNDUSEROPT: return "RTM_NEWNDUSEROPT";
- default:
- return "unknown RTM type: " + String.valueOf(nlm_type);
- }
- }
-}
diff --git a/services/net/java/android/net/netlink/NetlinkErrorMessage.java b/services/net/java/android/net/netlink/NetlinkErrorMessage.java
deleted file mode 100644
index e275574..0000000
--- a/services/net/java/android/net/netlink/NetlinkErrorMessage.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (C) 2015 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.netlink;
-
-import android.net.netlink.StructNlMsgHdr;
-import android.net.netlink.NetlinkMessage;
-
-import java.nio.ByteBuffer;
-
-
-/**
- * A NetlinkMessage subclass for netlink error messages.
- *
- * @hide
- */
-public class NetlinkErrorMessage extends NetlinkMessage {
-
- public static NetlinkErrorMessage parse(StructNlMsgHdr header, ByteBuffer byteBuffer) {
- final NetlinkErrorMessage errorMsg = new NetlinkErrorMessage(header);
-
- errorMsg.mNlMsgErr = StructNlMsgErr.parse(byteBuffer);
- if (errorMsg.mNlMsgErr == null) {
- return null;
- }
-
- return errorMsg;
- }
-
- private StructNlMsgErr mNlMsgErr;
-
- NetlinkErrorMessage(StructNlMsgHdr header) {
- super(header);
- mNlMsgErr = null;
- }
-
- public StructNlMsgErr getNlMsgError() {
- return mNlMsgErr;
- }
-
- @Override
- public String toString() {
- return "NetlinkErrorMessage{ "
- + "nlmsghdr{" + (mHeader == null ? "" : mHeader.toString()) + "}, "
- + "nlmsgerr{" + (mNlMsgErr == null ? "" : mNlMsgErr.toString()) + "} "
- + "}";
- }
-}
diff --git a/services/net/java/android/net/netlink/NetlinkMessage.java b/services/net/java/android/net/netlink/NetlinkMessage.java
deleted file mode 100644
index a325db8..0000000
--- a/services/net/java/android/net/netlink/NetlinkMessage.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright (C) 2015 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.netlink;
-
-import android.net.netlink.NetlinkConstants;
-import android.net.netlink.NetlinkErrorMessage;
-import android.net.netlink.RtNetlinkNeighborMessage;
-import android.net.netlink.StructNlAttr;
-import android.net.netlink.StructNlMsgHdr;
-import android.util.Log;
-
-import java.nio.ByteBuffer;
-
-
-/**
- * NetlinkMessage base class for other, more specific netlink message types.
- *
- * Classes that extend NetlinkMessage should:
- * - implement a public static parse(StructNlMsgHdr, ByteBuffer) method
- * - returning either null (parse errors) or a new object of the subclass
- * type (cast-able to NetlinkMessage)
- *
- * NetlinkMessage.parse() should be updated to know which nlmsg_type values
- * correspond with which message subclasses.
- *
- * @hide
- */
-public class NetlinkMessage {
- private final static String TAG = "NetlinkMessage";
-
- public static NetlinkMessage parse(ByteBuffer byteBuffer) {
- final int startPosition = (byteBuffer != null) ? byteBuffer.position() : -1;
- final StructNlMsgHdr nlmsghdr = StructNlMsgHdr.parse(byteBuffer);
- if (nlmsghdr == null) {
- return null;
- }
-
- int payloadLength = NetlinkConstants.alignedLengthOf(nlmsghdr.nlmsg_len);
- payloadLength -= StructNlMsgHdr.STRUCT_SIZE;
- if (payloadLength < 0 || payloadLength > byteBuffer.remaining()) {
- // Malformed message or runt buffer. Pretend the buffer was consumed.
- byteBuffer.position(byteBuffer.limit());
- return null;
- }
-
- switch (nlmsghdr.nlmsg_type) {
- //case NetlinkConstants.NLMSG_NOOP:
- case NetlinkConstants.NLMSG_ERROR:
- return (NetlinkMessage) NetlinkErrorMessage.parse(nlmsghdr, byteBuffer);
- case NetlinkConstants.NLMSG_DONE:
- byteBuffer.position(byteBuffer.position() + payloadLength);
- return new NetlinkMessage(nlmsghdr);
- //case NetlinkConstants.NLMSG_OVERRUN:
- case NetlinkConstants.RTM_NEWNEIGH:
- case NetlinkConstants.RTM_DELNEIGH:
- case NetlinkConstants.RTM_GETNEIGH:
- return (NetlinkMessage) RtNetlinkNeighborMessage.parse(nlmsghdr, byteBuffer);
- case NetlinkConstants.SOCK_DIAG_BY_FAMILY:
- return (NetlinkMessage) InetDiagMessage.parse(nlmsghdr, byteBuffer);
- default:
- if (nlmsghdr.nlmsg_type <= NetlinkConstants.NLMSG_MAX_RESERVED) {
- // Netlink control message. Just parse the header for now,
- // pretending the whole message was consumed.
- byteBuffer.position(byteBuffer.position() + payloadLength);
- return new NetlinkMessage(nlmsghdr);
- }
- return null;
- }
- }
-
- protected StructNlMsgHdr mHeader;
-
- public NetlinkMessage(StructNlMsgHdr nlmsghdr) {
- mHeader = nlmsghdr;
- }
-
- public StructNlMsgHdr getHeader() {
- return mHeader;
- }
-
- @Override
- public String toString() {
- return "NetlinkMessage{" + (mHeader == null ? "" : mHeader.toString()) + "}";
- }
-}
diff --git a/services/net/java/android/net/netlink/NetlinkSocket.java b/services/net/java/android/net/netlink/NetlinkSocket.java
deleted file mode 100644
index 7311fc5..0000000
--- a/services/net/java/android/net/netlink/NetlinkSocket.java
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * Copyright (C) 2015 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.netlink;
-
-import static android.net.util.SocketUtils.makeNetlinkSocketAddress;
-import static android.system.OsConstants.AF_NETLINK;
-import static android.system.OsConstants.EIO;
-import static android.system.OsConstants.EPROTO;
-import static android.system.OsConstants.ETIMEDOUT;
-import static android.system.OsConstants.SOCK_DGRAM;
-import static android.system.OsConstants.SOL_SOCKET;
-import static android.system.OsConstants.SO_RCVBUF;
-import static android.system.OsConstants.SO_RCVTIMEO;
-import static android.system.OsConstants.SO_SNDTIMEO;
-
-import android.net.util.SocketUtils;
-import android.system.ErrnoException;
-import android.system.Os;
-import android.system.StructTimeval;
-import android.util.Log;
-
-import java.io.FileDescriptor;
-import java.io.IOException;
-import java.io.InterruptedIOException;
-import java.net.SocketException;
-import java.nio.ByteBuffer;
-import java.nio.ByteOrder;
-
-
-/**
- * NetlinkSocket
- *
- * A small static class to assist with AF_NETLINK socket operations.
- *
- * @hide
- */
-public class NetlinkSocket {
- private static final String TAG = "NetlinkSocket";
-
- public static final int DEFAULT_RECV_BUFSIZE = 8 * 1024;
- public static final int SOCKET_RECV_BUFSIZE = 64 * 1024;
-
- public static void sendOneShotKernelMessage(int nlProto, byte[] msg) throws ErrnoException {
- final String errPrefix = "Error in NetlinkSocket.sendOneShotKernelMessage";
- final long IO_TIMEOUT = 300L;
-
- final FileDescriptor fd = forProto(nlProto);
-
- try {
- connectToKernel(fd);
- sendMessage(fd, msg, 0, msg.length, IO_TIMEOUT);
- final ByteBuffer bytes = recvMessage(fd, DEFAULT_RECV_BUFSIZE, IO_TIMEOUT);
- // recvMessage() guaranteed to not return null if it did not throw.
- final NetlinkMessage response = NetlinkMessage.parse(bytes);
- if (response != null && response instanceof NetlinkErrorMessage &&
- (((NetlinkErrorMessage) response).getNlMsgError() != null)) {
- final int errno = ((NetlinkErrorMessage) response).getNlMsgError().error;
- if (errno != 0) {
- // TODO: consider ignoring EINVAL (-22), which appears to be
- // normal when probing a neighbor for which the kernel does
- // not already have / no longer has a link layer address.
- Log.e(TAG, errPrefix + ", errmsg=" + response.toString());
- // Note: convert kernel errnos (negative) into userspace errnos (positive).
- throw new ErrnoException(response.toString(), Math.abs(errno));
- }
- } else {
- final String errmsg;
- if (response == null) {
- bytes.position(0);
- errmsg = "raw bytes: " + NetlinkConstants.hexify(bytes);
- } else {
- errmsg = response.toString();
- }
- Log.e(TAG, errPrefix + ", errmsg=" + errmsg);
- throw new ErrnoException(errmsg, EPROTO);
- }
- } catch (InterruptedIOException e) {
- Log.e(TAG, errPrefix, e);
- throw new ErrnoException(errPrefix, ETIMEDOUT, e);
- } catch (SocketException e) {
- Log.e(TAG, errPrefix, e);
- throw new ErrnoException(errPrefix, EIO, e);
- } finally {
- try {
- SocketUtils.closeSocket(fd);
- } catch (IOException e) {
- // Nothing we can do here
- }
- }
- }
-
- public static FileDescriptor forProto(int nlProto) throws ErrnoException {
- final FileDescriptor fd = Os.socket(AF_NETLINK, SOCK_DGRAM, nlProto);
- Os.setsockoptInt(fd, SOL_SOCKET, SO_RCVBUF, SOCKET_RECV_BUFSIZE);
- return fd;
- }
-
- public static void connectToKernel(FileDescriptor fd) throws ErrnoException, SocketException {
- Os.connect(fd, makeNetlinkSocketAddress(0, 0));
- }
-
- private static void checkTimeout(long timeoutMs) {
- if (timeoutMs < 0) {
- throw new IllegalArgumentException("Negative timeouts not permitted");
- }
- }
-
- /**
- * Wait up to |timeoutMs| (or until underlying socket error) for a
- * netlink message of at most |bufsize| size.
- *
- * Multi-threaded calls with different timeouts will cause unexpected results.
- */
- public static ByteBuffer recvMessage(FileDescriptor fd, int bufsize, long timeoutMs)
- throws ErrnoException, IllegalArgumentException, InterruptedIOException {
- checkTimeout(timeoutMs);
-
- Os.setsockoptTimeval(fd, SOL_SOCKET, SO_RCVTIMEO, StructTimeval.fromMillis(timeoutMs));
-
- ByteBuffer byteBuffer = ByteBuffer.allocate(bufsize);
- int length = Os.read(fd, byteBuffer);
- if (length == bufsize) {
- Log.w(TAG, "maximum read");
- }
- byteBuffer.position(0);
- byteBuffer.limit(length);
- byteBuffer.order(ByteOrder.nativeOrder());
- return byteBuffer;
- }
-
- /**
- * Send a message to a peer to which this socket has previously connected,
- * waiting at most |timeoutMs| milliseconds for the send to complete.
- *
- * Multi-threaded calls with different timeouts will cause unexpected results.
- */
- public static int sendMessage(
- FileDescriptor fd, byte[] bytes, int offset, int count, long timeoutMs)
- throws ErrnoException, IllegalArgumentException, InterruptedIOException {
- checkTimeout(timeoutMs);
- Os.setsockoptTimeval(fd, SOL_SOCKET, SO_SNDTIMEO, StructTimeval.fromMillis(timeoutMs));
- return Os.write(fd, bytes, offset, count);
- }
-}
diff --git a/services/net/java/android/net/netlink/RtNetlinkNeighborMessage.java b/services/net/java/android/net/netlink/RtNetlinkNeighborMessage.java
deleted file mode 100644
index e784fbb..0000000
--- a/services/net/java/android/net/netlink/RtNetlinkNeighborMessage.java
+++ /dev/null
@@ -1,251 +0,0 @@
-/*
- * Copyright (C) 2015 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.netlink;
-
-import static android.net.netlink.StructNlMsgHdr.NLM_F_ACK;
-import static android.net.netlink.StructNlMsgHdr.NLM_F_DUMP;
-import static android.net.netlink.StructNlMsgHdr.NLM_F_REPLACE;
-import static android.net.netlink.StructNlMsgHdr.NLM_F_REQUEST;
-
-import android.net.netlink.StructNdaCacheInfo;
-import android.net.netlink.StructNdMsg;
-import android.net.netlink.StructNlAttr;
-import android.net.netlink.StructNlMsgHdr;
-import android.net.netlink.NetlinkMessage;
-import android.system.OsConstants;
-import android.util.Log;
-
-import java.net.InetAddress;
-import java.net.Inet6Address;
-import java.nio.ByteBuffer;
-import java.nio.ByteOrder;
-
-
-/**
- * A NetlinkMessage subclass for rtnetlink neighbor messages.
- *
- * see also: <linux_src>/include/uapi/linux/neighbour.h
- *
- * @hide
- */
-public class RtNetlinkNeighborMessage extends NetlinkMessage {
- public static final short NDA_UNSPEC = 0;
- public static final short NDA_DST = 1;
- public static final short NDA_LLADDR = 2;
- public static final short NDA_CACHEINFO = 3;
- public static final short NDA_PROBES = 4;
- public static final short NDA_VLAN = 5;
- public static final short NDA_PORT = 6;
- public static final short NDA_VNI = 7;
- public static final short NDA_IFINDEX = 8;
- public static final short NDA_MASTER = 9;
-
- private static StructNlAttr findNextAttrOfType(short attrType, ByteBuffer byteBuffer) {
- while (byteBuffer != null && byteBuffer.remaining() > 0) {
- final StructNlAttr nlAttr = StructNlAttr.peek(byteBuffer);
- if (nlAttr == null) {
- break;
- }
- if (nlAttr.nla_type == attrType) {
- return StructNlAttr.parse(byteBuffer);
- }
- if (byteBuffer.remaining() < nlAttr.getAlignedLength()) {
- break;
- }
- byteBuffer.position(byteBuffer.position() + nlAttr.getAlignedLength());
- }
- return null;
- }
-
- public static RtNetlinkNeighborMessage parse(StructNlMsgHdr header, ByteBuffer byteBuffer) {
- final RtNetlinkNeighborMessage neighMsg = new RtNetlinkNeighborMessage(header);
-
- neighMsg.mNdmsg = StructNdMsg.parse(byteBuffer);
- if (neighMsg.mNdmsg == null) {
- return null;
- }
-
- // Some of these are message-type dependent, and not always present.
- final int baseOffset = byteBuffer.position();
- StructNlAttr nlAttr = findNextAttrOfType(NDA_DST, byteBuffer);
- if (nlAttr != null) {
- neighMsg.mDestination = nlAttr.getValueAsInetAddress();
- }
-
- byteBuffer.position(baseOffset);
- nlAttr = findNextAttrOfType(NDA_LLADDR, byteBuffer);
- if (nlAttr != null) {
- neighMsg.mLinkLayerAddr = nlAttr.nla_value;
- }
-
- byteBuffer.position(baseOffset);
- nlAttr = findNextAttrOfType(NDA_PROBES, byteBuffer);
- if (nlAttr != null) {
- neighMsg.mNumProbes = nlAttr.getValueAsInt(0);
- }
-
- byteBuffer.position(baseOffset);
- nlAttr = findNextAttrOfType(NDA_CACHEINFO, byteBuffer);
- if (nlAttr != null) {
- neighMsg.mCacheInfo = StructNdaCacheInfo.parse(nlAttr.getValueAsByteBuffer());
- }
-
- final int kMinConsumed = StructNlMsgHdr.STRUCT_SIZE + StructNdMsg.STRUCT_SIZE;
- final int kAdditionalSpace = NetlinkConstants.alignedLengthOf(
- neighMsg.mHeader.nlmsg_len - kMinConsumed);
- if (byteBuffer.remaining() < kAdditionalSpace) {
- byteBuffer.position(byteBuffer.limit());
- } else {
- byteBuffer.position(baseOffset + kAdditionalSpace);
- }
-
- return neighMsg;
- }
-
- /**
- * A convenience method to create an RTM_GETNEIGH request message.
- */
- public static byte[] newGetNeighborsRequest(int seqNo) {
- final int length = StructNlMsgHdr.STRUCT_SIZE + StructNdMsg.STRUCT_SIZE;
- final byte[] bytes = new byte[length];
- final ByteBuffer byteBuffer = ByteBuffer.wrap(bytes);
- byteBuffer.order(ByteOrder.nativeOrder());
-
- final StructNlMsgHdr nlmsghdr = new StructNlMsgHdr();
- nlmsghdr.nlmsg_len = length;
- nlmsghdr.nlmsg_type = NetlinkConstants.RTM_GETNEIGH;
- nlmsghdr.nlmsg_flags = NLM_F_REQUEST | NLM_F_DUMP;
- nlmsghdr.nlmsg_seq = seqNo;
- nlmsghdr.pack(byteBuffer);
-
- final StructNdMsg ndmsg = new StructNdMsg();
- ndmsg.pack(byteBuffer);
-
- return bytes;
- }
-
- /**
- * A convenience method to create an RTM_NEWNEIGH message, to modify
- * the kernel's state information for a specific neighbor.
- */
- public static byte[] newNewNeighborMessage(
- int seqNo, InetAddress ip, short nudState, int ifIndex, byte[] llAddr) {
- final StructNlMsgHdr nlmsghdr = new StructNlMsgHdr();
- nlmsghdr.nlmsg_type = NetlinkConstants.RTM_NEWNEIGH;
- nlmsghdr.nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK | NLM_F_REPLACE;
- nlmsghdr.nlmsg_seq = seqNo;
-
- final RtNetlinkNeighborMessage msg = new RtNetlinkNeighborMessage(nlmsghdr);
- msg.mNdmsg = new StructNdMsg();
- msg.mNdmsg.ndm_family =
- (byte) ((ip instanceof Inet6Address) ? OsConstants.AF_INET6 : OsConstants.AF_INET);
- msg.mNdmsg.ndm_ifindex = ifIndex;
- msg.mNdmsg.ndm_state = nudState;
- msg.mDestination = ip;
- msg.mLinkLayerAddr = llAddr; // might be null
-
- final byte[] bytes = new byte[msg.getRequiredSpace()];
- nlmsghdr.nlmsg_len = bytes.length;
- final ByteBuffer byteBuffer = ByteBuffer.wrap(bytes);
- byteBuffer.order(ByteOrder.nativeOrder());
- msg.pack(byteBuffer);
- return bytes;
- }
-
- private StructNdMsg mNdmsg;
- private InetAddress mDestination;
- private byte[] mLinkLayerAddr;
- private int mNumProbes;
- private StructNdaCacheInfo mCacheInfo;
-
- private RtNetlinkNeighborMessage(StructNlMsgHdr header) {
- super(header);
- mNdmsg = null;
- mDestination = null;
- mLinkLayerAddr = null;
- mNumProbes = 0;
- mCacheInfo = null;
- }
-
- public StructNdMsg getNdHeader() {
- return mNdmsg;
- }
-
- public InetAddress getDestination() {
- return mDestination;
- }
-
- public byte[] getLinkLayerAddress() {
- return mLinkLayerAddr;
- }
-
- public int getProbes() {
- return mNumProbes;
- }
-
- public StructNdaCacheInfo getCacheInfo() {
- return mCacheInfo;
- }
-
- public int getRequiredSpace() {
- int spaceRequired = StructNlMsgHdr.STRUCT_SIZE + StructNdMsg.STRUCT_SIZE;
- if (mDestination != null) {
- spaceRequired += NetlinkConstants.alignedLengthOf(
- StructNlAttr.NLA_HEADERLEN + mDestination.getAddress().length);
- }
- if (mLinkLayerAddr != null) {
- spaceRequired += NetlinkConstants.alignedLengthOf(
- StructNlAttr.NLA_HEADERLEN + mLinkLayerAddr.length);
- }
- // Currently we don't write messages with NDA_PROBES nor NDA_CACHEINFO
- // attributes appended. Fix later, if necessary.
- return spaceRequired;
- }
-
- private static void packNlAttr(short nlType, byte[] nlValue, ByteBuffer byteBuffer) {
- final StructNlAttr nlAttr = new StructNlAttr();
- nlAttr.nla_type = nlType;
- nlAttr.nla_value = nlValue;
- nlAttr.nla_len = (short) (StructNlAttr.NLA_HEADERLEN + nlAttr.nla_value.length);
- nlAttr.pack(byteBuffer);
- }
-
- public void pack(ByteBuffer byteBuffer) {
- getHeader().pack(byteBuffer) ;
- mNdmsg.pack(byteBuffer);
-
- if (mDestination != null) {
- packNlAttr(NDA_DST, mDestination.getAddress(), byteBuffer);
- }
- if (mLinkLayerAddr != null) {
- packNlAttr(NDA_LLADDR, mLinkLayerAddr, byteBuffer);
- }
- }
-
- @Override
- public String toString() {
- final String ipLiteral = (mDestination == null) ? "" : mDestination.getHostAddress();
- return "RtNetlinkNeighborMessage{ "
- + "nlmsghdr{" + (mHeader == null ? "" : mHeader.toString()) + "}, "
- + "ndmsg{" + (mNdmsg == null ? "" : mNdmsg.toString()) + "}, "
- + "destination{" + ipLiteral + "} "
- + "linklayeraddr{" + NetlinkConstants.hexify(mLinkLayerAddr) + "} "
- + "probes{" + mNumProbes + "} "
- + "cacheinfo{" + (mCacheInfo == null ? "" : mCacheInfo.toString()) + "} "
- + "}";
- }
-}
diff --git a/services/net/java/android/net/netlink/StructInetDiagMsg.java b/services/net/java/android/net/netlink/StructInetDiagMsg.java
deleted file mode 100644
index da824ad..0000000
--- a/services/net/java/android/net/netlink/StructInetDiagMsg.java
+++ /dev/null
@@ -1,67 +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.netlink;
-
-import static java.nio.ByteOrder.BIG_ENDIAN;
-import static android.system.OsConstants.AF_INET;
-import static android.system.OsConstants.AF_INET6;
-
-import java.net.Inet4Address;
-import java.net.InetSocketAddress;
-import java.nio.ByteBuffer;
-import java.nio.ByteOrder;
-import android.util.Log;
-
-/**
- * struct inet_diag_msg
- *
- * see <linux_src>/include/uapi/linux/inet_diag.h
- *
- * struct inet_diag_msg {
- * __u8 idiag_family;
- * __u8 idiag_state;
- * __u8 idiag_timer;
- * __u8 idiag_retrans;
- * struct inet_diag_sockid id;
- * __u32 idiag_expires;
- * __u32 idiag_rqueue;
- * __u32 idiag_wqueue;
- * __u32 idiag_uid;
- * __u32 idiag_inode;
- * };
- *
- * @hide
- */
-public class StructInetDiagMsg {
- public static final int STRUCT_SIZE = 4 + StructInetDiagSockId.STRUCT_SIZE + 20;
- private static final int IDIAG_UID_OFFSET = StructNlMsgHdr.STRUCT_SIZE + 4 +
- StructInetDiagSockId.STRUCT_SIZE + 12;
- public int idiag_uid;
-
- public static StructInetDiagMsg parse(ByteBuffer byteBuffer) {
- StructInetDiagMsg struct = new StructInetDiagMsg();
- struct.idiag_uid = byteBuffer.getInt(IDIAG_UID_OFFSET);
- return struct;
- }
-
- @Override
- public String toString() {
- return "StructInetDiagMsg{ "
- + "idiag_uid{" + idiag_uid + "}, "
- + "}";
- }
-}
diff --git a/services/net/java/android/net/netlink/StructInetDiagReqV2.java b/services/net/java/android/net/netlink/StructInetDiagReqV2.java
deleted file mode 100644
index 2268113..0000000
--- a/services/net/java/android/net/netlink/StructInetDiagReqV2.java
+++ /dev/null
@@ -1,97 +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.netlink;
-
-import android.annotation.Nullable;
-
-import java.net.InetSocketAddress;
-import java.nio.ByteBuffer;
-
-/**
- * struct inet_diag_req_v2
- *
- * see <linux_src>/include/uapi/linux/inet_diag.h
- *
- * struct inet_diag_req_v2 {
- * __u8 sdiag_family;
- * __u8 sdiag_protocol;
- * __u8 idiag_ext;
- * __u8 pad;
- * __u32 idiag_states;
- * struct inet_diag_sockid id;
- * };
- *
- * @hide
- */
-public class StructInetDiagReqV2 {
- public static final int STRUCT_SIZE = 8 + StructInetDiagSockId.STRUCT_SIZE;
-
- private final byte mSdiagFamily;
- private final byte mSdiagProtocol;
- private final byte mIdiagExt;
- private final byte mPad;
- private final StructInetDiagSockId mId;
- private final int mState;
- public static final int INET_DIAG_REQ_V2_ALL_STATES = (int) 0xffffffff;
-
- public StructInetDiagReqV2(int protocol, InetSocketAddress local, InetSocketAddress remote,
- int family) {
- this(protocol, local, remote, family, 0 /* pad */, 0 /* extension */,
- INET_DIAG_REQ_V2_ALL_STATES);
- }
-
- public StructInetDiagReqV2(int protocol, @Nullable InetSocketAddress local,
- @Nullable InetSocketAddress remote, int family, int pad, int extension, int state)
- throws NullPointerException {
- mSdiagFamily = (byte) family;
- mSdiagProtocol = (byte) protocol;
- // Request for all sockets if no specific socket is requested. Specify the local and remote
- // socket address information for target request socket.
- if ((local == null) != (remote == null)) {
- throw new NullPointerException("Local and remote must be both null or both non-null");
- }
- mId = ((local != null && remote != null) ? new StructInetDiagSockId(local, remote) : null);
- mPad = (byte) pad;
- mIdiagExt = (byte) extension;
- mState = state;
- }
-
- public void pack(ByteBuffer byteBuffer) {
- // The ByteOrder must have already been set by the caller.
- byteBuffer.put((byte) mSdiagFamily);
- byteBuffer.put((byte) mSdiagProtocol);
- byteBuffer.put((byte) mIdiagExt);
- byteBuffer.put((byte) mPad);
- byteBuffer.putInt(mState);
- if (mId != null) mId.pack(byteBuffer);
- }
-
- @Override
- public String toString() {
- final String familyStr = NetlinkConstants.stringForAddressFamily(mSdiagFamily);
- final String protocolStr = NetlinkConstants.stringForAddressFamily(mSdiagProtocol);
-
- return "StructInetDiagReqV2{ "
- + "sdiag_family{" + familyStr + "}, "
- + "sdiag_protocol{" + protocolStr + "}, "
- + "idiag_ext{" + mIdiagExt + ")}, "
- + "pad{" + mPad + "}, "
- + "idiag_states{" + Integer.toHexString(mState) + "}, "
- + ((mId != null) ? mId.toString() : "inet_diag_sockid=null")
- + "}";
- }
-}
diff --git a/services/net/java/android/net/netlink/StructInetDiagSockId.java b/services/net/java/android/net/netlink/StructInetDiagSockId.java
deleted file mode 100644
index 2e9fa25..0000000
--- a/services/net/java/android/net/netlink/StructInetDiagSockId.java
+++ /dev/null
@@ -1,86 +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.netlink;
-
-import static java.nio.ByteOrder.BIG_ENDIAN;
-
-import java.net.Inet4Address;
-import java.net.InetSocketAddress;
-import java.nio.ByteBuffer;
-import java.nio.ByteOrder;
-
-/**
- * struct inet_diag_req_v2
- *
- * see <linux_src>/include/uapi/linux/inet_diag.h
- *
- * struct inet_diag_sockid {
- * __be16 idiag_sport;
- * __be16 idiag_dport;
- * __be32 idiag_src[4];
- * __be32 idiag_dst[4];
- * __u32 idiag_if;
- * __u32 idiag_cookie[2];
- * #define INET_DIAG_NOCOOKIE (~0U)
- * };
- *
- * @hide
- */
-public class StructInetDiagSockId {
- public static final int STRUCT_SIZE = 48;
-
- private final InetSocketAddress mLocSocketAddress;
- private final InetSocketAddress mRemSocketAddress;
- private final byte[] INET_DIAG_NOCOOKIE = new byte[]{
- (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
- (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff};
- private final byte[] IPV4_PADDING = new byte[] {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-
- public StructInetDiagSockId(InetSocketAddress loc, InetSocketAddress rem) {
- mLocSocketAddress = loc;
- mRemSocketAddress = rem;
- }
-
- public void pack(ByteBuffer byteBuffer) {
- byteBuffer.order(BIG_ENDIAN);
- byteBuffer.putShort((short) mLocSocketAddress.getPort());
- byteBuffer.putShort((short) mRemSocketAddress.getPort());
- byteBuffer.put(mLocSocketAddress.getAddress().getAddress());
- if (mLocSocketAddress.getAddress() instanceof Inet4Address) {
- byteBuffer.put(IPV4_PADDING);
- }
- byteBuffer.put(mRemSocketAddress.getAddress().getAddress());
- if (mRemSocketAddress.getAddress() instanceof Inet4Address) {
- byteBuffer.put(IPV4_PADDING);
- }
- byteBuffer.order(ByteOrder.nativeOrder());
- byteBuffer.putInt(0);
- byteBuffer.put(INET_DIAG_NOCOOKIE);
- }
-
- @Override
- public String toString() {
- return "StructInetDiagSockId{ "
- + "idiag_sport{" + mLocSocketAddress.getPort() + "}, "
- + "idiag_dport{" + mRemSocketAddress.getPort() + "}, "
- + "idiag_src{" + mLocSocketAddress.getAddress().getHostAddress() + "}, "
- + "idiag_dst{" + mRemSocketAddress.getAddress().getHostAddress() + "}, "
- + "idiag_if{" + 0 + "} "
- + "idiag_cookie{INET_DIAG_NOCOOKIE}"
- + "}";
- }
-}
diff --git a/services/net/java/android/net/netlink/StructNdMsg.java b/services/net/java/android/net/netlink/StructNdMsg.java
deleted file mode 100644
index e34ec39..0000000
--- a/services/net/java/android/net/netlink/StructNdMsg.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * Copyright (C) 2015 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.netlink;
-
-import android.net.netlink.NetlinkConstants;
-import android.system.OsConstants;
-import java.nio.ByteBuffer;
-
-
-/**
- * struct ndmsg
- *
- * see: <linux_src>/include/uapi/linux/neighbour.h
- *
- * @hide
- */
-public class StructNdMsg {
- // Already aligned.
- public static final int STRUCT_SIZE = 12;
-
- // Neighbor Cache Entry States
- public static final short NUD_NONE = 0x00;
- public static final short NUD_INCOMPLETE = 0x01;
- public static final short NUD_REACHABLE = 0x02;
- public static final short NUD_STALE = 0x04;
- public static final short NUD_DELAY = 0x08;
- public static final short NUD_PROBE = 0x10;
- public static final short NUD_FAILED = 0x20;
- public static final short NUD_NOARP = 0x40;
- public static final short NUD_PERMANENT = 0x80;
-
- public static String stringForNudState(short nudState) {
- switch (nudState) {
- case NUD_NONE: return "NUD_NONE";
- case NUD_INCOMPLETE: return "NUD_INCOMPLETE";
- case NUD_REACHABLE: return "NUD_REACHABLE";
- case NUD_STALE: return "NUD_STALE";
- case NUD_DELAY: return "NUD_DELAY";
- case NUD_PROBE: return "NUD_PROBE";
- case NUD_FAILED: return "NUD_FAILED";
- case NUD_NOARP: return "NUD_NOARP";
- case NUD_PERMANENT: return "NUD_PERMANENT";
- default:
- return "unknown NUD state: " + String.valueOf(nudState);
- }
- }
-
- public static boolean isNudStateConnected(short nudState) {
- return ((nudState & (NUD_PERMANENT|NUD_NOARP|NUD_REACHABLE)) != 0);
- }
-
- public static boolean isNudStateValid(short nudState) {
- return (isNudStateConnected(nudState) ||
- ((nudState & (NUD_PROBE|NUD_STALE|NUD_DELAY)) != 0));
- }
-
- // Neighbor Cache Entry Flags
- public static byte NTF_USE = (byte) 0x01;
- public static byte NTF_SELF = (byte) 0x02;
- public static byte NTF_MASTER = (byte) 0x04;
- public static byte NTF_PROXY = (byte) 0x08;
- public static byte NTF_ROUTER = (byte) 0x80;
-
- public static String stringForNudFlags(byte flags) {
- final StringBuilder sb = new StringBuilder();
- if ((flags & NTF_USE) != 0) {
- sb.append("NTF_USE");
- }
- if ((flags & NTF_SELF) != 0) {
- if (sb.length() > 0) { sb.append("|"); }
- sb.append("NTF_SELF");
- }
- if ((flags & NTF_MASTER) != 0) {
- if (sb.length() > 0) { sb.append("|"); }
- sb.append("NTF_MASTER");
- }
- if ((flags & NTF_PROXY) != 0) {
- if (sb.length() > 0) { sb.append("|");
- }
- sb.append("NTF_PROXY"); }
- if ((flags & NTF_ROUTER) != 0) {
- if (sb.length() > 0) { sb.append("|"); }
- sb.append("NTF_ROUTER");
- }
- return sb.toString();
- }
-
- private static boolean hasAvailableSpace(ByteBuffer byteBuffer) {
- return byteBuffer != null && byteBuffer.remaining() >= STRUCT_SIZE;
- }
-
- public static StructNdMsg parse(ByteBuffer byteBuffer) {
- if (!hasAvailableSpace(byteBuffer)) { return null; }
-
- // The ByteOrder must have already been set by the caller. In most
- // cases ByteOrder.nativeOrder() is correct, with the possible
- // exception of usage within unittests.
- final StructNdMsg struct = new StructNdMsg();
- struct.ndm_family = byteBuffer.get();
- final byte pad1 = byteBuffer.get();
- final short pad2 = byteBuffer.getShort();
- struct.ndm_ifindex = byteBuffer.getInt();
- struct.ndm_state = byteBuffer.getShort();
- struct.ndm_flags = byteBuffer.get();
- struct.ndm_type = byteBuffer.get();
- return struct;
- }
-
- public byte ndm_family;
- public int ndm_ifindex;
- public short ndm_state;
- public byte ndm_flags;
- public byte ndm_type;
-
- public StructNdMsg() {
- ndm_family = (byte) OsConstants.AF_UNSPEC;
- }
-
- public void pack(ByteBuffer byteBuffer) {
- // The ByteOrder must have already been set by the caller. In most
- // cases ByteOrder.nativeOrder() is correct, with the exception
- // of usage within unittests.
- byteBuffer.put(ndm_family);
- byteBuffer.put((byte) 0); // pad1
- byteBuffer.putShort((short) 0); // pad2
- byteBuffer.putInt(ndm_ifindex);
- byteBuffer.putShort(ndm_state);
- byteBuffer.put(ndm_flags);
- byteBuffer.put(ndm_type);
- }
-
- public boolean nudConnected() {
- return isNudStateConnected(ndm_state);
- }
-
- public boolean nudValid() {
- return isNudStateValid(ndm_state);
- }
-
- @Override
- public String toString() {
- final String stateStr = "" + ndm_state + " (" + stringForNudState(ndm_state) + ")";
- final String flagsStr = "" + ndm_flags + " (" + stringForNudFlags(ndm_flags) + ")";
- return "StructNdMsg{ "
- + "family{" + NetlinkConstants.stringForAddressFamily((int) ndm_family) + "}, "
- + "ifindex{" + ndm_ifindex + "}, "
- + "state{" + stateStr + "}, "
- + "flags{" + flagsStr + "}, "
- + "type{" + ndm_type + "} "
- + "}";
- }
-}
diff --git a/services/net/java/android/net/netlink/StructNdaCacheInfo.java b/services/net/java/android/net/netlink/StructNdaCacheInfo.java
deleted file mode 100644
index 16cf563..0000000
--- a/services/net/java/android/net/netlink/StructNdaCacheInfo.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Copyright (C) 2015 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.netlink;
-
-import android.system.Os;
-import android.system.OsConstants;
-
-import java.nio.ByteBuffer;
-
-
-/**
- * struct nda_cacheinfo
- *
- * see: <linux_src>/include/uapi/linux/neighbour.h
- *
- * @hide
- */
-public class StructNdaCacheInfo {
- // Already aligned.
- public static final int STRUCT_SIZE = 16;
-
- private static boolean hasAvailableSpace(ByteBuffer byteBuffer) {
- return byteBuffer != null && byteBuffer.remaining() >= STRUCT_SIZE;
- }
-
- public static StructNdaCacheInfo parse(ByteBuffer byteBuffer) {
- if (!hasAvailableSpace(byteBuffer)) { return null; }
-
- // The ByteOrder must have already been set by the caller. In most
- // cases ByteOrder.nativeOrder() is correct, with the possible
- // exception of usage within unittests.
- final StructNdaCacheInfo struct = new StructNdaCacheInfo();
- struct.ndm_used = byteBuffer.getInt();
- struct.ndm_confirmed = byteBuffer.getInt();
- struct.ndm_updated = byteBuffer.getInt();
- struct.ndm_refcnt = byteBuffer.getInt();
- return struct;
- }
-
- // TODO: investigate whether this can change during device runtime and
- // decide what (if anything) should be done about that.
- private static final long CLOCK_TICKS_PER_SECOND = Os.sysconf(OsConstants._SC_CLK_TCK);
-
- private static long ticksToMilliSeconds(int intClockTicks) {
- final long longClockTicks = (long) intClockTicks & 0xffffffff;
- return (longClockTicks * 1000) / CLOCK_TICKS_PER_SECOND;
- }
-
- /**
- * Explanatory notes, for reference.
- *
- * Before being returned to user space, the neighbor entry times are
- * converted to clock_t's like so:
- *
- * ndm_used = jiffies_to_clock_t(now - neigh->used);
- * ndm_confirmed = jiffies_to_clock_t(now - neigh->confirmed);
- * ndm_updated = jiffies_to_clock_t(now - neigh->updated);
- *
- * meaning that these values are expressed as "clock ticks ago". To
- * convert these clock ticks to seconds divide by sysconf(_SC_CLK_TCK).
- * When _SC_CLK_TCK is 100, for example, the ndm_* times are expressed
- * in centiseconds.
- *
- * These values are unsigned, but fortunately being expressed as "some
- * clock ticks ago", these values are typically very small (and
- * 2^31 centiseconds = 248 days).
- *
- * By observation, it appears that:
- * ndm_used: the last time ARP/ND took place for this neighbor
- * ndm_confirmed: the last time ARP/ND succeeded for this neighbor OR
- * higher layer confirmation (TCP or MSG_CONFIRM)
- * was received
- * ndm_updated: the time when the current NUD state was entered
- */
- public int ndm_used;
- public int ndm_confirmed;
- public int ndm_updated;
- public int ndm_refcnt;
-
- public StructNdaCacheInfo() {}
-
- public long lastUsed() {
- return ticksToMilliSeconds(ndm_used);
- }
-
- public long lastConfirmed() {
- return ticksToMilliSeconds(ndm_confirmed);
- }
-
- public long lastUpdated() {
- return ticksToMilliSeconds(ndm_updated);
- }
-
- @Override
- public String toString() {
- return "NdaCacheInfo{ "
- + "ndm_used{" + lastUsed() + "}, "
- + "ndm_confirmed{" + lastConfirmed() + "}, "
- + "ndm_updated{" + lastUpdated() + "}, "
- + "ndm_refcnt{" + ndm_refcnt + "} "
- + "}";
- }
-}
diff --git a/services/net/java/android/net/netlink/StructNfGenMsg.java b/services/net/java/android/net/netlink/StructNfGenMsg.java
deleted file mode 100644
index 8155977..0000000
--- a/services/net/java/android/net/netlink/StructNfGenMsg.java
+++ /dev/null
@@ -1,49 +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.
- */
-
-package android.net.netlink;
-
-import java.nio.ByteBuffer;
-
-
-/**
- * struct nfgenmsg
- *
- * see <linux_src>/include/uapi/linux/netfilter/nfnetlink.h
- *
- * @hide
- */
-public class StructNfGenMsg {
- public static final int STRUCT_SIZE = 2 + Short.BYTES;
-
- public static final int NFNETLINK_V0 = 0;
-
- final public byte nfgen_family;
- final public byte version;
- final public short res_id; // N.B.: this is big endian in the kernel
-
- public StructNfGenMsg(byte family) {
- nfgen_family = family;
- version = (byte) NFNETLINK_V0;
- res_id = (short) 0;
- }
-
- public void pack(ByteBuffer byteBuffer) {
- byteBuffer.put(nfgen_family);
- byteBuffer.put(version);
- byteBuffer.putShort(res_id);
- }
-}
diff --git a/services/net/java/android/net/netlink/StructNlAttr.java b/services/net/java/android/net/netlink/StructNlAttr.java
deleted file mode 100644
index 28a4e88..0000000
--- a/services/net/java/android/net/netlink/StructNlAttr.java
+++ /dev/null
@@ -1,210 +0,0 @@
-/*
- * Copyright (C) 2015 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.netlink;
-
-import android.net.netlink.NetlinkConstants;
-
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-import java.nio.ByteOrder;
-import java.nio.ByteBuffer;
-
-
-/**
- * struct nlattr
- *
- * see: <linux_src>/include/uapi/linux/netlink.h
- *
- * @hide
- */
-public class StructNlAttr {
- // Already aligned.
- public static final int NLA_HEADERLEN = 4;
- public static final int NLA_F_NESTED = (1 << 15);
-
- public static short makeNestedType(short type) {
- return (short) (type | NLA_F_NESTED);
- }
-
- // Return a (length, type) object only, without consuming any bytes in
- // |byteBuffer| and without copying or interpreting any value bytes.
- // This is used for scanning over a packed set of struct nlattr's,
- // looking for instances of a particular type.
- public static StructNlAttr peek(ByteBuffer byteBuffer) {
- if (byteBuffer == null || byteBuffer.remaining() < NLA_HEADERLEN) {
- return null;
- }
- final int baseOffset = byteBuffer.position();
-
- // Assume the byte order of the buffer is the expected byte order of the value.
- final StructNlAttr struct = new StructNlAttr(byteBuffer.order());
- // The byte order of nla_len and nla_type is always native.
- final ByteOrder originalOrder = byteBuffer.order();
- byteBuffer.order(ByteOrder.nativeOrder());
- try {
- struct.nla_len = byteBuffer.getShort();
- struct.nla_type = byteBuffer.getShort();
- } finally {
- byteBuffer.order(originalOrder);
- }
-
- byteBuffer.position(baseOffset);
- if (struct.nla_len < NLA_HEADERLEN) {
- // Malformed.
- return null;
- }
- return struct;
- }
-
- public static StructNlAttr parse(ByteBuffer byteBuffer) {
- final StructNlAttr struct = peek(byteBuffer);
- if (struct == null || byteBuffer.remaining() < struct.getAlignedLength()) {
- return null;
- }
-
- final int baseOffset = byteBuffer.position();
- byteBuffer.position(baseOffset + NLA_HEADERLEN);
-
- int valueLen = ((int) struct.nla_len) & 0xffff;
- valueLen -= NLA_HEADERLEN;
- if (valueLen > 0) {
- struct.nla_value = new byte[valueLen];
- byteBuffer.get(struct.nla_value, 0, valueLen);
- byteBuffer.position(baseOffset + struct.getAlignedLength());
- }
- return struct;
- }
-
- public short nla_len = (short) NLA_HEADERLEN;
- public short nla_type;
- public byte[] nla_value;
-
- // The byte order used to read/write the value member. Netlink length and
- // type members are always read/written in native order.
- private ByteOrder mByteOrder = ByteOrder.nativeOrder();
-
- public StructNlAttr() {}
-
- public StructNlAttr(ByteOrder byteOrder) {
- mByteOrder = byteOrder;
- }
-
- public StructNlAttr(short type, byte value) {
- nla_type = type;
- setValue(new byte[1]);
- nla_value[0] = value;
- }
-
- public StructNlAttr(short type, short value) {
- this(type, value, ByteOrder.nativeOrder());
- }
-
- public StructNlAttr(short type, short value, ByteOrder order) {
- this(order);
- nla_type = type;
- setValue(new byte[Short.BYTES]);
- getValueAsByteBuffer().putShort(value);
- }
-
- public StructNlAttr(short type, int value) {
- this(type, value, ByteOrder.nativeOrder());
- }
-
- public StructNlAttr(short type, int value, ByteOrder order) {
- this(order);
- nla_type = type;
- setValue(new byte[Integer.BYTES]);
- getValueAsByteBuffer().putInt(value);
- }
-
- public StructNlAttr(short type, InetAddress ip) {
- nla_type = type;
- setValue(ip.getAddress());
- }
-
- public StructNlAttr(short type, StructNlAttr... nested) {
- this();
- nla_type = makeNestedType(type);
-
- int payloadLength = 0;
- for (StructNlAttr nla : nested) payloadLength += nla.getAlignedLength();
- setValue(new byte[payloadLength]);
-
- final ByteBuffer buf = getValueAsByteBuffer();
- for (StructNlAttr nla : nested) {
- nla.pack(buf);
- }
- }
-
- public int getAlignedLength() {
- return NetlinkConstants.alignedLengthOf(nla_len);
- }
-
- public ByteBuffer getValueAsByteBuffer() {
- if (nla_value == null) { return null; }
- final ByteBuffer byteBuffer = ByteBuffer.wrap(nla_value);
- byteBuffer.order(mByteOrder);
- return byteBuffer;
- }
-
- public int getValueAsInt(int defaultValue) {
- final ByteBuffer byteBuffer = getValueAsByteBuffer();
- if (byteBuffer == null || byteBuffer.remaining() != Integer.BYTES) {
- return defaultValue;
- }
- return getValueAsByteBuffer().getInt();
- }
-
- public InetAddress getValueAsInetAddress() {
- if (nla_value == null) { return null; }
-
- try {
- return InetAddress.getByAddress(nla_value);
- } catch (UnknownHostException ignored) {
- return null;
- }
- }
-
- public void pack(ByteBuffer byteBuffer) {
- final ByteOrder originalOrder = byteBuffer.order();
- final int originalPosition = byteBuffer.position();
-
- byteBuffer.order(ByteOrder.nativeOrder());
- try {
- byteBuffer.putShort(nla_len);
- byteBuffer.putShort(nla_type);
- if (nla_value != null) byteBuffer.put(nla_value);
- } finally {
- byteBuffer.order(originalOrder);
- }
- byteBuffer.position(originalPosition + getAlignedLength());
- }
-
- private void setValue(byte[] value) {
- nla_value = value;
- nla_len = (short) (NLA_HEADERLEN + ((nla_value != null) ? nla_value.length : 0));
- }
-
- @Override
- public String toString() {
- return "StructNlAttr{ "
- + "nla_len{" + nla_len + "}, "
- + "nla_type{" + nla_type + "}, "
- + "nla_value{" + NetlinkConstants.hexify(nla_value) + "}, "
- + "}";
- }
-}
diff --git a/services/net/java/android/net/netlink/StructNlMsgErr.java b/services/net/java/android/net/netlink/StructNlMsgErr.java
deleted file mode 100644
index 6fcc6e69d..0000000
--- a/services/net/java/android/net/netlink/StructNlMsgErr.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright (C) 2015 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.netlink;
-
-import android.net.netlink.NetlinkConstants;
-import android.net.netlink.StructNlMsgHdr;
-
-import java.nio.ByteBuffer;
-
-
-/**
- * struct nlmsgerr
- *
- * see <linux_src>/include/uapi/linux/netlink.h
- *
- * @hide
- */
-public class StructNlMsgErr {
- public static final int STRUCT_SIZE = Integer.BYTES + StructNlMsgHdr.STRUCT_SIZE;
-
- public static boolean hasAvailableSpace(ByteBuffer byteBuffer) {
- return byteBuffer != null && byteBuffer.remaining() >= STRUCT_SIZE;
- }
-
- public static StructNlMsgErr parse(ByteBuffer byteBuffer) {
- if (!hasAvailableSpace(byteBuffer)) { return null; }
-
- // The ByteOrder must have already been set by the caller. In most
- // cases ByteOrder.nativeOrder() is correct, with the exception
- // of usage within unittests.
- final StructNlMsgErr struct = new StructNlMsgErr();
- struct.error = byteBuffer.getInt();
- struct.msg = StructNlMsgHdr.parse(byteBuffer);
- return struct;
- }
-
- public int error;
- public StructNlMsgHdr msg;
-
- public void pack(ByteBuffer byteBuffer) {
- // The ByteOrder must have already been set by the caller. In most
- // cases ByteOrder.nativeOrder() is correct, with the possible
- // exception of usage within unittests.
- byteBuffer.putInt(error);
- if (msg != null) {
- msg.pack(byteBuffer);
- }
- }
-
- @Override
- public String toString() {
- return "StructNlMsgErr{ "
- + "error{" + error + "}, "
- + "msg{" + (msg == null ? "" : msg.toString()) + "} "
- + "}";
- }
-}
diff --git a/services/net/java/android/net/netlink/StructNlMsgHdr.java b/services/net/java/android/net/netlink/StructNlMsgHdr.java
deleted file mode 100644
index 98ab5e7..0000000
--- a/services/net/java/android/net/netlink/StructNlMsgHdr.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Copyright (C) 2015 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.netlink;
-
-import android.net.netlink.NetlinkConstants;
-import java.nio.ByteBuffer;
-
-
-/**
- * struct nlmsghdr
- *
- * see <linux_src>/include/uapi/linux/netlink.h
- *
- * @hide
- */
-public class StructNlMsgHdr {
- // Already aligned.
- public static final int STRUCT_SIZE = 16;
-
- public static final short NLM_F_REQUEST = 0x0001;
- public static final short NLM_F_MULTI = 0x0002;
- public static final short NLM_F_ACK = 0x0004;
- public static final short NLM_F_ECHO = 0x0008;
- // Flags for a GET request.
- public static final short NLM_F_ROOT = 0x0100;
- public static final short NLM_F_MATCH = 0x0200;
- public static final short NLM_F_DUMP = NLM_F_ROOT|NLM_F_MATCH;
- // Flags for a NEW request.
- public static final short NLM_F_REPLACE = 0x100;
- public static final short NLM_F_EXCL = 0x200;
- public static final short NLM_F_CREATE = 0x400;
- public static final short NLM_F_APPEND = 0x800;
-
-
- public static String stringForNlMsgFlags(short flags) {
- final StringBuilder sb = new StringBuilder();
- if ((flags & NLM_F_REQUEST) != 0) {
- sb.append("NLM_F_REQUEST");
- }
- if ((flags & NLM_F_MULTI) != 0) {
- if (sb.length() > 0) { sb.append("|"); }
- sb.append("NLM_F_MULTI");
- }
- if ((flags & NLM_F_ACK) != 0) {
- if (sb.length() > 0) { sb.append("|"); }
- sb.append("NLM_F_ACK");
- }
- if ((flags & NLM_F_ECHO) != 0) {
- if (sb.length() > 0) { sb.append("|"); }
- sb.append("NLM_F_ECHO");
- }
- if ((flags & NLM_F_ROOT) != 0) {
- if (sb.length() > 0) { sb.append("|"); }
- sb.append("NLM_F_ROOT");
- }
- if ((flags & NLM_F_MATCH) != 0) {
- if (sb.length() > 0) { sb.append("|"); }
- sb.append("NLM_F_MATCH");
- }
- return sb.toString();
- }
-
- public static boolean hasAvailableSpace(ByteBuffer byteBuffer) {
- return byteBuffer != null && byteBuffer.remaining() >= STRUCT_SIZE;
- }
-
- public static StructNlMsgHdr parse(ByteBuffer byteBuffer) {
- if (!hasAvailableSpace(byteBuffer)) { return null; }
-
- // The ByteOrder must have already been set by the caller. In most
- // cases ByteOrder.nativeOrder() is correct, with the exception
- // of usage within unittests.
- final StructNlMsgHdr struct = new StructNlMsgHdr();
- struct.nlmsg_len = byteBuffer.getInt();
- struct.nlmsg_type = byteBuffer.getShort();
- struct.nlmsg_flags = byteBuffer.getShort();
- struct.nlmsg_seq = byteBuffer.getInt();
- struct.nlmsg_pid = byteBuffer.getInt();
-
- if (struct.nlmsg_len < STRUCT_SIZE) {
- // Malformed.
- return null;
- }
- return struct;
- }
-
- public int nlmsg_len;
- public short nlmsg_type;
- public short nlmsg_flags;
- public int nlmsg_seq;
- public int nlmsg_pid;
-
- public StructNlMsgHdr() {
- nlmsg_len = 0;
- nlmsg_type = 0;
- nlmsg_flags = 0;
- nlmsg_seq = 0;
- nlmsg_pid = 0;
- }
-
- public void pack(ByteBuffer byteBuffer) {
- // The ByteOrder must have already been set by the caller. In most
- // cases ByteOrder.nativeOrder() is correct, with the possible
- // exception of usage within unittests.
- byteBuffer.putInt(nlmsg_len);
- byteBuffer.putShort(nlmsg_type);
- byteBuffer.putShort(nlmsg_flags);
- byteBuffer.putInt(nlmsg_seq);
- byteBuffer.putInt(nlmsg_pid);
- }
-
- @Override
- public String toString() {
- final String typeStr = "" + nlmsg_type
- + "(" + NetlinkConstants.stringForNlMsgType(nlmsg_type) + ")";
- final String flagsStr = "" + nlmsg_flags
- + "(" + stringForNlMsgFlags(nlmsg_flags) + ")";
- return "StructNlMsgHdr{ "
- + "nlmsg_len{" + nlmsg_len + "}, "
- + "nlmsg_type{" + typeStr + "}, "
- + "nlmsg_flags{" + flagsStr + ")}, "
- + "nlmsg_seq{" + nlmsg_seq + "}, "
- + "nlmsg_pid{" + nlmsg_pid + "} "
- + "}";
- }
-}
diff --git a/services/net/java/android/net/shared/InitialConfiguration.java b/services/net/java/android/net/shared/InitialConfiguration.java
deleted file mode 100644
index 007c8ca9..0000000
--- a/services/net/java/android/net/shared/InitialConfiguration.java
+++ /dev/null
@@ -1,240 +0,0 @@
-/*
- * Copyright (C) 2019 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.shared;
-
-import static android.net.shared.ParcelableUtil.fromParcelableArray;
-import static android.net.shared.ParcelableUtil.toParcelableArray;
-import static android.text.TextUtils.join;
-
-import android.net.InetAddresses;
-import android.net.InitialConfigurationParcelable;
-import android.net.IpPrefix;
-import android.net.LinkAddress;
-import android.net.RouteInfo;
-
-import java.net.Inet4Address;
-import java.net.InetAddress;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.function.Predicate;
-
-/** @hide */
-public class InitialConfiguration {
- public final Set<LinkAddress> ipAddresses = new HashSet<>();
- public final Set<IpPrefix> directlyConnectedRoutes = new HashSet<>();
- public final Set<InetAddress> dnsServers = new HashSet<>();
-
- private static final int RFC6177_MIN_PREFIX_LENGTH = 48;
- private static final int RFC7421_PREFIX_LENGTH = 64;
-
- public static final InetAddress INET6_ANY = InetAddresses.parseNumericAddress("::");
-
- /**
- * Create a InitialConfiguration that is a copy of the specified configuration.
- */
- public static InitialConfiguration copy(InitialConfiguration config) {
- if (config == null) {
- return null;
- }
- InitialConfiguration configCopy = new InitialConfiguration();
- configCopy.ipAddresses.addAll(config.ipAddresses);
- configCopy.directlyConnectedRoutes.addAll(config.directlyConnectedRoutes);
- configCopy.dnsServers.addAll(config.dnsServers);
- return configCopy;
- }
-
- @Override
- public String toString() {
- return String.format(
- "InitialConfiguration(IPs: {%s}, prefixes: {%s}, DNS: {%s})",
- join(", ", ipAddresses), join(", ", directlyConnectedRoutes),
- join(", ", dnsServers));
- }
-
- /**
- * Tests whether the contents of this IpConfiguration represent a valid configuration.
- */
- public boolean isValid() {
- if (ipAddresses.isEmpty()) {
- return false;
- }
-
- // For every IP address, there must be at least one prefix containing that address.
- for (LinkAddress addr : ipAddresses) {
- if (!any(directlyConnectedRoutes, (p) -> p.contains(addr.getAddress()))) {
- return false;
- }
- }
- // For every dns server, there must be at least one prefix containing that address.
- for (InetAddress addr : dnsServers) {
- if (!any(directlyConnectedRoutes, (p) -> p.contains(addr))) {
- return false;
- }
- }
- // All IPv6 LinkAddresses have an RFC7421-suitable prefix length
- // (read: compliant with RFC4291#section2.5.4).
- if (any(ipAddresses, not(InitialConfiguration::isPrefixLengthCompliant))) {
- return false;
- }
- // If directlyConnectedRoutes contains an IPv6 default route
- // then ipAddresses MUST contain at least one non-ULA GUA.
- if (any(directlyConnectedRoutes, InitialConfiguration::isIPv6DefaultRoute)
- && all(ipAddresses, not(InitialConfiguration::isIPv6GUA))) {
- return false;
- }
- // The prefix length of routes in directlyConnectedRoutes be within reasonable
- // bounds for IPv6: /48-/64 just as we’d accept in RIOs.
- if (any(directlyConnectedRoutes, not(InitialConfiguration::isPrefixLengthCompliant))) {
- return false;
- }
- // There no more than one IPv4 address
- if (ipAddresses.stream().filter(InitialConfiguration::isIPv4).count() > 1) {
- return false;
- }
-
- return true;
- }
-
- /**
- * @return true if the given list of addressess and routes satisfies provisioning for this
- * InitialConfiguration. LinkAddresses and RouteInfo objects are not compared with equality
- * because addresses and routes seen by Netlink will contain additional fields like flags,
- * interfaces, and so on. If this InitialConfiguration has no IP address specified, the
- * provisioning check always fails.
- *
- * If the given list of routes is null, only addresses are taken into considerations.
- */
- public boolean isProvisionedBy(List<LinkAddress> addresses, List<RouteInfo> routes) {
- if (ipAddresses.isEmpty()) {
- return false;
- }
-
- for (LinkAddress addr : ipAddresses) {
- if (!any(addresses, (addrSeen) -> addr.isSameAddressAs(addrSeen))) {
- return false;
- }
- }
-
- if (routes != null) {
- for (IpPrefix prefix : directlyConnectedRoutes) {
- if (!any(routes, (routeSeen) -> isDirectlyConnectedRoute(routeSeen, prefix))) {
- return false;
- }
- }
- }
-
- return true;
- }
-
- /**
- * Convert this configuration to a {@link InitialConfigurationParcelable}.
- */
- public InitialConfigurationParcelable toStableParcelable() {
- final InitialConfigurationParcelable p = new InitialConfigurationParcelable();
- p.ipAddresses = ipAddresses.toArray(new LinkAddress[0]);
- p.directlyConnectedRoutes = directlyConnectedRoutes.toArray(new IpPrefix[0]);
- p.dnsServers = toParcelableArray(
- dnsServers, IpConfigurationParcelableUtil::parcelAddress, String.class);
- return p;
- }
-
- /**
- * Create an instance of {@link InitialConfiguration} based on the contents of the specified
- * {@link InitialConfigurationParcelable}.
- */
- public static InitialConfiguration fromStableParcelable(InitialConfigurationParcelable p) {
- if (p == null) return null;
- final InitialConfiguration config = new InitialConfiguration();
- config.ipAddresses.addAll(Arrays.asList(p.ipAddresses));
- config.directlyConnectedRoutes.addAll(Arrays.asList(p.directlyConnectedRoutes));
- config.dnsServers.addAll(
- fromParcelableArray(p.dnsServers, IpConfigurationParcelableUtil::unparcelAddress));
- return config;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (!(obj instanceof InitialConfiguration)) return false;
- final InitialConfiguration other = (InitialConfiguration) obj;
- return ipAddresses.equals(other.ipAddresses)
- && directlyConnectedRoutes.equals(other.directlyConnectedRoutes)
- && dnsServers.equals(other.dnsServers);
- }
-
- private static boolean isDirectlyConnectedRoute(RouteInfo route, IpPrefix prefix) {
- return !route.hasGateway() && prefix.equals(route.getDestination());
- }
-
- private static boolean isPrefixLengthCompliant(LinkAddress addr) {
- return isIPv4(addr) || isCompliantIPv6PrefixLength(addr.getPrefixLength());
- }
-
- private static boolean isPrefixLengthCompliant(IpPrefix prefix) {
- return isIPv4(prefix) || isCompliantIPv6PrefixLength(prefix.getPrefixLength());
- }
-
- private static boolean isCompliantIPv6PrefixLength(int prefixLength) {
- return (RFC6177_MIN_PREFIX_LENGTH <= prefixLength)
- && (prefixLength <= RFC7421_PREFIX_LENGTH);
- }
-
- private static boolean isIPv4(IpPrefix prefix) {
- return prefix.getAddress() instanceof Inet4Address;
- }
-
- private static boolean isIPv4(LinkAddress addr) {
- return addr.getAddress() instanceof Inet4Address;
- }
-
- private static boolean isIPv6DefaultRoute(IpPrefix prefix) {
- return prefix.getAddress().equals(INET6_ANY);
- }
-
- private static boolean isIPv6GUA(LinkAddress addr) {
- return addr.isIpv6() && addr.isGlobalPreferred();
- }
-
- // TODO: extract out into CollectionUtils.
-
- /**
- * Indicate whether any element of the specified iterable verifies the specified predicate.
- */
- public static <T> boolean any(Iterable<T> coll, Predicate<T> fn) {
- for (T t : coll) {
- if (fn.test(t)) {
- return true;
- }
- }
- return false;
- }
-
- /**
- * Indicate whether all elements of the specified iterable verifies the specified predicate.
- */
- public static <T> boolean all(Iterable<T> coll, Predicate<T> fn) {
- return !any(coll, not(fn));
- }
-
- /**
- * Create a predicate that returns the opposite value of the specified predicate.
- */
- public static <T> Predicate<T> not(Predicate<T> fn) {
- return (t) -> !fn.test(t);
- }
-}
diff --git a/services/net/java/android/net/shared/IpConfigurationParcelableUtil.java b/services/net/java/android/net/shared/IpConfigurationParcelableUtil.java
deleted file mode 100644
index 172dc24..0000000
--- a/services/net/java/android/net/shared/IpConfigurationParcelableUtil.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright (C) 2019 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.shared;
-
-import android.annotation.Nullable;
-import android.net.DhcpResults;
-import android.net.DhcpResultsParcelable;
-import android.net.InetAddresses;
-
-import java.net.Inet4Address;
-import java.net.InetAddress;
-
-/**
- * Collection of utility methods to convert to and from stable AIDL parcelables for IpClient
- * configuration classes.
- * @hide
- */
-public final class IpConfigurationParcelableUtil {
- /**
- * Convert DhcpResults to a DhcpResultsParcelable.
- */
- public static DhcpResultsParcelable toStableParcelable(@Nullable DhcpResults results) {
- if (results == null) return null;
- final DhcpResultsParcelable p = new DhcpResultsParcelable();
- p.baseConfiguration = results.toStaticIpConfiguration();
- p.leaseDuration = results.leaseDuration;
- p.mtu = results.mtu;
- p.serverAddress = parcelAddress(results.serverAddress);
- p.vendorInfo = results.vendorInfo;
- p.serverHostName = results.serverHostName;
- return p;
- }
-
- /**
- * Convert a DhcpResultsParcelable to DhcpResults.
- */
- public static DhcpResults fromStableParcelable(@Nullable DhcpResultsParcelable p) {
- if (p == null) return null;
- final DhcpResults results = new DhcpResults(p.baseConfiguration);
- results.leaseDuration = p.leaseDuration;
- results.mtu = p.mtu;
- results.serverAddress = (Inet4Address) unparcelAddress(p.serverAddress);
- results.vendorInfo = p.vendorInfo;
- results.serverHostName = p.serverHostName;
- return results;
- }
-
- /**
- * Convert InetAddress to String.
- * TODO: have an InetAddressParcelable
- */
- public static String parcelAddress(@Nullable InetAddress addr) {
- if (addr == null) return null;
- return addr.getHostAddress();
- }
-
- /**
- * Convert String to InetAddress.
- * TODO: have an InetAddressParcelable
- */
- public static InetAddress unparcelAddress(@Nullable String addr) {
- if (addr == null) return null;
- return InetAddresses.parseNumericAddress(addr);
- }
-}
diff --git a/services/net/java/android/net/shared/LinkPropertiesParcelableUtil.java b/services/net/java/android/net/shared/LinkPropertiesParcelableUtil.java
deleted file mode 100644
index 1729da6..0000000
--- a/services/net/java/android/net/shared/LinkPropertiesParcelableUtil.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2019 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.shared;
-
-import android.annotation.Nullable;
-import android.net.LinkProperties;
-import android.net.ProxyInfo;
-
-/**
- * Collection of utility methods to convert to and from stable AIDL parcelables for LinkProperties
- * and its attributes.
- * @hide
- */
-public final class LinkPropertiesParcelableUtil {
- // Temporary methods to facilitate migrating clients away from LinkPropertiesParcelable
- // TODO: remove the following methods after migrating clients.
-
- /**
- * @deprecated conversion to stable parcelable is no longer necessary.
- */
- @Deprecated
- public static LinkProperties toStableParcelable(@Nullable LinkProperties lp) {
- return lp;
- }
-
- /**
- * @deprecated conversion to stable parcelable is no longer necessary.
- */
- @Deprecated
- public static ProxyInfo toStableParcelable(@Nullable ProxyInfo info) {
- return info;
- }
-}
diff --git a/services/net/java/android/net/shared/NetworkMonitorUtils.java b/services/net/java/android/net/shared/NetworkMonitorUtils.java
deleted file mode 100644
index 46e9c73..0000000
--- a/services/net/java/android/net/shared/NetworkMonitorUtils.java
+++ /dev/null
@@ -1,65 +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.shared;
-
-import static android.net.NetworkCapabilities.NET_CAPABILITY_INTERNET;
-import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED;
-import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_VPN;
-import static android.net.NetworkCapabilities.NET_CAPABILITY_TRUSTED;
-
-import android.net.NetworkCapabilities;
-
-/** @hide */
-public class NetworkMonitorUtils {
-
- // Network conditions broadcast constants
- public static final String ACTION_NETWORK_CONDITIONS_MEASURED =
- "android.net.conn.NETWORK_CONDITIONS_MEASURED";
- public static final String EXTRA_CONNECTIVITY_TYPE = "extra_connectivity_type";
- public static final String EXTRA_NETWORK_TYPE = "extra_network_type";
- public static final String EXTRA_RESPONSE_RECEIVED = "extra_response_received";
- public static final String EXTRA_IS_CAPTIVE_PORTAL = "extra_is_captive_portal";
- public static final String EXTRA_CELL_ID = "extra_cellid";
- public static final String EXTRA_SSID = "extra_ssid";
- public static final String EXTRA_BSSID = "extra_bssid";
- /** real time since boot */
- public static final String EXTRA_REQUEST_TIMESTAMP_MS = "extra_request_timestamp_ms";
- public static final String EXTRA_RESPONSE_TIMESTAMP_MS = "extra_response_timestamp_ms";
- public static final String PERMISSION_ACCESS_NETWORK_CONDITIONS =
- "android.permission.ACCESS_NETWORK_CONDITIONS";
-
- /**
- * Return whether validation is required for private DNS in strict mode.
- * @param nc Network capabilities of the network to test.
- */
- public static boolean isPrivateDnsValidationRequired(NetworkCapabilities nc) {
- // TODO: Consider requiring validation for DUN networks.
- return nc != null
- && nc.hasCapability(NET_CAPABILITY_INTERNET)
- && nc.hasCapability(NET_CAPABILITY_NOT_RESTRICTED)
- && nc.hasCapability(NET_CAPABILITY_TRUSTED);
- }
-
- /**
- * Return whether validation is required for a network.
- * @param nc Network capabilities of the network to test.
- */
- public static boolean isValidationRequired(NetworkCapabilities nc) {
- // TODO: Consider requiring validation for DUN networks.
- return isPrivateDnsValidationRequired(nc) && nc.hasCapability(NET_CAPABILITY_NOT_VPN);
- }
-}
diff --git a/services/net/java/android/net/shared/ParcelableUtil.java b/services/net/java/android/net/shared/ParcelableUtil.java
deleted file mode 100644
index 3f40300..0000000
--- a/services/net/java/android/net/shared/ParcelableUtil.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright (C) 2019 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.shared;
-
-import android.annotation.NonNull;
-
-import java.lang.reflect.Array;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.function.Function;
-
-/**
- * Utility methods to help convert to/from stable parcelables.
- * @hide
- */
-public final class ParcelableUtil {
- // Below methods could be implemented easily with streams, but streams are frowned upon in
- // frameworks code.
-
- /**
- * Convert a list of BaseType items to an array of ParcelableType items using the specified
- * converter function.
- */
- public static <ParcelableType, BaseType> ParcelableType[] toParcelableArray(
- @NonNull Collection<BaseType> base,
- @NonNull Function<BaseType, ParcelableType> conv,
- @NonNull Class<ParcelableType> parcelClass) {
- final ParcelableType[] out = (ParcelableType[]) Array.newInstance(parcelClass, base.size());
- int i = 0;
- for (BaseType b : base) {
- out[i] = conv.apply(b);
- i++;
- }
- return out;
- }
-
- /**
- * Convert an array of ParcelableType items to a list of BaseType items using the specified
- * converter function.
- */
- public static <ParcelableType, BaseType> ArrayList<BaseType> fromParcelableArray(
- @NonNull ParcelableType[] parceled, @NonNull Function<ParcelableType, BaseType> conv) {
- final ArrayList<BaseType> out = new ArrayList<>(parceled.length);
- for (ParcelableType t : parceled) {
- out.add(conv.apply(t));
- }
- return out;
- }
-}
diff --git a/services/net/java/android/net/shared/PrivateDnsConfig.java b/services/net/java/android/net/shared/PrivateDnsConfig.java
deleted file mode 100644
index c7dc530..0000000
--- a/services/net/java/android/net/shared/PrivateDnsConfig.java
+++ /dev/null
@@ -1,90 +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.shared;
-
-import static android.net.shared.ParcelableUtil.fromParcelableArray;
-import static android.net.shared.ParcelableUtil.toParcelableArray;
-
-import android.net.PrivateDnsConfigParcel;
-import android.text.TextUtils;
-
-import java.net.InetAddress;
-import java.util.Arrays;
-
-/** @hide */
-public class PrivateDnsConfig {
- public final boolean useTls;
- public final String hostname;
- public final InetAddress[] ips;
-
- public PrivateDnsConfig() {
- this(false);
- }
-
- public PrivateDnsConfig(boolean useTls) {
- this.useTls = useTls;
- this.hostname = "";
- this.ips = new InetAddress[0];
- }
-
- public PrivateDnsConfig(String hostname, InetAddress[] ips) {
- this.useTls = !TextUtils.isEmpty(hostname);
- this.hostname = useTls ? hostname : "";
- this.ips = (ips != null) ? ips : new InetAddress[0];
- }
-
- public PrivateDnsConfig(PrivateDnsConfig cfg) {
- useTls = cfg.useTls;
- hostname = cfg.hostname;
- ips = cfg.ips;
- }
-
- /**
- * Indicates whether this is a strict mode private DNS configuration.
- */
- public boolean inStrictMode() {
- return useTls && !TextUtils.isEmpty(hostname);
- }
-
- @Override
- public String toString() {
- return PrivateDnsConfig.class.getSimpleName()
- + "{" + useTls + ":" + hostname + "/" + Arrays.toString(ips) + "}";
- }
-
- /**
- * Create a stable AIDL-compatible parcel from the current instance.
- */
- public PrivateDnsConfigParcel toParcel() {
- final PrivateDnsConfigParcel parcel = new PrivateDnsConfigParcel();
- parcel.hostname = hostname;
- parcel.ips = toParcelableArray(
- Arrays.asList(ips), IpConfigurationParcelableUtil::parcelAddress, String.class);
-
- return parcel;
- }
-
- /**
- * Build a configuration from a stable AIDL-compatible parcel.
- */
- public static PrivateDnsConfig fromParcel(PrivateDnsConfigParcel parcel) {
- InetAddress[] ips = new InetAddress[parcel.ips.length];
- ips = fromParcelableArray(parcel.ips, IpConfigurationParcelableUtil::unparcelAddress)
- .toArray(ips);
- return new PrivateDnsConfig(parcel.hostname, ips);
- }
-}
diff --git a/services/net/java/android/net/shared/ProvisioningConfiguration.java b/services/net/java/android/net/shared/ProvisioningConfiguration.java
deleted file mode 100644
index 6f9c294..0000000
--- a/services/net/java/android/net/shared/ProvisioningConfiguration.java
+++ /dev/null
@@ -1,312 +0,0 @@
-/*
- * Copyright (C) 2019 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.shared;
-
-import android.annotation.Nullable;
-import android.net.INetd;
-import android.net.Network;
-import android.net.ProvisioningConfigurationParcelable;
-import android.net.StaticIpConfiguration;
-import android.net.apf.ApfCapabilities;
-import android.net.ip.IIpClient;
-
-import java.util.Objects;
-import java.util.StringJoiner;
-
-/**
- * This class encapsulates parameters to be passed to
- * IpClient#startProvisioning(). A defensive copy is made by IpClient
- * and the values specified herein are in force until IpClient#stop()
- * is called.
- *
- * Example use:
- *
- * final ProvisioningConfiguration config =
- * new ProvisioningConfiguration.Builder()
- * .withPreDhcpAction()
- * .withProvisioningTimeoutMs(36 * 1000)
- * .build();
- * mIpClient.startProvisioning(config.toStableParcelable());
- * ...
- * mIpClient.stop();
- *
- * The specified provisioning configuration will only be active until
- * IIpClient#stop() is called. Future calls to IIpClient#startProvisioning()
- * must specify the configuration again.
- * @hide
- */
-public class ProvisioningConfiguration {
- // TODO: Delete this default timeout once those callers that care are
- // fixed to pass in their preferred timeout.
- //
- // We pick 36 seconds so we can send DHCP requests at
- //
- // t=0, t=2, t=6, t=14, t=30
- //
- // allowing for 10% jitter.
- private static final int DEFAULT_TIMEOUT_MS = 36 * 1000;
-
- /**
- * Builder to create a {@link ProvisioningConfiguration}.
- */
- public static class Builder {
- protected ProvisioningConfiguration mConfig = new ProvisioningConfiguration();
-
- /**
- * Specify that the configuration should not enable IPv4. It is enabled by default.
- */
- public Builder withoutIPv4() {
- mConfig.mEnableIPv4 = false;
- return this;
- }
-
- /**
- * Specify that the configuration should not enable IPv6. It is enabled by default.
- */
- public Builder withoutIPv6() {
- mConfig.mEnableIPv6 = false;
- return this;
- }
-
- /**
- * Specify that the configuration should not use a MultinetworkPolicyTracker. It is used
- * by default.
- */
- public Builder withoutMultinetworkPolicyTracker() {
- mConfig.mUsingMultinetworkPolicyTracker = false;
- return this;
- }
-
- /**
- * Specify that the configuration should not use a IpReachabilityMonitor. It is used by
- * default.
- */
- public Builder withoutIpReachabilityMonitor() {
- mConfig.mUsingIpReachabilityMonitor = false;
- return this;
- }
-
- /**
- * Identical to {@link #withPreDhcpAction(int)}, using a default timeout.
- * @see #withPreDhcpAction(int)
- */
- public Builder withPreDhcpAction() {
- mConfig.mRequestedPreDhcpActionMs = DEFAULT_TIMEOUT_MS;
- return this;
- }
-
- /**
- * Specify that {@link IpClientCallbacks#onPreDhcpAction()} should be called. Clients must
- * call {@link IIpClient#completedPreDhcpAction()} when the callback called. This behavior
- * is disabled by default.
- * @param dhcpActionTimeoutMs Timeout for clients to call completedPreDhcpAction().
- */
- public Builder withPreDhcpAction(int dhcpActionTimeoutMs) {
- mConfig.mRequestedPreDhcpActionMs = dhcpActionTimeoutMs;
- return this;
- }
-
- /**
- * Specify the initial provisioning configuration.
- */
- public Builder withInitialConfiguration(InitialConfiguration initialConfig) {
- mConfig.mInitialConfig = initialConfig;
- return this;
- }
-
- /**
- * Specify a static configuration for provisioning.
- */
- public Builder withStaticConfiguration(StaticIpConfiguration staticConfig) {
- mConfig.mStaticIpConfig = staticConfig;
- return this;
- }
-
- /**
- * Specify ApfCapabilities.
- */
- public Builder withApfCapabilities(ApfCapabilities apfCapabilities) {
- mConfig.mApfCapabilities = apfCapabilities;
- return this;
- }
-
- /**
- * Specify the timeout to use for provisioning.
- */
- public Builder withProvisioningTimeoutMs(int timeoutMs) {
- mConfig.mProvisioningTimeoutMs = timeoutMs;
- return this;
- }
-
- /**
- * Specify that IPv6 address generation should use a random MAC address.
- */
- public Builder withRandomMacAddress() {
- mConfig.mIPv6AddrGenMode = INetd.IPV6_ADDR_GEN_MODE_EUI64;
- return this;
- }
-
- /**
- * Specify that IPv6 address generation should use a stable MAC address.
- */
- public Builder withStableMacAddress() {
- mConfig.mIPv6AddrGenMode = INetd.IPV6_ADDR_GEN_MODE_STABLE_PRIVACY;
- return this;
- }
-
- /**
- * Specify the network to use for provisioning.
- */
- public Builder withNetwork(Network network) {
- mConfig.mNetwork = network;
- return this;
- }
-
- /**
- * Specify the display name that the IpClient should use.
- */
- public Builder withDisplayName(String displayName) {
- mConfig.mDisplayName = displayName;
- return this;
- }
-
- /**
- * Build the configuration using previously specified parameters.
- */
- public ProvisioningConfiguration build() {
- return new ProvisioningConfiguration(mConfig);
- }
- }
-
- public boolean mEnableIPv4 = true;
- public boolean mEnableIPv6 = true;
- public boolean mUsingMultinetworkPolicyTracker = true;
- public boolean mUsingIpReachabilityMonitor = true;
- public int mRequestedPreDhcpActionMs;
- public InitialConfiguration mInitialConfig;
- public StaticIpConfiguration mStaticIpConfig;
- public ApfCapabilities mApfCapabilities;
- public int mProvisioningTimeoutMs = DEFAULT_TIMEOUT_MS;
- public int mIPv6AddrGenMode = INetd.IPV6_ADDR_GEN_MODE_STABLE_PRIVACY;
- public Network mNetwork = null;
- public String mDisplayName = null;
-
- public ProvisioningConfiguration() {} // used by Builder
-
- public ProvisioningConfiguration(ProvisioningConfiguration other) {
- mEnableIPv4 = other.mEnableIPv4;
- mEnableIPv6 = other.mEnableIPv6;
- mUsingMultinetworkPolicyTracker = other.mUsingMultinetworkPolicyTracker;
- mUsingIpReachabilityMonitor = other.mUsingIpReachabilityMonitor;
- mRequestedPreDhcpActionMs = other.mRequestedPreDhcpActionMs;
- mInitialConfig = InitialConfiguration.copy(other.mInitialConfig);
- mStaticIpConfig = other.mStaticIpConfig == null
- ? null
- : new StaticIpConfiguration(other.mStaticIpConfig);
- mApfCapabilities = other.mApfCapabilities;
- mProvisioningTimeoutMs = other.mProvisioningTimeoutMs;
- mIPv6AddrGenMode = other.mIPv6AddrGenMode;
- mNetwork = other.mNetwork;
- mDisplayName = other.mDisplayName;
- }
-
- /**
- * Create a ProvisioningConfigurationParcelable from this ProvisioningConfiguration.
- */
- public ProvisioningConfigurationParcelable toStableParcelable() {
- final ProvisioningConfigurationParcelable p = new ProvisioningConfigurationParcelable();
- p.enableIPv4 = mEnableIPv4;
- p.enableIPv6 = mEnableIPv6;
- p.usingMultinetworkPolicyTracker = mUsingMultinetworkPolicyTracker;
- p.usingIpReachabilityMonitor = mUsingIpReachabilityMonitor;
- p.requestedPreDhcpActionMs = mRequestedPreDhcpActionMs;
- p.initialConfig = mInitialConfig == null ? null : mInitialConfig.toStableParcelable();
- p.staticIpConfig = mStaticIpConfig == null
- ? null
- : new StaticIpConfiguration(mStaticIpConfig);
- p.apfCapabilities = mApfCapabilities; // ApfCapabilities is immutable
- p.provisioningTimeoutMs = mProvisioningTimeoutMs;
- p.ipv6AddrGenMode = mIPv6AddrGenMode;
- p.network = mNetwork;
- p.displayName = mDisplayName;
- return p;
- }
-
- /**
- * Create a ProvisioningConfiguration from a ProvisioningConfigurationParcelable.
- */
- public static ProvisioningConfiguration fromStableParcelable(
- @Nullable ProvisioningConfigurationParcelable p) {
- if (p == null) return null;
- final ProvisioningConfiguration config = new ProvisioningConfiguration();
- config.mEnableIPv4 = p.enableIPv4;
- config.mEnableIPv6 = p.enableIPv6;
- config.mUsingMultinetworkPolicyTracker = p.usingMultinetworkPolicyTracker;
- config.mUsingIpReachabilityMonitor = p.usingIpReachabilityMonitor;
- config.mRequestedPreDhcpActionMs = p.requestedPreDhcpActionMs;
- config.mInitialConfig = InitialConfiguration.fromStableParcelable(p.initialConfig);
- config.mStaticIpConfig = p.staticIpConfig == null
- ? null
- : new StaticIpConfiguration(p.staticIpConfig);
- config.mApfCapabilities = p.apfCapabilities; // ApfCapabilities is immutable
- config.mProvisioningTimeoutMs = p.provisioningTimeoutMs;
- config.mIPv6AddrGenMode = p.ipv6AddrGenMode;
- config.mNetwork = p.network;
- config.mDisplayName = p.displayName;
- return config;
- }
-
- @Override
- public String toString() {
- return new StringJoiner(", ", getClass().getSimpleName() + "{", "}")
- .add("mEnableIPv4: " + mEnableIPv4)
- .add("mEnableIPv6: " + mEnableIPv6)
- .add("mUsingMultinetworkPolicyTracker: " + mUsingMultinetworkPolicyTracker)
- .add("mUsingIpReachabilityMonitor: " + mUsingIpReachabilityMonitor)
- .add("mRequestedPreDhcpActionMs: " + mRequestedPreDhcpActionMs)
- .add("mInitialConfig: " + mInitialConfig)
- .add("mStaticIpConfig: " + mStaticIpConfig)
- .add("mApfCapabilities: " + mApfCapabilities)
- .add("mProvisioningTimeoutMs: " + mProvisioningTimeoutMs)
- .add("mIPv6AddrGenMode: " + mIPv6AddrGenMode)
- .add("mNetwork: " + mNetwork)
- .add("mDisplayName: " + mDisplayName)
- .toString();
- }
-
- @Override
- public boolean equals(Object obj) {
- if (!(obj instanceof ProvisioningConfiguration)) return false;
- final ProvisioningConfiguration other = (ProvisioningConfiguration) obj;
- return mEnableIPv4 == other.mEnableIPv4
- && mEnableIPv6 == other.mEnableIPv6
- && mUsingMultinetworkPolicyTracker == other.mUsingMultinetworkPolicyTracker
- && mUsingIpReachabilityMonitor == other.mUsingIpReachabilityMonitor
- && mRequestedPreDhcpActionMs == other.mRequestedPreDhcpActionMs
- && Objects.equals(mInitialConfig, other.mInitialConfig)
- && Objects.equals(mStaticIpConfig, other.mStaticIpConfig)
- && Objects.equals(mApfCapabilities, other.mApfCapabilities)
- && mProvisioningTimeoutMs == other.mProvisioningTimeoutMs
- && mIPv6AddrGenMode == other.mIPv6AddrGenMode
- && Objects.equals(mNetwork, other.mNetwork)
- && Objects.equals(mDisplayName, other.mDisplayName);
- }
-
- public boolean isValid() {
- return (mInitialConfig == null) || mInitialConfig.isValid();
- }
-}
diff --git a/services/net/java/android/net/util/InterfaceParams.java b/services/net/java/android/net/util/InterfaceParams.java
deleted file mode 100644
index f6bb873..0000000
--- a/services/net/java/android/net/util/InterfaceParams.java
+++ /dev/null
@@ -1,97 +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.
- */
-
-package android.net.util;
-
-import static com.android.internal.util.Preconditions.checkArgument;
-
-import android.net.MacAddress;
-import android.text.TextUtils;
-
-import java.net.NetworkInterface;
-import java.net.SocketException;
-
-
-/**
- * Encapsulate the interface parameters common to IpClient/IpServer components.
- *
- * Basically all java.net.NetworkInterface methods throw Exceptions. IpClient
- * and IpServer (sub)components need most or all of this information at some
- * point during their lifecycles, so pass only this simplified object around
- * which can be created once when IpClient/IpServer are told to start.
- *
- * @hide
- */
-public class InterfaceParams {
- public final String name;
- public final int index;
- public final MacAddress macAddr;
- public final int defaultMtu;
-
- // TODO: move the below to NetworkStackConstants when this class is moved to the NetworkStack.
- private static final int ETHER_MTU = 1500;
- private static final int IPV6_MIN_MTU = 1280;
-
-
- public static InterfaceParams getByName(String name) {
- final NetworkInterface netif = getNetworkInterfaceByName(name);
- if (netif == null) return null;
-
- // Not all interfaces have MAC addresses, e.g. rmnet_data0.
- final MacAddress macAddr = getMacAddress(netif);
-
- try {
- return new InterfaceParams(name, netif.getIndex(), macAddr, netif.getMTU());
- } catch (IllegalArgumentException|SocketException e) {
- return null;
- }
- }
-
- public InterfaceParams(String name, int index, MacAddress macAddr) {
- this(name, index, macAddr, ETHER_MTU);
- }
-
- public InterfaceParams(String name, int index, MacAddress macAddr, int defaultMtu) {
- checkArgument((!TextUtils.isEmpty(name)), "impossible interface name");
- checkArgument((index > 0), "invalid interface index");
- this.name = name;
- this.index = index;
- this.macAddr = (macAddr != null) ? macAddr : MacAddress.fromBytes(new byte[] {
- 0x02, 0x00, 0x00, 0x00, 0x00, 0x00 });
- this.defaultMtu = (defaultMtu > IPV6_MIN_MTU) ? defaultMtu : IPV6_MIN_MTU;
- }
-
- @Override
- public String toString() {
- return String.format("%s/%d/%s/%d", name, index, macAddr, defaultMtu);
- }
-
- private static NetworkInterface getNetworkInterfaceByName(String name) {
- try {
- return NetworkInterface.getByName(name);
- } catch (NullPointerException|SocketException e) {
- return null;
- }
- }
-
- private static MacAddress getMacAddress(NetworkInterface netif) {
- try {
- return MacAddress.fromBytes(netif.getHardwareAddress());
- } catch (IllegalArgumentException|NullPointerException|SocketException e) {
- return null;
- }
- }
-}
diff --git a/services/net/java/android/net/util/SharedLog.java b/services/net/java/android/net/util/SharedLog.java
deleted file mode 100644
index 2cdb2b0..0000000
--- a/services/net/java/android/net/util/SharedLog.java
+++ /dev/null
@@ -1,202 +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.
- */
-
-package android.net.util;
-
-import android.annotation.NonNull;
-import android.annotation.Nullable;
-import android.text.TextUtils;
-import android.util.LocalLog;
-import android.util.Log;
-
-import java.io.FileDescriptor;
-import java.io.PrintWriter;
-import java.util.StringJoiner;
-
-
-/**
- * Class to centralize logging functionality for tethering.
- *
- * All access to class methods other than dump() must be on the same thread.
- *
- * TODO: this is a copy of SharedLog in the NetworkStack. Remove after Tethering is migrated.
- * @hide
- */
-public class SharedLog {
- private static final int DEFAULT_MAX_RECORDS = 500;
- private static final String COMPONENT_DELIMITER = ".";
-
- private enum Category {
- NONE,
- ERROR,
- MARK,
- WARN,
- };
-
- private final LocalLog mLocalLog;
- // The tag to use for output to the system log. This is not output to the
- // LocalLog because that would be redundant.
- private final String mTag;
- // The component (or subcomponent) of a system that is sharing this log.
- // This can grow in depth if components call forSubComponent() to obtain
- // their SharedLog instance. The tag is not included in the component for
- // brevity.
- private final String mComponent;
-
- public SharedLog(String tag) {
- this(DEFAULT_MAX_RECORDS, tag);
- }
-
- public SharedLog(int maxRecords, String tag) {
- this(new LocalLog(maxRecords), tag, tag);
- }
-
- private SharedLog(LocalLog localLog, String tag, String component) {
- mLocalLog = localLog;
- mTag = tag;
- mComponent = component;
- }
-
- public String getTag() {
- return mTag;
- }
-
- /**
- * Create a SharedLog based on this log with an additional component prefix on each logged line.
- */
- public SharedLog forSubComponent(String component) {
- if (!isRootLogInstance()) {
- component = mComponent + COMPONENT_DELIMITER + component;
- }
- return new SharedLog(mLocalLog, mTag, component);
- }
-
- /**
- * Dump the contents of this log.
- *
- * <p>This method may be called on any thread.
- */
- public void dump(FileDescriptor fd, PrintWriter writer, String[] args) {
- mLocalLog.readOnlyLocalLog().dump(fd, writer, args);
- }
-
- //////
- // Methods that both log an entry and emit it to the system log.
- //////
-
- /**
- * Log an error due to an exception. This does not include the exception stacktrace.
- *
- * <p>The log entry will be also added to the system log.
- * @see #e(String, Throwable)
- */
- public void e(Exception e) {
- Log.e(mTag, record(Category.ERROR, e.toString()));
- }
-
- /**
- * Log an error message.
- *
- * <p>The log entry will be also added to the system log.
- */
- public void e(String msg) {
- Log.e(mTag, record(Category.ERROR, msg));
- }
-
- /**
- * Log an error due to an exception, with the exception stacktrace if provided.
- *
- * <p>The error and exception message appear in the shared log, but the stacktrace is only
- * logged in general log output (logcat). The log entry will be also added to the system log.
- */
- public void e(@NonNull String msg, @Nullable Throwable exception) {
- if (exception == null) {
- e(msg);
- return;
- }
- Log.e(mTag, record(Category.ERROR, msg + ": " + exception.getMessage()), exception);
- }
-
- /**
- * Log an informational message.
- *
- * <p>The log entry will be also added to the system log.
- */
- public void i(String msg) {
- Log.i(mTag, record(Category.NONE, msg));
- }
-
- /**
- * Log a warning message.
- *
- * <p>The log entry will be also added to the system log.
- */
- public void w(String msg) {
- Log.w(mTag, record(Category.WARN, msg));
- }
-
- //////
- // Methods that only log an entry (and do NOT emit to the system log).
- //////
-
- /**
- * Log a general message to be only included in the in-memory log.
- *
- * <p>The log entry will *not* be added to the system log.
- */
- public void log(String msg) {
- record(Category.NONE, msg);
- }
-
- /**
- * Log a general, formatted message to be only included in the in-memory log.
- *
- * <p>The log entry will *not* be added to the system log.
- * @see String#format(String, Object...)
- */
- public void logf(String fmt, Object... args) {
- log(String.format(fmt, args));
- }
-
- /**
- * Log a message with MARK level.
- *
- * <p>The log entry will *not* be added to the system log.
- */
- public void mark(String msg) {
- record(Category.MARK, msg);
- }
-
- private String record(Category category, String msg) {
- final String entry = logLine(category, msg);
- mLocalLog.log(entry);
- return entry;
- }
-
- private String logLine(Category category, String msg) {
- final StringJoiner sj = new StringJoiner(" ");
- if (!isRootLogInstance()) sj.add("[" + mComponent + "]");
- if (category != Category.NONE) sj.add(category.toString());
- return sj.add(msg).toString();
- }
-
- // Check whether this SharedLog instance is nominally the top level in
- // a potential hierarchy of shared logs (the root of a tree),
- // or is a subcomponent within the hierarchy.
- private boolean isRootLogInstance() {
- return TextUtils.isEmpty(mComponent) || mComponent.equals(mTag);
- }
-}
diff --git a/services/robotests/src/com/android/server/testing/shadows/ShadowPerformUnifiedRestoreTask.java b/services/robotests/src/com/android/server/testing/shadows/ShadowPerformUnifiedRestoreTask.java
index 2cebbeb..223a98b 100644
--- a/services/robotests/src/com/android/server/testing/shadows/ShadowPerformUnifiedRestoreTask.java
+++ b/services/robotests/src/com/android/server/testing/shadows/ShadowPerformUnifiedRestoreTask.java
@@ -29,6 +29,9 @@
import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements;
+import java.util.Map;
+import java.util.Set;
+
@Implements(PerformUnifiedRestoreTask.class)
public class ShadowPerformUnifiedRestoreTask {
@Nullable private static ShadowPerformUnifiedRestoreTask sLastShadow;
@@ -64,7 +67,8 @@
int pmToken,
boolean isFullSystemRestore,
@Nullable String[] filterSet,
- OnTaskFinishedListener listener) {
+ OnTaskFinishedListener listener,
+ Map<String, Set<String>> excludedKeys) {
mBackupManagerService = backupManagerService;
mPackage = targetPackage;
mIsFullSystemRestore = isFullSystemRestore;
diff --git a/services/tests/mockingservicestests/Android.bp b/services/tests/mockingservicestests/Android.bp
index 8699669..96fedf9 100644
--- a/services/tests/mockingservicestests/Android.bp
+++ b/services/tests/mockingservicestests/Android.bp
@@ -20,7 +20,7 @@
static_libs: [
"services.core",
"services.net",
- "jobscheduler-service",
+ "service-jobscheduler",
"androidx.test.runner",
"mockito-target-extended-minus-junit4",
"platform-test-annotations",
diff --git a/services/tests/servicestests/Android.bp b/services/tests/servicestests/Android.bp
index 52fb69e..cf7919b 100644
--- a/services/tests/servicestests/Android.bp
+++ b/services/tests/servicestests/Android.bp
@@ -41,7 +41,8 @@
"hamcrest-library",
"servicestests-utils",
"xml-writer-device-lib",
- "jobscheduler-service",
+ "service-appsearch",
+ "service-jobscheduler",
],
aidl: {
diff --git a/services/tests/servicestests/AndroidManifest.xml b/services/tests/servicestests/AndroidManifest.xml
index c1bbb30..fb42507 100644
--- a/services/tests/servicestests/AndroidManifest.xml
+++ b/services/tests/servicestests/AndroidManifest.xml
@@ -34,7 +34,7 @@
<uses-permission android:name="android.permission.REORDER_TASKS" />
<uses-permission android:name="android.permission.MANAGE_NETWORK_POLICY" />
<uses-permission android:name="android.permission.READ_NETWORK_USAGE_HISTORY" />
- <uses-permission android:name="android.permission.CONNECTIVITY_INTERNAL" />
+ <uses-permission android:name="android.permission.OBSERVE_NETWORK_POLICY" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.MANAGE_USERS" />
<uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" />
diff --git a/services/tests/servicestests/src/com/android/server/appsearch/impl/FakeIcingTest.java b/services/tests/servicestests/src/com/android/server/appsearch/impl/FakeIcingTest.java
new file mode 100644
index 0000000..adef02e
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/appsearch/impl/FakeIcingTest.java
@@ -0,0 +1,123 @@
+/*
+ * Copyright (C) 2019 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.appsearch.impl;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import androidx.test.runner.AndroidJUnit4;
+
+import com.google.android.icing.proto.DocumentProto;
+import com.google.android.icing.proto.PropertyProto;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@RunWith(AndroidJUnit4.class)
+public class FakeIcingTest {
+ @Test
+ public void query() {
+ FakeIcing icing = new FakeIcing();
+ icing.put(createDoc("uri:cat", "The cat said meow"));
+ icing.put(createDoc("uri:dog", "The dog said woof"));
+
+ assertThat(queryGetUris(icing, "meow")).containsExactly("uri:cat");
+ assertThat(queryGetUris(icing, "said")).containsExactly("uri:cat", "uri:dog");
+ assertThat(queryGetUris(icing, "fred")).isEmpty();
+ }
+
+ @Test
+ public void queryNorm() {
+ FakeIcing icing = new FakeIcing();
+ icing.put(createDoc("uri:cat", "The cat said meow"));
+ icing.put(createDoc("uri:dog", "The dog said woof"));
+
+ assertThat(queryGetUris(icing, "the")).containsExactly("uri:cat", "uri:dog");
+ assertThat(queryGetUris(icing, "The")).containsExactly("uri:cat", "uri:dog");
+ assertThat(queryGetUris(icing, "tHe")).containsExactly("uri:cat", "uri:dog");
+ }
+
+ @Test
+ public void get() {
+ DocumentProto cat = createDoc("uri:cat", "The cat said meow");
+ FakeIcing icing = new FakeIcing();
+ icing.put(cat);
+ assertThat(icing.get("uri:cat")).isEqualTo(cat);
+ }
+
+ @Test
+ public void replace() {
+ DocumentProto cat = createDoc("uri:cat", "The cat said meow");
+ DocumentProto dog = createDoc("uri:dog", "The dog said woof");
+
+ FakeIcing icing = new FakeIcing();
+ icing.put(cat);
+ icing.put(dog);
+
+ assertThat(queryGetUris(icing, "meow")).containsExactly("uri:cat");
+ assertThat(queryGetUris(icing, "said")).containsExactly("uri:cat", "uri:dog");
+ assertThat(icing.get("uri:cat")).isEqualTo(cat);
+
+ // Replace
+ DocumentProto cat2 = createDoc("uri:cat", "The cat said purr");
+ DocumentProto bird = createDoc("uri:bird", "The cat said tweet");
+ icing.put(cat2);
+ icing.put(bird);
+
+ assertThat(queryGetUris(icing, "meow")).isEmpty();
+ assertThat(queryGetUris(icing, "said")).containsExactly("uri:cat", "uri:dog", "uri:bird");
+ assertThat(icing.get("uri:cat")).isEqualTo(cat2);
+ }
+
+ @Test
+ public void delete() {
+ DocumentProto cat = createDoc("uri:cat", "The cat said meow");
+ DocumentProto dog = createDoc("uri:dog", "The dog said woof");
+
+ FakeIcing icing = new FakeIcing();
+ icing.put(cat);
+ icing.put(dog);
+
+ assertThat(queryGetUris(icing, "meow")).containsExactly("uri:cat");
+ assertThat(queryGetUris(icing, "said")).containsExactly("uri:cat", "uri:dog");
+ assertThat(icing.get("uri:cat")).isEqualTo(cat);
+
+ // Delete
+ icing.delete("uri:cat");
+ icing.delete("uri:notreal");
+
+ assertThat(queryGetUris(icing, "meow")).isEmpty();
+ assertThat(queryGetUris(icing, "said")).containsExactly("uri:dog");
+ assertThat(icing.get("uri:cat")).isNull();
+ }
+
+ private static DocumentProto createDoc(String uri, String body) {
+ return DocumentProto.newBuilder()
+ .setUri(uri)
+ .addProperties(PropertyProto.newBuilder().addStringValues(body))
+ .build();
+ }
+
+ private static List<String> queryGetUris(FakeIcing icing, String term) {
+ List<String> uris = new ArrayList<>();
+ for (DocumentProto result : icing.query(term)) {
+ uris.add(result.getUri());
+ }
+ return uris;
+ }
+}
diff --git a/services/tests/servicestests/src/com/android/server/backup/DataChangedJournalTest.java b/services/tests/servicestests/src/com/android/server/backup/DataChangedJournalTest.java
index f588c4f..4e7fe44 100644
--- a/services/tests/servicestests/src/com/android/server/backup/DataChangedJournalTest.java
+++ b/services/tests/servicestests/src/com/android/server/backup/DataChangedJournalTest.java
@@ -18,6 +18,9 @@
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Mockito.when;
+import static org.testng.Assert.assertEquals;
+
import android.platform.test.annotations.Presubmit;
import androidx.test.filters.SmallTest;
@@ -50,6 +53,7 @@
@Rule public TemporaryFolder mTemporaryFolder = new TemporaryFolder();
@Mock private Consumer<String> mConsumer;
+ @Mock private File invalidFile;
private File mFile;
private DataChangedJournal mJournal;
@@ -131,4 +135,10 @@
public void toString_isSameAsFileToString() throws Exception {
assertThat(mJournal.toString()).isEqualTo(mFile.toString());
}
+
+ public void listJournals_invalidJournalFile_returnsEmptyList() throws Exception {
+ when(invalidFile.listFiles()).thenReturn(null);
+
+ assertEquals(0, DataChangedJournal.listJournals(invalidFile).size());
+ }
}
diff --git a/services/tests/servicestests/src/com/android/server/backup/UserBackupPreferencesTest.java b/services/tests/servicestests/src/com/android/server/backup/UserBackupPreferencesTest.java
new file mode 100644
index 0000000..d6efe35
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/backup/UserBackupPreferencesTest.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2019 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.backup;
+
+import static junit.framework.Assert.assertEquals;
+import static junit.framework.Assert.assertFalse;
+import static junit.framework.Assert.assertTrue;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.runner.AndroidJUnit4;
+
+import android.platform.test.annotations.Presubmit;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
+import org.junit.runner.RunWith;
+import org.mockito.MockitoAnnotations;
+
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+@Presubmit
+@RunWith(AndroidJUnit4.class)
+public class UserBackupPreferencesTest {
+ private static final String EXCLUDED_PACKAGE_1 = "package1";
+ private static final String EXCLUDED_PACKAGE_2 = "package2";
+ private static final List<String> EXCLUDED_KEYS_1 = Arrays.asList("key1", "key2");
+ private static final List<String> EXCLUDED_KEYS_2 = Arrays.asList("key1");
+
+ @Rule public TemporaryFolder mTemporaryFolder = new TemporaryFolder();
+
+ private UserBackupPreferences mExcludedRestoreKeysStorage;
+
+ @Before
+ public void setUp() throws Exception {
+ MockitoAnnotations.initMocks(this);
+
+ mExcludedRestoreKeysStorage =
+ new UserBackupPreferences(
+ InstrumentationRegistry.getContext(), mTemporaryFolder.newFolder());
+ }
+
+ @Test
+ public void testGetExcludedKeysForPackages_returnsExcludedKeys() {
+ mExcludedRestoreKeysStorage.addExcludedKeys(EXCLUDED_PACKAGE_1, EXCLUDED_KEYS_1);
+ mExcludedRestoreKeysStorage.addExcludedKeys(EXCLUDED_PACKAGE_2, EXCLUDED_KEYS_2);
+
+ Map<String, Set<String>> excludedKeys =
+ mExcludedRestoreKeysStorage.getExcludedRestoreKeysForPackages(EXCLUDED_PACKAGE_1);
+ assertTrue(excludedKeys.containsKey(EXCLUDED_PACKAGE_1));
+ assertFalse(excludedKeys.containsKey(EXCLUDED_PACKAGE_2));
+ assertEquals(new HashSet<>(EXCLUDED_KEYS_1), excludedKeys.get(EXCLUDED_PACKAGE_1));
+ }
+
+ @Test
+ public void testGetExcludedKeysForPackages_withEmpty_list_returnsAllExcludedKeys() {
+ mExcludedRestoreKeysStorage.addExcludedKeys(EXCLUDED_PACKAGE_1, EXCLUDED_KEYS_1);
+ mExcludedRestoreKeysStorage.addExcludedKeys(EXCLUDED_PACKAGE_2, EXCLUDED_KEYS_2);
+
+ Map<String, Set<String>> excludedKeys =
+ mExcludedRestoreKeysStorage.getAllExcludedRestoreKeys();
+ assertTrue(excludedKeys.containsKey(EXCLUDED_PACKAGE_1));
+ assertTrue(excludedKeys.containsKey(EXCLUDED_PACKAGE_2));
+ assertEquals(new HashSet<>(EXCLUDED_KEYS_1), excludedKeys.get(EXCLUDED_PACKAGE_1));
+ assertEquals(new HashSet<>(EXCLUDED_KEYS_2), excludedKeys.get(EXCLUDED_PACKAGE_2));
+ }
+}
diff --git a/services/tests/servicestests/src/com/android/server/backup/restore/PerformUnifiedRestoreTaskTest.java b/services/tests/servicestests/src/com/android/server/backup/restore/PerformUnifiedRestoreTaskTest.java
new file mode 100644
index 0000000..6359edf
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/backup/restore/PerformUnifiedRestoreTaskTest.java
@@ -0,0 +1,126 @@
+/*
+ * Copyright (C) 2019 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.backup.restore;
+
+import static junit.framework.Assert.assertEquals;
+import static junit.framework.Assert.assertFalse;
+import static junit.framework.Assert.assertTrue;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.Mockito.when;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.runner.AndroidJUnit4;
+
+import android.app.backup.BackupDataInput;
+import android.app.backup.BackupDataOutput;
+import android.platform.test.annotations.Presubmit;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
+
+import java.util.ArrayDeque;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Queue;
+import java.util.Set;
+
+@Presubmit
+@RunWith(AndroidJUnit4.class)
+public class PerformUnifiedRestoreTaskTest {
+ private static final String PACKAGE_NAME = "package";
+ private static final String INCLUDED_KEY = "included_key";
+ private static final String EXCLUDED_KEY_1 = "excluded_key_1";
+ private static final String EXCLUDED_KEY_2 = "excluded_key_2";
+
+ @Mock private BackupDataInput mBackupDataInput;
+ @Mock private BackupDataOutput mBackupDataOutput;
+
+ private Set<String> mExcludedkeys = new HashSet<>();
+ private Map<String, String> mBackupData = new HashMap<>();
+ // Mock BackupDataInput reads backup data from here.
+ private Queue<String> mBackupDataSource;
+ // Mock BackupDataOutput will write backup data here.
+ private Set<String> mBackupDataDump;
+ private PerformUnifiedRestoreTask mRestoreTask;
+
+ @Before
+ public void setUp() throws Exception {
+ MockitoAnnotations.initMocks(this);
+
+ populateTestData();
+
+ mBackupDataSource = new ArrayDeque<>(mBackupData.keySet());
+ when(mBackupDataInput.readNextHeader()).then(new Answer<Boolean>() {
+ @Override
+ public Boolean answer(InvocationOnMock invocation) throws Throwable {
+ return !mBackupDataSource.isEmpty();
+ }
+ });
+ when(mBackupDataInput.getKey()).then(new Answer<String>() {
+ @Override
+ public String answer(InvocationOnMock invocation) throws Throwable {
+ return mBackupDataSource.poll();
+ }
+ });
+ when(mBackupDataInput.getDataSize()).thenReturn(0);
+
+ mBackupDataDump = new HashSet<>();
+ ArgumentCaptor<String> keyCaptor = ArgumentCaptor.forClass(String.class);
+ when(mBackupDataOutput.writeEntityHeader(keyCaptor.capture(), anyInt())).then(
+ new Answer<Void>() {
+ @Override
+ public Void answer(InvocationOnMock invocation) throws Throwable {
+ mBackupDataDump.add(keyCaptor.getValue());
+ return null;
+ }
+ });
+
+ mRestoreTask = new PerformUnifiedRestoreTask(Collections.singletonMap(
+ PACKAGE_NAME, mExcludedkeys));
+ }
+
+ private void populateTestData() {
+ mBackupData = new HashMap<>();
+ mBackupData.put(INCLUDED_KEY, "1");
+ mBackupData.put(EXCLUDED_KEY_1, "2");
+ mBackupData.put(EXCLUDED_KEY_2, "3");
+
+ mExcludedkeys = new HashSet<>();
+ mExcludedkeys.add(EXCLUDED_KEY_1);
+ mExcludedkeys.add(EXCLUDED_KEY_2);
+ }
+
+ @Test
+ public void testFilterExcludedKeys() throws Exception {
+ mRestoreTask.filterExcludedKeys(PACKAGE_NAME, mBackupDataInput, mBackupDataOutput);
+
+ // Verify only the correct were written into BackupDataOutput object.
+ Set<String> allowedBackupKeys = new HashSet<>(mBackupData.keySet());
+ allowedBackupKeys.removeAll(mExcludedkeys);
+ assertEquals(allowedBackupKeys, mBackupDataDump);
+ }
+}
diff --git a/services/tests/servicestests/src/com/android/server/compat/PlatformCompatTest.java b/services/tests/servicestests/src/com/android/server/compat/PlatformCompatTest.java
new file mode 100644
index 0000000..c406876
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/compat/PlatformCompatTest.java
@@ -0,0 +1,272 @@
+/*
+ * Copyright (C) 2019 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.compat;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.reset;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import static org.mockito.internal.verification.VerificationModeFactory.times;
+import static org.testng.Assert.assertThrows;
+
+import android.compat.Compatibility;
+import android.content.Context;
+import android.content.pm.PackageManager;
+
+import com.android.internal.compat.CompatibilityChangeConfig;
+
+import com.google.common.collect.ImmutableSet;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnitRunner;
+
+@RunWith(MockitoJUnitRunner.class)
+public class PlatformCompatTest {
+ private static final String PACKAGE_NAME = "my.package";
+
+ @Mock
+ private Context mContext;
+ @Mock
+ private PackageManager mPackageManager;
+ @Mock
+ CompatChange.ChangeListener mListener1, mListener2;
+
+
+ @Before
+ public void setUp() throws Exception {
+ when(mContext.getPackageManager()).thenReturn(mPackageManager);
+ when(mPackageManager.getPackageUid(eq(PACKAGE_NAME), eq(0))).thenThrow(
+ new PackageManager.NameNotFoundException());
+ CompatConfig.get().clearChanges();
+ }
+
+ @Test
+ public void testRegisterListenerToSameIdThrows() {
+ PlatformCompat pc = new PlatformCompat(mContext);
+
+ // Registering a listener to change 1 is successful.
+ pc.registerListener(1, mListener1);
+ // Registering a listener to change 2 is successful.
+ pc.registerListener(2, mListener1);
+ // Trying to register another listener to change id 1 fails.
+ assertThrows(IllegalStateException.class, () -> pc.registerListener(1, mListener1));
+ }
+
+ @Test
+ public void testRegisterListenerReturn() {
+ PlatformCompat pc = new PlatformCompat(mContext);
+
+ pc.setOverrides(
+ new CompatibilityChangeConfig(
+ new Compatibility.ChangeConfig(ImmutableSet.of(1L), ImmutableSet.of())),
+ PACKAGE_NAME);
+
+ // Change id 1 is known (added in setOverrides).
+ assertThat(pc.registerListener(1, mListener1)).isTrue();
+ // Change 2 is unknown.
+ assertThat(pc.registerListener(2, mListener1)).isFalse();
+ }
+
+ @Test
+ public void testListenerCalledOnSetOverrides() {
+ PlatformCompat pc = new PlatformCompat(mContext);
+
+ pc.registerListener(1, mListener1);
+ pc.registerListener(2, mListener1);
+
+ pc.setOverrides(
+ new CompatibilityChangeConfig(
+ new Compatibility.ChangeConfig(ImmutableSet.of(1L), ImmutableSet.of(2L))),
+ PACKAGE_NAME);
+
+ verify(mListener1, times(2)).onCompatChange(PACKAGE_NAME);
+ }
+
+ @Test
+ public void testListenerNotCalledOnWrongPackage() {
+ PlatformCompat pc = new PlatformCompat(mContext);
+
+ pc.registerListener(1, mListener1);
+ pc.registerListener(2, mListener1);
+
+ pc.setOverridesForTest(
+ new CompatibilityChangeConfig(
+ new Compatibility.ChangeConfig(ImmutableSet.of(1L), ImmutableSet.of(2L))),
+ PACKAGE_NAME);
+
+ verify(mListener1, never()).onCompatChange("other.package");
+ }
+
+ @Test
+ public void testListenerCalledOnSetOverridesTwoListeners() {
+ PlatformCompat pc = new PlatformCompat(mContext);
+ pc.registerListener(1, mListener1);
+
+ final ImmutableSet<Long> enabled = ImmutableSet.of(1L);
+ final ImmutableSet<Long> disabled = ImmutableSet.of(2L);
+
+ pc.setOverrides(
+ new CompatibilityChangeConfig(
+ new Compatibility.ChangeConfig(enabled, disabled)),
+ PACKAGE_NAME);
+
+ verify(mListener1, times(1)).onCompatChange(PACKAGE_NAME);
+ verify(mListener2, never()).onCompatChange(PACKAGE_NAME);
+
+ reset(mListener1);
+ reset(mListener2);
+
+ pc.registerListener(2, mListener2);
+
+ pc.setOverrides(
+ new CompatibilityChangeConfig(
+ new Compatibility.ChangeConfig(enabled, disabled)),
+ PACKAGE_NAME);
+
+ verify(mListener1, times(1)).onCompatChange(PACKAGE_NAME);
+ verify(mListener2, times(1)).onCompatChange(PACKAGE_NAME);
+ }
+
+ @Test
+ public void testListenerCalledOnSetOverridesForTest() {
+ PlatformCompat pc = new PlatformCompat(mContext);
+
+ pc.registerListener(1, mListener1);
+ pc.registerListener(2, mListener1);
+
+ pc.setOverridesForTest(
+ new CompatibilityChangeConfig(
+ new Compatibility.ChangeConfig(ImmutableSet.of(1L), ImmutableSet.of(2L))),
+ PACKAGE_NAME);
+
+ verify(mListener1, times(2)).onCompatChange(PACKAGE_NAME);
+ }
+
+ @Test
+ public void testListenerCalledOnSetOverridesTwoListenersForTest() {
+ PlatformCompat pc = new PlatformCompat(mContext);
+ pc.registerListener(1, mListener1);
+
+ final ImmutableSet<Long> enabled = ImmutableSet.of(1L);
+ final ImmutableSet<Long> disabled = ImmutableSet.of(2L);
+
+ pc.setOverridesForTest(
+ new CompatibilityChangeConfig(
+ new Compatibility.ChangeConfig(enabled, disabled)),
+ PACKAGE_NAME);
+
+ verify(mListener1, times(1)).onCompatChange(PACKAGE_NAME);
+ verify(mListener2, never()).onCompatChange(PACKAGE_NAME);
+
+ reset(mListener1);
+ reset(mListener2);
+
+ pc.registerListener(2, mListener2);
+ pc.setOverridesForTest(
+ new CompatibilityChangeConfig(
+ new Compatibility.ChangeConfig(enabled, disabled)),
+ PACKAGE_NAME);
+
+ verify(mListener1, times(1)).onCompatChange(PACKAGE_NAME);
+ verify(mListener2, times(1)).onCompatChange(PACKAGE_NAME);
+ }
+
+ @Test
+ public void testListenerCalledOnClearOverrides() {
+ PlatformCompat pc = new PlatformCompat(mContext);
+
+ pc.registerListener(1, mListener1);
+ pc.registerListener(2, mListener2);
+
+ pc.setOverrides(
+ new CompatibilityChangeConfig(
+ new Compatibility.ChangeConfig(ImmutableSet.of(1L), ImmutableSet.of())),
+ PACKAGE_NAME);
+ verify(mListener1, times(1)).onCompatChange(PACKAGE_NAME);
+ verify(mListener2, never()).onCompatChange(PACKAGE_NAME);
+
+ reset(mListener1);
+ reset(mListener2);
+
+ pc.clearOverrides(PACKAGE_NAME);
+ verify(mListener1, times(1)).onCompatChange(PACKAGE_NAME);
+ verify(mListener2, never()).onCompatChange(PACKAGE_NAME);
+ }
+
+ @Test
+ public void testListenerCalledOnClearOverridesMultipleOverrides() {
+ PlatformCompat pc = new PlatformCompat(mContext);
+
+ pc.registerListener(1, mListener1);
+ pc.registerListener(2, mListener2);
+
+ pc.setOverrides(
+ new CompatibilityChangeConfig(
+ new Compatibility.ChangeConfig(ImmutableSet.of(1L), ImmutableSet.of(2L))),
+ PACKAGE_NAME);
+ verify(mListener1, times(1)).onCompatChange(PACKAGE_NAME);
+ verify(mListener2, times(1)).onCompatChange(PACKAGE_NAME);
+
+ reset(mListener1);
+ reset(mListener2);
+
+ pc.clearOverrides(PACKAGE_NAME);
+ verify(mListener1, times(1)).onCompatChange(PACKAGE_NAME);
+ verify(mListener2, times(1)).onCompatChange(PACKAGE_NAME);
+ }
+
+ @Test
+ public void testListenerCalledOnClearOverrideExists() {
+ PlatformCompat pc = new PlatformCompat(mContext);
+
+ pc.registerListener(1, mListener1);
+ pc.registerListener(2, mListener2);
+
+ pc.setOverrides(
+ new CompatibilityChangeConfig(
+ new Compatibility.ChangeConfig(ImmutableSet.of(1L), ImmutableSet.of())),
+ PACKAGE_NAME);
+ verify(mListener1, times(1)).onCompatChange(PACKAGE_NAME);
+ verify(mListener2, never()).onCompatChange(PACKAGE_NAME);
+
+ reset(mListener1);
+ reset(mListener2);
+
+ pc.clearOverride(1, PACKAGE_NAME);
+ verify(mListener1, times(1)).onCompatChange(PACKAGE_NAME);
+ verify(mListener2, never()).onCompatChange(PACKAGE_NAME);
+ }
+
+ @Test
+ public void testListenerCalledOnClearOverrideDoesntExist() {
+ PlatformCompat pc = new PlatformCompat(mContext);
+
+ pc.registerListener(1, mListener1);
+
+ pc.clearOverride(1, PACKAGE_NAME);
+ // Listener not called when a non existing override is removed.
+ verify(mListener1, never()).onCompatChange(PACKAGE_NAME);
+ }
+
+
+}
diff --git a/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerServiceTestable.java b/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerServiceTestable.java
index 64ea59d..f86bacf 100644
--- a/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerServiceTestable.java
+++ b/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerServiceTestable.java
@@ -22,6 +22,7 @@
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.backup.IBackupManager;
+import android.app.timedetector.TimeDetector;
import android.app.usage.UsageStatsManagerInternal;
import android.content.Context;
import android.content.Intent;
@@ -229,6 +230,11 @@
AlarmManager getAlarmManager() {return services.alarmManager;}
@Override
+ TimeDetector getTimeDetector() {
+ return services.timeDetector;
+ }
+
+ @Override
LockPatternUtils newLockPatternUtils() {
return services.lockPatternUtils;
}
diff --git a/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java b/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java
index f270724..0590020 100644
--- a/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java
@@ -26,9 +26,6 @@
import static android.app.admin.DevicePolicyManager.PASSWORD_COMPLEXITY_NONE;
import static android.app.admin.DevicePolicyManager.WIPE_EUICC;
import static android.app.admin.PasswordMetrics.computeForPassword;
-import static android.os.UserManagerInternal.CAMERA_DISABLED_GLOBALLY;
-import static android.os.UserManagerInternal.CAMERA_DISABLED_LOCALLY;
-import static android.os.UserManagerInternal.CAMERA_NOT_DISABLED;
import static com.android.internal.widget.LockPatternUtils.CREDENTIAL_TYPE_NONE;
import static com.android.internal.widget.LockPatternUtils.EscrowTokenStateChangeCallback;
@@ -66,6 +63,7 @@
import android.app.admin.DevicePolicyManager;
import android.app.admin.DevicePolicyManagerInternal;
import android.app.admin.PasswordMetrics;
+import android.app.timedetector.ManualTimeSuggestion;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Intent;
@@ -82,6 +80,7 @@
import android.os.Process;
import android.os.UserHandle;
import android.os.UserManager;
+import android.os.UserManagerInternal;
import android.platform.test.annotations.Presubmit;
import android.provider.Settings;
import android.security.KeyChain;
@@ -1154,9 +1153,8 @@
MockUtils.checkUserHandle(UserHandle.USER_SYSTEM));
verify(getServices().userManagerInternal).setDevicePolicyUserRestrictions(
- eq(UserHandle.USER_SYSTEM),
- eq(null),
- eq(true), eq(CAMERA_NOT_DISABLED));
+ eq(UserHandle.USER_SYSTEM), eq(null),
+ eq(UserManagerInternal.OWNER_TYPE_DEVICE_OWNER));
verify(getServices().usageStatsManagerInternal).setActiveAdminApps(
null, UserHandle.USER_SYSTEM);
@@ -1725,8 +1723,7 @@
verify(getServices().userManagerInternal).setDevicePolicyUserRestrictions(
eq(UserHandle.USER_SYSTEM),
MockUtils.checkUserRestrictions(defaultRestrictions),
- eq(true) /* isDeviceOwner */,
- eq(CAMERA_NOT_DISABLED)
+ eq(UserManagerInternal.OWNER_TYPE_DEVICE_OWNER)
);
reset(getServices().userManagerInternal);
@@ -1741,7 +1738,7 @@
verify(getServices().userManagerInternal).setDevicePolicyUserRestrictions(
eq(UserHandle.USER_SYSTEM),
MockUtils.checkUserRestrictions(UserManager.DISALLOW_ADD_USER),
- eq(true), eq(CAMERA_NOT_DISABLED));
+ eq(UserManagerInternal.OWNER_TYPE_DEVICE_OWNER));
reset(getServices().userManagerInternal);
dpm.addUserRestriction(admin1, UserManager.DISALLOW_OUTGOING_CALLS);
@@ -1749,7 +1746,7 @@
eq(UserHandle.USER_SYSTEM),
MockUtils.checkUserRestrictions(UserManager.DISALLOW_OUTGOING_CALLS,
UserManager.DISALLOW_ADD_USER),
- eq(true), eq(CAMERA_NOT_DISABLED));
+ eq(UserManagerInternal.OWNER_TYPE_DEVICE_OWNER));
reset(getServices().userManagerInternal);
DpmTestUtils.assertRestrictions(
@@ -1767,7 +1764,7 @@
verify(getServices().userManagerInternal).setDevicePolicyUserRestrictions(
eq(UserHandle.USER_SYSTEM),
MockUtils.checkUserRestrictions(UserManager.DISALLOW_OUTGOING_CALLS),
- eq(true), eq(CAMERA_NOT_DISABLED));
+ eq(UserManagerInternal.OWNER_TYPE_DEVICE_OWNER));
reset(getServices().userManagerInternal);
DpmTestUtils.assertRestrictions(
@@ -1783,7 +1780,7 @@
verify(getServices().userManagerInternal).setDevicePolicyUserRestrictions(
eq(UserHandle.USER_SYSTEM),
MockUtils.checkUserRestrictions(),
- eq(true), eq(CAMERA_NOT_DISABLED));
+ eq(UserManagerInternal.OWNER_TYPE_DEVICE_OWNER));
reset(getServices().userManagerInternal);
assertNoDeviceOwnerRestrictions();
@@ -1797,7 +1794,7 @@
eq(UserHandle.USER_SYSTEM),
MockUtils.checkUserRestrictions(UserManager.DISALLOW_ADJUST_VOLUME,
UserManager.DISALLOW_UNMUTE_MICROPHONE),
- eq(true), eq(CAMERA_NOT_DISABLED));
+ eq(UserManagerInternal.OWNER_TYPE_DEVICE_OWNER));
reset(getServices().userManagerInternal);
dpm.clearUserRestriction(admin1, UserManager.DISALLOW_ADJUST_VOLUME);
@@ -1809,7 +1806,7 @@
verify(getServices().userManagerInternal).setDevicePolicyUserRestrictions(
eq(UserHandle.USER_SYSTEM),
MockUtils.checkUserRestrictions(UserManager.DISALLOW_ADD_USER),
- eq(true), eq(CAMERA_NOT_DISABLED));
+ eq(UserManagerInternal.OWNER_TYPE_DEVICE_OWNER));
reset(getServices().userManagerInternal);
dpm.addUserRestriction(admin1, UserManager.DISALLOW_FUN);
@@ -1817,16 +1814,16 @@
eq(UserHandle.USER_SYSTEM),
MockUtils.checkUserRestrictions(UserManager.DISALLOW_FUN,
UserManager.DISALLOW_ADD_USER),
- eq(true), eq(CAMERA_NOT_DISABLED));
+ eq(UserManagerInternal.OWNER_TYPE_DEVICE_OWNER));
reset(getServices().userManagerInternal);
dpm.setCameraDisabled(admin1, true);
verify(getServices().userManagerInternal).setDevicePolicyUserRestrictions(
eq(UserHandle.USER_SYSTEM),
- // DISALLOW_CAMERA will be applied to both local and global.
+ // DISALLOW_CAMERA will be applied globally.
MockUtils.checkUserRestrictions(UserManager.DISALLOW_FUN,
- UserManager.DISALLOW_ADD_USER),
- eq(true), eq(CAMERA_DISABLED_GLOBALLY));
+ UserManager.DISALLOW_ADD_USER, UserManager.DISALLOW_CAMERA),
+ eq(UserManagerInternal.OWNER_TYPE_DEVICE_OWNER));
reset(getServices().userManagerInternal);
}
@@ -1872,7 +1869,7 @@
verify(getServices().userManagerInternal).setDevicePolicyUserRestrictions(
eq(DpmMockContext.CALLER_USER_HANDLE),
MockUtils.checkUserRestrictions(UserManager.DISALLOW_INSTALL_UNKNOWN_SOURCES),
- eq(false), eq(CAMERA_NOT_DISABLED));
+ eq(UserManagerInternal.OWNER_TYPE_PROFILE_OWNER));
reset(getServices().userManagerInternal);
dpm.addUserRestriction(admin1, UserManager.DISALLOW_OUTGOING_CALLS);
@@ -1880,7 +1877,7 @@
eq(DpmMockContext.CALLER_USER_HANDLE),
MockUtils.checkUserRestrictions(UserManager.DISALLOW_INSTALL_UNKNOWN_SOURCES,
UserManager.DISALLOW_OUTGOING_CALLS),
- eq(false), eq(CAMERA_NOT_DISABLED));
+ eq(UserManagerInternal.OWNER_TYPE_PROFILE_OWNER));
reset(getServices().userManagerInternal);
DpmTestUtils.assertRestrictions(
@@ -1903,7 +1900,7 @@
verify(getServices().userManagerInternal).setDevicePolicyUserRestrictions(
eq(DpmMockContext.CALLER_USER_HANDLE),
MockUtils.checkUserRestrictions(UserManager.DISALLOW_OUTGOING_CALLS),
- eq(false), eq(CAMERA_NOT_DISABLED));
+ eq(UserManagerInternal.OWNER_TYPE_PROFILE_OWNER));
reset(getServices().userManagerInternal);
DpmTestUtils.assertRestrictions(
@@ -1924,7 +1921,7 @@
verify(getServices().userManagerInternal).setDevicePolicyUserRestrictions(
eq(DpmMockContext.CALLER_USER_HANDLE),
MockUtils.checkUserRestrictions(),
- eq(false), eq(CAMERA_NOT_DISABLED));
+ eq(UserManagerInternal.OWNER_TYPE_PROFILE_OWNER));
reset(getServices().userManagerInternal);
DpmTestUtils.assertRestrictions(
@@ -1946,20 +1943,52 @@
eq(DpmMockContext.CALLER_USER_HANDLE),
MockUtils.checkUserRestrictions(UserManager.DISALLOW_ADJUST_VOLUME,
UserManager.DISALLOW_UNMUTE_MICROPHONE),
- eq(false), eq(CAMERA_NOT_DISABLED));
+ eq(UserManagerInternal.OWNER_TYPE_PROFILE_OWNER));
reset(getServices().userManagerInternal);
dpm.setCameraDisabled(admin1, true);
verify(getServices().userManagerInternal).setDevicePolicyUserRestrictions(
eq(DpmMockContext.CALLER_USER_HANDLE),
MockUtils.checkUserRestrictions(UserManager.DISALLOW_ADJUST_VOLUME,
- UserManager.DISALLOW_UNMUTE_MICROPHONE),
- eq(false), eq(CAMERA_DISABLED_LOCALLY));
+ UserManager.DISALLOW_UNMUTE_MICROPHONE, UserManager.DISALLOW_CAMERA),
+ eq(UserManagerInternal.OWNER_TYPE_PROFILE_OWNER));
reset(getServices().userManagerInternal);
// TODO Make sure restrictions are written to the file.
}
+ public void testSetUserRestriction_asPoOfOrgOwnedDevice() throws Exception {
+ setupProfileOwner();
+
+ final long ident = mServiceContext.binder.clearCallingIdentity();
+ configureContextForAccess(mServiceContext, true);
+
+ mServiceContext.binder.callingUid =
+ UserHandle.getUid(DpmMockContext.CALLER_USER_HANDLE,
+ DpmMockContext.CALLER_MANAGED_PROVISIONING_UID);
+ try {
+ runAsCaller(mServiceContext, dpms, dpm -> {
+ dpm.markProfileOwnerOnOrganizationOwnedDevice(admin1);
+ });
+ } finally {
+ mServiceContext.binder.restoreCallingIdentity(ident);
+ }
+
+ dpm.addUserRestriction(admin1, UserManager.DISALLOW_CONFIG_DATE_TIME);
+ verify(getServices().userManagerInternal).setDevicePolicyUserRestrictions(
+ eq(DpmMockContext.CALLER_USER_HANDLE),
+ MockUtils.checkUserRestrictions(UserManager.DISALLOW_CONFIG_DATE_TIME),
+ eq(UserManagerInternal.OWNER_TYPE_PROFILE_OWNER_OF_ORGANIZATION_OWNED_DEVICE));
+ reset(getServices().userManagerInternal);
+
+ dpm.setCameraDisabled(admin1, true);
+ verify(getServices().userManagerInternal).setDevicePolicyUserRestrictions(
+ eq(DpmMockContext.CALLER_USER_HANDLE),
+ MockUtils.checkUserRestrictions(UserManager.DISALLOW_CONFIG_DATE_TIME,
+ UserManager.DISALLOW_CAMERA),
+ eq(UserManagerInternal.OWNER_TYPE_PROFILE_OWNER_OF_ORGANIZATION_OWNED_DEVICE));
+ reset(getServices().userManagerInternal);
+ }
public void testDefaultEnabledUserRestrictions() throws Exception {
mContext.callerPermissions.add(permission.MANAGE_DEVICE_ADMINS);
@@ -1994,8 +2023,7 @@
verify(getServices().userManagerInternal).setDevicePolicyUserRestrictions(
eq(UserHandle.USER_SYSTEM),
MockUtils.checkUserRestrictions(defaultRestrictions),
- eq(true) /* isDeviceOwner */,
- eq(CAMERA_NOT_DISABLED)
+ eq(UserManagerInternal.OWNER_TYPE_DEVICE_OWNER)
);
reset(getServices().userManagerInternal);
@@ -2035,10 +2063,9 @@
dpm.getUserRestrictions(admin1)
);
verify(getServices().userManagerInternal, atLeast(1)).setDevicePolicyUserRestrictions(
- eq(UserHandle.USER_SYSTEM),
- MockUtils.checkUserRestrictions(newDefaultEnabledRestriction),
- eq(true) /* isDeviceOwner */,
- eq(CAMERA_NOT_DISABLED)
+ eq(UserHandle.USER_SYSTEM),
+ MockUtils.checkUserRestrictions(newDefaultEnabledRestriction),
+ eq(UserManagerInternal.OWNER_TYPE_DEVICE_OWNER)
);
reset(getServices().userManagerInternal);
@@ -2608,6 +2635,16 @@
mContext.callerPermissions.removeAll(OWNER_SETUP_PERMISSIONS);
}
+ private void setupProfileOwnerOnUser0() throws Exception {
+ mContext.callerPermissions.addAll(OWNER_SETUP_PERMISSIONS);
+
+ setUpPackageManagerForAdmin(admin1, DpmMockContext.CALLER_SYSTEM_USER_UID);
+ dpm.setActiveAdmin(admin1, false);
+ assertTrue(dpm.setProfileOwner(admin1, null, UserHandle.USER_SYSTEM));
+
+ mContext.callerPermissions.removeAll(OWNER_SETUP_PERMISSIONS);
+ }
+
private void setupDeviceOwner() throws Exception {
mContext.callerPermissions.addAll(OWNER_SETUP_PERMISSIONS);
@@ -3584,11 +3621,60 @@
Settings.System.SCREEN_BRIGHTNESS, "0", DpmMockContext.CALLER_USER_HANDLE);
}
+ public void testSetAutoTimeModifiesSetting() throws Exception {
+ mContext.binder.callingUid = DpmMockContext.CALLER_SYSTEM_USER_UID;
+ setupDeviceOwner();
+ dpm.setAutoTime(admin1, true);
+ verify(getServices().settings).settingsGlobalPutInt(Settings.Global.AUTO_TIME, 1);
+
+ dpm.setAutoTime(admin1, false);
+ verify(getServices().settings).settingsGlobalPutInt(Settings.Global.AUTO_TIME, 0);
+ }
+
+ public void testSetAutoTimeWithPOOnUser0() throws Exception {
+ mContext.binder.callingUid = DpmMockContext.CALLER_SYSTEM_USER_UID;
+ setupProfileOwnerOnUser0();
+ dpm.setAutoTime(admin1, true);
+ verify(getServices().settings).settingsGlobalPutInt(Settings.Global.AUTO_TIME, 1);
+
+ dpm.setAutoTime(admin1, false);
+ verify(getServices().settings).settingsGlobalPutInt(Settings.Global.AUTO_TIME, 0);
+ }
+
+ public void testSetAutoTimeFailWithPONotOnUser0() throws Exception {
+ setupProfileOwner();
+ assertExpectException(SecurityException.class, null, () -> dpm.setAutoTime(admin1, false));
+ verify(getServices().settings, never()).settingsGlobalPutInt(Settings.Global.AUTO_TIME, 0);
+ }
+
+ public void testSetAutoTimeWithPOOfOrganizationOwnedDevice() throws Exception {
+ setupProfileOwner();
+ configureProfileOwnerOfOrgOwnedDevice(admin1, DpmMockContext.CALLER_USER_HANDLE);
+
+ dpm.setAutoTime(admin1, true);
+ verify(getServices().settings).settingsGlobalPutInt(Settings.Global.AUTO_TIME, 1);
+
+ dpm.setAutoTime(admin1, false);
+ verify(getServices().settings).settingsGlobalPutInt(Settings.Global.AUTO_TIME, 0);
+ }
+
public void testSetTime() throws Exception {
mContext.binder.callingUid = DpmMockContext.CALLER_SYSTEM_USER_UID;
setupDeviceOwner();
dpm.setTime(admin1, 0);
- verify(getServices().alarmManager).setTime(0);
+
+ BaseMatcher<ManualTimeSuggestion> hasZeroTime = new BaseMatcher<ManualTimeSuggestion>() {
+ @Override
+ public boolean matches(Object item) {
+ final ManualTimeSuggestion suggestion = (ManualTimeSuggestion) item;
+ return suggestion.getUtcTime().getValue() == 0;
+ }
+ @Override
+ public void describeTo(Description description) {
+ description.appendText("ManualTimeSuggestion{utcTime.value=0}");
+ }
+ };
+ verify(getServices().timeDetector).suggestManualTime(argThat(hasZeroTime));
}
public void testSetTimeFailWithPO() throws Exception {
@@ -5143,7 +5229,7 @@
configureContextForAccess(mContext, false);
assertExpectException(SecurityException.class, /* messageRegex= */ null,
- () -> dpm.setProfileOwnerCanAccessDeviceIds(admin2));
+ () -> dpm.markProfileOwnerOnOrganizationOwnedDevice(admin2));
}
public void testGrantDeviceIdsAccess_notByAuthorizedCaller() throws Exception {
@@ -5151,22 +5237,25 @@
configureContextForAccess(mContext, false);
assertExpectException(SecurityException.class, /* messageRegex= */ null,
- () -> dpm.setProfileOwnerCanAccessDeviceIds(admin1));
+ () -> dpm.markProfileOwnerOnOrganizationOwnedDevice(admin1));
}
public void testGrantDeviceIdsAccess_byAuthorizedSystemCaller() throws Exception {
setupProfileOwner();
// This method will throw if the system context could not call
- // setProfileOwnerCanAccessDeviceIds successfully.
- configureProfileOwnerForDeviceIdAccess(admin1, DpmMockContext.CALLER_USER_HANDLE);
+ // markProfileOwnerOfOrganizationOwnedDevice successfully.
+ configureProfileOwnerOfOrgOwnedDevice(admin1, DpmMockContext.CALLER_USER_HANDLE);
}
- private static void configureContextForAccess(DpmMockContext context, boolean granted) {
+ private void configureContextForAccess(DpmMockContext context, boolean granted) {
when(context.spiedContext.checkCallingPermission(
- android.Manifest.permission.GRANT_PROFILE_OWNER_DEVICE_IDS_ACCESS))
+ permission.MARK_DEVICE_ORGANIZATION_OWNED))
.thenReturn(granted ? PackageManager.PERMISSION_GRANTED
: PackageManager.PERMISSION_DENIED);
+
+ when(getServices().userManager.getProfileParent(any()))
+ .thenReturn(UserHandle.SYSTEM);
}
public void testGrantDeviceIdsAccess_byAuthorizedManagedProvisioning() throws Exception {
@@ -5180,7 +5269,7 @@
DpmMockContext.CALLER_MANAGED_PROVISIONING_UID);
try {
runAsCaller(mServiceContext, dpms, dpm -> {
- dpm.setProfileOwnerCanAccessDeviceIds(admin1);
+ dpm.markProfileOwnerOnOrganizationOwnedDevice(admin1);
});
} finally {
mServiceContext.binder.restoreCallingIdentity(ident);
@@ -5218,7 +5307,7 @@
admin1.getPackageName(), DpmMockContext.CALLER_SYSTEM_USER_UID));
setupProfileOwner();
- configureProfileOwnerForDeviceIdAccess(admin1, DpmMockContext.CALLER_USER_HANDLE);
+ configureProfileOwnerOfOrgOwnedDevice(admin1, DpmMockContext.CALLER_USER_HANDLE);
// The profile owner is allowed to request Device ID attestation.
mServiceContext.binder.callingUid = DpmMockContext.CALLER_UID;
@@ -5255,7 +5344,7 @@
dpm -> dpm.setDelegatedScopes(admin1, DpmMockContext.DELEGATE_PACKAGE_NAME,
Arrays.asList(DELEGATION_CERT_INSTALL)));
- configureProfileOwnerForDeviceIdAccess(admin1, DpmMockContext.CALLER_USER_HANDLE);
+ configureProfileOwnerOfOrgOwnedDevice(admin1, DpmMockContext.CALLER_USER_HANDLE);
// Make sure that the profile owner can still request Device ID attestation.
mServiceContext.binder.callingUid = DpmMockContext.CALLER_UID;
@@ -5432,12 +5521,16 @@
assertTrue(dpm.isPackageAllowedToAccessCalendar(testPackage));
}
- private void configureProfileOwnerForDeviceIdAccess(ComponentName who, int userId) {
+ private void configureProfileOwnerOfOrgOwnedDevice(ComponentName who, int userId) {
+ when(getServices().userManager.getProfileParent(eq(UserHandle.of(userId))))
+ .thenReturn(UserHandle.SYSTEM);
final long ident = mServiceContext.binder.clearCallingIdentity();
mServiceContext.binder.callingUid =
UserHandle.getUid(DpmMockContext.CALLER_USER_HANDLE, DpmMockContext.SYSTEM_UID);
+
+ configureContextForAccess(mServiceContext, true);
runAsCaller(mServiceContext, dpms, dpm -> {
- dpm.setProfileOwnerCanAccessDeviceIds(who);
+ dpm.markProfileOwnerOnOrganizationOwnedDevice(who);
});
mServiceContext.binder.restoreCallingIdentity(ident);
}
diff --git a/services/tests/servicestests/src/com/android/server/devicepolicy/DpmMockContext.java b/services/tests/servicestests/src/com/android/server/devicepolicy/DpmMockContext.java
index bd513dc..1a67576 100644
--- a/services/tests/servicestests/src/com/android/server/devicepolicy/DpmMockContext.java
+++ b/services/tests/servicestests/src/com/android/server/devicepolicy/DpmMockContext.java
@@ -207,6 +207,8 @@
switch (name) {
case Context.ALARM_SERVICE:
return mMockSystemServices.alarmManager;
+ case Context.TIME_DETECTOR_SERVICE:
+ return mMockSystemServices.timeDetector;
case Context.USER_SERVICE:
return mMockSystemServices.userManager;
case Context.POWER_SERVICE:
diff --git a/services/tests/servicestests/src/com/android/server/devicepolicy/MockSystemServices.java b/services/tests/servicestests/src/com/android/server/devicepolicy/MockSystemServices.java
index b0d0303..c927364 100644
--- a/services/tests/servicestests/src/com/android/server/devicepolicy/MockSystemServices.java
+++ b/services/tests/servicestests/src/com/android/server/devicepolicy/MockSystemServices.java
@@ -31,6 +31,7 @@
import android.app.IActivityTaskManager;
import android.app.NotificationManager;
import android.app.backup.IBackupManager;
+import android.app.timedetector.TimeDetector;
import android.app.usage.UsageStatsManagerInternal;
import android.content.BroadcastReceiver;
import android.content.ContentValues;
@@ -111,6 +112,7 @@
public final TelephonyManager telephonyManager;
public final AccountManager accountManager;
public final AlarmManager alarmManager;
+ public final TimeDetector timeDetector;
public final KeyChain.KeyChainConnection keyChainConnection;
/** Note this is a partial mock, not a real mock. */
public final PackageManager packageManager;
@@ -152,6 +154,7 @@
telephonyManager = mock(TelephonyManager.class);
accountManager = mock(AccountManager.class);
alarmManager = mock(AlarmManager.class);
+ timeDetector = mock(TimeDetector.class);
keyChainConnection = mock(KeyChain.KeyChainConnection.class, RETURNS_DEEP_STUBS);
// Package manager is huge, so we use a partial mock instead.
diff --git a/services/tests/servicestests/src/com/android/server/display/DisplayModeDirectorTest.java b/services/tests/servicestests/src/com/android/server/display/DisplayModeDirectorTest.java
new file mode 100644
index 0000000..269f918
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/display/DisplayModeDirectorTest.java
@@ -0,0 +1,137 @@
+/*
+ * Copyright (C) 2019 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.display;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import android.content.Context;
+import android.os.Handler;
+import android.os.Looper;
+import android.util.SparseArray;
+import android.view.Display;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.MockitoAnnotations;
+
+@SmallTest
+@RunWith(AndroidJUnit4.class)
+public class DisplayModeDirectorTest {
+ private Context mContext;
+
+ @Before
+ public void setUp() throws Exception {
+ MockitoAnnotations.initMocks(this);
+ mContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+ }
+
+ private DisplayModeDirector createDisplayModeDirectorWithDisplayFpsRange(
+ int minFps, int maxFps) {
+ DisplayModeDirector director =
+ new DisplayModeDirector(mContext, new Handler(Looper.getMainLooper()));
+ int displayId = 0;
+ int numModes = maxFps - minFps + 1;
+ Display.Mode[] modes = new Display.Mode[numModes];
+ for (int i = minFps; i <= maxFps; i++) {
+ modes[i - minFps] = new Display.Mode(
+ /*modeId=*/i, /*width=*/1000, /*height=*/1000, /*refreshRate=*/i);
+ }
+ SparseArray<Display.Mode[]> supportedModesByDisplay = new SparseArray<Display.Mode[]>();
+ supportedModesByDisplay.put(displayId, modes);
+ director.injectSupportedModesByDisplay(supportedModesByDisplay);
+ SparseArray<Display.Mode> defaultModesByDisplay = new SparseArray<Display.Mode>();
+ defaultModesByDisplay.put(displayId, modes[0]);
+ director.injectDefaultModeByDisplay(defaultModesByDisplay);
+ return director;
+ }
+
+ private int[] intRange(int min, int max) {
+ int[] range = new int[max - min + 1];
+ for (int i = min; i <= max; i++) {
+ range[i - min] = i;
+ }
+ return range;
+ }
+
+ @Test
+ public void testDisplayModeVoting() {
+ int displayId = 0;
+
+ // With no votes present, DisplayModeDirector should allow any refresh rate.
+ assertEquals(new DisplayModeDirector.DesiredDisplayConfigSpecs(/*defaultModeId=*/60,
+ new DisplayModeDirector.RefreshRateRange(0f, Float.POSITIVE_INFINITY),
+ intRange(60, 90)),
+ createDisplayModeDirectorWithDisplayFpsRange(60, 90).getDesiredDisplayConfigSpecs(
+ displayId));
+
+ int numPriorities =
+ DisplayModeDirector.Vote.MAX_PRIORITY - DisplayModeDirector.Vote.MIN_PRIORITY + 1;
+
+ // Ensure vote priority works as expected. As we add new votes with higher priority, they
+ // should take precedence over lower priority votes.
+ {
+ int minFps = 60;
+ int maxFps = 90;
+ DisplayModeDirector director = createDisplayModeDirectorWithDisplayFpsRange(60, 90);
+ assertTrue(2 * numPriorities < maxFps - minFps + 1);
+ SparseArray<DisplayModeDirector.Vote> votes =
+ new SparseArray<DisplayModeDirector.Vote>();
+ SparseArray<SparseArray<DisplayModeDirector.Vote>> votesByDisplay =
+ new SparseArray<SparseArray<DisplayModeDirector.Vote>>();
+ votesByDisplay.put(displayId, votes);
+ for (int i = 0; i < numPriorities; i++) {
+ int priority = DisplayModeDirector.Vote.MIN_PRIORITY + i;
+ votes.put(
+ priority, DisplayModeDirector.Vote.forRefreshRates(minFps + i, maxFps - i));
+ director.injectVotesByDisplay(votesByDisplay);
+ assertEquals(
+ new DisplayModeDirector.DesiredDisplayConfigSpecs(
+ /*defaultModeId=*/minFps + i,
+ new DisplayModeDirector.RefreshRateRange(minFps + i, maxFps - i),
+ intRange(minFps + i, maxFps - i)),
+ director.getDesiredDisplayConfigSpecs(displayId));
+ }
+ }
+
+ // Ensure lower priority votes are able to influence the final decision, even in the
+ // presence of higher priority votes.
+ {
+ assertTrue(numPriorities >= 2);
+ DisplayModeDirector director = createDisplayModeDirectorWithDisplayFpsRange(60, 90);
+ SparseArray<DisplayModeDirector.Vote> votes =
+ new SparseArray<DisplayModeDirector.Vote>();
+ SparseArray<SparseArray<DisplayModeDirector.Vote>> votesByDisplay =
+ new SparseArray<SparseArray<DisplayModeDirector.Vote>>();
+ votesByDisplay.put(displayId, votes);
+ votes.put(DisplayModeDirector.Vote.MAX_PRIORITY,
+ DisplayModeDirector.Vote.forRefreshRates(65, 85));
+ votes.put(DisplayModeDirector.Vote.MIN_PRIORITY,
+ DisplayModeDirector.Vote.forRefreshRates(70, 80));
+ director.injectVotesByDisplay(votesByDisplay);
+ assertEquals(
+ new DisplayModeDirector.DesiredDisplayConfigSpecs(/*defaultModeId=*/70,
+ new DisplayModeDirector.RefreshRateRange(70, 80), intRange(70, 80)),
+ director.getDesiredDisplayConfigSpecs(displayId));
+ }
+ }
+}
diff --git a/services/tests/servicestests/src/com/android/server/integrity/engine/RuleEvaluatorTest.java b/services/tests/servicestests/src/com/android/server/integrity/engine/RuleEvaluatorTest.java
index e52aca3..7a070ee 100644
--- a/services/tests/servicestests/src/com/android/server/integrity/engine/RuleEvaluatorTest.java
+++ b/services/tests/servicestests/src/com/android/server/integrity/engine/RuleEvaluatorTest.java
@@ -21,12 +21,13 @@
import static org.junit.Assert.assertEquals;
-import com.android.server.integrity.model.AppInstallMetadata;
-import com.android.server.integrity.model.AtomicFormula;
-import com.android.server.integrity.model.AtomicFormula.StringAtomicFormula;
+import android.content.integrity.AppInstallMetadata;
+import android.content.integrity.AtomicFormula;
+import android.content.integrity.AtomicFormula.StringAtomicFormula;
+import android.content.integrity.CompoundFormula;
+import android.content.integrity.Rule;
+
import com.android.server.integrity.model.IntegrityCheckResult;
-import com.android.server.integrity.model.OpenFormula;
-import com.android.server.integrity.model.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -63,7 +64,10 @@
public void testEvaluateRules_noMatchedRules_allow() {
Rule rule1 =
new Rule(
- new StringAtomicFormula(AtomicFormula.PACKAGE_NAME, PACKAGE_NAME_2),
+ new StringAtomicFormula(
+ AtomicFormula.PACKAGE_NAME,
+ PACKAGE_NAME_2,
+ /* isHashedValue= */ false),
Rule.DENY);
IntegrityCheckResult result =
@@ -76,11 +80,17 @@
public void testEvaluateRules_oneMatch_deny() {
Rule rule1 =
new Rule(
- new StringAtomicFormula(AtomicFormula.PACKAGE_NAME, PACKAGE_NAME_1),
+ new StringAtomicFormula(
+ AtomicFormula.PACKAGE_NAME,
+ PACKAGE_NAME_1,
+ /* isHashedValue= */ false),
Rule.DENY);
Rule rule2 =
new Rule(
- new StringAtomicFormula(AtomicFormula.PACKAGE_NAME, PACKAGE_NAME_2),
+ new StringAtomicFormula(
+ AtomicFormula.PACKAGE_NAME,
+ PACKAGE_NAME_2,
+ /* isHashedValue= */ false),
Rule.DENY);
IntegrityCheckResult result =
@@ -94,16 +104,24 @@
public void testEvaluateRules_multipleMatches_deny() {
Rule rule1 =
new Rule(
- new StringAtomicFormula(AtomicFormula.PACKAGE_NAME, PACKAGE_NAME_1),
+ new StringAtomicFormula(
+ AtomicFormula.PACKAGE_NAME,
+ PACKAGE_NAME_1,
+ /* isHashedValue= */ false),
Rule.DENY);
- OpenFormula openFormula2 =
- new OpenFormula(
- OpenFormula.AND,
+ CompoundFormula compoundFormula2 =
+ new CompoundFormula(
+ CompoundFormula.AND,
Arrays.asList(
- new StringAtomicFormula(AtomicFormula.PACKAGE_NAME, PACKAGE_NAME_1),
new StringAtomicFormula(
- AtomicFormula.APP_CERTIFICATE, APP_CERTIFICATE)));
- Rule rule2 = new Rule(openFormula2, Rule.DENY);
+ AtomicFormula.PACKAGE_NAME,
+ PACKAGE_NAME_1,
+ /* isHashedValue= */ false),
+ new StringAtomicFormula(
+ AtomicFormula.APP_CERTIFICATE,
+ APP_CERTIFICATE,
+ /* isHashedValue= */ false)));
+ Rule rule2 = new Rule(compoundFormula2, Rule.DENY);
IntegrityCheckResult result =
RuleEvaluator.evaluateRules(Arrays.asList(rule1, rule2), APP_INSTALL_METADATA);
@@ -114,13 +132,15 @@
@Test
public void testEvaluateRules_ruleWithNot_deny() {
- OpenFormula openFormula =
- new OpenFormula(
- OpenFormula.NOT,
+ CompoundFormula compoundFormula =
+ new CompoundFormula(
+ CompoundFormula.NOT,
Collections.singletonList(
new StringAtomicFormula(
- AtomicFormula.PACKAGE_NAME, PACKAGE_NAME_2)));
- Rule rule = new Rule(openFormula, Rule.DENY);
+ AtomicFormula.PACKAGE_NAME,
+ PACKAGE_NAME_2,
+ /* isHashedValue= */ false)));
+ Rule rule = new Rule(compoundFormula, Rule.DENY);
IntegrityCheckResult result =
RuleEvaluator.evaluateRules(Collections.singletonList(rule), APP_INSTALL_METADATA);
@@ -146,14 +166,19 @@
@Test
public void testEvaluateRules_validForm_deny() {
- OpenFormula openFormula =
- new OpenFormula(
- OpenFormula.AND,
+ CompoundFormula compoundFormula =
+ new CompoundFormula(
+ CompoundFormula.AND,
Arrays.asList(
- new StringAtomicFormula(AtomicFormula.PACKAGE_NAME, PACKAGE_NAME_1),
new StringAtomicFormula(
- AtomicFormula.APP_CERTIFICATE, APP_CERTIFICATE)));
- Rule rule = new Rule(openFormula, Rule.DENY);
+ AtomicFormula.PACKAGE_NAME,
+ PACKAGE_NAME_1,
+ /* isHashedValue= */ false),
+ new StringAtomicFormula(
+ AtomicFormula.APP_CERTIFICATE,
+ APP_CERTIFICATE,
+ /* isHashedValue= */ false)));
+ Rule rule = new Rule(compoundFormula, Rule.DENY);
IntegrityCheckResult result =
RuleEvaluator.evaluateRules(Collections.singletonList(rule), APP_INSTALL_METADATA);
@@ -164,14 +189,19 @@
@Test
public void testEvaluateRules_ruleNotInDNF_ignoreAndAllow() {
- OpenFormula openFormula =
- new OpenFormula(
- OpenFormula.OR,
+ CompoundFormula compoundFormula =
+ new CompoundFormula(
+ CompoundFormula.OR,
Arrays.asList(
- new StringAtomicFormula(AtomicFormula.PACKAGE_NAME, PACKAGE_NAME_1),
new StringAtomicFormula(
- AtomicFormula.APP_CERTIFICATE, APP_CERTIFICATE)));
- Rule rule = new Rule(openFormula, Rule.DENY);
+ AtomicFormula.PACKAGE_NAME,
+ PACKAGE_NAME_1,
+ /* isHashedValue= */ false),
+ new StringAtomicFormula(
+ AtomicFormula.APP_CERTIFICATE,
+ APP_CERTIFICATE,
+ /* isHashedValue= */ false)));
+ Rule rule = new Rule(compoundFormula, Rule.DENY);
IntegrityCheckResult result =
RuleEvaluator.evaluateRules(Collections.singletonList(rule), APP_INSTALL_METADATA);
@@ -180,17 +210,22 @@
}
@Test
- public void testEvaluateRules_openFormulaWithNot_allow() {
- OpenFormula openSubFormula =
- new OpenFormula(
- OpenFormula.AND,
+ public void testEvaluateRules_compoundFormulaWithNot_allow() {
+ CompoundFormula openSubFormula =
+ new CompoundFormula(
+ CompoundFormula.AND,
Arrays.asList(
- new StringAtomicFormula(AtomicFormula.PACKAGE_NAME, PACKAGE_NAME_2),
new StringAtomicFormula(
- AtomicFormula.APP_CERTIFICATE, APP_CERTIFICATE)));
- OpenFormula openFormula =
- new OpenFormula(OpenFormula.NOT, Collections.singletonList(openSubFormula));
- Rule rule = new Rule(openFormula, Rule.DENY);
+ AtomicFormula.PACKAGE_NAME,
+ PACKAGE_NAME_2,
+ /* isHashedValue= */ false),
+ new StringAtomicFormula(
+ AtomicFormula.APP_CERTIFICATE,
+ APP_CERTIFICATE,
+ /* isHashedValue= */ false)));
+ CompoundFormula compoundFormula =
+ new CompoundFormula(CompoundFormula.NOT, Collections.singletonList(openSubFormula));
+ Rule rule = new Rule(compoundFormula, Rule.DENY);
IntegrityCheckResult result =
RuleEvaluator.evaluateRules(Collections.singletonList(rule), APP_INSTALL_METADATA);
@@ -202,16 +237,24 @@
public void testEvaluateRules_forceAllow() {
Rule rule1 =
new Rule(
- new StringAtomicFormula(AtomicFormula.PACKAGE_NAME, PACKAGE_NAME_1),
+ new StringAtomicFormula(
+ AtomicFormula.PACKAGE_NAME,
+ PACKAGE_NAME_1,
+ /* isHashedValue= */ false),
Rule.FORCE_ALLOW);
- OpenFormula openFormula2 =
- new OpenFormula(
- OpenFormula.AND,
+ CompoundFormula compoundFormula2 =
+ new CompoundFormula(
+ CompoundFormula.AND,
Arrays.asList(
- new StringAtomicFormula(AtomicFormula.PACKAGE_NAME, PACKAGE_NAME_1),
new StringAtomicFormula(
- AtomicFormula.APP_CERTIFICATE, APP_CERTIFICATE)));
- Rule rule2 = new Rule(openFormula2, Rule.DENY);
+ AtomicFormula.PACKAGE_NAME,
+ PACKAGE_NAME_1,
+ /* isHashedValue= */ false),
+ new StringAtomicFormula(
+ AtomicFormula.APP_CERTIFICATE,
+ APP_CERTIFICATE,
+ /* isHashedValue= */ false)));
+ Rule rule2 = new Rule(compoundFormula2, Rule.DENY);
IntegrityCheckResult result =
RuleEvaluator.evaluateRules(Arrays.asList(rule1, rule2), APP_INSTALL_METADATA);
diff --git a/services/tests/servicestests/src/com/android/server/integrity/parser/RuleXmlParserTest.java b/services/tests/servicestests/src/com/android/server/integrity/parser/RuleXmlParserTest.java
index be6a31f..a14197b 100644
--- a/services/tests/servicestests/src/com/android/server/integrity/parser/RuleXmlParserTest.java
+++ b/services/tests/servicestests/src/com/android/server/integrity/parser/RuleXmlParserTest.java
@@ -20,9 +20,9 @@
import static com.google.common.truth.Truth.assertThat;
-import com.android.server.integrity.model.AtomicFormula;
-import com.android.server.integrity.model.OpenFormula;
-import com.android.server.integrity.model.Rule;
+import android.content.integrity.AtomicFormula;
+import android.content.integrity.CompoundFormula;
+import android.content.integrity.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -30,6 +30,7 @@
import java.io.ByteArrayInputStream;
import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
@@ -40,27 +41,37 @@
public class RuleXmlParserTest {
@Test
- public void testXmlStream_validOpenFormula() throws Exception {
+ public void testXmlStream_validCompoundFormula() throws Exception {
Map<String, String> atomicFormulaAttrs = new HashMap<>();
atomicFormulaAttrs.put("K", String.valueOf(AtomicFormula.PACKAGE_NAME));
- atomicFormulaAttrs.put("O", String.valueOf(AtomicFormula.EQ));
atomicFormulaAttrs.put("V", "com.app.test");
- String ruleXmlOpenFormula = "<RL>"
- + generateTagWithAttribute(/* tag= */ "R",
- Collections.singletonMap("E", String.valueOf(Rule.DENY)),
- /* closed= */ false)
- + generateTagWithAttribute(/* tag= */ "OF",
- Collections.singletonMap("C", String.valueOf(OpenFormula.NOT)),
- /* closed= */ false)
- + generateTagWithAttribute(/* tag= */ "AF", atomicFormulaAttrs, /* closed= */ true)
- + "</OF>"
- + "</R>"
- + "</RL>";
+ String ruleXmlCompoundFormula =
+ "<RL>"
+ + generateTagWithAttribute(
+ /* tag= */ "R",
+ Collections.singletonMap("E", String.valueOf(Rule.DENY)),
+ /* closed= */ false)
+ + generateTagWithAttribute(
+ /* tag= */ "OF",
+ Collections.singletonMap("C", String.valueOf(CompoundFormula.NOT)),
+ /* closed= */ false)
+ + generateTagWithAttribute(
+ /* tag= */ "AF", atomicFormulaAttrs, /* closed= */ true)
+ + "</OF>"
+ + "</R>"
+ + "</RL>";
RuleParser xmlParser = new RuleXmlParser();
- InputStream inputStream = new ByteArrayInputStream(ruleXmlOpenFormula.getBytes());
- Rule expectedRule = new Rule(new OpenFormula(OpenFormula.NOT, Collections.singletonList(
- new AtomicFormula.StringAtomicFormula(AtomicFormula.PACKAGE_NAME, "com.app.test"))),
- Rule.DENY);
+ InputStream inputStream = new ByteArrayInputStream(ruleXmlCompoundFormula.getBytes());
+ Rule expectedRule =
+ new Rule(
+ new CompoundFormula(
+ CompoundFormula.NOT,
+ Collections.singletonList(
+ new AtomicFormula.StringAtomicFormula(
+ AtomicFormula.PACKAGE_NAME,
+ "com.app.test",
+ /* isHashedValue= */ false))),
+ Rule.DENY);
List<Rule> rules = xmlParser.parse(inputStream);
@@ -68,250 +79,316 @@
}
@Test
- public void testXmlString_validOpenFormula_notConnector() throws Exception {
+ public void testXmlString_validCompoundFormula_notConnector() throws Exception {
Map<String, String> packageNameAttrs = new HashMap<>();
packageNameAttrs.put("K", String.valueOf(AtomicFormula.PACKAGE_NAME));
- packageNameAttrs.put("O", String.valueOf(AtomicFormula.EQ));
packageNameAttrs.put("V", "com.app.test");
- String ruleXmlOpenFormula = "<RL>"
- + generateTagWithAttribute(/* tag= */ "R",
- Collections.singletonMap("E", String.valueOf(Rule.DENY)),
- /* closed= */ false)
- + generateTagWithAttribute(/* tag= */ "OF",
- Collections.singletonMap("C", String.valueOf(OpenFormula.NOT)),
- /* closed= */ false)
- + generateTagWithAttribute(/* tag= */ "AF", packageNameAttrs, /* closed= */ true)
- + "</OF>"
- + "</R>"
- + "</RL>";
+ String ruleXmlCompoundFormula =
+ "<RL>"
+ + generateTagWithAttribute(
+ /* tag= */ "R",
+ Collections.singletonMap("E", String.valueOf(Rule.DENY)),
+ /* closed= */ false)
+ + generateTagWithAttribute(
+ /* tag= */ "OF",
+ Collections.singletonMap("C", String.valueOf(CompoundFormula.NOT)),
+ /* closed= */ false)
+ + generateTagWithAttribute(
+ /* tag= */ "AF", packageNameAttrs, /* closed= */ true)
+ + "</OF>"
+ + "</R>"
+ + "</RL>";
RuleParser xmlParser = new RuleXmlParser();
- Rule expectedRule = new Rule(new OpenFormula(OpenFormula.NOT, Collections.singletonList(
- new AtomicFormula.StringAtomicFormula(AtomicFormula.PACKAGE_NAME, "com.app.test"))),
- Rule.DENY);
+ Rule expectedRule =
+ new Rule(
+ new CompoundFormula(
+ CompoundFormula.NOT,
+ Collections.singletonList(
+ new AtomicFormula.StringAtomicFormula(
+ AtomicFormula.PACKAGE_NAME,
+ "com.app.test",
+ /* isHashedValue= */ false))),
+ Rule.DENY);
- List<Rule> rules = xmlParser.parse(ruleXmlOpenFormula);
+ List<Rule> rules = xmlParser.parse(ruleXmlCompoundFormula.getBytes(StandardCharsets.UTF_8));
assertThat(rules).isEqualTo(Collections.singletonList(expectedRule));
}
@Test
- public void testXmlString_validOpenFormula_andConnector() throws Exception {
+ public void testXmlString_validCompoundFormula_andConnector() throws Exception {
Map<String, String> packageNameAttrs = new HashMap<>();
packageNameAttrs.put("K", String.valueOf(AtomicFormula.PACKAGE_NAME));
- packageNameAttrs.put("O", String.valueOf(AtomicFormula.EQ));
packageNameAttrs.put("V", "com.app.test");
Map<String, String> appCertificateAttrs = new HashMap<>();
appCertificateAttrs.put("K", String.valueOf(AtomicFormula.APP_CERTIFICATE));
- appCertificateAttrs.put("O", String.valueOf(AtomicFormula.EQ));
appCertificateAttrs.put("V", "test_cert");
- String ruleXmlOpenFormula = "<RL>"
- + generateTagWithAttribute(/* tag= */ "R",
- Collections.singletonMap("E", String.valueOf(Rule.DENY)),
- /* closed= */ false)
- + generateTagWithAttribute(/* tag= */ "OF",
- Collections.singletonMap("C", String.valueOf(OpenFormula.AND)),
- /* closed= */ false)
- + generateTagWithAttribute(/* tag= */ "AF", packageNameAttrs, /* closed= */ true)
- + generateTagWithAttribute(/* tag= */ "AF", appCertificateAttrs, /* closed= */ true)
- + "</OF>"
- + "</R>"
- + "</RL>";
+ String ruleXmlCompoundFormula =
+ "<RL>"
+ + generateTagWithAttribute(
+ /* tag= */ "R",
+ Collections.singletonMap("E", String.valueOf(Rule.DENY)),
+ /* closed= */ false)
+ + generateTagWithAttribute(
+ /* tag= */ "OF",
+ Collections.singletonMap("C", String.valueOf(CompoundFormula.AND)),
+ /* closed= */ false)
+ + generateTagWithAttribute(
+ /* tag= */ "AF", packageNameAttrs, /* closed= */ true)
+ + generateTagWithAttribute(
+ /* tag= */ "AF", appCertificateAttrs, /* closed= */ true)
+ + "</OF>"
+ + "</R>"
+ + "</RL>";
RuleParser xmlParser = new RuleXmlParser();
- Rule expectedRule = new Rule(new OpenFormula(OpenFormula.AND, Arrays.asList(
- new AtomicFormula.StringAtomicFormula(AtomicFormula.PACKAGE_NAME, "com.app.test"),
- new AtomicFormula.StringAtomicFormula(AtomicFormula.APP_CERTIFICATE, "test_cert"))),
- Rule.DENY);
-
- List<Rule> rules = xmlParser.parse(ruleXmlOpenFormula);
+ Rule expectedRule =
+ new Rule(
+ new CompoundFormula(
+ CompoundFormula.AND,
+ Arrays.asList(
+ new AtomicFormula.StringAtomicFormula(
+ AtomicFormula.PACKAGE_NAME,
+ "com.app.test",
+ /* isHashedValue= */ false),
+ new AtomicFormula.StringAtomicFormula(
+ AtomicFormula.APP_CERTIFICATE,
+ "test_cert",
+ /* isHashedValue= */ false))),
+ Rule.DENY);
+ List<Rule> rules = xmlParser.parse(ruleXmlCompoundFormula.getBytes(StandardCharsets.UTF_8));
assertThat(rules).isEqualTo(Collections.singletonList(expectedRule));
}
@Test
- public void testXmlString_validOpenFormula_orConnector() throws Exception {
+ public void testXmlString_validCompoundFormula_orConnector() throws Exception {
Map<String, String> packageNameAttrs = new HashMap<>();
packageNameAttrs.put("K", String.valueOf(AtomicFormula.PACKAGE_NAME));
- packageNameAttrs.put("O", String.valueOf(AtomicFormula.EQ));
packageNameAttrs.put("V", "com.app.test");
Map<String, String> appCertificateAttrs = new HashMap<>();
appCertificateAttrs.put("K", String.valueOf(AtomicFormula.APP_CERTIFICATE));
- appCertificateAttrs.put("O", String.valueOf(AtomicFormula.EQ));
appCertificateAttrs.put("V", "test_cert");
- String ruleXmlOpenFormula = "<RL>"
- + generateTagWithAttribute(/* tag= */ "R",
- Collections.singletonMap("E", String.valueOf(Rule.DENY)),
- /* closed= */ false)
- + generateTagWithAttribute(/* tag= */ "OF",
- Collections.singletonMap("C", String.valueOf(OpenFormula.OR)),
- /* closed= */ false)
- + generateTagWithAttribute(/* tag= */ "AF", packageNameAttrs, /* closed= */ true)
- + generateTagWithAttribute(/* tag= */ "AF", appCertificateAttrs, /* closed= */ true)
- + "</OF>"
- + "</R>"
- + "</RL>";
+ String ruleXmlCompoundFormula =
+ "<RL>"
+ + generateTagWithAttribute(
+ /* tag= */ "R",
+ Collections.singletonMap("E", String.valueOf(Rule.DENY)),
+ /* closed= */ false)
+ + generateTagWithAttribute(
+ /* tag= */ "OF",
+ Collections.singletonMap("C", String.valueOf(CompoundFormula.OR)),
+ /* closed= */ false)
+ + generateTagWithAttribute(
+ /* tag= */ "AF", packageNameAttrs, /* closed= */ true)
+ + generateTagWithAttribute(
+ /* tag= */ "AF", appCertificateAttrs, /* closed= */ true)
+ + "</OF>"
+ + "</R>"
+ + "</RL>";
RuleParser xmlParser = new RuleXmlParser();
- Rule expectedRule = new Rule(new OpenFormula(OpenFormula.OR, Arrays.asList(
- new AtomicFormula.StringAtomicFormula(AtomicFormula.PACKAGE_NAME, "com.app.test"),
- new AtomicFormula.StringAtomicFormula(AtomicFormula.APP_CERTIFICATE, "test_cert"))),
- Rule.DENY);
+ Rule expectedRule =
+ new Rule(
+ new CompoundFormula(
+ CompoundFormula.OR,
+ Arrays.asList(
+ new AtomicFormula.StringAtomicFormula(
+ AtomicFormula.PACKAGE_NAME,
+ "com.app.test",
+ /* isHashedValue= */ false),
+ new AtomicFormula.StringAtomicFormula(
+ AtomicFormula.APP_CERTIFICATE,
+ "test_cert",
+ /* isHashedValue= */ false))),
+ Rule.DENY);
- List<Rule> rules = xmlParser.parse(ruleXmlOpenFormula);
+ List<Rule> rules = xmlParser.parse(ruleXmlCompoundFormula.getBytes(StandardCharsets.UTF_8));
assertThat(rules).isEqualTo(Collections.singletonList(expectedRule));
}
@Test
- public void testXmlString_validOpenFormula_differentTagOrder() throws Exception {
+ public void testXmlString_validCompoundFormula_differentTagOrder() throws Exception {
Map<String, String> packageNameAttrs = new HashMap<>();
packageNameAttrs.put("K", String.valueOf(AtomicFormula.PACKAGE_NAME));
packageNameAttrs.put("V", "com.app.test");
- packageNameAttrs.put("O", String.valueOf(AtomicFormula.EQ));
- String ruleXmlOpenFormula = "<RL>"
- + generateTagWithAttribute(/* tag= */ "R",
- Collections.singletonMap("E", String.valueOf(Rule.DENY)),
- /* closed= */ false)
- + generateTagWithAttribute(/* tag= */ "OF",
- Collections.singletonMap("C", String.valueOf(OpenFormula.NOT)),
- /* closed= */ false)
- + generateTagWithAttribute(/* tag= */ "AF", packageNameAttrs, /* closed= */ true)
- + "</OF>"
- + "</R>"
- + "</RL>";
+ String ruleXmlCompoundFormula =
+ "<RL>"
+ + generateTagWithAttribute(
+ /* tag= */ "R",
+ Collections.singletonMap("E", String.valueOf(Rule.DENY)),
+ /* closed= */ false)
+ + generateTagWithAttribute(
+ /* tag= */ "OF",
+ Collections.singletonMap("C", String.valueOf(CompoundFormula.NOT)),
+ /* closed= */ false)
+ + generateTagWithAttribute(
+ /* tag= */ "AF", packageNameAttrs, /* closed= */ true)
+ + "</OF>"
+ + "</R>"
+ + "</RL>";
RuleParser xmlParser = new RuleXmlParser();
- Rule expectedRule = new Rule(new OpenFormula(OpenFormula.NOT, Collections.singletonList(
- new AtomicFormula.StringAtomicFormula(AtomicFormula.PACKAGE_NAME, "com.app.test"))),
- Rule.DENY);
+ Rule expectedRule =
+ new Rule(
+ new CompoundFormula(
+ CompoundFormula.NOT,
+ Collections.singletonList(
+ new AtomicFormula.StringAtomicFormula(
+ AtomicFormula.PACKAGE_NAME,
+ "com.app.test",
+ /* isHashedValue= */ false))),
+ Rule.DENY);
- List<Rule> rules = xmlParser.parse(ruleXmlOpenFormula);
+ List<Rule> rules = xmlParser.parse(ruleXmlCompoundFormula.getBytes(StandardCharsets.UTF_8));
assertThat(rules).isEqualTo(Collections.singletonList(expectedRule));
}
@Test
- public void testXmlString_invalidOpenFormula_invalidNumberOfFormulas() throws Exception {
+ public void testXmlString_invalidCompoundFormula_invalidNumberOfFormulas() throws Exception {
Map<String, String> packageNameAttrs = new HashMap<>();
packageNameAttrs.put("K", String.valueOf(AtomicFormula.PACKAGE_NAME));
- packageNameAttrs.put("O", String.valueOf(AtomicFormula.EQ));
packageNameAttrs.put("V", "com.app.test");
Map<String, String> versionCodeAttrs = new HashMap<>();
versionCodeAttrs.put("K", String.valueOf(AtomicFormula.VERSION_CODE));
versionCodeAttrs.put("O", String.valueOf(AtomicFormula.EQ));
versionCodeAttrs.put("V", "1");
- String ruleXmlOpenFormula = "<RL>"
- + generateTagWithAttribute(/* tag= */ "R",
- Collections.singletonMap("E", String.valueOf(Rule.DENY)),
- /* closed= */ false)
- + generateTagWithAttribute(/* tag= */ "OF",
- Collections.singletonMap("C", String.valueOf(OpenFormula.NOT)),
- /* closed= */ false)
- + generateTagWithAttribute(/* tag= */ "AF", packageNameAttrs, /* closed= */ true)
- + generateTagWithAttribute(/* tag= */ "AF", versionCodeAttrs, /* closed= */ true)
- + "</OF>"
- + "</R>"
- + "</RL>";
+ String ruleXmlCompoundFormula =
+ "<RL>"
+ + generateTagWithAttribute(
+ /* tag= */ "R",
+ Collections.singletonMap("E", String.valueOf(Rule.DENY)),
+ /* closed= */ false)
+ + generateTagWithAttribute(
+ /* tag= */ "OF",
+ Collections.singletonMap("C", String.valueOf(CompoundFormula.NOT)),
+ /* closed= */ false)
+ + generateTagWithAttribute(
+ /* tag= */ "AF", packageNameAttrs, /* closed= */ true)
+ + generateTagWithAttribute(
+ /* tag= */ "AF", versionCodeAttrs, /* closed= */ true)
+ + "</OF>"
+ + "</R>"
+ + "</RL>";
RuleParser xmlParser = new RuleXmlParser();
assertExpectException(
RuleParseException.class,
/* expectedExceptionMessageRegex */ "Connector NOT must have 1 formula only",
- () -> xmlParser.parse(ruleXmlOpenFormula));
+ () -> xmlParser.parse(ruleXmlCompoundFormula.getBytes(StandardCharsets.UTF_8)));
}
@Test
- public void testXmlString_invalidOpenFormula_invalidOperator() throws Exception {
+ public void testXmlString_invalidCompoundFormula_invalidOperator() throws Exception {
Map<String, String> packageNameAttrs = new HashMap<>();
packageNameAttrs.put("K", String.valueOf(AtomicFormula.PACKAGE_NAME));
packageNameAttrs.put("O", "INVALID_OPERATOR");
packageNameAttrs.put("V", "com.app.test");
- String ruleXmlOpenFormula = "<RL>"
- + generateTagWithAttribute(/* tag= */ "R",
- Collections.singletonMap("E", String.valueOf(Rule.DENY)),
- /* closed= */ false)
- + generateTagWithAttribute(/* tag= */ "OF",
- Collections.singletonMap("C", String.valueOf(OpenFormula.NOT)),
- /* closed= */ false)
- + generateTagWithAttribute(/* tag= */ "AF", packageNameAttrs, /* closed= */ true)
- + "</OF>"
- + "</R>"
- + "</RL>";
+ String ruleXmlCompoundFormula =
+ "<RL>"
+ + generateTagWithAttribute(
+ /* tag= */ "R",
+ Collections.singletonMap("E", String.valueOf(Rule.DENY)),
+ /* closed= */ false)
+ + generateTagWithAttribute(
+ /* tag= */ "OF",
+ Collections.singletonMap("C", String.valueOf(CompoundFormula.NOT)),
+ /* closed= */ false)
+ + generateTagWithAttribute(
+ /* tag= */ "AF", packageNameAttrs, /* closed= */ true)
+ + "</OF>"
+ + "</R>"
+ + "</RL>";
RuleParser xmlParser = new RuleXmlParser();
assertExpectException(
RuleParseException.class,
/* expectedExceptionMessageRegex */ "For input string: \"INVALID_OPERATOR\"",
- () -> xmlParser.parse(ruleXmlOpenFormula));
+ () -> xmlParser.parse(ruleXmlCompoundFormula.getBytes(StandardCharsets.UTF_8)));
}
@Test
- public void testXmlString_invalidOpenFormula_invalidEffect() throws Exception {
+ public void testXmlString_invalidCompoundFormula_invalidEffect() throws Exception {
Map<String, String> packageNameAttrs = new HashMap<>();
packageNameAttrs.put("K", String.valueOf(AtomicFormula.PACKAGE_NAME));
- packageNameAttrs.put("O", String.valueOf(AtomicFormula.EQ));
packageNameAttrs.put("V", "com.app.test");
- String ruleXmlOpenFormula = "<RL>"
- + generateTagWithAttribute(/* tag= */ "R",
- Collections.singletonMap("E", "INVALID_EFFECT"),
- /* closed= */ false)
- + generateTagWithAttribute(/* tag= */ "OF",
- Collections.singletonMap("C", String.valueOf(OpenFormula.NOT)),
- /* closed= */ false)
- + generateTagWithAttribute(/* tag= */ "AF", packageNameAttrs, /* closed= */ true)
- + "</OF>"
- + "</R>"
- + "</RL>";
+ String ruleXmlCompoundFormula =
+ "<RL>"
+ + generateTagWithAttribute(
+ /* tag= */ "R",
+ Collections.singletonMap("E", "INVALID_EFFECT"),
+ /* closed= */ false)
+ + generateTagWithAttribute(
+ /* tag= */ "OF",
+ Collections.singletonMap("C", String.valueOf(CompoundFormula.NOT)),
+ /* closed= */ false)
+ + generateTagWithAttribute(
+ /* tag= */ "AF", packageNameAttrs, /* closed= */ true)
+ + "</OF>"
+ + "</R>"
+ + "</RL>";
RuleParser xmlParser = new RuleXmlParser();
assertExpectException(
RuleParseException.class,
/* expectedExceptionMessageRegex */ "For input string: \"INVALID_EFFECT\"",
- () -> xmlParser.parse(ruleXmlOpenFormula));
+ () -> xmlParser.parse(ruleXmlCompoundFormula.getBytes(StandardCharsets.UTF_8)));
}
@Test
- public void testXmlString_invalidOpenFormula_invalidTags() throws Exception {
+ public void testXmlString_invalidCompoundFormula_invalidTags() throws Exception {
Map<String, String> packageNameAttrs = new HashMap<>();
packageNameAttrs.put("K", String.valueOf(AtomicFormula.PACKAGE_NAME));
- packageNameAttrs.put("O", String.valueOf(AtomicFormula.EQ));
packageNameAttrs.put("V", "com.app.test");
- String ruleXmlOpenFormula = "<RL>"
- + generateTagWithAttribute(/* tag= */ "R",
- Collections.singletonMap("E", String.valueOf(Rule.DENY)),
- /* closed= */ false)
- + generateTagWithAttribute(/* tag= */ "OF",
- Collections.singletonMap("C", String.valueOf(OpenFormula.NOT)),
- /* closed= */ false)
- + generateTagWithAttribute(/* tag= */ "InvalidAtomicFormula",
- packageNameAttrs, /* closed= */ true)
- + "</OF>"
- + "</R>"
- + "</RL>";
+ String ruleXmlCompoundFormula =
+ "<RL>"
+ + generateTagWithAttribute(
+ /* tag= */ "R",
+ Collections.singletonMap("E", String.valueOf(Rule.DENY)),
+ /* closed= */ false)
+ + generateTagWithAttribute(
+ /* tag= */ "OF",
+ Collections.singletonMap("C", String.valueOf(CompoundFormula.NOT)),
+ /* closed= */ false)
+ + generateTagWithAttribute(
+ /* tag= */ "InvalidAtomicFormula",
+ packageNameAttrs,
+ /* closed= */ true)
+ + "</OF>"
+ + "</R>"
+ + "</RL>";
RuleParser xmlParser = new RuleXmlParser();
assertExpectException(
RuleParseException.class,
/* expectedExceptionMessageRegex */ "Found unexpected tag: InvalidAtomicFormula",
- () -> xmlParser.parse(ruleXmlOpenFormula));
+ () -> xmlParser.parse(ruleXmlCompoundFormula.getBytes(StandardCharsets.UTF_8)));
}
@Test
public void testXmlString_validAtomicFormula_stringValue() throws Exception {
Map<String, String> packageNameAttrs = new HashMap<>();
packageNameAttrs.put("K", String.valueOf(AtomicFormula.PACKAGE_NAME));
- packageNameAttrs.put("O", String.valueOf(AtomicFormula.EQ));
packageNameAttrs.put("V", "com.app.test");
- String ruleXmlAtomicFormula = "<RL>"
- + generateTagWithAttribute(/* tag= */ "R",
- Collections.singletonMap("E", String.valueOf(Rule.DENY)),
- /* closed= */ false)
- + generateTagWithAttribute(/* tag= */ "AF", packageNameAttrs, /* closed= */ true)
- + "</R>"
- + "</RL>";
+ String ruleXmlAtomicFormula =
+ "<RL>"
+ + generateTagWithAttribute(
+ /* tag= */ "R",
+ Collections.singletonMap("E", String.valueOf(Rule.DENY)),
+ /* closed= */ false)
+ + generateTagWithAttribute(
+ /* tag= */ "AF", packageNameAttrs, /* closed= */ true)
+ + "</R>"
+ + "</RL>";
RuleParser xmlParser = new RuleXmlParser();
- Rule expectedRule = new Rule(
- new AtomicFormula.StringAtomicFormula(AtomicFormula.PACKAGE_NAME, "com.app.test"),
- Rule.DENY);
+ Rule expectedRule =
+ new Rule(
+ new AtomicFormula.StringAtomicFormula(
+ AtomicFormula.PACKAGE_NAME,
+ "com.app.test",
+ /* isHashedValue= */ false),
+ Rule.DENY);
- List<Rule> rules = xmlParser.parse(ruleXmlAtomicFormula);
+ List<Rule> rules = xmlParser.parse(ruleXmlAtomicFormula.getBytes(StandardCharsets.UTF_8));
assertThat(rules).isEqualTo(Collections.singletonList(expectedRule));
}
@@ -322,19 +399,24 @@
versionCodeAttrs.put("K", String.valueOf(AtomicFormula.VERSION_CODE));
versionCodeAttrs.put("O", String.valueOf(AtomicFormula.EQ));
versionCodeAttrs.put("V", "1");
- String ruleXmlAtomicFormula = "<RL>"
- + generateTagWithAttribute(/* tag= */ "R",
- Collections.singletonMap("E", String.valueOf(Rule.DENY)),
- /* closed= */ false)
- + generateTagWithAttribute(/* tag= */ "AF", versionCodeAttrs, /* closed= */ true)
- + "</R>"
- + "</RL>";
+ String ruleXmlAtomicFormula =
+ "<RL>"
+ + generateTagWithAttribute(
+ /* tag= */ "R",
+ Collections.singletonMap("E", String.valueOf(Rule.DENY)),
+ /* closed= */ false)
+ + generateTagWithAttribute(
+ /* tag= */ "AF", versionCodeAttrs, /* closed= */ true)
+ + "</R>"
+ + "</RL>";
RuleParser xmlParser = new RuleXmlParser();
- Rule expectedRule = new Rule(
- new AtomicFormula.IntAtomicFormula(AtomicFormula.VERSION_CODE, AtomicFormula.EQ, 1),
- Rule.DENY);
+ Rule expectedRule =
+ new Rule(
+ new AtomicFormula.IntAtomicFormula(
+ AtomicFormula.VERSION_CODE, AtomicFormula.EQ, 1),
+ Rule.DENY);
- List<Rule> rules = xmlParser.parse(ruleXmlAtomicFormula);
+ List<Rule> rules = xmlParser.parse(ruleXmlAtomicFormula.getBytes(StandardCharsets.UTF_8));
assertThat(rules).isEqualTo(Collections.singletonList(expectedRule));
}
@@ -343,21 +425,24 @@
public void testXmlString_validAtomicFormula_booleanValue() throws Exception {
Map<String, String> preInstalledAttrs = new HashMap<>();
preInstalledAttrs.put("K", String.valueOf(AtomicFormula.PRE_INSTALLED));
- preInstalledAttrs.put("O", String.valueOf(AtomicFormula.EQ));
preInstalledAttrs.put("V", "true");
- String ruleXmlAtomicFormula = "<RL>"
- + generateTagWithAttribute(/* tag= */ "R",
- Collections.singletonMap("E", String.valueOf(Rule.DENY)),
- /* closed= */ false)
- + generateTagWithAttribute(/* tag= */ "AF", preInstalledAttrs, /* closed= */ true)
- + "</R>"
- + "</RL>";
+ String ruleXmlAtomicFormula =
+ "<RL>"
+ + generateTagWithAttribute(
+ /* tag= */ "R",
+ Collections.singletonMap("E", String.valueOf(Rule.DENY)),
+ /* closed= */ false)
+ + generateTagWithAttribute(
+ /* tag= */ "AF", preInstalledAttrs, /* closed= */ true)
+ + "</R>"
+ + "</RL>";
RuleParser xmlParser = new RuleXmlParser();
- Rule expectedRule = new Rule(
- new AtomicFormula.BooleanAtomicFormula(AtomicFormula.PRE_INSTALLED, true),
- Rule.DENY);
+ Rule expectedRule =
+ new Rule(
+ new AtomicFormula.BooleanAtomicFormula(AtomicFormula.PRE_INSTALLED, true),
+ Rule.DENY);
- List<Rule> rules = xmlParser.parse(ruleXmlAtomicFormula);
+ List<Rule> rules = xmlParser.parse(ruleXmlAtomicFormula.getBytes(StandardCharsets.UTF_8));
assertThat(rules).isEqualTo(Collections.singletonList(expectedRule));
}
@@ -367,20 +452,26 @@
Map<String, String> packageNameAttrs = new HashMap<>();
packageNameAttrs.put("K", String.valueOf(AtomicFormula.PACKAGE_NAME));
packageNameAttrs.put("V", "com.app.test");
- packageNameAttrs.put("O", String.valueOf(AtomicFormula.EQ));
- String ruleXmlAtomicFormula = "<RL>"
- + generateTagWithAttribute(/* tag= */ "R",
- Collections.singletonMap("E", String.valueOf(Rule.DENY)),
- /* closed= */ false)
- + generateTagWithAttribute(/* tag= */ "AF", packageNameAttrs, /* closed= */ true)
- + "</R>"
- + "</RL>";
+ String ruleXmlAtomicFormula =
+ "<RL>"
+ + generateTagWithAttribute(
+ /* tag= */ "R",
+ Collections.singletonMap("E", String.valueOf(Rule.DENY)),
+ /* closed= */ false)
+ + generateTagWithAttribute(
+ /* tag= */ "AF", packageNameAttrs, /* closed= */ true)
+ + "</R>"
+ + "</RL>";
RuleParser xmlParser = new RuleXmlParser();
- Rule expectedRule = new Rule(
- new AtomicFormula.StringAtomicFormula(AtomicFormula.PACKAGE_NAME, "com.app.test"),
- Rule.DENY);
+ Rule expectedRule =
+ new Rule(
+ new AtomicFormula.StringAtomicFormula(
+ AtomicFormula.PACKAGE_NAME,
+ "com.app.test",
+ /* isHashedValue= */ false),
+ Rule.DENY);
- List<Rule> rules = xmlParser.parse(ruleXmlAtomicFormula);
+ List<Rule> rules = xmlParser.parse(ruleXmlAtomicFormula.getBytes(StandardCharsets.UTF_8));
assertThat(rules).isEqualTo(Collections.singletonList(expectedRule));
}
@@ -389,21 +480,73 @@
public void testXmlString_invalidAtomicFormula_invalidAttribute() throws Exception {
Map<String, String> packageNameAttrs = new HashMap<>();
packageNameAttrs.put("BadKey", String.valueOf(AtomicFormula.PACKAGE_NAME));
- packageNameAttrs.put("O", String.valueOf(AtomicFormula.EQ));
packageNameAttrs.put("V", "com.app.test");
- String ruleXmlAtomicFormula = "<RL>"
- + generateTagWithAttribute(/* tag= */ "R",
- Collections.singletonMap("E", String.valueOf(Rule.DENY)),
- /* closed= */ false)
- + generateTagWithAttribute(/* tag= */ "AF", packageNameAttrs, /* closed= */ true)
- + "</R>"
- + "</RL>";
+ String ruleXmlAtomicFormula =
+ "<RL>"
+ + generateTagWithAttribute(
+ /* tag= */ "R",
+ Collections.singletonMap("E", String.valueOf(Rule.DENY)),
+ /* closed= */ false)
+ + generateTagWithAttribute(
+ /* tag= */ "AF", packageNameAttrs, /* closed= */ true)
+ + "</R>"
+ + "</RL>";
RuleParser xmlParser = new RuleXmlParser();
assertExpectException(
RuleParseException.class,
- /* expectedExceptionMessageRegex */ "Attribute not found: K",
- () -> xmlParser.parse(ruleXmlAtomicFormula));
+ /* expectedExceptionMessageRegex */ "Found unexpected key: -1",
+ () -> xmlParser.parse(ruleXmlAtomicFormula.getBytes(StandardCharsets.UTF_8)));
+ }
+
+ @Test
+ public void testXmlString_invalidRule_invalidAttribute() throws Exception {
+ Map<String, String> packageNameAttrs = new HashMap<>();
+ packageNameAttrs.put("K", String.valueOf(AtomicFormula.PACKAGE_NAME));
+ packageNameAttrs.put("V", "com.app.test");
+ String ruleXmlAtomicFormula =
+ "<RL>"
+ + generateTagWithAttribute(
+ /* tag= */ "R",
+ Collections.singletonMap("BadEffect", String.valueOf(Rule.DENY)),
+ /* closed= */ false)
+ + generateTagWithAttribute(
+ /* tag= */ "AF", packageNameAttrs, /* closed= */ true)
+ + "</R>"
+ + "</RL>";
+ RuleParser xmlParser = new RuleXmlParser();
+ assertExpectException(
+ RuleParseException.class,
+ /* expectedExceptionMessageRegex */ "Unknown effect: -1",
+ () -> xmlParser.parse(ruleXmlAtomicFormula.getBytes(StandardCharsets.UTF_8)));
+ }
+
+ @Test
+ public void testXmlString_invalidCompoundFormula_invalidAttribute() throws Exception {
+ Map<String, String> packageNameAttrs = new HashMap<>();
+ packageNameAttrs.put("K", String.valueOf(AtomicFormula.PACKAGE_NAME));
+ packageNameAttrs.put("V", "com.app.test");
+ String ruleXmlCompoundFormula =
+ "<RL>"
+ + generateTagWithAttribute(
+ /* tag= */ "R",
+ Collections.singletonMap("E", String.valueOf(Rule.DENY)),
+ /* closed= */ false)
+ + generateTagWithAttribute(
+ /* tag= */ "OF",
+ Collections.singletonMap(
+ "BadConnector", String.valueOf(CompoundFormula.NOT)),
+ /* closed= */ false)
+ + generateTagWithAttribute(
+ /* tag= */ "AF", packageNameAttrs, /* closed= */ true)
+ + "</OF>"
+ + "</R>"
+ + "</RL>";
+ RuleParser xmlParser = new RuleXmlParser();
+ assertExpectException(
+ RuleParseException.class,
+ /* expectedExceptionMessageRegex */ "Unknown connector: -1",
+ () -> xmlParser.parse(ruleXmlCompoundFormula.getBytes(StandardCharsets.UTF_8)));
}
@Test
@@ -412,59 +555,68 @@
packageNameAttrs.put("K", String.valueOf(AtomicFormula.VERSION_CODE));
packageNameAttrs.put("O", String.valueOf(AtomicFormula.EQ));
packageNameAttrs.put("V", "com.app.test");
- String ruleXmlAtomicFormula = "<RL>"
- + generateTagWithAttribute(/* tag= */ "R",
- Collections.singletonMap("E", String.valueOf(Rule.DENY)),
- /* closed= */ false)
- + generateTagWithAttribute(/* tag= */ "AF", packageNameAttrs, /* closed= */ true)
- + "</R>"
- + "</RL>";
+ String ruleXmlAtomicFormula =
+ "<RL>"
+ + generateTagWithAttribute(
+ /* tag= */ "R",
+ Collections.singletonMap("E", String.valueOf(Rule.DENY)),
+ /* closed= */ false)
+ + generateTagWithAttribute(
+ /* tag= */ "AF", packageNameAttrs, /* closed= */ true)
+ + "</R>"
+ + "</RL>";
RuleParser xmlParser = new RuleXmlParser();
assertExpectException(
RuleParseException.class,
/* expectedExceptionMessageRegex */ "For input string: \"com.app.test\"",
- () -> xmlParser.parse(ruleXmlAtomicFormula));
+ () -> xmlParser.parse(ruleXmlAtomicFormula.getBytes(StandardCharsets.UTF_8)));
}
@Test
public void testXmlString_withNoRuleList() {
Map<String, String> atomicFormulaAttrs = new HashMap<>();
atomicFormulaAttrs.put("K", String.valueOf(AtomicFormula.PACKAGE_NAME));
- atomicFormulaAttrs.put("O", String.valueOf(AtomicFormula.EQ));
atomicFormulaAttrs.put("V", "com.app.test");
- String ruleXmlWithNoRuleList = generateTagWithAttribute(/* tag= */ "R",
- Collections.singletonMap("E", String.valueOf(Rule.DENY)),
- /* closed= */ false)
- + generateTagWithAttribute(/* tag= */ "OF",
- Collections.singletonMap("C", String.valueOf(OpenFormula.NOT)),
- /* closed= */ false)
- + generateTagWithAttribute(/* tag= */ "AF", atomicFormulaAttrs, /* closed= */ true)
- + "</OF>"
- + "</R>";
+ String ruleXmlWithNoRuleList =
+ generateTagWithAttribute(
+ /* tag= */ "R",
+ Collections.singletonMap("E", String.valueOf(Rule.DENY)),
+ /* closed= */ false)
+ + generateTagWithAttribute(
+ /* tag= */ "OF",
+ Collections.singletonMap("C", String.valueOf(CompoundFormula.NOT)),
+ /* closed= */ false)
+ + generateTagWithAttribute(
+ /* tag= */ "AF", atomicFormulaAttrs, /* closed= */ true)
+ + "</OF>"
+ + "</R>";
RuleParser xmlParser = new RuleXmlParser();
assertExpectException(
RuleParseException.class,
/* expectedExceptionMessageRegex */ "Rules must start with RuleList <RL> tag",
- () -> xmlParser.parse(ruleXmlWithNoRuleList));
+ () -> xmlParser.parse(ruleXmlWithNoRuleList.getBytes(StandardCharsets.UTF_8)));
}
@Test
public void testXmlStream_withNoRuleList() {
Map<String, String> atomicFormulaAttrs = new HashMap<>();
atomicFormulaAttrs.put("K", String.valueOf(AtomicFormula.PACKAGE_NAME));
- atomicFormulaAttrs.put("O", String.valueOf(AtomicFormula.EQ));
atomicFormulaAttrs.put("V", "com.app.test");
- String ruleXmlWithNoRuleList = generateTagWithAttribute(/* tag= */ "R",
- Collections.singletonMap("E", String.valueOf(Rule.DENY)),
- /* closed= */ false)
- + generateTagWithAttribute(/* tag= */ "OF",
- Collections.singletonMap("C", String.valueOf(OpenFormula.NOT)),
- /* closed= */ false)
- + generateTagWithAttribute(/* tag= */ "AF", atomicFormulaAttrs, /* closed= */ true)
- + "</OF>"
- + "</R>";
+ String ruleXmlWithNoRuleList =
+ generateTagWithAttribute(
+ /* tag= */ "R",
+ Collections.singletonMap("E", String.valueOf(Rule.DENY)),
+ /* closed= */ false)
+ + generateTagWithAttribute(
+ /* tag= */ "OF",
+ Collections.singletonMap("C", String.valueOf(CompoundFormula.NOT)),
+ /* closed= */ false)
+ + generateTagWithAttribute(
+ /* tag= */ "AF", atomicFormulaAttrs, /* closed= */ true)
+ + "</OF>"
+ + "</R>";
InputStream inputStream = new ByteArrayInputStream(ruleXmlWithNoRuleList.getBytes());
RuleParser xmlParser = new RuleXmlParser();
@@ -474,8 +626,8 @@
() -> xmlParser.parse(inputStream));
}
- private String generateTagWithAttribute(String tag, Map<String, String> attributeValues,
- boolean closed) {
+ private String generateTagWithAttribute(
+ String tag, Map<String, String> attributeValues, boolean closed) {
StringBuilder res = new StringBuilder("<");
res.append(tag);
for (String attribute : attributeValues.keySet()) {
diff --git a/services/tests/servicestests/src/com/android/server/integrity/serializer/RuleXmlSerializerTest.java b/services/tests/servicestests/src/com/android/server/integrity/serializer/RuleXmlSerializerTest.java
index a256271..5903b5a 100644
--- a/services/tests/servicestests/src/com/android/server/integrity/serializer/RuleXmlSerializerTest.java
+++ b/services/tests/servicestests/src/com/android/server/integrity/serializer/RuleXmlSerializerTest.java
@@ -20,13 +20,13 @@
import static org.junit.Assert.assertEquals;
-import androidx.annotation.NonNull;
+import android.content.integrity.AppInstallMetadata;
+import android.content.integrity.AtomicFormula;
+import android.content.integrity.CompoundFormula;
+import android.content.integrity.Formula;
+import android.content.integrity.Rule;
-import com.android.server.integrity.model.AppInstallMetadata;
-import com.android.server.integrity.model.AtomicFormula;
-import com.android.server.integrity.model.Formula;
-import com.android.server.integrity.model.OpenFormula;
-import com.android.server.integrity.model.Rule;
+import androidx.annotation.NonNull;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -34,10 +34,12 @@
import java.io.ByteArrayOutputStream;
import java.io.OutputStream;
+import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.Map;
+import java.util.Optional;
@RunWith(JUnit4.class)
public class RuleXmlSerializerTest {
@@ -48,219 +50,317 @@
RuleSerializer xmlSerializer = new RuleXmlSerializer();
String expectedRules = "<RL />";
- String actualRules = xmlSerializer.serialize(Collections.singletonList(rule));
+ byte[] actualRules =
+ xmlSerializer.serialize(
+ Collections.singletonList(rule), /* formatVersion= */ Optional.empty());
- assertEquals(expectedRules, actualRules);
+ assertEquals(expectedRules, new String(actualRules, StandardCharsets.UTF_8));
}
@Test
public void testXmlString_serializeMultipleRules_oneEmpty() throws Exception {
Rule rule1 = null;
- Rule rule2 = new Rule(
- new AtomicFormula.StringAtomicFormula(AtomicFormula.PACKAGE_NAME, "com.app.test"),
- Rule.DENY);
+ Rule rule2 =
+ new Rule(
+ new AtomicFormula.StringAtomicFormula(
+ AtomicFormula.PACKAGE_NAME,
+ "com.app.test",
+ /* isHashedValue= */ false),
+ Rule.DENY);
RuleSerializer xmlSerializer = new RuleXmlSerializer();
Map<String, String> packageNameAttrs = new LinkedHashMap<>();
packageNameAttrs.put("K", String.valueOf(AtomicFormula.PACKAGE_NAME));
packageNameAttrs.put("V", "com.app.test");
- String expectedRules = "<RL>"
- + generateTagWithAttribute(/* tag= */ "R",
- Collections.singletonMap("E", String.valueOf(Rule.DENY)),
- /* closed= */ false)
- + generateTagWithAttribute(/* tag= */ "AF", packageNameAttrs, /* closed= */ true)
- + "</R>"
- + "</RL>";
+ packageNameAttrs.put("H", "false");
+ String expectedRules =
+ "<RL>"
+ + generateTagWithAttribute(
+ /* tag= */ "R",
+ Collections.singletonMap("E", String.valueOf(Rule.DENY)),
+ /* closed= */ false)
+ + generateTagWithAttribute(
+ /* tag= */ "AF", packageNameAttrs, /* closed= */ true)
+ + "</R>"
+ + "</RL>";
- String actualRules = xmlSerializer.serialize(Arrays.asList(rule1, rule2));
+ byte[] actualRules =
+ xmlSerializer.serialize(
+ Arrays.asList(rule1, rule2), /* formatVersion= */ Optional.empty());
- assertEquals(expectedRules, actualRules);
+ assertEquals(expectedRules, new String(actualRules, StandardCharsets.UTF_8));
}
@Test
public void testXmlStream_serializeValidOpenFormula() throws Exception {
- Rule rule = new Rule(new OpenFormula(OpenFormula.NOT,
- Collections.singletonList(
- new AtomicFormula.StringAtomicFormula(AtomicFormula.PACKAGE_NAME,
- "com.app.test"))), Rule.DENY);
+ Rule rule =
+ new Rule(
+ new CompoundFormula(
+ CompoundFormula.NOT,
+ Collections.singletonList(
+ new AtomicFormula.StringAtomicFormula(
+ AtomicFormula.PACKAGE_NAME,
+ "com.app.test",
+ /* isHashedValue= */ false))),
+ Rule.DENY);
RuleSerializer xmlSerializer = new RuleXmlSerializer();
OutputStream outputStream = new ByteArrayOutputStream();
Map<String, String> packageNameAttrs = new LinkedHashMap<>();
packageNameAttrs.put("K", String.valueOf(AtomicFormula.PACKAGE_NAME));
packageNameAttrs.put("V", "com.app.test");
- String expectedRules = "<RL>"
- + generateTagWithAttribute(/* tag= */ "R",
- Collections.singletonMap("E", String.valueOf(Rule.DENY)),
- /* closed= */ false)
- + generateTagWithAttribute(/* tag= */ "OF",
- Collections.singletonMap("C", String.valueOf(OpenFormula.NOT)),
- /* closed= */ false)
- + generateTagWithAttribute(/* tag= */ "AF", packageNameAttrs, /* closed= */ true)
- + "</OF>"
- + "</R>"
- + "</RL>";
+ packageNameAttrs.put("H", "false");
+ String expectedRules =
+ "<RL>"
+ + generateTagWithAttribute(
+ /* tag= */ "R",
+ Collections.singletonMap("E", String.valueOf(Rule.DENY)),
+ /* closed= */ false)
+ + generateTagWithAttribute(
+ /* tag= */ "OF",
+ Collections.singletonMap("C", String.valueOf(CompoundFormula.NOT)),
+ /* closed= */ false)
+ + generateTagWithAttribute(
+ /* tag= */ "AF", packageNameAttrs, /* closed= */ true)
+ + "</OF>"
+ + "</R>"
+ + "</RL>";
- xmlSerializer.serialize(Collections.singletonList(rule), outputStream);
+ xmlSerializer.serialize(
+ Collections.singletonList(rule),
+ /* formatVersion= */ Optional.empty(),
+ outputStream);
- String actualRules = outputStream.toString();
- assertEquals(expectedRules, actualRules);
+ byte[] actualRules = outputStream.toString().getBytes(StandardCharsets.UTF_8);
+ assertEquals(expectedRules, new String(actualRules, StandardCharsets.UTF_8));
}
@Test
public void testXmlString_serializeValidOpenFormula_notConnector() throws Exception {
- Rule rule = new Rule(new OpenFormula(OpenFormula.NOT,
- Collections.singletonList(
- new AtomicFormula.StringAtomicFormula(AtomicFormula.PACKAGE_NAME,
- "com.app.test"))), Rule.DENY);
+ Rule rule =
+ new Rule(
+ new CompoundFormula(
+ CompoundFormula.NOT,
+ Collections.singletonList(
+ new AtomicFormula.StringAtomicFormula(
+ AtomicFormula.PACKAGE_NAME,
+ "com.app.test",
+ /* isHashedValue= */ false))),
+ Rule.DENY);
RuleSerializer xmlSerializer = new RuleXmlSerializer();
Map<String, String> packageNameAttrs = new LinkedHashMap<>();
packageNameAttrs.put("K", String.valueOf(AtomicFormula.PACKAGE_NAME));
packageNameAttrs.put("V", "com.app.test");
- String expectedRules = "<RL>"
- + generateTagWithAttribute(/* tag= */ "R",
- Collections.singletonMap("E", String.valueOf(Rule.DENY)),
- /* closed= */ false)
- + generateTagWithAttribute(/* tag= */ "OF",
- Collections.singletonMap("C", String.valueOf(OpenFormula.NOT)),
- /* closed= */ false)
- + generateTagWithAttribute(/* tag= */ "AF", packageNameAttrs, /* closed= */ true)
- + "</OF>"
- + "</R>"
- + "</RL>";
+ packageNameAttrs.put("H", "false");
+ String expectedRules =
+ "<RL>"
+ + generateTagWithAttribute(
+ /* tag= */ "R",
+ Collections.singletonMap("E", String.valueOf(Rule.DENY)),
+ /* closed= */ false)
+ + generateTagWithAttribute(
+ /* tag= */ "OF",
+ Collections.singletonMap("C", String.valueOf(CompoundFormula.NOT)),
+ /* closed= */ false)
+ + generateTagWithAttribute(
+ /* tag= */ "AF", packageNameAttrs, /* closed= */ true)
+ + "</OF>"
+ + "</R>"
+ + "</RL>";
- String actualRules = xmlSerializer.serialize(Collections.singletonList(rule));
+ byte[] actualRules =
+ xmlSerializer.serialize(
+ Collections.singletonList(rule), /* formatVersion= */ Optional.empty());
- assertEquals(expectedRules, actualRules);
+ assertEquals(expectedRules, new String(actualRules, StandardCharsets.UTF_8));
}
@Test
public void testXmlString_serializeValidOpenFormula_andConnector() throws Exception {
- Rule rule = new Rule(new OpenFormula(OpenFormula.AND,
- Arrays.asList(new AtomicFormula.StringAtomicFormula(AtomicFormula.PACKAGE_NAME,
- "com.app.test"),
- new AtomicFormula.StringAtomicFormula(AtomicFormula.APP_CERTIFICATE,
- "test_cert"))), Rule.DENY);
+ Rule rule =
+ new Rule(
+ new CompoundFormula(
+ CompoundFormula.AND,
+ Arrays.asList(
+ new AtomicFormula.StringAtomicFormula(
+ AtomicFormula.PACKAGE_NAME,
+ "com.app.test",
+ /* isHashedValue= */ false),
+ new AtomicFormula.StringAtomicFormula(
+ AtomicFormula.APP_CERTIFICATE,
+ "test_cert",
+ /* isHashedValue= */ false))),
+ Rule.DENY);
RuleSerializer xmlSerializer = new RuleXmlSerializer();
Map<String, String> packageNameAttrs = new LinkedHashMap<>();
packageNameAttrs.put("K", String.valueOf(AtomicFormula.PACKAGE_NAME));
packageNameAttrs.put("V", "com.app.test");
+ packageNameAttrs.put("H", "false");
Map<String, String> appCertificateAttrs = new LinkedHashMap<>();
appCertificateAttrs.put("K", String.valueOf(AtomicFormula.APP_CERTIFICATE));
appCertificateAttrs.put("V", "test_cert");
- String expectedRules = "<RL>"
- + generateTagWithAttribute(/* tag= */ "R",
- Collections.singletonMap("E", String.valueOf(Rule.DENY)),
- /* closed= */ false)
- + generateTagWithAttribute(/* tag= */ "OF",
- Collections.singletonMap("C", String.valueOf(OpenFormula.AND)),
- /* closed= */ false)
- + generateTagWithAttribute(/* tag= */ "AF", packageNameAttrs, /* closed= */ true)
- + generateTagWithAttribute(/* tag= */ "AF", appCertificateAttrs, /* closed= */ true)
- + "</OF>"
- + "</R>"
- + "</RL>";
+ appCertificateAttrs.put("H", "false");
+ String expectedRules =
+ "<RL>"
+ + generateTagWithAttribute(
+ /* tag= */ "R",
+ Collections.singletonMap("E", String.valueOf(Rule.DENY)),
+ /* closed= */ false)
+ + generateTagWithAttribute(
+ /* tag= */ "OF",
+ Collections.singletonMap("C", String.valueOf(CompoundFormula.AND)),
+ /* closed= */ false)
+ + generateTagWithAttribute(
+ /* tag= */ "AF", packageNameAttrs, /* closed= */ true)
+ + generateTagWithAttribute(
+ /* tag= */ "AF", appCertificateAttrs, /* closed= */ true)
+ + "</OF>"
+ + "</R>"
+ + "</RL>";
- String actualRules = xmlSerializer.serialize(Collections.singletonList(rule));
+ byte[] actualRules =
+ xmlSerializer.serialize(
+ Collections.singletonList(rule), /* formatVersion= */ Optional.empty());
- assertEquals(expectedRules, actualRules);
+ assertEquals(expectedRules, new String(actualRules, StandardCharsets.UTF_8));
}
@Test
public void testXmlString_serializeValidOpenFormula_orConnector() throws Exception {
- Rule rule = new Rule(new OpenFormula(OpenFormula.OR,
- Arrays.asList(new AtomicFormula.StringAtomicFormula(AtomicFormula.PACKAGE_NAME,
- "com.app.test"),
- new AtomicFormula.StringAtomicFormula(AtomicFormula.APP_CERTIFICATE,
- "test_cert"))), Rule.DENY);
+ Rule rule =
+ new Rule(
+ new CompoundFormula(
+ CompoundFormula.OR,
+ Arrays.asList(
+ new AtomicFormula.StringAtomicFormula(
+ AtomicFormula.PACKAGE_NAME,
+ "com.app.test",
+ /* isHashedValue= */ false),
+ new AtomicFormula.StringAtomicFormula(
+ AtomicFormula.APP_CERTIFICATE,
+ "test_cert",
+ /* isHashedValue= */ false))),
+ Rule.DENY);
RuleSerializer xmlSerializer = new RuleXmlSerializer();
Map<String, String> packageNameAttrs = new LinkedHashMap<>();
packageNameAttrs.put("K", String.valueOf(AtomicFormula.PACKAGE_NAME));
packageNameAttrs.put("V", "com.app.test");
+ packageNameAttrs.put("H", "false");
Map<String, String> appCertificateAttrs = new LinkedHashMap<>();
appCertificateAttrs.put("K", String.valueOf(AtomicFormula.APP_CERTIFICATE));
appCertificateAttrs.put("V", "test_cert");
- String expectedRules = "<RL>"
- + generateTagWithAttribute(/* tag= */ "R",
- Collections.singletonMap("E", String.valueOf(Rule.DENY)),
- /* closed= */ false)
- + generateTagWithAttribute(/* tag= */ "OF",
- Collections.singletonMap("C", String.valueOf(OpenFormula.OR)),
- /* closed= */ false)
- + generateTagWithAttribute(/* tag= */ "AF", packageNameAttrs, /* closed= */ true)
- + generateTagWithAttribute(/* tag= */ "AF", appCertificateAttrs, /* closed= */ true)
- + "</OF>"
- + "</R>"
- + "</RL>";
+ appCertificateAttrs.put("H", "false");
+ String expectedRules =
+ "<RL>"
+ + generateTagWithAttribute(
+ /* tag= */ "R",
+ Collections.singletonMap("E", String.valueOf(Rule.DENY)),
+ /* closed= */ false)
+ + generateTagWithAttribute(
+ /* tag= */ "OF",
+ Collections.singletonMap("C", String.valueOf(CompoundFormula.OR)),
+ /* closed= */ false)
+ + generateTagWithAttribute(
+ /* tag= */ "AF", packageNameAttrs, /* closed= */ true)
+ + generateTagWithAttribute(
+ /* tag= */ "AF", appCertificateAttrs, /* closed= */ true)
+ + "</OF>"
+ + "</R>"
+ + "</RL>";
- String actualRules = xmlSerializer.serialize(Collections.singletonList(rule));
+ byte[] actualRules =
+ xmlSerializer.serialize(
+ Collections.singletonList(rule), /* formatVersion= */ Optional.empty());
- assertEquals(expectedRules, actualRules);
+ assertEquals(expectedRules, new String(actualRules, StandardCharsets.UTF_8));
}
@Test
public void testXmlString_serializeValidAtomicFormula_stringValue() throws Exception {
- Rule rule = new Rule(
- new AtomicFormula.StringAtomicFormula(AtomicFormula.PACKAGE_NAME, "com.app.test"),
- Rule.DENY);
+ Rule rule =
+ new Rule(
+ new AtomicFormula.StringAtomicFormula(
+ AtomicFormula.PACKAGE_NAME,
+ "com.app.test",
+ /* isHashedValue= */ false),
+ Rule.DENY);
RuleSerializer xmlSerializer = new RuleXmlSerializer();
Map<String, String> packageNameAttrs = new LinkedHashMap<>();
packageNameAttrs.put("K", String.valueOf(AtomicFormula.PACKAGE_NAME));
packageNameAttrs.put("V", "com.app.test");
- String expectedRules = "<RL>"
- + generateTagWithAttribute(/* tag= */ "R",
- Collections.singletonMap("E", String.valueOf(Rule.DENY)),
- /* closed= */ false)
- + generateTagWithAttribute(/* tag= */ "AF", packageNameAttrs, /* closed= */ true)
- + "</R>"
- + "</RL>";
+ packageNameAttrs.put("H", "false");
+ String expectedRules =
+ "<RL>"
+ + generateTagWithAttribute(
+ /* tag= */ "R",
+ Collections.singletonMap("E", String.valueOf(Rule.DENY)),
+ /* closed= */ false)
+ + generateTagWithAttribute(
+ /* tag= */ "AF", packageNameAttrs, /* closed= */ true)
+ + "</R>"
+ + "</RL>";
- String actualRules = xmlSerializer.serialize(Collections.singletonList(rule));
+ byte[] actualRules =
+ xmlSerializer.serialize(
+ Collections.singletonList(rule), /* formatVersion= */ Optional.empty());
- assertEquals(expectedRules, actualRules);
+ assertEquals(expectedRules, new String(actualRules, StandardCharsets.UTF_8));
}
@Test
public void testXmlString_serializeValidAtomicFormula_integerValue() throws Exception {
- Rule rule = new Rule(
- new AtomicFormula.IntAtomicFormula(AtomicFormula.VERSION_CODE, AtomicFormula.EQ, 1),
- Rule.DENY);
+ Rule rule =
+ new Rule(
+ new AtomicFormula.IntAtomicFormula(
+ AtomicFormula.VERSION_CODE, AtomicFormula.EQ, 1),
+ Rule.DENY);
RuleSerializer xmlSerializer = new RuleXmlSerializer();
Map<String, String> versionCodeAttrs = new LinkedHashMap<>();
versionCodeAttrs.put("K", String.valueOf(AtomicFormula.VERSION_CODE));
versionCodeAttrs.put("O", String.valueOf(AtomicFormula.EQ));
versionCodeAttrs.put("V", "1");
- String expectedRules = "<RL>"
- + generateTagWithAttribute(/* tag= */ "R",
- Collections.singletonMap("E", String.valueOf(Rule.DENY)),
- /* closed= */ false)
- + generateTagWithAttribute(/* tag= */ "AF", versionCodeAttrs, /* closed= */ true)
- + "</R>"
- + "</RL>";
+ String expectedRules =
+ "<RL>"
+ + generateTagWithAttribute(
+ /* tag= */ "R",
+ Collections.singletonMap("E", String.valueOf(Rule.DENY)),
+ /* closed= */ false)
+ + generateTagWithAttribute(
+ /* tag= */ "AF", versionCodeAttrs, /* closed= */ true)
+ + "</R>"
+ + "</RL>";
- String actualRules = xmlSerializer.serialize(Collections.singletonList(rule));
+ byte[] actualRules =
+ xmlSerializer.serialize(
+ Collections.singletonList(rule), /* formatVersion= */ Optional.empty());
- assertEquals(expectedRules, actualRules);
+ assertEquals(expectedRules, new String(actualRules, StandardCharsets.UTF_8));
}
@Test
public void testXmlString_serializeValidAtomicFormula_booleanValue() throws Exception {
- Rule rule = new Rule(
- new AtomicFormula.BooleanAtomicFormula(AtomicFormula.PRE_INSTALLED, true),
- Rule.DENY);
+ Rule rule =
+ new Rule(
+ new AtomicFormula.BooleanAtomicFormula(AtomicFormula.PRE_INSTALLED, true),
+ Rule.DENY);
RuleSerializer xmlSerializer = new RuleXmlSerializer();
Map<String, String> preInstalledAttrs = new LinkedHashMap<>();
preInstalledAttrs.put("K", String.valueOf(AtomicFormula.PRE_INSTALLED));
preInstalledAttrs.put("V", "true");
- String expectedRules = "<RL>"
- + generateTagWithAttribute(/* tag= */ "R",
- Collections.singletonMap("E", String.valueOf(Rule.DENY)),
- /* closed= */ false)
- + generateTagWithAttribute(/* tag= */ "AF", preInstalledAttrs, /* closed= */ true)
- + "</R>"
- + "</RL>";
+ String expectedRules =
+ "<RL>"
+ + generateTagWithAttribute(
+ /* tag= */ "R",
+ Collections.singletonMap("E", String.valueOf(Rule.DENY)),
+ /* closed= */ false)
+ + generateTagWithAttribute(
+ /* tag= */ "AF", preInstalledAttrs, /* closed= */ true)
+ + "</R>"
+ + "</RL>";
- String actualRules = xmlSerializer.serialize(Collections.singletonList(rule));
+ byte[] actualRules =
+ xmlSerializer.serialize(
+ Collections.singletonList(rule), /* formatVersion= */ Optional.empty());
- assertEquals(expectedRules, actualRules);
+ assertEquals(expectedRules, new String(actualRules, StandardCharsets.UTF_8));
}
@Test
@@ -272,11 +372,14 @@
assertExpectException(
RuleSerializeException.class,
/* expectedExceptionMessageRegex */ "Invalid formula type",
- () -> xmlSerializer.serialize(Collections.singletonList(rule)));
+ () ->
+ xmlSerializer.serialize(
+ Collections.singletonList(rule),
+ /* formatVersion= */ Optional.empty()));
}
- private String generateTagWithAttribute(String tag, Map<String, String> attributeValues,
- boolean closed) {
+ private String generateTagWithAttribute(
+ String tag, Map<String, String> attributeValues, boolean closed) {
StringBuilder res = new StringBuilder("<");
res.append(tag);
for (String attribute : attributeValues.keySet()) {
@@ -298,6 +401,11 @@
}
@Override
+ public int getTag() {
+ return 0;
+ }
+
+ @Override
public int hashCode() {
return super.hashCode();
}
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/BaseLockSettingsServiceTests.java b/services/tests/servicestests/src/com/android/server/locksettings/BaseLockSettingsServiceTests.java
index 9863057..ed70fa6 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/BaseLockSettingsServiceTests.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/BaseLockSettingsServiceTests.java
@@ -16,10 +16,12 @@
package com.android.server.locksettings;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyBoolean;
-import static org.mockito.Matchers.anyInt;
-import static org.mockito.Matchers.eq;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -47,7 +49,9 @@
import android.os.storage.IStorageManager;
import android.os.storage.StorageManager;
import android.security.KeyStore;
-import android.test.AndroidTestCase;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.runner.AndroidJUnit4;
import com.android.internal.widget.ILockSettings;
import com.android.internal.widget.LockPatternUtils;
@@ -57,6 +61,9 @@
import com.android.server.locksettings.recoverablekeystore.RecoverableKeyStoreManager;
import com.android.server.wm.WindowManagerInternal;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.runner.RunWith;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
@@ -64,8 +71,8 @@
import java.util.ArrayList;
import java.util.Arrays;
-
-public abstract class BaseLockSettingsServiceTests extends AndroidTestCase {
+@RunWith(AndroidJUnit4.class)
+public abstract class BaseLockSettingsServiceTests {
protected static final int PRIMARY_USER_ID = 0;
protected static final int MANAGED_PROFILE_USER_ID = 12;
protected static final int TURNED_OFF_PROFILE_USER_ID = 17;
@@ -107,10 +114,8 @@
protected boolean mHasSecureLockScreen;
FakeSettings mSettings;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
-
+ @Before
+ public void setUp_baseServices() throws Exception {
mGateKeeperService = new FakeGateKeeperService();
mNotificationManager = mock(NotificationManager.class);
mUserManager = mock(UserManager.class);
@@ -135,11 +140,12 @@
LocalServices.addService(DevicePolicyManagerInternal.class, mDevicePolicyManagerInternal);
LocalServices.addService(WindowManagerInternal.class, mMockWindowManager);
- mContext = new MockLockSettingsContext(getContext(), mUserManager, mNotificationManager,
- mDevicePolicyManager, mock(StorageManager.class), mock(TrustManager.class),
- mock(KeyguardManager.class), mFingerprintManager, mFaceManager, mPackageManager);
+ mContext = new MockLockSettingsContext(InstrumentationRegistry.getContext(), mUserManager,
+ mNotificationManager, mDevicePolicyManager, mock(StorageManager.class),
+ mock(TrustManager.class), mock(KeyguardManager.class), mFingerprintManager,
+ mFaceManager, mPackageManager);
mStorage = new LockSettingsStorageTestable(mContext,
- new File(getContext().getFilesDir(), "locksettings"));
+ new File(InstrumentationRegistry.getContext().getFilesDir(), "locksettings"));
File storageDir = mStorage.mStorageDir;
if (storageDir.exists()) {
FileUtils.deleteContents(storageDir);
@@ -283,11 +289,10 @@
}).when(mFaceManager).remove(any(), eq(userId), any());
}
- @Override
- protected void tearDown() throws Exception {
- super.tearDown();
+ @After
+ public void tearDown_baseServices() throws Exception {
mStorage.closeDatabase();
- File db = getContext().getDatabasePath("locksettings.db");
+ File db = InstrumentationRegistry.getContext().getDatabasePath("locksettings.db");
assertTrue(!db.exists() || db.delete());
File storageDir = mStorage.mStorageDir;
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/CachedSyntheticPasswordTests.java b/services/tests/servicestests/src/com/android/server/locksettings/CachedSyntheticPasswordTests.java
index 5c54883..d1c2fd0 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/CachedSyntheticPasswordTests.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/CachedSyntheticPasswordTests.java
@@ -17,6 +17,7 @@
import static com.android.server.testutils.TestUtils.assertExpectException;
+import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.anyInt;
import static org.mockito.Mockito.atLeastOnce;
import static org.mockito.Mockito.verify;
@@ -26,10 +27,14 @@
import android.platform.test.annotations.Presubmit;
import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import com.android.internal.widget.LockscreenCredential;
import com.android.internal.widget.VerifyCredentialResponse;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import java.util.ArrayList;
@@ -42,11 +47,11 @@
*/
@SmallTest
@Presubmit
+@RunWith(AndroidJUnit4.class)
public class CachedSyntheticPasswordTests extends SyntheticPasswordTests {
- @Override
- protected void setUp() throws Exception {
- super.setUp();
+ @Before
+ public void enableSpCache() throws Exception {
enableSpCaching(true);
}
@@ -55,6 +60,7 @@
.canUserHaveUntrustedCredentialReset(anyInt())).thenReturn(enable);
}
+ @Test
public void testSyntheticPasswordClearCredentialUntrusted() throws RemoteException {
final LockscreenCredential password = newPassword("password");
final LockscreenCredential newPassword = newPassword("newpassword");
@@ -74,6 +80,7 @@
assertNotEquals(sid, mGateKeeperService.getSecureUserId(PRIMARY_USER_ID));
}
+ @Test
public void testSyntheticPasswordChangeCredentialUntrusted() throws RemoteException {
final LockscreenCredential password = newPassword("password");
final LockscreenCredential newPassword = newPassword("newpassword");
@@ -91,6 +98,7 @@
newPassword, 0, PRIMARY_USER_ID).getResponseCode());
}
+ @Test
public void testUntrustedCredentialChangeMaintainsAuthSecret() throws RemoteException {
final LockscreenCredential password = newPassword("password");
final LockscreenCredential newPassword = newPassword("newpassword");
@@ -111,6 +119,7 @@
assertEquals(1, secret.getAllValues().stream().distinct().count());
}
+ @Test
public void testUntrustedCredentialChangeBlockedIfSpNotCached() throws RemoteException {
final LockscreenCredential password = newPassword("password");
final LockscreenCredential newPassword = newPassword("newpassword");
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsServiceTests.java b/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsServiceTests.java
index 86ef31a..8c8edfa 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsServiceTests.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsServiceTests.java
@@ -21,6 +21,12 @@
import static com.android.internal.widget.LockPatternUtils.CREDENTIAL_TYPE_PATTERN;
import static com.android.internal.widget.LockPatternUtils.CREDENTIAL_TYPE_PIN;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.eq;
@@ -33,6 +39,7 @@
import android.service.gatekeeper.GateKeeperResponse;
import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import com.android.internal.widget.LockPatternUtils;
import com.android.internal.widget.LockscreenCredential;
@@ -40,47 +47,47 @@
import com.android.server.locksettings.FakeGateKeeperService.VerifyHandle;
import com.android.server.locksettings.LockSettingsStorage.CredentialHash;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
/**
- * runtest frameworks-services -c com.android.server.locksettings.LockSettingsServiceTests
+ * atest FrameworksServicesTests:LockSettingsServiceTests
*/
@SmallTest
@Presubmit
+@RunWith(AndroidJUnit4.class)
public class LockSettingsServiceTests extends BaseLockSettingsServiceTests {
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- }
-
- @Override
- protected void tearDown() throws Exception {
- super.tearDown();
- }
-
+ @Test
public void testCreatePasswordPrimaryUser() throws RemoteException {
testCreateCredential(PRIMARY_USER_ID, newPassword("password"));
}
+ @Test
public void testCreatePasswordFailsWithoutLockScreen() throws RemoteException {
testCreateCredentialFailsWithoutLockScreen(PRIMARY_USER_ID, newPassword("password"));
}
+ @Test
public void testCreatePatternPrimaryUser() throws RemoteException {
testCreateCredential(PRIMARY_USER_ID, newPattern("123456789"));
}
+ @Test
public void testCreatePatternFailsWithoutLockScreen() throws RemoteException {
testCreateCredentialFailsWithoutLockScreen(PRIMARY_USER_ID, newPattern("123456789"));
}
+ @Test
public void testChangePasswordPrimaryUser() throws RemoteException {
testChangeCredentials(PRIMARY_USER_ID, newPattern("78963214"), newPassword("asdfghjk"));
}
+ @Test
public void testChangePatternPrimaryUser() throws RemoteException {
testChangeCredentials(PRIMARY_USER_ID, newPassword("!£$%^&*(())"), newPattern("1596321"));
}
+ @Test
public void testChangePasswordFailPrimaryUser() throws RemoteException {
final long sid = 1234;
initializeStorageWithCredential(PRIMARY_USER_ID, newPassword("password"), sid);
@@ -90,6 +97,7 @@
assertVerifyCredentials(PRIMARY_USER_ID, newPassword("password"), sid);
}
+ @Test
public void testClearPasswordPrimaryUser() throws RemoteException {
initializeStorageWithCredential(PRIMARY_USER_ID, newPassword("password"), 1234);
assertTrue(mService.setLockCredential(nonePassword(), newPassword("password"),
@@ -98,6 +106,7 @@
assertEquals(0, mGateKeeperService.getSecureUserId(PRIMARY_USER_ID));
}
+ @Test
public void testManagedProfileUnifiedChallenge() throws RemoteException {
final LockscreenCredential firstUnifiedPassword = newPassword("pwd-1");
final LockscreenCredential secondUnifiedPassword = newPassword("pwd-2");
@@ -151,6 +160,7 @@
assertEquals(0, mGateKeeperService.getSecureUserId(TURNED_OFF_PROFILE_USER_ID));
}
+ @Test
public void testManagedProfileSeparateChallenge() throws RemoteException {
final LockscreenCredential primaryPassword = newPassword("primary");
final LockscreenCredential profilePassword = newPassword("profile");
@@ -199,6 +209,7 @@
assertEquals(profileSid, mGateKeeperService.getSecureUserId(MANAGED_PROFILE_USER_ID));
}
+ @Test
public void testSetLockCredential_forPrimaryUser_sendsCredentials() throws Exception {
assertTrue(mService.setLockCredential(
newPassword("password"),
@@ -211,6 +222,7 @@
PRIMARY_USER_ID);
}
+ @Test
public void testSetLockCredential_forProfileWithSeparateChallenge_sendsCredentials()
throws Exception {
assertTrue(mService.setLockCredential(
@@ -224,6 +236,7 @@
MANAGED_PROFILE_USER_ID);
}
+ @Test
public void testSetLockCredential_forProfileWithSeparateChallenge_updatesCredentials()
throws Exception {
initializeStorageWithCredential(
@@ -242,6 +255,7 @@
MANAGED_PROFILE_USER_ID);
}
+ @Test
public void testSetLockCredential_forProfileWithUnifiedChallenge_doesNotSendRandomCredential()
throws Exception {
mService.setSeparateProfileChallengeEnabled(MANAGED_PROFILE_USER_ID, false, null);
@@ -257,6 +271,7 @@
eq(CREDENTIAL_TYPE_PASSWORD), any(), eq(MANAGED_PROFILE_USER_ID));
}
+ @Test
public void
testSetLockCredential_forPrimaryUserWithUnifiedChallengeProfile_updatesBothCredentials()
throws Exception {
@@ -280,6 +295,7 @@
MANAGED_PROFILE_USER_ID);
}
+ @Test
public void
testSetLockCredential_forPrimaryUserWithUnifiedChallengeProfile_removesBothCredentials()
throws Exception {
@@ -298,6 +314,7 @@
.lockScreenSecretChanged(CREDENTIAL_TYPE_NONE, null, MANAGED_PROFILE_USER_ID);
}
+ @Test
public void testSetLockCredential_nullCredential_removeBiometrics() throws RemoteException {
initializeStorageWithCredential(
PRIMARY_USER_ID,
@@ -315,6 +332,7 @@
verify(mFaceManager).remove(any(), eq(MANAGED_PROFILE_USER_ID), any());
}
+ @Test
public void testSetLockCredential_forUnifiedToSeparateChallengeProfile_sendsNewCredentials()
throws Exception {
final LockscreenCredential parentPassword = newPassword("parentPassword");
@@ -333,6 +351,7 @@
MANAGED_PROFILE_USER_ID);
}
+ @Test
public void
testSetLockCredential_forSeparateToUnifiedChallengeProfile_doesNotSendRandomCredential()
throws Exception {
@@ -351,6 +370,7 @@
.lockScreenSecretChanged(anyInt(), any(), eq(MANAGED_PROFILE_USER_ID));
}
+ @Test
public void testVerifyCredential_forPrimaryUser_sendsCredentials() throws Exception {
final LockscreenCredential password = newPassword("password");
initializeStorageWithCredential(PRIMARY_USER_ID, password, 1234);
@@ -363,6 +383,7 @@
CREDENTIAL_TYPE_PASSWORD, password.getCredential(), PRIMARY_USER_ID);
}
+ @Test
public void testVerifyCredential_forProfileWithSeparateChallenge_sendsCredentials()
throws Exception {
final LockscreenCredential pattern = newPattern("12345");
@@ -380,8 +401,8 @@
CREDENTIAL_TYPE_PATTERN, pattern.getCredential(), MANAGED_PROFILE_USER_ID);
}
- public void
- testVerifyCredential_forPrimaryUserWithUnifiedChallengeProfile_sendsCredentialsForBoth()
+ @Test
+ public void verifyCredential_forPrimaryUserWithUnifiedChallengeProfile_sendsCredentialsForBoth()
throws Exception {
final LockscreenCredential pattern = newPattern("12345");
initializeStorageWithCredential(PRIMARY_USER_ID, pattern, 1234);
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsShellCommandTest.java b/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsShellCommandTest.java
index 8c2d172..2205694 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsShellCommandTest.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsShellCommandTest.java
@@ -24,7 +24,7 @@
import static junit.framework.Assert.assertEquals;
-import static org.mockito.Matchers.anyInt;
+import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsStorageTests.java b/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsStorageTests.java
index 7a18431..5f38a35 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsStorageTests.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsStorageTests.java
@@ -16,7 +16,13 @@
package com.android.server.locksettings;
-import static org.mockito.Matchers.eq;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -34,18 +40,24 @@
import android.os.UserManager;
import android.os.storage.StorageManager;
import android.platform.test.annotations.Presubmit;
-import android.test.AndroidTestCase;
import android.util.Log;
import android.util.Log.TerribleFailure;
import android.util.Log.TerribleFailureHandler;
+import androidx.test.InstrumentationRegistry;
import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import com.android.internal.widget.LockPatternUtils;
import com.android.server.PersistentDataBlockManagerInternal;
import com.android.server.locksettings.LockSettingsStorage.CredentialHash;
import com.android.server.locksettings.LockSettingsStorage.PersistentData;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
@@ -53,11 +65,12 @@
import java.util.concurrent.CountDownLatch;
/**
- * runtest frameworks-services -c com.android.server.locksettings.LockSettingsStorageTests
+ * atest FrameworksServicesTests:LockSettingsStorageTests
*/
@SmallTest
@Presubmit
-public class LockSettingsStorageTests extends AndroidTestCase {
+@RunWith(AndroidJUnit4.class)
+public class LockSettingsStorageTests {
private static final int SOME_USER_ID = 1034;
private final byte[] PASSWORD_0 = "thepassword0".getBytes();
private final byte[] PASSWORD_1 = "password1".getBytes();
@@ -71,11 +84,10 @@
private File mDb;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- mStorageDir = new File(getContext().getFilesDir(), "locksettings");
- mDb = getContext().getDatabasePath("locksettings.db");
+ @Before
+ public void setUp() throws Exception {
+ mStorageDir = new File(InstrumentationRegistry.getContext().getFilesDir(), "locksettings");
+ mDb = InstrumentationRegistry.getContext().getDatabasePath("locksettings.db");
assertTrue(mStorageDir.exists() || mStorageDir.mkdirs());
assertTrue(FileUtils.deleteContents(mStorageDir));
@@ -87,13 +99,14 @@
// User 3 is a profile of user 0.
when(mockUserManager.getProfileParent(eq(3))).thenReturn(new UserInfo(0, "name", 0));
- MockLockSettingsContext context = new MockLockSettingsContext(getContext(), mockUserManager,
+ MockLockSettingsContext context = new MockLockSettingsContext(
+ InstrumentationRegistry.getContext(), mockUserManager,
mock(NotificationManager.class), mock(DevicePolicyManager.class),
mock(StorageManager.class), mock(TrustManager.class), mock(KeyguardManager.class),
mock(FingerprintManager.class), mock(FaceManager.class),
mock(PackageManager.class));
mStorage = new LockSettingsStorageTestable(context,
- new File(getContext().getFilesDir(), "locksettings"));
+ new File(InstrumentationRegistry.getContext().getFilesDir(), "locksettings"));
mStorage.setDatabaseOnCreateCallback(new LockSettingsStorage.Callback() {
@Override
public void initialize(SQLiteDatabase db) {
@@ -102,18 +115,19 @@
});
}
- @Override
- protected void tearDown() throws Exception {
- super.tearDown();
+ @After
+ public void tearDown() throws Exception {
mStorage.closeDatabase();
}
+ @Test
public void testKeyValue_InitializeWorked() {
assertEquals("initialValue", mStorage.readKeyValue("initializedKey", "default", 0));
mStorage.clearCache();
assertEquals("initialValue", mStorage.readKeyValue("initializedKey", "default", 0));
}
+ @Test
public void testKeyValue_WriteThenRead() {
mStorage.writeKeyValue("key", "value", 0);
assertEquals("value", mStorage.readKeyValue("key", "default", 0));
@@ -121,11 +135,13 @@
assertEquals("value", mStorage.readKeyValue("key", "default", 0));
}
+ @Test
public void testKeyValue_DefaultValue() {
assertEquals("default", mStorage.readKeyValue("unititialized key", "default", 0));
assertEquals("default2", mStorage.readKeyValue("unititialized key", "default2", 0));
}
+ @Test
public void testKeyValue_Concurrency() {
final CountDownLatch latch = new CountDownLatch(1);
List<Thread> threads = new ArrayList<>();
@@ -161,6 +177,7 @@
assertEquals('5', mStorage.readKeyValue("key", "default", 0).charAt(0));
}
+ @Test
public void testKeyValue_CacheStarvedWriter() {
final CountDownLatch latch = new CountDownLatch(1);
List<Thread> threads = new ArrayList<>();
@@ -196,6 +213,7 @@
assertEquals("Cached value didn't match stored value", storage, cached);
}
+ @Test
public void testRemoveUser() {
mStorage.writeKeyValue("key", "value", 0);
writePasswordBytes(PASSWORD_0, 0);
@@ -213,10 +231,12 @@
assertPatternBytes(PATTERN_1, 1);
}
+ @Test
public void testCredential_Default() {
assertEquals(mStorage.readCredentialHash(0).type, LockPatternUtils.CREDENTIAL_TYPE_NONE);
}
+ @Test
public void testPassword_Write() {
writePasswordBytes(PASSWORD_0, 0);
@@ -225,6 +245,7 @@
assertPasswordBytes(PASSWORD_0, 0);
}
+ @Test
public void testPassword_WriteProfileWritesParent() {
writePasswordBytes(PASSWORD_0, 1);
writePasswordBytes(PASSWORD_1, 2);
@@ -236,6 +257,7 @@
assertPasswordBytes(PASSWORD_1, 2);
}
+ @Test
public void testLockType_WriteProfileWritesParent() {
writePasswordBytes(PASSWORD_0, 10);
writePatternBytes(PATTERN_0, 20);
@@ -251,6 +273,7 @@
mStorage.readCredentialHash(20).type);
}
+ @Test
public void testPassword_WriteParentWritesProfile() {
writePasswordBytes(PASSWORD_0, 2);
writePasswordBytes(PASSWORD_1, 1);
@@ -262,6 +285,7 @@
assertPasswordBytes(PASSWORD_0, 2);
}
+ @Test
public void testProfileLock_ReadWriteChildProfileLock() {
assertFalse(mStorage.hasChildProfileLock(20));
mStorage.writeChildProfileLock(20, PASSWORD_0);
@@ -272,6 +296,7 @@
assertTrue(mStorage.hasChildProfileLock(20));
}
+ @Test
public void testPattern_Write() {
writePatternBytes(PATTERN_0, 0);
@@ -280,6 +305,7 @@
assertPatternBytes(PATTERN_0, 0);
}
+ @Test
public void testPattern_WriteProfileWritesParent() {
writePatternBytes(PATTERN_0, 1);
writePatternBytes(PATTERN_1, 2);
@@ -291,6 +317,7 @@
assertPatternBytes(PATTERN_1, 2);
}
+ @Test
public void testPattern_WriteParentWritesProfile() {
writePatternBytes(PATTERN_1, 2);
writePatternBytes(PATTERN_0, 1);
@@ -302,6 +329,7 @@
assertPatternBytes(PATTERN_1, 2);
}
+ @Test
public void testPrefetch() {
mStorage.writeKeyValue("key", "toBeFetched", 0);
writePatternBytes(PATTERN_0, 0);
@@ -313,34 +341,39 @@
assertPatternBytes(PATTERN_0, 0);
}
+ @Test
public void testFileLocation_Owner() {
- LockSettingsStorage storage = new LockSettingsStorage(getContext());
+ LockSettingsStorage storage = new LockSettingsStorage(InstrumentationRegistry.getContext());
assertEquals("/data/system/gatekeeper.pattern.key", storage.getLockPatternFilename(0));
assertEquals("/data/system/gatekeeper.password.key", storage.getLockPasswordFilename(0));
}
+ @Test
public void testFileLocation_SecondaryUser() {
- LockSettingsStorage storage = new LockSettingsStorage(getContext());
+ LockSettingsStorage storage = new LockSettingsStorage(InstrumentationRegistry.getContext());
assertEquals("/data/system/users/1/gatekeeper.pattern.key", storage.getLockPatternFilename(1));
assertEquals("/data/system/users/1/gatekeeper.password.key", storage.getLockPasswordFilename(1));
}
+ @Test
public void testFileLocation_ProfileToSecondary() {
- LockSettingsStorage storage = new LockSettingsStorage(getContext());
+ LockSettingsStorage storage = new LockSettingsStorage(InstrumentationRegistry.getContext());
assertEquals("/data/system/users/2/gatekeeper.pattern.key", storage.getLockPatternFilename(2));
assertEquals("/data/system/users/2/gatekeeper.password.key", storage.getLockPasswordFilename(2));
}
+ @Test
public void testFileLocation_ProfileToOwner() {
- LockSettingsStorage storage = new LockSettingsStorage(getContext());
+ LockSettingsStorage storage = new LockSettingsStorage(InstrumentationRegistry.getContext());
assertEquals("/data/system/users/3/gatekeeper.pattern.key", storage.getLockPatternFilename(3));
assertEquals("/data/system/users/3/gatekeeper.password.key", storage.getLockPasswordFilename(3));
}
+ @Test
public void testSyntheticPasswordState() {
final byte[] data = {1,2,3,4};
mStorage.writeSyntheticPasswordState(10, 1234L, "state", data);
@@ -351,18 +384,21 @@
assertEquals(null, mStorage.readSyntheticPasswordState(10, 1234L, "state"));
}
+ @Test
public void testPersistentDataBlock_unavailable() {
mStorage.mPersistentDataBlockManager = null;
assertSame(PersistentData.NONE, mStorage.readPersistentDataBlock());
}
+ @Test
public void testPersistentDataBlock_empty() {
mStorage.mPersistentDataBlockManager = mock(PersistentDataBlockManagerInternal.class);
assertSame(PersistentData.NONE, mStorage.readPersistentDataBlock());
}
+ @Test
public void testPersistentDataBlock_withData() {
mStorage.mPersistentDataBlockManager = mock(PersistentDataBlockManagerInternal.class);
when(mStorage.mPersistentDataBlockManager.getFrpCredentialHandle())
@@ -377,6 +413,7 @@
assertArrayEquals(PAYLOAD, data.payload);
}
+ @Test
public void testPersistentDataBlock_exception() {
mStorage.mPersistentDataBlockManager = mock(PersistentDataBlockManagerInternal.class);
when(mStorage.mPersistentDataBlockManager.getFrpCredentialHandle())
@@ -384,6 +421,7 @@
assertSame(PersistentData.NONE, mStorage.readPersistentDataBlock());
}
+ @Test
public void testPersistentData_serializeUnserialize() {
byte[] serialized = PersistentData.toBytes(PersistentData.TYPE_SP, SOME_USER_ID,
DevicePolicyManager.PASSWORD_QUALITY_COMPLEX, PAYLOAD);
@@ -394,16 +432,19 @@
assertArrayEquals(PAYLOAD, deserialized.payload);
}
+ @Test
public void testPersistentData_unserializeNull() {
PersistentData deserialized = PersistentData.fromBytes(null);
assertSame(PersistentData.NONE, deserialized);
}
+ @Test
public void testPersistentData_unserializeEmptyArray() {
PersistentData deserialized = PersistentData.fromBytes(new byte[0]);
assertSame(PersistentData.NONE, deserialized);
}
+ @Test
public void testPersistentData_unserializeInvalid() {
assertNotNull(suppressAndReturnWtf(() -> {
PersistentData deserialized = PersistentData.fromBytes(new byte[]{5});
@@ -411,6 +452,7 @@
}));
}
+ @Test
public void testPersistentData_unserialize_version1() {
// This test ensures that we can read serialized VERSION_1 PersistentData even if we change
// the wire format in the future.
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/LockscreenFrpTest.java b/services/tests/servicestests/src/com/android/server/locksettings/LockscreenFrpTest.java
index df719b6d..27af9e2 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/LockscreenFrpTest.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/LockscreenFrpTest.java
@@ -22,22 +22,31 @@
import static com.android.internal.widget.LockPatternUtils.CREDENTIAL_TYPE_PIN;
import static com.android.internal.widget.LockPatternUtils.USER_FRP;
+import static org.junit.Assert.assertEquals;
+
import android.app.admin.DevicePolicyManager;
+import androidx.test.runner.AndroidJUnit4;
+
import com.android.internal.widget.VerifyCredentialResponse;
import com.android.server.locksettings.LockSettingsStorage.PersistentData;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
/** Test setting a lockscreen credential and then verify it under USER_FRP */
+@RunWith(AndroidJUnit4.class)
public class LockscreenFrpTest extends BaseLockSettingsServiceTests {
- @Override
- public void setUp() throws Exception {
- super.setUp();
+ @Before
+ public void setDeviceNotProvisioned() throws Exception {
// FRP credential can only be verified prior to provisioning
mSettings.setDeviceProvisioned(false);
}
+ @Test
public void testFrpCredential_setPin() {
mService.setLockCredential(newPin("1234"), nonePassword(), PRIMARY_USER_ID, false);
@@ -46,6 +55,7 @@
mService.verifyCredential(newPin("1234"), 0, USER_FRP).getResponseCode());
}
+ @Test
public void testFrpCredential_setPattern() {
mService.setLockCredential(newPattern("4321"), nonePassword(), PRIMARY_USER_ID, false);
@@ -54,6 +64,7 @@
mService.verifyCredential(newPattern("4321"), 0, USER_FRP).getResponseCode());
}
+ @Test
public void testFrpCredential_setPassword() {
mService.setLockCredential(newPassword("4321"), nonePassword(), PRIMARY_USER_ID, false);
@@ -62,6 +73,7 @@
mService.verifyCredential(newPassword("4321"), 0, USER_FRP).getResponseCode());
}
+ @Test
public void testFrpCredential_changeCredential() {
mService.setLockCredential(newPassword("1234"), nonePassword(), PRIMARY_USER_ID, false);
mService.setLockCredential(newPattern("5678"), newPassword("1234"), PRIMARY_USER_ID, false);
@@ -71,6 +83,7 @@
mService.verifyCredential(newPattern("5678"), 0, USER_FRP).getResponseCode());
}
+ @Test
public void testFrpCredential_removeCredential() {
mService.setLockCredential(newPassword("1234"), nonePassword(), PRIMARY_USER_ID, false);
assertEquals(CREDENTIAL_TYPE_PASSWORD, mService.getCredentialType(USER_FRP));
@@ -79,6 +92,7 @@
assertEquals(CREDENTIAL_TYPE_NONE, mService.getCredentialType(USER_FRP));
}
+ @Test
public void testFrpCredential_cannotVerifyAfterProvsioning() {
mService.setLockCredential(newPin("1234"), nonePassword(), PRIMARY_USER_ID, false);
@@ -87,6 +101,7 @@
mService.verifyCredential(newPin("1234"), 0, USER_FRP).getResponseCode());
}
+ @Test
public void testFrpCredential_legacyPinTypePersistentData() {
mService.setLockCredential(newPin("1234"), nonePassword(), PRIMARY_USER_ID, false);
PersistentData data = mStorage.readPersistentDataBlock();
@@ -102,6 +117,7 @@
}
+ @Test
public void testFrpCredential_legacyPasswordTypePersistentData() {
mService.setLockCredential(newPassword("1234"), nonePassword(), PRIMARY_USER_ID, false);
PersistentData data = mStorage.readPersistentDataBlock();
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/PasswordSlotManagerTests.java b/services/tests/servicestests/src/com/android/server/locksettings/PasswordSlotManagerTests.java
index 31526b5..0f24fb2 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/PasswordSlotManagerTests.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/PasswordSlotManagerTests.java
@@ -20,6 +20,12 @@
import android.test.AndroidTestCase;
import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
@@ -30,24 +36,22 @@
@SmallTest
@Presubmit
+@RunWith(AndroidJUnit4.class)
public class PasswordSlotManagerTests extends AndroidTestCase {
PasswordSlotManagerTestable mManager;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
-
+ @Before
+ public void setUp() throws Exception {
mManager = new PasswordSlotManagerTestable();
}
- @Override
- protected void tearDown() throws Exception {
- super.tearDown();
-
+ @After
+ public void tearDown() throws Exception {
mManager.cleanup();
}
+ @Test
public void testBasicSlotUse() throws Exception {
mManager.markSlotInUse(0);
mManager.markSlotInUse(1);
@@ -64,6 +68,7 @@
assertEquals(expected, mManager.getUsedSlots());
}
+ @Test
public void testMergeSlots() throws Exception {
// Add some slots from a different OS image.
mManager.setGsiImageNumber(1);
@@ -90,6 +95,7 @@
assertEquals(expected, mManager.getUsedSlots());
}
+ @Test
public void testSerialization() throws Exception {
mManager.markSlotInUse(0);
mManager.markSlotInUse(1);
@@ -109,6 +115,7 @@
assertEquals(expected, map);
}
+ @Test
public void testSaving() throws Exception {
mManager.markSlotInUse(0);
mManager.markSlotInUse(1);
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/SP800DeriveTests.java b/services/tests/servicestests/src/com/android/server/locksettings/SP800DeriveTests.java
index 29d0fc1..89b7ec8 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/SP800DeriveTests.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/SP800DeriveTests.java
@@ -16,16 +16,23 @@
package com.android.server.locksettings;
+import static org.junit.Assert.assertEquals;
+
import android.platform.test.annotations.Presubmit;
-import android.test.AndroidTestCase;
import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import com.android.internal.util.HexDump;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
@SmallTest
@Presubmit
-public class SP800DeriveTests extends AndroidTestCase {
+@RunWith(AndroidJUnit4.class)
+public class SP800DeriveTests {
+ @Test
public void testFixedInput() throws Exception {
// CAVP: https://csrc.nist.gov/projects/cryptographic-algorithm-validation-program/key-derivation
byte[] keyBytes = HexDump.hexStringToByteArray(
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/SyntheticPasswordTests.java b/services/tests/servicestests/src/com/android/server/locksettings/SyntheticPasswordTests.java
index 89a279c..4985848 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/SyntheticPasswordTests.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/SyntheticPasswordTests.java
@@ -22,6 +22,12 @@
import static com.android.internal.widget.LockPatternUtils.SYNTHETIC_PASSWORD_ENABLED_KEY;
import static com.android.internal.widget.LockPatternUtils.SYNTHETIC_PASSWORD_HANDLE_KEY;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.atLeastOnce;
import static org.mockito.Mockito.never;
@@ -35,6 +41,7 @@
import android.platform.test.annotations.Presubmit;
import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import com.android.internal.widget.LockscreenCredential;
import com.android.internal.widget.VerifyCredentialResponse;
@@ -42,31 +49,25 @@
import com.android.server.locksettings.SyntheticPasswordManager.AuthenticationToken;
import com.android.server.locksettings.SyntheticPasswordManager.PasswordData;
+import org.junit.Test;
+import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import java.util.ArrayList;
/**
- * runtest frameworks-services -c com.android.server.locksettings.SyntheticPasswordTests
+ * atest FrameworksServicesTests:SyntheticPasswordTests
*/
@SmallTest
@Presubmit
+@RunWith(AndroidJUnit4.class)
public class SyntheticPasswordTests extends BaseLockSettingsServiceTests {
public static final byte[] PAYLOAD = new byte[] {1, 2, -1, -2, 55};
public static final byte[] PAYLOAD2 = new byte[] {2, 3, -2, -3, 44, 1};
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- }
-
- @Override
- protected void tearDown() throws Exception {
- super.tearDown();
- }
-
+ @Test
public void testPasswordBasedSyntheticPassword() throws RemoteException {
final int USER_ID = 10;
final LockscreenCredential password = newPassword("user-password");
@@ -100,6 +101,7 @@
return mService.getLong(SYNTHETIC_PASSWORD_HANDLE_KEY, 0, userId) != 0;
}
+ @Test
public void testPasswordMigration() throws RemoteException {
final LockscreenCredential password = newPassword("testPasswordMigration-password");
@@ -131,6 +133,7 @@
assertTrue(mService.isSyntheticPasswordBasedCredential(userId));
}
+ @Test
public void testSyntheticPasswordChangeCredential() throws RemoteException {
final LockscreenCredential password = newPassword("password");
final LockscreenCredential newPassword = newPassword("newpassword");
@@ -144,6 +147,7 @@
assertEquals(sid, mGateKeeperService.getSecureUserId(PRIMARY_USER_ID));
}
+ @Test
public void testSyntheticPasswordVerifyCredential() throws RemoteException {
LockscreenCredential password = newPassword("password");
LockscreenCredential badPassword = newPassword("badpassword");
@@ -158,6 +162,7 @@
.getResponseCode());
}
+ @Test
public void testSyntheticPasswordClearCredential() throws RemoteException {
LockscreenCredential password = newPassword("password");
LockscreenCredential badPassword = newPassword("newpassword");
@@ -177,6 +182,7 @@
assertNotEquals(sid, mGateKeeperService.getSecureUserId(PRIMARY_USER_ID));
}
+ @Test
public void testSyntheticPasswordChangeCredentialKeepsAuthSecret() throws RemoteException {
LockscreenCredential password = newPassword("password");
LockscreenCredential badPassword = newPassword("new");
@@ -193,6 +199,7 @@
assertEquals(1, secret.getAllValues().stream().distinct().count());
}
+ @Test
public void testSyntheticPasswordVerifyPassesPrimaryUserAuthSecret() throws RemoteException {
LockscreenCredential password = newPassword("password");
LockscreenCredential newPassword = newPassword("new");
@@ -205,6 +212,7 @@
verify(mAuthSecretService).primaryUserCredential(any(ArrayList.class));
}
+ @Test
public void testSecondaryUserDoesNotPassAuthSecret() throws RemoteException {
LockscreenCredential password = newPassword("password");
@@ -215,12 +223,14 @@
verify(mAuthSecretService, never()).primaryUserCredential(any(ArrayList.class));
}
+ @Test
public void testNoSyntheticPasswordOrCredentialDoesNotPassAuthSecret() throws RemoteException {
mService.onUnlockUser(PRIMARY_USER_ID);
flushHandlerTasks();
verify(mAuthSecretService, never()).primaryUserCredential(any(ArrayList.class));
}
+ @Test
public void testSyntheticPasswordAndCredentialDoesNotPassAuthSecret() throws RemoteException {
LockscreenCredential password = newPassword("passwordForASyntheticPassword");
initializeCredentialUnderSP(password, PRIMARY_USER_ID);
@@ -231,6 +241,7 @@
verify(mAuthSecretService, never()).primaryUserCredential(any(ArrayList.class));
}
+ @Test
public void testSyntheticPasswordButNoCredentialPassesAuthSecret() throws RemoteException {
LockscreenCredential password = newPassword("getASyntheticPassword");
initializeCredentialUnderSP(password, PRIMARY_USER_ID);
@@ -242,6 +253,7 @@
verify(mAuthSecretService).primaryUserCredential(any(ArrayList.class));
}
+ @Test
public void testManagedProfileUnifiedChallengeMigration() throws RemoteException {
LockscreenCredential UnifiedPassword = newPassword("unified-pwd");
disableSyntheticPassword();
@@ -275,6 +287,7 @@
assertTrue(hasSyntheticPassword(MANAGED_PROFILE_USER_ID));
}
+ @Test
public void testManagedProfileSeparateChallengeMigration() throws RemoteException {
LockscreenCredential primaryPassword = newPassword("primary");
LockscreenCredential profilePassword = newPassword("profile");
@@ -316,6 +329,7 @@
assertTrue(hasSyntheticPassword(MANAGED_PROFILE_USER_ID));
}
+ @Test
public void testTokenBasedResetPassword() throws RemoteException {
LockscreenCredential password = newPassword("password");
LockscreenCredential pattern = newPattern("123654");
@@ -350,6 +364,7 @@
assertArrayEquals(storageKey, mStorageManager.getUserUnlockToken(PRIMARY_USER_ID));
}
+ @Test
public void testTokenBasedClearPassword() throws RemoteException {
LockscreenCredential password = newPassword("password");
LockscreenCredential pattern = newPattern("123654");
@@ -374,6 +389,7 @@
assertArrayEquals(storageKey, mStorageManager.getUserUnlockToken(PRIMARY_USER_ID));
}
+ @Test
public void testTokenBasedResetPasswordAfterCredentialChanges() throws RemoteException {
LockscreenCredential password = newPassword("password");
LockscreenCredential pattern = newPattern("123654");
@@ -398,6 +414,7 @@
assertArrayEquals(storageKey, mStorageManager.getUserUnlockToken(PRIMARY_USER_ID));
}
+ @Test
public void testEscrowTokenActivatedImmediatelyIfNoUserPasswordNeedsMigration()
throws RemoteException {
final byte[] token = "some-high-entropy-secure-token".getBytes();
@@ -408,6 +425,7 @@
assertTrue(hasSyntheticPassword(PRIMARY_USER_ID));
}
+ @Test
public void testEscrowTokenActivatedImmediatelyIfNoUserPasswordNoMigration()
throws RemoteException {
final byte[] token = "some-high-entropy-secure-token".getBytes();
@@ -424,6 +442,7 @@
assertTrue(hasSyntheticPassword(PRIMARY_USER_ID));
}
+ @Test
public void testEscrowTokenActivatedLaterWithUserPasswordNeedsMigration()
throws RemoteException {
byte[] token = "some-high-entropy-secure-token".getBytes();
@@ -444,6 +463,7 @@
assertTrue(mLocalService.isEscrowTokenActive(handle, PRIMARY_USER_ID));
}
+ @Test
public void testEscrowTokenCannotBeActivatedOnUnmanagedUser() {
byte[] token = "some-high-entropy-secure-token".getBytes();
when(mUserManagerInternal.isDeviceManaged()).thenReturn(false);
@@ -456,6 +476,7 @@
} catch (SecurityException expected) { }
}
+ @Test
public void testSetLockCredentialWithTokenFailsWithoutLockScreen() throws Exception {
LockscreenCredential password = newPassword("password");
LockscreenCredential pattern = newPattern("123654");
@@ -483,6 +504,7 @@
assertEquals(CREDENTIAL_TYPE_NONE, mService.getCredentialType(PRIMARY_USER_ID));
}
+ @Test
public void testGetHashFactorPrimaryUser() throws RemoteException {
LockscreenCredential password = newPassword("password");
mService.setLockCredential(password, nonePassword(), PRIMARY_USER_ID, false);
@@ -496,6 +518,7 @@
assertArrayEquals(hashFactor, newHashFactor);
}
+ @Test
public void testGetHashFactorManagedProfileUnifiedChallenge() throws RemoteException {
LockscreenCredential pattern = newPattern("1236");
mService.setLockCredential(pattern, nonePassword(), PRIMARY_USER_ID, false);
@@ -503,6 +526,7 @@
assertNotNull(mService.getHashFactor(null, MANAGED_PROFILE_USER_ID));
}
+ @Test
public void testGetHashFactorManagedProfileSeparateChallenge() throws RemoteException {
LockscreenCredential primaryPassword = newPassword("primary");
LockscreenCredential profilePassword = newPassword("profile");
@@ -513,6 +537,7 @@
mService.getHashFactor(profilePassword, MANAGED_PROFILE_USER_ID));
}
+ @Test
public void testPasswordData_serializeDeserialize() {
PasswordData data = new PasswordData();
data.scryptN = 11;
@@ -532,6 +557,7 @@
assertArrayEquals(PAYLOAD2, deserialized.passwordHandle);
}
+ @Test
public void testPasswordData_deserialize() {
// Test that we can deserialize existing PasswordData and don't inadvertently change the
// wire format.
@@ -555,6 +581,7 @@
assertArrayEquals(PAYLOAD2, deserialized.passwordHandle);
}
+ @Test
public void testGsiDisablesAuthSecret() throws RemoteException {
mGsiService.setIsGsiRunning(true);
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/WeaverBasedSyntheticPasswordTests.java b/services/tests/servicestests/src/com/android/server/locksettings/WeaverBasedSyntheticPasswordTests.java
index abbf016..a3ac515 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/WeaverBasedSyntheticPasswordTests.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/WeaverBasedSyntheticPasswordTests.java
@@ -3,15 +3,18 @@
import android.platform.test.annotations.Presubmit;
import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Before;
+import org.junit.runner.RunWith;
@SmallTest
@Presubmit
+@RunWith(AndroidJUnit4.class)
public class WeaverBasedSyntheticPasswordTests extends SyntheticPasswordTests {
- @Override
- protected void setUp() throws Exception {
- super.setUp();
+ @Before
+ public void enableWeaver() throws Exception {
mSpManager.enableWeaver();
}
-
}
diff --git a/services/tests/servicestests/src/com/android/server/pm/ApexManagerTest.java b/services/tests/servicestests/src/com/android/server/pm/ApexManagerTest.java
index 6bb4202..178f38a 100644
--- a/services/tests/servicestests/src/com/android/server/pm/ApexManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/pm/ApexManagerTest.java
@@ -217,11 +217,11 @@
}
@Test
- public void testAbortActiveSession_remoteException() throws RemoteException {
- doThrow(RemoteException.class).when(mApexService).abortActiveSession();
+ public void testRevertActiveSessions_remoteException() throws RemoteException {
+ doThrow(RemoteException.class).when(mApexService).revertActiveSessions();
try {
- assertThat(mApexManager.abortActiveSession()).isFalse();
+ assertThat(mApexManager.revertActiveSessions()).isFalse();
} catch (Exception e) {
throw new AssertionError("ApexManager should not raise Exception");
}
diff --git a/services/tests/servicestests/src/com/android/server/pm/SELinuxMMACTest.java b/services/tests/servicestests/src/com/android/server/pm/SELinuxMMACTest.java
new file mode 100644
index 0000000..4b7dd36
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/pm/SELinuxMMACTest.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.pm;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.core.Is.is;
+import static org.mockito.Mockito.when;
+
+import android.content.pm.PackageParser;
+import android.platform.test.annotations.Presubmit;
+
+import com.android.server.compat.PlatformCompat;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnitRunner;
+
+
+/**
+ * {@link SELinuxMMAC} tests.
+ */
+@RunWith(MockitoJUnitRunner.class)
+@Presubmit
+public class SELinuxMMACTest {
+
+ private static final String PACKAGE_NAME = "my.package";
+ private static final int OPT_IN_VERSION = android.os.Build.VERSION_CODES.R;
+
+ @Mock
+ PlatformCompat mMockCompatibility;
+
+ PackageParser.Package mPkg;
+
+ @Before
+ public void setUp() {
+ mPkg = new PackageParser.Package(PACKAGE_NAME);
+ mPkg.applicationInfo.targetSdkVersion = 28;
+ }
+
+ @Test
+ public void getSeInfoOptInToLatest() {
+ when(mMockCompatibility.isChangeEnabled(SELinuxMMAC.SELINUX_LATEST_CHANGES,
+ mPkg.applicationInfo)).thenReturn(true);
+ assertThat(SELinuxMMAC.getSeInfo(mPkg, null, mMockCompatibility),
+ is("default:targetSdkVersion=" + OPT_IN_VERSION));
+ }
+
+ @Test
+ public void getSeInfoNoOptIn() {
+ when(mMockCompatibility.isChangeEnabled(SELinuxMMAC.SELINUX_LATEST_CHANGES,
+ mPkg.applicationInfo)).thenReturn(false);
+ assertThat(SELinuxMMAC.getSeInfo(mPkg, null, mMockCompatibility),
+ is("default:targetSdkVersion=28"));
+ }
+
+ @Test
+ public void getSeInfoNoOptInButAlreadyR() {
+ mPkg.applicationInfo.targetSdkVersion = OPT_IN_VERSION;
+ when(mMockCompatibility.isChangeEnabled(SELinuxMMAC.SELINUX_LATEST_CHANGES,
+ mPkg.applicationInfo)).thenReturn(false);
+ assertThat(SELinuxMMAC.getSeInfo(mPkg, null, mMockCompatibility),
+ is("default:targetSdkVersion=" + OPT_IN_VERSION));
+ }
+}
diff --git a/services/tests/servicestests/src/com/android/server/pm/ScanTests.java b/services/tests/servicestests/src/com/android/server/pm/ScanTests.java
index 3ea3b3c..74ef034 100644
--- a/services/tests/servicestests/src/com/android/server/pm/ScanTests.java
+++ b/services/tests/servicestests/src/com/android/server/pm/ScanTests.java
@@ -48,6 +48,8 @@
import android.platform.test.annotations.Presubmit;
import android.util.Pair;
+import com.android.server.compat.PlatformCompat;
+
import org.hamcrest.BaseMatcher;
import org.hamcrest.Description;
import org.hamcrest.Matcher;
@@ -71,12 +73,15 @@
@Mock
UserManagerInternal mMockUserManager;
@Mock
+ PlatformCompat mMockCompatibility;
+ @Mock
PackageManagerService.Injector mMockInjector;
@Before
public void setupInjector() {
when(mMockInjector.getAbiHelper()).thenReturn(mMockPackageAbiHelper);
when(mMockInjector.getUserManagerInternal()).thenReturn(mMockUserManager);
+ when(mMockInjector.getCompatibility()).thenReturn(mMockCompatibility);
}
@Before
diff --git a/services/tests/servicestests/src/com/android/server/pm/UserManagerTest.java b/services/tests/servicestests/src/com/android/server/pm/UserManagerTest.java
index d071927..dee79bb 100644
--- a/services/tests/servicestests/src/com/android/server/pm/UserManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/pm/UserManagerTest.java
@@ -263,6 +263,19 @@
}
@MediumTest
+ public void testFindExistingGuest_guestExists() throws Exception {
+ UserInfo userInfo1 = createUser("Guest", UserInfo.FLAG_GUEST);
+ UserInfo foundGuest = mUserManager.findCurrentGuestUser();
+ assertNotNull(foundGuest);
+ }
+
+ @SmallTest
+ public void testFindExistingGuest_guestDoesNotExist() throws Exception {
+ UserInfo foundGuest = mUserManager.findCurrentGuestUser();
+ assertNull(foundGuest);
+ }
+
+ @MediumTest
public void testSetUserAdmin() throws Exception {
UserInfo userInfo = createUser("SecondaryUser", /*flags=*/ 0);
@@ -703,6 +716,21 @@
assertEquals(canBeCreatedCount, created.get());
}
+ @MediumTest
+ public void testGetUserHandles_createNewUser_shouldFindNewUser() {
+ UserInfo user = createUser("Guest 1", UserManager.USER_TYPE_FULL_GUEST, /*flags*/ 0);
+
+ boolean found = false;
+ List<UserHandle> userHandles = mUserManager.getUserHandles(/* excludeDying= */ true);
+ for (UserHandle userHandle: userHandles) {
+ if (userHandle.getIdentifier() == user.id) {
+ found = true;
+ }
+ }
+
+ assertTrue(found);
+ }
+
private boolean isPackageInstalledForUser(String packageName, int userId) {
try {
return mPackageManager.getPackageInfoAsUser(packageName, 0, userId) != null;
diff --git a/services/tests/servicestests/src/com/android/server/pm/UserRestrictionsUtilsTest.java b/services/tests/servicestests/src/com/android/server/pm/UserRestrictionsUtilsTest.java
index 2cc5323..1a630ff 100644
--- a/services/tests/servicestests/src/com/android/server/pm/UserRestrictionsUtilsTest.java
+++ b/services/tests/servicestests/src/com/android/server/pm/UserRestrictionsUtilsTest.java
@@ -122,13 +122,15 @@
final Bundle local = new Bundle();
final Bundle global = new Bundle();
- UserRestrictionsUtils.sortToGlobalAndLocal(null, false /* isDeviceOwner */,
- UserManagerInternal.CAMERA_NOT_DISABLED, global, local);
+ UserRestrictionsUtils.sortToGlobalAndLocal(null,
+ UserManagerInternal.OWNER_TYPE_PROFILE_OWNER,
+ global, local);
assertEquals(0, global.size());
assertEquals(0, local.size());
- UserRestrictionsUtils.sortToGlobalAndLocal(Bundle.EMPTY, false /* isDeviceOwner */,
- UserManagerInternal.CAMERA_NOT_DISABLED, global, local);
+ UserRestrictionsUtils.sortToGlobalAndLocal(Bundle.EMPTY,
+ UserManagerInternal.OWNER_TYPE_PROFILE_OWNER,
+ global, local);
assertEquals(0, global.size());
assertEquals(0, local.size());
@@ -140,8 +142,10 @@
UserManager.DISALLOW_CONFIG_TETHERING,
UserManager.DISALLOW_OUTGOING_BEAM,
UserManager.DISALLOW_APPS_CONTROL,
- UserManager.ENSURE_VERIFY_APPS
- ), true /* isDeviceOwner */, UserManagerInternal.CAMERA_NOT_DISABLED, global, local);
+ UserManager.ENSURE_VERIFY_APPS,
+ UserManager.DISALLOW_CAMERA
+ ), UserManagerInternal.OWNER_TYPE_DEVICE_OWNER,
+ global, local);
assertRestrictions(newRestrictions(
@@ -154,7 +158,10 @@
// These can only be set by DO.
UserManager.DISALLOW_USB_FILE_TRANSFER,
- UserManager.DISALLOW_CONFIG_TETHERING
+ UserManager.DISALLOW_CONFIG_TETHERING,
+
+ // This can be set by DO or PO of organisation owned device
+ UserManager.DISALLOW_CAMERA
), global);
assertRestrictions(newRestrictions(
@@ -174,8 +181,10 @@
UserManager.DISALLOW_CONFIG_TETHERING,
UserManager.DISALLOW_OUTGOING_BEAM,
UserManager.DISALLOW_APPS_CONTROL,
- UserManager.ENSURE_VERIFY_APPS
- ), false /* isDeviceOwner */, UserManagerInternal.CAMERA_NOT_DISABLED, global, local);
+ UserManager.ENSURE_VERIFY_APPS,
+ UserManager.DISALLOW_CAMERA
+ ), UserManagerInternal.OWNER_TYPE_PROFILE_OWNER,
+ global, local);
assertRestrictions(newRestrictions(
// This one is global no matter who sets it.
@@ -193,23 +202,47 @@
// These can only be set by DO.
UserManager.DISALLOW_USB_FILE_TRANSFER,
- UserManager.DISALLOW_CONFIG_TETHERING
+ UserManager.DISALLOW_CONFIG_TETHERING,
+
+ // This can be set by DO or PO of organisation owned device
+ UserManager.DISALLOW_CAMERA
), local);
+ local.clear();
+ global.clear();
+
+ // Restrictions set by PO of organisation owned device
+ UserRestrictionsUtils.sortToGlobalAndLocal(newRestrictions(
+ UserManager.DISALLOW_CONFIG_DATE_TIME
+ ), UserManagerInternal.OWNER_TYPE_PROFILE_OWNER_OF_ORGANIZATION_OWNED_DEVICE,
+ global, local);
+
+ assertRestrictions(newRestrictions(
+ // This user restriction is global when set by PO of org owned device
+ UserManager.DISALLOW_CONFIG_DATE_TIME
+ ), global);
+ assertEquals(0, local.size());
}
public void testSortToLocalAndGlobalWithCameraDisabled() {
final Bundle local = new Bundle();
final Bundle global = new Bundle();
- UserRestrictionsUtils.sortToGlobalAndLocal(Bundle.EMPTY, false,
- UserManagerInternal.CAMERA_DISABLED_GLOBALLY, global, local);
+ UserRestrictionsUtils.sortToGlobalAndLocal(newRestrictions(UserManager.DISALLOW_CAMERA),
+ UserManagerInternal.OWNER_TYPE_DEVICE_OWNER, global, local);
assertRestrictions(newRestrictions(UserManager.DISALLOW_CAMERA), global);
assertEquals(0, local.size());
global.clear();
- UserRestrictionsUtils.sortToGlobalAndLocal(Bundle.EMPTY, false,
- UserManagerInternal.CAMERA_DISABLED_LOCALLY, global, local);
+ UserRestrictionsUtils.sortToGlobalAndLocal(newRestrictions(UserManager.DISALLOW_CAMERA),
+ UserManagerInternal.OWNER_TYPE_PROFILE_OWNER_OF_ORGANIZATION_OWNED_DEVICE, global,
+ local);
+ assertRestrictions(newRestrictions(UserManager.DISALLOW_CAMERA), global);
+ assertEquals(0, local.size());
+ global.clear();
+
+ UserRestrictionsUtils.sortToGlobalAndLocal(newRestrictions(UserManager.DISALLOW_CAMERA),
+ UserManagerInternal.OWNER_TYPE_PROFILE_OWNER, global, local);
assertEquals(0, global.size());
assertRestrictions(newRestrictions(UserManager.DISALLOW_CAMERA), local);
}
diff --git a/services/tests/servicestests/src/com/android/server/pm/UserSystemPackageInstallerTest.java b/services/tests/servicestests/src/com/android/server/pm/UserSystemPackageInstallerTest.java
index f492932..790f2b4 100644
--- a/services/tests/servicestests/src/com/android/server/pm/UserSystemPackageInstallerTest.java
+++ b/services/tests/servicestests/src/com/android/server/pm/UserSystemPackageInstallerTest.java
@@ -16,15 +16,15 @@
package com.android.server.pm;
-import static android.content.pm.UserInfo.FLAG_FULL;
-import static android.content.pm.UserInfo.FLAG_GUEST;
-import static android.content.pm.UserInfo.FLAG_MANAGED_PROFILE;
-import static android.content.pm.UserInfo.FLAG_SYSTEM;
+import static android.os.UserManager.USER_TYPE_FULL_GUEST;
+import static android.os.UserManager.USER_TYPE_FULL_SECONDARY;
+import static android.os.UserManager.USER_TYPE_PROFILE_MANAGED;
import static com.android.server.pm.UserSystemPackageInstaller.PACKAGE_WHITELIST_MODE_PROP;
import static com.android.server.pm.UserSystemPackageInstaller.USER_TYPE_PACKAGE_WHITELIST_MODE_DEVICE_DEFAULT;
import static com.android.server.pm.UserSystemPackageInstaller.USER_TYPE_PACKAGE_WHITELIST_MODE_DISABLE;
import static com.android.server.pm.UserSystemPackageInstaller.USER_TYPE_PACKAGE_WHITELIST_MODE_ENFORCE;
+import static com.android.server.pm.UserSystemPackageInstaller.USER_TYPE_PACKAGE_WHITELIST_MODE_IGNORE_OTA;
import static com.android.server.pm.UserSystemPackageInstaller.USER_TYPE_PACKAGE_WHITELIST_MODE_IMPLICIT_WHITELIST;
import static com.android.server.pm.UserSystemPackageInstaller.USER_TYPE_PACKAGE_WHITELIST_MODE_LOG;
@@ -98,7 +98,8 @@
LocalServices.removeServiceForTest(UserManagerInternal.class);
UserManagerService ums = new UserManagerService(InstrumentationRegistry.getContext());
- mUserSystemPackageInstaller = new UserSystemPackageInstaller(ums);
+ ArrayMap<String, UserTypeDetails> userTypes = UserTypeFactory.getUserTypes();
+ mUserSystemPackageInstaller = new UserSystemPackageInstaller(ums, userTypes);
mContext = InstrumentationRegistry.getTargetContext();
}
@@ -130,9 +131,10 @@
public ArrayMap<String, Set<String>> getAndClearPackageToUserTypeWhitelist() {
ArrayMap<String, Set<String>> r = new ArrayMap<>();
r.put("com.android.package1", new ArraySet<>(Arrays.asList(
- "PROFILE", "SYSTEM", "GUEST", "FULL", "invalid-garbage1")));
+ "PROFILE", "SYSTEM", USER_TYPE_FULL_GUEST, "invalid-garbage1")));
r.put("com.android.package2", new ArraySet<>(Arrays.asList(
- "MANAGED_PROFILE")));
+ USER_TYPE_PROFILE_MANAGED)));
+ r.put("com.android.package3", new ArraySet<>(Arrays.asList("FULL")));
return r;
}
@@ -140,18 +142,46 @@
public ArrayMap<String, Set<String>> getAndClearPackageToUserTypeBlacklist() {
ArrayMap<String, Set<String>> r = new ArrayMap<>();
r.put("com.android.package1", new ArraySet<>(Arrays.asList(
- "FULL", "RESTRICTED", "invalid-garbage2")));
+ USER_TYPE_PROFILE_MANAGED, "invalid-garbage2")));
+ // com.android.package2 has nothing blacklisted
+ r.put("com.android.package3", new ArraySet<>(Arrays.asList("SYSTEM")));
return r;
}
};
- final ArrayMap<String, Integer> expectedOutput = getNewPackageToWhitelistedFlagsMap();
- expectedOutput.put("com.android.package1",
- UserInfo.FLAG_PROFILE | FLAG_SYSTEM | FLAG_GUEST);
- expectedOutput.put("com.android.package2",
- UserInfo.FLAG_MANAGED_PROFILE);
+ final ArrayMap<String, UserTypeDetails> userTypes = UserTypeFactory.getUserTypes();
+ // Determine the expected userTypeBitSets based on getUserTypeMask.
+ long expectedUserTypeBitSet1 = 0;
+ expectedUserTypeBitSet1
+ |= mUserSystemPackageInstaller.getUserTypeMask(USER_TYPE_FULL_GUEST);
+ for (int i = 0; i < userTypes.size(); i++) {
+ final String userType = userTypes.keyAt(i);
+ final UserTypeDetails details = userTypes.valueAt(i);
+ if (details.isSystem() || details.isProfile()) {
+ expectedUserTypeBitSet1 |= mUserSystemPackageInstaller.getUserTypeMask(userType);
+ }
+ }
+ expectedUserTypeBitSet1
+ &= ~mUserSystemPackageInstaller.getUserTypeMask(USER_TYPE_PROFILE_MANAGED);
- final ArrayMap<String, Integer> actualOutput =
+ final long expectedUserTypeBitSet2 =
+ mUserSystemPackageInstaller.getUserTypeMask(USER_TYPE_PROFILE_MANAGED);
+
+ long expectedUserTypeBitSet3 = 0;
+ for (int i = 0; i < userTypes.size(); i++) {
+ final String userType = userTypes.keyAt(i);
+ final UserTypeDetails details = userTypes.valueAt(i);
+ if (details.isFull() && !details.isSystem()) {
+ expectedUserTypeBitSet3 |= mUserSystemPackageInstaller.getUserTypeMask(userType);
+ }
+ }
+
+ final ArrayMap<String, Long> expectedOutput = getNewPackageToWhitelistedBitSetMap();
+ expectedOutput.put("com.android.package1", expectedUserTypeBitSet1);
+ expectedOutput.put("com.android.package2", expectedUserTypeBitSet2);
+ expectedOutput.put("com.android.package3", expectedUserTypeBitSet3);
+
+ final ArrayMap<String, Long> actualOutput =
mUserSystemPackageInstaller.determineWhitelistedPackagesForUserTypes(sysConfig);
assertEquals("Incorrect package-to-user mapping.", expectedOutput, actualOutput);
@@ -189,11 +219,12 @@
}
};
- final ArrayMap<String, Integer> expectedOutput = getNewPackageToWhitelistedFlagsMap();
- expectedOutput.put("com.android.package3", 0);
- expectedOutput.put("com.android.package4", 0);
+ final ArrayMap<String, Long> expectedOutput = getNewPackageToWhitelistedBitSetMap();
+ expectedOutput.put("com.android.package2", 0L);
+ expectedOutput.put("com.android.package3", 0L);
+ expectedOutput.put("com.android.package4", 0L);
- final ArrayMap<String, Integer> actualOutput =
+ final ArrayMap<String, Long> actualOutput =
mUserSystemPackageInstaller.determineWhitelistedPackagesForUserTypes(sysConfig);
assertEquals("Incorrect package-to-user mapping.", expectedOutput, actualOutput);
@@ -209,17 +240,16 @@
final String packageName3 = "pkg3"; // whitelisted for a different user type
final String packageName4 = "pkg4"; // not whitelisted nor blacklisted at all
- final ArrayMap<String, Integer> pkgFlgMap = new ArrayMap<>(); // Whitelist: pkgs per flags
- pkgFlgMap.put(packageName1, FLAG_FULL);
- pkgFlgMap.put(packageName2, 0);
- pkgFlgMap.put(packageName3, FLAG_MANAGED_PROFILE);
+ // Whitelist: user type bitset for each pkg (for the test, all that matters is 0 vs non-0).
+ final ArrayMap<String, Long> pkgBitSetMap = new ArrayMap<>();
+ pkgBitSetMap.put(packageName1, 0b01L);
+ pkgBitSetMap.put(packageName2, 0L);
+ pkgBitSetMap.put(packageName3, 0b10L);
- // Whitelist of pkgs for this specific user, i.e. subset of pkgFlagMap for this user.
+ // Whitelist of pkgs for this specific user, i.e. subset of pkgBitSetMap for this user.
final Set<String> userWhitelist = new ArraySet<>();
userWhitelist.add(packageName1);
- final UserSystemPackageInstaller uspi = new UserSystemPackageInstaller(null, pkgFlgMap);
-
final PackageParser.Package pkg1 = new PackageParser.Package(packageName1);
final PackageParser.Package pkg2 = new PackageParser.Package(packageName2);
final PackageParser.Package pkg3 = new PackageParser.Package(packageName3);
@@ -228,26 +258,38 @@
// No implicit whitelist, so only install pkg1.
boolean implicit = false;
boolean isSysUser = false;
- assertTrue(uspi.shouldInstallPackage(pkg1, pkgFlgMap, userWhitelist, implicit, isSysUser));
- assertFalse(uspi.shouldInstallPackage(pkg2, pkgFlgMap, userWhitelist, implicit, isSysUser));
- assertFalse(uspi.shouldInstallPackage(pkg3, pkgFlgMap, userWhitelist, implicit, isSysUser));
- assertFalse(uspi.shouldInstallPackage(pkg4, pkgFlgMap, userWhitelist, implicit, isSysUser));
+ assertTrue(UserSystemPackageInstaller.shouldInstallPackage(
+ pkg1, pkgBitSetMap, userWhitelist, implicit, isSysUser));
+ assertFalse(UserSystemPackageInstaller.shouldInstallPackage(
+ pkg2, pkgBitSetMap, userWhitelist, implicit, isSysUser));
+ assertFalse(UserSystemPackageInstaller.shouldInstallPackage(
+ pkg3, pkgBitSetMap, userWhitelist, implicit, isSysUser));
+ assertFalse(UserSystemPackageInstaller.shouldInstallPackage(
+ pkg4, pkgBitSetMap, userWhitelist, implicit, isSysUser));
// Use implicit whitelist, so install pkg1 and pkg4
implicit = true;
isSysUser = false;
- assertTrue(uspi.shouldInstallPackage(pkg1, pkgFlgMap, userWhitelist, implicit, isSysUser));
- assertFalse(uspi.shouldInstallPackage(pkg2, pkgFlgMap, userWhitelist, implicit, isSysUser));
- assertFalse(uspi.shouldInstallPackage(pkg3, pkgFlgMap, userWhitelist, implicit, isSysUser));
- assertTrue(uspi.shouldInstallPackage(pkg4, pkgFlgMap, userWhitelist, implicit, isSysUser));
+ assertTrue(UserSystemPackageInstaller.shouldInstallPackage(
+ pkg1, pkgBitSetMap, userWhitelist, implicit, isSysUser));
+ assertFalse(UserSystemPackageInstaller.shouldInstallPackage(
+ pkg2, pkgBitSetMap, userWhitelist, implicit, isSysUser));
+ assertFalse(UserSystemPackageInstaller.shouldInstallPackage(
+ pkg3, pkgBitSetMap, userWhitelist, implicit, isSysUser));
+ assertTrue(UserSystemPackageInstaller.shouldInstallPackage(
+ pkg4, pkgBitSetMap, userWhitelist, implicit, isSysUser));
// For user 0 specifically, we always implicitly whitelist.
implicit = false;
isSysUser = true;
- assertTrue(uspi.shouldInstallPackage(pkg1, pkgFlgMap, userWhitelist, implicit, isSysUser));
- assertFalse(uspi.shouldInstallPackage(pkg2, pkgFlgMap, userWhitelist, implicit, isSysUser));
- assertFalse(uspi.shouldInstallPackage(pkg3, pkgFlgMap, userWhitelist, implicit, isSysUser));
- assertTrue(uspi.shouldInstallPackage(pkg4, pkgFlgMap, userWhitelist, implicit, isSysUser));
+ assertTrue(UserSystemPackageInstaller.shouldInstallPackage(
+ pkg1, pkgBitSetMap, userWhitelist, implicit, isSysUser));
+ assertFalse(UserSystemPackageInstaller.shouldInstallPackage(
+ pkg2, pkgBitSetMap, userWhitelist, implicit, isSysUser));
+ assertFalse(UserSystemPackageInstaller.shouldInstallPackage(
+ pkg3, pkgBitSetMap, userWhitelist, implicit, isSysUser));
+ assertTrue(UserSystemPackageInstaller.shouldInstallPackage(
+ pkg4, pkgBitSetMap, userWhitelist, implicit, isSysUser));
}
/**
@@ -256,31 +298,38 @@
*/
@Test
public void testGetWhitelistedPackagesForUserType() {
- final String packageName1 = "pkg1"; // whitelisted for FULL
+ final String[] sortedUserTypes = new String[]{"type_a", "type_b", "type_c", "type_d"};
+ final String nameOfTypeA = sortedUserTypes[0];
+ final String nameOfTypeB = sortedUserTypes[1];
+ final String nameOfTypeC = sortedUserTypes[2];
+ final long maskOfTypeA = 0b0001L;
+ final long maskOfTypeC = 0b0100L;
+
+ final String packageName1 = "pkg1"; // whitelisted for user type A
final String packageName2 = "pkg2"; // blacklisted whenever whitelisted
- final String packageName3 = "pkg3"; // whitelisted for SYSTEM
- final String packageName4 = "pkg4"; // whitelisted for FULL
+ final String packageName3 = "pkg3"; // whitelisted for user type C
+ final String packageName4 = "pkg4"; // whitelisted for user type A
- final ArrayMap<String, Integer> pkgFlagMap = new ArrayMap<>(); // Whitelist: pkgs per flags
- pkgFlagMap.put(packageName1, FLAG_FULL);
- pkgFlagMap.put(packageName2, 0);
- pkgFlagMap.put(packageName3, FLAG_SYSTEM);
- pkgFlagMap.put(packageName4, FLAG_FULL);
+ final ArrayMap<String, Long> pkgBitSetMap = new ArrayMap<>(); // Whitelist: bitset per pkg
+ pkgBitSetMap.put(packageName1, maskOfTypeA);
+ pkgBitSetMap.put(packageName2, 0L);
+ pkgBitSetMap.put(packageName3, maskOfTypeC);
+ pkgBitSetMap.put(packageName4, maskOfTypeA);
- // Whitelist of pkgs for this specific user, i.e. subset of pkgFlagMap for this user.
- final Set<String> expectedUserWhitelist = new ArraySet<>();
- expectedUserWhitelist.add(packageName1);
+ UserSystemPackageInstaller uspi =
+ new UserSystemPackageInstaller(null, pkgBitSetMap, sortedUserTypes);
- UserSystemPackageInstaller uspi = new UserSystemPackageInstaller(null, pkgFlagMap);
-
- Set<String> output = uspi.getWhitelistedPackagesForUserType(FLAG_FULL);
+ Set<String> output = uspi.getWhitelistedPackagesForUserType(nameOfTypeA);
assertEquals("Whitelist for FULL is the wrong size", 2, output.size());
- assertTrue("Whitelist for FULL doesn't contain pkg1", output.contains(packageName1));
- assertTrue("Whitelist for FULL doesn't contain pkg4", output.contains(packageName4));
+ assertTrue("Whitelist for A doesn't contain pkg1", output.contains(packageName1));
+ assertTrue("Whitelist for A doesn't contain pkg4", output.contains(packageName4));
- output = uspi.getWhitelistedPackagesForUserType(FLAG_SYSTEM);
- assertEquals("Whitelist for SYSTEM is the wrong size", 1, output.size());
- assertTrue("Whitelist for SYSTEM doesn't contain pkg1", output.contains(packageName3));
+ output = uspi.getWhitelistedPackagesForUserType(nameOfTypeB);
+ assertEquals("Whitelist for B is the wrong size", 0, output.size());
+
+ output = uspi.getWhitelistedPackagesForUserType(nameOfTypeC);
+ assertEquals("Whitelist for C is the wrong size", 1, output.size());
+ assertTrue("Whitelist for C doesn't contain pkg1", output.contains(packageName3));
}
/**
@@ -291,22 +340,23 @@
*/
@Test
public void testPackagesForCreateUser_full() {
- final int userFlags = UserInfo.FLAG_FULL;
+ final String userTypeToCreate = USER_TYPE_FULL_SECONDARY;
+ final long userTypeMask = mUserSystemPackageInstaller.getUserTypeMask(userTypeToCreate);
setUserTypePackageWhitelistMode(USER_TYPE_PACKAGE_WHITELIST_MODE_ENFORCE);
PackageManager pm = mContext.getPackageManager();
final SystemConfig sysConfig = new SystemConfigTestClass(true);
- final ArrayMap<String, Integer> packageMap =
+ final ArrayMap<String, Long> packageMap =
mUserSystemPackageInstaller.determineWhitelistedPackagesForUserTypes(sysConfig);
final Set<String> expectedPackages = new ArraySet<>(packageMap.size());
for (int i = 0; i < packageMap.size(); i++) {
- if ((userFlags & packageMap.valueAt(i)) != 0) {
+ if ((userTypeMask & packageMap.valueAt(i)) != 0) {
expectedPackages.add(packageMap.keyAt(i));
}
}
final UserManager um = UserManager.get(mContext);
- final UserInfo user = um.createUser("Test User", userFlags);
+ final UserInfo user = um.createUser("Test User", userTypeToCreate, 0);
assertNotNull(user);
mRemoveUsers.add(user.id);
@@ -345,33 +395,45 @@
assertFalse(mUserSystemPackageInstaller.isLogMode());
assertFalse(mUserSystemPackageInstaller.isEnforceMode());
assertFalse(mUserSystemPackageInstaller.isImplicitWhitelistMode());
+ assertFalse(mUserSystemPackageInstaller.isIgnoreOtaMode());
setUserTypePackageWhitelistMode(USER_TYPE_PACKAGE_WHITELIST_MODE_LOG);
assertTrue(mUserSystemPackageInstaller.isLogMode());
assertFalse(mUserSystemPackageInstaller.isEnforceMode());
assertFalse(mUserSystemPackageInstaller.isImplicitWhitelistMode());
+ assertFalse(mUserSystemPackageInstaller.isIgnoreOtaMode());
setUserTypePackageWhitelistMode(USER_TYPE_PACKAGE_WHITELIST_MODE_ENFORCE);
assertFalse(mUserSystemPackageInstaller.isLogMode());
assertTrue(mUserSystemPackageInstaller.isEnforceMode());
assertFalse(mUserSystemPackageInstaller.isImplicitWhitelistMode());
+ assertFalse(mUserSystemPackageInstaller.isIgnoreOtaMode());
setUserTypePackageWhitelistMode(USER_TYPE_PACKAGE_WHITELIST_MODE_IMPLICIT_WHITELIST);
assertFalse(mUserSystemPackageInstaller.isLogMode());
assertFalse(mUserSystemPackageInstaller.isEnforceMode());
assertTrue(mUserSystemPackageInstaller.isImplicitWhitelistMode());
+ assertFalse(mUserSystemPackageInstaller.isIgnoreOtaMode());
+
+ setUserTypePackageWhitelistMode(USER_TYPE_PACKAGE_WHITELIST_MODE_IGNORE_OTA);
+ assertFalse(mUserSystemPackageInstaller.isLogMode());
+ assertFalse(mUserSystemPackageInstaller.isEnforceMode());
+ assertFalse(mUserSystemPackageInstaller.isImplicitWhitelistMode());
+ assertTrue(mUserSystemPackageInstaller.isIgnoreOtaMode());
setUserTypePackageWhitelistMode(
USER_TYPE_PACKAGE_WHITELIST_MODE_LOG | USER_TYPE_PACKAGE_WHITELIST_MODE_ENFORCE);
assertTrue(mUserSystemPackageInstaller.isLogMode());
assertTrue(mUserSystemPackageInstaller.isEnforceMode());
assertFalse(mUserSystemPackageInstaller.isImplicitWhitelistMode());
+ assertFalse(mUserSystemPackageInstaller.isIgnoreOtaMode());
setUserTypePackageWhitelistMode(USER_TYPE_PACKAGE_WHITELIST_MODE_IMPLICIT_WHITELIST
| USER_TYPE_PACKAGE_WHITELIST_MODE_ENFORCE);
assertFalse(mUserSystemPackageInstaller.isLogMode());
assertTrue(mUserSystemPackageInstaller.isEnforceMode());
assertTrue(mUserSystemPackageInstaller.isImplicitWhitelistMode());
+ assertFalse(mUserSystemPackageInstaller.isIgnoreOtaMode());
}
/** Sets the whitelist mode to the desired value via adb's setprop. */
@@ -387,10 +449,11 @@
}
}
- private ArrayMap<String, Integer> getNewPackageToWhitelistedFlagsMap() {
- final ArrayMap<String, Integer> pkgFlagMap = new ArrayMap<>();
- // "android" is always treated as whitelisted, regardless of the xml file.
- pkgFlagMap.put("android", FLAG_SYSTEM | UserInfo.FLAG_FULL | UserInfo.FLAG_PROFILE);
- return pkgFlagMap;
+ /** @see UserSystemPackageInstaller#mWhitelistedPackagesForUserTypes */
+ private ArrayMap<String, Long> getNewPackageToWhitelistedBitSetMap() {
+ final ArrayMap<String, Long> pkgBitSetMap = new ArrayMap<>();
+ // "android" is always treated as whitelisted for all types, regardless of the xml file.
+ pkgBitSetMap.put("android", ~0L);
+ return pkgBitSetMap;
}
}
diff --git a/services/tests/servicestests/src/com/android/server/power/AttentionDetectorTest.java b/services/tests/servicestests/src/com/android/server/power/AttentionDetectorTest.java
index 4476918..642cedb 100644
--- a/services/tests/servicestests/src/com/android/server/power/AttentionDetectorTest.java
+++ b/services/tests/servicestests/src/com/android/server/power/AttentionDetectorTest.java
@@ -17,6 +17,12 @@
package com.android.server.power;
import static android.os.BatteryStats.Uid.NUM_USER_ACTIVITY_TYPES;
+import static android.provider.DeviceConfig.NAMESPACE_ATTENTION_MANAGER_SERVICE;
+
+import static com.android.server.power.AttentionDetector.DEFAULT_POST_DIM_CHECK_DURATION_MILLIS;
+import static com.android.server.power.AttentionDetector.DEFAULT_PRE_DIM_CHECK_DURATION_MILLIS;
+import static com.android.server.power.AttentionDetector.KEY_POST_DIM_CHECK_DURATION_MILLIS;
+import static com.android.server.power.AttentionDetector.KEY_PRE_DIM_CHECK_DURATION_MILLIS;
import static com.google.common.truth.Truth.assertThat;
@@ -37,6 +43,7 @@
import android.os.PowerManagerInternal;
import android.os.SystemClock;
import android.os.UserHandle;
+import android.provider.DeviceConfig;
import android.provider.Settings;
import android.service.attention.AttentionService;
import android.test.AndroidTestCase;
@@ -53,6 +60,7 @@
@SmallTest
public class AttentionDetectorTest extends AndroidTestCase {
+ private static final long DEFAULT_DIM_DURATION_MILLIS = 6_000L;
@Mock
private PackageManager mPackageManager;
@@ -63,7 +71,8 @@
@Mock
private Runnable mOnUserAttention;
private TestableAttentionDetector mAttentionDetector;
- private long mAttentionTimeout;
+ private AttentionDetector mRealAttentionDetector;
+ private long mPreDimCheckDuration;
private long mNextDimming;
private int mIsSettingEnabled;
@@ -77,6 +86,7 @@
.thenReturn(true);
when(mWindowManagerInternal.isKeyguardShowingAndNotOccluded()).thenReturn(false);
mAttentionDetector = new TestableAttentionDetector();
+ mRealAttentionDetector = new AttentionDetector(mOnUserAttention, new Object());
mAttentionDetector.onWakefulnessChangeStarted(PowerManagerInternal.WAKEFULNESS_AWAKE);
mAttentionDetector.setAttentionServiceSupported(true);
mNextDimming = SystemClock.uptimeMillis() + 3000L;
@@ -94,6 +104,13 @@
public void tearDown() {
Settings.System.putIntForUser(getContext().getContentResolver(),
Settings.System.ADAPTIVE_SLEEP, mIsSettingEnabled, UserHandle.USER_CURRENT);
+
+ DeviceConfig.setProperty(NAMESPACE_ATTENTION_MANAGER_SERVICE,
+ KEY_PRE_DIM_CHECK_DURATION_MILLIS,
+ Long.toString(DEFAULT_PRE_DIM_CHECK_DURATION_MILLIS), false);
+ DeviceConfig.setProperty(NAMESPACE_ATTENTION_MANAGER_SERVICE,
+ KEY_POST_DIM_CHECK_DURATION_MILLIS,
+ Long.toString(DEFAULT_POST_DIM_CHECK_DURATION_MILLIS), false);
}
@Test
@@ -175,7 +192,7 @@
long now = SystemClock.uptimeMillis();
mNextDimming = now;
mAttentionDetector.onUserActivity(now, PowerManager.USER_ACTIVITY_EVENT_TOUCH);
- mAttentionDetector.updateUserActivity(mNextDimming + 5000L);
+ mAttentionDetector.updateUserActivity(mNextDimming + 5000L, DEFAULT_DIM_DURATION_MILLIS);
verify(mAttentionManagerInternal, never()).checkAttention(anyLong(), any());
}
@@ -184,7 +201,8 @@
long now = SystemClock.uptimeMillis();
mNextDimming = now;
mAttentionDetector.onUserActivity(now, PowerManager.USER_ACTIVITY_EVENT_TOUCH);
- long nextTimeout = mAttentionDetector.updateUserActivity(mNextDimming + 5000L);
+ long nextTimeout = mAttentionDetector.updateUserActivity(mNextDimming + 5000L,
+ DEFAULT_DIM_DURATION_MILLIS);
assertThat(nextTimeout).isEqualTo(mNextDimming + 5000L);
}
@@ -192,7 +210,7 @@
public void testOnUserActivity_ignoresAfterMaximumExtension() {
long now = SystemClock.uptimeMillis();
mAttentionDetector.onUserActivity(now - 15000L, PowerManager.USER_ACTIVITY_EVENT_TOUCH);
- mAttentionDetector.updateUserActivity(now + 2000L);
+ mAttentionDetector.updateUserActivity(now + 2000L, DEFAULT_DIM_DURATION_MILLIS);
verify(mAttentionManagerInternal, never()).checkAttention(anyLong(), any());
}
@@ -203,7 +221,8 @@
assertThat(when).isLessThan(mNextDimming);
clearInvocations(mAttentionManagerInternal);
- long redundantWhen = mAttentionDetector.updateUserActivity(mNextDimming);
+ long redundantWhen = mAttentionDetector.updateUserActivity(mNextDimming,
+ DEFAULT_DIM_DURATION_MILLIS);
assertThat(redundantWhen).isEqualTo(mNextDimming);
verify(mAttentionManagerInternal, never()).checkAttention(anyLong(), any());
}
@@ -212,7 +231,8 @@
public void testOnUserActivity_skipsIfAlreadyScheduled() {
registerAttention();
reset(mAttentionManagerInternal);
- long when = mAttentionDetector.updateUserActivity(mNextDimming + 1);
+ long when = mAttentionDetector.updateUserActivity(mNextDimming + 1,
+ DEFAULT_DIM_DURATION_MILLIS);
verify(mAttentionManagerInternal, never()).checkAttention(anyLong(), any());
assertThat(when).isLessThan(mNextDimming);
}
@@ -300,11 +320,95 @@
verify(mOnUserAttention, never()).run();
}
+ @Test
+ public void testGetPreDimCheckDurationMillis_handlesGoodFlagValue() {
+ DeviceConfig.setProperty(NAMESPACE_ATTENTION_MANAGER_SERVICE,
+ KEY_PRE_DIM_CHECK_DURATION_MILLIS, "555", false);
+ assertThat(mRealAttentionDetector.getPreDimCheckDurationMillis()).isEqualTo(555);
+ }
+
+ @Test
+ public void testGetPreDimCheckDurationMillis_rejectsNegativeValue() {
+ DeviceConfig.setProperty(NAMESPACE_ATTENTION_MANAGER_SERVICE,
+ KEY_PRE_DIM_CHECK_DURATION_MILLIS, "-50", false);
+ assertThat(mRealAttentionDetector.getPreDimCheckDurationMillis()).isEqualTo(
+ DEFAULT_PRE_DIM_CHECK_DURATION_MILLIS);
+ }
+
+ @Test
+ public void testGetPreDimCheckDurationMillis_rejectsTooBigValue() {
+ DeviceConfig.setProperty(NAMESPACE_ATTENTION_MANAGER_SERVICE,
+ KEY_PRE_DIM_CHECK_DURATION_MILLIS, "20000", false);
+ assertThat(mRealAttentionDetector.getPreDimCheckDurationMillis()).isEqualTo(
+ DEFAULT_PRE_DIM_CHECK_DURATION_MILLIS);
+ }
+
+ @Test
+ public void testGetPreDimCheckDurationMillis_handlesBadFlagValue() {
+ DeviceConfig.setProperty(NAMESPACE_ATTENTION_MANAGER_SERVICE,
+ KEY_PRE_DIM_CHECK_DURATION_MILLIS, "20000k", false);
+ assertThat(mRealAttentionDetector.getPreDimCheckDurationMillis()).isEqualTo(
+ DEFAULT_PRE_DIM_CHECK_DURATION_MILLIS);
+
+ DeviceConfig.setProperty(NAMESPACE_ATTENTION_MANAGER_SERVICE,
+ KEY_PRE_DIM_CHECK_DURATION_MILLIS, "0.25", false);
+ assertThat(mRealAttentionDetector.getPreDimCheckDurationMillis()).isEqualTo(
+ DEFAULT_PRE_DIM_CHECK_DURATION_MILLIS);
+ }
+
+ @Test
+ public void testGetPostDimCheckDurationMillis_handlesGoodFlagValue() {
+ DeviceConfig.setProperty(NAMESPACE_ATTENTION_MANAGER_SERVICE,
+ KEY_POST_DIM_CHECK_DURATION_MILLIS, "333", false);
+ assertThat(mRealAttentionDetector.getPostDimCheckDurationMillis(
+ DEFAULT_DIM_DURATION_MILLIS)).isEqualTo(333);
+ }
+
+ @Test
+ public void testGetPostDimCheckDurationMillis_capsGoodFlagValueByMaxDimDuration() {
+ DeviceConfig.setProperty(NAMESPACE_ATTENTION_MANAGER_SERVICE,
+ KEY_POST_DIM_CHECK_DURATION_MILLIS, "7000", false);
+ assertThat(mRealAttentionDetector.getPostDimCheckDurationMillis(6500)).isEqualTo(6500);
+ }
+
+ @Test
+ public void testGetPostDimCheckDurationMillis_rejectsNegativeValue() {
+ DeviceConfig.setProperty(NAMESPACE_ATTENTION_MANAGER_SERVICE,
+ KEY_POST_DIM_CHECK_DURATION_MILLIS, "-50", false);
+ assertThat(mRealAttentionDetector.getPostDimCheckDurationMillis(
+ DEFAULT_DIM_DURATION_MILLIS)).isEqualTo(
+ DEFAULT_POST_DIM_CHECK_DURATION_MILLIS);
+ }
+
+ @Test
+ public void testGetPostDimCheckDurationMillis_rejectsTooBigValue() {
+ DeviceConfig.setProperty(NAMESPACE_ATTENTION_MANAGER_SERVICE,
+ KEY_POST_DIM_CHECK_DURATION_MILLIS, "20000", false);
+ assertThat(mRealAttentionDetector.getPostDimCheckDurationMillis(
+ DEFAULT_DIM_DURATION_MILLIS)).isEqualTo(
+ DEFAULT_POST_DIM_CHECK_DURATION_MILLIS);
+ }
+
+ @Test
+ public void testGetPostDimCheckDurationMillis_handlesBadFlagValue() {
+ DeviceConfig.setProperty(NAMESPACE_ATTENTION_MANAGER_SERVICE,
+ KEY_POST_DIM_CHECK_DURATION_MILLIS, "20000k", false);
+ assertThat(mRealAttentionDetector.getPostDimCheckDurationMillis(
+ DEFAULT_DIM_DURATION_MILLIS)).isEqualTo(
+ DEFAULT_POST_DIM_CHECK_DURATION_MILLIS);
+
+ DeviceConfig.setProperty(NAMESPACE_ATTENTION_MANAGER_SERVICE,
+ KEY_POST_DIM_CHECK_DURATION_MILLIS, "0.25", false);
+ assertThat(mRealAttentionDetector.getPostDimCheckDurationMillis(
+ DEFAULT_DIM_DURATION_MILLIS)).isEqualTo(
+ DEFAULT_POST_DIM_CHECK_DURATION_MILLIS);
+ }
+
private long registerAttention() {
- mAttentionTimeout = 4000L;
+ mPreDimCheckDuration = 4000L;
mAttentionDetector.onUserActivity(SystemClock.uptimeMillis(),
PowerManager.USER_ACTIVITY_EVENT_TOUCH);
- return mAttentionDetector.updateUserActivity(mNextDimming);
+ return mAttentionDetector.updateUserActivity(mNextDimming, DEFAULT_DIM_DURATION_MILLIS);
}
private class TestableAttentionDetector extends AttentionDetector {
@@ -329,8 +433,8 @@
}
@Override
- public long getAttentionTimeout() {
- return mAttentionTimeout;
+ public long getPreDimCheckDurationMillis() {
+ return mPreDimCheckDuration;
}
}
}
diff --git a/services/tests/servicestests/src/com/android/server/timedetector/SimpleTimeZoneDetectorStrategyTest.java b/services/tests/servicestests/src/com/android/server/timedetector/SimpleTimeDetectorStrategyTest.java
similarity index 68%
rename from services/tests/servicestests/src/com/android/server/timedetector/SimpleTimeZoneDetectorStrategyTest.java
rename to services/tests/servicestests/src/com/android/server/timedetector/SimpleTimeDetectorStrategyTest.java
index d797955..8a7edf7 100644
--- a/services/tests/servicestests/src/com/android/server/timedetector/SimpleTimeZoneDetectorStrategyTest.java
+++ b/services/tests/servicestests/src/com/android/server/timedetector/SimpleTimeDetectorStrategyTest.java
@@ -23,6 +23,7 @@
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
+import android.app.timedetector.ManualTimeSuggestion;
import android.app.timedetector.PhoneTimeSuggestion;
import android.content.Intent;
import android.icu.util.Calendar;
@@ -36,8 +37,10 @@
import org.junit.Test;
import org.junit.runner.RunWith;
+import java.time.Duration;
+
@RunWith(AndroidJUnit4.class)
-public class SimpleTimeZoneDetectorStrategyTest {
+public class SimpleTimeDetectorStrategyTest {
private static final Scenario SCENARIO_1 = new Scenario.Builder()
.setInitialDeviceSystemClockUtc(1977, 1, 1, 12, 0, 0)
@@ -47,6 +50,8 @@
private static final int ARBITRARY_PHONE_ID = 123456;
+ private static final long ONE_DAY_MILLIS = Duration.ofDays(1).toMillis();
+
private Script mScript;
@Before
@@ -55,7 +60,7 @@
}
@Test
- public void testSuggestPhoneTime_nitz_timeDetectionEnabled() {
+ public void testSuggestPhoneTime_autoTimeEnabled() {
Scenario scenario = SCENARIO_1;
mScript.pokeFakeClocks(scenario)
.pokeTimeDetectionEnabled(true);
@@ -67,7 +72,20 @@
mScript.simulateTimePassing(clockIncrement)
.simulatePhoneTimeSuggestion(timeSuggestion)
- .verifySystemClockWasSetAndResetCallTracking(expectSystemClockMillis);
+ .verifySystemClockWasSetAndResetCallTracking(
+ expectSystemClockMillis, true /* expectNetworkBroadcast */);
+ }
+
+ @Test
+ public void testSuggestPhoneTime_emptySuggestionIgnored() {
+ Scenario scenario = SCENARIO_1;
+ mScript.pokeFakeClocks(scenario)
+ .pokeTimeDetectionEnabled(true);
+
+ PhoneTimeSuggestion timeSuggestion = createPhoneTimeSuggestion(ARBITRARY_PHONE_ID, null);
+
+ mScript.simulatePhoneTimeSuggestion(timeSuggestion)
+ .verifySystemClockWasNotSetAndResetCallTracking();
}
@Test
@@ -91,7 +109,8 @@
// Send the first time signal. It should be used.
mScript.simulatePhoneTimeSuggestion(timeSuggestion1)
- .verifySystemClockWasSetAndResetCallTracking(expectSystemClockMillis1);
+ .verifySystemClockWasSetAndResetCallTracking(
+ expectSystemClockMillis1, true /* expectNetworkBroadcast */);
// Now send another time signal, but one that is too similar to the last one and should be
// ignored.
@@ -99,7 +118,8 @@
TimestampedValue<Long> utcTime2 = new TimestampedValue<>(
mScript.peekElapsedRealtimeMillis(),
mScript.peekSystemClockMillis() + underThresholdMillis);
- PhoneTimeSuggestion timeSuggestion2 = new PhoneTimeSuggestion(ARBITRARY_PHONE_ID, utcTime2);
+ PhoneTimeSuggestion timeSuggestion2 =
+ createPhoneTimeSuggestion(ARBITRARY_PHONE_ID, utcTime2);
mScript.simulateTimePassing(clockIncrement)
.simulatePhoneTimeSuggestion(timeSuggestion2)
.verifySystemClockWasNotSetAndResetCallTracking();
@@ -109,18 +129,20 @@
mScript.peekElapsedRealtimeMillis(),
mScript.peekSystemClockMillis() + systemClockUpdateThresholdMillis);
- PhoneTimeSuggestion timeSuggestion3 = new PhoneTimeSuggestion(ARBITRARY_PHONE_ID, utcTime3);
+ PhoneTimeSuggestion timeSuggestion3 =
+ createPhoneTimeSuggestion(ARBITRARY_PHONE_ID, utcTime3);
mScript.simulateTimePassing(clockIncrement);
long expectSystemClockMillis3 =
TimeDetectorStrategy.getTimeAt(utcTime3, mScript.peekElapsedRealtimeMillis());
mScript.simulatePhoneTimeSuggestion(timeSuggestion3)
- .verifySystemClockWasSetAndResetCallTracking(expectSystemClockMillis3);
+ .verifySystemClockWasSetAndResetCallTracking(
+ expectSystemClockMillis3, true /* expectNetworkBroadcast */);
}
@Test
- public void testSuggestPhoneTime_nitz_timeDetectionDisabled() {
+ public void testSuggestPhoneTime_autoTimeDisabled() {
Scenario scenario = SCENARIO_1;
mScript.pokeFakeClocks(scenario)
.pokeTimeDetectionEnabled(false);
@@ -132,7 +154,7 @@
}
@Test
- public void testSuggestPhoneTime_nitz_invalidNitzReferenceTimesIgnored() {
+ public void testSuggestPhoneTime_invalidNitzReferenceTimesIgnored() {
Scenario scenario = SCENARIO_1;
final int systemClockUpdateThreshold = 2000;
mScript.pokeFakeClocks(scenario)
@@ -147,7 +169,8 @@
long expectedSystemClockMillis1 =
TimeDetectorStrategy.getTimeAt(utcTime1, mScript.peekElapsedRealtimeMillis());
mScript.simulatePhoneTimeSuggestion(timeSuggestion1)
- .verifySystemClockWasSetAndResetCallTracking(expectedSystemClockMillis1);
+ .verifySystemClockWasSetAndResetCallTracking(
+ expectedSystemClockMillis1, true /* expectNetworkBroadcast */);
// The UTC time increment should be larger than the system clock update threshold so we
// know it shouldn't be ignored for other reasons.
@@ -158,7 +181,8 @@
long referenceTimeBeforeLastSignalMillis = utcTime1.getReferenceTimeMillis() - 1;
TimestampedValue<Long> utcTime2 = new TimestampedValue<>(
referenceTimeBeforeLastSignalMillis, validUtcTimeMillis);
- PhoneTimeSuggestion timeSuggestion2 = new PhoneTimeSuggestion(ARBITRARY_PHONE_ID, utcTime2);
+ PhoneTimeSuggestion timeSuggestion2 =
+ createPhoneTimeSuggestion(ARBITRARY_PHONE_ID, utcTime2);
mScript.simulatePhoneTimeSuggestion(timeSuggestion2)
.verifySystemClockWasNotSetAndResetCallTracking();
@@ -168,7 +192,8 @@
utcTime1.getReferenceTimeMillis() + Integer.MAX_VALUE + 1;
TimestampedValue<Long> utcTime3 = new TimestampedValue<>(
referenceTimeInFutureMillis, validUtcTimeMillis);
- PhoneTimeSuggestion timeSuggestion3 = new PhoneTimeSuggestion(ARBITRARY_PHONE_ID, utcTime3);
+ PhoneTimeSuggestion timeSuggestion3 =
+ createPhoneTimeSuggestion(ARBITRARY_PHONE_ID, utcTime3);
mScript.simulatePhoneTimeSuggestion(timeSuggestion3)
.verifySystemClockWasNotSetAndResetCallTracking();
@@ -178,9 +203,11 @@
validReferenceTimeMillis, validUtcTimeMillis);
long expectedSystemClockMillis4 =
TimeDetectorStrategy.getTimeAt(utcTime4, mScript.peekElapsedRealtimeMillis());
- PhoneTimeSuggestion timeSuggestion4 = new PhoneTimeSuggestion(ARBITRARY_PHONE_ID, utcTime4);
+ PhoneTimeSuggestion timeSuggestion4 =
+ createPhoneTimeSuggestion(ARBITRARY_PHONE_ID, utcTime4);
mScript.simulatePhoneTimeSuggestion(timeSuggestion4)
- .verifySystemClockWasSetAndResetCallTracking(expectedSystemClockMillis4);
+ .verifySystemClockWasSetAndResetCallTracking(
+ expectedSystemClockMillis4, true /* expectNetworkBroadcast */);
}
@Test
@@ -212,7 +239,8 @@
// Turn on auto time detection.
mScript.simulateAutoTimeDetectionToggle()
- .verifySystemClockWasSetAndResetCallTracking(expectedSystemClockMillis1);
+ .verifySystemClockWasSetAndResetCallTracking(
+ expectedSystemClockMillis1, true /* expectNetworkBroadcast */);
// Turn off auto time detection.
mScript.simulateAutoTimeDetectionToggle()
@@ -223,7 +251,8 @@
TimestampedValue<Long> utcTime2 = new TimestampedValue<>(
mScript.peekElapsedRealtimeMillis(),
mScript.peekSystemClockMillis() + systemClockUpdateThreshold);
- PhoneTimeSuggestion timeSuggestion2 = new PhoneTimeSuggestion(ARBITRARY_PHONE_ID, utcTime2);
+ PhoneTimeSuggestion timeSuggestion2 =
+ createPhoneTimeSuggestion(ARBITRARY_PHONE_ID, utcTime2);
// Simulate more time passing.
mScript.simulateTimePassing(clockIncrementMillis);
@@ -238,7 +267,99 @@
// Turn on auto time detection.
mScript.simulateAutoTimeDetectionToggle()
- .verifySystemClockWasSetAndResetCallTracking(expectedSystemClockMillis2);
+ .verifySystemClockWasSetAndResetCallTracking(
+ expectedSystemClockMillis2, true /* expectNetworkBroadcast */);
+ }
+
+ @Test
+ public void testSuggestManualTime_autoTimeDisabled() {
+ Scenario scenario = SCENARIO_1;
+ mScript.pokeFakeClocks(scenario)
+ .pokeTimeDetectionEnabled(false);
+
+ ManualTimeSuggestion timeSuggestion = scenario.createManualTimeSuggestionForActual();
+ final int clockIncrement = 1000;
+ long expectSystemClockMillis = scenario.getActualTimeMillis() + clockIncrement;
+
+ mScript.simulateTimePassing(clockIncrement)
+ .simulateManualTimeSuggestion(timeSuggestion)
+ .verifySystemClockWasSetAndResetCallTracking(
+ expectSystemClockMillis, false /* expectNetworkBroadcast */);
+ }
+
+ @Test
+ public void testSuggestManualTime_retainsAutoSignal() {
+ Scenario scenario = SCENARIO_1;
+
+ // Configure the start state.
+ mScript.pokeFakeClocks(scenario)
+ .pokeTimeDetectionEnabled(true);
+
+ // Simulate a phone suggestion.
+ PhoneTimeSuggestion phoneTimeSuggestion =
+ scenario.createPhoneTimeSuggestionForActual(ARBITRARY_PHONE_ID);
+ long expectedAutoClockMillis = phoneTimeSuggestion.getUtcTime().getValue();
+ final int clockIncrement = 1000;
+
+ // Simulate the passage of time.
+ mScript.simulateTimePassing(clockIncrement);
+ expectedAutoClockMillis += clockIncrement;
+
+ mScript.simulatePhoneTimeSuggestion(phoneTimeSuggestion)
+ .verifySystemClockWasSetAndResetCallTracking(
+ expectedAutoClockMillis, true /* expectNetworkBroadcast */);
+
+ // Simulate the passage of time.
+ mScript.simulateTimePassing(clockIncrement);
+ expectedAutoClockMillis += clockIncrement;
+
+ // Switch to manual.
+ mScript.simulateAutoTimeDetectionToggle()
+ .verifySystemClockWasNotSetAndResetCallTracking();
+
+ // Simulate the passage of time.
+ mScript.simulateTimePassing(clockIncrement);
+ expectedAutoClockMillis += clockIncrement;
+
+
+ // Simulate a manual suggestion 1 day different from the auto suggestion.
+ long manualTimeMillis = SCENARIO_1.getActualTimeMillis() + ONE_DAY_MILLIS;
+ long expectedManualClockMillis = manualTimeMillis;
+ ManualTimeSuggestion manualTimeSuggestion = createManualTimeSuggestion(manualTimeMillis);
+ mScript.simulateManualTimeSuggestion(manualTimeSuggestion)
+ .verifySystemClockWasSetAndResetCallTracking(
+ expectedManualClockMillis, false /* expectNetworkBroadcast */);
+
+ // Simulate the passage of time.
+ mScript.simulateTimePassing(clockIncrement);
+ expectedAutoClockMillis += clockIncrement;
+
+ // Switch back to auto.
+ mScript.simulateAutoTimeDetectionToggle();
+
+ mScript.verifySystemClockWasSetAndResetCallTracking(
+ expectedAutoClockMillis, true /* expectNetworkBroadcast */);
+
+ // Switch back to manual - nothing should happen to the clock.
+ mScript.simulateAutoTimeDetectionToggle()
+ .verifySystemClockWasNotSetAndResetCallTracking();
+ }
+
+ /**
+ * Manual suggestions should be ignored if auto time is enabled.
+ */
+ @Test
+ public void testSuggestManualTime_autoTimeEnabled() {
+ Scenario scenario = SCENARIO_1;
+ mScript.pokeFakeClocks(scenario)
+ .pokeTimeDetectionEnabled(true);
+
+ ManualTimeSuggestion timeSuggestion = scenario.createManualTimeSuggestionForActual();
+ final int clockIncrement = 1000;
+
+ mScript.simulateTimePassing(clockIncrement)
+ .simulateManualTimeSuggestion(timeSuggestion)
+ .verifySystemClockWasNotSetAndResetCallTracking();
}
/**
@@ -262,7 +383,7 @@
}
@Override
- public boolean isTimeDetectionEnabled() {
+ public boolean isAutoTimeDetectionEnabled() {
return mTimeDetectionEnabled;
}
@@ -319,7 +440,7 @@
mSystemClockMillis = systemClockMillis;
}
- public void pokeTimeDetectionEnabled(boolean enabled) {
+ public void pokeAutoTimeDetectionEnabled(boolean enabled) {
mTimeDetectionEnabled = enabled;
}
@@ -336,6 +457,10 @@
mSystemClockMillis += incrementMillis;
}
+ public void simulateAutoTimeZoneDetectionToggle() {
+ mTimeDetectionEnabled = !mTimeDetectionEnabled;
+ }
+
public void verifySystemClockNotSet() {
assertFalse(mSystemClockWasSet);
}
@@ -372,7 +497,7 @@
private final FakeCallback mFakeCallback;
private final SimpleTimeDetectorStrategy mSimpleTimeDetectorStrategy;
- public Script() {
+ Script() {
mFakeCallback = new FakeCallback();
mSimpleTimeDetectorStrategy = new SimpleTimeDetectorStrategy();
mSimpleTimeDetectorStrategy.initialize(mFakeCallback);
@@ -380,7 +505,7 @@
}
Script pokeTimeDetectionEnabled(boolean enabled) {
- mFakeCallback.pokeTimeDetectionEnabled(enabled);
+ mFakeCallback.pokeAutoTimeDetectionEnabled(enabled);
return this;
}
@@ -408,10 +533,14 @@
return this;
}
+ Script simulateManualTimeSuggestion(ManualTimeSuggestion timeSuggestion) {
+ mSimpleTimeDetectorStrategy.suggestManualTime(timeSuggestion);
+ return this;
+ }
+
Script simulateAutoTimeDetectionToggle() {
- boolean enabled = !mFakeCallback.isTimeDetectionEnabled();
- mFakeCallback.pokeTimeDetectionEnabled(enabled);
- mSimpleTimeDetectorStrategy.handleAutoTimeDetectionToggle(enabled);
+ mFakeCallback.simulateAutoTimeZoneDetectionToggle();
+ mSimpleTimeDetectorStrategy.handleAutoTimeDetectionChanged();
return this;
}
@@ -427,9 +556,12 @@
return this;
}
- Script verifySystemClockWasSetAndResetCallTracking(long expectSystemClockMillis) {
+ Script verifySystemClockWasSetAndResetCallTracking(
+ long expectSystemClockMillis, boolean expectNetworkBroadcast) {
mFakeCallback.verifySystemClockWasSet(expectSystemClockMillis);
- mFakeCallback.verifyIntentWasBroadcast();
+ if (expectNetworkBroadcast) {
+ mFakeCallback.verifyIntentWasBroadcast();
+ }
mFakeCallback.resetCallTracking();
return this;
}
@@ -465,7 +597,13 @@
PhoneTimeSuggestion createPhoneTimeSuggestionForActual(int phoneId) {
TimestampedValue<Long> time = new TimestampedValue<>(
mInitialDeviceRealtimeMillis, mActualTimeMillis);
- return new PhoneTimeSuggestion(phoneId, time);
+ return createPhoneTimeSuggestion(phoneId, time);
+ }
+
+ ManualTimeSuggestion createManualTimeSuggestionForActual() {
+ TimestampedValue<Long> time = new TimestampedValue<>(
+ mInitialDeviceRealtimeMillis, mActualTimeMillis);
+ return new ManualTimeSuggestion(time);
}
static class Builder {
@@ -500,6 +638,19 @@
}
}
+ private static PhoneTimeSuggestion createPhoneTimeSuggestion(int phoneId,
+ TimestampedValue<Long> utcTime) {
+ PhoneTimeSuggestion timeSuggestion = new PhoneTimeSuggestion(phoneId);
+ timeSuggestion.setUtcTime(utcTime);
+ return timeSuggestion;
+ }
+
+ private ManualTimeSuggestion createManualTimeSuggestion(long timeMillis) {
+ TimestampedValue<Long> utcTime =
+ new TimestampedValue<>(mScript.peekElapsedRealtimeMillis(), timeMillis);
+ return new ManualTimeSuggestion(utcTime);
+ }
+
private static long createUtcTime(int year, int monthInYear, int day, int hourOfDay, int minute,
int second) {
Calendar cal = new GregorianCalendar(TimeZone.getTimeZone("Etc/UTC"));
diff --git a/services/tests/servicestests/src/com/android/server/timedetector/TimeDetectorServiceTest.java b/services/tests/servicestests/src/com/android/server/timedetector/TimeDetectorServiceTest.java
index 37da018..9951e85 100644
--- a/services/tests/servicestests/src/com/android/server/timedetector/TimeDetectorServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/timedetector/TimeDetectorServiceTest.java
@@ -17,26 +17,30 @@
package com.android.server.timedetector;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doNothing;
-import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import android.app.timedetector.ManualTimeSuggestion;
import android.app.timedetector.PhoneTimeSuggestion;
import android.content.Context;
import android.content.pm.PackageManager;
+import android.os.Handler;
+import android.os.HandlerThread;
+import android.os.Looper;
+import android.os.Message;
import android.util.TimestampedValue;
import androidx.test.runner.AndroidJUnit4;
import com.android.server.timedetector.TimeDetectorStrategy.Callback;
+import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -51,45 +55,66 @@
private Callback mMockCallback;
private TimeDetectorService mTimeDetectorService;
+ private HandlerThread mHandlerThread;
+ private TestHandler mTestHandler;
+
@Before
public void setUp() {
mMockContext = mock(Context.class);
+
+ // Create a thread + handler for processing the work that the service posts.
+ mHandlerThread = new HandlerThread("TimeDetectorServiceTest");
+ mHandlerThread.start();
+ mTestHandler = new TestHandler(mHandlerThread.getLooper());
+
mMockCallback = mock(Callback.class);
mStubbedTimeDetectorStrategy = new StubbedTimeDetectorStrategy();
mTimeDetectorService = new TimeDetectorService(
- mMockContext, mMockCallback,
+ mMockContext, mTestHandler, mMockCallback,
mStubbedTimeDetectorStrategy);
}
- @Test(expected=SecurityException.class)
- public void testStubbedCall_withoutPermission() {
- doThrow(new SecurityException("Mock"))
- .when(mMockContext).enforceCallingPermission(anyString(), any());
- PhoneTimeSuggestion phoneTimeSuggestion = createPhoneTimeSuggestion();
-
- try {
- mTimeDetectorService.suggestPhoneTime(phoneTimeSuggestion);
- } finally {
- verify(mMockContext).enforceCallingPermission(
- eq(android.Manifest.permission.SET_TIME), anyString());
- }
+ @After
+ public void tearDown() throws Exception {
+ mHandlerThread.quit();
+ mHandlerThread.join();
}
@Test
- public void testSuggestPhoneTime() {
+ public void testSuggestPhoneTime() throws Exception {
doNothing().when(mMockContext).enforceCallingPermission(anyString(), any());
PhoneTimeSuggestion phoneTimeSuggestion = createPhoneTimeSuggestion();
mTimeDetectorService.suggestPhoneTime(phoneTimeSuggestion);
+ mTestHandler.assertTotalMessagesEnqueued(1);
- verify(mMockContext)
- .enforceCallingPermission(eq(android.Manifest.permission.SET_TIME), anyString());
+ verify(mMockContext).enforceCallingPermission(
+ eq(android.Manifest.permission.SET_TIME),
+ anyString());
+
+ mTestHandler.waitForEmptyQueue();
mStubbedTimeDetectorStrategy.verifySuggestPhoneTimeCalled(phoneTimeSuggestion);
}
@Test
+ public void testSuggestManualTime() throws Exception {
+ doNothing().when(mMockContext).enforceCallingPermission(anyString(), any());
+
+ ManualTimeSuggestion manualTimeSuggestion = createManualTimeSuggestion();
+ mTimeDetectorService.suggestManualTime(manualTimeSuggestion);
+ mTestHandler.assertTotalMessagesEnqueued(1);
+
+ verify(mMockContext).enforceCallingPermission(
+ eq(android.Manifest.permission.SET_TIME),
+ anyString());
+
+ mTestHandler.waitForEmptyQueue();
+ mStubbedTimeDetectorStrategy.verifySuggestManualTimeCalled(manualTimeSuggestion);
+ }
+
+ @Test
public void testDump() {
when(mMockContext.checkCallingOrSelfPermission(android.Manifest.permission.DUMP))
.thenReturn(PackageManager.PERMISSION_GRANTED);
@@ -101,31 +126,37 @@
}
@Test
- public void testAutoTimeDetectionToggle() {
- when(mMockCallback.isTimeDetectionEnabled()).thenReturn(true);
+ public void testAutoTimeDetectionToggle() throws Exception {
+ mTimeDetectorService.handleAutoTimeDetectionToggle();
+ mTestHandler.assertTotalMessagesEnqueued(1);
+ mTestHandler.waitForEmptyQueue();
+ mStubbedTimeDetectorStrategy.verifyHandleAutoTimeDetectionToggleCalled();
mTimeDetectorService.handleAutoTimeDetectionToggle();
-
- mStubbedTimeDetectorStrategy.verifyHandleAutoTimeDetectionToggleCalled(true);
-
- when(mMockCallback.isTimeDetectionEnabled()).thenReturn(false);
-
- mTimeDetectorService.handleAutoTimeDetectionToggle();
-
- mStubbedTimeDetectorStrategy.verifyHandleAutoTimeDetectionToggleCalled(false);
+ mTestHandler.assertTotalMessagesEnqueued(2);
+ mTestHandler.waitForEmptyQueue();
+ mStubbedTimeDetectorStrategy.verifyHandleAutoTimeDetectionToggleCalled();
}
private static PhoneTimeSuggestion createPhoneTimeSuggestion() {
int phoneId = 1234;
+ PhoneTimeSuggestion suggestion = new PhoneTimeSuggestion(phoneId);
TimestampedValue<Long> timeValue = new TimestampedValue<>(100L, 1_000_000L);
- return new PhoneTimeSuggestion(phoneId, timeValue);
+ suggestion.setUtcTime(timeValue);
+ return suggestion;
+ }
+
+ private static ManualTimeSuggestion createManualTimeSuggestion() {
+ TimestampedValue<Long> timeValue = new TimestampedValue<>(100L, 1_000_000L);
+ return new ManualTimeSuggestion(timeValue);
}
private static class StubbedTimeDetectorStrategy implements TimeDetectorStrategy {
// Call tracking.
private PhoneTimeSuggestion mLastPhoneSuggestion;
- private Boolean mLastAutoTimeDetectionToggle;
+ private ManualTimeSuggestion mLastManualSuggestion;
+ private boolean mLastAutoTimeDetectionToggleCalled;
private boolean mDumpCalled;
@Override
@@ -139,9 +170,15 @@
}
@Override
- public void handleAutoTimeDetectionToggle(boolean enabled) {
+ public void suggestManualTime(ManualTimeSuggestion timeSuggestion) {
resetCallTracking();
- mLastAutoTimeDetectionToggle = enabled;
+ mLastManualSuggestion = timeSuggestion;
+ }
+
+ @Override
+ public void handleAutoTimeDetectionChanged() {
+ resetCallTracking();
+ mLastAutoTimeDetectionToggleCalled = true;
}
@Override
@@ -152,21 +189,58 @@
void resetCallTracking() {
mLastPhoneSuggestion = null;
- mLastAutoTimeDetectionToggle = null;
+ mLastManualSuggestion = null;
+ mLastAutoTimeDetectionToggleCalled = false;
mDumpCalled = false;
}
- void verifySuggestPhoneTimeCalled(PhoneTimeSuggestion expectedSignal) {
- assertEquals(expectedSignal, mLastPhoneSuggestion);
+ void verifySuggestPhoneTimeCalled(PhoneTimeSuggestion expectedSuggestion) {
+ assertEquals(expectedSuggestion, mLastPhoneSuggestion);
}
- void verifyHandleAutoTimeDetectionToggleCalled(boolean expectedEnable) {
- assertNotNull(mLastAutoTimeDetectionToggle);
- assertEquals(expectedEnable, mLastAutoTimeDetectionToggle);
+ public void verifySuggestManualTimeCalled(ManualTimeSuggestion expectedSuggestion) {
+ assertEquals(expectedSuggestion, mLastManualSuggestion);
+ }
+
+ void verifyHandleAutoTimeDetectionToggleCalled() {
+ assertTrue(mLastAutoTimeDetectionToggleCalled);
}
void verifyDumpCalled() {
assertTrue(mDumpCalled);
}
}
+
+ /**
+ * A Handler that can track posts/sends and wait for work to be completed.
+ */
+ private static class TestHandler extends Handler {
+
+ private int mMessagesSent;
+
+ TestHandler(Looper looper) {
+ super(looper);
+ }
+
+ @Override
+ public boolean sendMessageAtTime(Message msg, long uptimeMillis) {
+ mMessagesSent++;
+ return super.sendMessageAtTime(msg, uptimeMillis);
+ }
+
+ /** Asserts the number of messages posted or sent is as expected. */
+ void assertTotalMessagesEnqueued(int expected) {
+ assertEquals(expected, mMessagesSent);
+ }
+
+ /**
+ * Waits for all currently enqueued work due to be processed to be completed before
+ * returning.
+ */
+ void waitForEmptyQueue() throws InterruptedException {
+ while (!getLooper().getQueue().isIdle()) {
+ Thread.sleep(100);
+ }
+ }
+ }
}
diff --git a/services/tests/servicestests/src/com/android/server/timezonedetector/TimeZoneDetectorStrategyTest.java b/services/tests/servicestests/src/com/android/server/timezonedetector/TimeZoneDetectorStrategyTest.java
new file mode 100644
index 0000000..270436d
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/timezonedetector/TimeZoneDetectorStrategyTest.java
@@ -0,0 +1,666 @@
+/*
+ * Copyright 2019 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.timezonedetector;
+
+import static android.app.timezonedetector.PhoneTimeZoneSuggestion.MATCH_TYPE_EMULATOR_ZONE_ID;
+import static android.app.timezonedetector.PhoneTimeZoneSuggestion.MATCH_TYPE_NETWORK_COUNTRY_AND_OFFSET;
+import static android.app.timezonedetector.PhoneTimeZoneSuggestion.MATCH_TYPE_NETWORK_COUNTRY_ONLY;
+import static android.app.timezonedetector.PhoneTimeZoneSuggestion.MATCH_TYPE_TEST_NETWORK_OFFSET_ONLY;
+import static android.app.timezonedetector.PhoneTimeZoneSuggestion.QUALITY_MULTIPLE_ZONES_WITH_DIFFERENT_OFFSETS;
+import static android.app.timezonedetector.PhoneTimeZoneSuggestion.QUALITY_MULTIPLE_ZONES_WITH_SAME_OFFSET;
+import static android.app.timezonedetector.PhoneTimeZoneSuggestion.QUALITY_SINGLE_ZONE;
+
+import static com.android.server.timezonedetector.TimeZoneDetectorStrategy.PHONE_SCORE_HIGH;
+import static com.android.server.timezonedetector.TimeZoneDetectorStrategy.PHONE_SCORE_HIGHEST;
+import static com.android.server.timezonedetector.TimeZoneDetectorStrategy.PHONE_SCORE_LOW;
+import static com.android.server.timezonedetector.TimeZoneDetectorStrategy.PHONE_SCORE_MEDIUM;
+import static com.android.server.timezonedetector.TimeZoneDetectorStrategy.PHONE_SCORE_NONE;
+import static com.android.server.timezonedetector.TimeZoneDetectorStrategy.PHONE_SCORE_USAGE_THRESHOLD;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import android.app.timezonedetector.ManualTimeZoneSuggestion;
+import android.app.timezonedetector.PhoneTimeZoneSuggestion;
+import android.app.timezonedetector.PhoneTimeZoneSuggestion.MatchType;
+import android.app.timezonedetector.PhoneTimeZoneSuggestion.Quality;
+
+import com.android.server.timezonedetector.TimeZoneDetectorStrategy.QualifiedPhoneTimeZoneSuggestion;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.Objects;
+
+/**
+ * White-box unit tests for {@link TimeZoneDetectorStrategy}.
+ */
+public class TimeZoneDetectorStrategyTest {
+
+ /** A time zone used for initialization that does not occur elsewhere in tests. */
+ private static final String ARBITRARY_TIME_ZONE_ID = "Etc/UTC";
+ private static final int PHONE1_ID = 10000;
+ private static final int PHONE2_ID = 20000;
+
+ // Suggestion test cases are ordered so that each successive one is of the same or higher score
+ // than the previous.
+ private static final SuggestionTestCase[] TEST_CASES = new SuggestionTestCase[] {
+ newTestCase(MATCH_TYPE_NETWORK_COUNTRY_ONLY,
+ QUALITY_MULTIPLE_ZONES_WITH_DIFFERENT_OFFSETS, PHONE_SCORE_LOW),
+ newTestCase(MATCH_TYPE_NETWORK_COUNTRY_ONLY, QUALITY_MULTIPLE_ZONES_WITH_SAME_OFFSET,
+ PHONE_SCORE_MEDIUM),
+ newTestCase(MATCH_TYPE_NETWORK_COUNTRY_AND_OFFSET,
+ QUALITY_MULTIPLE_ZONES_WITH_SAME_OFFSET, PHONE_SCORE_MEDIUM),
+ newTestCase(MATCH_TYPE_NETWORK_COUNTRY_ONLY, QUALITY_SINGLE_ZONE, PHONE_SCORE_HIGH),
+ newTestCase(MATCH_TYPE_NETWORK_COUNTRY_AND_OFFSET, QUALITY_SINGLE_ZONE,
+ PHONE_SCORE_HIGH),
+ newTestCase(MATCH_TYPE_TEST_NETWORK_OFFSET_ONLY,
+ QUALITY_MULTIPLE_ZONES_WITH_SAME_OFFSET, PHONE_SCORE_HIGHEST),
+ newTestCase(MATCH_TYPE_EMULATOR_ZONE_ID, QUALITY_SINGLE_ZONE, PHONE_SCORE_HIGHEST),
+ };
+
+ private TimeZoneDetectorStrategy mTimeZoneDetectorStrategy;
+ private FakeTimeZoneDetectorStrategyCallback mFakeTimeZoneDetectorStrategyCallback;
+
+ @Before
+ public void setUp() {
+ mFakeTimeZoneDetectorStrategyCallback = new FakeTimeZoneDetectorStrategyCallback();
+ mTimeZoneDetectorStrategy =
+ new TimeZoneDetectorStrategy(mFakeTimeZoneDetectorStrategyCallback);
+ }
+
+ @Test
+ public void testEmptyPhoneSuggestions() {
+ PhoneTimeZoneSuggestion phone1TimeZoneSuggestion = createEmptyPhone1Suggestion();
+ PhoneTimeZoneSuggestion phone2TimeZoneSuggestion = createEmptyPhone2Suggestion();
+ Script script = new Script()
+ .initializeAutoTimeZoneDetection(true)
+ .initializeTimeZoneSetting(ARBITRARY_TIME_ZONE_ID);
+
+ script.suggestPhoneTimeZone(phone1TimeZoneSuggestion)
+ .verifyTimeZoneNotSet();
+
+ // Assert internal service state.
+ QualifiedPhoneTimeZoneSuggestion expectedPhone1ScoredSuggestion =
+ new QualifiedPhoneTimeZoneSuggestion(phone1TimeZoneSuggestion, PHONE_SCORE_NONE);
+ assertEquals(expectedPhone1ScoredSuggestion,
+ mTimeZoneDetectorStrategy.getLatestPhoneSuggestion(PHONE1_ID));
+ assertNull(mTimeZoneDetectorStrategy.getLatestPhoneSuggestion(PHONE2_ID));
+ assertEquals(expectedPhone1ScoredSuggestion,
+ mTimeZoneDetectorStrategy.findBestPhoneSuggestionForTests());
+
+ script.suggestPhoneTimeZone(phone2TimeZoneSuggestion)
+ .verifyTimeZoneNotSet();
+
+ // Assert internal service state.
+ QualifiedPhoneTimeZoneSuggestion expectedPhone2ScoredSuggestion =
+ new QualifiedPhoneTimeZoneSuggestion(phone2TimeZoneSuggestion, PHONE_SCORE_NONE);
+ assertEquals(expectedPhone1ScoredSuggestion,
+ mTimeZoneDetectorStrategy.getLatestPhoneSuggestion(PHONE1_ID));
+ assertEquals(expectedPhone2ScoredSuggestion,
+ mTimeZoneDetectorStrategy.getLatestPhoneSuggestion(PHONE2_ID));
+ // Phone 1 should always beat phone 2, all other things being equal.
+ assertEquals(expectedPhone1ScoredSuggestion,
+ mTimeZoneDetectorStrategy.findBestPhoneSuggestionForTests());
+ }
+
+ @Test
+ public void testFirstPlausiblePhoneSuggestionAcceptedWhenTimeZoneUninitialized() {
+ SuggestionTestCase testCase = newTestCase(MATCH_TYPE_NETWORK_COUNTRY_ONLY,
+ QUALITY_MULTIPLE_ZONES_WITH_DIFFERENT_OFFSETS, PHONE_SCORE_LOW);
+ PhoneTimeZoneSuggestion lowQualitySuggestion =
+ testCase.createSuggestion(PHONE1_ID, "America/New_York");
+
+ // The device time zone setting is left uninitialized.
+ Script script = new Script()
+ .initializeAutoTimeZoneDetection(true);
+
+ // The very first suggestion will be taken.
+ script.suggestPhoneTimeZone(lowQualitySuggestion)
+ .verifyTimeZoneSetAndReset(lowQualitySuggestion);
+
+ // Assert internal service state.
+ QualifiedPhoneTimeZoneSuggestion expectedScoredSuggestion =
+ new QualifiedPhoneTimeZoneSuggestion(lowQualitySuggestion, testCase.expectedScore);
+ assertEquals(expectedScoredSuggestion,
+ mTimeZoneDetectorStrategy.getLatestPhoneSuggestion(PHONE1_ID));
+ assertEquals(expectedScoredSuggestion,
+ mTimeZoneDetectorStrategy.findBestPhoneSuggestionForTests());
+
+ // Another low quality suggestion will be ignored now that the setting is initialized.
+ PhoneTimeZoneSuggestion lowQualitySuggestion2 =
+ testCase.createSuggestion(PHONE1_ID, "America/Los_Angeles");
+ script.suggestPhoneTimeZone(lowQualitySuggestion2)
+ .verifyTimeZoneNotSet();
+
+ // Assert internal service state.
+ QualifiedPhoneTimeZoneSuggestion expectedScoredSuggestion2 =
+ new QualifiedPhoneTimeZoneSuggestion(lowQualitySuggestion2, testCase.expectedScore);
+ assertEquals(expectedScoredSuggestion2,
+ mTimeZoneDetectorStrategy.getLatestPhoneSuggestion(PHONE1_ID));
+ assertEquals(expectedScoredSuggestion2,
+ mTimeZoneDetectorStrategy.findBestPhoneSuggestionForTests());
+ }
+
+ /**
+ * Confirms that toggling the auto time zone detection setting has the expected behavior when
+ * the strategy is "opinionated".
+ */
+ @Test
+ public void testTogglingAutoTimeZoneDetection() {
+ Script script = new Script();
+
+ for (SuggestionTestCase testCase : TEST_CASES) {
+ // Start with the device in a known state.
+ script.initializeAutoTimeZoneDetection(false)
+ .initializeTimeZoneSetting(ARBITRARY_TIME_ZONE_ID);
+
+ PhoneTimeZoneSuggestion suggestion =
+ testCase.createSuggestion(PHONE1_ID, "Europe/London");
+ script.suggestPhoneTimeZone(suggestion);
+
+ // When time zone detection is not enabled, the time zone suggestion will not be set
+ // regardless of the score.
+ script.verifyTimeZoneNotSet();
+
+ // Assert internal service state.
+ QualifiedPhoneTimeZoneSuggestion expectedScoredSuggestion =
+ new QualifiedPhoneTimeZoneSuggestion(suggestion, testCase.expectedScore);
+ assertEquals(expectedScoredSuggestion,
+ mTimeZoneDetectorStrategy.getLatestPhoneSuggestion(PHONE1_ID));
+ assertEquals(expectedScoredSuggestion,
+ mTimeZoneDetectorStrategy.findBestPhoneSuggestionForTests());
+
+ // Toggling the time zone setting on should cause the device setting to be set.
+ script.autoTimeZoneDetectionEnabled(true);
+
+ // When time zone detection is already enabled the suggestion (if it scores highly
+ // enough) should be set immediately.
+ if (testCase.expectedScore >= PHONE_SCORE_USAGE_THRESHOLD) {
+ script.verifyTimeZoneSetAndReset(suggestion);
+ } else {
+ script.verifyTimeZoneNotSet();
+ }
+
+ // Assert internal service state.
+ assertEquals(expectedScoredSuggestion,
+ mTimeZoneDetectorStrategy.getLatestPhoneSuggestion(PHONE1_ID));
+ assertEquals(expectedScoredSuggestion,
+ mTimeZoneDetectorStrategy.findBestPhoneSuggestionForTests());
+
+ // Toggling the time zone setting should off should do nothing.
+ script.autoTimeZoneDetectionEnabled(false)
+ .verifyTimeZoneNotSet();
+
+ // Assert internal service state.
+ assertEquals(expectedScoredSuggestion,
+ mTimeZoneDetectorStrategy.getLatestPhoneSuggestion(PHONE1_ID));
+ assertEquals(expectedScoredSuggestion,
+ mTimeZoneDetectorStrategy.findBestPhoneSuggestionForTests());
+ }
+ }
+
+ @Test
+ public void testPhoneSuggestionsSinglePhone() {
+ Script script = new Script()
+ .initializeAutoTimeZoneDetection(true)
+ .initializeTimeZoneSetting(ARBITRARY_TIME_ZONE_ID);
+
+ for (SuggestionTestCase testCase : TEST_CASES) {
+ makePhone1SuggestionAndCheckState(script, testCase);
+ }
+
+ /*
+ * This is the same test as above but the test cases are in
+ * reverse order of their expected score. New suggestions always replace previous ones:
+ * there's effectively no history and so ordering shouldn't make any difference.
+ */
+
+ // Each test case will have the same or lower score than the last.
+ ArrayList<SuggestionTestCase> descendingCasesByScore =
+ new ArrayList<>(Arrays.asList(TEST_CASES));
+ Collections.reverse(descendingCasesByScore);
+
+ for (SuggestionTestCase testCase : descendingCasesByScore) {
+ makePhone1SuggestionAndCheckState(script, testCase);
+ }
+ }
+
+ private void makePhone1SuggestionAndCheckState(Script script, SuggestionTestCase testCase) {
+ // Give the next suggestion a different zone from the currently set device time zone;
+ String currentZoneId = mFakeTimeZoneDetectorStrategyCallback.getDeviceTimeZone();
+ String suggestionZoneId =
+ "Europe/London".equals(currentZoneId) ? "Europe/Paris" : "Europe/London";
+ PhoneTimeZoneSuggestion zonePhone1Suggestion =
+ testCase.createSuggestion(PHONE1_ID, suggestionZoneId);
+ QualifiedPhoneTimeZoneSuggestion expectedZonePhone1ScoredSuggestion =
+ new QualifiedPhoneTimeZoneSuggestion(zonePhone1Suggestion, testCase.expectedScore);
+
+ script.suggestPhoneTimeZone(zonePhone1Suggestion);
+ if (testCase.expectedScore >= PHONE_SCORE_USAGE_THRESHOLD) {
+ script.verifyTimeZoneSetAndReset(zonePhone1Suggestion);
+ } else {
+ script.verifyTimeZoneNotSet();
+ }
+
+ // Assert internal service state.
+ assertEquals(expectedZonePhone1ScoredSuggestion,
+ mTimeZoneDetectorStrategy.getLatestPhoneSuggestion(PHONE1_ID));
+ assertEquals(expectedZonePhone1ScoredSuggestion,
+ mTimeZoneDetectorStrategy.findBestPhoneSuggestionForTests());
+ }
+
+ /**
+ * Tries a set of test cases to see if the phone with the lowest ID is given preference. This
+ * test also confirms that the time zone setting would only be set if a suggestion is of
+ * sufficient quality.
+ */
+ @Test
+ public void testMultiplePhoneSuggestionScoringAndPhoneIdBias() {
+ String[] zoneIds = { "Europe/London", "Europe/Paris" };
+ PhoneTimeZoneSuggestion emptyPhone1Suggestion = createEmptyPhone1Suggestion();
+ PhoneTimeZoneSuggestion emptyPhone2Suggestion = createEmptyPhone2Suggestion();
+ QualifiedPhoneTimeZoneSuggestion expectedEmptyPhone1ScoredSuggestion =
+ new QualifiedPhoneTimeZoneSuggestion(emptyPhone1Suggestion, PHONE_SCORE_NONE);
+ QualifiedPhoneTimeZoneSuggestion expectedEmptyPhone2ScoredSuggestion =
+ new QualifiedPhoneTimeZoneSuggestion(emptyPhone2Suggestion, PHONE_SCORE_NONE);
+
+ Script script = new Script()
+ .initializeAutoTimeZoneDetection(true)
+ .initializeTimeZoneSetting(ARBITRARY_TIME_ZONE_ID)
+ // Initialize the latest suggestions as empty so we don't need to worry about nulls
+ // below for the first loop.
+ .suggestPhoneTimeZone(emptyPhone1Suggestion)
+ .suggestPhoneTimeZone(emptyPhone2Suggestion)
+ .resetState();
+
+ for (SuggestionTestCase testCase : TEST_CASES) {
+ PhoneTimeZoneSuggestion zonePhone1Suggestion =
+ testCase.createSuggestion(PHONE1_ID, zoneIds[0]);
+ PhoneTimeZoneSuggestion zonePhone2Suggestion =
+ testCase.createSuggestion(PHONE2_ID, zoneIds[1]);
+ QualifiedPhoneTimeZoneSuggestion expectedZonePhone1ScoredSuggestion =
+ new QualifiedPhoneTimeZoneSuggestion(zonePhone1Suggestion,
+ testCase.expectedScore);
+ QualifiedPhoneTimeZoneSuggestion expectedZonePhone2ScoredSuggestion =
+ new QualifiedPhoneTimeZoneSuggestion(zonePhone2Suggestion,
+ testCase.expectedScore);
+
+ // Start the test by making a suggestion for phone 1.
+ script.suggestPhoneTimeZone(zonePhone1Suggestion);
+ if (testCase.expectedScore >= PHONE_SCORE_USAGE_THRESHOLD) {
+ script.verifyTimeZoneSetAndReset(zonePhone1Suggestion);
+ } else {
+ script.verifyTimeZoneNotSet();
+ }
+
+ // Assert internal service state.
+ assertEquals(expectedZonePhone1ScoredSuggestion,
+ mTimeZoneDetectorStrategy.getLatestPhoneSuggestion(PHONE1_ID));
+ assertEquals(expectedEmptyPhone2ScoredSuggestion,
+ mTimeZoneDetectorStrategy.getLatestPhoneSuggestion(PHONE2_ID));
+ assertEquals(expectedZonePhone1ScoredSuggestion,
+ mTimeZoneDetectorStrategy.findBestPhoneSuggestionForTests());
+
+ // Phone 2 then makes an alternative suggestion with an identical score. Phone 1's
+ // suggestion should still "win" if it is above the required threshold.
+ script.suggestPhoneTimeZone(zonePhone2Suggestion);
+ script.verifyTimeZoneNotSet();
+
+ // Assert internal service state.
+ assertEquals(expectedZonePhone1ScoredSuggestion,
+ mTimeZoneDetectorStrategy.getLatestPhoneSuggestion(PHONE1_ID));
+ assertEquals(expectedZonePhone2ScoredSuggestion,
+ mTimeZoneDetectorStrategy.getLatestPhoneSuggestion(PHONE2_ID));
+ // Phone 1 should always beat phone 2, all other things being equal.
+ assertEquals(expectedZonePhone1ScoredSuggestion,
+ mTimeZoneDetectorStrategy.findBestPhoneSuggestionForTests());
+
+ // Withdrawing phone 1's suggestion should leave phone 2 as the new winner. Since the
+ // zoneId is different, the time zone setting should be updated if the score is high
+ // enough.
+ script.suggestPhoneTimeZone(emptyPhone1Suggestion);
+ if (testCase.expectedScore >= PHONE_SCORE_USAGE_THRESHOLD) {
+ script.verifyTimeZoneSetAndReset(zonePhone2Suggestion);
+ } else {
+ script.verifyTimeZoneNotSet();
+ }
+
+ // Assert internal service state.
+ assertEquals(expectedEmptyPhone1ScoredSuggestion,
+ mTimeZoneDetectorStrategy.getLatestPhoneSuggestion(PHONE1_ID));
+ assertEquals(expectedZonePhone2ScoredSuggestion,
+ mTimeZoneDetectorStrategy.getLatestPhoneSuggestion(PHONE2_ID));
+ assertEquals(expectedZonePhone2ScoredSuggestion,
+ mTimeZoneDetectorStrategy.findBestPhoneSuggestionForTests());
+
+ // Reset the state for the next loop.
+ script.suggestPhoneTimeZone(emptyPhone2Suggestion)
+ .verifyTimeZoneNotSet();
+ assertEquals(expectedEmptyPhone1ScoredSuggestion,
+ mTimeZoneDetectorStrategy.getLatestPhoneSuggestion(PHONE1_ID));
+ assertEquals(expectedEmptyPhone2ScoredSuggestion,
+ mTimeZoneDetectorStrategy.getLatestPhoneSuggestion(PHONE2_ID));
+ }
+ }
+
+ /**
+ * The {@link TimeZoneDetectorStrategy.Callback} is left to detect whether changing the time
+ * zone is actually necessary. This test proves that the service doesn't assume it knows the
+ * current setting.
+ */
+ @Test
+ public void testTimeZoneDetectorStrategyDoesNotAssumeCurrentSetting() {
+ Script script = new Script()
+ .initializeAutoTimeZoneDetection(true);
+
+ SuggestionTestCase testCase =
+ newTestCase(MATCH_TYPE_NETWORK_COUNTRY_AND_OFFSET, QUALITY_SINGLE_ZONE,
+ PHONE_SCORE_HIGH);
+ PhoneTimeZoneSuggestion losAngelesSuggestion =
+ testCase.createSuggestion(PHONE1_ID, "America/Los_Angeles");
+ PhoneTimeZoneSuggestion newYorkSuggestion =
+ testCase.createSuggestion(PHONE1_ID, "America/New_York");
+
+ // Initialization.
+ script.suggestPhoneTimeZone(losAngelesSuggestion)
+ .verifyTimeZoneSetAndReset(losAngelesSuggestion);
+ // Suggest it again - it should not be set because it is already set.
+ script.suggestPhoneTimeZone(losAngelesSuggestion)
+ .verifyTimeZoneNotSet();
+
+ // Toggling time zone detection should set the device time zone only if the current setting
+ // value is different from the most recent phone suggestion.
+ script.autoTimeZoneDetectionEnabled(false)
+ .verifyTimeZoneNotSet()
+ .autoTimeZoneDetectionEnabled(true)
+ .verifyTimeZoneNotSet();
+
+ // Simulate a user turning auto detection off, a new suggestion being made while auto
+ // detection is off, and the user turning it on again.
+ script.autoTimeZoneDetectionEnabled(false)
+ .suggestPhoneTimeZone(newYorkSuggestion)
+ .verifyTimeZoneNotSet();
+ // Latest suggestion should be used.
+ script.autoTimeZoneDetectionEnabled(true)
+ .verifyTimeZoneSetAndReset(newYorkSuggestion);
+ }
+
+ @Test
+ public void testManualSuggestion_autoTimeZoneDetectionEnabled() {
+ Script script = new Script()
+ .initializeTimeZoneSetting(ARBITRARY_TIME_ZONE_ID)
+ .initializeAutoTimeZoneDetection(true);
+
+ // Auto time zone detection is enabled so the manual suggestion should be ignored.
+ script.suggestManualTimeZone(createManualSuggestion("Europe/Paris"))
+ .verifyTimeZoneNotSet();
+ }
+
+
+ @Test
+ public void testManualSuggestion_autoTimeZoneDetectionDisabled() {
+ Script script = new Script()
+ .initializeTimeZoneSetting(ARBITRARY_TIME_ZONE_ID)
+ .initializeAutoTimeZoneDetection(false);
+
+ // Auto time zone detection is disabled so the manual suggestion should be used.
+ ManualTimeZoneSuggestion manualSuggestion = createManualSuggestion("Europe/Paris");
+ script.suggestManualTimeZone(manualSuggestion)
+ .verifyTimeZoneSetAndReset(manualSuggestion);
+ }
+
+ private ManualTimeZoneSuggestion createManualSuggestion(String zoneId) {
+ return new ManualTimeZoneSuggestion(zoneId);
+ }
+
+ private static PhoneTimeZoneSuggestion createEmptyPhone1Suggestion() {
+ return new PhoneTimeZoneSuggestion.Builder(PHONE1_ID).build();
+ }
+
+ private static PhoneTimeZoneSuggestion createEmptyPhone2Suggestion() {
+ return new PhoneTimeZoneSuggestion.Builder(PHONE2_ID).build();
+ }
+
+ static class FakeTimeZoneDetectorStrategyCallback implements TimeZoneDetectorStrategy.Callback {
+
+ private boolean mAutoTimeZoneDetectionEnabled;
+ private TestState<TimeZoneChange> mTimeZoneChanges = new TestState<>();
+ private String mTimeZoneId;
+
+ @Override
+ public boolean isAutoTimeZoneDetectionEnabled() {
+ return mAutoTimeZoneDetectionEnabled;
+ }
+
+ @Override
+ public boolean isDeviceTimeZoneInitialized() {
+ return mTimeZoneId != null;
+ }
+
+ @Override
+ public String getDeviceTimeZone() {
+ return mTimeZoneId;
+ }
+
+ @Override
+ public void setDeviceTimeZone(String zoneId, boolean withNetworkBroadcast) {
+ mTimeZoneId = zoneId;
+ mTimeZoneChanges.set(new TimeZoneChange(zoneId, withNetworkBroadcast));
+ }
+
+ void initializeAutoTimeZoneDetection(boolean enabled) {
+ mAutoTimeZoneDetectionEnabled = enabled;
+ }
+
+ void initializeTimeZone(String zoneId) {
+ mTimeZoneId = zoneId;
+ }
+
+ void setAutoTimeZoneDetectionEnabled(boolean enabled) {
+ mAutoTimeZoneDetectionEnabled = enabled;
+ }
+
+ void assertTimeZoneNotSet() {
+ mTimeZoneChanges.assertHasNotBeenSet();
+ }
+
+ void assertTimeZoneSet(String timeZoneId, boolean withNetworkBroadcast) {
+ mTimeZoneChanges.assertHasBeenSet();
+ mTimeZoneChanges.assertChangeCount(1);
+ TimeZoneChange expectedChange = new TimeZoneChange(timeZoneId, withNetworkBroadcast);
+ mTimeZoneChanges.assertLatestEquals(expectedChange);
+ }
+
+ void commitAllChanges() {
+ mTimeZoneChanges.commitLatest();
+ }
+ }
+
+ private static class TimeZoneChange {
+ private final String mTimeZoneId;
+ private final boolean mWithNetworkBroadcast;
+
+ private TimeZoneChange(String timeZoneId, boolean withNetworkBroadcast) {
+ mTimeZoneId = timeZoneId;
+ mWithNetworkBroadcast = withNetworkBroadcast;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ TimeZoneChange that = (TimeZoneChange) o;
+ return mWithNetworkBroadcast == that.mWithNetworkBroadcast
+ && mTimeZoneId.equals(that.mTimeZoneId);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(mTimeZoneId, mWithNetworkBroadcast);
+ }
+ }
+
+ /** Some piece of state that tests want to track. */
+ private static class TestState<T> {
+ private T mInitialValue;
+ private LinkedList<T> mValues = new LinkedList<>();
+
+ void init(T value) {
+ mValues.clear();
+ mInitialValue = value;
+ }
+
+ void set(T value) {
+ mValues.addFirst(value);
+ }
+
+ boolean hasBeenSet() {
+ return mValues.size() > 0;
+ }
+
+ void assertHasNotBeenSet() {
+ assertFalse(hasBeenSet());
+ }
+
+ void assertHasBeenSet() {
+ assertTrue(hasBeenSet());
+ }
+
+ void commitLatest() {
+ if (hasBeenSet()) {
+ mInitialValue = mValues.getLast();
+ mValues.clear();
+ }
+ }
+
+ void assertLatestEquals(T expected) {
+ assertEquals(expected, getLatest());
+ }
+
+ void assertChangeCount(int expectedCount) {
+ assertEquals(expectedCount, mValues.size());
+ }
+
+ public T getLatest() {
+ if (hasBeenSet()) {
+ return mValues.getFirst();
+ }
+ return mInitialValue;
+ }
+ }
+
+ /**
+ * A "fluent" class allows reuse of code in tests: initialization, simulation and verification
+ * logic.
+ */
+ private class Script {
+
+ Script initializeAutoTimeZoneDetection(boolean enabled) {
+ mFakeTimeZoneDetectorStrategyCallback.initializeAutoTimeZoneDetection(enabled);
+ return this;
+ }
+
+ Script initializeTimeZoneSetting(String zoneId) {
+ mFakeTimeZoneDetectorStrategyCallback.initializeTimeZone(zoneId);
+ return this;
+ }
+
+ Script autoTimeZoneDetectionEnabled(boolean enabled) {
+ mFakeTimeZoneDetectorStrategyCallback.setAutoTimeZoneDetectionEnabled(enabled);
+ mTimeZoneDetectorStrategy.handleAutoTimeZoneDetectionChange();
+ return this;
+ }
+
+ /** Simulates the time zone detection strategy receiving a phone-originated suggestion. */
+ Script suggestPhoneTimeZone(PhoneTimeZoneSuggestion phoneTimeZoneSuggestion) {
+ mTimeZoneDetectorStrategy.suggestPhoneTimeZone(phoneTimeZoneSuggestion);
+ return this;
+ }
+
+ /** Simulates the time zone detection strategy receiving a user-originated suggestion. */
+ Script suggestManualTimeZone(ManualTimeZoneSuggestion manualTimeZoneSuggestion) {
+ mTimeZoneDetectorStrategy.suggestManualTimeZone(manualTimeZoneSuggestion);
+ return this;
+ }
+
+ Script verifyTimeZoneNotSet() {
+ mFakeTimeZoneDetectorStrategyCallback.assertTimeZoneNotSet();
+ return this;
+ }
+
+ Script verifyTimeZoneSetAndReset(PhoneTimeZoneSuggestion suggestion) {
+ // Phone suggestions should cause a TelephonyIntents.ACTION_NETWORK_SET_TIMEZONE
+ // broadcast.
+ boolean withNetworkBroadcast = true;
+ mFakeTimeZoneDetectorStrategyCallback.assertTimeZoneSet(
+ suggestion.getZoneId(), withNetworkBroadcast);
+ mFakeTimeZoneDetectorStrategyCallback.commitAllChanges();
+ return this;
+ }
+
+ Script verifyTimeZoneSetAndReset(ManualTimeZoneSuggestion suggestion) {
+ // Manual suggestions should not cause a TelephonyIntents.ACTION_NETWORK_SET_TIMEZONE
+ // broadcast.
+ boolean withNetworkBroadcast = false;
+ mFakeTimeZoneDetectorStrategyCallback.assertTimeZoneSet(
+ suggestion.getZoneId(), withNetworkBroadcast);
+ mFakeTimeZoneDetectorStrategyCallback.commitAllChanges();
+ return this;
+ }
+
+ Script resetState() {
+ mFakeTimeZoneDetectorStrategyCallback.commitAllChanges();
+ return this;
+ }
+ }
+
+ private static class SuggestionTestCase {
+ public final int matchType;
+ public final int quality;
+ public final int expectedScore;
+
+ SuggestionTestCase(int matchType, int quality, int expectedScore) {
+ this.matchType = matchType;
+ this.quality = quality;
+ this.expectedScore = expectedScore;
+ }
+
+ private PhoneTimeZoneSuggestion createSuggestion(int phoneId, String zoneId) {
+ return new PhoneTimeZoneSuggestion.Builder(phoneId)
+ .setZoneId(zoneId)
+ .setMatchType(matchType)
+ .setQuality(quality)
+ .build();
+ }
+ }
+
+ private static SuggestionTestCase newTestCase(
+ @MatchType int matchType, @Quality int quality, int expectedScore) {
+ return new SuggestionTestCase(matchType, quality, expectedScore);
+ }
+}
diff --git a/services/tests/servicestests/test-apps/ConnTestApp/AndroidManifest.xml b/services/tests/servicestests/test-apps/ConnTestApp/AndroidManifest.xml
index 909e9bb..201cd05 100644
--- a/services/tests/servicestests/test-apps/ConnTestApp/AndroidManifest.xml
+++ b/services/tests/servicestests/test-apps/ConnTestApp/AndroidManifest.xml
@@ -18,8 +18,7 @@
package="com.android.servicestests.apps.conntestapp">
<uses-permission android:name="android.permission.INTERNET" />
- <uses-permission android:name="android.permission.MANAGE_NETWORK_POLICY" />
- <uses-permission android:name="android.permission.CONNECTIVITY_INTERNAL" />
+ <uses-permission android:name="android.permission.OBSERVE_NETWORK_POLICY" />
<application>
<activity android:name=".ConnTestActivity"
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/NotificationHistoryDatabaseTest.java b/services/tests/uiservicestests/src/com/android/server/notification/NotificationHistoryDatabaseTest.java
index a00afec..9ad6986 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/NotificationHistoryDatabaseTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/NotificationHistoryDatabaseTest.java
@@ -27,6 +27,7 @@
import static org.mockito.Mockito.when;
import android.app.AlarmManager;
+import android.app.NotificationHistory;
import android.app.NotificationHistory.HistoricalNotification;
import android.content.Context;
import android.graphics.drawable.Icon;
@@ -199,6 +200,16 @@
}
@Test
+ public void testReadNotificationHistory_readsBuffer() throws Exception {
+ HistoricalNotification hn = getHistoricalNotification(1);
+ mDataBase.addNotification(hn);
+
+ NotificationHistory nh = mDataBase.readNotificationHistory();
+
+ assertThat(nh.getNotificationsToWrite()).contains(hn);
+ }
+
+ @Test
public void testReadNotificationHistory_withNumFilterDoesNotReadExtraFiles() throws Exception {
AtomicFile af = mock(AtomicFile.class);
when(af.getBaseFile()).thenReturn(new File(mRootDir, "af"));
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/NotificationHistoryManagerTest.java b/services/tests/uiservicestests/src/com/android/server/notification/NotificationHistoryManagerTest.java
index aa3c465..92c0546 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/NotificationHistoryManagerTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/NotificationHistoryManagerTest.java
@@ -15,11 +15,12 @@
*/
package com.android.server.notification;
-import static android.os.UserHandle.USER_ALL;
+import static android.os.UserHandle.MIN_SECONDARY_USER_ID;
import static android.os.UserHandle.USER_SYSTEM;
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
@@ -28,9 +29,11 @@
import android.app.NotificationHistory;
import android.app.NotificationHistory.HistoricalNotification;
-import android.content.Context;
+import android.content.pm.UserInfo;
import android.graphics.drawable.Icon;
+import android.os.Handler;
import android.os.UserManager;
+import android.provider.Settings;
import androidx.test.InstrumentationRegistry;
import androidx.test.runner.AndroidJUnit4;
@@ -44,23 +47,22 @@
import org.mockito.MockitoAnnotations;
import java.util.ArrayList;
+import java.util.List;
+
@RunWith(AndroidJUnit4.class)
public class NotificationHistoryManagerTest extends UiServiceTestCase {
@Mock
- Context mContext;
- @Mock
UserManager mUserManager;
@Mock
NotificationHistoryDatabase mDb;
+ @Mock
+ Handler mHandler;
+ List<UserInfo> mUsers;
NotificationHistoryManager mHistoryManager;
- private HistoricalNotification getHistoricalNotification(int index) {
- return getHistoricalNotification("package" + index, index);
- }
-
private HistoricalNotification getHistoricalNotification(String packageName, int index) {
String expectedChannelName = "channelName" + index;
String expectedChannelId = "channelId" + index;
@@ -88,13 +90,28 @@
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
- when(mContext.getSystemService(UserManager.class)).thenReturn(mUserManager);
- when(mContext.getUser()).thenReturn(getContext().getUser());
- when(mContext.getPackageName()).thenReturn(getContext().getPackageName());
+
+ getContext().addMockSystemService(UserManager.class, mUserManager);
+
+ mUsers = new ArrayList<>();
+ UserInfo userSystem = new UserInfo();
+ userSystem.id = USER_SYSTEM;
+ mUsers.add(userSystem);
+ UserInfo userAll = new UserInfo();
+ userAll.id = MIN_SECONDARY_USER_ID;
+ mUsers.add(userAll);
+ mUsers.add(userAll);
+ when(mUserManager.getUsers()).thenReturn(mUsers);
+
+ for (UserInfo info : mUsers) {
+ Settings.Secure.putIntForUser(getContext().getContentResolver(),
+ Settings.Secure.NOTIFICATION_HISTORY_ENABLED, 1, info.id);
+ }
NotificationHistoryDatabaseFactory.setTestingNotificationHistoryDatabase(mDb);
- mHistoryManager = new NotificationHistoryManager(mContext);
+ mHistoryManager = new NotificationHistoryManager(getContext(), mHandler);
+ mHistoryManager.onBootPhaseAppsCanStart();
}
@Test
@@ -107,6 +124,20 @@
verify(mDb, times(1)).init();
}
+ public void testOnUserUnlocked_historyDisabled() {
+ Settings.Secure.putIntForUser(getContext().getContentResolver(),
+ Settings.Secure.NOTIFICATION_HISTORY_ENABLED, 0, USER_SYSTEM);
+ mHistoryManager.mSettingsObserver.update(null, USER_SYSTEM);
+ assertThat(mHistoryManager.doesHistoryExistForUser(USER_SYSTEM)).isFalse();
+ assertThat(mHistoryManager.isUserUnlocked(USER_SYSTEM)).isFalse();
+
+ mHistoryManager.onUserUnlocked(USER_SYSTEM);
+
+ assertThat(mHistoryManager.doesHistoryExistForUser(USER_SYSTEM)).isFalse();
+ assertThat(mHistoryManager.isUserUnlocked(USER_SYSTEM)).isFalse();
+ verify(mDb, times(1)).disableHistory();
+ }
+
@Test
public void testOnUserUnlocked_cleansUpRemovedPackages() {
String pkg = "pkg";
@@ -144,6 +175,7 @@
assertThat(mHistoryManager.doesHistoryExistForUser(USER_SYSTEM)).isFalse();
assertThat(mHistoryManager.isUserUnlocked(USER_SYSTEM)).isFalse();
+ assertThat(mHistoryManager.isHistoryEnabled(USER_SYSTEM)).isFalse();
}
@Test
@@ -187,6 +219,18 @@
}
@Test
+ public void testOnPackageRemoved_historyDisabled() {
+ Settings.Secure.putIntForUser(getContext().getContentResolver(),
+ Settings.Secure.NOTIFICATION_HISTORY_ENABLED, 0, USER_SYSTEM);
+ mHistoryManager.mSettingsObserver.update(null, USER_SYSTEM);
+ String pkg = "pkg";
+ mHistoryManager.onPackageRemoved(USER_SYSTEM, pkg);
+
+ assertThat(mHistoryManager.getPendingPackageRemovalsForUser(USER_SYSTEM))
+ .isNull();
+ }
+
+ @Test
public void testOnPackageRemoved_multiUser() {
String pkg = "pkg";
NotificationHistoryDatabase userHistorySystem = mock(NotificationHistoryDatabase.class);
@@ -195,8 +239,8 @@
mHistoryManager.onUserUnlocked(USER_SYSTEM);
mHistoryManager.replaceNotificationHistoryDatabase(USER_SYSTEM, userHistorySystem);
- mHistoryManager.onUserUnlocked(USER_ALL);
- mHistoryManager.replaceNotificationHistoryDatabase(USER_ALL, userHistoryAll);
+ mHistoryManager.onUserUnlocked(MIN_SECONDARY_USER_ID);
+ mHistoryManager.replaceNotificationHistoryDatabase(MIN_SECONDARY_USER_ID, userHistoryAll);
mHistoryManager.onPackageRemoved(USER_SYSTEM, pkg);
@@ -212,8 +256,8 @@
mHistoryManager.onUserUnlocked(USER_SYSTEM);
mHistoryManager.replaceNotificationHistoryDatabase(USER_SYSTEM, userHistorySystem);
- mHistoryManager.onUserUnlocked(USER_ALL);
- mHistoryManager.replaceNotificationHistoryDatabase(USER_ALL, userHistoryAll);
+ mHistoryManager.onUserUnlocked(MIN_SECONDARY_USER_ID);
+ mHistoryManager.replaceNotificationHistoryDatabase(MIN_SECONDARY_USER_ID, userHistoryAll);
mHistoryManager.triggerWriteToDisk();
@@ -229,9 +273,9 @@
mHistoryManager.onUserUnlocked(USER_SYSTEM);
mHistoryManager.replaceNotificationHistoryDatabase(USER_SYSTEM, userHistorySystem);
- mHistoryManager.onUserUnlocked(USER_ALL);
- mHistoryManager.replaceNotificationHistoryDatabase(USER_ALL, userHistoryAll);
- mHistoryManager.onUserStopped(USER_ALL);
+ mHistoryManager.onUserUnlocked(MIN_SECONDARY_USER_ID);
+ mHistoryManager.replaceNotificationHistoryDatabase(MIN_SECONDARY_USER_ID, userHistoryAll);
+ mHistoryManager.onUserStopped(MIN_SECONDARY_USER_ID);
mHistoryManager.triggerWriteToDisk();
@@ -240,6 +284,21 @@
}
@Test
+ public void testTriggerWriteToDisk_historyDisabled() {
+ Settings.Secure.putIntForUser(getContext().getContentResolver(),
+ Settings.Secure.NOTIFICATION_HISTORY_ENABLED, 0, USER_SYSTEM);
+ mHistoryManager.mSettingsObserver.update(null, USER_SYSTEM);
+ NotificationHistoryDatabase userHistorySystem = mock(NotificationHistoryDatabase.class);
+
+ mHistoryManager.onUserUnlocked(USER_SYSTEM);
+ mHistoryManager.replaceNotificationHistoryDatabase(USER_SYSTEM, userHistorySystem);
+
+ mHistoryManager.triggerWriteToDisk();
+
+ verify(userHistorySystem, never()).forceWriteToDisk();
+ }
+
+ @Test
public void testAddNotification_userLocked_noCrash() {
HistoricalNotification hn = getHistoricalNotification("pkg", 1);
@@ -247,9 +306,23 @@
}
@Test
+ public void testAddNotification_historyDisabled() {
+ HistoricalNotification hn = getHistoricalNotification("pkg", 1);
+
+ Settings.Secure.putIntForUser(getContext().getContentResolver(),
+ Settings.Secure.NOTIFICATION_HISTORY_ENABLED, 0, hn.getUserId());
+ mHistoryManager.mSettingsObserver.update(null, USER_SYSTEM);
+
+ mHistoryManager.onUserUnlocked(hn.getUserId());
+ mHistoryManager.addNotification(hn);
+
+ verify(mDb, never()).addNotification(any());
+ }
+
+ @Test
public void testAddNotification() {
HistoricalNotification hnSystem = getHistoricalNotification("pkg", USER_SYSTEM);
- HistoricalNotification hnAll = getHistoricalNotification("pkg", USER_ALL);
+ HistoricalNotification hnAll = getHistoricalNotification("pkg", MIN_SECONDARY_USER_ID);
NotificationHistoryDatabase userHistorySystem = mock(NotificationHistoryDatabase.class);
NotificationHistoryDatabase userHistoryAll = mock(NotificationHistoryDatabase.class);
@@ -257,8 +330,8 @@
mHistoryManager.onUserUnlocked(USER_SYSTEM);
mHistoryManager.replaceNotificationHistoryDatabase(USER_SYSTEM, userHistorySystem);
- mHistoryManager.onUserUnlocked(USER_ALL);
- mHistoryManager.replaceNotificationHistoryDatabase(USER_ALL, userHistoryAll);
+ mHistoryManager.onUserUnlocked(MIN_SECONDARY_USER_ID);
+ mHistoryManager.replaceNotificationHistoryDatabase(MIN_SECONDARY_USER_ID, userHistoryAll);
mHistoryManager.addNotification(hnSystem);
mHistoryManager.addNotification(hnAll);
@@ -270,7 +343,7 @@
@Test
public void testReadNotificationHistory() {
HistoricalNotification hnSystem = getHistoricalNotification("pkg", USER_SYSTEM);
- HistoricalNotification hnAll = getHistoricalNotification("pkg", USER_ALL);
+ HistoricalNotification hnAll = getHistoricalNotification("pkg", MIN_SECONDARY_USER_ID);
NotificationHistoryDatabase userHistorySystem = mock(NotificationHistoryDatabase.class);
NotificationHistoryDatabase userHistoryAll = mock(NotificationHistoryDatabase.class);
@@ -283,8 +356,8 @@
when(nhSystem.getNotificationsToWrite()).thenReturn(nhSystemList);
when(userHistorySystem.readNotificationHistory()).thenReturn(nhSystem);
- mHistoryManager.onUserUnlocked(USER_ALL);
- mHistoryManager.replaceNotificationHistoryDatabase(USER_ALL, userHistoryAll);
+ mHistoryManager.onUserUnlocked(MIN_SECONDARY_USER_ID);
+ mHistoryManager.replaceNotificationHistoryDatabase(MIN_SECONDARY_USER_ID, userHistoryAll);
NotificationHistory nhAll = mock(NotificationHistory.class);
ArrayList<HistoricalNotification> nhAllList = new ArrayList<>();
nhAllList.add(hnAll);
@@ -293,13 +366,47 @@
// ensure read history returns both historical notifs
NotificationHistory nh = mHistoryManager.readNotificationHistory(
- new int[] {USER_SYSTEM, USER_ALL});
+ new int[] {USER_SYSTEM, MIN_SECONDARY_USER_ID});
assertThat(nh.getNotificationsToWrite()).contains(hnSystem);
assertThat(nh.getNotificationsToWrite()).contains(hnAll);
}
@Test
- public void readFilteredNotificationHistory_userUnlocked() {
+ public void testReadNotificationHistory_historyDisabled() {
+ HistoricalNotification hnSystem = getHistoricalNotification("pkg", USER_SYSTEM);
+
+ mHistoryManager.onUserUnlocked(USER_SYSTEM);
+ NotificationHistory nhSystem = mock(NotificationHistory.class);
+ ArrayList<HistoricalNotification> nhSystemList = new ArrayList<>();
+ nhSystemList.add(hnSystem);
+ when(nhSystem.getNotificationsToWrite()).thenReturn(nhSystemList);
+ when(mDb.readNotificationHistory()).thenReturn(nhSystem);
+
+ mHistoryManager.onUserUnlocked(USER_SYSTEM);
+
+ Settings.Secure.putIntForUser(getContext().getContentResolver(),
+ Settings.Secure.NOTIFICATION_HISTORY_ENABLED, 0, USER_SYSTEM);
+ mHistoryManager.mSettingsObserver.update(null, USER_SYSTEM);
+
+ NotificationHistory nh =
+ mHistoryManager.readNotificationHistory(new int[] {USER_SYSTEM,});
+ assertThat(nh.getNotificationsToWrite()).isEmpty();
+ }
+
+ @Test
+ public void testReadFilteredNotificationHistory_userLocked() {
+ NotificationHistory nh =
+ mHistoryManager.readFilteredNotificationHistory(USER_SYSTEM, "", "", 1000);
+ assertThat(nh.getNotificationsToWrite()).isEmpty();
+ }
+
+ @Test
+ public void testReadFilteredNotificationHistory_historyDisabled() {
+ Settings.Secure.putIntForUser(getContext().getContentResolver(),
+ Settings.Secure.NOTIFICATION_HISTORY_ENABLED, 0, USER_SYSTEM);
+ mHistoryManager.mSettingsObserver.update(null, USER_SYSTEM);
+
+ mHistoryManager.onUserUnlocked(USER_SYSTEM);
NotificationHistory nh =
mHistoryManager.readFilteredNotificationHistory(USER_SYSTEM, "", "", 1000);
assertThat(nh.getNotificationsToWrite()).isEmpty();
@@ -312,4 +419,15 @@
mHistoryManager.readFilteredNotificationHistory(USER_SYSTEM, "pkg", "chn", 1000);
verify(mDb, times(1)).readNotificationHistory("pkg", "chn", 1000);
}
+
+ @Test
+ public void testIsHistoryEnabled() {
+ assertThat(mHistoryManager.isHistoryEnabled(USER_SYSTEM)).isTrue();
+
+ Settings.Secure.putIntForUser(getContext().getContentResolver(),
+ Settings.Secure.NOTIFICATION_HISTORY_ENABLED, 0, USER_SYSTEM);
+ mHistoryManager.mSettingsObserver.update(null, USER_SYSTEM);
+
+ assertThat(mHistoryManager.isHistoryEnabled(USER_SYSTEM)).isFalse();
+ }
}
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java b/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java
index 21de668..876e77a 100755
--- a/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java
@@ -218,6 +218,8 @@
@Mock
RankingHandler mRankingHandler;
+ private static final int MAX_POST_DELAY = 1000;
+
private NotificationChannel mTestNotificationChannel = new NotificationChannel(
TEST_CHANNEL_ID, TEST_CHANNEL_ID, IMPORTANCE_DEFAULT);
@@ -246,6 +248,8 @@
mNotificationAssistantAccessGrantedCallback;
@Mock
UserManager mUm;
+ @Mock
+ NotificationHistoryManager mHistoryManager;
// Use a Testable subclass so we can simulate calls from the system without failing.
private static class TestableNotificationManagerService extends NotificationManagerService {
@@ -404,13 +408,13 @@
when(mAssistants.isAdjustmentAllowed(anyString())).thenReturn(true);
- mService.init(mTestableLooper.getLooper(), mRankingHandler,
- mPackageManager, mPackageManagerClient, mockLightsManager,
+ mService.init(mService.new WorkerHandler(mTestableLooper.getLooper()),
+ mRankingHandler, mPackageManager, mPackageManagerClient, mockLightsManager,
mListeners, mAssistants, mConditionProviders,
mCompanionMgr, mSnoozeHelper, mUsageStats, mPolicyFile, mActivityManager,
mGroupHelper, mAm, mAppUsageStats,
mock(DevicePolicyManagerInternal.class), mUgm, mUgmInternal,
- mAppOpsManager, mUm);
+ mAppOpsManager, mUm, mHistoryManager);
mService.onBootPhase(SystemService.PHASE_SYSTEM_SERVICES_READY);
mService.setAudioManager(mAudioManager);
@@ -430,6 +434,7 @@
public void tearDown() throws Exception {
if (mFile != null) mFile.delete();
clearDeviceConfig();
+ mService.unregisterDeviceConfigChange();
InstrumentationRegistry.getInstrumentation()
.getUiAutomation().dropShellPermissionIdentity();
}
@@ -5947,4 +5952,61 @@
}
// TODO: add tests for the rest of the non-empty cases
+
+ @Test
+ public void testOnUnlockUser() {
+ UserInfo ui = new UserInfo();
+ ui.id = 10;
+ mService.onUnlockUser(ui);
+ waitForIdle();
+
+ verify(mHistoryManager, timeout(MAX_POST_DELAY).times(1)).onUserUnlocked(ui.id);
+ }
+
+ @Test
+ public void testOnStopUser() {
+ UserInfo ui = new UserInfo();
+ ui.id = 10;
+ mService.onStopUser(ui);
+ waitForIdle();
+
+ verify(mHistoryManager, timeout(MAX_POST_DELAY).times(1)).onUserStopped(ui.id);
+ }
+
+ @Test
+ public void testOnBootPhase() {
+ mService.onBootPhase(SystemService.PHASE_ACTIVITY_MANAGER_READY);
+
+ verify(mHistoryManager, never()).onBootPhaseAppsCanStart();
+
+ mService.onBootPhase(SystemService.PHASE_THIRD_PARTY_APPS_CAN_START);
+
+ verify(mHistoryManager, times(1)).onBootPhaseAppsCanStart();
+ }
+
+ @Test
+ public void testHandleOnPackageChanged() {
+ String[] pkgs = new String[] {PKG, PKG_N_MR1};
+ int[] uids = new int[] {mUid, UserHandle.PER_USER_RANGE + 1};
+
+ mService.handleOnPackageChanged(false, USER_SYSTEM, pkgs, uids);
+
+ verify(mHistoryManager, never()).onPackageRemoved(anyInt(), anyString());
+
+ mService.handleOnPackageChanged(true, USER_SYSTEM, pkgs, uids);
+
+ verify(mHistoryManager, times(1)).onPackageRemoved(UserHandle.getUserId(uids[0]), pkgs[0]);
+ verify(mHistoryManager, times(1)).onPackageRemoved(UserHandle.getUserId(uids[1]), pkgs[1]);
+ }
+
+ @Test
+ public void testNotificationHistory_addNoisyNotification() throws Exception {
+ NotificationRecord nr = generateNotificationRecord(mTestNotificationChannel,
+ null /* tvExtender */, false);
+ mBinderService.enqueueNotificationWithTag(PKG, PKG, nr.sbn.getTag(),
+ nr.sbn.getId(), nr.sbn.getNotification(), nr.sbn.getUserId());
+ waitForIdle();
+
+ verify(mHistoryManager, times(1)).addNotification(any());
+ }
}
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/RoleObserverTest.java b/services/tests/uiservicestests/src/com/android/server/notification/RoleObserverTest.java
index 7f9f489..c828f02 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/RoleObserverTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/RoleObserverTest.java
@@ -129,7 +129,8 @@
mRoleObserver = mService.new RoleObserver(mRoleManager, mPm, mExecutor);
try {
- mService.init(mock(Looper.class), mock(RankingHandler.class),
+ mService.init(mService.new WorkerHandler(mock(Looper.class)),
+ mock(RankingHandler.class),
mock(IPackageManager.class), mock(PackageManager.class),
mock(LightsManager.class),
mock(NotificationListeners.class), mock(NotificationAssistants.class),
@@ -140,7 +141,7 @@
mock(UsageStatsManagerInternal.class),
mock(DevicePolicyManagerInternal.class), mock(IUriGrantsManager.class),
mock(UriGrantsManagerInternal.class),
- mock(AppOpsManager.class), mUm);
+ mock(AppOpsManager.class), mUm, mock(NotificationHistoryManager.class));
} catch (SecurityException e) {
if (!e.getMessage().contains("Permission Denial: not allowed to send broadcast")) {
throw e;
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/SnoozeHelperTest.java b/services/tests/uiservicestests/src/com/android/server/notification/SnoozeHelperTest.java
index 36175a9..5841e59 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/SnoozeHelperTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/SnoozeHelperTest.java
@@ -350,6 +350,26 @@
}
@Test
+ public void testUpdateAfterCancel() throws Exception {
+ // snooze a notification
+ NotificationRecord r = getNotificationRecord("pkg", 1, "one", UserHandle.SYSTEM);
+ mSnoozeHelper.snooze(r , 1000);
+
+ // cancel the notification
+ mSnoozeHelper.cancel(UserHandle.USER_SYSTEM, false);
+
+ // update the notification
+ r = getNotificationRecord("pkg", 1, "one", UserHandle.SYSTEM);
+ mSnoozeHelper.update(UserHandle.USER_SYSTEM, r);
+
+ // verify callback is called when repost (snooze is expired)
+ verify(mCallback, never()).repost(anyInt(), any(NotificationRecord.class));
+ mSnoozeHelper.repost(r.getKey(), UserHandle.USER_SYSTEM);
+ verify(mCallback, times(1)).repost(UserHandle.USER_SYSTEM, r);
+ assertFalse(r.isCanceled);
+ }
+
+ @Test
public void testGetSnoozedByUser() throws Exception {
NotificationRecord r = getNotificationRecord("pkg", 1, "one", UserHandle.SYSTEM);
NotificationRecord r2 = getNotificationRecord("pkg", 2, "two", UserHandle.SYSTEM);
diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityMetricsLaunchObserverTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityMetricsLaunchObserverTests.java
index 734761f..12074dc3 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ActivityMetricsLaunchObserverTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ActivityMetricsLaunchObserverTests.java
@@ -18,6 +18,7 @@
import static android.app.ActivityManager.START_SUCCESS;
import static android.app.ActivityManager.START_TASK_TO_FRONT;
+import static android.content.ComponentName.createRelative;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.mock;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify;
@@ -34,7 +35,7 @@
import android.content.Intent;
import android.os.SystemClock;
import android.platform.test.annotations.Presubmit;
-import android.util.SparseIntArray;
+import android.util.ArrayMap;
import androidx.test.filters.SmallTest;
@@ -58,11 +59,13 @@
@Presubmit
public class ActivityMetricsLaunchObserverTests extends ActivityTestsBase {
private ActivityMetricsLogger mActivityMetricsLogger;
+ private ActivityMetricsLogger.LaunchingState mLaunchingState;
private ActivityMetricsLaunchObserver mLaunchObserver;
private ActivityMetricsLaunchObserverRegistry mLaunchObserverRegistry;
private ActivityRecord mTrampolineActivity;
private ActivityRecord mTopActivity;
+ private boolean mLaunchTopByTrampoline;
@Before
public void setUpAMLO() {
@@ -76,9 +79,13 @@
// Sometimes we need an ActivityRecord for ActivityMetricsLogger to do anything useful.
// This seems to be the easiest way to create an ActivityRecord.
- mTrampolineActivity = new ActivityBuilder(mService).setCreateTask(true).build();
+ mTrampolineActivity = new ActivityBuilder(mService)
+ .setCreateTask(true)
+ .setComponent(createRelative(DEFAULT_COMPONENT_PACKAGE_NAME, "TrampolineActivity"))
+ .build();
mTopActivity = new ActivityBuilder(mService)
.setTask(mTrampolineActivity.getTask())
+ .setComponent(createRelative(DEFAULT_COMPONENT_PACKAGE_NAME, "TopActivity"))
.build();
}
@@ -114,42 +121,42 @@
return verify(mock, timeout(TimeUnit.SECONDS.toMillis(5)));
}
- private void onIntentStarted() {
- Intent intent = new Intent("action 1");
+ private void onIntentStarted(Intent intent) {
+ notifyActivityLaunching(intent);
- mActivityMetricsLogger.notifyActivityLaunching(intent);
-
- verifyAsync(mLaunchObserver).onIntentStarted(eq(intent), anyLong());
+ // If it is launching top activity from trampoline activity, the observer shouldn't receive
+ // onActivityLaunched because the activities should belong to the same transition.
+ if (!mLaunchTopByTrampoline) {
+ verifyAsync(mLaunchObserver).onIntentStarted(eq(intent), anyLong());
+ }
verifyNoMoreInteractions(mLaunchObserver);
}
@Test
public void testOnIntentFailed() {
- onIntentStarted();
+ onIntentStarted(new Intent("testOnIntentFailed"));
// Bringing an intent that's already running 'to front' is not considered
// as an ACTIVITY_LAUNCHED state transition.
- mActivityMetricsLogger.notifyActivityLaunched(START_TASK_TO_FRONT,
- null /* launchedActivity */);
+ notifyActivityLaunched(START_TASK_TO_FRONT, null /* launchedActivity */);
verifyAsync(mLaunchObserver).onIntentFailed();
verifyNoMoreInteractions(mLaunchObserver);
}
- private void onActivityLaunched() {
- onIntentStarted();
+ private void onActivityLaunched(ActivityRecord activity) {
+ onIntentStarted(activity.intent);
+ notifyActivityLaunched(START_SUCCESS, activity);
- mActivityMetricsLogger.notifyActivityLaunched(START_SUCCESS, mTopActivity);
-
- verifyAsync(mLaunchObserver).onActivityLaunched(eqProto(mTopActivity), anyInt());
+ verifyAsync(mLaunchObserver).onActivityLaunched(eqProto(activity), anyInt());
verifyNoMoreInteractions(mLaunchObserver);
}
@Test
public void testOnActivityLaunchFinished() {
- onActivityLaunched();
+ onActivityLaunched(mTopActivity);
- notifyTransitionStarting();
+ notifyTransitionStarting(mTopActivity);
notifyWindowsDrawn(mTopActivity);
verifyAsync(mLaunchObserver).onActivityLaunchFinished(eqProto(mTopActivity), anyLong());
@@ -158,12 +165,12 @@
@Test
public void testOnActivityLaunchCancelled_hasDrawn() {
- onActivityLaunched();
+ onActivityLaunched(mTopActivity);
mTopActivity.mVisibleRequested = mTopActivity.mDrawn = true;
// Cannot time already-visible activities.
- mActivityMetricsLogger.notifyActivityLaunched(START_TASK_TO_FRONT, mTopActivity);
+ notifyActivityLaunched(START_TASK_TO_FRONT, mTopActivity);
verifyAsync(mLaunchObserver).onActivityLaunchCancelled(eqProto(mTopActivity));
verifyNoMoreInteractions(mLaunchObserver);
@@ -182,8 +189,8 @@
.build();
mSupervisor.readyToResume();
- mActivityMetricsLogger.notifyActivityLaunching(noDrawnActivity.intent);
- mActivityMetricsLogger.notifyActivityLaunched(START_SUCCESS, noDrawnActivity);
+ notifyActivityLaunching(noDrawnActivity.intent);
+ notifyActivityLaunched(START_SUCCESS, noDrawnActivity);
noDrawnActivity.destroyIfPossible("test");
mActivityMetricsLogger.notifyVisibilityChanged(noDrawnActivity);
@@ -193,12 +200,12 @@
@Test
public void testOnReportFullyDrawn() {
- onActivityLaunched();
+ onActivityLaunched(mTopActivity);
// The activity reports fully drawn before windows drawn, then the fully drawn event will
// be pending (see {@link WindowingModeTransitionInfo#pendingFullyDrawn}).
mActivityMetricsLogger.logAppTransitionReportedDrawn(mTopActivity, false);
- notifyTransitionStarting();
+ notifyTransitionStarting(mTopActivity);
// The pending fully drawn event should send when the actual windows drawn event occurs.
notifyWindowsDrawn(mTopActivity);
@@ -208,35 +215,56 @@
}
private void onActivityLaunchedTrampoline() {
- onIntentStarted();
-
- mActivityMetricsLogger.notifyActivityLaunched(START_SUCCESS, mTrampolineActivity);
+ onIntentStarted(mTrampolineActivity.intent);
+ notifyActivityLaunched(START_SUCCESS, mTrampolineActivity);
verifyAsync(mLaunchObserver).onActivityLaunched(eqProto(mTrampolineActivity), anyInt());
// A second, distinct, activity launch is coalesced into the current app launch sequence.
- mActivityMetricsLogger.notifyActivityLaunched(START_SUCCESS, mTopActivity);
+ mLaunchTopByTrampoline = true;
+ onIntentStarted(mTopActivity.intent);
+ notifyActivityLaunched(START_SUCCESS, mTopActivity);
+ // The observer shouldn't receive onActivityLaunched for an existing transition.
verifyNoMoreInteractions(mLaunchObserver);
}
- private void notifyTransitionStarting() {
- mActivityMetricsLogger.notifyTransitionStarting(new SparseIntArray(),
- SystemClock.elapsedRealtimeNanos());
+ private void notifyActivityLaunching(Intent intent) {
+ final ActivityMetricsLogger.LaunchingState previousState = mLaunchingState;
+ mLaunchingState = mActivityMetricsLogger.notifyActivityLaunching(intent,
+ mLaunchTopByTrampoline ? mTrampolineActivity : null /* caller */);
+ if (mLaunchTopByTrampoline) {
+ // The transition of TrampolineActivity has not been completed, so when the next
+ // activity is starting from it, the same launching state should be returned.
+ assertWithMessage("Use existing launching state for a caller in active transition")
+ .that(previousState).isEqualTo(mLaunchingState);
+ }
+ }
+
+ private void notifyActivityLaunched(int resultCode, ActivityRecord activity) {
+ mActivityMetricsLogger.notifyActivityLaunched(mLaunchingState, resultCode, activity);
+ }
+
+ private void notifyTransitionStarting(ActivityRecord activity) {
+ final ArrayMap<ActivityRecord, Integer> reasons = new ArrayMap<>();
+ reasons.put(activity, ActivityTaskManagerInternal.APP_TRANSITION_SPLASH_SCREEN);
+ mActivityMetricsLogger.notifyTransitionStarting(reasons);
}
private void notifyWindowsDrawn(ActivityRecord r) {
- mActivityMetricsLogger.notifyWindowsDrawn(r.getWindowingMode(),
- SystemClock.elapsedRealtimeNanos());
+ mActivityMetricsLogger.notifyWindowsDrawn(r, SystemClock.elapsedRealtimeNanos());
}
@Test
public void testOnActivityLaunchFinishedTrampoline() {
onActivityLaunchedTrampoline();
- notifyTransitionStarting();
+ notifyTransitionStarting(mTopActivity);
notifyWindowsDrawn(mTrampolineActivity);
+ assertWithMessage("Trampoline activity is drawn but the top activity is not yet")
+ .that(mLaunchingState.allDrawn()).isFalse();
+
notifyWindowsDrawn(mTopActivity);
verifyAsync(mLaunchObserver).onActivityLaunchFinished(eqProto(mTopActivity), anyLong());
@@ -244,13 +272,23 @@
}
@Test
+ public void testDoNotCountInvisibleActivityToBeDrawn() {
+ onActivityLaunchedTrampoline();
+ mTrampolineActivity.setVisibility(false);
+ notifyWindowsDrawn(mTopActivity);
+
+ assertWithMessage("Trampoline activity is invisble so there should be no undrawn windows")
+ .that(mLaunchingState.allDrawn()).isTrue();
+ }
+
+ @Test
public void testOnActivityLaunchCancelledTrampoline() {
onActivityLaunchedTrampoline();
mTopActivity.mDrawn = true;
// Cannot time already-visible activities.
- mActivityMetricsLogger.notifyActivityLaunched(START_TASK_TO_FRONT, mTopActivity);
+ notifyActivityLaunched(START_TASK_TO_FRONT, mTopActivity);
verifyAsync(mLaunchObserver).onActivityLaunchCancelled(eqProto(mTopActivity));
verifyNoMoreInteractions(mLaunchObserver);
@@ -268,4 +306,32 @@
.that(activityRecordToProto(mTrampolineActivity).length)
.isAtMost(ActivityMetricsLogger.LAUNCH_OBSERVER_ACTIVITY_RECORD_PROTO_CHUNK_SIZE);
}
+
+ @Test
+ public void testConcurrentLaunches() {
+ onActivityLaunched(mTopActivity);
+ final ActivityMetricsLogger.LaunchingState previousState = mLaunchingState;
+
+ final ActivityRecord otherActivity = new ActivityBuilder(mService)
+ .setComponent(createRelative(DEFAULT_COMPONENT_PACKAGE_NAME, "OtherActivity"))
+ .setCreateTask(true)
+ .build();
+ // Assume the calling uid is different from the uid of TopActivity, so a new launching
+ // state should be created here.
+ onActivityLaunched(otherActivity);
+
+ assertWithMessage("Different callers should get 2 indepedent launching states")
+ .that(previousState).isNotEqualTo(mLaunchingState);
+
+ notifyTransitionStarting(otherActivity);
+ notifyWindowsDrawn(otherActivity);
+
+ verifyAsync(mLaunchObserver).onActivityLaunchFinished(eqProto(otherActivity), anyLong());
+
+ // The first transition should still be valid.
+ notifyTransitionStarting(mTopActivity);
+ notifyWindowsDrawn(mTopActivity);
+
+ verifyAsync(mLaunchObserver).onActivityLaunchFinished(eqProto(mTopActivity), anyLong());
+ }
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java
index a2e4233..c2b8827 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java
@@ -66,6 +66,7 @@
import android.app.servertransaction.ClientTransaction;
import android.app.servertransaction.PauseActivityItem;
import android.content.ComponentName;
+import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.content.res.Resources;
@@ -401,6 +402,20 @@
}
@Test
+ public void testShouldResumeOrPauseWithResults() {
+ mActivity.setState(ActivityStack.ActivityState.STOPPED, "Testing");
+ spyOn(mStack);
+
+ ActivityRecord topActivity = new ActivityBuilder(mService).setTask(mTask).build();
+ mActivity.addResultLocked(topActivity, "resultWho", 0, 0, new Intent());
+ topActivity.finishing = true;
+
+ doReturn(STACK_VISIBILITY_VISIBLE).when(mStack).getVisibility(null);
+ assertEquals(true, mActivity.shouldResumeActivity(null /* activeActivity */));
+ assertEquals(false, mActivity.shouldPauseActivity(null /*activeActivity */));
+ }
+
+ @Test
public void testPushConfigurationWhenLaunchTaskBehind() throws Exception {
mActivity = new ActivityBuilder(mService)
.setTask(mTask)
@@ -899,7 +914,7 @@
// Add another stack to become focused and make the activity there visible. This way it
// simulates finishing in non-focused stack in split-screen.
final ActivityStack stack = new StackBuilder(mRootActivityContainer).build();
- final ActivityRecord focusedActivity = stack.getChildAt(0).getChildAt(0);
+ final ActivityRecord focusedActivity = stack.getTopMostActivity();
focusedActivity.nowVisible = true;
focusedActivity.mVisibleRequested = true;
focusedActivity.setState(RESUMED, "test");
diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityStackTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityStackTests.java
index ba54859..c8795ce 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ActivityStackTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ActivityStackTests.java
@@ -241,7 +241,7 @@
final RootActivityContainer.FindTaskResult result =
new RootActivityContainer.FindTaskResult();
- mStack.findTaskLocked(r, result);
+ result.process(r, mStack);
assertEquals(r, task.getTopNonFinishingActivity(false /* includeOverlays */));
assertEquals(taskOverlay, task.getTopNonFinishingActivity(true /* includeOverlays */));
@@ -266,14 +266,14 @@
final ActivityRecord r1 = new ActivityBuilder(mService).setComponent(
target).setTargetActivity(targetActivity).build();
RootActivityContainer.FindTaskResult result = new RootActivityContainer.FindTaskResult();
- mStack.findTaskLocked(r1, result);
+ result.process(r1, mStack);
assertThat(result.mRecord).isNotNull();
// Using alias activity to find task.
final ActivityRecord r2 = new ActivityBuilder(mService).setComponent(
alias).setTargetActivity(targetActivity).build();
result = new RootActivityContainer.FindTaskResult();
- mStack.findTaskLocked(r2, result);
+ result.process(r2, mStack);
assertThat(result.mRecord).isNotNull();
}
@@ -846,9 +846,9 @@
mStack.mResumedActivity = secondActivity;
// Note the activities have non-null ActivityRecord.app, so it won't remove directly.
- mStack.finishDisabledPackageActivitiesLocked(firstActivity.packageName,
- null /* filterByClasses */, true /* doit */, true /* evenPersistent */,
- UserHandle.USER_ALL);
+ mRootActivityContainer.mFinishDisabledPackageActivitiesHelper.process(
+ firstActivity.packageName, null /* filterByClasses */, true /* doit */,
+ true /* evenPersistent */, UserHandle.USER_ALL);
// If the activity is disabled with {@link android.content.pm.PackageManager#DONT_KILL_APP}
// the activity should still follow the normal flow to finish and destroy.
@@ -875,9 +875,9 @@
assertEquals(2, mTask.getChildCount());
- mStack.finishDisabledPackageActivitiesLocked(activity.packageName,
- null /* filterByClasses */, true /* doit */, true /* evenPersistent */,
- UserHandle.USER_ALL);
+ mRootActivityContainer.mFinishDisabledPackageActivitiesHelper.process(
+ activity.packageName, null /* filterByClasses */, true /* doit */,
+ true /* evenPersistent */, UserHandle.USER_ALL);
// Although the overlay activity is in another package, the non-overlay activities are
// removed from the task. Since the overlay activity should be removed as well, the task
diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityStartInterceptorTest.java b/services/tests/wmtests/src/com/android/server/wm/ActivityStartInterceptorTest.java
index 4165052..d78e3af 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ActivityStartInterceptorTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ActivityStartInterceptorTest.java
@@ -167,16 +167,8 @@
@Test
public void testSuspendedPackage() {
- mAInfo.applicationInfo.flags = FLAG_SUSPENDED;
final String suspendingPackage = "com.test.suspending.package";
- final SuspendDialogInfo dialogInfo = new SuspendDialogInfo.Builder()
- .setMessage("Test Message")
- .setIcon(0x11110001)
- .build();
- when(mPackageManagerInternal.getSuspendingPackage(TEST_PACKAGE_NAME, TEST_USER_ID))
- .thenReturn(suspendingPackage);
- when(mPackageManagerInternal.getSuspendedDialogInfo(TEST_PACKAGE_NAME, suspendingPackage,
- TEST_USER_ID)).thenReturn(dialogInfo);
+ final SuspendDialogInfo dialogInfo = suspendPackage(suspendingPackage);
// THEN calling intercept returns true
assertTrue(mInterceptor.intercept(null, null, mAInfo, null, null, 0, 0, null));
@@ -190,6 +182,19 @@
assertEquals(TEST_USER_ID, mInterceptor.mIntent.getIntExtra(Intent.EXTRA_USER_ID, -1000));
}
+ private SuspendDialogInfo suspendPackage(String suspendingPackage) {
+ mAInfo.applicationInfo.flags = FLAG_SUSPENDED;
+ final SuspendDialogInfo dialogInfo = new SuspendDialogInfo.Builder()
+ .setMessage("Test Message")
+ .setIcon(0x11110001)
+ .build();
+ when(mPackageManagerInternal.getSuspendingPackage(TEST_PACKAGE_NAME, TEST_USER_ID))
+ .thenReturn(suspendingPackage);
+ when(mPackageManagerInternal.getSuspendedDialogInfo(TEST_PACKAGE_NAME, suspendingPackage,
+ TEST_USER_ID)).thenReturn(dialogInfo);
+ return dialogInfo;
+ }
+
@Test
public void testInterceptQuietProfile() {
// GIVEN that the user the activity is starting as is currently in quiet mode
@@ -204,6 +209,20 @@
}
@Test
+ public void testInterceptQuietProfileWhenPackageSuspended() {
+ suspendPackage("com.test.suspending.package");
+ // GIVEN that the user the activity is starting as is currently in quiet mode
+ when(mUserManager.isQuietModeEnabled(eq(UserHandle.of(TEST_USER_ID)))).thenReturn(true);
+
+ // THEN calling intercept returns true
+ assertTrue(mInterceptor.intercept(null, null, mAInfo, null, null, 0, 0, null));
+
+ // THEN the returned intent is the quiet mode intent
+ assertTrue(UnlaunchableAppActivity.createInQuietModeDialogIntent(TEST_USER_ID)
+ .filterEquals(mInterceptor.mIntent));
+ }
+
+ @Test
public void testWorkChallenge() {
// GIVEN that the user the activity is starting as is currently locked
when(mAmInternal.shouldConfirmCredentials(TEST_USER_ID)).thenReturn(true);
diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java
index ae1bb8e..c712d6d 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java
@@ -962,4 +962,19 @@
}
assertThat(exceptionCaught).isTrue();
}
+
+ @Test
+ public void testRecycleTaskFromAnotherUser() {
+ final ActivityStarter starter = prepareStarter(0 /* flags */);
+ starter.mStartActivity = new ActivityBuilder(mService).build();
+ final Task task = new TaskBuilder(mService.mStackSupervisor)
+ .setStack(mService.mRootActivityContainer.getDefaultDisplay().createStack(
+ WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, true /* onTop */))
+ .setUserId(10)
+ .build();
+
+ final int result = starter.recycleTask(task, null, null);
+ assertThat(result == START_SUCCESS).isTrue();
+ assertThat(starter.mAddingToTask).isTrue();
+ }
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/AppWindowTokenTests.java b/services/tests/wmtests/src/com/android/server/wm/AppWindowTokenTests.java
index 9f3bd75..0382bf8 100644
--- a/services/tests/wmtests/src/com/android/server/wm/AppWindowTokenTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/AppWindowTokenTests.java
@@ -54,6 +54,7 @@
import android.content.res.Configuration;
import android.graphics.Rect;
import android.platform.test.annotations.Presubmit;
+import android.view.IWindowManager;
import android.view.Surface;
import android.view.WindowManager;
@@ -334,7 +335,7 @@
mActivity.setOrientation(SCREEN_ORIENTATION_LANDSCAPE);
mDisplayContent.getDisplayRotation().setFixedToUserRotation(
- DisplayRotation.FIXED_TO_USER_ROTATION_ENABLED);
+ IWindowManager.FIXED_TO_USER_ROTATION_ENABLED);
reset(mTask);
mActivity.reportDescendantOrientationChangeIfNeeded();
verify(mTask).onConfigurationChanged(any(Configuration.class));
diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java b/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java
index 5070fb6..3eda980 100644
--- a/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java
@@ -82,6 +82,7 @@
import android.view.IDisplayWindowRotationCallback;
import android.view.IDisplayWindowRotationController;
import android.view.ISystemGestureExclusionListener;
+import android.view.IWindowManager;
import android.view.MotionEvent;
import android.view.Surface;
import android.view.ViewRootImpl;
@@ -704,7 +705,7 @@
public void testAllowsTopmostFullscreenOrientation() {
final DisplayContent dc = createNewDisplay();
dc.getDisplayRotation().setFixedToUserRotation(
- DisplayRotation.FIXED_TO_USER_ROTATION_DISABLED);
+ IWindowManager.FIXED_TO_USER_ROTATION_DISABLED);
final ActivityStack stack =
new ActivityTestsBase.StackBuilder(mWm.mAtmService.mRootActivityContainer)
@@ -735,7 +736,7 @@
public void testOnDescendantOrientationRequestChanged() {
final DisplayContent dc = createNewDisplay();
dc.getDisplayRotation().setFixedToUserRotation(
- DisplayRotation.FIXED_TO_USER_ROTATION_DISABLED);
+ IWindowManager.FIXED_TO_USER_ROTATION_DISABLED);
final int newOrientation = dc.getLastOrientation() == SCREEN_ORIENTATION_LANDSCAPE
? SCREEN_ORIENTATION_PORTRAIT
: SCREEN_ORIENTATION_LANDSCAPE;
@@ -757,7 +758,7 @@
public void testOnDescendantOrientationRequestChanged_FrozenToUserRotation() {
final DisplayContent dc = createNewDisplay();
dc.getDisplayRotation().setFixedToUserRotation(
- DisplayRotation.FIXED_TO_USER_ROTATION_ENABLED);
+ IWindowManager.FIXED_TO_USER_ROTATION_ENABLED);
final int newOrientation = dc.getLastOrientation() == SCREEN_ORIENTATION_LANDSCAPE
? SCREEN_ORIENTATION_PORTRAIT
: SCREEN_ORIENTATION_LANDSCAPE;
diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayRotationTests.java b/services/tests/wmtests/src/com/android/server/wm/DisplayRotationTests.java
index bb4d35f..da807d8 100644
--- a/services/tests/wmtests/src/com/android/server/wm/DisplayRotationTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/DisplayRotationTests.java
@@ -19,6 +19,9 @@
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
+import static android.view.IWindowManager.FIXED_TO_USER_ROTATION_DEFAULT;
+import static android.view.IWindowManager.FIXED_TO_USER_ROTATION_DISABLED;
+import static android.view.IWindowManager.FIXED_TO_USER_ROTATION_ENABLED;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.any;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.anyBoolean;
@@ -32,9 +35,6 @@
import static com.android.dx.mockito.inline.extended.ExtendedMockito.times;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.when;
-import static com.android.server.wm.DisplayRotation.FIXED_TO_USER_ROTATION_DEFAULT;
-import static com.android.server.wm.DisplayRotation.FIXED_TO_USER_ROTATION_DISABLED;
-import static com.android.server.wm.DisplayRotation.FIXED_TO_USER_ROTATION_ENABLED;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayWindowSettingsTests.java b/services/tests/wmtests/src/com/android/server/wm/DisplayWindowSettingsTests.java
index e375f83..4d2183b 100644
--- a/services/tests/wmtests/src/com/android/server/wm/DisplayWindowSettingsTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/DisplayWindowSettingsTests.java
@@ -18,6 +18,9 @@
import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED;
+import static android.view.IWindowManager.FIXED_TO_USER_ROTATION_DEFAULT;
+import static android.view.IWindowManager.FIXED_TO_USER_ROTATION_DISABLED;
+import static android.view.IWindowManager.FIXED_TO_USER_ROTATION_ENABLED;
import static android.view.WindowManager.REMOVE_CONTENT_MODE_DESTROY;
import static android.view.WindowManager.REMOVE_CONTENT_MODE_MOVE_TO_PRIMARY;
@@ -28,9 +31,6 @@
import static com.android.dx.mockito.inline.extended.ExtendedMockito.mock;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify;
-import static com.android.server.wm.DisplayRotation.FIXED_TO_USER_ROTATION_DEFAULT;
-import static com.android.server.wm.DisplayRotation.FIXED_TO_USER_ROTATION_DISABLED;
-import static com.android.server.wm.DisplayRotation.FIXED_TO_USER_ROTATION_ENABLED;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
diff --git a/services/tests/wmtests/src/com/android/server/wm/HighRefreshRateBlacklistTest.java b/services/tests/wmtests/src/com/android/server/wm/HighRefreshRateBlacklistTest.java
index 5fb6f45..56cb447 100644
--- a/services/tests/wmtests/src/com/android/server/wm/HighRefreshRateBlacklistTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/HighRefreshRateBlacklistTest.java
@@ -120,6 +120,23 @@
assertFalse(mBlacklist.isBlacklisted(APP3));
}
+ @Test
+ public void testOverriddenByDeviceConfigUnrelatedFlagChanged() {
+ final Resources r = createResources(APP1);
+ final FakeDeviceConfig config = new FakeDeviceConfig();
+ mBlacklist = new HighRefreshRateBlacklist(r, config);
+ config.setBlacklist(APP2 + "," + APP3);
+ assertFalse(mBlacklist.isBlacklisted(APP1));
+ assertTrue(mBlacklist.isBlacklisted(APP2));
+ assertTrue(mBlacklist.isBlacklisted(APP3));
+
+ // Change an unrelated flag in our namespace and verify that the blacklist is intact
+ config.putPropertyAndNotify(DeviceConfig.NAMESPACE_DISPLAY_MANAGER, "someKey", "someValue");
+ assertFalse(mBlacklist.isBlacklisted(APP1));
+ assertTrue(mBlacklist.isBlacklisted(APP2));
+ assertTrue(mBlacklist.isBlacklisted(APP3));
+ }
+
private Resources createResources(String... defaultBlacklist) {
Resources r = mock(Resources.class);
when(r.getStringArray(R.array.config_highRefreshRateBlacklist))
diff --git a/services/tests/wmtests/src/com/android/server/wm/RootActivityContainerTests.java b/services/tests/wmtests/src/com/android/server/wm/RootActivityContainerTests.java
index e2bdf87..4257249 100644
--- a/services/tests/wmtests/src/com/android/server/wm/RootActivityContainerTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/RootActivityContainerTests.java
@@ -73,6 +73,7 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import java.util.function.Consumer;
/**
* Tests for the {@link RootActivityContainer} class.
@@ -149,9 +150,7 @@
final Task task = stack.getAllTasks().get(0);
final ArrayList<ActivityRecord> stackActivities = new ArrayList<>();
- for (int i = 0; i < task.getChildCount(); i++) {
- stackActivities.add(task.getChildAt(i));
- }
+ task.forAllActivities((Consumer<ActivityRecord>) stackActivities::add, false);
assertEquals("Expecting " + Arrays.deepToString(activities) + " got " + stackActivities,
stackActivities.size(), activities != null ? activities.length : 0);
diff --git a/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java b/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java
index b9e1d4b..212931b 100644
--- a/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java
@@ -290,10 +290,12 @@
public void testFixedScreenLayoutSizeBits() {
setUpApp(new TestActivityDisplay.Builder(mService, 1000, 2500).build());
final int fixedScreenLayout = Configuration.SCREENLAYOUT_LONG_NO
- | Configuration.SCREENLAYOUT_SIZE_NORMAL;
+ | Configuration.SCREENLAYOUT_SIZE_NORMAL
+ | Configuration.SCREENLAYOUT_COMPAT_NEEDED;
final int layoutMask = Configuration.SCREENLAYOUT_LONG_MASK
| Configuration.SCREENLAYOUT_SIZE_MASK
- | Configuration.SCREENLAYOUT_LAYOUTDIR_MASK;
+ | Configuration.SCREENLAYOUT_LAYOUTDIR_MASK
+ | Configuration.SCREENLAYOUT_COMPAT_NEEDED;
Configuration c = new Configuration(mTask.getRequestedOverrideConfiguration());
c.screenLayout = fixedScreenLayout | Configuration.SCREENLAYOUT_LAYOUTDIR_LTR;
mTask.onRequestedOverrideConfigurationChanged(c);
diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskRecordTests.java b/services/tests/wmtests/src/com/android/server/wm/TaskRecordTests.java
index c8f81f4..599edb1 100644
--- a/services/tests/wmtests/src/com/android/server/wm/TaskRecordTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/TaskRecordTests.java
@@ -27,6 +27,7 @@
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
import static android.util.DisplayMetrics.DENSITY_DEFAULT;
+import static android.view.IWindowManager.FIXED_TO_USER_ROTATION_ENABLED;
import static android.view.Surface.ROTATION_0;
import static android.view.Surface.ROTATION_90;
@@ -36,7 +37,6 @@
import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify;
import static com.android.server.policy.WindowManagerPolicy.USER_ROTATION_FREE;
-import static com.android.server.wm.DisplayRotation.FIXED_TO_USER_ROTATION_ENABLED;
import static com.google.common.truth.Truth.assertThat;
@@ -471,8 +471,9 @@
// Add an extra activity on top of the root one
new ActivityBuilder(mService).setTask(task).build();
- assertEquals("The root activity in the task must be reported.",
- 0, task.findRootIndex(false /* effectiveRoot*/));
+ assertEquals("The root activity in the task must be reported.", task.getChildAt(0),
+ task.getRootActivity(
+ true /*ignoreRelinquishIdentity*/, true /*setToBottomIfNone*/));
}
/**
@@ -483,14 +484,15 @@
public void testFindRootIndex_finishing() {
final Task task = getTestTask();
// Add extra two activities and mark the two on the bottom as finishing.
- final ActivityRecord activity0 = task.getChildAt(0);
+ final ActivityRecord activity0 = task.getBottomMostActivity();
activity0.finishing = true;
final ActivityRecord activity1 = new ActivityBuilder(mService).setTask(task).build();
activity1.finishing = true;
new ActivityBuilder(mService).setTask(task).build();
assertEquals("The first non-finishing activity in the task must be reported.",
- 2, task.findRootIndex(false /* effectiveRoot*/));
+ task.getChildAt(2), task.getRootActivity(
+ true /*ignoreRelinquishIdentity*/, true /*setToBottomIfNone*/));
}
/**
@@ -504,7 +506,8 @@
new ActivityBuilder(mService).setTask(task).build();
assertEquals("The root activity in the task must be reported.",
- 0, task.findRootIndex(true /* effectiveRoot*/));
+ task.getChildAt(0), task.getRootActivity(
+ false /*ignoreRelinquishIdentity*/, true /*setToBottomIfNone*/));
}
/**
@@ -516,14 +519,15 @@
final Task task = getTestTask();
// Add extra two activities. Mark the one on the bottom with "relinquishTaskIdentity" and
// one above as finishing.
- final ActivityRecord activity0 = task.getChildAt(0);
+ final ActivityRecord activity0 = task.getBottomMostActivity();
activity0.info.flags |= FLAG_RELINQUISH_TASK_IDENTITY;
final ActivityRecord activity1 = new ActivityBuilder(mService).setTask(task).build();
activity1.finishing = true;
new ActivityBuilder(mService).setTask(task).build();
assertEquals("The first non-finishing activity and non-relinquishing task identity "
- + "must be reported.", 2, task.findRootIndex(true /* effectiveRoot*/));
+ + "must be reported.", task.getChildAt(2), task.getRootActivity(
+ false /*ignoreRelinquishIdentity*/, true /*setToBottomIfNone*/));
}
/**
@@ -534,10 +538,11 @@
public void testFindRootIndex_effectiveRoot_relinquishingAndSingleActivity() {
final Task task = getTestTask();
// Set relinquishTaskIdentity for the only activity in the task
- task.getChildAt(0).info.flags |= FLAG_RELINQUISH_TASK_IDENTITY;
+ task.getBottomMostActivity().info.flags |= FLAG_RELINQUISH_TASK_IDENTITY;
assertEquals("The root activity in the task must be reported.",
- 0, task.findRootIndex(true /* effectiveRoot*/));
+ task.getChildAt(0), task.getRootActivity(
+ false /*ignoreRelinquishIdentity*/, true /*setToBottomIfNone*/));
}
/**
@@ -548,13 +553,14 @@
public void testFindRootIndex_effectiveRoot_relinquishingMultipleActivities() {
final Task task = getTestTask();
// Set relinquishTaskIdentity for all activities in the task
- final ActivityRecord activity0 = task.getChildAt(0);
+ final ActivityRecord activity0 = task.getBottomMostActivity();
activity0.info.flags |= FLAG_RELINQUISH_TASK_IDENTITY;
final ActivityRecord activity1 = new ActivityBuilder(mService).setTask(task).build();
activity1.info.flags |= FLAG_RELINQUISH_TASK_IDENTITY;
assertEquals("The topmost activity in the task must be reported.",
- task.getChildCount() - 1, task.findRootIndex(true /* effectiveRoot*/));
+ task.getChildAt(task.getChildCount() - 1), task.getRootActivity(
+ false /*ignoreRelinquishIdentity*/, true /*setToBottomIfNone*/));
}
/** Test that bottom-most activity is reported in {@link Task#getRootActivity()}. */
@@ -565,7 +571,7 @@
new ActivityBuilder(mService).setTask(task).build();
assertEquals("The root activity in the task must be reported.",
- task.getChildAt(0), task.getRootActivity());
+ task.getBottomMostActivity(), task.getRootActivity());
}
/**
@@ -577,7 +583,7 @@
// Add an extra activity on top of the root one
new ActivityBuilder(mService).setTask(task).build();
// Mark the root as finishing
- task.getChildAt(0).finishing = true;
+ task.getBottomMostActivity().finishing = true;
assertEquals("The first non-finishing activity in the task must be reported.",
task.getChildAt(1), task.getRootActivity());
@@ -590,13 +596,13 @@
public void testGetRootActivity_relinquishTaskIdentity() {
final Task task = getTestTask();
// Mark the bottom-most activity with FLAG_RELINQUISH_TASK_IDENTITY.
- final ActivityRecord activity0 = task.getChildAt(0);
+ final ActivityRecord activity0 = task.getBottomMostActivity();
activity0.info.flags |= FLAG_RELINQUISH_TASK_IDENTITY;
// Add an extra activity on top of the root one.
new ActivityBuilder(mService).setTask(task).build();
assertEquals("The root activity in the task must be reported.",
- task.getChildAt(0), task.getRootActivity());
+ task.getBottomMostActivity(), task.getRootActivity());
}
/**
@@ -607,7 +613,7 @@
public void testGetRootActivity_allFinishing() {
final Task task = getTestTask();
// Mark the bottom-most activity as finishing.
- final ActivityRecord activity0 = task.getChildAt(0);
+ final ActivityRecord activity0 = task.getBottomMostActivity();
activity0.finishing = true;
// Add an extra activity on top of the root one and mark it as finishing
final ActivityRecord activity1 = new ActivityBuilder(mService).setTask(task).build();
@@ -623,7 +629,7 @@
public void testIsRootActivity() {
final Task task = getTestTask();
// Mark the bottom-most activity as finishing.
- final ActivityRecord activity0 = task.getChildAt(0);
+ final ActivityRecord activity0 = task.getBottomMostActivity();
activity0.finishing = true;
// Add an extra activity on top of the root one.
final ActivityRecord activity1 = new ActivityBuilder(mService).setTask(task).build();
@@ -640,7 +646,7 @@
public void testIsRootActivity_allFinishing() {
final Task task = getTestTask();
// Mark the bottom-most activity as finishing.
- final ActivityRecord activity0 = task.getChildAt(0);
+ final ActivityRecord activity0 = task.getBottomMostActivity();
activity0.finishing = true;
// Add an extra activity on top of the root one and mark it as finishing
final ActivityRecord activity1 = new ActivityBuilder(mService).setTask(task).build();
@@ -657,10 +663,10 @@
@Test
public void testGetTaskForActivity() {
final Task task0 = getTestTask();
- final ActivityRecord activity0 = task0.getChildAt(0);
+ final ActivityRecord activity0 = task0.getBottomMostActivity();
final Task task1 = getTestTask();
- final ActivityRecord activity1 = task1.getChildAt(0);
+ final ActivityRecord activity1 = task1.getBottomMostActivity();
assertEquals(task0.mTaskId,
ActivityRecord.getTaskForActivityLocked(activity0.appToken, false /* onlyRoot */));
@@ -676,7 +682,7 @@
public void testGetTaskForActivity_onlyRoot_finishing() {
final Task task = getTestTask();
// Make the current root activity finishing
- final ActivityRecord activity0 = task.getChildAt(0);
+ final ActivityRecord activity0 = task.getBottomMostActivity();
activity0.finishing = true;
// Add an extra activity on top - this will be the new root
final ActivityRecord activity1 = new ActivityBuilder(mService).setTask(task).build();
@@ -699,7 +705,7 @@
public void testGetTaskForActivity_onlyRoot_relinquishTaskIdentity() {
final Task task = getTestTask();
// Make the current root activity relinquish task identity
- final ActivityRecord activity0 = task.getChildAt(0);
+ final ActivityRecord activity0 = task.getBottomMostActivity();
activity0.info.flags |= FLAG_RELINQUISH_TASK_IDENTITY;
// Add an extra activity on top - this will be the new root
final ActivityRecord activity1 = new ActivityBuilder(mService).setTask(task).build();
@@ -722,7 +728,7 @@
public void testGetTaskForActivity_notOnlyRoot() {
final Task task = getTestTask();
// Mark the bottom-most activity as finishing.
- final ActivityRecord activity0 = task.getChildAt(0);
+ final ActivityRecord activity0 = task.getBottomMostActivity();
activity0.finishing = true;
// Add an extra activity on top of the root one and make it relinquish task identity
@@ -747,7 +753,7 @@
public void testUpdateEffectiveIntent() {
// Test simple case with a single activity.
final Task task = getTestTask();
- final ActivityRecord activity0 = task.getChildAt(0);
+ final ActivityRecord activity0 = task.getBottomMostActivity();
spyOn(task);
task.updateEffectiveIntent();
@@ -762,7 +768,7 @@
public void testUpdateEffectiveIntent_rootFinishing() {
// Test simple case with a single activity.
final Task task = getTestTask();
- final ActivityRecord activity0 = task.getChildAt(0);
+ final ActivityRecord activity0 = task.getBottomMostActivity();
// Mark the bottom-most activity as finishing.
activity0.finishing = true;
// Add an extra activity on top of the root one
@@ -782,7 +788,7 @@
public void testUpdateEffectiveIntent_allFinishing() {
// Test simple case with a single activity.
final Task task = getTestTask();
- final ActivityRecord activity0 = task.getChildAt(0);
+ final ActivityRecord activity0 = task.getBottomMostActivity();
// Mark the bottom-most activity as finishing.
activity0.finishing = true;
// Add an extra activity on top of the root one and make it relinquish task identity
@@ -818,7 +824,7 @@
task.getResolvedOverrideConfiguration().windowConfiguration.getAppBounds());
}
- private byte[] serializeToBytes(Task r) throws IOException, XmlPullParserException {
+ private byte[] serializeToBytes(Task r) throws Exception {
try (ByteArrayOutputStream os = new ByteArrayOutputStream()) {
final XmlSerializer serializer = Xml.newSerializer();
serializer.setOutput(os, "UTF-8");
diff --git a/services/usage/java/com/android/server/usage/UsageStatsService.java b/services/usage/java/com/android/server/usage/UsageStatsService.java
index 8ce3527..0649223 100644
--- a/services/usage/java/com/android/server/usage/UsageStatsService.java
+++ b/services/usage/java/com/android/server/usage/UsageStatsService.java
@@ -63,12 +63,10 @@
import android.os.FileUtils;
import android.os.Handler;
import android.os.IBinder;
-import android.os.IDeviceIdleController;
import android.os.Looper;
import android.os.Message;
import android.os.Process;
import android.os.RemoteException;
-import android.os.ServiceManager;
import android.os.SystemClock;
import android.os.SystemProperties;
import android.os.UserHandle;
@@ -152,7 +150,6 @@
UserManager mUserManager;
PackageManager mPackageManager;
PackageManagerInternal mPackageManagerInternal;
- IDeviceIdleController mDeviceIdleController;
// Do not use directly. Call getDpmInternal() instead
DevicePolicyManagerInternal mDpmInternal;
@@ -267,9 +264,6 @@
// initialize mDpmInternal
getDpmInternal();
- mDeviceIdleController = IDeviceIdleController.Stub.asInterface(
- ServiceManager.getService(Context.DEVICE_IDLE_CONTROLLER));
-
if (ENABLE_KERNEL_UPDATES && KERNEL_COUNTER_FILE.exists()) {
try {
ActivityManager.getService().registerUidObserver(mUidObserver,
@@ -1684,16 +1678,6 @@
}
@Override
- public void whitelistAppTemporarily(String packageName, long duration, int userId)
- throws RemoteException {
- StringBuilder reason = new StringBuilder(32);
- reason.append("from:");
- UserHandle.formatUid(reason, Binder.getCallingUid());
- mDeviceIdleController.addPowerSaveTempWhitelistApp(packageName, duration, userId,
- reason.toString());
- }
-
- @Override
public void onCarrierPrivilegedAppsChanged() {
if (DEBUG) {
Slog.i(TAG, "Carrier privileged apps changed");
diff --git a/services/wifi/Android.bp b/services/wifi/Android.bp
deleted file mode 100644
index 8a7f73f..0000000
--- a/services/wifi/Android.bp
+++ /dev/null
@@ -1,16 +0,0 @@
-filegroup {
- name: "services.wifi-sources",
- srcs: [
- "java/**/*.java",
- "java/**/*.aidl",
- ],
- path: "java",
- visibility: ["//frameworks/base/services"],
-}
-
-// Interfaces between the core system and the wifi mainline module.
-java_library_static {
- name: "services.wifi",
- srcs: [":services.wifi-sources"],
- libs: ["services.net"],
-}
diff --git a/services/wifi/java/android/net/wifi/IWifiStackConnector.aidl b/services/wifi/java/android/net/wifi/IWifiStackConnector.aidl
deleted file mode 100644
index 3af4666..0000000
--- a/services/wifi/java/android/net/wifi/IWifiStackConnector.aidl
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * Copyright (c) 2019, 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 perNmissions and
- * limitations under the License.
- */
-package android.net.wifi;
-
-import android.net.wifi.WifiApiServiceInfo;
-
-/** @hide */
-interface IWifiStackConnector {
- List<WifiApiServiceInfo> getWifiApiServiceInfos();
-}
diff --git a/services/wifi/java/android/net/wifi/WifiStackClient.java b/services/wifi/java/android/net/wifi/WifiStackClient.java
deleted file mode 100644
index dcdfbc5..0000000
--- a/services/wifi/java/android/net/wifi/WifiStackClient.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Copyright (C) 2019 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.wifi;
-
-import static android.os.IServiceManager.DUMP_FLAG_PRIORITY_HIGH;
-import static android.os.IServiceManager.DUMP_FLAG_PRIORITY_NORMAL;
-
-import android.annotation.NonNull;
-import android.content.Context;
-import android.net.ConnectivityModuleConnector;
-import android.os.IBinder;
-import android.os.RemoteException;
-import android.os.ServiceManager;
-import android.util.Log;
-
-import java.util.List;
-
-/**
- * Service used to communicate with the wifi stack, which could be running in a separate
- * module.
- * @hide
- */
-public class WifiStackClient {
- public static final String PERMISSION_MAINLINE_WIFI_STACK =
- "android.permission.MAINLINE_WIFI_STACK";
-
- private static final String TAG = WifiStackClient.class.getSimpleName();
- private static WifiStackClient sInstance;
-
- private WifiStackClient() { }
-
- /**
- * Get the WifiStackClient singleton instance.
- */
- public static synchronized WifiStackClient getInstance() {
- if (sInstance == null) {
- sInstance = new WifiStackClient();
- }
- return sInstance;
- }
-
- private class WifiStackConnection implements
- ConnectivityModuleConnector.ModuleServiceCallback {
- @Override
- public void onModuleServiceConnected(IBinder service) {
- Log.i(TAG, "Wifi stack connected");
- registerWifiStackService(service);
-
- IWifiStackConnector connector = IWifiStackConnector.Stub.asInterface(service);
-
- List<WifiApiServiceInfo> wifiApiServiceInfos;
- try {
- wifiApiServiceInfos = connector.getWifiApiServiceInfos();
- } catch (RemoteException e) {
- throw new RuntimeException("Failed to getWifiApiServiceInfos()", e);
- }
-
- for (WifiApiServiceInfo wifiApiServiceInfo : wifiApiServiceInfos) {
- String serviceName = wifiApiServiceInfo.name;
- IBinder binder = wifiApiServiceInfo.binder;
- Log.i(TAG, "Registering " + serviceName);
- ServiceManager.addService(serviceName, binder);
- }
- }
- }
-
- private void registerWifiStackService(@NonNull IBinder service) {
- ServiceManager.addService(Context.WIFI_STACK_SERVICE, service,
- false /* allowIsolated */,
- DUMP_FLAG_PRIORITY_HIGH | DUMP_FLAG_PRIORITY_NORMAL);
- Log.i(TAG, "Wifi stack service registered");
- }
-
- /**
- * Start the wifi stack. Should be called only once on device startup.
- *
- * <p>This method will start the wifi stack either in the wifi stack
- * process, or inside the system server on devices that do not support the wifi stack
- * module.
- */
- public void start() {
- Log.i(TAG, "Starting wifi stack");
- ConnectivityModuleConnector.getInstance().startModuleService(
- IWifiStackConnector.class.getName(), PERMISSION_MAINLINE_WIFI_STACK,
- new WifiStackConnection());
- }
-}
diff --git a/telecomm/java/android/telecom/Call.java b/telecomm/java/android/telecom/Call.java
index 3ecf8d7..a0739c4 100644
--- a/telecomm/java/android/telecom/Call.java
+++ b/telecomm/java/android/telecom/Call.java
@@ -1512,7 +1512,6 @@
*/
@SystemApi
@TestApi
- //@RequiresPermission(android.Manifest.permission.BACKGROUND_CALL_AUDIO)
public void enterBackgroundAudioProcessing() {
if (mState != STATE_ACTIVE && mState != STATE_RINGING) {
throw new IllegalStateException("Call must be active or ringing");
@@ -1534,7 +1533,6 @@
*/
@SystemApi
@TestApi
- //@RequiresPermission(android.Manifest.permission.BACKGROUND_CALL_AUDIO)
public void exitBackgroundAudioProcessing(boolean shouldRing) {
if (mState != STATE_AUDIO_PROCESSING) {
throw new IllegalStateException("Call must in the audio processing state");
diff --git a/telecomm/java/android/telecom/CallScreeningService.java b/telecomm/java/android/telecom/CallScreeningService.java
index b91787c..f8722f4 100644
--- a/telecomm/java/android/telecom/CallScreeningService.java
+++ b/telecomm/java/android/telecom/CallScreeningService.java
@@ -144,7 +144,7 @@
private final boolean mShouldSilenceCall;
private final boolean mShouldSkipCallLog;
private final boolean mShouldSkipNotification;
- private final boolean mShouldScreenCallFurther;
+ private final boolean mShouldScreenCallViaAudioProcessing;
private CallResponse(
boolean shouldDisallowCall,
@@ -152,13 +152,13 @@
boolean shouldSilenceCall,
boolean shouldSkipCallLog,
boolean shouldSkipNotification,
- boolean shouldScreenCallFurther) {
+ boolean shouldScreenCallViaAudioProcessing) {
if (!shouldDisallowCall
&& (shouldRejectCall || shouldSkipCallLog || shouldSkipNotification)) {
throw new IllegalStateException("Invalid response state for allowed call.");
}
- if (shouldDisallowCall && shouldScreenCallFurther) {
+ if (shouldDisallowCall && shouldScreenCallViaAudioProcessing) {
throw new IllegalStateException("Invalid response state for allowed call.");
}
@@ -167,7 +167,7 @@
mShouldSkipCallLog = shouldSkipCallLog;
mShouldSkipNotification = shouldSkipNotification;
mShouldSilenceCall = shouldSilenceCall;
- mShouldScreenCallFurther = shouldScreenCallFurther;
+ mShouldScreenCallViaAudioProcessing = shouldScreenCallViaAudioProcessing;
}
/*
@@ -211,8 +211,8 @@
* for further screening of the call.
* @hide
*/
- public boolean getShouldScreenCallFurther() {
- return mShouldScreenCallFurther;
+ public boolean getShouldScreenCallViaAudioProcessing() {
+ return mShouldScreenCallViaAudioProcessing;
}
public static class Builder {
@@ -221,7 +221,7 @@
private boolean mShouldSilenceCall;
private boolean mShouldSkipCallLog;
private boolean mShouldSkipNotification;
- private boolean mShouldScreenCallFurther;
+ private boolean mShouldScreenCallViaAudioProcessing;
/**
* Sets whether the incoming call should be blocked.
@@ -285,13 +285,14 @@
* This request will only be honored if the {@link CallScreeningService} shares the same
* uid as the default dialer app. Otherwise, the call will go through as usual.
*
- * @param shouldScreenCallFurther Whether to request further call screening.
+ * @param shouldScreenCallViaAudioProcessing Whether to request further call screening.
* @hide
*/
@SystemApi
@TestApi
- public Builder setShouldScreenCallFurther(boolean shouldScreenCallFurther) {
- mShouldScreenCallFurther = shouldScreenCallFurther;
+ public @NonNull Builder setShouldScreenCallViaAudioProcessing(
+ boolean shouldScreenCallViaAudioProcessing) {
+ mShouldScreenCallViaAudioProcessing = shouldScreenCallViaAudioProcessing;
return this;
}
@@ -302,7 +303,7 @@
mShouldSilenceCall,
mShouldSkipCallLog,
mShouldSkipNotification,
- mShouldScreenCallFurther);
+ mShouldScreenCallViaAudioProcessing);
}
}
}
@@ -380,7 +381,7 @@
new ComponentName(getPackageName(), getClass().getName()));
} else if (response.getSilenceCall()) {
mCallScreeningAdapter.silenceCall(callDetails.getTelecomCallId());
- } else if (response.getShouldScreenCallFurther()) {
+ } else if (response.getShouldScreenCallViaAudioProcessing()) {
mCallScreeningAdapter.screenCallFurther(callDetails.getTelecomCallId());
} else {
mCallScreeningAdapter.allowCall(callDetails.getTelecomCallId());
diff --git a/telecomm/java/android/telecom/ConnectionRequest.java b/telecomm/java/android/telecom/ConnectionRequest.java
index b428530..221f8f1 100644
--- a/telecomm/java/android/telecom/ConnectionRequest.java
+++ b/telecomm/java/android/telecom/ConnectionRequest.java
@@ -16,6 +16,10 @@
package android.telecom;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.annotation.SystemApi;
+import android.annotation.TestApi;
import android.net.Uri;
import android.os.Bundle;
import android.os.Parcel;
@@ -32,6 +36,7 @@
* Builder class for {@link ConnectionRequest}
* @hide
*/
+ @TestApi // For convenience in CTS tests
public static final class Builder {
private PhoneAccountHandle mAccountHandle;
private Uri mAddress;
@@ -48,7 +53,7 @@
* Sets the phone account handle for the resulting {@link ConnectionRequest}
* @param accountHandle The accountHandle which should be used to place the call.
*/
- public Builder setAccountHandle(PhoneAccountHandle accountHandle) {
+ public @NonNull Builder setAccountHandle(@NonNull PhoneAccountHandle accountHandle) {
this.mAccountHandle = accountHandle;
return this;
}
@@ -58,7 +63,7 @@
* @param address The address(e.g., phone number) to which the {@link Connection} is to
* connect.
*/
- public Builder setAddress(Uri address) {
+ public @NonNull Builder setAddress(@NonNull Uri address) {
this.mAddress = address;
return this;
}
@@ -67,7 +72,7 @@
* Sets the extras bundle for the resulting {@link ConnectionRequest}
* @param extras Application-specific extra data.
*/
- public Builder setExtras(Bundle extras) {
+ public @NonNull Builder setExtras(@NonNull Bundle extras) {
this.mExtras = extras;
return this;
}
@@ -76,7 +81,7 @@
* Sets the video state for the resulting {@link ConnectionRequest}
* @param videoState Determines the video state for the connection.
*/
- public Builder setVideoState(int videoState) {
+ public @NonNull Builder setVideoState(int videoState) {
this.mVideoState = videoState;
return this;
}
@@ -85,7 +90,7 @@
* Sets the Telecom call ID for the resulting {@link ConnectionRequest}
* @param telecomCallId The telecom call ID.
*/
- public Builder setTelecomCallId(String telecomCallId) {
+ public @NonNull Builder setTelecomCallId(@NonNull String telecomCallId) {
this.mTelecomCallId = telecomCallId;
return this;
}
@@ -97,7 +102,7 @@
* its own incoming call UI for an incoming call. When
* {@code false}, Telecom shows the incoming call UI.
*/
- public Builder setShouldShowIncomingCallUi(boolean shouldShowIncomingCallUi) {
+ public @NonNull Builder setShouldShowIncomingCallUi(boolean shouldShowIncomingCallUi) {
this.mShouldShowIncomingCallUi = shouldShowIncomingCallUi;
return this;
}
@@ -107,7 +112,8 @@
* resulting {@link ConnectionRequest}
* @param rttPipeFromInCall The data pipe to read from.
*/
- public Builder setRttPipeFromInCall(ParcelFileDescriptor rttPipeFromInCall) {
+ public @NonNull Builder setRttPipeFromInCall(
+ @NonNull ParcelFileDescriptor rttPipeFromInCall) {
this.mRttPipeFromInCall = rttPipeFromInCall;
return this;
}
@@ -117,12 +123,16 @@
* resulting {@link ConnectionRequest}
* @param rttPipeToInCall The data pipe to write to.
*/
- public Builder setRttPipeToInCall(ParcelFileDescriptor rttPipeToInCall) {
+ public @NonNull Builder setRttPipeToInCall(@NonNull ParcelFileDescriptor rttPipeToInCall) {
this.mRttPipeToInCall = rttPipeToInCall;
return this;
}
- public ConnectionRequest build() {
+ /**
+ * Build the {@link ConnectionRequest}
+ * @return Result of the builder
+ */
+ public @NonNull ConnectionRequest build() {
return new ConnectionRequest(
mAccountHandle,
mAddress,
@@ -261,7 +271,9 @@
* @return The Telecom ID.
* @hide
*/
- public String getTelecomCallId() {
+ @SystemApi
+ @TestApi
+ public @Nullable String getTelecomCallId() {
return mTelecomCallId;
}
diff --git a/telecomm/java/android/telecom/TelecomManager.java b/telecomm/java/android/telecom/TelecomManager.java
index 4016943..39d741c 100644
--- a/telecomm/java/android/telecom/TelecomManager.java
+++ b/telecomm/java/android/telecom/TelecomManager.java
@@ -1029,12 +1029,16 @@
* by the user.
*
* @param includeDisabledAccounts When {@code true}, disabled phone accounts will be included,
- * when {@code false}, only
+ * when {@code false}, only enabled phone accounts will be
+ * included.
* @return A list of {@code PhoneAccountHandle} objects.
* @hide
*/
- @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 119305590)
- public List<PhoneAccountHandle> getCallCapablePhoneAccounts(boolean includeDisabledAccounts) {
+ @SystemApi
+ @TestApi
+ @RequiresPermission(READ_PRIVILEGED_PHONE_STATE)
+ public @NonNull List<PhoneAccountHandle> getCallCapablePhoneAccounts(
+ boolean includeDisabledAccounts) {
try {
if (isServiceConnected()) {
return getTelecomService().getCallCapablePhoneAccounts(
diff --git a/telecomm/java/com/android/internal/telecom/ITelecomService.aidl b/telecomm/java/com/android/internal/telecom/ITelecomService.aidl
index de3a816..204c37e 100644
--- a/telecomm/java/com/android/internal/telecom/ITelecomService.aidl
+++ b/telecomm/java/com/android/internal/telecom/ITelecomService.aidl
@@ -314,8 +314,6 @@
void addOrRemoveTestCallCompanionApp(String packageName, boolean isAdded);
- void setTestAutoModeApp(String packageName);
-
/**
* @see TelecomServiceImpl#setSystemDialer
*/
diff --git a/telephony/java/com/android/internal/telephony/EncodeException.java b/telephony/common/com/android/internal/telephony/EncodeException.java
similarity index 100%
rename from telephony/java/com/android/internal/telephony/EncodeException.java
rename to telephony/common/com/android/internal/telephony/EncodeException.java
diff --git a/telephony/java/com/android/internal/telephony/SmsConstants.java b/telephony/common/com/android/internal/telephony/SmsConstants.java
similarity index 100%
rename from telephony/java/com/android/internal/telephony/SmsConstants.java
rename to telephony/common/com/android/internal/telephony/SmsConstants.java
diff --git a/telephony/common/com/android/internal/telephony/SmsNumberUtils.java b/telephony/common/com/android/internal/telephony/SmsNumberUtils.java
index 0d33af6..367aad1 100644
--- a/telephony/common/com/android/internal/telephony/SmsNumberUtils.java
+++ b/telephony/common/com/android/internal/telephony/SmsNumberUtils.java
@@ -359,15 +359,41 @@
return NP_NONE;
}
+ /**
+ * This function checks if the passed in string conforms to the NANP format
+ * i.e. NXX-NXX-XXXX, N is any digit 2-9 and X is any digit 0-9
+ */
private static boolean isNANP(String number) {
+ boolean retVal = false;
+
if (number.length() == NANP_MEDIUM_LENGTH
|| (number.length() == NANP_LONG_LENGTH && number.startsWith(NANP_NDD))) {
+
if (number.length() == NANP_LONG_LENGTH) {
number = number.substring(1);
}
- return (PhoneNumberUtils.isNanp(number));
+
+ if (isTwoToNine(number.charAt(0)) &&
+ isTwoToNine(number.charAt(3))) {
+ retVal = true;
+ for (int i=1; i<NANP_MEDIUM_LENGTH; i++ ) {
+ char c=number.charAt(i);
+ if (!PhoneNumberUtils.isISODigit(c)) {
+ retVal = false;
+ break;
+ }
+ }
+ }
}
- return false;
+ return retVal;
+ }
+
+ private static boolean isTwoToNine (char c) {
+ if (c >= '2' && c <= '9') {
+ return true;
+ } else {
+ return false;
+ }
}
/**
@@ -573,9 +599,9 @@
int networkType = -1;
int phoneType = telephonyManager.getPhoneType();
- if (phoneType == PhoneConstants.PHONE_TYPE_GSM) {
+ if (phoneType == TelephonyManager.PHONE_TYPE_GSM) {
networkType = GSM_UMTS_NETWORK;
- } else if (phoneType == PhoneConstants.PHONE_TYPE_CDMA) {
+ } else if (phoneType == TelephonyManager.PHONE_TYPE_CDMA) {
if (isInternationalRoaming(telephonyManager)) {
networkType = CDMA_ROAMING_NETWORK;
} else {
diff --git a/telephony/java/com/android/internal/telephony/TelephonyPermissions.java b/telephony/common/com/android/internal/telephony/TelephonyPermissions.java
similarity index 90%
rename from telephony/java/com/android/internal/telephony/TelephonyPermissions.java
rename to telephony/common/com/android/internal/telephony/TelephonyPermissions.java
index 6e20621..86630b0 100644
--- a/telephony/java/com/android/internal/telephony/TelephonyPermissions.java
+++ b/telephony/common/com/android/internal/telephony/TelephonyPermissions.java
@@ -156,6 +156,27 @@
return false;
}
+ /**
+ * Check whether the app with the given pid/uid can read phone state.
+ *
+ * <p>This method behaves in one of the following ways:
+ * <ul>
+ * <li>return true: if the caller has the READ_PRIVILEGED_PHONE_STATE permission, the
+ * READ_PHONE_STATE runtime permission, or carrier privileges on the given subId.
+ * <li>throw SecurityException: if the caller didn't declare any of these permissions, or, for
+ * apps which support runtime permissions, if the caller does not currently have any of
+ * these permissions.
+ * <li>return false: if the caller lacks all of these permissions and doesn't support runtime
+ * permissions. This implies that the user revoked the ability to read phone state
+ * manually (via AppOps). In this case we can't throw as it would break app compatibility,
+ * so we return false to indicate that the calling function should return dummy data.
+ * </ul>
+ *
+ * <p>Note: for simplicity, this method always returns false for callers using legacy
+ * permissions and who have had READ_PHONE_STATE revoked, even if they are carrier-privileged.
+ * Such apps should migrate to runtime permissions or stop requiring READ_PHONE_STATE on P+
+ * devices.
+ */
@VisibleForTesting
public static boolean checkReadPhoneState(
Context context, Supplier<ITelephony> telephonySupplier, int subId, int pid, int uid,
@@ -208,6 +229,20 @@
callingPackage, callingFeatureId, message);
}
+ /**
+ * Check whether the app with the given pid/uid can read phone state, or has carrier
+ * privileges on any active subscription.
+ *
+ * <p>If the app does not have carrier privilege, this method will return {@code false} instead
+ * of throwing a SecurityException. Therefore, the callers cannot tell the difference
+ * between M+ apps which declare the runtime permission but do not have it, and pre-M apps
+ * which declare the static permission but had access revoked via AppOps. Apps in the former
+ * category expect SecurityExceptions; apps in the latter don't. So this method is suitable for
+ * use only if the behavior in both scenarios is meant to be identical.
+ *
+ * @return {@code true} if the app can read phone state or has carrier privilege;
+ * {@code false} otherwise.
+ */
@VisibleForTesting
public static boolean checkReadPhoneStateOnAnyActiveSub(
Context context, Supplier<ITelephony> telephonySupplier, int pid, int uid,
@@ -390,7 +425,6 @@
private static boolean reportAccessDeniedToReadIdentifiers(Context context, int subId, int pid,
int uid, String callingPackage, String message) {
boolean isPreinstalled = false;
- boolean isPrivApp = false;
ApplicationInfo callingPackageInfo = null;
try {
callingPackageInfo = context.getPackageManager().getApplicationInfoAsUser(
@@ -398,9 +432,6 @@
if (callingPackageInfo != null) {
if (callingPackageInfo.isSystemApp()) {
isPreinstalled = true;
- if (callingPackageInfo.isPrivilegedApp()) {
- isPrivApp = true;
- }
}
}
} catch (PackageManager.NameNotFoundException e) {
@@ -423,10 +454,10 @@
}
invokedMethods.add(message);
StatsLog.write(StatsLog.DEVICE_IDENTIFIER_ACCESS_DENIED, callingPackage, message,
- isPreinstalled, isPrivApp);
+ isPreinstalled, false);
}
Log.w(LOG_TAG, "reportAccessDeniedToReadIdentifiers:" + callingPackage + ":" + message
- + ":isPreinstalled=" + isPreinstalled + ":isPrivApp=" + isPrivApp);
+ + ":isPreinstalled=" + isPreinstalled);
// if the target SDK is pre-Q then check if the calling package would have previously
// had access to device identifiers.
if (callingPackageInfo != null && (
@@ -457,6 +488,11 @@
context, TELEPHONY_SUPPLIER, subId, pid, uid, callingPackage, callingPackageName);
}
+ /**
+ * Check whether the app with the given pid/uid can read the call log.
+ * @return {@code true} if the specified app has the read call log permission and AppOpp granted
+ * to it, {@code false} otherwise.
+ */
@VisibleForTesting
public static boolean checkReadCallLog(
Context context, Supplier<ITelephony> telephonySupplier, int subId, int pid, int uid,
@@ -494,6 +530,12 @@
callingPackage, callingFeatureId, message);
}
+ /**
+ * Returns whether the caller can read phone numbers.
+ *
+ * <p>Besides apps with the ability to read phone state per {@link #checkReadPhoneState}, the
+ * default SMS app and apps with READ_SMS or READ_PHONE_NUMBERS can also read phone numbers.
+ */
@VisibleForTesting
public static boolean checkReadPhoneNumber(
Context context, Supplier<ITelephony> telephonySupplier, int subId, int pid, int uid,
@@ -533,10 +575,10 @@
} catch (SecurityException readPhoneNumberSecurityException) {
}
- throw new SecurityException(message + ": Neither user " + uid +
- " nor current process has " + android.Manifest.permission.READ_PHONE_STATE +
- ", " + android.Manifest.permission.READ_SMS + ", or " +
- android.Manifest.permission.READ_PHONE_NUMBERS);
+ throw new SecurityException(message + ": Neither user " + uid
+ + " nor current process has " + android.Manifest.permission.READ_PHONE_STATE
+ + ", " + android.Manifest.permission.READ_SMS + ", or "
+ + android.Manifest.permission.READ_PHONE_NUMBERS);
}
/**
@@ -547,8 +589,8 @@
*/
public static void enforceCallingOrSelfModifyPermissionOrCarrierPrivilege(
Context context, int subId, String message) {
- if (context.checkCallingOrSelfPermission(android.Manifest.permission.MODIFY_PHONE_STATE) ==
- PERMISSION_GRANTED) {
+ if (context.checkCallingOrSelfPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
+ == PERMISSION_GRANTED) {
return;
}
@@ -590,8 +632,8 @@
}
if (DBG) {
- Rlog.d(LOG_TAG, "No READ_PRIVILEDED_PHONE_STATE permission, " +
- "check carrier privilege next.");
+ Rlog.d(LOG_TAG, "No READ_PRIVILEDED_PHONE_STATE permission, "
+ + "check carrier privilege next.");
}
enforceCallingOrSelfCarrierPrivilege(subId, message);
@@ -616,8 +658,8 @@
private static void enforceCarrierPrivilege(
Supplier<ITelephony> telephonySupplier, int subId, int uid, String message) {
- if (getCarrierPrivilegeStatus(telephonySupplier, subId, uid) !=
- TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS) {
+ if (getCarrierPrivilegeStatus(telephonySupplier, subId, uid)
+ != TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS) {
if (DBG) Rlog.e(LOG_TAG, "No Carrier Privilege.");
throw new SecurityException(message);
}
diff --git a/telephony/common/com/google/android/mms/pdu/PduPersister.java b/telephony/common/com/google/android/mms/pdu/PduPersister.java
index 95ae409..b237705 100755
--- a/telephony/common/com/google/android/mms/pdu/PduPersister.java
+++ b/telephony/common/com/google/android/mms/pdu/PduPersister.java
@@ -291,15 +291,11 @@
@UnsupportedAppUsage
private final ContentResolver mContentResolver;
private final DrmManagerClient mDrmManagerClient;
- @UnsupportedAppUsage
- private final TelephonyManager mTelephonyManager;
private PduPersister(Context context) {
mContext = context;
mContentResolver = context.getContentResolver();
mDrmManagerClient = new DrmManagerClient(context);
- mTelephonyManager = (TelephonyManager)context
- .getSystemService(Context.TELEPHONY_SERVICE);
}
/** Get(or create if not exist) an instance of PduPersister */
@@ -1453,7 +1449,8 @@
if (excludeMyNumber) {
// Build a list of my phone numbers from the various sims.
for (int subid : subscriptionManager.getActiveSubscriptionIdList()) {
- final String myNumber = mTelephonyManager.getLine1Number(subid);
+ final String myNumber = mContext.getSystemService(TelephonyManager.class).
+ createForSubscriptionId(subid).getLine1Number();
if (myNumber != null) {
myPhoneNumbers.add(myNumber);
}
diff --git a/core/java/android/service/carrier/CarrierIdentifier.aidl b/telephony/java/android/service/carrier/CarrierIdentifier.aidl
similarity index 100%
rename from core/java/android/service/carrier/CarrierIdentifier.aidl
rename to telephony/java/android/service/carrier/CarrierIdentifier.aidl
diff --git a/core/java/android/service/carrier/CarrierIdentifier.java b/telephony/java/android/service/carrier/CarrierIdentifier.java
similarity index 100%
rename from core/java/android/service/carrier/CarrierIdentifier.java
rename to telephony/java/android/service/carrier/CarrierIdentifier.java
diff --git a/core/java/android/service/carrier/CarrierService.java b/telephony/java/android/service/carrier/CarrierService.java
similarity index 100%
rename from core/java/android/service/carrier/CarrierService.java
rename to telephony/java/android/service/carrier/CarrierService.java
diff --git a/core/java/android/service/carrier/ICarrierService.aidl b/telephony/java/android/service/carrier/ICarrierService.aidl
similarity index 100%
rename from core/java/android/service/carrier/ICarrierService.aidl
rename to telephony/java/android/service/carrier/ICarrierService.aidl
diff --git a/core/java/android/service/euicc/DownloadSubscriptionResult.aidl b/telephony/java/android/service/euicc/DownloadSubscriptionResult.aidl
similarity index 100%
rename from core/java/android/service/euicc/DownloadSubscriptionResult.aidl
rename to telephony/java/android/service/euicc/DownloadSubscriptionResult.aidl
diff --git a/core/java/android/service/euicc/DownloadSubscriptionResult.java b/telephony/java/android/service/euicc/DownloadSubscriptionResult.java
similarity index 100%
rename from core/java/android/service/euicc/DownloadSubscriptionResult.java
rename to telephony/java/android/service/euicc/DownloadSubscriptionResult.java
diff --git a/core/java/android/service/euicc/EuiccProfileInfo.aidl b/telephony/java/android/service/euicc/EuiccProfileInfo.aidl
similarity index 100%
rename from core/java/android/service/euicc/EuiccProfileInfo.aidl
rename to telephony/java/android/service/euicc/EuiccProfileInfo.aidl
diff --git a/core/java/android/service/euicc/EuiccProfileInfo.java b/telephony/java/android/service/euicc/EuiccProfileInfo.java
similarity index 100%
rename from core/java/android/service/euicc/EuiccProfileInfo.java
rename to telephony/java/android/service/euicc/EuiccProfileInfo.java
diff --git a/core/java/android/service/euicc/EuiccService.java b/telephony/java/android/service/euicc/EuiccService.java
similarity index 100%
rename from core/java/android/service/euicc/EuiccService.java
rename to telephony/java/android/service/euicc/EuiccService.java
diff --git a/core/java/android/service/euicc/GetDefaultDownloadableSubscriptionListResult.aidl b/telephony/java/android/service/euicc/GetDefaultDownloadableSubscriptionListResult.aidl
similarity index 100%
rename from core/java/android/service/euicc/GetDefaultDownloadableSubscriptionListResult.aidl
rename to telephony/java/android/service/euicc/GetDefaultDownloadableSubscriptionListResult.aidl
diff --git a/core/java/android/service/euicc/GetDefaultDownloadableSubscriptionListResult.java b/telephony/java/android/service/euicc/GetDefaultDownloadableSubscriptionListResult.java
similarity index 100%
rename from core/java/android/service/euicc/GetDefaultDownloadableSubscriptionListResult.java
rename to telephony/java/android/service/euicc/GetDefaultDownloadableSubscriptionListResult.java
diff --git a/core/java/android/service/euicc/GetDownloadableSubscriptionMetadataResult.aidl b/telephony/java/android/service/euicc/GetDownloadableSubscriptionMetadataResult.aidl
similarity index 100%
rename from core/java/android/service/euicc/GetDownloadableSubscriptionMetadataResult.aidl
rename to telephony/java/android/service/euicc/GetDownloadableSubscriptionMetadataResult.aidl
diff --git a/core/java/android/service/euicc/GetDownloadableSubscriptionMetadataResult.java b/telephony/java/android/service/euicc/GetDownloadableSubscriptionMetadataResult.java
similarity index 100%
rename from core/java/android/service/euicc/GetDownloadableSubscriptionMetadataResult.java
rename to telephony/java/android/service/euicc/GetDownloadableSubscriptionMetadataResult.java
diff --git a/core/java/android/service/euicc/GetEuiccProfileInfoListResult.aidl b/telephony/java/android/service/euicc/GetEuiccProfileInfoListResult.aidl
similarity index 100%
rename from core/java/android/service/euicc/GetEuiccProfileInfoListResult.aidl
rename to telephony/java/android/service/euicc/GetEuiccProfileInfoListResult.aidl
diff --git a/core/java/android/service/euicc/GetEuiccProfileInfoListResult.java b/telephony/java/android/service/euicc/GetEuiccProfileInfoListResult.java
similarity index 100%
rename from core/java/android/service/euicc/GetEuiccProfileInfoListResult.java
rename to telephony/java/android/service/euicc/GetEuiccProfileInfoListResult.java
diff --git a/core/java/android/service/euicc/IDeleteSubscriptionCallback.aidl b/telephony/java/android/service/euicc/IDeleteSubscriptionCallback.aidl
similarity index 100%
rename from core/java/android/service/euicc/IDeleteSubscriptionCallback.aidl
rename to telephony/java/android/service/euicc/IDeleteSubscriptionCallback.aidl
diff --git a/core/java/android/service/euicc/IDownloadSubscriptionCallback.aidl b/telephony/java/android/service/euicc/IDownloadSubscriptionCallback.aidl
similarity index 100%
rename from core/java/android/service/euicc/IDownloadSubscriptionCallback.aidl
rename to telephony/java/android/service/euicc/IDownloadSubscriptionCallback.aidl
diff --git a/core/java/android/service/euicc/IEraseSubscriptionsCallback.aidl b/telephony/java/android/service/euicc/IEraseSubscriptionsCallback.aidl
similarity index 100%
rename from core/java/android/service/euicc/IEraseSubscriptionsCallback.aidl
rename to telephony/java/android/service/euicc/IEraseSubscriptionsCallback.aidl
diff --git a/core/java/android/service/euicc/IEuiccService.aidl b/telephony/java/android/service/euicc/IEuiccService.aidl
similarity index 100%
rename from core/java/android/service/euicc/IEuiccService.aidl
rename to telephony/java/android/service/euicc/IEuiccService.aidl
diff --git a/core/java/android/service/euicc/IGetDefaultDownloadableSubscriptionListCallback.aidl b/telephony/java/android/service/euicc/IGetDefaultDownloadableSubscriptionListCallback.aidl
similarity index 100%
rename from core/java/android/service/euicc/IGetDefaultDownloadableSubscriptionListCallback.aidl
rename to telephony/java/android/service/euicc/IGetDefaultDownloadableSubscriptionListCallback.aidl
diff --git a/core/java/android/service/euicc/IGetDownloadableSubscriptionMetadataCallback.aidl b/telephony/java/android/service/euicc/IGetDownloadableSubscriptionMetadataCallback.aidl
similarity index 100%
rename from core/java/android/service/euicc/IGetDownloadableSubscriptionMetadataCallback.aidl
rename to telephony/java/android/service/euicc/IGetDownloadableSubscriptionMetadataCallback.aidl
diff --git a/core/java/android/service/euicc/IGetEidCallback.aidl b/telephony/java/android/service/euicc/IGetEidCallback.aidl
similarity index 100%
rename from core/java/android/service/euicc/IGetEidCallback.aidl
rename to telephony/java/android/service/euicc/IGetEidCallback.aidl
diff --git a/core/java/android/service/euicc/IGetEuiccInfoCallback.aidl b/telephony/java/android/service/euicc/IGetEuiccInfoCallback.aidl
similarity index 100%
rename from core/java/android/service/euicc/IGetEuiccInfoCallback.aidl
rename to telephony/java/android/service/euicc/IGetEuiccInfoCallback.aidl
diff --git a/core/java/android/service/euicc/IGetEuiccProfileInfoListCallback.aidl b/telephony/java/android/service/euicc/IGetEuiccProfileInfoListCallback.aidl
similarity index 100%
rename from core/java/android/service/euicc/IGetEuiccProfileInfoListCallback.aidl
rename to telephony/java/android/service/euicc/IGetEuiccProfileInfoListCallback.aidl
diff --git a/core/java/android/service/euicc/IGetOtaStatusCallback.aidl b/telephony/java/android/service/euicc/IGetOtaStatusCallback.aidl
similarity index 100%
rename from core/java/android/service/euicc/IGetOtaStatusCallback.aidl
rename to telephony/java/android/service/euicc/IGetOtaStatusCallback.aidl
diff --git a/core/java/android/service/euicc/IOtaStatusChangedCallback.aidl b/telephony/java/android/service/euicc/IOtaStatusChangedCallback.aidl
similarity index 100%
rename from core/java/android/service/euicc/IOtaStatusChangedCallback.aidl
rename to telephony/java/android/service/euicc/IOtaStatusChangedCallback.aidl
diff --git a/core/java/android/service/euicc/IRetainSubscriptionsForFactoryResetCallback.aidl b/telephony/java/android/service/euicc/IRetainSubscriptionsForFactoryResetCallback.aidl
similarity index 100%
rename from core/java/android/service/euicc/IRetainSubscriptionsForFactoryResetCallback.aidl
rename to telephony/java/android/service/euicc/IRetainSubscriptionsForFactoryResetCallback.aidl
diff --git a/core/java/android/service/euicc/ISwitchToSubscriptionCallback.aidl b/telephony/java/android/service/euicc/ISwitchToSubscriptionCallback.aidl
similarity index 100%
rename from core/java/android/service/euicc/ISwitchToSubscriptionCallback.aidl
rename to telephony/java/android/service/euicc/ISwitchToSubscriptionCallback.aidl
diff --git a/core/java/android/service/euicc/IUpdateSubscriptionNicknameCallback.aidl b/telephony/java/android/service/euicc/IUpdateSubscriptionNicknameCallback.aidl
similarity index 100%
rename from core/java/android/service/euicc/IUpdateSubscriptionNicknameCallback.aidl
rename to telephony/java/android/service/euicc/IUpdateSubscriptionNicknameCallback.aidl
diff --git a/telephony/java/android/telephony/AccessNetworkConstants.java b/telephony/java/android/telephony/AccessNetworkConstants.java
index a0aa60b..bb28df2 100644
--- a/telephony/java/android/telephony/AccessNetworkConstants.java
+++ b/telephony/java/android/telephony/AccessNetworkConstants.java
@@ -80,6 +80,7 @@
public static final int EUTRAN = 3;
public static final int CDMA2000 = 4;
public static final int IWLAN = 5;
+ public static final int NGRAN = 6;
/** @hide */
private AccessNetworkType() {}
@@ -93,6 +94,7 @@
case EUTRAN: return "EUTRAN";
case CDMA2000: return "CDMA2000";
case IWLAN: return "IWLAN";
+ case NGRAN: return "NGRAN";
default: return Integer.toString(type);
}
}
@@ -247,6 +249,61 @@
private CdmaBands() {};
}
+ /**
+ * Frequency bands for NGRAN
+ */
+ public static final class NgranBands {
+ /** FR1 bands */
+ public static final int BAND_1 = 1;
+ public static final int BAND_2 = 2;
+ public static final int BAND_3 = 3;
+ public static final int BAND_5 = 5;
+ public static final int BAND_7 = 7;
+ public static final int BAND_8 = 8;
+ public static final int BAND_12 = 12;
+ public static final int BAND_14 = 14;
+ public static final int BAND_18 = 18;
+ public static final int BAND_20 = 20;
+ public static final int BAND_25 = 25;
+ public static final int BAND_28 = 28;
+ public static final int BAND_29 = 29;
+ public static final int BAND_30 = 30;
+ public static final int BAND_34 = 34;
+ public static final int BAND_38 = 38;
+ public static final int BAND_39 = 39;
+ public static final int BAND_40 = 40;
+ public static final int BAND_41 = 41;
+ public static final int BAND_48 = 48;
+ public static final int BAND_50 = 50;
+ public static final int BAND_51 = 51;
+ public static final int BAND_65 = 65;
+ public static final int BAND_66 = 66;
+ public static final int BAND_70 = 70;
+ public static final int BAND_71 = 71;
+ public static final int BAND_74 = 74;
+ public static final int BAND_75 = 75;
+ public static final int BAND_76 = 76;
+ public static final int BAND_77 = 77;
+ public static final int BAND_78 = 78;
+ public static final int BAND_79 = 79;
+ public static final int BAND_80 = 80;
+ public static final int BAND_81 = 81;
+ public static final int BAND_82 = 82;
+ public static final int BAND_83 = 83;
+ public static final int BAND_84 = 84;
+ public static final int BAND_86 = 86;
+ public static final int BAND_90 = 90;
+
+ /** FR2 bands */
+ public static final int BAND_257 = 257;
+ public static final int BAND_258 = 258;
+ public static final int BAND_260 = 260;
+ public static final int BAND_261 = 261;
+
+ /** @hide */
+ private NgranBands() {};
+ }
+
/** @hide */
private AccessNetworkConstants() {};
}
diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java
index f94c8e3..98d7661 100755
--- a/telephony/java/android/telephony/CarrierConfigManager.java
+++ b/telephony/java/android/telephony/CarrierConfigManager.java
@@ -1042,6 +1042,9 @@
*
* When {@code false}, the old behavior is used, where the toggle in accessibility settings is
* used to set the IMS stack's RTT enabled state.
+ *
+ * @deprecated -- this flag no longer does anything. Remove once the new behavior is verified.
+ *
* @hide
*/
public static final String KEY_IGNORE_RTT_MODE_SETTING_BOOL =
@@ -1701,7 +1704,6 @@
/**
* Determines whether the carrier app needed to be involved when users try to finish setting up
* the SIM card to get network service.
- * @hide
*/
public static final String KEY_CARRIER_APP_REQUIRED_DURING_SIM_SETUP_BOOL =
"carrier_app_required_during_setup_bool";
@@ -3524,7 +3526,7 @@
sDefaults.putInt(KEY_IMS_DTMF_TONE_DELAY_INT, 0);
sDefaults.putInt(KEY_CDMA_DTMF_TONE_DELAY_INT, 100);
sDefaults.putBoolean(KEY_CALL_FORWARDING_MAP_NON_NUMBER_TO_VOICEMAIL_BOOL, false);
- sDefaults.putBoolean(KEY_IGNORE_RTT_MODE_SETTING_BOOL, false);
+ sDefaults.putBoolean(KEY_IGNORE_RTT_MODE_SETTING_BOOL, true);
sDefaults.putInt(KEY_CDMA_3WAYCALL_FLASH_DELAY_INT , 0);
sDefaults.putBoolean(KEY_SUPPORT_CONFERENCE_CALL_BOOL, true);
sDefaults.putBoolean(KEY_SUPPORT_IMS_CONFERENCE_CALL_BOOL, true);
diff --git a/telephony/java/android/telephony/CellSignalStrength.java b/telephony/java/android/telephony/CellSignalStrength.java
index e65b048ec..cb8fdf0 100644
--- a/telephony/java/android/telephony/CellSignalStrength.java
+++ b/telephony/java/android/telephony/CellSignalStrength.java
@@ -46,11 +46,6 @@
protected static final int NUM_SIGNAL_STRENGTH_THRESHOLDS = NUM_SIGNAL_STRENGTH_BINS - 1;
/** @hide */
- public static final String[] SIGNAL_STRENGTH_NAMES = {
- "none", "poor", "moderate", "good", "great"
- };
-
- /** @hide */
protected CellSignalStrength() {
}
@@ -157,4 +152,12 @@
if ((value < rangeMin || value > rangeMax) && value != special) return CellInfo.UNAVAILABLE;
return value;
}
+
+ /**
+ * Returns the number of signal strength levels.
+ * @return Number of signal strength levels, enforced to be 5
+ */
+ public static final int getNumSignalStrengthLevels() {
+ return NUM_SIGNAL_STRENGTH_BINS;
+ }
}
diff --git a/telephony/java/android/telephony/DataFailCause.java b/telephony/java/android/telephony/DataFailCause.java
index 246bec7..7bdf1f5 100644
--- a/telephony/java/android/telephony/DataFailCause.java
+++ b/telephony/java/android/telephony/DataFailCause.java
@@ -15,17 +15,14 @@
*/
package android.telephony;
-import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.SystemApi;
import android.content.Context;
import android.os.PersistableBundle;
-
import android.telephony.Annotation.DataFailureCause;
-import com.android.internal.util.ArrayUtils;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
+import com.android.internal.telephony.util.ArrayUtils;
+
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
diff --git a/telephony/java/android/telephony/LocationAccessPolicy.java b/telephony/java/android/telephony/LocationAccessPolicy.java
index 79b3756..fe273b2 100644
--- a/telephony/java/android/telephony/LocationAccessPolicy.java
+++ b/telephony/java/android/telephony/LocationAccessPolicy.java
@@ -193,6 +193,17 @@
}
}
+ private static String getAppOpsString(String manifestPermission) {
+ switch (manifestPermission) {
+ case Manifest.permission.ACCESS_FINE_LOCATION:
+ return AppOpsManager.OPSTR_FINE_LOCATION;
+ case Manifest.permission.ACCESS_COARSE_LOCATION:
+ return AppOpsManager.OPSTR_COARSE_LOCATION;
+ default:
+ return null;
+ }
+ }
+
private static LocationPermissionResult checkAppLocationPermissionHelper(Context context,
LocationPermissionQuery query, String permissionToCheck) {
String locationTypeForLog =
@@ -206,8 +217,8 @@
if (hasManifestPermission) {
// Only check the app op if the app has the permission.
int appOpMode = context.getSystemService(AppOpsManager.class)
- .noteOpNoThrow(AppOpsManager.permissionToOpCode(permissionToCheck),
- query.callingUid, query.callingPackage, query.callingFeatureId, null);
+ .noteOpNoThrow(getAppOpsString(permissionToCheck), query.callingUid,
+ query.callingPackage, query.callingFeatureId, null);
if (appOpMode == AppOpsManager.MODE_ALLOWED) {
// If the app did everything right, return without logging.
return LocationPermissionResult.ALLOWED;
diff --git a/telephony/java/android/telephony/ModemActivityInfo.java b/telephony/java/android/telephony/ModemActivityInfo.java
index d105fe3..16fbae2 100644
--- a/telephony/java/android/telephony/ModemActivityInfo.java
+++ b/telephony/java/android/telephony/ModemActivityInfo.java
@@ -17,6 +17,7 @@
package android.telephony;
import android.annotation.NonNull;
+import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.os.Parcel;
import android.os.Parcelable;
@@ -59,7 +60,7 @@
private int mRxTimeMs;
public ModemActivityInfo(long timestamp, int sleepTimeMs, int idleTimeMs,
- @NonNull int[] txTimeMs, int rxTimeMs) {
+ @Nullable int[] txTimeMs, int rxTimeMs) {
mTimestamp = timestamp;
mSleepTimeMs = sleepTimeMs;
mIdleTimeMs = idleTimeMs;
@@ -68,10 +69,13 @@
}
/** helper API to populate tx power range for each bucket **/
- private void populateTransmitPowerRange(@NonNull int[] transmitPowerMs) {
+ private void populateTransmitPowerRange(@Nullable int[] transmitPowerMs) {
int i = 0;
- for ( ; i < Math.min(transmitPowerMs.length, TX_POWER_LEVELS); i++) {
- mTransmitPowerInfo.add(i, new TransmitPower(TX_POWER_RANGES[i], transmitPowerMs[i]));
+ if (transmitPowerMs != null) {
+ for ( ; i < Math.min(transmitPowerMs.length, TX_POWER_LEVELS); i++) {
+ mTransmitPowerInfo.add(i,
+ new TransmitPower(TX_POWER_RANGES[i], transmitPowerMs[i]));
+ }
}
// Make sure that mTransmitPowerInfo is fully initialized.
for ( ; i < TX_POWER_LEVELS; i++) {
@@ -94,7 +98,7 @@
return 0;
}
- public static final @android.annotation.NonNull Parcelable.Creator<ModemActivityInfo> CREATOR =
+ public static final @NonNull Parcelable.Creator<ModemActivityInfo> CREATOR =
new Parcelable.Creator<ModemActivityInfo>() {
public ModemActivityInfo createFromParcel(Parcel in) {
long timestamp = in.readLong();
@@ -149,7 +153,7 @@
}
/** @hide */
- public void setTransmitTimeMillis(int[] txTimeMs) {
+ public void setTransmitTimeMillis(@Nullable int[] txTimeMs) {
populateTransmitPowerRange(txTimeMs);
}
diff --git a/telephony/java/android/telephony/PhoneCapability.java b/telephony/java/android/telephony/PhoneCapability.java
index 17b7963f..8a75831 100644
--- a/telephony/java/android/telephony/PhoneCapability.java
+++ b/telephony/java/android/telephony/PhoneCapability.java
@@ -16,6 +16,8 @@
package android.telephony;
+import android.annotation.NonNull;
+import android.annotation.SystemApi;
import android.os.Parcel;
import android.os.Parcelable;
@@ -27,12 +29,13 @@
/**
* Define capability of a modem group. That is, the capabilities
* are shared between those modems defined by list of modem IDs.
- * @hide
*/
-public class PhoneCapability implements Parcelable {
+public final class PhoneCapability implements Parcelable {
// Hardcoded default DSDS capability.
+ /** @hide */
public static final PhoneCapability DEFAULT_DSDS_CAPABILITY;
// Hardcoded default Single SIM single standby capability.
+ /** @hide */
public static final PhoneCapability DEFAULT_SSSS_CAPABILITY;
static {
@@ -48,13 +51,18 @@
logicalModemList.add(modemInfo1);
DEFAULT_SSSS_CAPABILITY = new PhoneCapability(1, 1, 0, logicalModemList, false);
}
-
+ /** @hide */
public final int maxActiveVoiceCalls;
+ /** @hide */
public final int maxActiveData;
+ /** @hide */
public final int max5G;
+ /** @hide */
public final boolean validationBeforeSwitchSupported;
+ /** @hide */
public final List<ModemInfo> logicalModemList;
+ /** @hide */
public PhoneCapability(int maxActiveVoiceCalls, int maxActiveData, int max5G,
List<ModemInfo> logicalModemList, boolean validationBeforeSwitchSupported) {
this.maxActiveVoiceCalls = maxActiveVoiceCalls;
@@ -116,7 +124,7 @@
/**
* {@link Parcelable#writeToParcel}
*/
- public void writeToParcel(Parcel dest, @Parcelable.WriteFlags int flags) {
+ public void writeToParcel(@NonNull Parcel dest, @Parcelable.WriteFlags int flags) {
dest.writeInt(maxActiveVoiceCalls);
dest.writeInt(maxActiveData);
dest.writeInt(max5G);
diff --git a/telephony/java/android/telephony/RadioAccessSpecifier.java b/telephony/java/android/telephony/RadioAccessSpecifier.java
index 690e44a..a403095 100644
--- a/telephony/java/android/telephony/RadioAccessSpecifier.java
+++ b/telephony/java/android/telephony/RadioAccessSpecifier.java
@@ -97,8 +97,9 @@
* Returns the frequency bands that need to be scanned.
*
* The returned value is defined in either of {@link AccessNetworkConstants.GeranBand},
- * {@link AccessNetworkConstants.UtranBand} and {@link AccessNetworkConstants.EutranBand}, and
- * it depends on the returned value of {@link #getRadioAccessNetwork()}.
+ * {@link AccessNetworkConstants.UtranBand}, {@link AccessNetworkConstants.EutranBand},
+ * and {@link AccessNetworkConstants.NgranBands}, and it depends on
+ * the returned value of {@link #getRadioAccessNetwork()}.
*/
public int[] getBands() {
return mBands == null ? null : mBands.clone();
diff --git a/telephony/java/android/telephony/SignalStrength.java b/telephony/java/android/telephony/SignalStrength.java
index 480c9d9..9aafc1b 100644
--- a/telephony/java/android/telephony/SignalStrength.java
+++ b/telephony/java/android/telephony/SignalStrength.java
@@ -60,12 +60,6 @@
@UnsupportedAppUsage
public static final int NUM_SIGNAL_STRENGTH_BINS = 5;
- /** SIGNAL_STRENGTH_NAMES is currently used by BatteryStats, but to-be-removed soon. */
- /** @hide */
- public static final String[] SIGNAL_STRENGTH_NAMES = {
- "none", "poor", "moderate", "good", "great"
- };
-
/**
* Indicates the invalid measures of signal strength.
*
diff --git a/telephony/java/android/telephony/SmsCbMessage.java b/telephony/java/android/telephony/SmsCbMessage.java
index fad70d2..045d1eb 100644
--- a/telephony/java/android/telephony/SmsCbMessage.java
+++ b/telephony/java/android/telephony/SmsCbMessage.java
@@ -29,6 +29,7 @@
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.util.ArrayList;
import java.util.List;
/**
@@ -407,13 +408,17 @@
}
/**
- * Get the warning area coordinates information represent by polygons and circles.
- * @return a list of geometries, {@link Nullable} means there is no coordinate information
- * associated to this message.
+ * Get the warning area coordinates information represented by polygons and circles.
+ * @return a list of geometries, or an empty list if there is no coordinate information
+ * associated with this message.
* @hide
*/
- @Nullable
+ @SystemApi
+ @NonNull
public List<Geometry> getGeometries() {
+ if (mGeometries == null) {
+ return new ArrayList<>();
+ }
return mGeometries;
}
@@ -528,7 +533,8 @@
+ ", priority=" + mPriority
+ (mEtwsWarningInfo != null ? (", " + mEtwsWarningInfo.toString()) : "")
+ (mCmasWarningInfo != null ? (", " + mCmasWarningInfo.toString()) : "")
- + ", maximumWaitingTime = " + mMaximumWaitTimeSec
+ + ", maximumWaitingTime=" + mMaximumWaitTimeSec
+ + ", received time=" + mReceivedTimeMillis
+ ", slotIndex = " + mSlotIndex
+ ", geo=" + (mGeometries != null
? CbGeoUtils.encodeGeometriesToString(mGeometries) : "null")
@@ -720,6 +726,6 @@
* @return {@code True} if this message needs geo-fencing check.
*/
public boolean needGeoFencingCheck() {
- return mMaximumWaitTimeSec > 0 && mGeometries != null;
+ return mMaximumWaitTimeSec > 0 && mGeometries != null && !mGeometries.isEmpty();
}
}
diff --git a/telephony/java/android/telephony/SubscriptionManager.java b/telephony/java/android/telephony/SubscriptionManager.java
index 43d9c11..fbbf75a8 100644
--- a/telephony/java/android/telephony/SubscriptionManager.java
+++ b/telephony/java/android/telephony/SubscriptionManager.java
@@ -2713,9 +2713,14 @@
if (executor == null || callback == null) {
return;
}
- Binder.withCleanCallingIdentity(() -> executor.execute(() -> {
- callback.accept(result);
- }));
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ executor.execute(() -> {
+ callback.accept(result);
+ });
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
}
};
iSub.setPreferredDataSubscriptionId(subId, needValidation, callbackStub);
@@ -3110,7 +3115,11 @@
}
/**
- * Enables or disables a subscription. This is currently used in the settings page.
+ * Enables or disables a subscription. This is currently used in the settings page. It will
+ * fail and return false if operation is not supported or failed.
+ *
+ * To disable an active subscription on a physical (non-Euicc) SIM,
+ * {@link #canDisablePhysicalSubscription} needs to be true.
*
* <p>
* Permissions android.Manifest.permission.MODIFY_PHONE_STATE is required
@@ -3142,6 +3151,38 @@
}
/**
+ * Whether it's supported to disable / re-enable a subscription on a physical (non-euicc) SIM.
+ *
+ * Physical SIM refers non-euicc, or aka non-programmable SIM.
+ *
+ * It provides whether a physical SIM card can be disabled without taking it out, which is done
+ * via {@link #setSubscriptionEnabled(int, boolean)} API.
+ *
+ * Requires Permission: READ_PRIVILEGED_PHONE_STATE.
+ *
+ * @return whether can disable subscriptions on physical SIMs.
+ *
+ * @hide
+ */
+ @SystemApi
+ @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
+ public boolean canDisablePhysicalSubscription() {
+ if (VDBG) {
+ logd("canDisablePhysicalSubscription");
+ }
+ try {
+ ISub iSub = ISub.Stub.asInterface(ServiceManager.getService("isub"));
+ if (iSub != null) {
+ return iSub.canDisablePhysicalSubscription();
+ }
+ } catch (RemoteException ex) {
+ // ignore it
+ }
+
+ return false;
+ }
+
+ /**
* DO NOT USE.
* This API is designed for features that are not finished at this point. Do not call this API.
* @hide
diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java
index 8759a29..fc26122 100644
--- a/telephony/java/android/telephony/TelephonyManager.java
+++ b/telephony/java/android/telephony/TelephonyManager.java
@@ -86,7 +86,6 @@
import com.android.ims.internal.IImsServiceFeatureCallback;
import com.android.internal.annotations.VisibleForTesting;
-import com.android.internal.telecom.ITelecomService;
import com.android.internal.telephony.CellNetworkScanResult;
import com.android.internal.telephony.INumberVerificationCallback;
import com.android.internal.telephony.IOns;
@@ -5176,13 +5175,11 @@
* @return the current call state.
*/
public @CallState int getCallState() {
- try {
- ITelecomService telecom = getTelecomService();
- if (telecom != null) {
- return telecom.getCallState();
+ if (mContext != null) {
+ TelecomManager telecomManager = mContext.getSystemService(TelecomManager.class);
+ if (telecomManager != null) {
+ return telecomManager.getCallState();
}
- } catch (RemoteException e) {
- Log.e(TAG, "Error calling ITelecomService#getCallState", e);
}
return CALL_STATE_IDLE;
}
@@ -5341,13 +5338,6 @@
return ITelephony.Stub.asInterface(ServiceManager.getService(Context.TELEPHONY_SERVICE));
}
- /**
- * @hide
- */
- private ITelecomService getTelecomService() {
- return ITelecomService.Stub.asInterface(ServiceManager.getService(TELECOM_SERVICE));
- }
-
private ITelephonyRegistry getTelephonyRegistry() {
return ITelephonyRegistry.Stub.asInterface(ServiceManager.getService("telephony.registry"));
}
@@ -5682,16 +5672,24 @@
new ICellInfoCallback.Stub() {
@Override
public void onCellInfo(List<CellInfo> cellInfo) {
- Binder.withCleanCallingIdentity(() ->
- executor.execute(() -> callback.onCellInfo(cellInfo)));
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ executor.execute(() -> callback.onCellInfo(cellInfo));
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
}
@Override
public void onError(int errorCode, String exceptionName, String message) {
- Binder.withCleanCallingIdentity(() ->
- executor.execute(() -> callback.onError(
- errorCode,
- createThrowableByClassName(exceptionName, message))));
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ executor.execute(() -> callback.onError(
+ errorCode,
+ createThrowableByClassName(exceptionName, message)));
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
}
}, getOpPackageName(), getFeatureId());
} catch (RemoteException ex) {
@@ -5724,16 +5722,25 @@
new ICellInfoCallback.Stub() {
@Override
public void onCellInfo(List<CellInfo> cellInfo) {
- Binder.withCleanCallingIdentity(() ->
- executor.execute(() -> callback.onCellInfo(cellInfo)));
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ executor.execute(() -> callback.onCellInfo(cellInfo));
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
+
}
@Override
public void onError(int errorCode, String exceptionName, String message) {
- Binder.withCleanCallingIdentity(() ->
- executor.execute(() -> callback.onError(
- errorCode,
- createThrowableByClassName(exceptionName, message))));
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ executor.execute(() -> callback.onError(
+ errorCode,
+ createThrowableByClassName(exceptionName, message)));
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
}
}, getOpPackageName(), getFeatureId(), workSource);
} catch (RemoteException ex) {
@@ -6598,16 +6605,24 @@
INumberVerificationCallback internalCallback = new INumberVerificationCallback.Stub() {
@Override
public void onCallReceived(String phoneNumber) {
- Binder.withCleanCallingIdentity(() ->
- executor.execute(() ->
- callback.onCallReceived(phoneNumber)));
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ executor.execute(() ->
+ callback.onCallReceived(phoneNumber));
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
}
@Override
public void onVerificationFailed(int reason) {
- Binder.withCleanCallingIdentity(() ->
- executor.execute(() ->
- callback.onVerificationFailed(reason)));
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ executor.execute(() ->
+ callback.onVerificationFailed(reason));
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
}
};
@@ -7747,20 +7762,20 @@
* {@link CarrierConfigManager#KEY_EMERGENCY_SMS_MODE_TIMER_MS_INT}. If
* the carrier does not support this mode, this function will always return false.
*
- * @return true if this device is in emergency SMS mode, false otherwise.
+ * @return {@code true} if this device is in emergency SMS mode, {@code false} otherwise.
*
* @hide
*/
+ @SystemApi
@RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
public boolean isInEmergencySmsMode() {
-
try {
ITelephony telephony = getITelephony();
if (telephony != null) {
return telephony.isInEmergencySmsMode();
}
} catch (RemoteException ex) {
- Rlog.e(TAG, "getNetworkSelectionMode RemoteException", ex);
+ Rlog.e(TAG, "isInEmergencySmsMode RemoteException", ex);
}
return false;
}
@@ -11091,14 +11106,66 @@
}
/**
- * Broadcast intent action for Ota emergency number database installation complete.
+ * Indicates Emergency number database version is invalid.
*
* @hide
*/
- @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
+ @TestApi
@SystemApi
- public static final String ACTION_OTA_EMERGENCY_NUMBER_DB_INSTALLED =
- "android.telephony.action.OTA_EMERGENCY_NUMBER_DB_INSTALLED";
+ public static final int INVALID_EMERGENCY_NUMBER_DB_VERSION = -1;
+
+ /**
+ * Notify Telephony for OTA emergency number database installation complete.
+ *
+ * <p> Requires permission:
+ * {@link android.Manifest.permission#MODIFY_PHONE_STATE MODIFY_PHONE_STATE}
+ *
+ * @hide
+ */
+ @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
+ @SystemApi
+ public void notifyOtaEmergencyNumberDbInstalled() {
+ try {
+ ITelephony telephony = getITelephony();
+ if (telephony != null) {
+ telephony.notifyOtaEmergencyNumberDbInstalled();
+ } else {
+ throw new IllegalStateException("telephony service is null.");
+ }
+ } catch (RemoteException ex) {
+ Log.e(TAG, "notifyOtaEmergencyNumberDatabaseInstalled RemoteException", ex);
+ ex.rethrowAsRuntimeException();
+ }
+ }
+
+ /**
+ * Override the file path for testing OTA emergency number database in a file partition.
+ *
+ * @param otaFilePath The test OTA emergency number database file path;
+ * if "RESET", recover the original database file partition.
+ * Format: <root file folder>@<file path>
+ *
+ * <p> Requires permission:
+ * {@link android.Manifest.permission#READ_ACTIVE_EMERGENCY_SESSION}
+ *
+ * @hide
+ */
+ @RequiresPermission(android.Manifest.permission.READ_ACTIVE_EMERGENCY_SESSION)
+ @SystemApi
+ @TestApi
+ public void updateTestOtaEmergencyNumberDbFilePath(@NonNull String otaFilePath) {
+ try {
+ ITelephony telephony = getITelephony();
+ if (telephony != null) {
+ telephony.updateTestOtaEmergencyNumberDbFilePath(otaFilePath);
+ } else {
+ throw new IllegalStateException("telephony service is null.");
+ }
+ } catch (RemoteException ex) {
+ Log.e(TAG, "notifyOtaEmergencyNumberDatabaseInstalled RemoteException", ex);
+ ex.rethrowAsRuntimeException();
+ }
+ }
/**
* Returns whether {@link TelephonyManager#ACTION_EMERGENCY_ASSISTANCE emergency assistance} is
@@ -11296,6 +11363,29 @@
return false;
}
+ /**
+ * A test API to return the emergency number db version.
+ *
+ * <p>Requires Permission:
+ * {@link android.Manifest.permission#READ_PRIVILEGED_PHONE_STATE READ_PRIVILEGED_PHONE_STATE}
+ *
+ * @hide
+ */
+ @TestApi
+ @SystemApi
+ public int getEmergencyNumberDbVersion() {
+ try {
+ ITelephony telephony = getITelephony();
+ if (telephony != null) {
+ return telephony.getEmergencyNumberDbVersion(getSubId());
+ }
+ } catch (RemoteException ex) {
+ Log.e(TAG, "getEmergencyNumberDbVersion RemoteException", ex);
+ ex.rethrowAsRuntimeException();
+ }
+ return INVALID_EMERGENCY_NUMBER_DB_VERSION;
+ }
+
/** @hide */
@Retention(RetentionPolicy.SOURCE)
@IntDef(prefix = {"SET_OPPORTUNISTIC_SUB"}, value = {
@@ -11432,9 +11522,14 @@
if (executor == null || callback == null) {
return;
}
- Binder.withCleanCallingIdentity(() -> executor.execute(() -> {
- callback.accept(SET_OPPORTUNISTIC_SUB_REMOTE_SERVICE_EXCEPTION);
- }));
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ executor.execute(() -> {
+ callback.accept(SET_OPPORTUNISTIC_SUB_REMOTE_SERVICE_EXCEPTION);
+ });
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
return;
}
ISetOpportunisticDataCallback callbackStub = new ISetOpportunisticDataCallback.Stub() {
@@ -11443,9 +11538,14 @@
if (executor == null || callback == null) {
return;
}
- Binder.withCleanCallingIdentity(() -> executor.execute(() -> {
- callback.accept(result);
- }));
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ executor.execute(() -> {
+ callback.accept(result);
+ });
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
}
};
@@ -11519,13 +11619,23 @@
return;
}
if (iOpportunisticNetworkService == null) {
- Binder.withCleanCallingIdentity(() -> executor.execute(() -> {
- callback.accept(UPDATE_AVAILABLE_NETWORKS_REMOTE_SERVICE_EXCEPTION);
- }));
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ executor.execute(() -> {
+ callback.accept(UPDATE_AVAILABLE_NETWORKS_REMOTE_SERVICE_EXCEPTION);
+ });
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
} else {
- Binder.withCleanCallingIdentity(() -> executor.execute(() -> {
- callback.accept(UPDATE_AVAILABLE_NETWORKS_INVALID_ARGUMENTS);
- }));
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ executor.execute(() -> {
+ callback.accept(UPDATE_AVAILABLE_NETWORKS_INVALID_ARGUMENTS);
+ });
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
}
return;
}
@@ -11536,9 +11646,14 @@
if (executor == null || callback == null) {
return;
}
- Binder.withCleanCallingIdentity(() -> executor.execute(() -> {
- callback.accept(result);
- }));
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ executor.execute(() -> {
+ callback.accept(result);
+ });
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
}
};
iOpportunisticNetworkService.updateAvailableNetworks(availableNetworks, callbackStub,
diff --git a/telephony/java/android/telephony/ims/ImsReasonInfo.java b/telephony/java/android/telephony/ims/ImsReasonInfo.java
index 663b09a..f4b2cef 100644
--- a/telephony/java/android/telephony/ims/ImsReasonInfo.java
+++ b/telephony/java/android/telephony/ims/ImsReasonInfo.java
@@ -18,9 +18,10 @@
import android.annotation.IntDef;
import android.annotation.NonNull;
+import android.annotation.Nullable;
import android.annotation.SystemApi;
-import android.annotation.TestApi;
import android.annotation.UnsupportedAppUsage;
+import android.os.Build;
import android.os.Parcel;
import android.os.Parcelable;
@@ -28,12 +29,13 @@
import java.lang.annotation.RetentionPolicy;
/**
- * This class enables an application to get details on why a method call failed.
- *
- * @hide
+ * Provides details on why an IMS call failed. Applications can use the methods in this class to
+ * get local or network fault behind an IMS services failure. For example, if the code is
+ * CODE_CALL_BARRED, then the call was blocked by network call barring configuration and it is not
+ * the device's bug and the user can retry the call when network lift the barring.
+ * Typical use case includes call backs when IMS call state changed with this class as a param
+ * containing details on why IMS call changed state/failed.
*/
-@SystemApi
-@TestApi
public final class ImsReasonInfo implements Parcelable {
/**
@@ -1096,9 +1098,11 @@
/**
* Network string error messages.
* mExtraMessage may have these values.
+ * @hide
*/
- public static final String EXTRA_MSG_SERVICE_NOT_AUTHORIZED
- = "Forbidden. Not Authorized for Service";
+ @SystemApi
+ public static final String EXTRA_MSG_SERVICE_NOT_AUTHORIZED =
+ "Forbidden. Not Authorized for Service";
/*
@@ -1106,21 +1110,21 @@
* This value can be referred when the code is CODE_LOCAL_CALL_CS_RETRY_REQUIRED.
*/
/**
- * An extra that may be populated when the {@link CODE_LOCAL_CALL_CS_RETRY_REQUIRED} result has
+ * An extra that may be populated when the {@link #CODE_LOCAL_CALL_CS_RETRY_REQUIRED} result has
* been returned.
* <p>
* Try to connect the call using CS
*/
public static final int EXTRA_CODE_CALL_RETRY_NORMAL = 1;
/**
- * An extra that may be populated when the {@link CODE_LOCAL_CALL_CS_RETRY_REQUIRED} result has
+ * An extra that may be populated when the {@link #CODE_LOCAL_CALL_CS_RETRY_REQUIRED} result has
* been returned.
* <p>
* Try to connect the call using CS and do not notify the user.
*/
public static final int EXTRA_CODE_CALL_RETRY_SILENT_REDIAL = 2;
/**
- * An extra that may be populated when the {@link CODE_LOCAL_CALL_CS_RETRY_REQUIRED} result has
+ * An extra that may be populated when the {@link #CODE_LOCAL_CALL_CS_RETRY_REQUIRED} result has
* been returned.
* <p>
* Try to connect the call using CS by using the settings.
@@ -1130,15 +1134,18 @@
// For main reason code
/** @hide */
- @UnsupportedAppUsage
+ @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.Q, publicAlternatives = "{@code "
+ + "#getCode()}")
public int mCode;
// For the extra code value; it depends on the code value.
/** @hide */
- @UnsupportedAppUsage
+ @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.Q, publicAlternatives = "{@code "
+ + "#getExtraCode()}")
public int mExtraCode;
// For the additional message of the reason info.
/** @hide */
- @UnsupportedAppUsage
+ @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.Q, publicAlternatives = "{@code "
+ + "#getExtraMessage()}")
public String mExtraMessage;
/** @hide */
@@ -1162,7 +1169,7 @@
mExtraMessage = null;
}
- public ImsReasonInfo(int code, int extraCode, String extraMessage) {
+ public ImsReasonInfo(@ImsCode int code, int extraCode, @Nullable String extraMessage) {
mCode = code;
mExtraCode = extraCode;
mExtraMessage = extraMessage;
@@ -1186,7 +1193,7 @@
* @return an optional OEM specified string that provides extra information about the operation
* result.
*/
- public String getExtraMessage() {
+ public @Nullable String getExtraMessage() {
return mExtraMessage;
}
@@ -1205,13 +1212,13 @@
}
@Override
- public void writeToParcel(Parcel out, int flags) {
+ public void writeToParcel(@NonNull Parcel out, int flags) {
out.writeInt(mCode);
out.writeInt(mExtraCode);
out.writeString(mExtraMessage);
}
- public static final @android.annotation.NonNull Creator<ImsReasonInfo> CREATOR = new Creator<ImsReasonInfo>() {
+ public static final @NonNull Creator<ImsReasonInfo> CREATOR = new Creator<ImsReasonInfo>() {
@Override
public ImsReasonInfo createFromParcel(Parcel in) {
return new ImsReasonInfo(in);
diff --git a/telephony/java/com/android/internal/telephony/CarrierAppUtils.java b/telephony/java/com/android/internal/telephony/CarrierAppUtils.java
index e6bebbb..2dc6ae3 100644
--- a/telephony/java/com/android/internal/telephony/CarrierAppUtils.java
+++ b/telephony/java/com/android/internal/telephony/CarrierAppUtils.java
@@ -32,7 +32,7 @@
import com.android.internal.R;
import com.android.internal.annotations.VisibleForTesting;
-import com.android.internal.util.ArrayUtils;
+import com.android.internal.telephony.util.ArrayUtils;
import com.android.server.SystemConfig;
import java.util.ArrayList;
diff --git a/telephony/java/com/android/internal/telephony/ISub.aidl b/telephony/java/com/android/internal/telephony/ISub.aidl
index 151aae8..c5d58ac 100755
--- a/telephony/java/com/android/internal/telephony/ISub.aidl
+++ b/telephony/java/com/android/internal/telephony/ISub.aidl
@@ -298,4 +298,6 @@
boolean setAlwaysAllowMmsData(int subId, boolean alwaysAllow);
int getActiveDataSubscriptionId();
+
+ boolean canDisablePhysicalSubscription();
}
diff --git a/telephony/java/com/android/internal/telephony/ITelephony.aidl b/telephony/java/com/android/internal/telephony/ITelephony.aidl
index e895bae..0ec54ec 100644
--- a/telephony/java/com/android/internal/telephony/ITelephony.aidl
+++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl
@@ -2048,6 +2048,21 @@
List<String> getEmergencyNumberListTestMode();
/**
+ * A test API to return the emergency number db version.
+ */
+ int getEmergencyNumberDbVersion(int subId);
+
+ /**
+ * Notify Telephony for OTA emergency number database installation complete.
+ */
+ void notifyOtaEmergencyNumberDbInstalled();
+
+ /**
+ * Override the file partition name for testing OTA emergency number database.
+ */
+ void updateTestOtaEmergencyNumberDbFilePath(String otaFilePath);
+
+ /**
* Enable or disable a logical modem stack associated with the slotIndex.
*/
boolean enableModemForSlot(int slotIndex, boolean enable);
diff --git a/telephony/java/com/android/internal/telephony/Sms7BitEncodingTranslator.java b/telephony/java/com/android/internal/telephony/Sms7BitEncodingTranslator.java
index 2cdf2f6..dcea9bb 100644
--- a/telephony/java/com/android/internal/telephony/Sms7BitEncodingTranslator.java
+++ b/telephony/java/com/android/internal/telephony/Sms7BitEncodingTranslator.java
@@ -23,7 +23,7 @@
import android.util.SparseIntArray;
import com.android.internal.telephony.cdma.sms.UserData;
-import com.android.internal.util.XmlUtils;
+import com.android.internal.telephony.util.XmlUtils;
import dalvik.annotation.compat.UnsupportedAppUsage;
diff --git a/telephony/java/com/android/internal/telephony/SmsMessageBase.java b/telephony/java/com/android/internal/telephony/SmsMessageBase.java
index f0687b4..a3efb75 100644
--- a/telephony/java/com/android/internal/telephony/SmsMessageBase.java
+++ b/telephony/java/com/android/internal/telephony/SmsMessageBase.java
@@ -20,7 +20,6 @@
import android.os.Build;
import android.provider.Telephony;
import android.telephony.SmsMessage;
-import android.text.Emoji;
import com.android.internal.telephony.GsmAlphabet.TextEncodingDetails;
@@ -403,9 +402,9 @@
if (!breakIterator.isBoundary(nextPos)) {
int breakPos = breakIterator.preceding(nextPos);
while (breakPos + 4 <= nextPos
- && Emoji.isRegionalIndicatorSymbol(
+ && isRegionalIndicatorSymbol(
Character.codePointAt(msgBody, breakPos))
- && Emoji.isRegionalIndicatorSymbol(
+ && isRegionalIndicatorSymbol(
Character.codePointAt(msgBody, breakPos + 2))) {
// skip forward over flags (pairs of Regional Indicator Symbol)
breakPos += 4;
@@ -421,6 +420,11 @@
return nextPos;
}
+ private static boolean isRegionalIndicatorSymbol(int codePoint) {
+ /** Based on http://unicode.org/Public/emoji/3.0/emoji-sequences.txt */
+ return 0x1F1E6 <= codePoint && codePoint <= 0x1F1FF;
+ }
+
/**
* Calculate the TextEncodingDetails of a message encoded in Unicode.
*/
diff --git a/telephony/java/com/android/internal/telephony/util/ArrayUtils.java b/telephony/java/com/android/internal/telephony/util/ArrayUtils.java
new file mode 100644
index 0000000..2905125
--- /dev/null
+++ b/telephony/java/com/android/internal/telephony/util/ArrayUtils.java
@@ -0,0 +1,229 @@
+/*
+ * Copyright (C) 2019 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.telephony.util;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+
+import java.lang.reflect.Array;
+import java.util.Collection;
+import java.util.Map;
+import java.util.Objects;
+
+/** Utility methods for array operations. */
+public final class ArrayUtils {
+ private ArrayUtils() { /* cannot be instantiated */ }
+
+ /**
+ * Adds value to given array if not already present, providing set-like behavior.
+ */
+ @SuppressWarnings("unchecked")
+ public static @NonNull <T> T[] appendElement(Class<T> kind, @Nullable T[] array, T element) {
+ return appendElement(kind, array, element, false);
+ }
+
+ /**
+ * Adds value to given array.
+ */
+ @SuppressWarnings("unchecked")
+ public static @NonNull <T> T[] appendElement(Class<T> kind, @Nullable T[] array, T element,
+ boolean allowDuplicates) {
+ final T[] result;
+ final int end;
+ if (array != null) {
+ if (!allowDuplicates && contains(array, element)) return array;
+ end = array.length;
+ result = (T[]) Array.newInstance(kind, end + 1);
+ System.arraycopy(array, 0, result, 0, end);
+ } else {
+ end = 0;
+ result = (T[]) Array.newInstance(kind, 1);
+ }
+ result[end] = element;
+ return result;
+ }
+
+ /**
+ * Combine multiple arrays into a single array.
+ *
+ * @param kind The class of the array elements
+ * @param arrays The arrays to combine
+ * @param <T> The class of the array elements (inferred from kind).
+ * @return A single array containing all the elements of the parameter arrays.
+ */
+ @SuppressWarnings("unchecked")
+ public static @NonNull <T> T[] concatElements(Class<T> kind, @Nullable T[]... arrays) {
+ if (arrays == null || arrays.length == 0) {
+ return createEmptyArray(kind);
+ }
+
+ int totalLength = 0;
+ for (T[] item : arrays) {
+ if (item == null) {
+ continue;
+ }
+
+ totalLength += item.length;
+ }
+
+ // Optimization for entirely empty arrays.
+ if (totalLength == 0) {
+ return createEmptyArray(kind);
+ }
+
+ final T[] all = (T[]) Array.newInstance(kind, totalLength);
+ int pos = 0;
+ for (T[] item : arrays) {
+ if (item == null || item.length == 0) {
+ continue;
+ }
+ System.arraycopy(item, 0, all, pos, item.length);
+ pos += item.length;
+ }
+ return all;
+ }
+
+ private static @NonNull <T> T[] createEmptyArray(Class<T> kind) {
+ if (kind == String.class) {
+ return (T[]) EmptyArray.STRING;
+ } else if (kind == Object.class) {
+ return (T[]) EmptyArray.OBJECT;
+ }
+
+ return (T[]) Array.newInstance(kind, 0);
+ }
+
+ private static final class EmptyArray {
+ private EmptyArray() {}
+
+ public static final Object[] OBJECT = new Object[0];
+ public static final String[] STRING = new String[0];
+ }
+
+ /**
+ * Checks if {@code value} is in {@code array}.
+ */
+ public static boolean contains(@Nullable char[] array, char value) {
+ if (array == null) return false;
+ for (char element : array) {
+ if (element == value) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Checks if {@code value} is in {@code array}.
+ */
+ public static <T> boolean contains(@Nullable Collection<T> cur, T val) {
+ return (cur != null) ? cur.contains(val) : false;
+ }
+
+ /**
+ * Checks if {@code value} is in {@code array}.
+ */
+ public static boolean contains(@Nullable int[] array, int value) {
+ if (array == null) return false;
+ for (int element : array) {
+ if (element == value) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Checks if {@code value} is in {@code array}.
+ */
+ public static boolean contains(@Nullable long[] array, long value) {
+ if (array == null) return false;
+ for (long element : array) {
+ if (element == value) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Checks if {@code value} is in {@code array}.
+ */
+ public static <T> boolean contains(@Nullable T[] array, T value) {
+ return indexOf(array, value) != -1;
+ }
+
+ /**
+ * Return first index of {@code value} in {@code array}, or {@code -1} if
+ * not found.
+ */
+ public static <T> int indexOf(@Nullable T[] array, T value) {
+ if (array == null) return -1;
+ for (int i = 0; i < array.length; i++) {
+ if (Objects.equals(array[i], value)) return i;
+ }
+ return -1;
+ }
+
+ /**
+ * Checks if given array is null or has zero elements.
+ */
+ public static boolean isEmpty(@Nullable Collection<?> array) {
+ return array == null || array.isEmpty();
+ }
+
+ /**
+ * Checks if given map is null or has zero elements.
+ */
+ public static boolean isEmpty(@Nullable Map<?, ?> map) {
+ return map == null || map.isEmpty();
+ }
+
+ /**
+ * Checks if given array is null or has zero elements.
+ */
+ public static <T> boolean isEmpty(@Nullable T[] array) {
+ return array == null || array.length == 0;
+ }
+
+ /**
+ * Checks if given array is null or has zero elements.
+ */
+ public static boolean isEmpty(@Nullable int[] array) {
+ return array == null || array.length == 0;
+ }
+
+ /**
+ * Checks if given array is null or has zero elements.
+ */
+ public static boolean isEmpty(@Nullable long[] array) {
+ return array == null || array.length == 0;
+ }
+
+ /**
+ * Checks if given array is null or has zero elements.
+ */
+ public static boolean isEmpty(@Nullable byte[] array) {
+ return array == null || array.length == 0;
+ }
+
+ /**
+ * Checks if given array is null or has zero elements.
+ */
+ public static boolean isEmpty(@Nullable boolean[] array) {
+ return array == null || array.length == 0;
+ }
+}
diff --git a/telephony/java/com/android/internal/telephony/util/TelephonyUtils.java b/telephony/java/com/android/internal/telephony/util/TelephonyUtils.java
new file mode 100644
index 0000000..a28d65c
--- /dev/null
+++ b/telephony/java/com/android/internal/telephony/util/TelephonyUtils.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2019 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.telephony.util;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.content.Context;
+import android.content.pm.ComponentInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.os.Binder;
+import android.os.RemoteException;
+import android.os.SystemProperties;
+
+import java.io.PrintWriter;
+
+/**
+ * This class provides various util functions
+ */
+public final class TelephonyUtils {
+ public static boolean IS_USER = "user".equals(android.os.Build.TYPE);
+ public static boolean IS_DEBUGGABLE = SystemProperties.getInt("ro.debuggable", 0) == 1;
+
+ /**
+ * Verify that caller holds {@link android.Manifest.permission#DUMP}.
+ *
+ * @return true if access should be granted.
+ */
+ public static boolean checkDumpPermission(Context context, String tag, PrintWriter pw) {
+ if (context.checkCallingOrSelfPermission(android.Manifest.permission.DUMP)
+ != PackageManager.PERMISSION_GRANTED) {
+ pw.println("Permission Denial: can't dump " + tag + " from from pid="
+ + Binder.getCallingPid() + ", uid=" + Binder.getCallingUid()
+ + " due to missing android.permission.DUMP permission");
+ return false;
+ } else {
+ return true;
+ }
+ }
+
+ /** Returns an empty string if the input is {@code null}. */
+ public static String emptyIfNull(@Nullable String str) {
+ return str == null ? "" : str;
+ }
+
+ /** Throws a {@link RuntimeException} that wrapps the {@link RemoteException}. */
+ public static RuntimeException rethrowAsRuntimeException(RemoteException remoteException) {
+ throw new RuntimeException(remoteException);
+ }
+
+ /**
+ * Returns a {@link ComponentInfo} from the {@link ResolveInfo},
+ * or throws an {@link IllegalStateException} if not available.
+ */
+ public static ComponentInfo getComponentInfo(@NonNull ResolveInfo resolveInfo) {
+ if (resolveInfo.activityInfo != null) return resolveInfo.activityInfo;
+ if (resolveInfo.serviceInfo != null) return resolveInfo.serviceInfo;
+ if (resolveInfo.providerInfo != null) return resolveInfo.providerInfo;
+ throw new IllegalStateException("Missing ComponentInfo!");
+ }
+}
diff --git a/telephony/java/com/android/internal/telephony/util/XmlUtils.java b/telephony/java/com/android/internal/telephony/util/XmlUtils.java
new file mode 100644
index 0000000..72c5d3a
--- /dev/null
+++ b/telephony/java/com/android/internal/telephony/util/XmlUtils.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2019 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.telephony.util;
+
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
+
+import java.io.IOException;
+
+/** Utility methods for XML operations. */
+public final class XmlUtils {
+ private XmlUtils() {}
+
+ /**
+ * Moves parser to the first start tag, and expects the tag name being {@code firstElementName}.
+ */
+ public static void beginDocument(XmlPullParser parser, String firstElementName)
+ throws XmlPullParserException, IOException {
+ int type;
+ while ((type = parser.next()) != parser.START_TAG && type != parser.END_DOCUMENT) {
+ // no-op
+ }
+
+ if (type != parser.START_TAG) {
+ throw new XmlPullParserException("No start tag found");
+ }
+
+ if (!parser.getName().equals(firstElementName)) {
+ throw new XmlPullParserException("Unexpected start tag: found " + parser.getName()
+ + ", expected " + firstElementName);
+ }
+ }
+
+ /**
+ * Moves parser to the next start tag.
+ */
+ public static void nextElement(XmlPullParser parser)
+ throws XmlPullParserException, IOException {
+ int type;
+ while ((type = parser.next()) != parser.START_TAG && type != parser.END_DOCUMENT) {
+ // no-op
+ }
+ }
+
+ /**
+ * Moves parser to the next start tag within the {@code outerDepth}.
+ */
+ public static boolean nextElementWithin(XmlPullParser parser, int outerDepth)
+ throws IOException, XmlPullParserException {
+ for (;;) {
+ int type = parser.next();
+ if (type == XmlPullParser.END_DOCUMENT
+ || (type == XmlPullParser.END_TAG && parser.getDepth() == outerDepth)) {
+ return false;
+ }
+ if (type == XmlPullParser.START_TAG && parser.getDepth() == outerDepth + 1) {
+ return true;
+ }
+ }
+ }
+}
diff --git a/test-mock/src/android/test/mock/MockContext.java b/test-mock/src/android/test/mock/MockContext.java
index 45b236c..0208c3a 100644
--- a/test-mock/src/android/test/mock/MockContext.java
+++ b/test-mock/src/android/test/mock/MockContext.java
@@ -470,6 +470,13 @@
}
@Override
+ public void sendOrderedBroadcast(Intent intent, String receiverPermission, String receiverAppOp,
+ Bundle options, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode,
+ String initialData, Bundle initialExtras) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
public void sendStickyBroadcast(Intent intent) {
throw new UnsupportedOperationException();
}
diff --git a/tests/BackgroundDexOptServiceIntegrationTests/AndroidManifest.xml b/tests/BackgroundDexOptServiceIntegrationTests/AndroidManifest.xml
index 7291dc7..aec9f77 100644
--- a/tests/BackgroundDexOptServiceIntegrationTests/AndroidManifest.xml
+++ b/tests/BackgroundDexOptServiceIntegrationTests/AndroidManifest.xml
@@ -28,8 +28,6 @@
<uses-permission android:name="android.permission.SET_TIME" />
<uses-permission android:name="android.permission.UPDATE_DEVICE_STATS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
- <uses-permission android:name="android.permission.WRITE_DEVICE_CONFIG" />
- <uses-permission android:name="android.permission.READ_DEVICE_CONFIG" />
<application>
<uses-library android:name="android.test.runner" />
diff --git a/tests/BackgroundDexOptServiceIntegrationTests/src/com/android/server/pm/BackgroundDexOptServiceIntegrationTests.java b/tests/BackgroundDexOptServiceIntegrationTests/src/com/android/server/pm/BackgroundDexOptServiceIntegrationTests.java
index 4cd56c3..7d826f7 100644
--- a/tests/BackgroundDexOptServiceIntegrationTests/src/com/android/server/pm/BackgroundDexOptServiceIntegrationTests.java
+++ b/tests/BackgroundDexOptServiceIntegrationTests/src/com/android/server/pm/BackgroundDexOptServiceIntegrationTests.java
@@ -22,7 +22,6 @@
import android.os.ParcelFileDescriptor;
import android.os.SystemProperties;
import android.os.storage.StorageManager;
-import android.provider.DeviceConfig;
import android.util.Log;
import androidx.test.InstrumentationRegistry;
@@ -31,9 +30,7 @@
import org.junit.Assert;
import org.junit.Before;
import org.junit.BeforeClass;
-import org.junit.Rule;
import org.junit.Test;
-import org.junit.rules.ExpectedException;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -55,13 +52,6 @@
* 3. Under low storage conditions and package is recently used, check
* that dexopt upgrades test app to $(getprop pm.dexopt.bg-dexopt).
*
- * When downgrade feature is on (downgrade_unused_apps_enabled flag is set to true):
- * 4 On low storage, check that the inactive packages are downgraded.
- * 5. On low storage, check that used packages are upgraded.
- * 6. On storage completely full, dexopt fails.
- * 7. Not on low storage, unused packages are upgraded.
- * 8. Low storage, unused app is downgraded. When app is used again, app is upgraded.
- *
* Each test case runs "cmd package bg-dexopt-job com.android.frameworks.bgdexopttest".
*
* The setup for these tests make sure this package has been configured to have been recently used
@@ -69,10 +59,6 @@
* recently used, it sets the time forward more than
* `getprop pm.dexopt.downgrade_after_inactive_days` days.
*
- * For some of the tests, the DeviceConfig flags inactive_app_threshold_days and
- * downgrade_unused_apps_enabled are set. These turn on/off the downgrade unused apps feature for
- * all devices and set the time threshold for unused apps.
- *
* For tests that require low storage, the phone is filled up.
*
* Run with "atest BackgroundDexOptServiceIntegrationTests".
@@ -94,14 +80,10 @@
"pm.dexopt.downgrade_after_inactive_days", 0);
// Needs to be between 1.0 and 2.0.
private static final double LOW_STORAGE_MULTIPLIER = 1.5;
- private static final int DOWNGRADE_FEATURE_PKG_INACTIVE_AFTER_DAYS = 15;
// The file used to fill up storage.
private File mBigFile;
- @Rule
- public ExpectedException mExpectedException = ExpectedException.none();
-
// Remember start time.
@BeforeClass
public static void setUpAll() {
@@ -214,27 +196,11 @@
logSpaceRemaining();
}
- private void fillUpStorageCompletely() throws IOException {
- fillUpStorage((getStorageLowBytes()));
- }
-
// Fill up storage so that device is in low storage condition.
private void fillUpToLowStorage() throws IOException {
fillUpStorage((long) (getStorageLowBytes() * LOW_STORAGE_MULTIPLIER));
}
- private void setInactivePackageThreshold(int threshold) {
- DeviceConfig.setProperty(
- DeviceConfig.NAMESPACE_PACKAGE_MANAGER_SERVICE,
- "inactive_app_threshold_days", Integer.toString(threshold), false);
- }
-
- private void enableDowngradeFeature(boolean enabled) {
- DeviceConfig.setProperty(
- DeviceConfig.NAMESPACE_PACKAGE_MANAGER_SERVICE,
- "downgrade_unused_apps_enabled", Boolean.toString(enabled), false);
- }
-
// TODO(aeubanks): figure out how to get scheduled bg-dexopt to run
private static void runBackgroundDexOpt() throws IOException {
String result = runShellCommand("cmd package bg-dexopt-job " + PACKAGE_NAME);
@@ -278,7 +244,7 @@
// Test that background dexopt under normal conditions succeeds.
@Test
- public void testBackgroundDexOpt_normalConditions_dexOptSucceeds() throws IOException {
+ public void testBackgroundDexOpt() throws IOException {
// Set filter to quicken.
compilePackageWithFilter(PACKAGE_NAME, "verify");
Assert.assertEquals("verify", getCompilerFilter(PACKAGE_NAME));
@@ -291,16 +257,17 @@
// Test that background dexopt under low storage conditions upgrades used packages.
@Test
- public void testBackgroundDexOpt_lowStorage_usedPkgsUpgraded() throws IOException {
+ public void testBackgroundDexOptDowngradeSkipRecentlyUsedPackage() throws IOException {
// Should be less than DOWNGRADE_AFTER_DAYS.
long deltaDays = DOWNGRADE_AFTER_DAYS - 1;
try {
- enableDowngradeFeature(false);
// Set time to future.
setTimeFutureDays(deltaDays);
+
// Set filter to quicken.
compilePackageWithFilter(PACKAGE_NAME, "quicken");
Assert.assertEquals("quicken", getCompilerFilter(PACKAGE_NAME));
+
// Fill up storage to trigger low storage threshold.
fillUpToLowStorage();
@@ -315,20 +282,18 @@
}
// Test that background dexopt under low storage conditions downgrades unused packages.
- // This happens if the system property pm.dexopt.downgrade_after_inactive_days is set
- // (e.g. on Android Go devices).
@Test
- public void testBackgroundDexOpt_lowStorage_unusedPkgsDowngraded()
- throws IOException {
+ public void testBackgroundDexOptDowngradeSuccessful() throws IOException {
// Should be more than DOWNGRADE_AFTER_DAYS.
long deltaDays = DOWNGRADE_AFTER_DAYS + 1;
try {
- enableDowngradeFeature(false);
// Set time to future.
setTimeFutureDays(deltaDays);
+
// Set filter to quicken.
compilePackageWithFilter(PACKAGE_NAME, "quicken");
Assert.assertEquals("quicken", getCompilerFilter(PACKAGE_NAME));
+
// Fill up storage to trigger low storage threshold.
fillUpToLowStorage();
@@ -342,134 +307,4 @@
}
}
- // Test that the background dexopt downgrades inactive packages when the downgrade feature is
- // enabled.
- @Test
- public void testBackgroundDexOpt_downgradeFeatureEnabled_lowStorage_inactivePkgsDowngraded()
- throws IOException {
- // Should be more than DOWNGRADE_FEATURE_PKG_INACTIVE_AFTER_DAYS.
- long deltaDays = DOWNGRADE_FEATURE_PKG_INACTIVE_AFTER_DAYS + 1;
- try {
- enableDowngradeFeature(true);
- setInactivePackageThreshold(DOWNGRADE_FEATURE_PKG_INACTIVE_AFTER_DAYS);
- // Set time to future.
- setTimeFutureDays(deltaDays);
- // Set filter to quicken.
- compilePackageWithFilter(PACKAGE_NAME, "quicken");
- Assert.assertEquals("quicken", getCompilerFilter(PACKAGE_NAME));
- // Fill up storage to trigger low storage threshold.
- fillUpToLowStorage();
-
- runBackgroundDexOpt();
-
- // Verify that downgrade is successful.
- Assert.assertEquals(DOWNGRADE_COMPILER_FILTER, getCompilerFilter(PACKAGE_NAME));
- } finally {
- // Reset time.
- setTimeFutureDays(-deltaDays);
- }
- }
-
- // Test that the background dexopt upgrades used packages when the downgrade feature is enabled.
- // This test doesn't fill the device storage completely, but to a multiplier of the low storage
- // threshold and this is why apps can still be optimized.
- @Test
- public void testBackgroundDexOpt_downgradeFeatureEnabled_lowStorage_usedPkgsUpgraded()
- throws IOException {
- enableDowngradeFeature(true);
- // Set filter to quicken.
- compilePackageWithFilter(PACKAGE_NAME, "quicken");
- Assert.assertEquals("quicken", getCompilerFilter(PACKAGE_NAME));
- // Fill up storage to trigger low storage threshold.
- fillUpToLowStorage();
-
- runBackgroundDexOpt();
-
- /// Verify that bg-dexopt is successful in upgrading the used packages.
- Assert.assertEquals(BG_DEXOPT_COMPILER_FILTER, getCompilerFilter(PACKAGE_NAME));
- }
-
- // Test that the background dexopt fails and doesn't change the compilation filter of used
- // packages when the downgrade feature is enabled and the storage is filled up completely.
- // The bg-dexopt shouldn't optimise nor downgrade these packages.
- @Test
- public void testBackgroundDexOpt_downgradeFeatureEnabled_fillUpStorageCompletely_dexOptFails()
- throws IOException {
- enableDowngradeFeature(true);
- String previousCompilerFilter = getCompilerFilter(PACKAGE_NAME);
-
- // Fill up storage completely, without using a multiplier for the low storage threshold.
- fillUpStorageCompletely();
-
- // When the bg dexopt runs with the storage filled up completely, it will fail.
- mExpectedException.expect(IllegalStateException.class);
- runBackgroundDexOpt();
-
- /// Verify that bg-dexopt doesn't change the compilation filter of used apps.
- Assert.assertEquals(previousCompilerFilter, getCompilerFilter(PACKAGE_NAME));
- }
-
- // Test that the background dexopt upgrades the unused packages when the downgrade feature is
- // on if the device is not low on storage.
- @Test
- public void testBackgroundDexOpt_downgradeFeatureEnabled_notLowStorage_unusedPkgsUpgraded()
- throws IOException {
- // Should be more than DOWNGRADE_FEATURE_PKG_INACTIVE_AFTER_DAYS.
- long deltaDays = DOWNGRADE_FEATURE_PKG_INACTIVE_AFTER_DAYS + 1;
- try {
- enableDowngradeFeature(true);
- setInactivePackageThreshold(DOWNGRADE_FEATURE_PKG_INACTIVE_AFTER_DAYS);
- // Set time to future.
- setTimeFutureDays(deltaDays);
- // Set filter to quicken.
- compilePackageWithFilter(PACKAGE_NAME, "quicken");
- Assert.assertEquals("quicken", getCompilerFilter(PACKAGE_NAME));
-
- runBackgroundDexOpt();
-
- // Verify that bg-dexopt is successful in upgrading the unused packages when the device
- // is not low on storage.
- Assert.assertEquals(BG_DEXOPT_COMPILER_FILTER, getCompilerFilter(PACKAGE_NAME));
- } finally {
- // Reset time.
- setTimeFutureDays(-deltaDays);
- }
- }
-
- // Test that when an unused package (which was downgraded) is used again, it's re-optimized when
- // bg-dexopt runs again.
- @Test
- public void testBackgroundDexOpt_downgradeFeatureEnabled_downgradedPkgsUpgradedAfterUse()
- throws IOException {
- // Should be more than DOWNGRADE_FEATURE_PKG_INACTIVE_AFTER_DAYS.
- long deltaDays = DOWNGRADE_FEATURE_PKG_INACTIVE_AFTER_DAYS + 1;
- try {
- enableDowngradeFeature(true);
- setInactivePackageThreshold(DOWNGRADE_FEATURE_PKG_INACTIVE_AFTER_DAYS);
- // Set time to future.
- setTimeFutureDays(deltaDays);
- // Fill up storage to trigger low storage threshold.
- fillUpToLowStorage();
- // Set filter to quicken.
- compilePackageWithFilter(PACKAGE_NAME, "quicken");
- Assert.assertEquals("quicken", getCompilerFilter(PACKAGE_NAME));
-
- runBackgroundDexOpt();
-
- // Verify that downgrade is successful.
- Assert.assertEquals(DOWNGRADE_COMPILER_FILTER, getCompilerFilter(PACKAGE_NAME));
-
- // Reset time.
- setTimeFutureDays(-deltaDays);
- deltaDays = 0;
- runBackgroundDexOpt();
-
- // Verify that bg-dexopt is successful in upgrading the unused packages that were used
- // again.
- Assert.assertEquals(BG_DEXOPT_COMPILER_FILTER, getCompilerFilter(PACKAGE_NAME));
- } finally {
- // Reset time.
- setTimeFutureDays(-deltaDays);
- }
- }
}
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ChangeAppRotationTest.java b/tests/FlickerTests/src/com/android/server/wm/flicker/ChangeAppRotationTest.java
index aa591d9..42cafd4 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/ChangeAppRotationTest.java
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ChangeAppRotationTest.java
@@ -82,7 +82,8 @@
@Before
public void runTransition() {
super.runTransition(
- changeAppRotation(mTestApp, mUiDevice, mBeginRotation, mEndRotation).build());
+ changeAppRotation(mTestApp, mUiDevice, mBeginRotation, mEndRotation)
+ .includeJankyRuns().build());
}
@FlakyTest(bugId = 140855415)
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/ColorFiltersMutateActivity.java b/tests/HwAccelerationTest/src/com/android/test/hwui/ColorFiltersMutateActivity.java
index 0787d82..51bae3a 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/ColorFiltersMutateActivity.java
+++ b/tests/HwAccelerationTest/src/com/android/test/hwui/ColorFiltersMutateActivity.java
@@ -29,9 +29,13 @@
import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffColorFilter;
+import android.graphics.RuntimeShader;
import android.os.Bundle;
import android.view.View;
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+
@SuppressWarnings({"UnusedDeclaration"})
public class ColorFiltersMutateActivity extends Activity {
@Override
@@ -47,12 +51,21 @@
private final Paint mColorMatrixPaint;
private final Paint mLightingPaint;
private final Paint mBlendPaint;
+ private final Paint mShaderPaint;
private float mSaturation = 0.0f;
private int mLightAdd = 0;
private int mLightMul = 0;
private int mPorterDuffColor = 0;
+ static final String sSkSL =
+ "uniform float param1;\n"
+ + "void main(float x, float y, inout half4 color) {\n"
+ + "color = half4(color.r, half(param1), color.b, 1.0);\n"
+ + "}\n";
+
+ private byte[] mUniforms = new byte[4];
+
BitmapsView(Context c) {
super(c);
@@ -70,6 +83,10 @@
mBlendPaint = new Paint();
mBlendPaint.setColorFilter(new PorterDuffColorFilter(0, PorterDuff.Mode.SRC_OVER));
+ mShaderPaint = new Paint();
+ mShaderPaint.setShader(new RuntimeShader(sSkSL, mUniforms, true));
+ setShaderParam1(0.0f);
+
ObjectAnimator sat = ObjectAnimator.ofFloat(this, "saturation", 1.0f);
sat.setDuration(1000);
sat.setRepeatCount(ObjectAnimator.INFINITE);
@@ -96,6 +113,12 @@
color.setRepeatCount(ObjectAnimator.INFINITE);
color.setRepeatMode(ObjectAnimator.REVERSE);
color.start();
+
+ ObjectAnimator shaderUniform = ObjectAnimator.ofFloat(this, "shaderParam1", 1.0f);
+ shaderUniform.setDuration(1000);
+ shaderUniform.setRepeatCount(ObjectAnimator.INFINITE);
+ shaderUniform.setRepeatMode(ObjectAnimator.REVERSE);
+ shaderUniform.start();
}
public int getPorterDuffColor() {
@@ -148,6 +171,23 @@
return mSaturation;
}
+ public void setShaderParam1(float value) {
+ RuntimeShader shader = (RuntimeShader) mShaderPaint.getShader();
+ ByteBuffer buffer = ByteBuffer.wrap(mUniforms);
+ buffer.order(ByteOrder.LITTLE_ENDIAN);
+ buffer.putFloat(value);
+ shader.updateUniforms(mUniforms);
+ invalidate();
+ }
+
+ // If either valueFrom or valueTo is null, then a getter function will also be derived
+ // and called by the animator class.
+ public float getShaderParam1() {
+ ByteBuffer buffer = ByteBuffer.wrap(mUniforms);
+ buffer.order(ByteOrder.LITTLE_ENDIAN);
+ return buffer.getFloat();
+ }
+
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
@@ -163,6 +203,10 @@
canvas.translate(0.0f, 50.0f + mBitmap1.getHeight());
canvas.drawBitmap(mBitmap1, 0.0f, 0.0f, mBlendPaint);
+
+ canvas.translate(0.0f, 50.0f + mBitmap1.getHeight());
+ canvas.drawRect(0.0f, 0.0f, mBitmap1.getWidth(), mBitmap1.getHeight(),
+ mShaderPaint);
canvas.restore();
canvas.save();
@@ -174,6 +218,10 @@
canvas.translate(0.0f, 50.0f + mBitmap2.getHeight());
canvas.drawBitmap(mBitmap2, 0.0f, 0.0f, mBlendPaint);
+
+ canvas.translate(0.0f, 50.0f + mBitmap2.getHeight());
+ canvas.drawRoundRect(0.0f, 0.0f, mBitmap2.getWidth(), mBitmap2.getHeight(), 20, 20,
+ mShaderPaint);
canvas.restore();
}
}
diff --git a/tests/JobSchedulerPerfTests/Android.bp b/tests/JobSchedulerPerfTests/Android.bp
index c51b811..2ae8c33 100644
--- a/tests/JobSchedulerPerfTests/Android.bp
+++ b/tests/JobSchedulerPerfTests/Android.bp
@@ -19,7 +19,7 @@
"androidx.test.rules",
"apct-perftests-utils",
"services",
- "jobscheduler-service",
+ "service-jobscheduler",
],
platform_apis: true,
certificate: "platform",
diff --git a/tests/ManagedProfileLifecycleStressTest/Android.bp b/tests/ManagedProfileLifecycleStressTest/Android.bp
new file mode 100644
index 0000000..639ce3c
--- /dev/null
+++ b/tests/ManagedProfileLifecycleStressTest/Android.bp
@@ -0,0 +1,23 @@
+// Copyright (C) 2019 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_test_host {
+ name: "ManagedProfileLifecycleStressTest",
+ srcs: ["src/**/*.java"],
+ libs: ["tradefed"],
+ test_suites: ["device-tests"],
+ target_required: [
+ "DummyDPC",
+ ],
+}
diff --git a/packages/SystemUI/res/layout/ongoing_privacy_text_item.xml b/tests/ManagedProfileLifecycleStressTest/AndroidTest.xml
similarity index 64%
rename from packages/SystemUI/res/layout/ongoing_privacy_text_item.xml
rename to tests/ManagedProfileLifecycleStressTest/AndroidTest.xml
index 5595b13..e7dbc51 100644
--- a/packages/SystemUI/res/layout/ongoing_privacy_text_item.xml
+++ b/tests/ManagedProfileLifecycleStressTest/AndroidTest.xml
@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 2018 The Android Open Source Project
+<!-- Copyright (C) 2019 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -14,11 +13,8 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-
-<TextView
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:textDirection="locale"
- android:textAppearance="@style/TextAppearance.QS.DetailItemPrimary"
-/>
\ No newline at end of file
+<configuration description="Stress test for managed profile lifecycle">
+ <test class="com.android.compatibility.common.tradefed.testtype.JarHostTest" >
+ <option name="jar" value="ManagedProfileLifecycleStressTest.jar" />
+ </test>
+</configuration>
diff --git a/tests/ManagedProfileLifecycleStressTest/app/DummyDPC/Android.bp b/tests/ManagedProfileLifecycleStressTest/app/DummyDPC/Android.bp
new file mode 100644
index 0000000..d95af34
--- /dev/null
+++ b/tests/ManagedProfileLifecycleStressTest/app/DummyDPC/Android.bp
@@ -0,0 +1,20 @@
+// Copyright (C) 2019 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_test {
+ name: "DummyDPC",
+ defaults: ["cts_defaults"],
+ srcs: ["src/**/*.java"],
+ sdk_version: "current",
+}
diff --git a/tests/ManagedProfileLifecycleStressTest/app/DummyDPC/AndroidManifest.xml b/tests/ManagedProfileLifecycleStressTest/app/DummyDPC/AndroidManifest.xml
new file mode 100644
index 0000000..860940d
--- /dev/null
+++ b/tests/ManagedProfileLifecycleStressTest/app/DummyDPC/AndroidManifest.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2019 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.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.android.dummydpc">
+
+ <application
+ android:testOnly="true">
+ <receiver
+ android:name="com.android.dummydpc.DummyDeviceAdminReceiver"
+ android:permission="android.permission.BIND_DEVICE_ADMIN">
+ <meta-data android:name="android.app.device_admin"
+ android:resource="@xml/device_admin" />
+ <intent-filter>
+ <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
+ </intent-filter>
+ </receiver>
+ </application>
+</manifest>
diff --git a/tests/ManagedProfileLifecycleStressTest/app/DummyDPC/res/xml/device_admin.xml b/tests/ManagedProfileLifecycleStressTest/app/DummyDPC/res/xml/device_admin.xml
new file mode 100644
index 0000000..4b3581e
--- /dev/null
+++ b/tests/ManagedProfileLifecycleStressTest/app/DummyDPC/res/xml/device_admin.xml
@@ -0,0 +1,4 @@
+<device-admin>
+ <uses-policies>
+ </uses-policies>
+</device-admin>
diff --git a/tests/ManagedProfileLifecycleStressTest/app/DummyDPC/src/com/android/dummydpc/DummyDeviceAdminReceiver.java b/tests/ManagedProfileLifecycleStressTest/app/DummyDPC/src/com/android/dummydpc/DummyDeviceAdminReceiver.java
new file mode 100644
index 0000000..92190b7
--- /dev/null
+++ b/tests/ManagedProfileLifecycleStressTest/app/DummyDPC/src/com/android/dummydpc/DummyDeviceAdminReceiver.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2019 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.dummydpc;
+
+import android.app.admin.DeviceAdminReceiver;
+
+/**
+ * Empty admin to use as a managed profile owner.
+ */
+public class DummyDeviceAdminReceiver extends DeviceAdminReceiver {
+}
+
diff --git a/tests/ManagedProfileLifecycleStressTest/src/com/android/test/stress/ManagedProfileLifecycleStressTest.java b/tests/ManagedProfileLifecycleStressTest/src/com/android/test/stress/ManagedProfileLifecycleStressTest.java
new file mode 100644
index 0000000..e323592
--- /dev/null
+++ b/tests/ManagedProfileLifecycleStressTest/src/com/android/test/stress/ManagedProfileLifecycleStressTest.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright (C) 2019 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.test.stress;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import com.android.tradefed.log.LogUtil.CLog;
+import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
+import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.concurrent.TimeUnit;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * A test to exercise Android Framework parts related to creating, starting, stopping, and deleting
+ * a managed profile as much as possible. The aim is to catch any issues in this code before it
+ * affects managed profile CTS tests.
+ */
+@RunWith(DeviceJUnit4ClassRunner.class)
+public class ManagedProfileLifecycleStressTest extends BaseHostJUnit4Test {
+ // Stop the test once this time limit has been reached. 25 minutes used as a limit to make total
+ // test time less than 30 minutes, so that it can be put into presubmit.
+ private static final int TIME_LIMIT_MINUTES = 25;
+
+ private static final String DUMMY_DPC_APK = "DummyDPC.apk";
+ private static final String DUMMY_DPC_COMPONENT =
+ "com.android.dummydpc/com.android.dummydpc.DummyDeviceAdminReceiver";
+ private static final Pattern CREATE_USER_OUTPUT_REGEX =
+ Pattern.compile("Success: created user id (\\d+)");
+
+ /**
+ * Create, start, and kill managed profiles in a loop.
+ */
+ @Test
+ public void testCreateStartDelete() throws Exception {
+ int iteration = 0;
+ final long deadline = System.nanoTime() + TimeUnit.MINUTES.toNanos(TIME_LIMIT_MINUTES);
+ while (System.nanoTime() < deadline) {
+ iteration++;
+ CLog.w("Iteration N" + iteration);
+ final int userId = createManagedProfile();
+ startUser(userId);
+ installPackageAsUser(DUMMY_DPC_APK, true /* grantPermissions */, userId, "-t");
+ setProfileOwner(DUMMY_DPC_COMPONENT, userId);
+ removeUser(userId);
+ }
+ CLog.w("Completed " + iteration + " iterations.");
+ }
+
+ private int createManagedProfile() throws Exception {
+ final String output = getDevice().executeShellCommand(
+ "pm create-user --profileOf 0 --managed TestProfile");
+ final Matcher matcher = CREATE_USER_OUTPUT_REGEX.matcher(output.trim());
+ if (!matcher.matches() || matcher.groupCount() != 1) {
+ fail("user creation failed, output: " + output);
+ }
+ return Integer.parseInt(matcher.group(1));
+ }
+
+ private void setProfileOwner(String componentName, int userId) throws Exception {
+ String command = "dpm set-profile-owner --user " + userId + " '" + componentName + "'";
+ String commandOutput = getDevice().executeShellCommand(command);
+ assertTrue("Unexpected dpm output: " + commandOutput, commandOutput.startsWith("Success:"));
+ }
+
+ private void removeUser(int userId) throws Exception {
+ final String output = getDevice().executeShellCommand("pm remove-user " + userId).trim();
+ assertEquals("Unexpected pm output: " + output, "Success: removed user", output);
+ }
+
+ private void startUser(int userId) throws Exception {
+ final String output = getDevice().executeShellCommand("am start-user -w " + userId).trim();
+ assertEquals("Unexpected am output: " + output, "Success: user started", output);
+ }
+}
diff --git a/tests/PackageWatchdog/src/com/android/server/PackageWatchdogTest.java b/tests/PackageWatchdog/src/com/android/server/PackageWatchdogTest.java
index 06b58fd..e308781 100644
--- a/tests/PackageWatchdog/src/com/android/server/PackageWatchdogTest.java
+++ b/tests/PackageWatchdog/src/com/android/server/PackageWatchdogTest.java
@@ -670,11 +670,11 @@
public void testPackageHealthCheckStateTransitions() {
TestController controller = new TestController();
PackageWatchdog wd = createWatchdog(controller, true /* withPackagesReady */);
- MonitoredPackage m1 = wd.new MonitoredPackage(APP_A, LONG_DURATION,
+ MonitoredPackage m1 = wd.newMonitoredPackage(APP_A, LONG_DURATION,
false /* hasPassedHealthCheck */);
- MonitoredPackage m2 = wd.new MonitoredPackage(APP_B, LONG_DURATION, false);
- MonitoredPackage m3 = wd.new MonitoredPackage(APP_C, LONG_DURATION, false);
- MonitoredPackage m4 = wd.new MonitoredPackage(APP_D, LONG_DURATION, SHORT_DURATION, true);
+ MonitoredPackage m2 = wd.newMonitoredPackage(APP_B, LONG_DURATION, false);
+ MonitoredPackage m3 = wd.newMonitoredPackage(APP_C, LONG_DURATION, false);
+ MonitoredPackage m4 = wd.newMonitoredPackage(APP_D, LONG_DURATION, SHORT_DURATION, true);
// Verify transition: inactive -> active -> passed
// Verify initially inactive
diff --git a/tests/net/Android.bp b/tests/net/Android.bp
index 10f27e2..b2f384a 100644
--- a/tests/net/Android.bp
+++ b/tests/net/Android.bp
@@ -45,7 +45,6 @@
name: "FrameworksNetTests",
defaults: ["FrameworksNetTests-jni-defaults"],
srcs: [
- ":tethering-tests-src",
"java/**/*.java",
"java/**/*.kt",
],
diff --git a/tests/net/AndroidManifest.xml b/tests/net/AndroidManifest.xml
index dcacb6d..638b6d1 100644
--- a/tests/net/AndroidManifest.xml
+++ b/tests/net/AndroidManifest.xml
@@ -32,7 +32,7 @@
<uses-permission android:name="android.permission.GET_DETAILED_TASKS" />
<uses-permission android:name="android.permission.MANAGE_NETWORK_POLICY" />
<uses-permission android:name="android.permission.READ_NETWORK_USAGE_HISTORY" />
- <uses-permission android:name="android.permission.CONNECTIVITY_INTERNAL" />
+ <uses-permission android:name="android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.MANAGE_USERS" />
<uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" />
@@ -45,6 +45,8 @@
<uses-permission android:name="android.permission.MANAGE_ACTIVITY_STACKS" />
<uses-permission android:name="android.permission.INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.NETWORK_STACK" />
+ <uses-permission android:name="android.permission.OBSERVE_NETWORK_POLICY" />
+ <uses-permission android:name="android.permission.NETWORK_FACTORY" />
<application>
<uses-library android:name="android.test.runner" />
diff --git a/tests/net/integration/src/com/android/server/net/integrationtests/ConnectivityServiceIntegrationTest.kt b/tests/net/integration/src/com/android/server/net/integrationtests/ConnectivityServiceIntegrationTest.kt
index 334b26d..25028fb 100644
--- a/tests/net/integration/src/com/android/server/net/integrationtests/ConnectivityServiceIntegrationTest.kt
+++ b/tests/net/integration/src/com/android/server/net/integrationtests/ConnectivityServiceIntegrationTest.kt
@@ -32,6 +32,7 @@
import android.net.NetworkCapabilities.TRANSPORT_CELLULAR
import android.net.NetworkRequest
import android.net.TestNetworkStackClient
+import android.net.TetheringManager
import android.net.metrics.IpConnectivityLog
import android.os.ConditionVariable
import android.os.IBinder
@@ -48,7 +49,6 @@
import com.android.server.connectivity.IpConnectivityMetrics
import com.android.server.connectivity.MockableSystemProperties
import com.android.server.connectivity.ProxyTracker
-import com.android.server.connectivity.Tethering
import com.android.server.net.NetworkPolicyManagerInternal
import com.android.testutils.TestableNetworkCallback
import org.junit.After
@@ -169,8 +169,7 @@
val deps = spy(ConnectivityService.Dependencies())
doReturn(networkStackClient).`when`(deps).networkStack
doReturn(metricsLogger).`when`(deps).metricsLogger
- doReturn(mock(Tethering::class.java)).`when`(deps).makeTethering(
- any(), any(), any(), any(), any())
+ doReturn(mock(TetheringManager::class.java)).`when`(deps).getTetheringManager()
doReturn(mock(ProxyTracker::class.java)).`when`(deps).makeProxyTracker(any(), any())
doReturn(mock(MockableSystemProperties::class.java)).`when`(deps).systemProperties
doReturn(TestNetIdManager()).`when`(deps).makeNetIdManager()
diff --git a/tests/net/integration/src/com/android/server/net/integrationtests/TestNetworkStackService.kt b/tests/net/integration/src/com/android/server/net/integrationtests/TestNetworkStackService.kt
index 8e4a9dd..490c4679 100644
--- a/tests/net/integration/src/com/android/server/net/integrationtests/TestNetworkStackService.kt
+++ b/tests/net/integration/src/com/android/server/net/integrationtests/TestNetworkStackService.kt
@@ -25,6 +25,7 @@
import android.net.util.SharedLog
import android.os.IBinder
import com.android.networkstack.metrics.DataStallStatsUtils
+import com.android.networkstack.netlink.TcpSocketTracker
import com.android.server.NetworkStackService.NetworkMonitorConnector
import com.android.server.NetworkStackService.NetworkStackConnector
import com.android.server.connectivity.NetworkMonitor
@@ -88,7 +89,8 @@
this.network,
mock(IpConnectivityLog::class.java), mock(SharedLog::class.java),
NetworkMonitorDeps(privateDnsBypassNetwork),
- mock(DataStallStatsUtils::class.java))
+ mock(DataStallStatsUtils::class.java),
+ mock(TcpSocketTracker::class.java))
cb.onNetworkMonitorCreated(NetworkMonitorConnector(nm, TestPermissionChecker()))
}
}
diff --git a/tests/net/java/android/net/ip/InterfaceControllerTest.java b/tests/net/java/android/net/ip/InterfaceControllerTest.java
deleted file mode 100644
index 7a56b3a..0000000
--- a/tests/net/java/android/net/ip/InterfaceControllerTest.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright (C) 2019 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.ip;
-
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.doNothing;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-
-import android.net.INetd;
-import android.net.InetAddresses;
-import android.net.InterfaceConfigurationParcel;
-import android.net.LinkAddress;
-import android.net.util.SharedLog;
-
-import androidx.test.filters.SmallTest;
-import androidx.test.runner.AndroidJUnit4;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Captor;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public class InterfaceControllerTest {
- private static final String TEST_IFACE = "testif";
- private static final String TEST_IPV4_ADDR = "192.168.123.28";
- private static final int TEST_PREFIXLENGTH = 31;
-
- @Mock private INetd mNetd;
- @Mock private SharedLog mLog;
- @Captor private ArgumentCaptor<InterfaceConfigurationParcel> mConfigCaptor;
-
- private InterfaceController mController;
-
- @Before
- public void setUp() throws Exception {
- MockitoAnnotations.initMocks(this);
- mController = new InterfaceController(TEST_IFACE, mNetd, mLog);
-
- doNothing().when(mNetd).interfaceSetCfg(mConfigCaptor.capture());
- }
-
- @Test
- public void testSetIPv4Address() throws Exception {
- mController.setIPv4Address(
- new LinkAddress(InetAddresses.parseNumericAddress(TEST_IPV4_ADDR),
- TEST_PREFIXLENGTH));
- verify(mNetd, times(1)).interfaceSetCfg(any());
- final InterfaceConfigurationParcel parcel = mConfigCaptor.getValue();
- assertEquals(TEST_IFACE, parcel.ifName);
- assertEquals(TEST_IPV4_ADDR, parcel.ipv4Addr);
- assertEquals(TEST_PREFIXLENGTH, parcel.prefixLength);
- assertEquals("", parcel.hwAddr);
- assertArrayEquals(new String[0], parcel.flags);
- }
-
- @Test
- public void testClearIPv4Address() throws Exception {
- mController.clearIPv4Address();
- verify(mNetd, times(1)).interfaceSetCfg(any());
- final InterfaceConfigurationParcel parcel = mConfigCaptor.getValue();
- assertEquals(TEST_IFACE, parcel.ifName);
- assertEquals("0.0.0.0", parcel.ipv4Addr);
- assertEquals(0, parcel.prefixLength);
- assertEquals("", parcel.hwAddr);
- assertArrayEquals(new String[0], parcel.flags);
- }
-}
diff --git a/tests/net/java/android/net/netlink/ConntrackMessageTest.java b/tests/net/java/android/net/netlink/ConntrackMessageTest.java
deleted file mode 100644
index 5c86757..0000000
--- a/tests/net/java/android/net/netlink/ConntrackMessageTest.java
+++ /dev/null
@@ -1,130 +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.
- */
-
-package android.net.netlink;
-
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assume.assumeTrue;
-
-import android.system.OsConstants;
-
-import androidx.test.filters.SmallTest;
-import androidx.test.runner.AndroidJUnit4;
-
-import libcore.util.HexEncoding;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.net.Inet4Address;
-import java.net.InetAddress;
-import java.nio.ByteOrder;
-
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public class ConntrackMessageTest {
- private static final boolean USING_LE = (ByteOrder.nativeOrder() == ByteOrder.LITTLE_ENDIAN);
-
- // Example 1: TCP (192.168.43.209, 44333) -> (23.211.13.26, 443)
- public static final String CT_V4UPDATE_TCP_HEX =
- // struct nlmsghdr
- "50000000" + // length = 80
- "0001" + // type = (1 << 8) | 0
- "0501" + // flags
- "01000000" + // seqno = 1
- "00000000" + // pid = 0
- // struct nfgenmsg
- "02" + // nfgen_family = AF_INET
- "00" + // version = NFNETLINK_V0
- "0000" + // res_id
- // struct nlattr
- "3400" + // nla_len = 52
- "0180" + // nla_type = nested CTA_TUPLE_ORIG
- // struct nlattr
- "1400" + // nla_len = 20
- "0180" + // nla_type = nested CTA_TUPLE_IP
- "0800 0100 C0A82BD1" + // nla_type=CTA_IP_V4_SRC, ip=192.168.43.209
- "0800 0200 17D30D1A" + // nla_type=CTA_IP_V4_DST, ip=23.211.13.26
- // struct nlattr
- "1C00" + // nla_len = 28
- "0280" + // nla_type = nested CTA_TUPLE_PROTO
- "0500 0100 06 000000" + // nla_type=CTA_PROTO_NUM, proto=6
- "0600 0200 AD2D 0000" + // nla_type=CTA_PROTO_SRC_PORT, port=44333 (big endian)
- "0600 0300 01BB 0000" + // nla_type=CTA_PROTO_DST_PORT, port=443 (big endian)
- // struct nlattr
- "0800" + // nla_len = 8
- "0700" + // nla_type = CTA_TIMEOUT
- "00069780"; // nla_value = 432000 (big endian)
- public static final byte[] CT_V4UPDATE_TCP_BYTES =
- HexEncoding.decode(CT_V4UPDATE_TCP_HEX.replaceAll(" ", "").toCharArray(), false);
-
- // Example 2: UDP (100.96.167.146, 37069) -> (216.58.197.10, 443)
- public static final String CT_V4UPDATE_UDP_HEX =
- // struct nlmsghdr
- "50000000" + // length = 80
- "0001" + // type = (1 << 8) | 0
- "0501" + // flags
- "01000000" + // seqno = 1
- "00000000" + // pid = 0
- // struct nfgenmsg
- "02" + // nfgen_family = AF_INET
- "00" + // version = NFNETLINK_V0
- "0000" + // res_id
- // struct nlattr
- "3400" + // nla_len = 52
- "0180" + // nla_type = nested CTA_TUPLE_ORIG
- // struct nlattr
- "1400" + // nla_len = 20
- "0180" + // nla_type = nested CTA_TUPLE_IP
- "0800 0100 6460A792" + // nla_type=CTA_IP_V4_SRC, ip=100.96.167.146
- "0800 0200 D83AC50A" + // nla_type=CTA_IP_V4_DST, ip=216.58.197.10
- // struct nlattr
- "1C00" + // nla_len = 28
- "0280" + // nla_type = nested CTA_TUPLE_PROTO
- "0500 0100 11 000000" + // nla_type=CTA_PROTO_NUM, proto=17
- "0600 0200 90CD 0000" + // nla_type=CTA_PROTO_SRC_PORT, port=37069 (big endian)
- "0600 0300 01BB 0000" + // nla_type=CTA_PROTO_DST_PORT, port=443 (big endian)
- // struct nlattr
- "0800" + // nla_len = 8
- "0700" + // nla_type = CTA_TIMEOUT
- "000000B4"; // nla_value = 180 (big endian)
- public static final byte[] CT_V4UPDATE_UDP_BYTES =
- HexEncoding.decode(CT_V4UPDATE_UDP_HEX.replaceAll(" ", "").toCharArray(), false);
-
- @Test
- public void testConntrackIPv4TcpTimeoutUpdate() throws Exception {
- assumeTrue(USING_LE);
-
- final byte[] tcp = ConntrackMessage.newIPv4TimeoutUpdateRequest(
- OsConstants.IPPROTO_TCP,
- (Inet4Address) InetAddress.getByName("192.168.43.209"), 44333,
- (Inet4Address) InetAddress.getByName("23.211.13.26"), 443,
- 432000);
- assertArrayEquals(CT_V4UPDATE_TCP_BYTES, tcp);
- }
-
- @Test
- public void testConntrackIPv4UdpTimeoutUpdate() throws Exception {
- assumeTrue(USING_LE);
-
- final byte[] udp = ConntrackMessage.newIPv4TimeoutUpdateRequest(
- OsConstants.IPPROTO_UDP,
- (Inet4Address) InetAddress.getByName("100.96.167.146"), 37069,
- (Inet4Address) InetAddress.getByName("216.58.197.10"), 443,
- 180);
- assertArrayEquals(CT_V4UPDATE_UDP_BYTES, udp);
- }
-}
diff --git a/tests/net/java/android/net/netlink/InetDiagSocketTest.java b/tests/net/java/android/net/netlink/InetDiagSocketTest.java
deleted file mode 100644
index 84c5784..0000000
--- a/tests/net/java/android/net/netlink/InetDiagSocketTest.java
+++ /dev/null
@@ -1,448 +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.netlink;
-
-import static android.net.netlink.StructNlMsgHdr.NLM_F_DUMP;
-import static android.net.netlink.StructNlMsgHdr.NLM_F_REQUEST;
-import static android.system.OsConstants.AF_INET;
-import static android.system.OsConstants.AF_INET6;
-import static android.system.OsConstants.IPPROTO_TCP;
-import static android.system.OsConstants.IPPROTO_UDP;
-import static android.system.OsConstants.SOCK_DGRAM;
-import static android.system.OsConstants.SOCK_STREAM;
-
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import android.app.Instrumentation;
-import android.content.Context;
-import android.net.ConnectivityManager;
-import android.net.netlink.StructNlMsgHdr;
-import android.os.Process;
-import android.system.Os;
-
-import androidx.test.InstrumentationRegistry;
-import androidx.test.filters.SmallTest;
-import androidx.test.runner.AndroidJUnit4;
-
-import libcore.util.HexEncoding;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.io.FileDescriptor;
-import java.net.Inet4Address;
-import java.net.Inet6Address;
-import java.net.InetAddress;
-import java.net.InetSocketAddress;
-import java.nio.ByteBuffer;
-import java.nio.ByteOrder;
-
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public class InetDiagSocketTest {
- private final String TAG = "InetDiagSocketTest";
- private ConnectivityManager mCm;
- private Context mContext;
- private final static int SOCKET_TIMEOUT_MS = 100;
-
- @Before
- public void setUp() throws Exception {
- Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation();
- mContext = instrumentation.getTargetContext();
- mCm = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
- }
-
- private class Connection {
- public int socketDomain;
- public int socketType;
- public InetAddress localAddress;
- public InetAddress remoteAddress;
- public InetAddress localhostAddress;
- public InetSocketAddress local;
- public InetSocketAddress remote;
- public int protocol;
- public FileDescriptor localFd;
- public FileDescriptor remoteFd;
-
- public FileDescriptor createSocket() throws Exception {
- return Os.socket(socketDomain, socketType, protocol);
- }
-
- public Connection(String to, String from) throws Exception {
- remoteAddress = InetAddress.getByName(to);
- if (from != null) {
- localAddress = InetAddress.getByName(from);
- } else {
- localAddress = (remoteAddress instanceof Inet4Address) ?
- Inet4Address.getByName("localhost") : Inet6Address.getByName("::");
- }
- if ((localAddress instanceof Inet4Address) && (remoteAddress instanceof Inet4Address)) {
- socketDomain = AF_INET;
- localhostAddress = Inet4Address.getByName("localhost");
- } else {
- socketDomain = AF_INET6;
- localhostAddress = Inet6Address.getByName("::");
- }
- }
-
- public void close() throws Exception {
- Os.close(localFd);
- }
- }
-
- private class TcpConnection extends Connection {
- public TcpConnection(String to, String from) throws Exception {
- super(to, from);
- protocol = IPPROTO_TCP;
- socketType = SOCK_STREAM;
-
- remoteFd = createSocket();
- Os.bind(remoteFd, remoteAddress, 0);
- Os.listen(remoteFd, 10);
- int remotePort = ((InetSocketAddress) Os.getsockname(remoteFd)).getPort();
-
- localFd = createSocket();
- Os.bind(localFd, localAddress, 0);
- Os.connect(localFd, remoteAddress, remotePort);
-
- local = (InetSocketAddress) Os.getsockname(localFd);
- remote = (InetSocketAddress) Os.getpeername(localFd);
- }
-
- public void close() throws Exception {
- super.close();
- Os.close(remoteFd);
- }
- }
- private class UdpConnection extends Connection {
- public UdpConnection(String to, String from) throws Exception {
- super(to, from);
- protocol = IPPROTO_UDP;
- socketType = SOCK_DGRAM;
-
- remoteFd = null;
- localFd = createSocket();
- Os.bind(localFd, localAddress, 0);
-
- Os.connect(localFd, remoteAddress, 7);
- local = (InetSocketAddress) Os.getsockname(localFd);
- remote = new InetSocketAddress(remoteAddress, 7);
- }
- }
-
- private void checkConnectionOwnerUid(int protocol, InetSocketAddress local,
- InetSocketAddress remote, boolean expectSuccess) {
- final int uid = mCm.getConnectionOwnerUid(protocol, local, remote);
-
- if (expectSuccess) {
- assertEquals(Process.myUid(), uid);
- } else {
- assertNotEquals(Process.myUid(), uid);
- }
- }
-
- private int findLikelyFreeUdpPort(UdpConnection conn) throws Exception {
- UdpConnection udp = new UdpConnection(conn.remoteAddress.getHostAddress(),
- conn.localAddress.getHostAddress());
- final int localPort = udp.local.getPort();
- udp.close();
- return localPort;
- }
-
- /**
- * Create a test connection for UDP and TCP sockets and verify that this
- * {protocol, local, remote} socket result in receiving a valid UID.
- */
- public void checkGetConnectionOwnerUid(String to, String from) throws Exception {
- TcpConnection tcp = new TcpConnection(to, from);
- checkConnectionOwnerUid(tcp.protocol, tcp.local, tcp.remote, true);
- checkConnectionOwnerUid(IPPROTO_UDP, tcp.local, tcp.remote, false);
- checkConnectionOwnerUid(tcp.protocol, new InetSocketAddress(0), tcp.remote, false);
- checkConnectionOwnerUid(tcp.protocol, tcp.local, new InetSocketAddress(0), false);
- tcp.close();
-
- UdpConnection udp = new UdpConnection(to,from);
- checkConnectionOwnerUid(udp.protocol, udp.local, udp.remote, true);
- checkConnectionOwnerUid(IPPROTO_TCP, udp.local, udp.remote, false);
- checkConnectionOwnerUid(udp.protocol, new InetSocketAddress(findLikelyFreeUdpPort(udp)),
- udp.remote, false);
- udp.close();
- }
-
- @Test
- public void testGetConnectionOwnerUid() throws Exception {
- checkGetConnectionOwnerUid("::", null);
- checkGetConnectionOwnerUid("::", "::");
- checkGetConnectionOwnerUid("0.0.0.0", null);
- checkGetConnectionOwnerUid("0.0.0.0", "0.0.0.0");
- checkGetConnectionOwnerUid("127.0.0.1", null);
- checkGetConnectionOwnerUid("127.0.0.1", "127.0.0.2");
- checkGetConnectionOwnerUid("::1", null);
- checkGetConnectionOwnerUid("::1", "::1");
- }
-
- /* Verify fix for b/141603906 */
- @Test
- public void testB141603906() throws Exception {
- final InetSocketAddress src = new InetSocketAddress(0);
- final InetSocketAddress dst = new InetSocketAddress(0);
- final int numThreads = 8;
- final int numSockets = 5000;
- final Thread[] threads = new Thread[numThreads];
-
- for (int i = 0; i < numThreads; i++) {
- threads[i] = new Thread(() -> {
- for (int j = 0; j < numSockets; j++) {
- mCm.getConnectionOwnerUid(IPPROTO_TCP, src, dst);
- }
- });
- }
-
- for (Thread thread : threads) {
- thread.start();
- }
-
- for (Thread thread : threads) {
- thread.join();
- }
- }
-
- // Hexadecimal representation of InetDiagReqV2 request.
- private static final String INET_DIAG_REQ_V2_UDP_INET4_HEX =
- // struct nlmsghdr
- "48000000" + // length = 72
- "1400" + // type = SOCK_DIAG_BY_FAMILY
- "0103" + // flags = NLM_F_REQUEST | NLM_F_DUMP
- "00000000" + // seqno
- "00000000" + // pid (0 == kernel)
- // struct inet_diag_req_v2
- "02" + // family = AF_INET
- "11" + // protcol = IPPROTO_UDP
- "00" + // idiag_ext
- "00" + // pad
- "ffffffff" + // idiag_states
- // inet_diag_sockid
- "a5de" + // idiag_sport = 42462
- "b971" + // idiag_dport = 47473
- "0a006402000000000000000000000000" + // idiag_src = 10.0.100.2
- "08080808000000000000000000000000" + // idiag_dst = 8.8.8.8
- "00000000" + // idiag_if
- "ffffffffffffffff"; // idiag_cookie = INET_DIAG_NOCOOKIE
- private static final byte[] INET_DIAG_REQ_V2_UDP_INET4_BYTES =
- HexEncoding.decode(INET_DIAG_REQ_V2_UDP_INET4_HEX.toCharArray(), false);
-
- @Test
- public void testInetDiagReqV2UdpInet4() throws Exception {
- InetSocketAddress local = new InetSocketAddress(InetAddress.getByName("10.0.100.2"),
- 42462);
- InetSocketAddress remote = new InetSocketAddress(InetAddress.getByName("8.8.8.8"),
- 47473);
- final byte[] msg = InetDiagMessage.InetDiagReqV2(IPPROTO_UDP, local, remote, AF_INET,
- (short) (NLM_F_REQUEST | NLM_F_DUMP));
- assertArrayEquals(INET_DIAG_REQ_V2_UDP_INET4_BYTES, msg);
- }
-
- // Hexadecimal representation of InetDiagReqV2 request.
- private static final String INET_DIAG_REQ_V2_TCP_INET6_HEX =
- // struct nlmsghdr
- "48000000" + // length = 72
- "1400" + // type = SOCK_DIAG_BY_FAMILY
- "0100" + // flags = NLM_F_REQUEST
- "00000000" + // seqno
- "00000000" + // pid (0 == kernel)
- // struct inet_diag_req_v2
- "0a" + // family = AF_INET6
- "06" + // protcol = IPPROTO_TCP
- "00" + // idiag_ext
- "00" + // pad
- "ffffffff" + // idiag_states
- // inet_diag_sockid
- "a5de" + // idiag_sport = 42462
- "b971" + // idiag_dport = 47473
- "fe8000000000000086c9b2fffe6aed4b" + // idiag_src = fe80::86c9:b2ff:fe6a:ed4b
- "08080808000000000000000000000000" + // idiag_dst = 8.8.8.8
- "00000000" + // idiag_if
- "ffffffffffffffff"; // idiag_cookie = INET_DIAG_NOCOOKIE
- private static final byte[] INET_DIAG_REQ_V2_TCP_INET6_BYTES =
- HexEncoding.decode(INET_DIAG_REQ_V2_TCP_INET6_HEX.toCharArray(), false);
-
- @Test
- public void testInetDiagReqV2TcpInet6() throws Exception {
- InetSocketAddress local = new InetSocketAddress(
- InetAddress.getByName("fe80::86c9:b2ff:fe6a:ed4b"), 42462);
- InetSocketAddress remote = new InetSocketAddress(InetAddress.getByName("8.8.8.8"),
- 47473);
- byte[] msg = InetDiagMessage.InetDiagReqV2(IPPROTO_TCP, local, remote, AF_INET6,
- NLM_F_REQUEST);
-
- assertArrayEquals(INET_DIAG_REQ_V2_TCP_INET6_BYTES, msg);
- }
-
- // Hexadecimal representation of InetDiagReqV2 request with extension, INET_DIAG_INFO.
- private static final String INET_DIAG_REQ_V2_TCP_INET_INET_DIAG_HEX =
- // struct nlmsghdr
- "48000000" + // length = 72
- "1400" + // type = SOCK_DIAG_BY_FAMILY
- "0100" + // flags = NLM_F_REQUEST
- "00000000" + // seqno
- "00000000" + // pid (0 == kernel)
- // struct inet_diag_req_v2
- "02" + // family = AF_INET
- "06" + // protcol = IPPROTO_TCP
- "02" + // idiag_ext = INET_DIAG_INFO
- "00" + // pad
- "ffffffff" + // idiag_states
- // inet_diag_sockid
- "3039" + // idiag_sport = 12345
- "d431" + // idiag_dport = 54321
- "01020304000000000000000000000000" + // idiag_src = 1.2.3.4
- "08080404000000000000000000000000" + // idiag_dst = 8.8.4.4
- "00000000" + // idiag_if
- "ffffffffffffffff"; // idiag_cookie = INET_DIAG_NOCOOKIE
-
- private static final byte[] INET_DIAG_REQ_V2_TCP_INET_INET_DIAG_BYTES =
- HexEncoding.decode(INET_DIAG_REQ_V2_TCP_INET_INET_DIAG_HEX.toCharArray(), false);
- private static final int TCP_ALL_STATES = 0xffffffff;
- @Test
- public void testInetDiagReqV2TcpInetWithExt() throws Exception {
- InetSocketAddress local = new InetSocketAddress(
- InetAddress.getByName("1.2.3.4"), 12345);
- InetSocketAddress remote = new InetSocketAddress(InetAddress.getByName("8.8.4.4"),
- 54321);
- byte[] msg = InetDiagMessage.InetDiagReqV2(IPPROTO_TCP, local, remote, AF_INET,
- NLM_F_REQUEST, 0 /* pad */, 2 /* idiagExt */, TCP_ALL_STATES);
-
- assertArrayEquals(INET_DIAG_REQ_V2_TCP_INET_INET_DIAG_BYTES, msg);
-
- local = new InetSocketAddress(
- InetAddress.getByName("fe80::86c9:b2ff:fe6a:ed4b"), 42462);
- remote = new InetSocketAddress(InetAddress.getByName("8.8.8.8"),
- 47473);
- msg = InetDiagMessage.InetDiagReqV2(IPPROTO_TCP, local, remote, AF_INET6,
- NLM_F_REQUEST, 0 /* pad */, 0 /* idiagExt */, TCP_ALL_STATES);
-
- assertArrayEquals(INET_DIAG_REQ_V2_TCP_INET6_BYTES, msg);
- }
-
- // Hexadecimal representation of InetDiagReqV2 request with no socket specified.
- private static final String INET_DIAG_REQ_V2_TCP_INET6_NO_ID_SPECIFIED_HEX =
- // struct nlmsghdr
- "48000000" + // length = 72
- "1400" + // type = SOCK_DIAG_BY_FAMILY
- "0100" + // flags = NLM_F_REQUEST
- "00000000" + // seqno
- "00000000" + // pid (0 == kernel)
- // struct inet_diag_req_v2
- "0a" + // family = AF_INET6
- "06" + // protcol = IPPROTO_TCP
- "00" + // idiag_ext
- "00" + // pad
- "ffffffff" + // idiag_states
- // inet_diag_sockid
- "0000" + // idiag_sport
- "0000" + // idiag_dport
- "00000000000000000000000000000000" + // idiag_src
- "00000000000000000000000000000000" + // idiag_dst
- "00000000" + // idiag_if
- "0000000000000000"; // idiag_cookie
-
- private static final byte[] INET_DIAG_REQ_V2_TCP_INET6_NO_ID_SPECIFED_BYTES =
- HexEncoding.decode(INET_DIAG_REQ_V2_TCP_INET6_NO_ID_SPECIFIED_HEX.toCharArray(), false);
-
- @Test
- public void testInetDiagReqV2TcpInet6NoIdSpecified() throws Exception {
- InetSocketAddress local = new InetSocketAddress(
- InetAddress.getByName("fe80::fe6a:ed4b"), 12345);
- InetSocketAddress remote = new InetSocketAddress(InetAddress.getByName("8.8.4.4"),
- 54321);
- // Verify no socket specified if either local or remote socket address is null.
- byte[] msgExt = InetDiagMessage.InetDiagReqV2(IPPROTO_TCP, null, null, AF_INET6,
- NLM_F_REQUEST, 0 /* pad */, 0 /* idiagExt */, TCP_ALL_STATES);
- byte[] msg;
- try {
- msg = InetDiagMessage.InetDiagReqV2(IPPROTO_TCP, null, remote, AF_INET6,
- NLM_F_REQUEST);
- fail("Both remote and local should be null, expected UnknownHostException");
- } catch (NullPointerException e) {
- }
-
- try {
- msg = InetDiagMessage.InetDiagReqV2(IPPROTO_TCP, local, null, AF_INET6,
- NLM_F_REQUEST, 0 /* pad */, 0 /* idiagExt */, TCP_ALL_STATES);
- fail("Both remote and local should be null, expected UnknownHostException");
- } catch (NullPointerException e) {
- }
-
- msg = InetDiagMessage.InetDiagReqV2(IPPROTO_TCP, null, null, AF_INET6,
- NLM_F_REQUEST, 0 /* pad */, 0 /* idiagExt */, TCP_ALL_STATES);
- assertArrayEquals(INET_DIAG_REQ_V2_TCP_INET6_NO_ID_SPECIFED_BYTES, msg);
- assertArrayEquals(INET_DIAG_REQ_V2_TCP_INET6_NO_ID_SPECIFED_BYTES, msgExt);
- }
-
- // Hexadecimal representation of InetDiagReqV2 request.
- private static final String INET_DIAG_MSG_HEX =
- // struct nlmsghdr
- "58000000" + // length = 88
- "1400" + // type = SOCK_DIAG_BY_FAMILY
- "0200" + // flags = NLM_F_MULTI
- "00000000" + // seqno
- "f5220000" + // pid (0 == kernel)
- // struct inet_diag_msg
- "0a" + // family = AF_INET6
- "01" + // idiag_state
- "00" + // idiag_timer
- "00" + // idiag_retrans
- // inet_diag_sockid
- "a817" + // idiag_sport = 43031
- "960f" + // idiag_dport = 38415
- "fe8000000000000086c9b2fffe6aed4b" + // idiag_src = fe80::86c9:b2ff:fe6a:ed4b
- "00000000000000000000ffff08080808" + // idiag_dst = 8.8.8.8
- "00000000" + // idiag_if
- "ffffffffffffffff" + // idiag_cookie = INET_DIAG_NOCOOKIE
- "00000000" + // idiag_expires
- "00000000" + // idiag_rqueue
- "00000000" + // idiag_wqueue
- "a3270000" + // idiag_uid
- "A57E1900"; // idiag_inode
- private static final byte[] INET_DIAG_MSG_BYTES =
- HexEncoding.decode(INET_DIAG_MSG_HEX.toCharArray(), false);
-
- @Test
- public void testParseInetDiagResponse() throws Exception {
- final ByteBuffer byteBuffer = ByteBuffer.wrap(INET_DIAG_MSG_BYTES);
- byteBuffer.order(ByteOrder.LITTLE_ENDIAN);
- final NetlinkMessage msg = NetlinkMessage.parse(byteBuffer);
- assertNotNull(msg);
-
- assertTrue(msg instanceof InetDiagMessage);
- final InetDiagMessage inetDiagMsg = (InetDiagMessage) msg;
- assertEquals(10147, inetDiagMsg.mStructInetDiagMsg.idiag_uid);
-
- final StructNlMsgHdr hdr = inetDiagMsg.getHeader();
- assertNotNull(hdr);
- assertEquals(NetlinkConstants.SOCK_DIAG_BY_FAMILY, hdr.nlmsg_type);
- assertEquals(StructNlMsgHdr.NLM_F_MULTI, hdr.nlmsg_flags);
- assertEquals(0, hdr.nlmsg_seq);
- assertEquals(8949, hdr.nlmsg_pid);
- }
-}
diff --git a/tests/net/java/android/net/netlink/NetlinkErrorMessageTest.java b/tests/net/java/android/net/netlink/NetlinkErrorMessageTest.java
deleted file mode 100644
index 44ab605..0000000
--- a/tests/net/java/android/net/netlink/NetlinkErrorMessageTest.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright (C) 2015 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.netlink;
-
-import static android.net.netlink.StructNlMsgHdr.NLM_F_ACK;
-import static android.net.netlink.StructNlMsgHdr.NLM_F_REPLACE;
-import static android.net.netlink.StructNlMsgHdr.NLM_F_REQUEST;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import android.net.netlink.NetlinkConstants;
-import android.net.netlink.NetlinkErrorMessage;
-import android.net.netlink.NetlinkMessage;
-import android.net.netlink.StructNlMsgErr;
-
-import androidx.test.filters.SmallTest;
-import androidx.test.runner.AndroidJUnit4;
-
-import libcore.util.HexEncoding;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.nio.ByteBuffer;
-import java.nio.ByteOrder;
-
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public class NetlinkErrorMessageTest {
- private final String TAG = "NetlinkErrorMessageTest";
-
- // Hexadecimal representation of packet capture.
- public static final String NLM_ERROR_OK_HEX =
- // struct nlmsghdr
- "24000000" + // length = 36
- "0200" + // type = 2 (NLMSG_ERROR)
- "0000" + // flags
- "26350000" + // seqno
- "64100000" + // pid = userspace process
- // error integer
- "00000000" + // "errno" (0 == OK)
- // struct nlmsghdr
- "30000000" + // length (48) of original request
- "1C00" + // type = 28 (RTM_NEWNEIGH)
- "0501" + // flags (NLM_F_REQUEST | NLM_F_ACK | NLM_F_REPLACE)
- "26350000" + // seqno
- "00000000"; // pid = kernel
- public static final byte[] NLM_ERROR_OK =
- HexEncoding.decode(NLM_ERROR_OK_HEX.toCharArray(), false);
-
- @Test
- public void testParseNlmErrorOk() {
- final ByteBuffer byteBuffer = ByteBuffer.wrap(NLM_ERROR_OK);
- byteBuffer.order(ByteOrder.LITTLE_ENDIAN); // For testing.
- final NetlinkMessage msg = NetlinkMessage.parse(byteBuffer);
- assertNotNull(msg);
- assertTrue(msg instanceof NetlinkErrorMessage);
- final NetlinkErrorMessage errorMsg = (NetlinkErrorMessage) msg;
-
- final StructNlMsgHdr hdr = errorMsg.getHeader();
- assertNotNull(hdr);
- assertEquals(36, hdr.nlmsg_len);
- assertEquals(NetlinkConstants.NLMSG_ERROR, hdr.nlmsg_type);
- assertEquals(0, hdr.nlmsg_flags);
- assertEquals(13606, hdr.nlmsg_seq);
- assertEquals(4196, hdr.nlmsg_pid);
-
- final StructNlMsgErr err = errorMsg.getNlMsgError();
- assertNotNull(err);
- assertEquals(0, err.error);
- assertNotNull(err.msg);
- assertEquals(48, err.msg.nlmsg_len);
- assertEquals(NetlinkConstants.RTM_NEWNEIGH, err.msg.nlmsg_type);
- assertEquals((NLM_F_REQUEST | NLM_F_ACK | NLM_F_REPLACE), err.msg.nlmsg_flags);
- assertEquals(13606, err.msg.nlmsg_seq);
- assertEquals(0, err.msg.nlmsg_pid);
- }
-}
diff --git a/tests/net/java/android/net/netlink/NetlinkSocketTest.java b/tests/net/java/android/net/netlink/NetlinkSocketTest.java
deleted file mode 100644
index 3916578..0000000
--- a/tests/net/java/android/net/netlink/NetlinkSocketTest.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright (C) 2015 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.netlink;
-
-import static android.net.netlink.NetlinkSocket.DEFAULT_RECV_BUFSIZE;
-import static android.system.OsConstants.NETLINK_ROUTE;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import android.net.netlink.NetlinkSocket;
-import android.net.netlink.RtNetlinkNeighborMessage;
-import android.net.netlink.StructNlMsgHdr;
-import android.system.NetlinkSocketAddress;
-import android.system.Os;
-
-import androidx.test.filters.SmallTest;
-import androidx.test.runner.AndroidJUnit4;
-
-import libcore.io.IoUtils;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.io.FileDescriptor;
-import java.nio.ByteBuffer;
-import java.nio.ByteOrder;
-
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public class NetlinkSocketTest {
- private final String TAG = "NetlinkSocketTest";
-
- @Test
- public void testBasicWorkingGetNeighborsQuery() throws Exception {
- final FileDescriptor fd = NetlinkSocket.forProto(NETLINK_ROUTE);
- assertNotNull(fd);
-
- NetlinkSocket.connectToKernel(fd);
-
- final NetlinkSocketAddress localAddr = (NetlinkSocketAddress) Os.getsockname(fd);
- assertNotNull(localAddr);
- assertEquals(0, localAddr.getGroupsMask());
- assertTrue(0 != localAddr.getPortId());
-
- final int TEST_SEQNO = 5;
- final byte[] req = RtNetlinkNeighborMessage.newGetNeighborsRequest(TEST_SEQNO);
- assertNotNull(req);
-
- final long TIMEOUT = 500;
- assertEquals(req.length, NetlinkSocket.sendMessage(fd, req, 0, req.length, TIMEOUT));
-
- int neighMessageCount = 0;
- int doneMessageCount = 0;
-
- while (doneMessageCount == 0) {
- ByteBuffer response = NetlinkSocket.recvMessage(fd, DEFAULT_RECV_BUFSIZE, TIMEOUT);
- assertNotNull(response);
- assertTrue(StructNlMsgHdr.STRUCT_SIZE <= response.limit());
- assertEquals(0, response.position());
- assertEquals(ByteOrder.nativeOrder(), response.order());
-
- // Verify the messages at least appears minimally reasonable.
- while (response.remaining() > 0) {
- final NetlinkMessage msg = NetlinkMessage.parse(response);
- assertNotNull(msg);
- final StructNlMsgHdr hdr = msg.getHeader();
- assertNotNull(hdr);
-
- if (hdr.nlmsg_type == NetlinkConstants.NLMSG_DONE) {
- doneMessageCount++;
- continue;
- }
-
- assertEquals(NetlinkConstants.RTM_NEWNEIGH, hdr.nlmsg_type);
- assertTrue(msg instanceof RtNetlinkNeighborMessage);
- assertTrue((hdr.nlmsg_flags & StructNlMsgHdr.NLM_F_MULTI) != 0);
- assertEquals(TEST_SEQNO, hdr.nlmsg_seq);
- assertEquals(localAddr.getPortId(), hdr.nlmsg_pid);
-
- neighMessageCount++;
- }
- }
-
- assertEquals(1, doneMessageCount);
- // TODO: make sure this test passes sanely in airplane mode.
- assertTrue(neighMessageCount > 0);
-
- IoUtils.closeQuietly(fd);
- }
-}
diff --git a/tests/net/java/android/net/netlink/RtNetlinkNeighborMessageTest.java b/tests/net/java/android/net/netlink/RtNetlinkNeighborMessageTest.java
deleted file mode 100644
index 8162522..0000000
--- a/tests/net/java/android/net/netlink/RtNetlinkNeighborMessageTest.java
+++ /dev/null
@@ -1,270 +0,0 @@
-/*
- * Copyright (C) 2015 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.netlink;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import android.net.netlink.NetlinkConstants;
-import android.net.netlink.NetlinkMessage;
-import android.net.netlink.RtNetlinkNeighborMessage;
-import android.net.netlink.StructNdMsg;
-import android.net.netlink.StructNlMsgHdr;
-import android.system.OsConstants;
-
-import androidx.test.filters.SmallTest;
-import androidx.test.runner.AndroidJUnit4;
-
-import libcore.util.HexEncoding;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.net.Inet4Address;
-import java.net.InetAddress;
-import java.nio.ByteBuffer;
-import java.nio.ByteOrder;
-import java.util.Arrays;
-
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public class RtNetlinkNeighborMessageTest {
- private final String TAG = "RtNetlinkNeighborMessageTest";
-
- // Hexadecimal representation of packet capture.
- public static final String RTM_DELNEIGH_HEX =
- // struct nlmsghdr
- "4c000000" + // length = 76
- "1d00" + // type = 29 (RTM_DELNEIGH)
- "0000" + // flags
- "00000000" + // seqno
- "00000000" + // pid (0 == kernel)
- // struct ndmsg
- "02" + // family
- "00" + // pad1
- "0000" + // pad2
- "15000000" + // interface index (21 == wlan0, on test device)
- "0400" + // NUD state (0x04 == NUD_STALE)
- "00" + // flags
- "01" + // type
- // struct nlattr: NDA_DST
- "0800" + // length = 8
- "0100" + // type (1 == NDA_DST, for neighbor messages)
- "c0a89ffe" + // IPv4 address (== 192.168.159.254)
- // struct nlattr: NDA_LLADDR
- "0a00" + // length = 10
- "0200" + // type (2 == NDA_LLADDR, for neighbor messages)
- "00005e000164" + // MAC Address (== 00:00:5e:00:01:64)
- "0000" + // padding, for 4 byte alignment
- // struct nlattr: NDA_PROBES
- "0800" + // length = 8
- "0400" + // type (4 == NDA_PROBES, for neighbor messages)
- "01000000" + // number of probes
- // struct nlattr: NDA_CACHEINFO
- "1400" + // length = 20
- "0300" + // type (3 == NDA_CACHEINFO, for neighbor messages)
- "05190000" + // ndm_used, as "clock ticks ago"
- "05190000" + // ndm_confirmed, as "clock ticks ago"
- "190d0000" + // ndm_updated, as "clock ticks ago"
- "00000000"; // ndm_refcnt
- public static final byte[] RTM_DELNEIGH =
- HexEncoding.decode(RTM_DELNEIGH_HEX.toCharArray(), false);
-
- // Hexadecimal representation of packet capture.
- public static final String RTM_NEWNEIGH_HEX =
- // struct nlmsghdr
- "58000000" + // length = 88
- "1c00" + // type = 28 (RTM_NEWNEIGH)
- "0000" + // flags
- "00000000" + // seqno
- "00000000" + // pid (0 == kernel)
- // struct ndmsg
- "0a" + // family
- "00" + // pad1
- "0000" + // pad2
- "15000000" + // interface index (21 == wlan0, on test device)
- "0400" + // NUD state (0x04 == NUD_STALE)
- "80" + // flags
- "01" + // type
- // struct nlattr: NDA_DST
- "1400" + // length = 20
- "0100" + // type (1 == NDA_DST, for neighbor messages)
- "fe8000000000000086c9b2fffe6aed4b" + // IPv6 address (== fe80::86c9:b2ff:fe6a:ed4b)
- // struct nlattr: NDA_LLADDR
- "0a00" + // length = 10
- "0200" + // type (2 == NDA_LLADDR, for neighbor messages)
- "84c9b26aed4b" + // MAC Address (== 84:c9:b2:6a:ed:4b)
- "0000" + // padding, for 4 byte alignment
- // struct nlattr: NDA_PROBES
- "0800" + // length = 8
- "0400" + // type (4 == NDA_PROBES, for neighbor messages)
- "01000000" + // number of probes
- // struct nlattr: NDA_CACHEINFO
- "1400" + // length = 20
- "0300" + // type (3 == NDA_CACHEINFO, for neighbor messages)
- "eb0e0000" + // ndm_used, as "clock ticks ago"
- "861f0000" + // ndm_confirmed, as "clock ticks ago"
- "00000000" + // ndm_updated, as "clock ticks ago"
- "05000000"; // ndm_refcnt
- public static final byte[] RTM_NEWNEIGH =
- HexEncoding.decode(RTM_NEWNEIGH_HEX.toCharArray(), false);
-
- // An example of the full response from an RTM_GETNEIGH query.
- private static final String RTM_GETNEIGH_RESPONSE_HEX =
- // <-- struct nlmsghr -->|<-- struct ndmsg -->|<-- struct nlattr: NDA_DST -->|<-- NDA_LLADDR -->|<-- NDA_PROBES -->|<-- NDA_CACHEINFO -->|
- "58000000 1c00 0200 00000000 3e2b0000 0a 00 0000 15000000 4000 00 05 1400 0100 ff020000000000000000000000000001 0a00 0200 333300000001 0000 0800 0400 00000000 1400 0300 a2280000 32110000 32110000 01000000" +
- "58000000 1c00 0200 00000000 3e2b0000 0a 00 0000 15000000 4000 00 05 1400 0100 ff0200000000000000000001ff000001 0a00 0200 3333ff000001 0000 0800 0400 00000000 1400 0300 0d280000 9d100000 9d100000 00000000" +
- "58000000 1c00 0200 00000000 3e2b0000 0a 00 0000 15000000 0400 80 01 1400 0100 20010db800040ca00000000000000001 0a00 0200 84c9b26aed4b 0000 0800 0400 04000000 1400 0300 90100000 90100000 90080000 01000000" +
- "58000000 1c00 0200 00000000 3e2b0000 0a 00 0000 15000000 4000 00 05 1400 0100 ff0200000000000000000001ff47da19 0a00 0200 3333ff47da19 0000 0800 0400 00000000 1400 0300 a1280000 31110000 31110000 01000000" +
- "58000000 1c00 0200 00000000 3e2b0000 0a 00 0000 14000000 4000 00 05 1400 0100 ff020000000000000000000000000016 0a00 0200 333300000016 0000 0800 0400 00000000 1400 0300 912a0000 21130000 21130000 00000000" +
- "58000000 1c00 0200 00000000 3e2b0000 0a 00 0000 14000000 4000 00 05 1400 0100 ff0200000000000000000001ffeace3b 0a00 0200 3333ffeace3b 0000 0800 0400 00000000 1400 0300 922a0000 22130000 22130000 00000000" +
- "58000000 1c00 0200 00000000 3e2b0000 0a 00 0000 15000000 4000 00 05 1400 0100 ff0200000000000000000001ff5c2a83 0a00 0200 3333ff5c2a83 0000 0800 0400 00000000 1400 0300 391c0000 c9040000 c9040000 01000000" +
- "58000000 1c00 0200 00000000 3e2b0000 0a 00 0000 01000000 4000 00 02 1400 0100 00000000000000000000000000000000 0a00 0200 000000000000 0000 0800 0400 00000000 1400 0300 cd180200 5d010200 5d010200 08000000" +
- "58000000 1c00 0200 00000000 3e2b0000 0a 00 0000 15000000 4000 00 05 1400 0100 ff020000000000000000000000000002 0a00 0200 333300000002 0000 0800 0400 00000000 1400 0300 352a0000 c5120000 c5120000 00000000" +
- "58000000 1c00 0200 00000000 3e2b0000 0a 00 0000 15000000 4000 00 05 1400 0100 ff020000000000000000000000000016 0a00 0200 333300000016 0000 0800 0400 00000000 1400 0300 982a0000 28130000 28130000 00000000" +
- "58000000 1c00 0200 00000000 3e2b0000 0a 00 0000 15000000 0800 80 01 1400 0100 fe8000000000000086c9b2fffe6aed4b 0a00 0200 84c9b26aed4b 0000 0800 0400 00000000 1400 0300 23000000 24000000 57000000 13000000" +
- "58000000 1c00 0200 00000000 3e2b0000 0a 00 0000 15000000 4000 00 05 1400 0100 ff0200000000000000000001ffeace3b 0a00 0200 3333ffeace3b 0000 0800 0400 00000000 1400 0300 992a0000 29130000 29130000 01000000" +
- "58000000 1c00 0200 00000000 3e2b0000 0a 00 0000 14000000 4000 00 05 1400 0100 ff020000000000000000000000000002 0a00 0200 333300000002 0000 0800 0400 00000000 1400 0300 2e2a0000 be120000 be120000 00000000" +
- "44000000 1c00 0200 00000000 3e2b0000 02 00 0000 18000000 4000 00 03 0800 0100 00000000 0400 0200 0800 0400 00000000 1400 0300 75280000 05110000 05110000 22000000";
- public static final byte[] RTM_GETNEIGH_RESPONSE =
- HexEncoding.decode(RTM_GETNEIGH_RESPONSE_HEX.replaceAll(" ", "").toCharArray(), false);
-
- @Test
- public void testParseRtmDelNeigh() {
- final ByteBuffer byteBuffer = ByteBuffer.wrap(RTM_DELNEIGH);
- byteBuffer.order(ByteOrder.LITTLE_ENDIAN); // For testing.
- final NetlinkMessage msg = NetlinkMessage.parse(byteBuffer);
- assertNotNull(msg);
- assertTrue(msg instanceof RtNetlinkNeighborMessage);
- final RtNetlinkNeighborMessage neighMsg = (RtNetlinkNeighborMessage) msg;
-
- final StructNlMsgHdr hdr = neighMsg.getHeader();
- assertNotNull(hdr);
- assertEquals(76, hdr.nlmsg_len);
- assertEquals(NetlinkConstants.RTM_DELNEIGH, hdr.nlmsg_type);
- assertEquals(0, hdr.nlmsg_flags);
- assertEquals(0, hdr.nlmsg_seq);
- assertEquals(0, hdr.nlmsg_pid);
-
- final StructNdMsg ndmsgHdr = neighMsg.getNdHeader();
- assertNotNull(ndmsgHdr);
- assertEquals((byte) OsConstants.AF_INET, ndmsgHdr.ndm_family);
- assertEquals(21, ndmsgHdr.ndm_ifindex);
- assertEquals(StructNdMsg.NUD_STALE, ndmsgHdr.ndm_state);
- final InetAddress destination = neighMsg.getDestination();
- assertNotNull(destination);
- assertEquals(InetAddress.parseNumericAddress("192.168.159.254"), destination);
- }
-
- @Test
- public void testParseRtmNewNeigh() {
- final ByteBuffer byteBuffer = ByteBuffer.wrap(RTM_NEWNEIGH);
- byteBuffer.order(ByteOrder.LITTLE_ENDIAN); // For testing.
- final NetlinkMessage msg = NetlinkMessage.parse(byteBuffer);
- assertNotNull(msg);
- assertTrue(msg instanceof RtNetlinkNeighborMessage);
- final RtNetlinkNeighborMessage neighMsg = (RtNetlinkNeighborMessage) msg;
-
- final StructNlMsgHdr hdr = neighMsg.getHeader();
- assertNotNull(hdr);
- assertEquals(88, hdr.nlmsg_len);
- assertEquals(NetlinkConstants.RTM_NEWNEIGH, hdr.nlmsg_type);
- assertEquals(0, hdr.nlmsg_flags);
- assertEquals(0, hdr.nlmsg_seq);
- assertEquals(0, hdr.nlmsg_pid);
-
- final StructNdMsg ndmsgHdr = neighMsg.getNdHeader();
- assertNotNull(ndmsgHdr);
- assertEquals((byte) OsConstants.AF_INET6, ndmsgHdr.ndm_family);
- assertEquals(21, ndmsgHdr.ndm_ifindex);
- assertEquals(StructNdMsg.NUD_STALE, ndmsgHdr.ndm_state);
- final InetAddress destination = neighMsg.getDestination();
- assertNotNull(destination);
- assertEquals(InetAddress.parseNumericAddress("fe80::86c9:b2ff:fe6a:ed4b"), destination);
- }
-
- @Test
- public void testParseRtmGetNeighResponse() {
- final ByteBuffer byteBuffer = ByteBuffer.wrap(RTM_GETNEIGH_RESPONSE);
- byteBuffer.order(ByteOrder.LITTLE_ENDIAN); // For testing.
-
- int messageCount = 0;
- while (byteBuffer.remaining() > 0) {
- final NetlinkMessage msg = NetlinkMessage.parse(byteBuffer);
- assertNotNull(msg);
- assertTrue(msg instanceof RtNetlinkNeighborMessage);
- final RtNetlinkNeighborMessage neighMsg = (RtNetlinkNeighborMessage) msg;
-
- final StructNlMsgHdr hdr = neighMsg.getHeader();
- assertNotNull(hdr);
- assertEquals(NetlinkConstants.RTM_NEWNEIGH, hdr.nlmsg_type);
- assertEquals(StructNlMsgHdr.NLM_F_MULTI, hdr.nlmsg_flags);
- assertEquals(0, hdr.nlmsg_seq);
- assertEquals(11070, hdr.nlmsg_pid);
-
- messageCount++;
- }
- // TODO: add more detailed spot checks.
- assertEquals(14, messageCount);
- }
-
- @Test
- public void testCreateRtmNewNeighMessage() {
- final int seqNo = 2635;
- final int ifIndex = 14;
- final byte[] llAddr =
- new byte[] { (byte) 1, (byte) 2, (byte) 3, (byte) 4, (byte) 5, (byte) 6 };
-
- // Hexadecimal representation of our created packet.
- final String expectedNewNeighHex =
- // struct nlmsghdr
- "30000000" + // length = 48
- "1c00" + // type = 28 (RTM_NEWNEIGH)
- "0501" + // flags (NLM_F_REQUEST | NLM_F_ACK | NLM_F_REPLACE)
- "4b0a0000" + // seqno
- "00000000" + // pid (0 == kernel)
- // struct ndmsg
- "02" + // family
- "00" + // pad1
- "0000" + // pad2
- "0e000000" + // interface index (14)
- "0800" + // NUD state (0x08 == NUD_DELAY)
- "00" + // flags
- "00" + // type
- // struct nlattr: NDA_DST
- "0800" + // length = 8
- "0100" + // type (1 == NDA_DST, for neighbor messages)
- "7f000001" + // IPv4 address (== 127.0.0.1)
- // struct nlattr: NDA_LLADDR
- "0a00" + // length = 10
- "0200" + // type (2 == NDA_LLADDR, for neighbor messages)
- "010203040506" + // MAC Address (== 01:02:03:04:05:06)
- "0000"; // padding, for 4 byte alignment
- final byte[] expectedNewNeigh =
- HexEncoding.decode(expectedNewNeighHex.toCharArray(), false);
-
- final byte[] bytes = RtNetlinkNeighborMessage.newNewNeighborMessage(
- seqNo, Inet4Address.LOOPBACK, StructNdMsg.NUD_DELAY, ifIndex, llAddr);
- if (!Arrays.equals(expectedNewNeigh, bytes)) {
- assertEquals(expectedNewNeigh.length, bytes.length);
- for (int i = 0; i < Math.min(expectedNewNeigh.length, bytes.length); i++) {
- assertEquals(expectedNewNeigh[i], bytes[i]);
- }
- }
- }
-}
diff --git a/tests/net/java/android/net/shared/Inet4AddressUtilsTest.java b/tests/net/java/android/net/shared/Inet4AddressUtilsTest.java
deleted file mode 100644
index 35f8c79..0000000
--- a/tests/net/java/android/net/shared/Inet4AddressUtilsTest.java
+++ /dev/null
@@ -1,210 +0,0 @@
-/*
- * Copyright (C) 2019 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.shared;
-
-import static android.net.shared.Inet4AddressUtils.getBroadcastAddress;
-import static android.net.shared.Inet4AddressUtils.getImplicitNetmask;
-import static android.net.shared.Inet4AddressUtils.getPrefixMaskAsInet4Address;
-import static android.net.shared.Inet4AddressUtils.inet4AddressToIntHTH;
-import static android.net.shared.Inet4AddressUtils.inet4AddressToIntHTL;
-import static android.net.shared.Inet4AddressUtils.intToInet4AddressHTH;
-import static android.net.shared.Inet4AddressUtils.intToInet4AddressHTL;
-import static android.net.shared.Inet4AddressUtils.netmaskToPrefixLength;
-import static android.net.shared.Inet4AddressUtils.prefixLengthToV4NetmaskIntHTH;
-import static android.net.shared.Inet4AddressUtils.prefixLengthToV4NetmaskIntHTL;
-
-import static junit.framework.Assert.assertEquals;
-
-import static org.junit.Assert.fail;
-
-import android.net.InetAddresses;
-
-import androidx.test.filters.SmallTest;
-import androidx.test.runner.AndroidJUnit4;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.net.Inet4Address;
-
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public class Inet4AddressUtilsTest {
-
- @Test
- public void testInet4AddressToIntHTL() {
- assertEquals(0, inet4AddressToIntHTL(ipv4Address("0.0.0.0")));
- assertEquals(0x000080ff, inet4AddressToIntHTL(ipv4Address("255.128.0.0")));
- assertEquals(0x0080ff0a, inet4AddressToIntHTL(ipv4Address("10.255.128.0")));
- assertEquals(0x00feff0a, inet4AddressToIntHTL(ipv4Address("10.255.254.0")));
- assertEquals(0xfeffa8c0, inet4AddressToIntHTL(ipv4Address("192.168.255.254")));
- assertEquals(0xffffa8c0, inet4AddressToIntHTL(ipv4Address("192.168.255.255")));
- }
-
- @Test
- public void testIntToInet4AddressHTL() {
- assertEquals(ipv4Address("0.0.0.0"), intToInet4AddressHTL(0));
- assertEquals(ipv4Address("255.128.0.0"), intToInet4AddressHTL(0x000080ff));
- assertEquals(ipv4Address("10.255.128.0"), intToInet4AddressHTL(0x0080ff0a));
- assertEquals(ipv4Address("10.255.254.0"), intToInet4AddressHTL(0x00feff0a));
- assertEquals(ipv4Address("192.168.255.254"), intToInet4AddressHTL(0xfeffa8c0));
- assertEquals(ipv4Address("192.168.255.255"), intToInet4AddressHTL(0xffffa8c0));
- }
-
- @Test
- public void testInet4AddressToIntHTH() {
- assertEquals(0, inet4AddressToIntHTH(ipv4Address("0.0.0.0")));
- assertEquals(0xff800000, inet4AddressToIntHTH(ipv4Address("255.128.0.0")));
- assertEquals(0x0aff8000, inet4AddressToIntHTH(ipv4Address("10.255.128.0")));
- assertEquals(0x0afffe00, inet4AddressToIntHTH(ipv4Address("10.255.254.0")));
- assertEquals(0xc0a8fffe, inet4AddressToIntHTH(ipv4Address("192.168.255.254")));
- assertEquals(0xc0a8ffff, inet4AddressToIntHTH(ipv4Address("192.168.255.255")));
- }
-
- @Test
- public void testIntToInet4AddressHTH() {
- assertEquals(ipv4Address("0.0.0.0"), intToInet4AddressHTH(0));
- assertEquals(ipv4Address("255.128.0.0"), intToInet4AddressHTH(0xff800000));
- assertEquals(ipv4Address("10.255.128.0"), intToInet4AddressHTH(0x0aff8000));
- assertEquals(ipv4Address("10.255.254.0"), intToInet4AddressHTH(0x0afffe00));
- assertEquals(ipv4Address("192.168.255.254"), intToInet4AddressHTH(0xc0a8fffe));
- assertEquals(ipv4Address("192.168.255.255"), intToInet4AddressHTH(0xc0a8ffff));
- }
-
-
- @Test
- public void testPrefixLengthToV4NetmaskIntHTL() {
- assertEquals(0, prefixLengthToV4NetmaskIntHTL(0));
- assertEquals(0x000080ff /* 255.128.0.0 */, prefixLengthToV4NetmaskIntHTL(9));
- assertEquals(0x0080ffff /* 255.255.128.0 */, prefixLengthToV4NetmaskIntHTL(17));
- assertEquals(0x00feffff /* 255.255.254.0 */, prefixLengthToV4NetmaskIntHTL(23));
- assertEquals(0xfeffffff /* 255.255.255.254 */, prefixLengthToV4NetmaskIntHTL(31));
- assertEquals(0xffffffff /* 255.255.255.255 */, prefixLengthToV4NetmaskIntHTL(32));
- }
-
- @Test
- public void testPrefixLengthToV4NetmaskIntHTH() {
- assertEquals(0, prefixLengthToV4NetmaskIntHTH(0));
- assertEquals(0xff800000 /* 255.128.0.0 */, prefixLengthToV4NetmaskIntHTH(9));
- assertEquals(0xffff8000 /* 255.255.128.0 */, prefixLengthToV4NetmaskIntHTH(17));
- assertEquals(0xfffffe00 /* 255.255.254.0 */, prefixLengthToV4NetmaskIntHTH(23));
- assertEquals(0xfffffffe /* 255.255.255.254 */, prefixLengthToV4NetmaskIntHTH(31));
- assertEquals(0xffffffff /* 255.255.255.255 */, prefixLengthToV4NetmaskIntHTH(32));
- }
-
- @Test(expected = IllegalArgumentException.class)
- public void testPrefixLengthToV4NetmaskIntHTH_NegativeLength() {
- prefixLengthToV4NetmaskIntHTH(-1);
- }
-
- @Test(expected = IllegalArgumentException.class)
- public void testPrefixLengthToV4NetmaskIntHTH_LengthTooLarge() {
- prefixLengthToV4NetmaskIntHTH(33);
- }
-
- private void checkAddressMasking(String expectedAddr, String addr, int prefixLength) {
- final int prefix = prefixLengthToV4NetmaskIntHTH(prefixLength);
- final int addrInt = inet4AddressToIntHTH(ipv4Address(addr));
- assertEquals(ipv4Address(expectedAddr), intToInet4AddressHTH(prefix & addrInt));
- }
-
- @Test
- public void testPrefixLengthToV4NetmaskIntHTH_MaskAddr() {
- checkAddressMasking("192.168.0.0", "192.168.128.1", 16);
- checkAddressMasking("255.240.0.0", "255.255.255.255", 12);
- checkAddressMasking("255.255.255.255", "255.255.255.255", 32);
- checkAddressMasking("0.0.0.0", "255.255.255.255", 0);
- }
-
- @Test
- public void testGetImplicitNetmask() {
- assertEquals(8, getImplicitNetmask(ipv4Address("4.2.2.2")));
- assertEquals(8, getImplicitNetmask(ipv4Address("10.5.6.7")));
- assertEquals(16, getImplicitNetmask(ipv4Address("173.194.72.105")));
- assertEquals(16, getImplicitNetmask(ipv4Address("172.23.68.145")));
- assertEquals(24, getImplicitNetmask(ipv4Address("192.0.2.1")));
- assertEquals(24, getImplicitNetmask(ipv4Address("192.168.5.1")));
- assertEquals(32, getImplicitNetmask(ipv4Address("224.0.0.1")));
- assertEquals(32, getImplicitNetmask(ipv4Address("255.6.7.8")));
- }
-
- private void assertInvalidNetworkMask(Inet4Address addr) {
- try {
- netmaskToPrefixLength(addr);
- fail("Invalid netmask " + addr.getHostAddress() + " did not cause exception");
- } catch (IllegalArgumentException expected) {
- }
- }
-
- @Test
- public void testNetmaskToPrefixLength() {
- assertEquals(0, netmaskToPrefixLength(ipv4Address("0.0.0.0")));
- assertEquals(9, netmaskToPrefixLength(ipv4Address("255.128.0.0")));
- assertEquals(17, netmaskToPrefixLength(ipv4Address("255.255.128.0")));
- assertEquals(23, netmaskToPrefixLength(ipv4Address("255.255.254.0")));
- assertEquals(31, netmaskToPrefixLength(ipv4Address("255.255.255.254")));
- assertEquals(32, netmaskToPrefixLength(ipv4Address("255.255.255.255")));
-
- assertInvalidNetworkMask(ipv4Address("0.0.0.1"));
- assertInvalidNetworkMask(ipv4Address("255.255.255.253"));
- assertInvalidNetworkMask(ipv4Address("255.255.0.255"));
- }
-
- @Test
- public void testGetPrefixMaskAsAddress() {
- assertEquals("255.255.240.0", getPrefixMaskAsInet4Address(20).getHostAddress());
- assertEquals("255.0.0.0", getPrefixMaskAsInet4Address(8).getHostAddress());
- assertEquals("0.0.0.0", getPrefixMaskAsInet4Address(0).getHostAddress());
- assertEquals("255.255.255.255", getPrefixMaskAsInet4Address(32).getHostAddress());
- }
-
- @Test
- public void testGetBroadcastAddress() {
- assertEquals("192.168.15.255",
- getBroadcastAddress(ipv4Address("192.168.0.123"), 20).getHostAddress());
- assertEquals("192.255.255.255",
- getBroadcastAddress(ipv4Address("192.168.0.123"), 8).getHostAddress());
- assertEquals("192.168.0.123",
- getBroadcastAddress(ipv4Address("192.168.0.123"), 32).getHostAddress());
- assertEquals("255.255.255.255",
- getBroadcastAddress(ipv4Address("192.168.0.123"), 0).getHostAddress());
- }
-
- @Test(expected = IllegalArgumentException.class)
- public void testGetBroadcastAddress_PrefixTooLarge() {
- getBroadcastAddress(ipv4Address("192.168.0.123"), 33);
- }
-
- @Test(expected = IllegalArgumentException.class)
- public void testGetBroadcastAddress_NegativePrefix() {
- getBroadcastAddress(ipv4Address("192.168.0.123"), -1);
- }
-
- @Test(expected = IllegalArgumentException.class)
- public void testGetPrefixMaskAsAddress_PrefixTooLarge() {
- getPrefixMaskAsInet4Address(33);
- }
-
- @Test(expected = IllegalArgumentException.class)
- public void testGetPrefixMaskAsAddress_NegativePrefix() {
- getPrefixMaskAsInet4Address(-1);
- }
-
- private Inet4Address ipv4Address(String addr) {
- return (Inet4Address) InetAddresses.parseNumericAddress(addr);
- }
-}
diff --git a/tests/net/java/android/net/shared/InitialConfigurationTest.java b/tests/net/java/android/net/shared/InitialConfigurationTest.java
deleted file mode 100644
index 17f8324..0000000
--- a/tests/net/java/android/net/shared/InitialConfigurationTest.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright (C) 2019 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.shared;
-
-import static android.net.InetAddresses.parseNumericAddress;
-
-import static com.android.testutils.MiscAssertsKt.assertFieldCountEquals;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotEquals;
-
-import android.net.IpPrefix;
-import android.net.LinkAddress;
-
-import androidx.test.filters.SmallTest;
-import androidx.test.runner.AndroidJUnit4;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.util.Arrays;
-import java.util.function.Consumer;
-
-/**
- * Tests for {@link InitialConfiguration}
- */
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public class InitialConfigurationTest {
- private InitialConfiguration mConfig;
-
- @Before
- public void setUp() {
- mConfig = new InitialConfiguration();
- mConfig.ipAddresses.addAll(Arrays.asList(
- new LinkAddress(parseNumericAddress("192.168.45.45"), 16),
- new LinkAddress(parseNumericAddress("2001:db8::45"), 33)));
- mConfig.directlyConnectedRoutes.addAll(Arrays.asList(
- new IpPrefix(parseNumericAddress("192.168.46.46"), 17),
- new IpPrefix(parseNumericAddress("2001:db8::46"), 34)));
- mConfig.dnsServers.addAll(Arrays.asList(
- parseNumericAddress("192.168.47.47"),
- parseNumericAddress("2001:db8::47")));
- // Any added InitialConfiguration field must be included in equals() to be tested properly
- assertFieldCountEquals(3, InitialConfiguration.class);
- }
-
- @Test
- public void testParcelUnparcelInitialConfiguration() {
- final InitialConfiguration unparceled =
- InitialConfiguration.fromStableParcelable(mConfig.toStableParcelable());
- assertEquals(mConfig, unparceled);
- }
-
- @Test
- public void testEquals() {
- assertEquals(mConfig, InitialConfiguration.copy(mConfig));
-
- assertNotEqualsAfterChange(c -> c.ipAddresses.add(
- new LinkAddress(parseNumericAddress("192.168.47.47"), 24)));
- assertNotEqualsAfterChange(c -> c.directlyConnectedRoutes.add(
- new IpPrefix(parseNumericAddress("192.168.46.46"), 32)));
- assertNotEqualsAfterChange(c -> c.dnsServers.add(parseNumericAddress("2001:db8::49")));
- assertFieldCountEquals(3, InitialConfiguration.class);
- }
-
- private void assertNotEqualsAfterChange(Consumer<InitialConfiguration> mutator) {
- final InitialConfiguration newConfig = InitialConfiguration.copy(mConfig);
- mutator.accept(newConfig);
- assertNotEquals(mConfig, newConfig);
- }
-}
diff --git a/tests/net/java/android/net/shared/IpConfigurationParcelableUtilTest.java b/tests/net/java/android/net/shared/IpConfigurationParcelableUtilTest.java
deleted file mode 100644
index f987389..0000000
--- a/tests/net/java/android/net/shared/IpConfigurationParcelableUtilTest.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * Copyright (C) 2019 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.shared;
-
-import static android.net.InetAddresses.parseNumericAddress;
-import static android.net.shared.IpConfigurationParcelableUtil.fromStableParcelable;
-import static android.net.shared.IpConfigurationParcelableUtil.toStableParcelable;
-
-import static com.android.testutils.MiscAssertsKt.assertFieldCountEquals;
-
-import static org.junit.Assert.assertEquals;
-
-import android.net.DhcpResults;
-import android.net.LinkAddress;
-
-import androidx.test.filters.SmallTest;
-import androidx.test.runner.AndroidJUnit4;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.net.Inet4Address;
-
-/**
- * Tests for {@link IpConfigurationParcelableUtil}.
- */
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public class IpConfigurationParcelableUtilTest {
- private DhcpResults mDhcpResults;
-
- @Before
- public void setUp() {
- mDhcpResults = new DhcpResults();
- mDhcpResults.ipAddress = new LinkAddress(parseNumericAddress("2001:db8::42"), 64);
- mDhcpResults.gateway = parseNumericAddress("192.168.42.42");
- mDhcpResults.dnsServers.add(parseNumericAddress("2001:db8::43"));
- mDhcpResults.dnsServers.add(parseNumericAddress("192.168.43.43"));
- mDhcpResults.domains = "example.com";
- mDhcpResults.serverAddress = (Inet4Address) parseNumericAddress("192.168.44.44");
- mDhcpResults.vendorInfo = "TEST_VENDOR_INFO";
- mDhcpResults.leaseDuration = 3600;
- mDhcpResults.serverHostName = "dhcp.example.com";
- mDhcpResults.mtu = 1450;
- // Any added DhcpResults field must be included in equals() to be tested properly
- assertFieldCountEquals(9, DhcpResults.class);
- }
-
- @Test
- public void testParcelUnparcelDhcpResults() {
- doDhcpResultsParcelUnparcelTest();
- }
-
- @Test
- public void testParcelUnparcelDhcpResults_NullIpAddress() {
- mDhcpResults.ipAddress = null;
- doDhcpResultsParcelUnparcelTest();
- }
-
- @Test
- public void testParcelUnparcelDhcpResults_NullGateway() {
- mDhcpResults.gateway = null;
- doDhcpResultsParcelUnparcelTest();
- }
-
- @Test
- public void testParcelUnparcelDhcpResults_NullDomains() {
- mDhcpResults.domains = null;
- doDhcpResultsParcelUnparcelTest();
- }
-
- @Test
- public void testParcelUnparcelDhcpResults_EmptyDomains() {
- mDhcpResults.domains = "";
- doDhcpResultsParcelUnparcelTest();
- }
-
- @Test
- public void testParcelUnparcelDhcpResults_NullServerAddress() {
- mDhcpResults.serverAddress = null;
- doDhcpResultsParcelUnparcelTest();
- }
-
- @Test
- public void testParcelUnparcelDhcpResults_NullVendorInfo() {
- mDhcpResults.vendorInfo = null;
- doDhcpResultsParcelUnparcelTest();
- }
-
- @Test
- public void testParcelUnparcelDhcpResults_NullServerHostName() {
- mDhcpResults.serverHostName = null;
- doDhcpResultsParcelUnparcelTest();
- }
-
- private void doDhcpResultsParcelUnparcelTest() {
- final DhcpResults unparceled = fromStableParcelable(toStableParcelable(mDhcpResults));
- assertEquals(mDhcpResults, unparceled);
- }
-}
diff --git a/tests/net/java/android/net/shared/ProvisioningConfigurationTest.java b/tests/net/java/android/net/shared/ProvisioningConfigurationTest.java
deleted file mode 100644
index 7079a28..0000000
--- a/tests/net/java/android/net/shared/ProvisioningConfigurationTest.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * Copyright (C) 2019 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.shared;
-
-import static android.net.InetAddresses.parseNumericAddress;
-import static android.net.shared.ProvisioningConfiguration.fromStableParcelable;
-
-import static com.android.testutils.MiscAssertsKt.assertFieldCountEquals;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotEquals;
-
-import android.net.LinkAddress;
-import android.net.Network;
-import android.net.StaticIpConfiguration;
-import android.net.apf.ApfCapabilities;
-
-import androidx.test.filters.SmallTest;
-import androidx.test.runner.AndroidJUnit4;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.util.function.Consumer;
-
-/**
- * Tests for {@link ProvisioningConfiguration}.
- */
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public class ProvisioningConfigurationTest {
- private ProvisioningConfiguration mConfig;
-
- @Before
- public void setUp() {
- mConfig = new ProvisioningConfiguration();
- mConfig.mEnableIPv4 = true;
- mConfig.mEnableIPv6 = true;
- mConfig.mUsingMultinetworkPolicyTracker = true;
- mConfig.mUsingIpReachabilityMonitor = true;
- mConfig.mRequestedPreDhcpActionMs = 42;
- mConfig.mInitialConfig = new InitialConfiguration();
- mConfig.mInitialConfig.ipAddresses.add(
- new LinkAddress(parseNumericAddress("192.168.42.42"), 24));
- mConfig.mStaticIpConfig = new StaticIpConfiguration();
- mConfig.mStaticIpConfig.ipAddress =
- new LinkAddress(parseNumericAddress("2001:db8::42"), 90);
- // Not testing other InitialConfig or StaticIpConfig members: they have their own unit tests
- mConfig.mApfCapabilities = new ApfCapabilities(1, 2, 3);
- mConfig.mProvisioningTimeoutMs = 4200;
- mConfig.mIPv6AddrGenMode = 123;
- mConfig.mNetwork = new Network(321);
- mConfig.mDisplayName = "test_config";
- // Any added field must be included in equals() to be tested properly
- assertFieldCountEquals(12, ProvisioningConfiguration.class);
- }
-
- @Test
- public void testParcelUnparcel() {
- doParcelUnparcelTest();
- }
-
- @Test
- public void testParcelUnparcel_NullInitialConfiguration() {
- mConfig.mInitialConfig = null;
- doParcelUnparcelTest();
- }
-
- @Test
- public void testParcelUnparcel_NullStaticConfiguration() {
- mConfig.mStaticIpConfig = null;
- doParcelUnparcelTest();
- }
-
- @Test
- public void testParcelUnparcel_NullApfCapabilities() {
- mConfig.mApfCapabilities = null;
- doParcelUnparcelTest();
- }
-
- @Test
- public void testParcelUnparcel_NullNetwork() {
- mConfig.mNetwork = null;
- doParcelUnparcelTest();
- }
-
- private void doParcelUnparcelTest() {
- final ProvisioningConfiguration unparceled =
- fromStableParcelable(mConfig.toStableParcelable());
- assertEquals(mConfig, unparceled);
- }
-
- @Test
- public void testEquals() {
- assertEquals(mConfig, new ProvisioningConfiguration(mConfig));
-
- assertNotEqualsAfterChange(c -> c.mEnableIPv4 = false);
- assertNotEqualsAfterChange(c -> c.mEnableIPv6 = false);
- assertNotEqualsAfterChange(c -> c.mUsingMultinetworkPolicyTracker = false);
- assertNotEqualsAfterChange(c -> c.mUsingIpReachabilityMonitor = false);
- assertNotEqualsAfterChange(c -> c.mRequestedPreDhcpActionMs++);
- assertNotEqualsAfterChange(c -> c.mInitialConfig.ipAddresses.add(
- new LinkAddress(parseNumericAddress("192.168.47.47"), 16)));
- assertNotEqualsAfterChange(c -> c.mInitialConfig = null);
- assertNotEqualsAfterChange(c -> c.mStaticIpConfig.ipAddress =
- new LinkAddress(parseNumericAddress("2001:db8::47"), 64));
- assertNotEqualsAfterChange(c -> c.mStaticIpConfig = null);
- assertNotEqualsAfterChange(c -> c.mApfCapabilities = new ApfCapabilities(4, 5, 6));
- assertNotEqualsAfterChange(c -> c.mApfCapabilities = null);
- assertNotEqualsAfterChange(c -> c.mProvisioningTimeoutMs++);
- assertNotEqualsAfterChange(c -> c.mIPv6AddrGenMode++);
- assertNotEqualsAfterChange(c -> c.mNetwork = new Network(123));
- assertNotEqualsAfterChange(c -> c.mNetwork = null);
- assertNotEqualsAfterChange(c -> c.mDisplayName = "other_test");
- assertNotEqualsAfterChange(c -> c.mDisplayName = null);
- assertFieldCountEquals(12, ProvisioningConfiguration.class);
- }
-
- private void assertNotEqualsAfterChange(Consumer<ProvisioningConfiguration> mutator) {
- final ProvisioningConfiguration newConfig = new ProvisioningConfiguration(mConfig);
- mutator.accept(newConfig);
- assertNotEquals(mConfig, newConfig);
- }
-}
diff --git a/tests/net/java/android/net/util/InterfaceParamsTest.java b/tests/net/java/android/net/util/InterfaceParamsTest.java
deleted file mode 100644
index 141455c..0000000
--- a/tests/net/java/android/net/util/InterfaceParamsTest.java
+++ /dev/null
@@ -1,52 +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.
- */
-
-package android.net.util;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-
-import androidx.test.filters.SmallTest;
-import androidx.test.runner.AndroidJUnit4;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public class InterfaceParamsTest {
- @Test
- public void testNullInterfaceReturnsNull() {
- assertNull(InterfaceParams.getByName(null));
- }
-
- @Test
- public void testNonExistentInterfaceReturnsNull() {
- assertNull(InterfaceParams.getByName("doesnotexist0"));
- }
-
- @Test
- public void testLoopback() {
- final InterfaceParams ifParams = InterfaceParams.getByName("lo");
- assertNotNull(ifParams);
- assertEquals("lo", ifParams.name);
- assertTrue(ifParams.index > 0);
- assertNotNull(ifParams.macAddr);
- assertTrue(ifParams.defaultMtu >= NetworkConstants.ETHER_MTU);
- }
-}
diff --git a/tests/net/java/android/net/util/SharedLogTest.java b/tests/net/java/android/net/util/SharedLogTest.java
deleted file mode 100644
index e1dba36..0000000
--- a/tests/net/java/android/net/util/SharedLogTest.java
+++ /dev/null
@@ -1,95 +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.
- */
-
-package android.net.util;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-import androidx.test.filters.SmallTest;
-import androidx.test.runner.AndroidJUnit4;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.io.ByteArrayOutputStream;
-import java.io.PrintWriter;
-
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public class SharedLogTest {
- private static final String TIMESTAMP_PATTERN = "\\d{2}:\\d{2}:\\d{2}";
- private static final String TIMESTAMP = "HH:MM:SS";
-
- @Test
- public void testBasicOperation() {
- final SharedLog logTop = new SharedLog("top");
- logTop.mark("first post!");
-
- final SharedLog logLevel2a = logTop.forSubComponent("twoA");
- final SharedLog logLevel2b = logTop.forSubComponent("twoB");
- logLevel2b.e("2b or not 2b");
- logLevel2b.e("No exception", null);
- logLevel2b.e("Wait, here's one", new Exception("Test"));
- logLevel2a.w("second post?");
-
- final SharedLog logLevel3 = logLevel2a.forSubComponent("three");
- logTop.log("still logging");
- logLevel3.log("3 >> 2");
- logLevel2a.mark("ok: last post");
-
- final String[] expected = {
- " - MARK first post!",
- " - [twoB] ERROR 2b or not 2b",
- " - [twoB] ERROR No exception",
- // No stacktrace in shared log, only in logcat
- " - [twoB] ERROR Wait, here's one: Test",
- " - [twoA] WARN second post?",
- " - still logging",
- " - [twoA.three] 3 >> 2",
- " - [twoA] MARK ok: last post",
- };
- // Verify the logs are all there and in the correct order.
- verifyLogLines(expected, logTop);
-
- // In fact, because they all share the same underlying LocalLog,
- // every subcomponent SharedLog's dump() is identical.
- verifyLogLines(expected, logLevel2a);
- verifyLogLines(expected, logLevel2b);
- verifyLogLines(expected, logLevel3);
- }
-
- private static void verifyLogLines(String[] expected, SharedLog log) {
- final ByteArrayOutputStream ostream = new ByteArrayOutputStream();
- final PrintWriter pw = new PrintWriter(ostream, true);
- log.dump(null, pw, null);
-
- final String dumpOutput = ostream.toString();
- assertTrue(dumpOutput != null);
- assertTrue(!"".equals(dumpOutput));
-
- final String[] lines = dumpOutput.split("\n");
- assertEquals(expected.length, lines.length);
-
- for (int i = 0; i < expected.length; i++) {
- String got = lines[i];
- String want = expected[i];
- assertTrue(String.format("'%s' did not contain '%s'", got, want), got.endsWith(want));
- assertTrue(String.format("'%s' did not contain a %s timestamp", got, TIMESTAMP),
- got.replaceFirst(TIMESTAMP_PATTERN, TIMESTAMP).contains(TIMESTAMP));
- }
- }
-}
diff --git a/tests/net/java/com/android/internal/util/BitUtilsTest.java b/tests/net/java/com/android/internal/util/BitUtilsTest.java
index 01fb0df..d2fbdce 100644
--- a/tests/net/java/com/android/internal/util/BitUtilsTest.java
+++ b/tests/net/java/com/android/internal/util/BitUtilsTest.java
@@ -21,11 +21,14 @@
import static com.android.internal.util.BitUtils.getUint16;
import static com.android.internal.util.BitUtils.getUint32;
import static com.android.internal.util.BitUtils.getUint8;
+import static com.android.internal.util.BitUtils.packBits;
import static com.android.internal.util.BitUtils.uint16;
import static com.android.internal.util.BitUtils.uint32;
import static com.android.internal.util.BitUtils.uint8;
+import static com.android.internal.util.BitUtils.unpackBits;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
import androidx.test.filters.SmallTest;
import androidx.test.runner.AndroidJUnit4;
@@ -34,6 +37,8 @@
import org.junit.runner.RunWith;
import java.nio.ByteBuffer;
+import java.util.Arrays;
+import java.util.Random;
@SmallTest
@RunWith(AndroidJUnit4.class)
@@ -110,20 +115,66 @@
@Test
public void testUnsignedGetters() {
- ByteBuffer b = ByteBuffer.allocate(4);
- b.putInt(0xffff);
+ ByteBuffer b = ByteBuffer.allocate(4);
+ b.putInt(0xffff);
- assertEquals(0x0, getUint8(b, 0));
- assertEquals(0x0, getUint8(b, 1));
- assertEquals(0xff, getUint8(b, 2));
- assertEquals(0xff, getUint8(b, 3));
+ assertEquals(0x0, getUint8(b, 0));
+ assertEquals(0x0, getUint8(b, 1));
+ assertEquals(0xff, getUint8(b, 2));
+ assertEquals(0xff, getUint8(b, 3));
- assertEquals(0x0, getUint16(b, 0));
- assertEquals(0xffff, getUint16(b, 2));
+ assertEquals(0x0, getUint16(b, 0));
+ assertEquals(0xffff, getUint16(b, 2));
- b.rewind();
- b.putInt(0xffffffff);
- assertEquals(0xffffffffL, getUint32(b, 0));
+ b.rewind();
+ b.putInt(0xffffffff);
+ assertEquals(0xffffffffL, getUint32(b, 0));
+ }
+
+ @Test
+ public void testBitsPacking() {
+ BitPackingTestCase[] testCases = {
+ new BitPackingTestCase(0, ints()),
+ new BitPackingTestCase(1, ints(0)),
+ new BitPackingTestCase(2, ints(1)),
+ new BitPackingTestCase(3, ints(0, 1)),
+ new BitPackingTestCase(4, ints(2)),
+ new BitPackingTestCase(6, ints(1, 2)),
+ new BitPackingTestCase(9, ints(0, 3)),
+ new BitPackingTestCase(~Long.MAX_VALUE, ints(63)),
+ new BitPackingTestCase(~Long.MAX_VALUE + 1, ints(0, 63)),
+ new BitPackingTestCase(~Long.MAX_VALUE + 2, ints(1, 63)),
+ };
+ for (BitPackingTestCase tc : testCases) {
+ int[] got = unpackBits(tc.packedBits);
+ assertTrue(
+ "unpackBits("
+ + tc.packedBits
+ + "): expected "
+ + Arrays.toString(tc.bits)
+ + " but got "
+ + Arrays.toString(got),
+ Arrays.equals(tc.bits, got));
+ }
+ for (BitPackingTestCase tc : testCases) {
+ long got = packBits(tc.bits);
+ assertEquals(
+ "packBits("
+ + Arrays.toString(tc.bits)
+ + "): expected "
+ + tc.packedBits
+ + " but got "
+ + got,
+ tc.packedBits,
+ got);
+ }
+
+ long[] moreTestCases = {
+ 0, 1, -1, 23895, -908235, Long.MAX_VALUE, Long.MIN_VALUE, new Random().nextLong(),
+ };
+ for (long l : moreTestCases) {
+ assertEquals(l, packBits(unpackBits(l)));
+ }
}
static byte[] bytes(int b1, int b2, int b3, int b4) {
@@ -133,4 +184,18 @@
static byte b(int i) {
return (byte) i;
}
+
+ static int[] ints(int... array) {
+ return array;
+ }
+
+ static class BitPackingTestCase {
+ final int[] bits;
+ final long packedBits;
+
+ BitPackingTestCase(long packedBits, int[] bits) {
+ this.bits = bits;
+ this.packedBits = packedBits;
+ }
+ }
}
diff --git a/tests/net/java/com/android/server/ConnectivityServiceTest.java b/tests/net/java/com/android/server/ConnectivityServiceTest.java
index aad2f3d..a24426b 100644
--- a/tests/net/java/com/android/server/ConnectivityServiceTest.java
+++ b/tests/net/java/com/android/server/ConnectivityServiceTest.java
@@ -16,6 +16,9 @@
package com.android.server;
+import static android.Manifest.permission.CHANGE_NETWORK_STATE;
+import static android.Manifest.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS;
+import static android.content.pm.PackageInfo.REQUESTED_PERMISSION_GRANTED;
import static android.content.pm.PackageManager.GET_PERMISSIONS;
import static android.content.pm.PackageManager.MATCH_ANY_USER;
import static android.net.ConnectivityManager.ACTION_CAPTIVE_PORTAL_SIGN_IN;
@@ -93,6 +96,7 @@
import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.ArgumentMatchers.startsWith;
import static org.mockito.Matchers.anyInt;
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.atLeastOnce;
@@ -160,6 +164,7 @@
import android.net.ResolverParamsParcel;
import android.net.RouteInfo;
import android.net.SocketKeepalive;
+import android.net.TetheringManager;
import android.net.UidRange;
import android.net.metrics.IpConnectivityLog;
import android.net.shared.NetworkMonitorUtils;
@@ -194,6 +199,7 @@
import androidx.test.filters.SmallTest;
import androidx.test.runner.AndroidJUnit4;
+import com.android.internal.app.IBatteryStats;
import com.android.internal.net.VpnConfig;
import com.android.internal.net.VpnInfo;
import com.android.internal.util.ArrayUtils;
@@ -207,7 +213,6 @@
import com.android.server.connectivity.Nat464Xlat;
import com.android.server.connectivity.NetworkNotificationManager.NotificationType;
import com.android.server.connectivity.ProxyTracker;
-import com.android.server.connectivity.Tethering;
import com.android.server.connectivity.Vpn;
import com.android.server.net.NetworkPinner;
import com.android.server.net.NetworkPolicyManagerInternal;
@@ -302,6 +307,7 @@
@Mock DefaultNetworkMetrics mDefaultNetworkMetrics;
@Mock INetworkManagementService mNetworkManagementService;
@Mock INetworkStatsService mStatsService;
+ @Mock IBatteryStats mBatteryStatsService;
@Mock INetworkPolicyManager mNpm;
@Mock IDnsResolver mMockDnsResolver;
@Mock INetd mMockNetd;
@@ -1127,11 +1133,12 @@
doReturn(new TestNetIdManager()).when(deps).makeNetIdManager();
doReturn(mNetworkStack).when(deps).getNetworkStack();
doReturn(systemProperties).when(deps).getSystemProperties();
- doReturn(mock(Tethering.class)).when(deps).makeTethering(any(), any(), any(), any(), any());
+ doReturn(mock(TetheringManager.class)).when(deps).getTetheringManager();
doReturn(mock(ProxyTracker.class)).when(deps).makeProxyTracker(any(), any());
doReturn(mMetricsService).when(deps).getMetricsLogger();
doReturn(true).when(deps).queryUserAccess(anyInt(), anyInt());
doReturn(mIpConnectivityMetrics).when(deps).getIpConnectivityMetrics();
+ doReturn(mBatteryStatsService).when(deps).getBatteryStatsService();
doReturn(true).when(deps).hasService(Context.ETHERNET_SERVICE);
doAnswer(inv -> {
mPolicyTracker = new WrappedMultinetworkPolicyTracker(
@@ -2000,9 +2007,17 @@
mCm.unregisterNetworkCallback(trackDefaultCallback);
}
+ private void grantUsingBackgroundNetworksPermissionForUid(final int uid) throws Exception {
+ final String testPackageName = mContext.getPackageName();
+ when(mPackageManager.getPackageInfo(eq(testPackageName), eq(GET_PERMISSIONS)))
+ .thenReturn(buildPackageInfo(true, uid));
+ mService.mPermissionMonitor.onPackageAdded(testPackageName, uid);
+ }
+
@Test
public void testNetworkGoesIntoBackgroundAfterLinger() throws Exception {
setAlwaysOnNetworks(true);
+ grantUsingBackgroundNetworksPermissionForUid(Binder.getCallingUid());
NetworkRequest request = new NetworkRequest.Builder()
.clearCapabilities()
.build();
@@ -3077,6 +3092,7 @@
// Create a background request. We can't do this ourselves because ConnectivityService
// doesn't have an API for it. So just turn on mobile data always on.
setAlwaysOnNetworks(true);
+ grantUsingBackgroundNetworksPermissionForUid(Binder.getCallingUid());
final NetworkRequest request = new NetworkRequest.Builder().build();
final NetworkRequest fgRequest = new NetworkRequest.Builder()
.addCapability(NET_CAPABILITY_FOREGROUND).build();
@@ -3118,14 +3134,11 @@
.addTransportType(TRANSPORT_CELLULAR).build();
final TestNetworkCallback cellCallback = new TestNetworkCallback();
mCm.requestNetwork(cellRequest, cellCallback);
- // NOTE: This request causes the network's capabilities to change. This
- // is currently delivered before the onAvailable() callbacks.
- // TODO: Fix this.
- cellCallback.expectCapabilitiesWith(NET_CAPABILITY_FOREGROUND, mCellNetworkAgent);
cellCallback.expectAvailableCallbacksValidated(mCellNetworkAgent);
fgCallback.expectAvailableCallbacksValidated(mCellNetworkAgent);
// Expect a network capabilities update with FOREGROUND, because the most recent
// request causes its state to change.
+ cellCallback.expectCapabilitiesWith(NET_CAPABILITY_FOREGROUND, mCellNetworkAgent);
callback.expectCapabilitiesWith(NET_CAPABILITY_FOREGROUND, mCellNetworkAgent);
assertTrue(isForegroundNetwork(mCellNetworkAgent));
assertTrue(isForegroundNetwork(mWiFiNetworkAgent));
@@ -3223,6 +3236,7 @@
@Test
public void testMobileDataAlwaysOn() throws Exception {
+ grantUsingBackgroundNetworksPermissionForUid(Binder.getCallingUid());
final TestNetworkCallback cellNetworkCallback = new TestNetworkCallback();
final NetworkRequest cellRequest = new NetworkRequest.Builder()
.addTransportType(TRANSPORT_CELLULAR).build();
@@ -5627,6 +5641,37 @@
mCm.unregisterNetworkCallback(defaultCallback);
}
+ @Ignore // 40%+ flakiness : figure out why and re-enable.
+ @Test
+ public final void testBatteryStatsNetworkType() throws Exception {
+ final LinkProperties cellLp = new LinkProperties();
+ cellLp.setInterfaceName("cell0");
+ mCellNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_CELLULAR, cellLp);
+ mCellNetworkAgent.connect(true);
+ waitForIdle();
+ verify(mBatteryStatsService).noteNetworkInterfaceType(cellLp.getInterfaceName(),
+ TYPE_MOBILE);
+ reset(mBatteryStatsService);
+
+ final LinkProperties wifiLp = new LinkProperties();
+ wifiLp.setInterfaceName("wifi0");
+ mWiFiNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_WIFI, wifiLp);
+ mWiFiNetworkAgent.connect(true);
+ waitForIdle();
+ verify(mBatteryStatsService).noteNetworkInterfaceType(wifiLp.getInterfaceName(),
+ TYPE_WIFI);
+ reset(mBatteryStatsService);
+
+ mCellNetworkAgent.disconnect();
+
+ cellLp.setInterfaceName("wifi0");
+ mCellNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_CELLULAR, cellLp);
+ mCellNetworkAgent.connect(true);
+ waitForIdle();
+ verify(mBatteryStatsService).noteNetworkInterfaceType(cellLp.getInterfaceName(),
+ TYPE_MOBILE);
+ }
+
/**
* Make simulated InterfaceConfig for Nat464Xlat to query clat lower layer info.
*/
@@ -5667,25 +5712,28 @@
mCm.registerNetworkCallback(networkRequest, networkCallback);
// Prepare ipv6 only link properties.
- mCellNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_CELLULAR);
- final int cellNetId = mCellNetworkAgent.getNetwork().netId;
final LinkProperties cellLp = new LinkProperties();
cellLp.setInterfaceName(MOBILE_IFNAME);
cellLp.addLinkAddress(myIpv6);
cellLp.addRoute(new RouteInfo((IpPrefix) null, myIpv6.getAddress(), MOBILE_IFNAME));
cellLp.addRoute(new RouteInfo(myIpv6, null, MOBILE_IFNAME));
+ mCellNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_CELLULAR, cellLp);
reset(mNetworkManagementService);
reset(mMockDnsResolver);
reset(mMockNetd);
+ reset(mBatteryStatsService);
when(mNetworkManagementService.getInterfaceConfig(CLAT_PREFIX + MOBILE_IFNAME))
.thenReturn(getClatInterfaceConfig(myIpv4));
// Connect with ipv6 link properties. Expect prefix discovery to be started.
- mCellNetworkAgent.sendLinkProperties(cellLp);
mCellNetworkAgent.connect(true);
+ final int cellNetId = mCellNetworkAgent.getNetwork().netId;
+ waitForIdle();
verify(mMockNetd, times(1)).networkCreatePhysical(eq(cellNetId), anyInt());
verify(mMockDnsResolver, times(1)).createNetworkCache(eq(cellNetId));
+ verify(mBatteryStatsService).noteNetworkInterfaceType(cellLp.getInterfaceName(),
+ TYPE_MOBILE);
networkCallback.expectAvailableThenValidatedCallbacks(mCellNetworkAgent);
verify(mMockDnsResolver, times(1)).startPrefix64Discovery(cellNetId);
@@ -5701,6 +5749,11 @@
verify(mMockDnsResolver, times(1)).stopPrefix64Discovery(cellNetId);
verify(mMockDnsResolver, atLeastOnce()).setResolverConfiguration(any());
+ // Make sure BatteryStats was not told about any v4- interfaces, as none should have
+ // come online yet.
+ waitForIdle();
+ verify(mBatteryStatsService, never()).noteNetworkInterfaceType(startsWith("v4-"), anyInt());
+
verifyNoMoreInteractions(mMockNetd);
verifyNoMoreInteractions(mMockDnsResolver);
reset(mMockNetd);
@@ -5747,6 +5800,11 @@
assertEquals(1, resolvrParams.servers.length);
assertTrue(ArrayUtils.contains(resolvrParams.servers, "8.8.8.8"));
+ for (final LinkProperties stackedLp : stackedLpsAfterChange) {
+ verify(mBatteryStatsService).noteNetworkInterfaceType(stackedLp.getInterfaceName(),
+ TYPE_MOBILE);
+ }
+
// Add ipv4 address, expect that clatd and prefix discovery are stopped and stacked
// linkproperties are cleaned up.
cellLp.addLinkAddress(myIpv4);
@@ -6176,7 +6234,14 @@
private static PackageInfo buildPackageInfo(boolean hasSystemPermission, int uid) {
final PackageInfo packageInfo = new PackageInfo();
- packageInfo.requestedPermissions = new String[0];
+ if (hasSystemPermission) {
+ packageInfo.requestedPermissions = new String[] {
+ CHANGE_NETWORK_STATE, CONNECTIVITY_USE_RESTRICTED_NETWORKS };
+ packageInfo.requestedPermissionsFlags = new int[] {
+ REQUESTED_PERMISSION_GRANTED, REQUESTED_PERMISSION_GRANTED };
+ } else {
+ packageInfo.requestedPermissions = new String[0];
+ }
packageInfo.applicationInfo = new ApplicationInfo();
packageInfo.applicationInfo.privateFlags = 0;
packageInfo.applicationInfo.uid = UserHandle.getUid(UserHandle.USER_SYSTEM,
diff --git a/tests/net/java/com/android/server/connectivity/NetworkNotificationManagerTest.java b/tests/net/java/com/android/server/connectivity/NetworkNotificationManagerTest.java
index 9580763..d57f225 100644
--- a/tests/net/java/com/android/server/connectivity/NetworkNotificationManagerTest.java
+++ b/tests/net/java/com/android/server/connectivity/NetworkNotificationManagerTest.java
@@ -20,6 +20,7 @@
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.anyInt;
+import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.eq;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.reset;
@@ -40,6 +41,7 @@
import androidx.test.filters.SmallTest;
import androidx.test.runner.AndroidJUnit4;
+import com.android.internal.R;
import com.android.server.connectivity.NetworkNotificationManager.NotificationType;
import org.junit.Before;
@@ -60,12 +62,19 @@
static final NetworkCapabilities CELL_CAPABILITIES = new NetworkCapabilities();
static final NetworkCapabilities WIFI_CAPABILITIES = new NetworkCapabilities();
+ static final NetworkCapabilities VPN_CAPABILITIES = new NetworkCapabilities();
static {
CELL_CAPABILITIES.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR);
CELL_CAPABILITIES.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET);
WIFI_CAPABILITIES.addTransportType(NetworkCapabilities.TRANSPORT_WIFI);
WIFI_CAPABILITIES.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET);
+
+ // Set the underyling network to wifi.
+ VPN_CAPABILITIES.addTransportType(NetworkCapabilities.TRANSPORT_WIFI);
+ VPN_CAPABILITIES.addTransportType(NetworkCapabilities.TRANSPORT_VPN);
+ VPN_CAPABILITIES.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET);
+ VPN_CAPABILITIES.removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN);
}
@Mock Context mCtx;
@@ -75,6 +84,7 @@
@Mock NotificationManager mNotificationManager;
@Mock NetworkAgentInfo mWifiNai;
@Mock NetworkAgentInfo mCellNai;
+ @Mock NetworkAgentInfo mVpnNai;
@Mock NetworkInfo mNetworkInfo;
ArgumentCaptor<Notification> mCaptor;
@@ -88,6 +98,9 @@
mWifiNai.networkInfo = mNetworkInfo;
mCellNai.networkCapabilities = CELL_CAPABILITIES;
mCellNai.networkInfo = mNetworkInfo;
+ mVpnNai.networkCapabilities = VPN_CAPABILITIES;
+ mVpnNai.networkInfo = mNetworkInfo;
+ doReturn(true).when(mVpnNai).isVPN();
when(mCtx.getResources()).thenReturn(mResources);
when(mCtx.getPackageManager()).thenReturn(mPm);
when(mCtx.getApplicationInfo()).thenReturn(new ApplicationInfo());
@@ -97,6 +110,35 @@
mManager = new NetworkNotificationManager(mCtx, mTelephonyManager, mNotificationManager);
}
+ private void verifyTitleByNetwork(final int id, final NetworkAgentInfo nai, final int title) {
+ final String tag = NetworkNotificationManager.tagFor(id);
+ mManager.showNotification(id, PRIVATE_DNS_BROKEN, nai, null, null, true);
+ verify(mNotificationManager, times(1))
+ .notifyAsUser(eq(tag), eq(PRIVATE_DNS_BROKEN.eventId), any(), any());
+ final int transportType = NetworkNotificationManager.approximateTransportType(nai);
+ if (transportType == NetworkCapabilities.TRANSPORT_WIFI) {
+ verify(mResources, times(1)).getString(title, eq(any()));
+ } else {
+ verify(mResources, times(1)).getString(title);
+ }
+ verify(mResources, times(1)).getString(R.string.private_dns_broken_detailed);
+ }
+
+ @Test
+ public void testTitleOfPrivateDnsBroken() {
+ // Test the title of mobile data.
+ verifyTitleByNetwork(100, mCellNai, R.string.mobile_no_internet);
+ reset(mResources);
+
+ // Test the title of wifi.
+ verifyTitleByNetwork(101, mWifiNai, R.string.wifi_no_internet);
+ reset(mResources);
+
+ // Test the title of other networks.
+ verifyTitleByNetwork(102, mVpnNai, R.string.other_networks_no_internet);
+ reset(mResources);
+ }
+
@Test
public void testNotificationsShownAndCleared() {
final int NETWORK_ID_BASE = 100;
diff --git a/tests/net/java/com/android/server/connectivity/PermissionMonitorTest.java b/tests/net/java/com/android/server/connectivity/PermissionMonitorTest.java
index 3fdba6e..39f849c 100644
--- a/tests/net/java/com/android/server/connectivity/PermissionMonitorTest.java
+++ b/tests/net/java/com/android/server/connectivity/PermissionMonitorTest.java
@@ -27,6 +27,7 @@
import static android.content.pm.ApplicationInfo.PRIVATE_FLAG_PRODUCT;
import static android.content.pm.ApplicationInfo.PRIVATE_FLAG_VENDOR;
import static android.content.pm.PackageInfo.REQUESTED_PERMISSION_GRANTED;
+import static android.content.pm.PackageInfo.REQUESTED_PERMISSION_REQUIRED;
import static android.content.pm.PackageManager.GET_PERMISSIONS;
import static android.content.pm.PackageManager.MATCH_ANY_USER;
import static android.os.Process.SYSTEM_UID;
@@ -36,6 +37,7 @@
import static junit.framework.Assert.fail;
+import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
@@ -102,7 +104,6 @@
private static final String MOCK_PACKAGE2 = "appName2";
private static final String SYSTEM_PACKAGE1 = "sysName1";
private static final String SYSTEM_PACKAGE2 = "sysName2";
- private static final String VPN_PACKAGE = "vpnApp";
private static final String PARTITION_SYSTEM = "system";
private static final String PARTITION_OEM = "oem";
private static final String PARTITION_PRODUCT = "product";
@@ -145,28 +146,31 @@
mObserver = observerCaptor.getValue();
}
- private boolean hasBgPermission(String partition, int targetSdkVersion, int uid,
- String... permission) throws Exception {
- final PackageInfo packageInfo = packageInfoWithPermissions(permission, partition);
+ private boolean hasRestrictedNetworkPermission(String partition, int targetSdkVersion, int uid,
+ String... permissions) {
+ final PackageInfo packageInfo =
+ packageInfoWithPermissions(REQUESTED_PERMISSION_GRANTED, permissions, partition);
packageInfo.applicationInfo.targetSdkVersion = targetSdkVersion;
packageInfo.applicationInfo.uid = uid;
- when(mPackageManager.getPackageInfoAsUser(
- eq(MOCK_PACKAGE1), eq(GET_PERMISSIONS), anyInt())).thenReturn(packageInfo);
- when(mPackageManager.getPackagesForUid(anyInt())).thenReturn(new String[] {MOCK_PACKAGE1});
- return mPermissionMonitor.hasUseBackgroundNetworksPermission(uid);
+ return mPermissionMonitor.hasRestrictedNetworkPermission(packageInfo);
}
- private static PackageInfo packageInfoWithPermissions(String[] permissions, String partition) {
+ private static PackageInfo systemPackageInfoWithPermissions(String... permissions) {
+ return packageInfoWithPermissions(
+ REQUESTED_PERMISSION_GRANTED, permissions, PARTITION_SYSTEM);
+ }
+
+ private static PackageInfo vendorPackageInfoWithPermissions(String... permissions) {
+ return packageInfoWithPermissions(
+ REQUESTED_PERMISSION_GRANTED, permissions, PARTITION_VENDOR);
+ }
+
+ private static PackageInfo packageInfoWithPermissions(int permissionsFlags,
+ String[] permissions, String partition) {
int[] requestedPermissionsFlags = new int[permissions.length];
for (int i = 0; i < permissions.length; i++) {
- requestedPermissionsFlags[i] = REQUESTED_PERMISSION_GRANTED;
+ requestedPermissionsFlags[i] = permissionsFlags;
}
- return packageInfoWithPermissions(permissions, partition,
- requestedPermissionsFlags);
- }
-
- private static PackageInfo packageInfoWithPermissions(String[] permissions, String partition,
- int[] requestedPermissionsFlags) {
final PackageInfo packageInfo = new PackageInfo();
packageInfo.requestedPermissions = permissions;
packageInfo.applicationInfo = new ApplicationInfo();
@@ -190,12 +194,10 @@
private static PackageInfo buildPackageInfo(boolean hasSystemPermission, int uid, int userId) {
final PackageInfo pkgInfo;
if (hasSystemPermission) {
- final String[] systemPermissions = new String[]{
- CHANGE_NETWORK_STATE, NETWORK_STACK, CONNECTIVITY_USE_RESTRICTED_NETWORKS
- };
- pkgInfo = packageInfoWithPermissions(systemPermissions, PARTITION_SYSTEM);
+ pkgInfo = systemPackageInfoWithPermissions(
+ CHANGE_NETWORK_STATE, NETWORK_STACK, CONNECTIVITY_USE_RESTRICTED_NETWORKS);
} else {
- pkgInfo = packageInfoWithPermissions(new String[] {}, "");
+ pkgInfo = packageInfoWithPermissions(REQUESTED_PERMISSION_GRANTED, new String[] {}, "");
}
pkgInfo.applicationInfo.uid = UserHandle.getUid(userId, UserHandle.getAppId(uid));
return pkgInfo;
@@ -203,82 +205,154 @@
@Test
public void testHasPermission() {
- PackageInfo app = packageInfoWithPermissions(new String[] {}, PARTITION_SYSTEM);
+ PackageInfo app = systemPackageInfoWithPermissions();
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
- }, PARTITION_SYSTEM);
+ app = systemPackageInfoWithPermissions(CHANGE_NETWORK_STATE, NETWORK_STACK);
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
- }, PARTITION_SYSTEM);
+ app = systemPackageInfoWithPermissions(
+ CONNECTIVITY_USE_RESTRICTED_NETWORKS, CONNECTIVITY_INTERNAL);
assertFalse(mPermissionMonitor.hasPermission(app, CHANGE_NETWORK_STATE));
assertFalse(mPermissionMonitor.hasPermission(app, NETWORK_STACK));
assertTrue(mPermissionMonitor.hasPermission(app, CONNECTIVITY_USE_RESTRICTED_NETWORKS));
assertTrue(mPermissionMonitor.hasPermission(app, CONNECTIVITY_INTERNAL));
+
+ app = packageInfoWithPermissions(REQUESTED_PERMISSION_REQUIRED, new String[] {
+ CONNECTIVITY_USE_RESTRICTED_NETWORKS, CONNECTIVITY_INTERNAL, NETWORK_STACK },
+ 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 = systemPackageInfoWithPermissions(CHANGE_NETWORK_STATE);
+ app.requestedPermissions = null;
+ assertFalse(mPermissionMonitor.hasPermission(app, CHANGE_NETWORK_STATE));
+
+ app = systemPackageInfoWithPermissions(CHANGE_NETWORK_STATE);
+ app.requestedPermissionsFlags = null;
+ assertFalse(mPermissionMonitor.hasPermission(app, CHANGE_NETWORK_STATE));
}
@Test
public void testIsVendorApp() {
- PackageInfo app = packageInfoWithPermissions(new String[] {}, PARTITION_SYSTEM);
+ PackageInfo app = systemPackageInfoWithPermissions();
assertFalse(mPermissionMonitor.isVendorApp(app.applicationInfo));
- app = packageInfoWithPermissions(new String[] {}, PARTITION_OEM);
+ app = packageInfoWithPermissions(REQUESTED_PERMISSION_GRANTED,
+ new String[] {}, PARTITION_OEM);
assertTrue(mPermissionMonitor.isVendorApp(app.applicationInfo));
- app = packageInfoWithPermissions(new String[] {}, PARTITION_PRODUCT);
+ app = packageInfoWithPermissions(REQUESTED_PERMISSION_GRANTED,
+ new String[] {}, PARTITION_PRODUCT);
assertTrue(mPermissionMonitor.isVendorApp(app.applicationInfo));
- app = packageInfoWithPermissions(new String[] {}, PARTITION_VENDOR);
+ app = vendorPackageInfoWithPermissions();
assertTrue(mPermissionMonitor.isVendorApp(app.applicationInfo));
}
@Test
+ public void testHasNetworkPermission() {
+ PackageInfo app = systemPackageInfoWithPermissions();
+ assertFalse(mPermissionMonitor.hasNetworkPermission(app));
+ app = systemPackageInfoWithPermissions(CHANGE_NETWORK_STATE);
+ assertTrue(mPermissionMonitor.hasNetworkPermission(app));
+ app = systemPackageInfoWithPermissions(NETWORK_STACK);
+ assertFalse(mPermissionMonitor.hasNetworkPermission(app));
+ app = systemPackageInfoWithPermissions(CONNECTIVITY_USE_RESTRICTED_NETWORKS);
+ assertFalse(mPermissionMonitor.hasNetworkPermission(app));
+ app = systemPackageInfoWithPermissions(CONNECTIVITY_INTERNAL);
+ assertFalse(mPermissionMonitor.hasNetworkPermission(app));
+ }
+
+ @Test
+ public void testHasRestrictedNetworkPermission() {
+ assertFalse(hasRestrictedNetworkPermission(PARTITION_SYSTEM, VERSION_P, MOCK_UID1));
+ assertFalse(hasRestrictedNetworkPermission(
+ PARTITION_SYSTEM, VERSION_P, MOCK_UID1, CHANGE_NETWORK_STATE));
+ assertTrue(hasRestrictedNetworkPermission(
+ PARTITION_SYSTEM, VERSION_P, MOCK_UID1, NETWORK_STACK));
+ assertFalse(hasRestrictedNetworkPermission(
+ PARTITION_SYSTEM, VERSION_P, MOCK_UID1, CONNECTIVITY_INTERNAL));
+ assertTrue(hasRestrictedNetworkPermission(
+ PARTITION_SYSTEM, VERSION_P, MOCK_UID1, CONNECTIVITY_USE_RESTRICTED_NETWORKS));
+ assertFalse(hasRestrictedNetworkPermission(
+ PARTITION_SYSTEM, VERSION_P, MOCK_UID1, CHANGE_WIFI_STATE));
+
+ assertFalse(hasRestrictedNetworkPermission(PARTITION_SYSTEM, VERSION_Q, MOCK_UID1));
+ assertFalse(hasRestrictedNetworkPermission(
+ PARTITION_SYSTEM, VERSION_Q, MOCK_UID1, CONNECTIVITY_INTERNAL));
+ }
+
+ @Test
+ public void testHasRestrictedNetworkPermissionSystemUid() {
+ doReturn(VERSION_P).when(mPermissionMonitor).getDeviceFirstSdkInt();
+ assertTrue(hasRestrictedNetworkPermission(PARTITION_SYSTEM, VERSION_P, SYSTEM_UID));
+ assertTrue(hasRestrictedNetworkPermission(
+ PARTITION_SYSTEM, VERSION_P, SYSTEM_UID, CONNECTIVITY_INTERNAL));
+ assertTrue(hasRestrictedNetworkPermission(
+ PARTITION_SYSTEM, VERSION_P, SYSTEM_UID, CONNECTIVITY_USE_RESTRICTED_NETWORKS));
+
+ doReturn(VERSION_Q).when(mPermissionMonitor).getDeviceFirstSdkInt();
+ assertFalse(hasRestrictedNetworkPermission(PARTITION_SYSTEM, VERSION_Q, SYSTEM_UID));
+ assertFalse(hasRestrictedNetworkPermission(
+ PARTITION_SYSTEM, VERSION_Q, SYSTEM_UID, CONNECTIVITY_INTERNAL));
+ assertTrue(hasRestrictedNetworkPermission(
+ PARTITION_SYSTEM, VERSION_Q, SYSTEM_UID, CONNECTIVITY_USE_RESTRICTED_NETWORKS));
+ }
+
+ @Test
+ public void testHasRestrictedNetworkPermissionVendorApp() {
+ assertTrue(hasRestrictedNetworkPermission(PARTITION_VENDOR, VERSION_P, MOCK_UID1));
+ assertTrue(hasRestrictedNetworkPermission(
+ PARTITION_VENDOR, VERSION_P, MOCK_UID1, CHANGE_NETWORK_STATE));
+ assertTrue(hasRestrictedNetworkPermission(
+ PARTITION_VENDOR, VERSION_P, MOCK_UID1, NETWORK_STACK));
+ assertTrue(hasRestrictedNetworkPermission(
+ PARTITION_VENDOR, VERSION_P, MOCK_UID1, CONNECTIVITY_INTERNAL));
+ assertTrue(hasRestrictedNetworkPermission(
+ PARTITION_VENDOR, VERSION_P, MOCK_UID1, CONNECTIVITY_USE_RESTRICTED_NETWORKS));
+ assertTrue(hasRestrictedNetworkPermission(
+ PARTITION_VENDOR, VERSION_P, MOCK_UID1, CHANGE_WIFI_STATE));
+
+ assertFalse(hasRestrictedNetworkPermission(PARTITION_VENDOR, VERSION_Q, MOCK_UID1));
+ assertFalse(hasRestrictedNetworkPermission(
+ PARTITION_VENDOR, VERSION_Q, MOCK_UID1, CONNECTIVITY_INTERNAL));
+ assertFalse(hasRestrictedNetworkPermission(
+ PARTITION_VENDOR, VERSION_Q, MOCK_UID1, CHANGE_NETWORK_STATE));
+ }
+
+ private void assertBackgroundPermission(boolean hasPermission, String name, int uid,
+ String... permissions) throws Exception {
+ when(mPackageManager.getPackageInfo(eq(name), anyInt()))
+ .thenReturn(packageInfoWithPermissions(
+ REQUESTED_PERMISSION_GRANTED, permissions, PARTITION_SYSTEM));
+ mPermissionMonitor.onPackageAdded(name, uid);
+ assertEquals(hasPermission, mPermissionMonitor.hasUseBackgroundNetworksPermission(uid));
+ }
+
+ @Test
public void testHasUseBackgroundNetworksPermission() throws Exception {
- assertFalse(hasBgPermission(PARTITION_SYSTEM, VERSION_P, MOCK_UID1));
- assertTrue(hasBgPermission(PARTITION_SYSTEM, VERSION_P, MOCK_UID1, CHANGE_NETWORK_STATE));
- assertTrue(hasBgPermission(PARTITION_SYSTEM, VERSION_P, MOCK_UID1, NETWORK_STACK));
- assertTrue(hasBgPermission(PARTITION_SYSTEM, VERSION_P, MOCK_UID1, CONNECTIVITY_INTERNAL));
- assertTrue(hasBgPermission(PARTITION_SYSTEM, VERSION_P, MOCK_UID1,
- CONNECTIVITY_USE_RESTRICTED_NETWORKS));
- assertFalse(hasBgPermission(PARTITION_SYSTEM, VERSION_P, MOCK_UID1, CHANGE_WIFI_STATE));
+ assertFalse(mPermissionMonitor.hasUseBackgroundNetworksPermission(SYSTEM_UID));
+ assertBackgroundPermission(false, SYSTEM_PACKAGE1, SYSTEM_UID);
+ assertBackgroundPermission(false, SYSTEM_PACKAGE1, SYSTEM_UID, CONNECTIVITY_INTERNAL);
+ assertBackgroundPermission(true, SYSTEM_PACKAGE1, SYSTEM_UID, CHANGE_NETWORK_STATE);
+ assertBackgroundPermission(true, SYSTEM_PACKAGE1, SYSTEM_UID, NETWORK_STACK);
- assertFalse(hasBgPermission(PARTITION_SYSTEM, VERSION_Q, MOCK_UID1));
- assertFalse(hasBgPermission(PARTITION_SYSTEM, VERSION_Q, MOCK_UID1, CHANGE_WIFI_STATE));
- }
+ assertFalse(mPermissionMonitor.hasUseBackgroundNetworksPermission(MOCK_UID1));
+ assertBackgroundPermission(false, MOCK_PACKAGE1, MOCK_UID1);
+ assertBackgroundPermission(true, MOCK_PACKAGE1, MOCK_UID1,
+ CONNECTIVITY_USE_RESTRICTED_NETWORKS);
- @Test
- public void testHasUseBackgroundNetworksPermissionSystemUid() throws Exception {
- doReturn(VERSION_P).when(mPermissionMonitor).getDeviceFirstSdkInt();
- assertTrue(hasBgPermission(PARTITION_SYSTEM, VERSION_P, SYSTEM_UID));
- assertTrue(hasBgPermission(PARTITION_SYSTEM, VERSION_P, SYSTEM_UID, CHANGE_WIFI_STATE));
- assertTrue(hasBgPermission(PARTITION_SYSTEM, VERSION_P, SYSTEM_UID,
- CONNECTIVITY_USE_RESTRICTED_NETWORKS));
-
- doReturn(VERSION_Q).when(mPermissionMonitor).getDeviceFirstSdkInt();
- assertFalse(hasBgPermission(PARTITION_SYSTEM, VERSION_Q, SYSTEM_UID));
- assertFalse(hasBgPermission(PARTITION_SYSTEM, VERSION_Q, SYSTEM_UID, CHANGE_WIFI_STATE));
- assertTrue(hasBgPermission(PARTITION_SYSTEM, VERSION_Q, SYSTEM_UID,
- CONNECTIVITY_USE_RESTRICTED_NETWORKS));
- }
-
- @Test
- public void testHasUseBackgroundNetworksPermissionVendorApp() throws Exception {
- assertTrue(hasBgPermission(PARTITION_VENDOR, VERSION_P, MOCK_UID1));
- assertTrue(hasBgPermission(PARTITION_VENDOR, VERSION_P, MOCK_UID1, CHANGE_NETWORK_STATE));
- assertTrue(hasBgPermission(PARTITION_VENDOR, VERSION_P, MOCK_UID1, NETWORK_STACK));
- assertTrue(hasBgPermission(PARTITION_VENDOR, VERSION_P, MOCK_UID1, CONNECTIVITY_INTERNAL));
- assertTrue(hasBgPermission(PARTITION_VENDOR, VERSION_P, MOCK_UID1,
- CONNECTIVITY_USE_RESTRICTED_NETWORKS));
- assertTrue(hasBgPermission(PARTITION_VENDOR, VERSION_P, MOCK_UID1, CHANGE_WIFI_STATE));
-
- assertFalse(hasBgPermission(PARTITION_VENDOR, VERSION_Q, MOCK_UID1));
- assertFalse(hasBgPermission(PARTITION_VENDOR, VERSION_Q, MOCK_UID1, CHANGE_WIFI_STATE));
+ assertFalse(mPermissionMonitor.hasUseBackgroundNetworksPermission(MOCK_UID2));
+ assertBackgroundPermission(false, MOCK_PACKAGE2, MOCK_UID2);
+ assertBackgroundPermission(false, MOCK_PACKAGE2, MOCK_UID2,
+ CONNECTIVITY_INTERNAL);
+ assertBackgroundPermission(true, MOCK_PACKAGE2, MOCK_UID2, NETWORK_STACK);
}
private class NetdMonitor {
@@ -563,7 +637,8 @@
private PackageInfo setPackagePermissions(String packageName, int uid, String[] permissions)
throws Exception {
- PackageInfo packageInfo = packageInfoWithPermissions(permissions, PARTITION_SYSTEM);
+ PackageInfo packageInfo = packageInfoWithPermissions(
+ REQUESTED_PERMISSION_GRANTED, permissions, PARTITION_SYSTEM);
when(mPackageManager.getPackageInfo(eq(packageName), anyInt())).thenReturn(packageInfo);
when(mPackageManager.getPackagesForUid(eq(uid))).thenReturn(new String[]{packageName});
return packageInfo;
@@ -599,7 +674,7 @@
// Install another package with the same uid and no permissions should not cause the UID to
// lose permissions.
- PackageInfo packageInfo2 = packageInfoWithPermissions(new String[]{}, PARTITION_SYSTEM);
+ PackageInfo packageInfo2 = systemPackageInfoWithPermissions();
when(mPackageManager.getPackageInfo(eq(MOCK_PACKAGE2), anyInt())).thenReturn(packageInfo2);
when(mPackageManager.getPackagesForUid(MOCK_UID1))
.thenReturn(new String[]{MOCK_PACKAGE1, MOCK_PACKAGE2});
@@ -660,8 +735,7 @@
| INetd.PERMISSION_UPDATE_DEVICE_STATS, new int[]{MOCK_UID1});
// Mock another package with the same uid but different permissions.
- PackageInfo packageInfo2 = packageInfoWithPermissions(new String[] {INTERNET},
- PARTITION_SYSTEM);
+ PackageInfo packageInfo2 = systemPackageInfoWithPermissions(INTERNET);
when(mPackageManager.getPackageInfo(eq(MOCK_PACKAGE2), anyInt())).thenReturn(packageInfo2);
when(mPackageManager.getPackagesForUid(MOCK_UID1)).thenReturn(new String[]{
MOCK_PACKAGE2});
diff --git a/tools/aapt2/cmd/Link.cpp b/tools/aapt2/cmd/Link.cpp
index 99a686b..4555caa 100644
--- a/tools/aapt2/cmd/Link.cpp
+++ b/tools/aapt2/cmd/Link.cpp
@@ -1297,7 +1297,8 @@
return false;
}
- proguard::WriteKeepSet(keep_set, &fout, options_.generate_minimal_proguard_rules);
+ proguard::WriteKeepSet(keep_set, &fout, options_.generate_minimal_proguard_rules,
+ options_.no_proguard_location_reference);
fout.Flush();
if (fout.HadError()) {
diff --git a/tools/aapt2/cmd/Link.h b/tools/aapt2/cmd/Link.h
index 56bff8f..4722358 100644
--- a/tools/aapt2/cmd/Link.h
+++ b/tools/aapt2/cmd/Link.h
@@ -56,6 +56,7 @@
bool generate_conditional_proguard_rules = false;
bool generate_minimal_proguard_rules = false;
bool generate_non_final_ids = false;
+ bool no_proguard_location_reference = false;
std::vector<std::string> javadoc_annotations;
Maybe<std::string> private_symbols;
@@ -215,6 +216,9 @@
"Generates R.java without the final modifier. This is implied when\n"
"--static-lib is specified.",
&options_.generate_non_final_ids);
+ AddOptionalSwitch("--no-proguard-location-reference",
+ "Keep proguard rules files from having a reference to the source file",
+ &options_.no_proguard_location_reference);
AddOptionalFlag("--stable-ids", "File containing a list of name to ID mapping.",
&stable_id_file_path_);
AddOptionalFlag("--emit-ids",
@@ -264,8 +268,8 @@
&options_.keep_raw_values);
AddOptionalFlag("--no-compress-regex",
"Do not compress extensions matching the regular expression. Remember to\n"
- " use the '$' symbol for end of line. Uses a non case-sensitive\n"
- " ECMAScript regular expression grammar.",
+ "use the '$' symbol for end of line. Uses a case-sensitive ECMAScript"
+ "regular expression grammar.",
&no_compress_regex);
AddOptionalSwitch("--warn-manifest-validation",
"Treat manifest validation errors as warnings.",
diff --git a/tools/aapt2/cmd/Util.cpp b/tools/aapt2/cmd/Util.cpp
index e2c65ba7..7214f1a 100644
--- a/tools/aapt2/cmd/Util.cpp
+++ b/tools/aapt2/cmd/Util.cpp
@@ -436,9 +436,9 @@
}
std::regex GetRegularExpression(const std::string &input) {
- // Standard ECMAScript grammar plus case insensitive.
+ // Standard ECMAScript grammar.
std::regex case_insensitive(
- input, std::regex_constants::icase | std::regex_constants::ECMAScript);
+ input, std::regex_constants::ECMAScript);
return case_insensitive;
}
diff --git a/tools/aapt2/cmd/Util_test.cpp b/tools/aapt2/cmd/Util_test.cpp
index 7e49261..ac1f981 100644
--- a/tools/aapt2/cmd/Util_test.cpp
+++ b/tools/aapt2/cmd/Util_test.cpp
@@ -383,7 +383,7 @@
EXPECT_NE(*adjusted_contraints[1].configs.begin(), ConfigDescription::DefaultConfig());
}
-TEST(UtilTest, RegularExperssions) {
+TEST (UtilTest, RegularExperssionsSimple) {
std::string valid(".bc$");
std::regex expression = GetRegularExpression(valid);
EXPECT_TRUE(std::regex_search("file.abc", expression));
@@ -391,4 +391,24 @@
EXPECT_FALSE(std::regex_search("abc.zip", expression));
}
+TEST (UtilTest, RegularExpressionComplex) {
+ std::string valid("\\.(d|D)(e|E)(x|X)$");
+ std::regex expression = GetRegularExpression(valid);
+ EXPECT_TRUE(std::regex_search("file.dex", expression));
+ EXPECT_TRUE(std::regex_search("file.DEX", expression));
+ EXPECT_TRUE(std::regex_search("file.dEx", expression));
+ EXPECT_FALSE(std::regex_search("file.dexx", expression));
+ EXPECT_FALSE(std::regex_search("dex.file", expression));
+ EXPECT_FALSE(std::regex_search("file.adex", expression));
+}
+
+TEST (UtilTest, RegularExpressionNonEnglish) {
+ std::string valid("\\.(k|K)(o|O)(ń|Ń)(c|C)(ó|Ó)(w|W)(k|K)(a|A)$");
+ std::regex expression = GetRegularExpression(valid);
+ EXPECT_TRUE(std::regex_search("file.końcówka", expression));
+ EXPECT_TRUE(std::regex_search("file.KOŃCÓWKA", expression));
+ EXPECT_TRUE(std::regex_search("file.kOńcÓwkA", expression));
+ EXPECT_FALSE(std::regex_search("file.koncowka", expression));
+}
+
} // namespace aapt
diff --git a/tools/aapt2/java/JavaClassGenerator.cpp b/tools/aapt2/java/JavaClassGenerator.cpp
index 31d205e..6c3bcf0 100644
--- a/tools/aapt2/java/JavaClassGenerator.cpp
+++ b/tools/aapt2/java/JavaClassGenerator.cpp
@@ -428,7 +428,7 @@
out_rewrite_method->AppendStatement(
StringPrintf(" if ((styleable.%s[i] & 0xff000000) == 0) {", array_field_name.data()));
out_rewrite_method->AppendStatement(
- StringPrintf(" styleable.%s[i] = (styleable.%s[i] & 0x00ffffff) | (p << 24);",
+ StringPrintf(" styleable.%s[i] = (styleable.%s[i] & 0x00ffffff) | packageIdBits;",
array_field_name.data(), array_field_name.data()));
out_rewrite_method->AppendStatement(" }");
out_rewrite_method->AppendStatement("}");
@@ -487,9 +487,9 @@
if (out_rewrite_method != nullptr) {
const StringPiece& type_str = to_string(name.type);
- out_rewrite_method->AppendStatement(StringPrintf("%s.%s = (%s.%s & 0x00ffffff) | (p << 24);",
- type_str.data(), field_name.data(),
- type_str.data(), field_name.data()));
+ out_rewrite_method->AppendStatement(
+ StringPrintf("%s.%s = (%s.%s & 0x00ffffff) | packageIdBits;", type_str.data(),
+ field_name.data(), type_str.data(), field_name.data()));
}
}
@@ -599,6 +599,7 @@
rewrite_method->AppendStatement(
StringPrintf("%s.R.onResourcesLoaded(p);", package_to_callback.data()));
}
+ rewrite_method->AppendStatement("final int packageIdBits = p << 24;");
}
for (const auto& package : table_->packages) {
diff --git a/tools/aapt2/java/JavaClassGenerator_test.cpp b/tools/aapt2/java/JavaClassGenerator_test.cpp
index 4f51fc4..1e1fe47 100644
--- a/tools/aapt2/java/JavaClassGenerator_test.cpp
+++ b/tools/aapt2/java/JavaClassGenerator_test.cpp
@@ -522,9 +522,15 @@
ASSERT_TRUE(generator.Generate("android", &out));
out.Flush();
- EXPECT_THAT(output, HasSubstr("void onResourcesLoaded"));
- EXPECT_THAT(output, HasSubstr("com.foo.R.onResourcesLoaded"));
- EXPECT_THAT(output, HasSubstr("com.boo.R.onResourcesLoaded"));
+ EXPECT_THAT(output, HasSubstr(
+ R"( public static void onResourcesLoaded(int p) {
+ com.foo.R.onResourcesLoaded(p);
+ com.boo.R.onResourcesLoaded(p);
+ final int packageIdBits = p << 24;
+ attr.foo = (attr.foo & 0x00ffffff) | packageIdBits;
+ id.foo = (id.foo & 0x00ffffff) | packageIdBits;
+ style.foo = (style.foo & 0x00ffffff) | packageIdBits;
+ })"));
}
TEST(JavaClassGeneratorTest, OnlyGenerateRText) {
diff --git a/tools/aapt2/java/ProguardRules.cpp b/tools/aapt2/java/ProguardRules.cpp
index 806f4e3..b06607e 100644
--- a/tools/aapt2/java/ProguardRules.cpp
+++ b/tools/aapt2/java/ProguardRules.cpp
@@ -393,11 +393,15 @@
return true;
}
-void WriteKeepSet(const KeepSet& keep_set, OutputStream* out, bool minimal_keep) {
+void WriteKeepSet(const KeepSet& keep_set, OutputStream* out, bool minimal_keep,
+ bool no_location_reference) {
+
Printer printer(out);
for (const auto& entry : keep_set.manifest_class_set_) {
- for (const UsageLocation& location : entry.second) {
- printer.Print("# Referenced at ").Println(location.source.to_string());
+ if (!no_location_reference) {
+ for (const UsageLocation& location : entry.second) {
+ printer.Print("# Referenced at ").Println(location.source.to_string());
+ }
}
printer.Print("-keep class ").Print(entry.first).Println(" { <init>(); }");
}
@@ -414,7 +418,9 @@
if (can_be_conditional) {
for (const UsageLocation& location : locations) {
- printer.Print("# Referenced at ").Println(location.source.to_string());
+ if (!no_location_reference) {
+ printer.Print("# Referenced at ").Println(location.source.to_string());
+ }
printer.Print("-if class **.R$layout { int ")
.Print(JavaClassGenerator::TransformToFieldName(location.name.entry))
.Println("; }");
@@ -424,8 +430,10 @@
printer.Println("); }");
}
} else {
- for (const UsageLocation& location : entry.second) {
- printer.Print("# Referenced at ").Println(location.source.to_string());
+ if (!no_location_reference) {
+ for (const UsageLocation& location : entry.second) {
+ printer.Print("# Referenced at ").Println(location.source.to_string());
+ }
}
printer.Print("-keep class ").Print(entry.first.name).Print(" { <init>(");
@@ -436,8 +444,10 @@
}
for (const auto& entry : keep_set.method_set_) {
- for (const UsageLocation& location : entry.second) {
- printer.Print("# Referenced at ").Println(location.source.to_string());
+ if (!no_location_reference) {
+ for (const UsageLocation& location : entry.second) {
+ printer.Print("# Referenced at ").Println(location.source.to_string());
+ }
}
printer.Print("-keepclassmembers class * { *** ").Print(entry.first.name)
.Print("(").Print(entry.first.signature).Println("); }");
diff --git a/tools/aapt2/java/ProguardRules.h b/tools/aapt2/java/ProguardRules.h
index b15df59..a01b64d 100644
--- a/tools/aapt2/java/ProguardRules.h
+++ b/tools/aapt2/java/ProguardRules.h
@@ -70,7 +70,8 @@
}
private:
- friend void WriteKeepSet(const KeepSet& keep_set, io::OutputStream* out, bool minimal_keep);
+ friend void WriteKeepSet(const KeepSet& keep_set, io::OutputStream* out, bool minimal_keep,
+ bool no_location_reference);
friend bool CollectLocations(const UsageLocation& location, const KeepSet& keep_set,
std::set<UsageLocation>* locations);
@@ -89,7 +90,8 @@
bool CollectResourceReferences(IAaptContext* context, ResourceTable* table, KeepSet* keep_set);
-void WriteKeepSet(const KeepSet& keep_set, io::OutputStream* out, bool minimal_keep);
+void WriteKeepSet(const KeepSet& keep_set, io::OutputStream* out, bool minimal_keep,
+ bool no_location_reference);
bool CollectLocations(const UsageLocation& location, const KeepSet& keep_set,
std::set<UsageLocation>* locations);
diff --git a/tools/aapt2/java/ProguardRules_test.cpp b/tools/aapt2/java/ProguardRules_test.cpp
index 25b55ab..8720597 100644
--- a/tools/aapt2/java/ProguardRules_test.cpp
+++ b/tools/aapt2/java/ProguardRules_test.cpp
@@ -30,7 +30,7 @@
std::string GetKeepSetString(const proguard::KeepSet& set, bool minimal_rules) {
std::string out;
StringOutputStream sout(&out);
- proguard::WriteKeepSet(set, &sout, minimal_rules);
+ proguard::WriteKeepSet(set, &sout, minimal_rules, false);
sout.Flush();
return out;
}
diff --git a/tools/processors/unsupportedappusage/src/android/processor/unsupportedappusage/SourcePosition.java b/tools/processors/unsupportedappusage/src/android/processor/unsupportedappusage/SourcePosition.java
new file mode 100644
index 0000000..4ae093c
--- /dev/null
+++ b/tools/processors/unsupportedappusage/src/android/processor/unsupportedappusage/SourcePosition.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2019 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;
+
+/**
+ * Represents a source position within a source file
+ */
+public class SourcePosition {
+ public final String filename;
+ public final int startLine;
+ public final int startCol;
+ public final int endLine;
+ public final int endCol;
+
+ public SourcePosition(String filename, int startLine, int startCol, int endLine, int endCol) {
+ this.filename = filename;
+ this.startLine = startLine;
+ this.startCol = startCol;
+ this.endLine = endLine;
+ this.endCol = endCol;
+ }
+}
diff --git a/tools/processors/unsupportedappusage/src/android/processor/unsupportedappusage/UnsupportedAppUsageProcessor.java b/tools/processors/unsupportedappusage/src/android/processor/unsupportedappusage/UnsupportedAppUsageProcessor.java
index 5bb956a..ca2c275 100644
--- a/tools/processors/unsupportedappusage/src/android/processor/unsupportedappusage/UnsupportedAppUsageProcessor.java
+++ b/tools/processors/unsupportedappusage/src/android/processor/unsupportedappusage/UnsupportedAppUsageProcessor.java
@@ -43,6 +43,7 @@
import javax.lang.model.element.Element;
import javax.lang.model.element.ExecutableElement;
import javax.lang.model.element.TypeElement;
+import javax.tools.Diagnostic;
/**
* Annotation processor for {@link UnsupportedAppUsage} annotations.
@@ -68,6 +69,7 @@
private static final ImmutableSet<String> SUPPORTED_ANNOTATION_NAMES =
SUPPORTED_ANNOTATIONS.stream().map(annotation -> annotation.getCanonicalName()).collect(
ImmutableSet.toImmutableSet());
+ private static final String OVERRIDE_SOURCE_POSITION_PROPERTY = "overrideSourcePosition";
@Override
public SourceVersion getSupportedSourceVersion() {
@@ -126,6 +128,9 @@
StringBuilder sb = new StringBuilder();
for (Map.Entry<? extends ExecutableElement, ? extends AnnotationValue> e
: annotation.getElementValues().entrySet()) {
+ if (e.getKey().getSimpleName().toString().equals(OVERRIDE_SOURCE_POSITION_PROPERTY)) {
+ continue;
+ }
if (sb.length() > 0) {
sb.append("&");
}
@@ -136,6 +141,34 @@
return sb.toString();
}
+ private SourcePosition getSourcePositionOverride(
+ Element annotatedElement, AnnotationMirror annotation) {
+ for (Map.Entry<? extends ExecutableElement, ? extends AnnotationValue> e
+ : annotation.getElementValues().entrySet()) {
+ if (e.getKey().getSimpleName().toString().equals(OVERRIDE_SOURCE_POSITION_PROPERTY)) {
+ String[] position = e.getValue().getValue().toString().split(":");
+ if (position.length != 5) {
+ processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR, String.format(
+ "Expected %s to have format file:startLine:startCol:endLine:endCol",
+ OVERRIDE_SOURCE_POSITION_PROPERTY), annotatedElement, annotation);
+ return null;
+ }
+ try {
+ return new SourcePosition(position[0], Integer.parseInt(position[1]),
+ Integer.parseInt(position[2]), Integer.parseInt(position[3]),
+ Integer.parseInt(position[4]));
+ } catch (NumberFormatException nfe) {
+ processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR, String.format(
+ "Expected %s to have format file:startLine:startCol:endLine:endCol; "
+ + "error parsing integer: %s", OVERRIDE_SOURCE_POSITION_PROPERTY,
+ nfe.getMessage()), annotatedElement, annotation);
+ return null;
+ }
+ }
+ }
+ return null;
+ }
+
/**
* Maps an annotated element to the source position of the @UnsupportedAppUsage annotation
* attached to it. It returns CSV in the format:
@@ -152,16 +185,25 @@
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;
+ SourcePosition position = getSourcePositionOverride(annotatedElement, unsupportedAppUsage);
+ if (position == null) {
+ Pair<JCTree, JCTree.JCCompilationUnit> pair =
+ javacElem.getTreeAndTopLevel(annotatedElement, unsupportedAppUsage, null);
+ Position.LineMap lines = pair.snd.lineMap;
+ position = new SourcePosition(
+ 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)));
+ }
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)),
+ position.filename,
+ position.startLine,
+ position.startCol,
+ position.endLine,
+ position.endCol,
encodeAnnotationProperties(unsupportedAppUsage));
}
diff --git a/tools/processors/unsupportedappusage/test/Android.bp b/tools/processors/unsupportedappusage/test/Android.bp
index 49ea3d4..e10fd47 100644
--- a/tools/processors/unsupportedappusage/test/Android.bp
+++ b/tools/processors/unsupportedappusage/test/Android.bp
@@ -18,7 +18,7 @@
srcs: ["src/**/*.java"],
static_libs: [
- "libjavac",
+ "compile-testing-prebuilt",
"unsupportedappusage-annotation-processor-lib",
"truth-host-prebuilt",
"mockito-host",
diff --git a/tools/processors/unsupportedappusage/test/src/android/processor/unsupportedappusage/UnsupportedAppUsageProcessorTest.java b/tools/processors/unsupportedappusage/test/src/android/processor/unsupportedappusage/UnsupportedAppUsageProcessorTest.java
index 012e88f..75158ee 100644
--- a/tools/processors/unsupportedappusage/test/src/android/processor/unsupportedappusage/UnsupportedAppUsageProcessorTest.java
+++ b/tools/processors/unsupportedappusage/test/src/android/processor/unsupportedappusage/UnsupportedAppUsageProcessorTest.java
@@ -18,61 +18,67 @@
import static com.google.common.truth.Truth.assertThat;
-import com.android.javac.Javac;
+import com.google.testing.compile.Compilation;
+import com.google.testing.compile.CompilationSubject;
+import com.google.testing.compile.Compiler;
+import com.google.testing.compile.JavaFileObjects;
-import com.google.common.base.Joiner;
-
-import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
import java.util.Map;
+import java.util.Optional;
+
+import javax.tools.JavaFileObject;
+import javax.tools.StandardLocation;
public class UnsupportedAppUsageProcessorTest {
- private Javac mJavac;
+ private static final JavaFileObject ANNOTATION = JavaFileObjects.forSourceLines(
+ "dalvik.dalvik.annotation.compat.UnsupportedAppUsage",
+ "package dalvik.annotation.compat;",
+ "public @interface UnsupportedAppUsage {",
+ " String expectedSignature() default \"\";\n",
+ " String someProperty() default \"\";",
+ " String overrideSourcePosition() default \"\";",
+ "}");
- @Before
- public void setup() throws IOException {
- mJavac = new Javac();
- mJavac.addSource("dalvik.annotation.compat.UnsupportedAppUsage", Joiner.on('\n').join(
- "package dalvik.annotation.compat;",
- "public @interface UnsupportedAppUsage {",
- " String expectedSignature() default \"\";\n",
- " String someProperty() default \"\";",
- "}"));
- }
+ private CsvReader compileAndReadCsv(JavaFileObject source) throws IOException {
+ Compilation compilation =
+ Compiler.javac().withProcessors(new UnsupportedAppUsageProcessor())
+ .compile(ANNOTATION, source);
+ CompilationSubject.assertThat(compilation).succeeded();
+ Optional<JavaFileObject> csv = compilation.generatedFile(StandardLocation.CLASS_OUTPUT,
+ "unsupportedappusage/unsupportedappusage_index.csv");
+ assertThat(csv.isPresent()).isTrue();
- private CsvReader compileAndReadCsv() throws IOException {
- mJavac.compileWithAnnotationProcessor(new UnsupportedAppUsageProcessor());
- return new CsvReader(
- mJavac.getOutputFile("unsupportedappusage/unsupportedappusage_index.csv"));
+ return new CsvReader(csv.get().openInputStream());
}
@Test
public void testSignatureFormat() throws Exception {
- mJavac.addSource("a.b.Class", Joiner.on('\n').join(
+ JavaFileObject src = JavaFileObjects.forSourceLines("a.b.Class",
"package a.b;",
"import dalvik.annotation.compat.UnsupportedAppUsage;",
"public class Class {",
" @UnsupportedAppUsage",
" public void method() {}",
- "}"));
- assertThat(compileAndReadCsv().getContents().get(0)).containsEntry(
+ "}");
+ assertThat(compileAndReadCsv(src).getContents().get(0)).containsEntry(
"signature", "La/b/Class;->method()V"
);
}
@Test
public void testSourcePosition() throws Exception {
- mJavac.addSource("a.b.Class", Joiner.on('\n').join(
+ JavaFileObject src = JavaFileObjects.forSourceLines("a.b.Class",
"package a.b;", // 1
"import dalvik.annotation.compat.UnsupportedAppUsage;", // 2
"public class Class {", // 3
" @UnsupportedAppUsage", // 4
" public void method() {}", // 5
- "}"));
- Map<String, String> row = compileAndReadCsv().getContents().get(0);
+ "}");
+ Map<String, String> row = compileAndReadCsv(src).getContents().get(0);
assertThat(row).containsEntry("startline", "4");
assertThat(row).containsEntry("startcol", "3");
assertThat(row).containsEntry("endline", "4");
@@ -81,16 +87,68 @@
@Test
public void testAnnotationProperties() throws Exception {
- mJavac.addSource("a.b.Class", Joiner.on('\n').join(
+ JavaFileObject src = JavaFileObjects.forSourceLines("a.b.Class",
"package a.b;", // 1
"import dalvik.annotation.compat.UnsupportedAppUsage;", // 2
"public class Class {", // 3
" @UnsupportedAppUsage(someProperty=\"value\")", // 4
" public void method() {}", // 5
- "}"));
- assertThat(compileAndReadCsv().getContents().get(0)).containsEntry(
+ "}");
+ assertThat(compileAndReadCsv(src).getContents().get(0)).containsEntry(
"properties", "someProperty=%22value%22");
}
+ @Test
+ public void testSourcePositionOverride() throws Exception {
+ JavaFileObject src = JavaFileObjects.forSourceLines("a.b.Class",
+ "package a.b;", // 1
+ "import dalvik.annotation.compat.UnsupportedAppUsage;", // 2
+ "public class Class {", // 3
+ " @UnsupportedAppUsage(overrideSourcePosition=\"otherfile.aidl:30:10:31:20\")",
+ " public void method() {}", // 5
+ "}");
+ Map<String, String> row = compileAndReadCsv(src).getContents().get(0);
+ assertThat(row).containsEntry("file", "otherfile.aidl");
+ assertThat(row).containsEntry("startline", "30");
+ assertThat(row).containsEntry("startcol", "10");
+ assertThat(row).containsEntry("endline", "31");
+ assertThat(row).containsEntry("endcol", "20");
+ assertThat(row).containsEntry("properties", "");
+ }
+
+ @Test
+ public void testSourcePositionOverrideWrongFormat() throws Exception {
+ JavaFileObject src = JavaFileObjects.forSourceLines("a.b.Class",
+ "package a.b;", // 1
+ "import dalvik.annotation.compat.UnsupportedAppUsage;", // 2
+ "public class Class {", // 3
+ " @UnsupportedAppUsage(overrideSourcePosition=\"invalid\")", // 4
+ " public void method() {}", // 5
+ "}");
+ Compilation compilation =
+ Compiler.javac().withProcessors(new UnsupportedAppUsageProcessor())
+ .compile(ANNOTATION, src);
+ CompilationSubject.assertThat(compilation).failed();
+ CompilationSubject.assertThat(compilation).hadErrorContaining(
+ "Expected overrideSourcePosition to have format "
+ + "file:startLine:startCol:endLine:endCol").inFile(src).onLine(4);
+ }
+
+ @Test
+ public void testSourcePositionOverrideInvalidInt() throws Exception {
+ JavaFileObject src = JavaFileObjects.forSourceLines("a.b.Class",
+ "package a.b;", // 1
+ "import dalvik.annotation.compat.UnsupportedAppUsage;", // 2
+ "public class Class {", // 3
+ " @UnsupportedAppUsage(overrideSourcePosition=\"otherfile.aidl:a:b:c:d\")", // 4
+ " public void method() {}", // 5
+ "}");
+ Compilation compilation =
+ Compiler.javac().withProcessors(new UnsupportedAppUsageProcessor())
+ .compile(ANNOTATION, src);
+ CompilationSubject.assertThat(compilation).failed();
+ CompilationSubject.assertThat(compilation).hadErrorContaining(
+ "error parsing integer").inFile(src).onLine(4);
+ }
}
diff --git a/tools/stats_log_api_gen/Android.bp b/tools/stats_log_api_gen/Android.bp
index c08f9b0..7733761 100644
--- a/tools/stats_log_api_gen/Android.bp
+++ b/tools/stats_log_api_gen/Android.bp
@@ -21,9 +21,13 @@
name: "stats-log-api-gen",
srcs: [
"Collation.cpp",
+ "java_writer.cpp",
+ "java_writer_q.cpp",
"main.cpp",
+ "utils.cpp",
],
cflags: [
+ "-DSTATS_SCHEMA_LEGACY",
"-Wall",
"-Werror",
],
diff --git a/tools/stats_log_api_gen/java_writer.cpp b/tools/stats_log_api_gen/java_writer.cpp
new file mode 100644
index 0000000..4899fbd
--- /dev/null
+++ b/tools/stats_log_api_gen/java_writer.cpp
@@ -0,0 +1,286 @@
+/*
+ * Copyright (C) 2019, 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.
+ */
+
+#include "java_writer.h"
+#include "java_writer_q.h"
+#include "utils.h"
+
+namespace android {
+namespace stats_log_api_gen {
+
+static int write_java_q_logger_class(
+ FILE* out,
+ const map<vector<java_type_t>, set<string>>& signatures_to_modules,
+ const AtomDecl &attributionDecl,
+ const string& moduleName
+ ) {
+ fprintf(out, "\n");
+ fprintf(out, " // Write logging helper methods for statsd in Q and earlier.\n");
+ fprintf(out, " private static class QLogger {\n");
+
+ write_java_q_logging_constants(out, " ");
+
+ // Print Q write methods.
+ fprintf(out, "\n");
+ fprintf(out, " // Write methods.\n");
+ write_java_methods_q_schema(
+ out, signatures_to_modules, attributionDecl, moduleName, " ");
+
+ fprintf(out, " }\n");
+ return 0;
+}
+
+
+static int write_java_methods(
+ FILE* out,
+ const map<vector<java_type_t>, set<string>>& signatures_to_modules,
+ const AtomDecl &attributionDecl,
+ const string& moduleName
+ ) {
+ for (auto signature_to_modules_it = signatures_to_modules.begin();
+ signature_to_modules_it != signatures_to_modules.end(); signature_to_modules_it++) {
+ // Skip if this signature is not needed for the module.
+ if (!signature_needed_for_module(signature_to_modules_it->second, moduleName)) {
+ continue;
+ }
+
+ // Print method signature.
+ if (DEFAULT_MODULE_NAME == moduleName) {
+ fprintf(out, " /** @hide */\n");
+ }
+ fprintf(out, " public static void write(int code");
+ vector<java_type_t> signature = signature_to_modules_it->first;
+ int argIndex = 1;
+ for (vector<java_type_t>::const_iterator arg = signature.begin();
+ arg != signature.end(); arg++) {
+ if (*arg == JAVA_TYPE_ATTRIBUTION_CHAIN) {
+ for (auto chainField : attributionDecl.fields) {
+ fprintf(out, ", %s[] %s",
+ java_type_name(chainField.javaType), chainField.name.c_str());
+ }
+ } else if (*arg == JAVA_TYPE_KEY_VALUE_PAIR) {
+ fprintf(out, ", SparseArray<Object> valueMap");
+ } else {
+ fprintf(out, ", %s arg%d", java_type_name(*arg), argIndex);
+ }
+ argIndex++;
+ }
+ fprintf(out, ") {\n");
+
+ // Print method body.
+ string indent("");
+ if (DEFAULT_MODULE_NAME != moduleName) {
+ fprintf(out, " if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {\n");
+ indent = " ";
+ }
+
+ // Start StatsEvent.Builder.
+ fprintf(out, "%s final StatsEvent.Builder builder = StatsEvent.newBuilder();\n",
+ indent.c_str());
+
+ // Write atom code.
+ fprintf(out, "%s builder.setAtomId(code);\n", indent.c_str());
+
+ // Write the args.
+ argIndex = 1;
+ for (vector<java_type_t>::const_iterator arg = signature.begin();
+ arg != signature.end(); arg++) {
+ switch (*arg) {
+ case JAVA_TYPE_BOOLEAN:
+ fprintf(out, "%s builder.writeBoolean(arg%d);\n", indent.c_str(), argIndex);
+ break;
+ case JAVA_TYPE_INT:
+ case JAVA_TYPE_ENUM:
+ fprintf(out, "%s builder.writeInt(arg%d);\n", indent.c_str(), argIndex);
+ break;
+ case JAVA_TYPE_FLOAT:
+ fprintf(out, "%s builder.writeFloat(arg%d);\n", indent.c_str(), argIndex);
+ break;
+ case JAVA_TYPE_LONG:
+ fprintf(out, "%s builder.writeLong(arg%d);\n", indent.c_str(), argIndex);
+ break;
+ case JAVA_TYPE_STRING:
+ fprintf(out, "%s builder.writeString(arg%d);\n", indent.c_str(), argIndex);
+ break;
+ case JAVA_TYPE_BYTE_ARRAY:
+ fprintf(out, "%s builder.writeByteArray(arg%d);\n",
+ indent.c_str(), argIndex);
+ break;
+ case JAVA_TYPE_ATTRIBUTION_CHAIN:
+ {
+ const char* uidName = attributionDecl.fields.front().name.c_str();
+ const char* tagName = attributionDecl.fields.back().name.c_str();
+
+ fprintf(out, "%s builder.writeAttributionChain(%s, %s);\n",
+ indent.c_str(), uidName, tagName);
+ break;
+ }
+ case JAVA_TYPE_KEY_VALUE_PAIR:
+ fprintf(out, "\n");
+ fprintf(out,
+ "%s // Write KeyValuePairs.\n", indent.c_str());
+ fprintf(out,
+ "%s final int count = valueMap.size();\n", indent.c_str());
+ fprintf(out,
+ "%s final SparseIntArray intMap = new SparseIntArray();\n",
+ indent.c_str());
+ fprintf(out,
+ "%s final SparseLongArray longMap = new SparseLongArray();\n",
+ indent.c_str());
+ fprintf(out,
+ "%s final SparseArray<String> stringMap = new SparseArray<>();\n",
+ indent.c_str());
+ fprintf(out,
+ "%s final SparseArray<Float> floatMap = new SparseArray<>();\n",
+ indent.c_str());
+ fprintf(out,
+ "%s for (int i = 0; i < count; i++) {\n", indent.c_str());
+ fprintf(out,
+ "%s final int key = valueMap.keyAt(i);\n", indent.c_str());
+ fprintf(out,
+ "%s final Object value = valueMap.valueAt(i);\n",
+ indent.c_str());
+ fprintf(out,
+ "%s if (value instanceof Integer) {\n", indent.c_str());
+ fprintf(out,
+ "%s intMap.put(key, (Integer) value);\n", indent.c_str());
+ fprintf(out,
+ "%s } else if (value instanceof Long) {\n", indent.c_str());
+ fprintf(out,
+ "%s longMap.put(key, (Long) value);\n", indent.c_str());
+ fprintf(out,
+ "%s } else if (value instanceof String) {\n", indent.c_str());
+ fprintf(out,
+ "%s stringMap.put(key, (String) value);\n", indent.c_str());
+ fprintf(out,
+ "%s } else if (value instanceof Float) {\n", indent.c_str());
+ fprintf(out,
+ "%s floatMap.put(key, (Float) value);\n", indent.c_str());
+ fprintf(out,
+ "%s }\n", indent.c_str());
+ fprintf(out,
+ "%s }\n", indent.c_str());
+ fprintf(out,
+ "%s builder.writeKeyValuePairs("
+ "intMap, longMap, stringMap, floatMap);\n", indent.c_str());
+ break;
+ default:
+ // Unsupported types: OBJECT, DOUBLE.
+ fprintf(stderr, "Encountered unsupported type.");
+ return 1;
+ }
+ argIndex++;
+ }
+
+ fprintf(out, "\n");
+ fprintf(out, "%s StatsLog.write(builder.build());\n", indent.c_str());
+
+ // Add support for writing using Q schema if this is not the default module.
+ if (DEFAULT_MODULE_NAME != moduleName) {
+ fprintf(out, " } else {\n");
+ fprintf(out, " QLogger.write(code");
+ argIndex = 1;
+ for (vector<java_type_t>::const_iterator arg = signature.begin();
+ arg != signature.end(); arg++) {
+ if (*arg == JAVA_TYPE_ATTRIBUTION_CHAIN) {
+ const char* uidName = attributionDecl.fields.front().name.c_str();
+ const char* tagName = attributionDecl.fields.back().name.c_str();
+ fprintf(out, ", %s, %s", uidName, tagName);
+ } else if (*arg == JAVA_TYPE_KEY_VALUE_PAIR) {
+ // Module logging does not yet support key value pair.
+ fprintf(stderr, "Module logging does not yet support key value pair.\n");
+ return 1;
+ } else {
+ fprintf(out, ", arg%d", argIndex);
+ }
+ argIndex++;
+ }
+ fprintf(out, ");\n");
+ fprintf(out, " }\n"); // if
+ }
+
+ fprintf(out, " }\n"); // method
+ fprintf(out, "\n");
+ }
+ return 0;
+
+}
+
+int write_stats_log_java(FILE* out, const Atoms& atoms, const AtomDecl &attributionDecl,
+ const string& moduleName, const string& javaClass,
+ const string& javaPackage) {
+ // Print prelude
+ fprintf(out, "// This file is autogenerated\n");
+ fprintf(out, "\n");
+ fprintf(out, "package %s;\n", javaPackage.c_str());
+ fprintf(out, "\n");
+ fprintf(out, "\n");
+ fprintf(out, "import android.os.Build;\n");
+ fprintf(out, "import android.os.SystemClock;\n");
+
+ if (DEFAULT_MODULE_NAME == moduleName) {
+ // Mainline modules don't use WorkSource logging.
+ fprintf(out, "import android.os.WorkSource;\n");
+
+ // SparseArray is used for writing KeyValuePairs; not supported for Mainline modules.
+ fprintf(out, "import android.util.SparseArray;\n");
+ fprintf(out, "import android.util.SparseIntArray;\n");
+ fprintf(out, "import android.util.SparseLongArray;\n");
+ }
+
+ fprintf(out, "import android.util.StatsEvent;\n");
+ fprintf(out, "import android.util.StatsLog;\n");
+
+ if (DEFAULT_MODULE_NAME == moduleName) {
+ // List is used for WorkSource writing. Only needed for default module.
+ fprintf(out, "\n");
+ fprintf(out, "import java.util.List;\n");
+ }
+
+ fprintf(out, "\n");
+ fprintf(out, "\n");
+ fprintf(out, "/**\n");
+ fprintf(out, " * Utility class for logging statistics events.\n");
+ if (DEFAULT_MODULE_NAME == moduleName) {
+ fprintf(out, " * @hide\n");
+ }
+ fprintf(out, " */\n");
+ fprintf(out, "public class %s {\n", javaClass.c_str());
+
+ write_java_atom_codes(out, atoms, moduleName);
+ write_java_enum_values(out, atoms, moduleName);
+
+ int errors = 0;
+
+ // Print write methods.
+ fprintf(out, " // Write methods\n");
+ errors += write_java_methods(out, atoms.signatures_to_modules, attributionDecl, moduleName);
+ errors += write_java_non_chained_methods(
+ out, atoms.non_chained_signatures_to_modules, moduleName);
+ if (DEFAULT_MODULE_NAME == moduleName) {
+ errors += write_java_work_source_methods(out, atoms.signatures_to_modules, moduleName);
+ } else {
+ errors += write_java_q_logger_class(
+ out, atoms.signatures_to_modules, attributionDecl, moduleName);
+ }
+
+ fprintf(out, "}\n");
+
+ return errors;
+}
+
+} // namespace stats_log_api_gen
+} // namespace android
diff --git a/tools/stats_log_api_gen/java_writer.h b/tools/stats_log_api_gen/java_writer.h
new file mode 100644
index 0000000..031266b
--- /dev/null
+++ b/tools/stats_log_api_gen/java_writer.h
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2019, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#pragma once
+
+#include "Collation.h"
+
+#include <map>
+#include <set>
+#include <vector>
+
+#include <stdio.h>
+#include <string.h>
+
+namespace android {
+namespace stats_log_api_gen {
+
+using namespace std;
+
+int write_stats_log_java(FILE* out, const Atoms& atoms, const AtomDecl &attributionDecl,
+ const string& moduleName, const string& javaClass,
+ const string& javaPackage
+);
+
+} // namespace stats_log_api_gen
+} // namespace android
+
diff --git a/tools/stats_log_api_gen/java_writer_q.cpp b/tools/stats_log_api_gen/java_writer_q.cpp
new file mode 100644
index 0000000..af5055a
--- /dev/null
+++ b/tools/stats_log_api_gen/java_writer_q.cpp
@@ -0,0 +1,470 @@
+/*
+ * Copyright (C) 2019, 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.
+ */
+
+#include "java_writer_q.h"
+#include "utils.h"
+
+namespace android {
+namespace stats_log_api_gen {
+
+void write_java_q_logging_constants(FILE* out, const string& indent) {
+ fprintf(out, "%s// Payload limits.\n", indent.c_str());
+ fprintf(out, "%sprivate static final int LOGGER_ENTRY_MAX_PAYLOAD = 4068;\n", indent.c_str());
+ fprintf(out,
+ "%sprivate static final int MAX_EVENT_PAYLOAD = LOGGER_ENTRY_MAX_PAYLOAD - 4;\n",
+ indent.c_str());
+
+ // Value types. Must match with EventLog.java and log.h.
+ fprintf(out, "\n");
+ fprintf(out, "%s// Value types.\n", indent.c_str());
+ fprintf(out, "%sprivate static final byte INT_TYPE = 0;\n", indent.c_str());
+ fprintf(out, "%sprivate static final byte LONG_TYPE = 1;\n", indent.c_str());
+ fprintf(out, "%sprivate static final byte STRING_TYPE = 2;\n", indent.c_str());
+ fprintf(out, "%sprivate static final byte LIST_TYPE = 3;\n", indent.c_str());
+ fprintf(out, "%sprivate static final byte FLOAT_TYPE = 4;\n", indent.c_str());
+
+ // Size of each value type.
+ // Booleans, ints, floats, and enums take 5 bytes, 1 for the type and 4 for the value.
+ fprintf(out, "\n");
+ fprintf(out, "%s// Size of each value type.\n", indent.c_str());
+ fprintf(out, "%sprivate static final int INT_TYPE_SIZE = 5;\n", indent.c_str());
+ fprintf(out, "%sprivate static final int FLOAT_TYPE_SIZE = 5;\n", indent.c_str());
+ // Longs take 9 bytes, 1 for the type and 8 for the value.
+ fprintf(out, "%sprivate static final int LONG_TYPE_SIZE = 9;\n", indent.c_str());
+ // Strings take 5 metadata bytes: 1 byte is for the type, 4 are for the length.
+ fprintf(out, "%sprivate static final int STRING_TYPE_OVERHEAD = 5;\n", indent.c_str());
+ fprintf(out, "%sprivate static final int LIST_TYPE_OVERHEAD = 2;\n", indent.c_str());
+}
+
+int write_java_methods_q_schema(
+ FILE* out,
+ const map<vector<java_type_t>, set<string>>& signatures_to_modules,
+ const AtomDecl &attributionDecl,
+ const string& moduleName,
+ const string& indent) {
+ int requiredHelpers = 0;
+ for (auto signature_to_modules_it = signatures_to_modules.begin();
+ signature_to_modules_it != signatures_to_modules.end(); signature_to_modules_it++) {
+ // Skip if this signature is not needed for the module.
+ if (!signature_needed_for_module(signature_to_modules_it->second, moduleName)) {
+ continue;
+ }
+
+ // Print method signature.
+ vector<java_type_t> signature = signature_to_modules_it->first;
+ fprintf(out, "%spublic static void write(int code", indent.c_str());
+ int argIndex = 1;
+ for (vector<java_type_t>::const_iterator arg = signature.begin();
+ arg != signature.end(); arg++) {
+ if (*arg == JAVA_TYPE_ATTRIBUTION_CHAIN) {
+ for (auto chainField : attributionDecl.fields) {
+ fprintf(out, ", %s[] %s",
+ java_type_name(chainField.javaType), chainField.name.c_str());
+ }
+ } else if (*arg == JAVA_TYPE_KEY_VALUE_PAIR) {
+ // Module logging does not yet support key value pair.
+ fprintf(stderr, "Module logging does not yet support key value pair.\n");
+ continue;
+ } else {
+ fprintf(out, ", %s arg%d", java_type_name(*arg), argIndex);
+ }
+ argIndex++;
+ }
+ fprintf(out, ") {\n");
+
+ // Calculate the size of the buffer.
+ fprintf(out, "%s // Initial overhead of the list, timestamp, and atom tag.\n",
+ indent.c_str());
+ fprintf(out,
+ "%s int needed = LIST_TYPE_OVERHEAD + LONG_TYPE_SIZE + INT_TYPE_SIZE;\n",
+ indent.c_str());
+ argIndex = 1;
+ for (vector<java_type_t>::const_iterator arg = signature.begin();
+ arg != signature.end(); arg++) {
+ switch (*arg) {
+ case JAVA_TYPE_BOOLEAN:
+ case JAVA_TYPE_INT:
+ case JAVA_TYPE_FLOAT:
+ case JAVA_TYPE_ENUM:
+ fprintf(out, "%s needed += INT_TYPE_SIZE;\n", indent.c_str());
+ break;
+ case JAVA_TYPE_LONG:
+ // Longs take 9 bytes, 1 for the type and 8 for the value.
+ fprintf(out, "%s needed += LONG_TYPE_SIZE;\n", indent.c_str());
+ break;
+ case JAVA_TYPE_STRING:
+ // Strings take 5 metadata bytes + length of byte encoded string.
+ fprintf(out, "%s if (arg%d == null) {\n", indent.c_str(), argIndex);
+ fprintf(out, "%s arg%d = \"\";\n", indent.c_str(), argIndex);
+ fprintf(out, "%s }\n", indent.c_str());
+ fprintf(out,
+ "%s byte[] arg%dBytes = "
+ "arg%d.getBytes(java.nio.charset.StandardCharsets.UTF_8);\n",
+ indent.c_str(), argIndex, argIndex);
+ fprintf(out, "%s needed += STRING_TYPE_OVERHEAD + arg%dBytes.length;\n",
+ indent.c_str(), argIndex);
+ break;
+ case JAVA_TYPE_BYTE_ARRAY:
+ // Byte arrays take 5 metadata bytes + length of byte array.
+ fprintf(out, "%s if (arg%d == null) {\n", indent.c_str(), argIndex);
+ fprintf(out, "%s arg%d = new byte[0];\n", indent.c_str(), argIndex);
+ fprintf(out, "%s }\n", indent.c_str());
+ fprintf(out, "%s needed += STRING_TYPE_OVERHEAD + arg%d.length;\n",
+ indent.c_str(), argIndex);
+ break;
+ case JAVA_TYPE_ATTRIBUTION_CHAIN:
+ {
+ const char* uidName = attributionDecl.fields.front().name.c_str();
+ const char* tagName = attributionDecl.fields.back().name.c_str();
+ // Null checks on the params.
+ fprintf(out, "%s if (%s == null) {\n", indent.c_str(), uidName);
+ fprintf(out, "%s %s = new %s[0];\n", indent.c_str(), uidName,
+ java_type_name(attributionDecl.fields.front().javaType));
+ fprintf(out, "%s }\n", indent.c_str());
+ fprintf(out, "%s if (%s == null) {\n", indent.c_str(), tagName);
+ fprintf(out, "%s %s = new %s[0];\n", indent.c_str(), tagName,
+ java_type_name(attributionDecl.fields.back().javaType));
+ fprintf(out, "%s }\n", indent.c_str());
+
+ // First check that the lengths of the uid and tag arrays are the same.
+ fprintf(out, "%s if (%s.length != %s.length) {\n",
+ indent.c_str(), uidName, tagName);
+ fprintf(out, "%s return;\n", indent.c_str());
+ fprintf(out, "%s }\n", indent.c_str());
+ fprintf(out, "%s int attrSize = LIST_TYPE_OVERHEAD;\n", indent.c_str());
+ fprintf(out, "%s for (int i = 0; i < %s.length; i++) {\n",
+ indent.c_str(), tagName);
+ fprintf(out, "%s String str%d = (%s[i] == null) ? \"\" : %s[i];\n",
+ indent.c_str(), argIndex, tagName, tagName);
+ fprintf(out,
+ "%s int str%dlen = "
+ "str%d.getBytes(java.nio.charset.StandardCharsets.UTF_8).length;\n",
+ indent.c_str(), argIndex, argIndex);
+ fprintf(out,
+ "%s attrSize += "
+ "LIST_TYPE_OVERHEAD + INT_TYPE_SIZE + STRING_TYPE_OVERHEAD + str%dlen;\n",
+ indent.c_str(), argIndex);
+ fprintf(out, "%s }\n", indent.c_str());
+ fprintf(out, "%s needed += attrSize;\n", indent.c_str());
+ break;
+ }
+ default:
+ // Unsupported types: OBJECT, DOUBLE, KEY_VALUE_PAIR.
+ fprintf(stderr, "Module logging does not yet support key value pair.\n");
+ return 1;
+ }
+ argIndex++;
+ }
+
+ // Now we have the size that is needed. Check for overflow and return if needed.
+ fprintf(out, "%s if (needed > MAX_EVENT_PAYLOAD) {\n", indent.c_str());
+ fprintf(out, "%s return;\n", indent.c_str());
+ fprintf(out, "%s }\n", indent.c_str());
+
+ // Create new buffer, and associated data types.
+ fprintf(out, "%s byte[] buff = new byte[needed];\n", indent.c_str());
+ fprintf(out, "%s int pos = 0;\n", indent.c_str());
+
+ // Initialize the buffer with list data type.
+ fprintf(out, "%s buff[pos] = LIST_TYPE;\n", indent.c_str());
+ fprintf(out, "%s buff[pos + 1] = %zu;\n", indent.c_str(), signature.size() + 2);
+ fprintf(out, "%s pos += LIST_TYPE_OVERHEAD;\n", indent.c_str());
+
+ // Write timestamp.
+ fprintf(out, "%s long elapsedRealtime = SystemClock.elapsedRealtimeNanos();\n", indent.c_str());
+ fprintf(out, "%s buff[pos] = LONG_TYPE;\n", indent.c_str());
+ fprintf(out, "%s copyLong(buff, pos + 1, elapsedRealtime);\n", indent.c_str());
+ fprintf(out, "%s pos += LONG_TYPE_SIZE;\n", indent.c_str());
+
+ // Write atom code.
+ fprintf(out, "%s buff[pos] = INT_TYPE;\n", indent.c_str());
+ fprintf(out, "%s copyInt(buff, pos + 1, code);\n", indent.c_str());
+ fprintf(out, "%s pos += INT_TYPE_SIZE;\n", indent.c_str());
+
+ // Write the args.
+ argIndex = 1;
+ for (vector<java_type_t>::const_iterator arg = signature.begin();
+ arg != signature.end(); arg++) {
+ switch (*arg) {
+ case JAVA_TYPE_BOOLEAN:
+ fprintf(out, "%s buff[pos] = INT_TYPE;\n", indent.c_str());
+ fprintf(out, "%s copyInt(buff, pos + 1, arg%d? 1 : 0);\n",
+ indent.c_str(), argIndex);
+ fprintf(out, "%s pos += INT_TYPE_SIZE;\n", indent.c_str());
+ break;
+ case JAVA_TYPE_INT:
+ case JAVA_TYPE_ENUM:
+ fprintf(out, "%s buff[pos] = INT_TYPE;\n", indent.c_str());
+ fprintf(out, "%s copyInt(buff, pos + 1, arg%d);\n", indent.c_str(), argIndex);
+ fprintf(out, "%s pos += INT_TYPE_SIZE;\n", indent.c_str());
+ break;
+ case JAVA_TYPE_FLOAT:
+ requiredHelpers |= JAVA_MODULE_REQUIRES_FLOAT;
+ fprintf(out, "%s buff[pos] = FLOAT_TYPE;\n", indent.c_str());
+ fprintf(out, "%s copyFloat(buff, pos + 1, arg%d);\n", indent.c_str(), argIndex);
+ fprintf(out, "%s pos += FLOAT_TYPE_SIZE;\n", indent.c_str());
+ break;
+ case JAVA_TYPE_LONG:
+ fprintf(out, "%s buff[pos] = LONG_TYPE;\n", indent.c_str());
+ fprintf(out, "%s copyLong(buff, pos + 1, arg%d);\n", indent.c_str(), argIndex);
+ fprintf(out, "%s pos += LONG_TYPE_SIZE;\n", indent.c_str());
+ break;
+ case JAVA_TYPE_STRING:
+ fprintf(out, "%s buff[pos] = STRING_TYPE;\n", indent.c_str());
+ fprintf(out, "%s copyInt(buff, pos + 1, arg%dBytes.length);\n",
+ indent.c_str(), argIndex);
+ fprintf(out, "%s System.arraycopy("
+ "arg%dBytes, 0, buff, pos + STRING_TYPE_OVERHEAD, arg%dBytes.length);\n",
+ indent.c_str(), argIndex, argIndex);
+ fprintf(out, "%s pos += STRING_TYPE_OVERHEAD + arg%dBytes.length;\n",
+ indent.c_str(), argIndex);
+ break;
+ case JAVA_TYPE_BYTE_ARRAY:
+ fprintf(out, "%s buff[pos] = STRING_TYPE;\n", indent.c_str());
+ fprintf(out, "%s copyInt(buff, pos + 1, arg%d.length);\n",
+ indent.c_str(), argIndex);
+ fprintf(out, "%s System.arraycopy("
+ "arg%d, 0, buff, pos + STRING_TYPE_OVERHEAD, arg%d.length);\n",
+ indent.c_str(), argIndex, argIndex);
+ fprintf(out, "%s pos += STRING_TYPE_OVERHEAD + arg%d.length;\n",
+ indent.c_str(), argIndex);
+ break;
+ case JAVA_TYPE_ATTRIBUTION_CHAIN:
+ {
+ requiredHelpers |= JAVA_MODULE_REQUIRES_ATTRIBUTION;
+ const char* uidName = attributionDecl.fields.front().name.c_str();
+ const char* tagName = attributionDecl.fields.back().name.c_str();
+
+ fprintf(out, "%s writeAttributionChain(buff, pos, %s, %s);\n", indent.c_str(),
+ uidName, tagName);
+ fprintf(out, "%s pos += attrSize;\n", indent.c_str());
+ break;
+ }
+ default:
+ // Unsupported types: OBJECT, DOUBLE, KEY_VALUE_PAIR.
+ fprintf(stderr,
+ "Object, Double, and KeyValuePairs are not supported in module logging");
+ return 1;
+ }
+ argIndex++;
+ }
+
+ fprintf(out, "%s StatsLog.writeRaw(buff, pos);\n", indent.c_str());
+ fprintf(out, "%s}\n", indent.c_str());
+ fprintf(out, "\n");
+ }
+
+ write_java_helpers_for_q_schema_methods(out, attributionDecl, requiredHelpers, indent);
+
+ return 0;
+}
+
+void write_java_helpers_for_q_schema_methods(
+ FILE* out,
+ const AtomDecl &attributionDecl,
+ const int requiredHelpers,
+ const string& indent) {
+ fprintf(out, "\n");
+ fprintf(out, "%s// Helper methods for copying primitives\n", indent.c_str());
+ fprintf(out, "%sprivate static void copyInt(byte[] buff, int pos, int val) {\n",
+ indent.c_str());
+ fprintf(out, "%s buff[pos] = (byte) (val);\n", indent.c_str());
+ fprintf(out, "%s buff[pos + 1] = (byte) (val >> 8);\n", indent.c_str());
+ fprintf(out, "%s buff[pos + 2] = (byte) (val >> 16);\n", indent.c_str());
+ fprintf(out, "%s buff[pos + 3] = (byte) (val >> 24);\n", indent.c_str());
+ fprintf(out, "%s return;\n", indent.c_str());
+ fprintf(out, "%s}\n", indent.c_str());
+ fprintf(out, "\n");
+
+ fprintf(out, "%sprivate static void copyLong(byte[] buff, int pos, long val) {\n",
+ indent.c_str());
+ fprintf(out, "%s buff[pos] = (byte) (val);\n", indent.c_str());
+ fprintf(out, "%s buff[pos + 1] = (byte) (val >> 8);\n", indent.c_str());
+ fprintf(out, "%s buff[pos + 2] = (byte) (val >> 16);\n", indent.c_str());
+ fprintf(out, "%s buff[pos + 3] = (byte) (val >> 24);\n", indent.c_str());
+ fprintf(out, "%s buff[pos + 4] = (byte) (val >> 32);\n", indent.c_str());
+ fprintf(out, "%s buff[pos + 5] = (byte) (val >> 40);\n", indent.c_str());
+ fprintf(out, "%s buff[pos + 6] = (byte) (val >> 48);\n", indent.c_str());
+ fprintf(out, "%s buff[pos + 7] = (byte) (val >> 56);\n", indent.c_str());
+ fprintf(out, "%s return;\n", indent.c_str());
+ fprintf(out, "%s}\n", indent.c_str());
+ fprintf(out, "\n");
+
+ if (requiredHelpers & JAVA_MODULE_REQUIRES_FLOAT) {
+ fprintf(out, "%sprivate static void copyFloat(byte[] buff, int pos, float val) {\n",
+ indent.c_str());
+ fprintf(out, "%s copyInt(buff, pos, Float.floatToIntBits(val));\n", indent.c_str());
+ fprintf(out, "%s return;\n", indent.c_str());
+ fprintf(out, "%s}\n", indent.c_str());
+ fprintf(out, "\n");
+ }
+
+ if (requiredHelpers & JAVA_MODULE_REQUIRES_ATTRIBUTION) {
+ fprintf(out, "%sprivate static void writeAttributionChain(byte[] buff, int pos",
+ indent.c_str());
+ for (auto chainField : attributionDecl.fields) {
+ fprintf(out, ", %s[] %s",
+ java_type_name(chainField.javaType), chainField.name.c_str());
+ }
+ fprintf(out, ") {\n");
+
+ const char* uidName = attributionDecl.fields.front().name.c_str();
+ const char* tagName = attributionDecl.fields.back().name.c_str();
+
+ // Write the first list begin.
+ fprintf(out, "%s buff[pos] = LIST_TYPE;\n", indent.c_str());
+ fprintf(out, "%s buff[pos + 1] = (byte) (%s.length);\n", indent.c_str(), tagName);
+ fprintf(out, "%s pos += LIST_TYPE_OVERHEAD;\n", indent.c_str());
+
+ // Iterate through the attribution chain and write the nodes.
+ fprintf(out, "%s for (int i = 0; i < %s.length; i++) {\n", indent.c_str(), tagName);
+ // Write the list begin.
+ fprintf(out, "%s buff[pos] = LIST_TYPE;\n", indent.c_str());
+ fprintf(out, "%s buff[pos + 1] = %lu;\n",
+ indent.c_str(), attributionDecl.fields.size());
+ fprintf(out, "%s pos += LIST_TYPE_OVERHEAD;\n", indent.c_str());
+
+ // Write the uid.
+ fprintf(out, "%s buff[pos] = INT_TYPE;\n", indent.c_str());
+ fprintf(out, "%s copyInt(buff, pos + 1, %s[i]);\n", indent.c_str(), uidName);
+ fprintf(out, "%s pos += INT_TYPE_SIZE;\n", indent.c_str());
+
+ // Write the tag.
+ fprintf(out, "%s String %sStr = (%s[i] == null) ? \"\" : %s[i];\n",
+ indent.c_str(), tagName, tagName, tagName);
+ fprintf(out, "%s byte[] %sByte = "
+ "%sStr.getBytes(java.nio.charset.StandardCharsets.UTF_8);\n",
+ indent.c_str(), tagName, tagName);
+ fprintf(out, "%s buff[pos] = STRING_TYPE;\n", indent.c_str());
+ fprintf(out, "%s copyInt(buff, pos + 1, %sByte.length);\n", indent.c_str(), tagName);
+ fprintf(out, "%s System.arraycopy("
+ "%sByte, 0, buff, pos + STRING_TYPE_OVERHEAD, %sByte.length);\n",
+ indent.c_str(), tagName, tagName);
+ fprintf(out, "%s pos += STRING_TYPE_OVERHEAD + %sByte.length;\n",
+ indent.c_str(), tagName);
+ fprintf(out, "%s }\n", indent.c_str());
+ fprintf(out, "%s}\n", indent.c_str());
+ fprintf(out, "\n");
+ }
+}
+
+#if defined(STATS_SCHEMA_LEGACY)
+static void write_java_method(
+ FILE* out,
+ const string& method_name,
+ const map<vector<java_type_t>, set<string>>& signatures_to_modules,
+ const AtomDecl &attributionDecl) {
+
+ for (auto signature_to_modules_it = signatures_to_modules.begin();
+ signature_to_modules_it != signatures_to_modules.end(); signature_to_modules_it++) {
+ vector<java_type_t> signature = signature_to_modules_it->first;
+ fprintf(out, " /** @hide */\n");
+ fprintf(out, " public static native int %s(int code", method_name.c_str());
+ int argIndex = 1;
+ for (vector<java_type_t>::const_iterator arg = signature.begin();
+ arg != signature.end(); arg++) {
+ if (*arg == JAVA_TYPE_ATTRIBUTION_CHAIN) {
+ for (auto chainField : attributionDecl.fields) {
+ fprintf(out, ", %s[] %s",
+ java_type_name(chainField.javaType), chainField.name.c_str());
+ }
+ } else if (*arg == JAVA_TYPE_KEY_VALUE_PAIR) {
+ fprintf(out, ", SparseArray<Object> value_map");
+ } else {
+ fprintf(out, ", %s arg%d", java_type_name(*arg), argIndex);
+ }
+ argIndex++;
+ }
+ fprintf(out, ");\n");
+ fprintf(out, "\n");
+ }
+}
+
+int write_stats_log_java_q(FILE* out, const Atoms& atoms, const AtomDecl &attributionDecl) {
+ // Print prelude
+ fprintf(out, "// This file is autogenerated\n");
+ fprintf(out, "\n");
+ fprintf(out, "package android.util;\n");
+ fprintf(out, "\n");
+ fprintf(out, "import android.os.WorkSource;\n");
+ fprintf(out, "import android.util.SparseArray;\n");
+ fprintf(out, "import java.util.List;\n");
+ fprintf(out, "\n");
+ fprintf(out, "\n");
+ fprintf(out, "/**\n");
+ fprintf(out, " * API For logging statistics events.\n");
+ fprintf(out, " * @hide\n");
+ fprintf(out, " */\n");
+ fprintf(out, "public class StatsLogInternal {\n");
+ write_java_atom_codes(out, atoms, DEFAULT_MODULE_NAME);
+
+ write_java_enum_values(out, atoms, DEFAULT_MODULE_NAME);
+
+ // Print write methods
+ fprintf(out, " // Write methods\n");
+ write_java_method(out, "write", atoms.signatures_to_modules, attributionDecl);
+ write_java_method(out, "write_non_chained", atoms.non_chained_signatures_to_modules,
+ attributionDecl);
+ write_java_work_source_methods(out, atoms.signatures_to_modules, DEFAULT_MODULE_NAME);
+
+ fprintf(out, "}\n");
+
+ return 0;
+}
+
+int write_stats_log_java_q_for_module(FILE* out, const Atoms& atoms, const AtomDecl &attributionDecl,
+ const string& moduleName, const string& javaClass,
+ const string& javaPackage) {
+ // Print prelude
+ fprintf(out, "// This file is autogenerated\n");
+ fprintf(out, "\n");
+ fprintf(out, "package %s;\n", javaPackage.c_str());
+ fprintf(out, "\n");
+ fprintf(out, "import static java.nio.charset.StandardCharsets.UTF_8;\n");
+ fprintf(out, "\n");
+ fprintf(out, "import android.util.StatsLog;\n");
+ fprintf(out, "import android.os.SystemClock;\n");
+ fprintf(out, "\n");
+ fprintf(out, "import java.util.ArrayList;\n");
+ fprintf(out, "\n");
+ fprintf(out, "\n");
+ fprintf(out, "/**\n");
+ fprintf(out, " * Utility class for logging statistics events.\n");
+ fprintf(out, " */\n");
+ fprintf(out, "public class %s {\n", javaClass.c_str());
+
+ write_java_q_logging_constants(out, " ");
+
+ write_java_atom_codes(out, atoms, moduleName);
+
+ write_java_enum_values(out, atoms, moduleName);
+
+ int errors = 0;
+ // Print write methods
+ fprintf(out, " // Write methods\n");
+ errors += write_java_methods_q_schema(out, atoms.signatures_to_modules, attributionDecl,
+ moduleName, " ");
+ errors += write_java_non_chained_methods(out, atoms.non_chained_signatures_to_modules,
+ moduleName);
+
+ fprintf(out, "}\n");
+
+ return errors;
+}
+#endif
+
+} // namespace stats_log_api_gen
+} // namespace android
diff --git a/tools/stats_log_api_gen/java_writer_q.h b/tools/stats_log_api_gen/java_writer_q.h
new file mode 100644
index 0000000..c8f4ccf
--- /dev/null
+++ b/tools/stats_log_api_gen/java_writer_q.h
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2019, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#pragma once
+
+#include "Collation.h"
+
+#include <map>
+#include <set>
+#include <vector>
+
+#include <stdio.h>
+#include <string.h>
+
+namespace android {
+namespace stats_log_api_gen {
+
+using namespace std;
+
+void write_java_q_logging_constants(FILE* out, const string& indent);
+
+int write_java_methods_q_schema(
+ FILE* out,
+ const map<vector<java_type_t>, set<string>>& signatures_to_modules,
+ const AtomDecl &attributionDecl,
+ const string& moduleName,
+ const string& indent
+);
+
+void write_java_helpers_for_q_schema_methods(
+ FILE * out,
+ const AtomDecl &attributionDecl,
+ const int requiredHelpers,
+ const string& indent
+);
+
+#if defined(STATS_SCHEMA_LEGACY)
+int write_stats_log_java_q(FILE* out, const Atoms& atoms, const AtomDecl &attributionDecl);
+
+int write_stats_log_java_q_for_module(FILE* out, const Atoms& atoms, const AtomDecl &attributionDecl,
+ const string& moduleName, const string& javaClass,
+ const string& javaPackage);
+#endif
+} // namespace stats_log_api_gen
+} // namespace android
diff --git a/tools/stats_log_api_gen/main.cpp b/tools/stats_log_api_gen/main.cpp
index 18e2da3..bc6d82a 100644
--- a/tools/stats_log_api_gen/main.cpp
+++ b/tools/stats_log_api_gen/main.cpp
@@ -1,9 +1,15 @@
#include "Collation.h"
+#if !defined(STATS_SCHEMA_LEGACY)
+#include "java_writer.h"
+#endif
+#include "java_writer_q.h"
+#include "utils.h"
#include "frameworks/base/cmds/statsd/src/atoms.pb.h"
+#include <map>
#include <set>
#include <vector>
@@ -20,108 +26,8 @@
namespace android {
namespace stats_log_api_gen {
-int maxPushedAtomId = 2;
-
-const string DEFAULT_MODULE_NAME = "DEFAULT";
-const string DEFAULT_CPP_NAMESPACE = "android,util";
-const string DEFAULT_CPP_HEADER_IMPORT = "statslog.h";
-const string DEFAULT_JAVA_PACKAGE = "android.util";
-const string DEFAULT_JAVA_CLASS = "StatsLogInternal";
-
-const int JAVA_MODULE_REQUIRES_FLOAT = 0x01;
-const int JAVA_MODULE_REQUIRES_ATTRIBUTION = 0x02;
-
using android::os::statsd::Atom;
-/**
- * Turn lower and camel case into upper case with underscores.
- */
-static string
-make_constant_name(const string& str)
-{
- string result;
- const int N = str.size();
- bool underscore_next = false;
- for (int i=0; i<N; i++) {
- char c = str[i];
- if (c >= 'A' && c <= 'Z') {
- if (underscore_next) {
- result += '_';
- underscore_next = false;
- }
- } else if (c >= 'a' && c <= 'z') {
- c = 'A' + c - 'a';
- underscore_next = true;
- } else if (c == '_') {
- underscore_next = false;
- }
- result += c;
- }
- return result;
-}
-
-static const char*
-cpp_type_name(java_type_t type)
-{
- switch (type) {
- case JAVA_TYPE_BOOLEAN:
- return "bool";
- case JAVA_TYPE_INT:
- case JAVA_TYPE_ENUM:
- return "int32_t";
- case JAVA_TYPE_LONG:
- return "int64_t";
- case JAVA_TYPE_FLOAT:
- return "float";
- case JAVA_TYPE_DOUBLE:
- return "double";
- case JAVA_TYPE_STRING:
- return "char const*";
- case JAVA_TYPE_BYTE_ARRAY:
- return "const BytesField&";
- default:
- return "UNKNOWN";
- }
-}
-
-static const char*
-java_type_name(java_type_t type)
-{
- switch (type) {
- case JAVA_TYPE_BOOLEAN:
- return "boolean";
- case JAVA_TYPE_INT:
- case JAVA_TYPE_ENUM:
- return "int";
- case JAVA_TYPE_LONG:
- return "long";
- case JAVA_TYPE_FLOAT:
- return "float";
- case JAVA_TYPE_DOUBLE:
- return "double";
- case JAVA_TYPE_STRING:
- return "java.lang.String";
- case JAVA_TYPE_BYTE_ARRAY:
- return "byte[]";
- default:
- return "UNKNOWN";
- }
-}
-
-static bool atom_needed_for_module(const AtomDecl& atomDecl, const string& moduleName) {
- if (moduleName == DEFAULT_MODULE_NAME) {
- return true;
- }
- return atomDecl.hasModule && (moduleName == atomDecl.moduleName);
-}
-
-static bool signature_needed_for_module(const set<string>& modules, const string& moduleName) {
- if (moduleName == DEFAULT_MODULE_NAME) {
- return true;
- }
- return modules.find(moduleName) != modules.end();
-}
-
static void write_atoms_info_cpp(FILE *out, const Atoms &atoms) {
std::set<string> kTruncatingAtomNames = {"mobile_radio_power_state_changed",
"audio_state_changed",
@@ -637,14 +543,6 @@
return 0;
}
-void build_non_chained_decl_map(const Atoms& atoms,
- std::map<int, set<AtomDecl>::const_iterator>* decl_map){
- for (set<AtomDecl>::const_iterator atom = atoms.non_chained_decls.begin();
- atom != atoms.non_chained_decls.end(); atom++) {
- decl_map->insert(std::make_pair(atom->code, atom));
- }
-}
-
static void write_cpp_usage(
FILE* out, const string& method_name, const string& atom_code_name,
const AtomDecl& atom, const AtomDecl &attributionDecl) {
@@ -756,6 +654,7 @@
build_non_chained_decl_map(atoms, &atom_code_to_non_chained_decl_map);
size_t i = 0;
+ int maxPushedAtomId = 2;
// Print atom constants
for (set<AtomDecl>::const_iterator atom = atoms.decls.begin();
atom != atoms.decls.end(); atom++) {
@@ -873,629 +772,11 @@
return 0;
}
-static void write_java_usage(FILE* out, const string& method_name, const string& atom_code_name,
- const AtomDecl& atom) {
- fprintf(out, " * Usage: StatsLog.%s(StatsLog.%s",
- method_name.c_str(), atom_code_name.c_str());
- for (vector<AtomField>::const_iterator field = atom.fields.begin();
- field != atom.fields.end(); field++) {
- if (field->javaType == JAVA_TYPE_ATTRIBUTION_CHAIN) {
- fprintf(out, ", android.os.WorkSource workSource");
- } else if (field->javaType == JAVA_TYPE_KEY_VALUE_PAIR) {
- fprintf(out, ", SparseArray<Object> value_map");
- } else if (field->javaType == JAVA_TYPE_BYTE_ARRAY) {
- fprintf(out, ", byte[] %s", field->name.c_str());
- } else {
- fprintf(out, ", %s %s", java_type_name(field->javaType), field->name.c_str());
- }
- }
- fprintf(out, ");<br>\n");
-}
-
-static void write_java_method(
- FILE* out,
- const string& method_name,
- const map<vector<java_type_t>, set<string>>& signatures_to_modules,
- const AtomDecl &attributionDecl) {
-
- for (auto signature_to_modules_it = signatures_to_modules.begin();
- signature_to_modules_it != signatures_to_modules.end(); signature_to_modules_it++) {
- vector<java_type_t> signature = signature_to_modules_it->first;
- fprintf(out, " /** @hide */\n");
- fprintf(out, " public static native int %s(int code", method_name.c_str());
- int argIndex = 1;
- for (vector<java_type_t>::const_iterator arg = signature.begin();
- arg != signature.end(); arg++) {
- if (*arg == JAVA_TYPE_ATTRIBUTION_CHAIN) {
- for (auto chainField : attributionDecl.fields) {
- fprintf(out, ", %s[] %s",
- java_type_name(chainField.javaType), chainField.name.c_str());
- }
- } else if (*arg == JAVA_TYPE_KEY_VALUE_PAIR) {
- fprintf(out, ", SparseArray<Object> value_map");
- } else {
- fprintf(out, ", %s arg%d", java_type_name(*arg), argIndex);
- }
- argIndex++;
- }
- fprintf(out, ");\n");
- }
-}
-
-static void write_java_helpers_for_module(
- FILE * out,
- const AtomDecl &attributionDecl,
- const int requiredHelpers) {
- fprintf(out, " private static void copyInt(byte[] buff, int pos, int val) {\n");
- fprintf(out, " buff[pos] = (byte) (val);\n");
- fprintf(out, " buff[pos + 1] = (byte) (val >> 8);\n");
- fprintf(out, " buff[pos + 2] = (byte) (val >> 16);\n");
- fprintf(out, " buff[pos + 3] = (byte) (val >> 24);\n");
- fprintf(out, " return;\n");
- fprintf(out, " }\n");
- fprintf(out, "\n");
-
- fprintf(out, " private static void copyLong(byte[] buff, int pos, long val) {\n");
- fprintf(out, " buff[pos] = (byte) (val);\n");
- fprintf(out, " buff[pos + 1] = (byte) (val >> 8);\n");
- fprintf(out, " buff[pos + 2] = (byte) (val >> 16);\n");
- fprintf(out, " buff[pos + 3] = (byte) (val >> 24);\n");
- fprintf(out, " buff[pos + 4] = (byte) (val >> 32);\n");
- fprintf(out, " buff[pos + 5] = (byte) (val >> 40);\n");
- fprintf(out, " buff[pos + 6] = (byte) (val >> 48);\n");
- fprintf(out, " buff[pos + 7] = (byte) (val >> 56);\n");
- fprintf(out, " return;\n");
- fprintf(out, " }\n");
- fprintf(out, "\n");
-
- if (requiredHelpers & JAVA_MODULE_REQUIRES_FLOAT) {
- fprintf(out, " private static void copyFloat(byte[] buff, int pos, float val) {\n");
- fprintf(out, " copyInt(buff, pos, Float.floatToIntBits(val));\n");
- fprintf(out, " return;\n");
- fprintf(out, " }\n");
- fprintf(out, "\n");
- }
-
- if (requiredHelpers & JAVA_MODULE_REQUIRES_ATTRIBUTION) {
- fprintf(out, " private static void writeAttributionChain(byte[] buff, int pos");
- for (auto chainField : attributionDecl.fields) {
- fprintf(out, ", %s[] %s",
- java_type_name(chainField.javaType), chainField.name.c_str());
- }
- fprintf(out, ") {\n");
-
- const char* uidName = attributionDecl.fields.front().name.c_str();
- const char* tagName = attributionDecl.fields.back().name.c_str();
-
- // Write the first list begin.
- fprintf(out, " buff[pos] = LIST_TYPE;\n");
- fprintf(out, " buff[pos + 1] = (byte) (%s.length);\n", tagName);
- fprintf(out, " pos += LIST_TYPE_OVERHEAD;\n");
-
- // Iterate through the attribution chain and write the nodes.
- fprintf(out, " for (int i = 0; i < %s.length; i++) {\n", tagName);
- // Write the list begin.
- fprintf(out, " buff[pos] = LIST_TYPE;\n");
- fprintf(out, " buff[pos + 1] = %lu;\n", attributionDecl.fields.size());
- fprintf(out, " pos += LIST_TYPE_OVERHEAD;\n");
-
- // Write the uid.
- fprintf(out, " buff[pos] = INT_TYPE;\n");
- fprintf(out, " copyInt(buff, pos + 1, %s[i]);\n", uidName);
- fprintf(out, " pos += INT_TYPE_SIZE;\n");
-
- // Write the tag.
- fprintf(out, " String %sStr = (%s[i] == null) ? \"\" : %s[i];\n",
- tagName, tagName, tagName);
- fprintf(out, " byte[] %sByte = %sStr.getBytes(UTF_8);\n", tagName, tagName);
- fprintf(out, " buff[pos] = STRING_TYPE;\n");
- fprintf(out, " copyInt(buff, pos + 1, %sByte.length);\n", tagName);
- fprintf(out, " System.arraycopy("
- "%sByte, 0, buff, pos + STRING_TYPE_OVERHEAD, %sByte.length);\n",
- tagName, tagName);
- fprintf(out, " pos += STRING_TYPE_OVERHEAD + %sByte.length;\n", tagName);
- fprintf(out, " }\n");
- fprintf(out, " }\n");
- fprintf(out, "\n");
- }
-}
-
-
-static int write_java_non_chained_method_for_module(
- FILE* out,
- const map<vector<java_type_t>, set<string>>& signatures_to_modules,
- const string& moduleName
- ) {
- for (auto signature_to_modules_it = signatures_to_modules.begin();
- signature_to_modules_it != signatures_to_modules.end(); signature_to_modules_it++) {
- // Skip if this signature is not needed for the module.
- if (!signature_needed_for_module(signature_to_modules_it->second, moduleName)) {
- continue;
- }
-
- // Print method signature.
- vector<java_type_t> signature = signature_to_modules_it->first;
- fprintf(out, " public static void write_non_chained(int code");
- int argIndex = 1;
- for (vector<java_type_t>::const_iterator arg = signature.begin();
- arg != signature.end(); arg++) {
- if (*arg == JAVA_TYPE_ATTRIBUTION_CHAIN) {
- // Non chained signatures should not have attribution chains.
- return 1;
- } else if (*arg == JAVA_TYPE_KEY_VALUE_PAIR) {
- // Module logging does not yet support key value pair.
- return 1;
- } else {
- fprintf(out, ", %s arg%d", java_type_name(*arg), argIndex);
- }
- argIndex++;
- }
- fprintf(out, ") {\n");
-
- fprintf(out, " write(code");
- argIndex = 1;
- for (vector<java_type_t>::const_iterator arg = signature.begin();
- arg != signature.end(); arg++) {
- // First two args are uid and tag of attribution chain.
- if (argIndex == 1) {
- fprintf(out, ", new int[] {arg%d}", argIndex);
- } else if (argIndex == 2) {
- fprintf(out, ", new java.lang.String[] {arg%d}", argIndex);
- } else {
- fprintf(out, ", arg%d", argIndex);
- }
- argIndex++;
- }
- fprintf(out, ");\n");
- fprintf(out, " }\n");
- fprintf(out, "\n");
- }
- return 0;
-}
-
-static int write_java_method_for_module(
- FILE* out,
- const map<vector<java_type_t>, set<string>>& signatures_to_modules,
- const AtomDecl &attributionDecl,
- const string& moduleName,
- int* requiredHelpers
- ) {
-
- for (auto signature_to_modules_it = signatures_to_modules.begin();
- signature_to_modules_it != signatures_to_modules.end(); signature_to_modules_it++) {
- // Skip if this signature is not needed for the module.
- if (!signature_needed_for_module(signature_to_modules_it->second, moduleName)) {
- continue;
- }
-
- // Print method signature.
- vector<java_type_t> signature = signature_to_modules_it->first;
- fprintf(out, " public static void write(int code");
- int argIndex = 1;
- for (vector<java_type_t>::const_iterator arg = signature.begin();
- arg != signature.end(); arg++) {
- if (*arg == JAVA_TYPE_ATTRIBUTION_CHAIN) {
- for (auto chainField : attributionDecl.fields) {
- fprintf(out, ", %s[] %s",
- java_type_name(chainField.javaType), chainField.name.c_str());
- }
- } else if (*arg == JAVA_TYPE_KEY_VALUE_PAIR) {
- // Module logging does not yet support key value pair.
- return 1;
- } else {
- fprintf(out, ", %s arg%d", java_type_name(*arg), argIndex);
- }
- argIndex++;
- }
- fprintf(out, ") {\n");
-
- // Calculate the size of the buffer.
- fprintf(out, " // Initial overhead of the list, timestamp, and atom tag.\n");
- fprintf(out, " int needed = LIST_TYPE_OVERHEAD + LONG_TYPE_SIZE + INT_TYPE_SIZE;\n");
- argIndex = 1;
- for (vector<java_type_t>::const_iterator arg = signature.begin();
- arg != signature.end(); arg++) {
- switch (*arg) {
- case JAVA_TYPE_BOOLEAN:
- case JAVA_TYPE_INT:
- case JAVA_TYPE_FLOAT:
- case JAVA_TYPE_ENUM:
- fprintf(out, " needed += INT_TYPE_SIZE;\n");
- break;
- case JAVA_TYPE_LONG:
- // Longs take 9 bytes, 1 for the type and 8 for the value.
- fprintf(out, " needed += LONG_TYPE_SIZE;\n");
- break;
- case JAVA_TYPE_STRING:
- // Strings take 5 metadata bytes + length of byte encoded string.
- fprintf(out, " if (arg%d == null) {\n", argIndex);
- fprintf(out, " arg%d = \"\";\n", argIndex);
- fprintf(out, " }\n");
- fprintf(out, " byte[] arg%dBytes= arg%d.getBytes(UTF_8);\n",
- argIndex, argIndex);
- fprintf(out, " needed += STRING_TYPE_OVERHEAD + arg%dBytes.length;\n",
- argIndex);
- break;
- case JAVA_TYPE_BYTE_ARRAY:
- // Byte arrays take 5 metadata bytes + length of byte array.
- fprintf(out, " if (arg%d == null) {\n", argIndex);
- fprintf(out, " arg%d = new byte[0];\n", argIndex);
- fprintf(out, " }\n");
- fprintf(out, " needed += STRING_TYPE_OVERHEAD + arg%d.length;\n", argIndex);
- break;
- case JAVA_TYPE_ATTRIBUTION_CHAIN:
- {
- const char* uidName = attributionDecl.fields.front().name.c_str();
- const char* tagName = attributionDecl.fields.back().name.c_str();
- // Null checks on the params.
- fprintf(out, " if (%s == null) {\n", uidName);
- fprintf(out, " %s = new %s[0];\n", uidName,
- java_type_name(attributionDecl.fields.front().javaType));
- fprintf(out, " }\n");
- fprintf(out, " if (%s == null) {\n", tagName);
- fprintf(out, " %s = new %s[0];\n", tagName,
- java_type_name(attributionDecl.fields.back().javaType));
- fprintf(out, " }\n");
-
- // First check that the lengths of the uid and tag arrays are the same.
- fprintf(out, " if (%s.length != %s.length) {\n", uidName, tagName);
- fprintf(out, " return;\n");
- fprintf(out, " }\n");
- fprintf(out, " int attrSize = LIST_TYPE_OVERHEAD;\n");
- fprintf(out, " for (int i = 0; i < %s.length; i++) {\n", tagName);
- fprintf(out, " String str%d = (%s[i] == null) ? \"\" : %s[i];\n",
- argIndex, tagName, tagName);
- fprintf(out, " int str%dlen = str%d.getBytes(UTF_8).length;\n",
- argIndex, argIndex);
- fprintf(out,
- " attrSize += "
- "LIST_TYPE_OVERHEAD + INT_TYPE_SIZE + STRING_TYPE_OVERHEAD + str%dlen;\n",
- argIndex);
- fprintf(out, " }\n");
- fprintf(out, " needed += attrSize;\n");
- break;
- }
- default:
- // Unsupported types: OBJECT, DOUBLE, KEY_VALUE_PAIR.
- return 1;
- }
- argIndex++;
- }
-
- // Now we have the size that is needed. Check for overflow and return if needed.
- fprintf(out, " if (needed > MAX_EVENT_PAYLOAD) {\n");
- fprintf(out, " return;\n");
- fprintf(out, " }\n");
-
- // Create new buffer, and associated data types.
- fprintf(out, " byte[] buff = new byte[needed];\n");
- fprintf(out, " int pos = 0;\n");
-
- // Initialize the buffer with list data type.
- fprintf(out, " buff[pos] = LIST_TYPE;\n");
- fprintf(out, " buff[pos + 1] = %zu;\n", signature.size() + 2);
- fprintf(out, " pos += LIST_TYPE_OVERHEAD;\n");
-
- // Write timestamp.
- fprintf(out, " long elapsedRealtime = SystemClock.elapsedRealtimeNanos();\n");
- fprintf(out, " buff[pos] = LONG_TYPE;\n");
- fprintf(out, " copyLong(buff, pos + 1, elapsedRealtime);\n");
- fprintf(out, " pos += LONG_TYPE_SIZE;\n");
-
- // Write atom code.
- fprintf(out, " buff[pos] = INT_TYPE;\n");
- fprintf(out, " copyInt(buff, pos + 1, code);\n");
- fprintf(out, " pos += INT_TYPE_SIZE;\n");
-
- // Write the args.
- argIndex = 1;
- for (vector<java_type_t>::const_iterator arg = signature.begin();
- arg != signature.end(); arg++) {
- switch (*arg) {
- case JAVA_TYPE_BOOLEAN:
- fprintf(out, " buff[pos] = INT_TYPE;\n");
- fprintf(out, " copyInt(buff, pos + 1, arg%d? 1 : 0);\n", argIndex);
- fprintf(out, " pos += INT_TYPE_SIZE;\n");
- break;
- case JAVA_TYPE_INT:
- case JAVA_TYPE_ENUM:
- fprintf(out, " buff[pos] = INT_TYPE;\n");
- fprintf(out, " copyInt(buff, pos + 1, arg%d);\n", argIndex);
- fprintf(out, " pos += INT_TYPE_SIZE;\n");
- break;
- case JAVA_TYPE_FLOAT:
- *requiredHelpers |= JAVA_MODULE_REQUIRES_FLOAT;
- fprintf(out, " buff[pos] = FLOAT_TYPE;\n");
- fprintf(out, " copyFloat(buff, pos + 1, arg%d);\n", argIndex);
- fprintf(out, " pos += FLOAT_TYPE_SIZE;\n");
- break;
- case JAVA_TYPE_LONG:
- fprintf(out, " buff[pos] = LONG_TYPE;\n");
- fprintf(out, " copyLong(buff, pos + 1, arg%d);\n", argIndex);
- fprintf(out, " pos += LONG_TYPE_SIZE;\n");
- break;
- case JAVA_TYPE_STRING:
- fprintf(out, " buff[pos] = STRING_TYPE;\n");
- fprintf(out, " copyInt(buff, pos + 1, arg%dBytes.length);\n", argIndex);
- fprintf(out, " System.arraycopy("
- "arg%dBytes, 0, buff, pos + STRING_TYPE_OVERHEAD, arg%dBytes.length);\n",
- argIndex, argIndex);
- fprintf(out, " pos += STRING_TYPE_OVERHEAD + arg%dBytes.length;\n",
- argIndex);
- break;
- case JAVA_TYPE_BYTE_ARRAY:
- fprintf(out, " buff[pos] = STRING_TYPE;\n");
- fprintf(out, " copyInt(buff, pos + 1, arg%d.length);\n", argIndex);
- fprintf(out, " System.arraycopy("
- "arg%d, 0, buff, pos + STRING_TYPE_OVERHEAD, arg%d.length);\n",
- argIndex, argIndex);
- fprintf(out, " pos += STRING_TYPE_OVERHEAD + arg%d.length;\n", argIndex);
- break;
- case JAVA_TYPE_ATTRIBUTION_CHAIN:
- {
- *requiredHelpers |= JAVA_MODULE_REQUIRES_ATTRIBUTION;
- const char* uidName = attributionDecl.fields.front().name.c_str();
- const char* tagName = attributionDecl.fields.back().name.c_str();
-
- fprintf(out, " writeAttributionChain(buff, pos, %s, %s);\n",
- uidName, tagName);
- fprintf(out, " pos += attrSize;\n");
- break;
- }
- default:
- // Unsupported types: OBJECT, DOUBLE, KEY_VALUE_PAIR.
- return 1;
- }
- argIndex++;
- }
-
- fprintf(out, " StatsLog.writeRaw(buff, pos);\n");
- fprintf(out, " }\n");
- fprintf(out, "\n");
- }
- return 0;
-}
-
-static void write_java_work_source_method(FILE* out,
- const map<vector<java_type_t>, set<string>>& signatures_to_modules,
- const string& moduleName) {
- fprintf(out, "\n // WorkSource methods.\n");
- for (auto signature_to_modules_it = signatures_to_modules.begin();
- signature_to_modules_it != signatures_to_modules.end(); signature_to_modules_it++) {
- // Skip if this signature is not needed for the module.
- if (!signature_needed_for_module(signature_to_modules_it->second, moduleName)) {
- continue;
- }
- vector<java_type_t> signature = signature_to_modules_it->first;
- // Determine if there is Attribution in this signature.
- int attributionArg = -1;
- int argIndexMax = 0;
- for (vector<java_type_t>::const_iterator arg = signature.begin();
- arg != signature.end(); arg++) {
- argIndexMax++;
- if (*arg == JAVA_TYPE_ATTRIBUTION_CHAIN) {
- if (attributionArg > -1) {
- fprintf(stderr, "An atom contains multiple AttributionNode fields.\n");
- fprintf(stderr, "This is not supported. Aborting WorkSource method writing.\n");
- fprintf(out, "\n// Invalid for WorkSource: more than one attribution chain.\n");
- return;
- }
- attributionArg = argIndexMax;
- }
- }
- if (attributionArg < 0) {
- continue;
- }
-
- // Method header (signature)
- if (moduleName == DEFAULT_MODULE_NAME) {
- fprintf(out, " /** @hide */\n");
- }
- fprintf(out, " public static void write(int code");
- int argIndex = 1;
- for (vector<java_type_t>::const_iterator arg = signature.begin();
- arg != signature.end(); arg++) {
- if (*arg == JAVA_TYPE_ATTRIBUTION_CHAIN) {
- fprintf(out, ", WorkSource ws");
- } else {
- fprintf(out, ", %s arg%d", java_type_name(*arg), argIndex);
- }
- argIndex++;
- }
- fprintf(out, ") {\n");
-
- // write_non_chained() component. TODO: Remove when flat uids are no longer needed.
- fprintf(out, " for (int i = 0; i < ws.size(); ++i) {\n");
- fprintf(out, " write_non_chained(code");
- for (int argIndex = 1; argIndex <= argIndexMax; argIndex++) {
- if (argIndex == attributionArg) {
- fprintf(out, ", ws.getUid(i), ws.getPackageName(i)");
- } else {
- fprintf(out, ", arg%d", argIndex);
- }
- }
- fprintf(out, ");\n");
- fprintf(out, " }\n"); // close for-loop
-
- // write() component.
- fprintf(out, " List<WorkSource.WorkChain> workChains = ws.getWorkChains();\n");
- fprintf(out, " if (workChains != null) {\n");
- fprintf(out, " for (WorkSource.WorkChain wc : workChains) {\n");
- fprintf(out, " write(code");
- for (int argIndex = 1; argIndex <= argIndexMax; argIndex++) {
- if (argIndex == attributionArg) {
- fprintf(out, ", wc.getUids(), wc.getTags()");
- } else {
- fprintf(out, ", arg%d", argIndex);
- }
- }
- fprintf(out, ");\n");
- fprintf(out, " }\n"); // close for-loop
- fprintf(out, " }\n"); // close if
- fprintf(out, " }\n"); // close method
- }
-}
-
-static void write_java_atom_codes(FILE* out, const Atoms& atoms, const string& moduleName) {
- fprintf(out, " // Constants for atom codes.\n");
-
- std::map<int, set<AtomDecl>::const_iterator> atom_code_to_non_chained_decl_map;
- build_non_chained_decl_map(atoms, &atom_code_to_non_chained_decl_map);
-
- // Print constants for the atom codes.
- for (set<AtomDecl>::const_iterator atom = atoms.decls.begin();
- atom != atoms.decls.end(); atom++) {
- // Skip if the atom is not needed for the module.
- if (!atom_needed_for_module(*atom, moduleName)) {
- continue;
- }
- string constant = make_constant_name(atom->name);
- fprintf(out, "\n");
- fprintf(out, " /**\n");
- fprintf(out, " * %s %s<br>\n", atom->message.c_str(), atom->name.c_str());
- write_java_usage(out, "write", constant, *atom);
- auto non_chained_decl = atom_code_to_non_chained_decl_map.find(atom->code);
- if (non_chained_decl != atom_code_to_non_chained_decl_map.end()) {
- write_java_usage(out, "write_non_chained", constant, *non_chained_decl->second);
- }
- if (moduleName == DEFAULT_MODULE_NAME) {
- fprintf(out, " * @hide\n");
- }
- fprintf(out, " */\n");
- fprintf(out, " public static final int %s = %d;\n", constant.c_str(), atom->code);
- }
- fprintf(out, "\n");
-}
-
-static void write_java_enum_values(FILE* out, const Atoms& atoms, const string& moduleName) {
- fprintf(out, " // Constants for enum values.\n\n");
- for (set<AtomDecl>::const_iterator atom = atoms.decls.begin();
- atom != atoms.decls.end(); atom++) {
- // Skip if the atom is not needed for the module.
- if (!atom_needed_for_module(*atom, moduleName)) {
- continue;
- }
- for (vector<AtomField>::const_iterator field = atom->fields.begin();
- field != atom->fields.end(); field++) {
- if (field->javaType == JAVA_TYPE_ENUM) {
- fprintf(out, " // Values for %s.%s\n", atom->message.c_str(),
- field->name.c_str());
- for (map<int, string>::const_iterator value = field->enumValues.begin();
- value != field->enumValues.end(); value++) {
- if (moduleName == DEFAULT_MODULE_NAME) {
- fprintf(out, " /** @hide */\n");
- }
- fprintf(out, " public static final int %s__%s__%s = %d;\n",
- make_constant_name(atom->message).c_str(),
- make_constant_name(field->name).c_str(),
- make_constant_name(value->second).c_str(),
- value->first);
- }
- fprintf(out, "\n");
- }
- }
- }
-}
-
-static int
-write_stats_log_java(FILE* out, const Atoms& atoms, const AtomDecl &attributionDecl)
-{
- // Print prelude
- fprintf(out, "// This file is autogenerated\n");
- fprintf(out, "\n");
- fprintf(out, "package android.util;\n");
- fprintf(out, "\n");
- fprintf(out, "import android.os.WorkSource;\n");
- fprintf(out, "import android.util.SparseArray;\n");
- fprintf(out, "import java.util.List;\n");
- fprintf(out, "\n");
- fprintf(out, "\n");
- fprintf(out, "/**\n");
- fprintf(out, " * API For logging statistics events.\n");
- fprintf(out, " * @hide\n");
- fprintf(out, " */\n");
- fprintf(out, "public class StatsLogInternal {\n");
- write_java_atom_codes(out, atoms, DEFAULT_MODULE_NAME);
-
- write_java_enum_values(out, atoms, DEFAULT_MODULE_NAME);
-
- // Print write methods
- fprintf(out, " // Write methods\n");
- write_java_method(out, "write", atoms.signatures_to_modules, attributionDecl);
- write_java_method(out, "write_non_chained", atoms.non_chained_signatures_to_modules,
- attributionDecl);
- write_java_work_source_method(out, atoms.signatures_to_modules, DEFAULT_MODULE_NAME);
-
- fprintf(out, "}\n");
-
- return 0;
-}
-
-// TODO: Merge this with write_stats_log_java so that we can get rid of StatsLogInternal JNI.
-static int
-write_stats_log_java_for_module(FILE* out, const Atoms& atoms, const AtomDecl &attributionDecl,
- const string& moduleName, const string& javaClass, const string& javaPackage)
-{
- // Print prelude
- fprintf(out, "// This file is autogenerated\n");
- fprintf(out, "\n");
- fprintf(out, "package %s;\n", javaPackage.c_str());
- fprintf(out, "\n");
- fprintf(out, "import static java.nio.charset.StandardCharsets.UTF_8;\n");
- fprintf(out, "\n");
- fprintf(out, "import android.util.StatsLog;\n");
- fprintf(out, "import android.os.SystemClock;\n");
- fprintf(out, "\n");
- fprintf(out, "import java.util.ArrayList;\n");
- fprintf(out, "\n");
- fprintf(out, "\n");
- fprintf(out, "/**\n");
- fprintf(out, " * Utility class for logging statistics events.\n");
- fprintf(out, " */\n");
- fprintf(out, "public class %s {\n", javaClass.c_str());
-
- // TODO: ideally these match with the native values (and automatically change if they change).
- fprintf(out, " private static final int LOGGER_ENTRY_MAX_PAYLOAD = 4068;\n");
- fprintf(out,
- " private static final int MAX_EVENT_PAYLOAD = LOGGER_ENTRY_MAX_PAYLOAD - 4;\n");
- // Value types. Must match with EventLog.java and log.h.
- fprintf(out, " private static final byte INT_TYPE = 0;\n");
- fprintf(out, " private static final byte LONG_TYPE = 1;\n");
- fprintf(out, " private static final byte STRING_TYPE = 2;\n");
- fprintf(out, " private static final byte LIST_TYPE = 3;\n");
- fprintf(out, " private static final byte FLOAT_TYPE = 4;\n");
-
- // Size of each value type.
- // Booleans, ints, floats, and enums take 5 bytes, 1 for the type and 4 for the value.
- fprintf(out, " private static final int INT_TYPE_SIZE = 5;\n");
- fprintf(out, " private static final int FLOAT_TYPE_SIZE = 5;\n");
- // Longs take 9 bytes, 1 for the type and 8 for the value.
- fprintf(out, " private static final int LONG_TYPE_SIZE = 9;\n");
- // Strings take 5 metadata bytes: 1 byte is for the type, 4 are for the length.
- fprintf(out, " private static final int STRING_TYPE_OVERHEAD = 5;\n");
- fprintf(out, " private static final int LIST_TYPE_OVERHEAD = 2;\n");
-
- write_java_atom_codes(out, atoms, moduleName);
-
- write_java_enum_values(out, atoms, moduleName);
-
- int errors = 0;
- int requiredHelpers = 0;
- // Print write methods
- fprintf(out, " // Write methods\n");
- errors += write_java_method_for_module(out, atoms.signatures_to_modules, attributionDecl,
- moduleName, &requiredHelpers);
- errors += write_java_non_chained_method_for_module(out, atoms.non_chained_signatures_to_modules,
- moduleName);
-
- fprintf(out, " // Helper methods for copying primitives\n");
- write_java_helpers_for_module(out, attributionDecl, requiredHelpers);
-
- fprintf(out, "}\n");
-
- return errors;
-}
-
+// Hide the JNI write helpers that are not used in the new schema.
+// TODO(b/145100015): Remove this and other JNI related functionality once StatsEvent migration is
+// complete.
+#if defined(STATS_SCHEMA_LEGACY)
+// JNI helpers.
static const char*
jni_type_name(java_type_t type)
{
@@ -1666,7 +947,7 @@
}
static int
-write_stats_log_jni(FILE* out, const string& java_method_name, const string& cpp_method_name,
+write_stats_log_jni_method(FILE* out, const string& java_method_name, const string& cpp_method_name,
const map<vector<java_type_t>, set<string>>& signatures_to_modules,
const AtomDecl &attributionDecl) {
// Print write methods
@@ -1882,40 +1163,56 @@
jni_function_name(java_method_name, signature).c_str());
}
}
+#endif // JNI helpers.
static int
+#if defined(STATS_SCHEMA_LEGACY)
write_stats_log_jni(FILE* out, const Atoms& atoms, const AtomDecl &attributionDecl)
+#else
+// Write empty JNI file that doesn't contain any JNI methods.
+// TODO(b/145100015): remove this function and all JNI autogen code once StatsEvent migration is
+// complete.
+write_stats_log_jni(FILE* out)
+#endif
{
// Print prelude
fprintf(out, "// This file is autogenerated\n");
fprintf(out, "\n");
+#if defined(STATS_SCHEMA_LEGACY)
fprintf(out, "#include <statslog.h>\n");
fprintf(out, "\n");
fprintf(out, "#include <nativehelper/JNIHelp.h>\n");
fprintf(out, "#include <nativehelper/ScopedUtfChars.h>\n");
fprintf(out, "#include <utils/Vector.h>\n");
+#endif
fprintf(out, "#include \"core_jni_helpers.h\"\n");
fprintf(out, "#include \"jni.h\"\n");
fprintf(out, "\n");
+#if defined(STATS_SCHEMA_LEGACY)
fprintf(out, "#define UNUSED __attribute__((__unused__))\n");
fprintf(out, "\n");
+#endif
fprintf(out, "namespace android {\n");
fprintf(out, "\n");
- write_stats_log_jni(out, "write", "stats_write", atoms.signatures_to_modules, attributionDecl);
- write_stats_log_jni(out, "write_non_chained", "stats_write_non_chained",
+#if defined(STATS_SCHEMA_LEGACY)
+ write_stats_log_jni_method(out, "write", "stats_write", atoms.signatures_to_modules, attributionDecl);
+ write_stats_log_jni_method(out, "write_non_chained", "stats_write_non_chained",
atoms.non_chained_signatures_to_modules, attributionDecl);
+#endif
// Print registration function table
fprintf(out, "/*\n");
fprintf(out, " * JNI registration.\n");
fprintf(out, " */\n");
fprintf(out, "static const JNINativeMethod gRegisterMethods[] = {\n");
+#if defined(STATS_SCHEMA_LEGACY)
write_jni_registration(out, "write", atoms.signatures_to_modules, attributionDecl);
write_jni_registration(out, "write_non_chained", atoms.non_chained_signatures_to_modules,
attributionDecl);
+#endif
fprintf(out, "};\n");
fprintf(out, "\n");
@@ -2112,13 +1409,25 @@
fprintf(stderr, "Must supply --javaPackage if supplying a specific module\n");
return 1;
}
+
+#if defined(STATS_SCHEMA_LEGACY)
if (moduleName == DEFAULT_MODULE_NAME) {
- errorCount = android::stats_log_api_gen::write_stats_log_java(
+ errorCount = android::stats_log_api_gen::write_stats_log_java_q(
out, atoms, attributionDecl);
} else {
- errorCount = android::stats_log_api_gen::write_stats_log_java_for_module(
+ errorCount = android::stats_log_api_gen::write_stats_log_java_q_for_module(
out, atoms, attributionDecl, moduleName, javaClass, javaPackage);
+
}
+#else
+ if (moduleName == DEFAULT_MODULE_NAME) {
+ javaClass = "StatsLogInternal";
+ javaPackage = "android.util";
+ }
+ errorCount = android::stats_log_api_gen::write_stats_log_java(
+ out, atoms, attributionDecl, moduleName, javaClass, javaPackage);
+#endif
+
fclose(out);
}
@@ -2129,16 +1438,22 @@
fprintf(stderr, "Unable to open file for write: %s\n", jniFilename.c_str());
return 1;
}
+
+#if defined(STATS_SCHEMA_LEGACY)
errorCount = android::stats_log_api_gen::write_stats_log_jni(
out, atoms, attributionDecl);
+#else
+ errorCount = android::stats_log_api_gen::write_stats_log_jni(out);
+#endif
+
fclose(out);
}
return errorCount;
}
-}
-}
+} // namespace stats_log_api_gen
+} // namespace android
/**
* Main.
diff --git a/tools/stats_log_api_gen/utils.cpp b/tools/stats_log_api_gen/utils.cpp
new file mode 100644
index 0000000..141861d
--- /dev/null
+++ b/tools/stats_log_api_gen/utils.cpp
@@ -0,0 +1,334 @@
+/*
+ * Copyright (C) 2019, 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.
+ */
+
+#include "utils.h"
+
+namespace android {
+namespace stats_log_api_gen {
+
+/**
+ * Turn lower and camel case into upper case with underscores.
+ */
+string make_constant_name(const string& str) {
+ string result;
+ const int N = str.size();
+ bool underscore_next = false;
+ for (int i=0; i<N; i++) {
+ char c = str[i];
+ if (c >= 'A' && c <= 'Z') {
+ if (underscore_next) {
+ result += '_';
+ underscore_next = false;
+ }
+ } else if (c >= 'a' && c <= 'z') {
+ c = 'A' + c - 'a';
+ underscore_next = true;
+ } else if (c == '_') {
+ underscore_next = false;
+ }
+ result += c;
+ }
+ return result;
+}
+
+const char* cpp_type_name(java_type_t type) {
+ switch (type) {
+ case JAVA_TYPE_BOOLEAN:
+ return "bool";
+ case JAVA_TYPE_INT:
+ case JAVA_TYPE_ENUM:
+ return "int32_t";
+ case JAVA_TYPE_LONG:
+ return "int64_t";
+ case JAVA_TYPE_FLOAT:
+ return "float";
+ case JAVA_TYPE_DOUBLE:
+ return "double";
+ case JAVA_TYPE_STRING:
+ return "char const*";
+ case JAVA_TYPE_BYTE_ARRAY:
+ return "const BytesField&";
+ default:
+ return "UNKNOWN";
+ }
+}
+
+const char* java_type_name(java_type_t type) {
+ switch (type) {
+ case JAVA_TYPE_BOOLEAN:
+ return "boolean";
+ case JAVA_TYPE_INT:
+ case JAVA_TYPE_ENUM:
+ return "int";
+ case JAVA_TYPE_LONG:
+ return "long";
+ case JAVA_TYPE_FLOAT:
+ return "float";
+ case JAVA_TYPE_DOUBLE:
+ return "double";
+ case JAVA_TYPE_STRING:
+ return "java.lang.String";
+ case JAVA_TYPE_BYTE_ARRAY:
+ return "byte[]";
+ default:
+ return "UNKNOWN";
+ }
+}
+
+bool atom_needed_for_module(const AtomDecl& atomDecl, const string& moduleName) {
+ if (moduleName == DEFAULT_MODULE_NAME) {
+ return true;
+ }
+ return atomDecl.hasModule && (moduleName == atomDecl.moduleName);
+}
+
+bool signature_needed_for_module(const set<string>& modules, const string& moduleName) {
+ if (moduleName == DEFAULT_MODULE_NAME) {
+ return true;
+ }
+ return modules.find(moduleName) != modules.end();
+}
+
+void build_non_chained_decl_map(const Atoms& atoms,
+ std::map<int, set<AtomDecl>::const_iterator>* decl_map) {
+ for (set<AtomDecl>::const_iterator atom = atoms.non_chained_decls.begin();
+ atom != atoms.non_chained_decls.end(); atom++) {
+ decl_map->insert(std::make_pair(atom->code, atom));
+ }
+}
+
+// Java
+void write_java_atom_codes(FILE* out, const Atoms& atoms, const string& moduleName) {
+ fprintf(out, " // Constants for atom codes.\n");
+
+ std::map<int, set<AtomDecl>::const_iterator> atom_code_to_non_chained_decl_map;
+ build_non_chained_decl_map(atoms, &atom_code_to_non_chained_decl_map);
+
+ // Print constants for the atom codes.
+ for (set<AtomDecl>::const_iterator atom = atoms.decls.begin();
+ atom != atoms.decls.end(); atom++) {
+ // Skip if the atom is not needed for the module.
+ if (!atom_needed_for_module(*atom, moduleName)) {
+ continue;
+ }
+ string constant = make_constant_name(atom->name);
+ fprintf(out, "\n");
+ fprintf(out, " /**\n");
+ fprintf(out, " * %s %s<br>\n", atom->message.c_str(), atom->name.c_str());
+ write_java_usage(out, "write", constant, *atom);
+ auto non_chained_decl = atom_code_to_non_chained_decl_map.find(atom->code);
+ if (non_chained_decl != atom_code_to_non_chained_decl_map.end()) {
+ write_java_usage(out, "write_non_chained", constant, *non_chained_decl->second);
+ }
+ if (moduleName == DEFAULT_MODULE_NAME) {
+ fprintf(out, " * @hide\n");
+ }
+ fprintf(out, " */\n");
+ fprintf(out, " public static final int %s = %d;\n", constant.c_str(), atom->code);
+ }
+ fprintf(out, "\n");
+}
+
+void write_java_enum_values(FILE* out, const Atoms& atoms, const string& moduleName) {
+ fprintf(out, " // Constants for enum values.\n\n");
+ for (set<AtomDecl>::const_iterator atom = atoms.decls.begin();
+ atom != atoms.decls.end(); atom++) {
+ // Skip if the atom is not needed for the module.
+ if (!atom_needed_for_module(*atom, moduleName)) {
+ continue;
+ }
+ for (vector<AtomField>::const_iterator field = atom->fields.begin();
+ field != atom->fields.end(); field++) {
+ if (field->javaType == JAVA_TYPE_ENUM) {
+ fprintf(out, " // Values for %s.%s\n", atom->message.c_str(),
+ field->name.c_str());
+ for (map<int, string>::const_iterator value = field->enumValues.begin();
+ value != field->enumValues.end(); value++) {
+ if (moduleName == DEFAULT_MODULE_NAME) {
+ fprintf(out, " /** @hide */\n");
+ }
+ fprintf(out, " public static final int %s__%s__%s = %d;\n",
+ make_constant_name(atom->message).c_str(),
+ make_constant_name(field->name).c_str(),
+ make_constant_name(value->second).c_str(),
+ value->first);
+ }
+ fprintf(out, "\n");
+ }
+ }
+ }
+}
+
+void write_java_usage(FILE* out, const string& method_name, const string& atom_code_name,
+ const AtomDecl& atom) {
+ fprintf(out, " * Usage: StatsLog.%s(StatsLog.%s",
+ method_name.c_str(), atom_code_name.c_str());
+ for (vector<AtomField>::const_iterator field = atom.fields.begin();
+ field != atom.fields.end(); field++) {
+ if (field->javaType == JAVA_TYPE_ATTRIBUTION_CHAIN) {
+ fprintf(out, ", android.os.WorkSource workSource");
+ } else if (field->javaType == JAVA_TYPE_KEY_VALUE_PAIR) {
+ fprintf(out, ", SparseArray<Object> value_map");
+ } else if (field->javaType == JAVA_TYPE_BYTE_ARRAY) {
+ fprintf(out, ", byte[] %s", field->name.c_str());
+ } else {
+ fprintf(out, ", %s %s", java_type_name(field->javaType), field->name.c_str());
+ }
+ }
+ fprintf(out, ");<br>\n");
+}
+
+int write_java_non_chained_methods(
+ FILE* out,
+ const map<vector<java_type_t>, set<string>>& signatures_to_modules,
+ const string& moduleName
+ ) {
+ for (auto signature_to_modules_it = signatures_to_modules.begin();
+ signature_to_modules_it != signatures_to_modules.end(); signature_to_modules_it++) {
+ // Skip if this signature is not needed for the module.
+ if (!signature_needed_for_module(signature_to_modules_it->second, moduleName)) {
+ continue;
+ }
+
+ // Print method signature.
+ if (DEFAULT_MODULE_NAME == moduleName) {
+ fprintf(out, " /** @hide */\n");
+ }
+ fprintf(out, " public static void write_non_chained(int code");
+ vector<java_type_t> signature = signature_to_modules_it->first;
+ int argIndex = 1;
+ for (vector<java_type_t>::const_iterator arg = signature.begin();
+ arg != signature.end(); arg++) {
+ if (*arg == JAVA_TYPE_ATTRIBUTION_CHAIN) {
+ // Non chained signatures should not have attribution chains.
+ return 1;
+ } else if (*arg == JAVA_TYPE_KEY_VALUE_PAIR) {
+ // Module logging does not yet support key value pair.
+ return 1;
+ } else {
+ fprintf(out, ", %s arg%d", java_type_name(*arg), argIndex);
+ }
+ argIndex++;
+ }
+ fprintf(out, ") {\n");
+
+ fprintf(out, " write(code");
+ argIndex = 1;
+ for (vector<java_type_t>::const_iterator arg = signature.begin();
+ arg != signature.end(); arg++) {
+ // First two args are uid and tag of attribution chain.
+ if (argIndex == 1) {
+ fprintf(out, ", new int[] {arg%d}", argIndex);
+ } else if (argIndex == 2) {
+ fprintf(out, ", new java.lang.String[] {arg%d}", argIndex);
+ } else {
+ fprintf(out, ", arg%d", argIndex);
+ }
+ argIndex++;
+ }
+ fprintf(out, ");\n");
+ fprintf(out, " }\n");
+ fprintf(out, "\n");
+ }
+ return 0;
+}
+
+int write_java_work_source_methods(
+ FILE* out,
+ const map<vector<java_type_t>, set<string>>& signatures_to_modules,
+ const string& moduleName
+ ) {
+ fprintf(out, " // WorkSource methods.\n");
+ for (auto signature_to_modules_it = signatures_to_modules.begin();
+ signature_to_modules_it != signatures_to_modules.end(); signature_to_modules_it++) {
+ // Skip if this signature is not needed for the module.
+ if (!signature_needed_for_module(signature_to_modules_it->second, moduleName)) {
+ continue;
+ }
+ vector<java_type_t> signature = signature_to_modules_it->first;
+ // Determine if there is Attribution in this signature.
+ int attributionArg = -1;
+ int argIndexMax = 0;
+ for (vector<java_type_t>::const_iterator arg = signature.begin();
+ arg != signature.end(); arg++) {
+ argIndexMax++;
+ if (*arg == JAVA_TYPE_ATTRIBUTION_CHAIN) {
+ if (attributionArg > -1) {
+ fprintf(stderr, "An atom contains multiple AttributionNode fields.\n");
+ fprintf(stderr, "This is not supported. Aborting WorkSource method writing.\n");
+ fprintf(out, "\n// Invalid for WorkSource: more than one attribution chain.\n");
+ return 1;
+ }
+ attributionArg = argIndexMax;
+ }
+ }
+ if (attributionArg < 0) {
+ continue;
+ }
+
+ fprintf(out, "\n");
+ // Method header (signature)
+ if (DEFAULT_MODULE_NAME == moduleName) {
+ fprintf(out, " /** @hide */\n");
+ }
+ fprintf(out, " public static void write(int code");
+ int argIndex = 1;
+ for (vector<java_type_t>::const_iterator arg = signature.begin();
+ arg != signature.end(); arg++) {
+ if (*arg == JAVA_TYPE_ATTRIBUTION_CHAIN) {
+ fprintf(out, ", WorkSource ws");
+ } else {
+ fprintf(out, ", %s arg%d", java_type_name(*arg), argIndex);
+ }
+ argIndex++;
+ }
+ fprintf(out, ") {\n");
+
+ // write_non_chained() component. TODO: Remove when flat uids are no longer needed.
+ fprintf(out, " for (int i = 0; i < ws.size(); ++i) {\n");
+ fprintf(out, " write_non_chained(code");
+ for (int argIndex = 1; argIndex <= argIndexMax; argIndex++) {
+ if (argIndex == attributionArg) {
+ fprintf(out, ", ws.getUid(i), ws.getPackageName(i)");
+ } else {
+ fprintf(out, ", arg%d", argIndex);
+ }
+ }
+ fprintf(out, ");\n");
+ fprintf(out, " }\n"); // close for-loop
+
+ // write() component.
+ fprintf(out, " List<WorkSource.WorkChain> workChains = ws.getWorkChains();\n");
+ fprintf(out, " if (workChains != null) {\n");
+ fprintf(out, " for (WorkSource.WorkChain wc : workChains) {\n");
+ fprintf(out, " write(code");
+ for (int argIndex = 1; argIndex <= argIndexMax; argIndex++) {
+ if (argIndex == attributionArg) {
+ fprintf(out, ", wc.getUids(), wc.getTags()");
+ } else {
+ fprintf(out, ", arg%d", argIndex);
+ }
+ }
+ fprintf(out, ");\n");
+ fprintf(out, " }\n"); // close for-loop
+ fprintf(out, " }\n"); // close if
+ fprintf(out, " }\n"); // close method
+ }
+ return 0;
+}
+
+} // namespace stats_log_api_gen
+} // namespace android
diff --git a/tools/stats_log_api_gen/utils.h b/tools/stats_log_api_gen/utils.h
new file mode 100644
index 0000000..e860fa9
--- /dev/null
+++ b/tools/stats_log_api_gen/utils.h
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2019, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#pragma once
+
+#include "Collation.h"
+
+#include <map>
+#include <set>
+#include <vector>
+
+#include <stdio.h>
+#include <string.h>
+
+namespace android {
+namespace stats_log_api_gen {
+
+using namespace std;
+
+const string DEFAULT_MODULE_NAME = "DEFAULT";
+const string DEFAULT_CPP_NAMESPACE = "android,util";
+const string DEFAULT_CPP_HEADER_IMPORT = "statslog.h";
+const string DEFAULT_JAVA_PACKAGE = "android.util";
+const string DEFAULT_JAVA_CLASS = "StatsLogInternal";
+
+const int JAVA_MODULE_REQUIRES_FLOAT = 0x01;
+const int JAVA_MODULE_REQUIRES_ATTRIBUTION = 0x02;
+
+string make_constant_name(const string& str);
+
+const char* cpp_type_name(java_type_t type);
+
+const char* java_type_name(java_type_t type);
+
+bool atom_needed_for_module(const AtomDecl& atomDecl, const string& moduleName);
+
+bool signature_needed_for_module(const set<string>& modules, const string& moduleName);
+
+void build_non_chained_decl_map(const Atoms& atoms,
+ std::map<int, set<AtomDecl>::const_iterator>* decl_map);
+
+// Common Java helpers.
+void write_java_atom_codes(FILE* out, const Atoms& atoms, const string& moduleName);
+
+void write_java_enum_values(FILE* out, const Atoms& atoms, const string& moduleName);
+
+void write_java_usage(FILE* out, const string& method_name, const string& atom_code_name,
+ const AtomDecl& atom);
+
+int write_java_non_chained_methods(FILE* out, const map<vector<java_type_t>,
+ set<string>>& signatures_to_modules,
+ const string& moduleName
+);
+
+int write_java_work_source_methods(
+ FILE* out,
+ const map<vector<java_type_t>, set<string>>& signatures_to_modules,
+ const string& moduleName
+);
+
+} // namespace stats_log_api_gen
+} // namespace android
diff --git a/wifi/java/android/net/wifi/IScanResultsCallback.aidl b/wifi/java/android/net/wifi/IScanResultsCallback.aidl
new file mode 100644
index 0000000..56f6025
--- /dev/null
+++ b/wifi/java/android/net/wifi/IScanResultsCallback.aidl
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2019 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.wifi;
+
+/**
+ * Interface for Wi-Fi scan result available callback.
+ *
+ * @hide
+ */
+oneway interface IScanResultsCallback
+{
+ void onScanResultsAvailable();
+}
diff --git a/wifi/java/android/net/wifi/IScanResultsListener.aidl b/wifi/java/android/net/wifi/IScanResultsListener.aidl
index bec74a6..e7eaddd 100644
--- a/wifi/java/android/net/wifi/IScanResultsListener.aidl
+++ b/wifi/java/android/net/wifi/IScanResultsListener.aidl
@@ -16,11 +16,8 @@
package android.net.wifi;
-/**
- * Interface for Wi-Fi scan result available callback.
- *
- * @hide
- */
+/** @hide */
+
oneway interface IScanResultsListener
{
void onScanResultsAvailable();
diff --git a/wifi/java/android/net/wifi/IWifiManager.aidl b/wifi/java/android/net/wifi/IWifiManager.aidl
index 4619372..032f66a 100644
--- a/wifi/java/android/net/wifi/IWifiManager.aidl
+++ b/wifi/java/android/net/wifi/IWifiManager.aidl
@@ -28,7 +28,7 @@
import android.net.wifi.IDppCallback;
import android.net.wifi.ILocalOnlyHotspotCallback;
import android.net.wifi.INetworkRequestMatchCallback;
-import android.net.wifi.IScanResultsListener;
+import android.net.wifi.IScanResultsCallback;
import android.net.wifi.ISoftApCallback;
import android.net.wifi.ISuggestionConnectionStatusListener;
import android.net.wifi.ITrafficStateCallback;
@@ -142,6 +142,8 @@
boolean startSoftAp(in WifiConfiguration wifiConfig);
+ boolean startTetheredHotspot(in SoftApConfiguration softApConfig);
+
boolean stopSoftAp();
int startLocalOnlyHotspot(in ILocalOnlyHotspotCallback callback, String packageName,
@@ -159,8 +161,14 @@
@UnsupportedAppUsage
WifiConfiguration getWifiApConfiguration();
+ SoftApConfiguration getSoftApConfiguration();
+
boolean setWifiApConfiguration(in WifiConfiguration wifiConfig, String packageName);
+ boolean setSoftApConfiguration(in SoftApConfiguration softApConfig, String packageName);
+
+ void notifyUserOfApBandConversion(String packageName);
+
void enableTdls(String remoteIPAddress, boolean enable);
void enableTdlsWithMacAddress(String remoteMacAddress, boolean enable);
@@ -184,6 +192,10 @@
void restoreBackupData(in byte[] data);
+ byte[] retrieveSoftApBackupData();
+
+ void restoreSoftApBackupData(in byte[] data);
+
void restoreSupplicantBackupData(in byte[] supplicantData, in byte[] ipConfigData);
void startSubscriptionProvisioning(in OsuProvider provider, in IProvisioningCallback callback);
@@ -233,9 +245,9 @@
oneway void getTxPacketCount(String packageName, in IBinder binder, in ITxPacketCountListener listener, int callbackIdentifier);
- void registerScanResultsListener(in IBinder binder, in IScanResultsListener Listener, int listenerIdentifier);
+ void registerScanResultsCallback(in IScanResultsCallback callback);
- void unregisterScanResultsListener(int listenerIdentifier);
+ void unregisterScanResultsCallback(in IScanResultsCallback callback);
void registerSuggestionConnectionStatusListener(in IBinder binder, in ISuggestionConnectionStatusListener listener, int listenerIdentifier, String packageName, String featureId);
diff --git a/wifi/java/android/net/wifi/SoftApConfiguration.java b/wifi/java/android/net/wifi/SoftApConfiguration.java
index 4cc8653..d755053 100644
--- a/wifi/java/android/net/wifi/SoftApConfiguration.java
+++ b/wifi/java/android/net/wifi/SoftApConfiguration.java
@@ -16,28 +16,34 @@
package android.net.wifi;
+import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.net.MacAddress;
import android.os.Parcel;
import android.os.Parcelable;
+import android.text.TextUtils;
import com.android.internal.util.Preconditions;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.nio.charset.CharsetEncoder;
import java.nio.charset.StandardCharsets;
import java.util.Objects;
import java.util.concurrent.Executor;
/**
- * WiFi configuration for a soft access point (a.k.a. Soft AP, SAP, Hotspot).
+ * Configuration for a soft access point (a.k.a. Soft AP, SAP, Hotspot).
*
* This is input for the framework provided by a client app, i.e. it exposes knobs to instruct the
- * framework how it should open a hotspot. It is not meant to describe the network as it will be
- * seen by clients; this role is currently served by {@link WifiConfiguration} (see
- * {@link WifiManager.LocalOnlyHotspotReservation#getWifiConfiguration()}).
+ * framework how it should configure a hotspot.
*
- * System apps can use this to configure a local-only hotspot using
+ * System apps can use this to configure a tethered hotspot using
+ * {@link WifiManager#startTetheredHotspot(SoftApConfiguration)} and
+ * {@link WifiManager#setSoftApConfiguration(SoftApConfiguration)}
+ * or local-only hotspot using
* {@link WifiManager#startLocalOnlyHotspot(SoftApConfiguration, Executor,
* WifiManager.LocalOnlyHotspotCallback)}.
*
@@ -48,25 +54,106 @@
*/
@SystemApi
public final class SoftApConfiguration implements Parcelable {
+
+ /**
+ * 2GHz band.
+ * @hide
+ */
+ @SystemApi
+ public static final int BAND_2GHZ = 0;
+
+ /**
+ * 5GHz band.
+ * @hide
+ */
+ @SystemApi
+ public static final int BAND_5GHZ = 1;
+
+ /**
+ * Device is allowed to choose the optimal band (2Ghz or 5Ghz) based on device capability,
+ * operating country code and current radio conditions.
+ * @hide
+ */
+ @SystemApi
+ public static final int BAND_ANY = -1;
+
+ /** @hide */
+ @Retention(RetentionPolicy.SOURCE)
+ @IntDef(prefix = { "BAND_TYPE_" }, value = {
+ BAND_2GHZ,
+ BAND_5GHZ,
+ BAND_ANY,
+ })
+ public @interface BandType {}
+
/**
* SSID for the AP, or null for a framework-determined SSID.
*/
private final @Nullable String mSsid;
+
/**
* BSSID for the AP, or null to use a framework-determined BSSID.
*/
private final @Nullable MacAddress mBssid;
+
/**
* Pre-shared key for WPA2-PSK encryption (non-null enables WPA2-PSK).
*/
private final @Nullable String mWpa2Passphrase;
+ /**
+ * This is a network that does not broadcast its SSID, so an
+ * SSID-specific probe request must be used for scans.
+ */
+ private final boolean mHiddenSsid;
+
+ /**
+ * The operating band of the AP.
+ * One of the band types from {@link @BandType}.
+ */
+ private final @BandType int mBand;
+
+ /**
+ * The operating channel of the AP.
+ */
+ private final int mChannel;
+
+ /**
+ * The operating security type of the AP.
+ * One of the security types from {@link @SecurityType}
+ */
+ private final @SecurityType int mSecurityType;
+
+ /**
+ * Security types we support.
+ */
+ /** @hide */
+ @SystemApi
+ public static final int SECURITY_TYPE_OPEN = 0;
+
+ /** @hide */
+ @SystemApi
+ public static final int SECURITY_TYPE_WPA2_PSK = 1;
+
+ /** @hide */
+ @Retention(RetentionPolicy.SOURCE)
+ @IntDef(prefix = { "SECURITY_TYPE" }, value = {
+ SECURITY_TYPE_OPEN,
+ SECURITY_TYPE_WPA2_PSK,
+ })
+ public @interface SecurityType {}
+
/** Private constructor for Builder and Parcelable implementation. */
- private SoftApConfiguration(
- @Nullable String ssid, @Nullable MacAddress bssid, String wpa2Passphrase) {
+ private SoftApConfiguration(@Nullable String ssid, @Nullable MacAddress bssid,
+ @Nullable String wpa2Passphrase, boolean hiddenSsid, @BandType int band, int channel,
+ @SecurityType int securityType) {
mSsid = ssid;
mBssid = bssid;
mWpa2Passphrase = wpa2Passphrase;
+ mHiddenSsid = hiddenSsid;
+ mBand = band;
+ mChannel = channel;
+ mSecurityType = securityType;
}
@Override
@@ -80,12 +167,31 @@
SoftApConfiguration other = (SoftApConfiguration) otherObj;
return Objects.equals(mSsid, other.mSsid)
&& Objects.equals(mBssid, other.mBssid)
- && Objects.equals(mWpa2Passphrase, other.mWpa2Passphrase);
+ && Objects.equals(mWpa2Passphrase, other.mWpa2Passphrase)
+ && mHiddenSsid == other.mHiddenSsid
+ && mBand == other.mBand
+ && mChannel == other.mChannel
+ && mSecurityType == other.mSecurityType;
}
@Override
public int hashCode() {
- return Objects.hash(mSsid, mBssid, mWpa2Passphrase);
+ return Objects.hash(mSsid, mBssid, mWpa2Passphrase, mHiddenSsid,
+ mBand, mChannel, mSecurityType);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sbuf = new StringBuilder();
+ sbuf.append("ssid=").append(mSsid);
+ if (mBssid != null) sbuf.append(" \n bssid=").append(mBssid.toString());
+ sbuf.append(" \n Wpa2Passphrase =").append(
+ TextUtils.isEmpty(mWpa2Passphrase) ? "<empty>" : "<non-empty>");
+ sbuf.append(" \n HiddenSsid =").append(mHiddenSsid);
+ sbuf.append(" \n Band =").append(mBand);
+ sbuf.append(" \n Channel =").append(mChannel);
+ sbuf.append(" \n SecurityType=").append(getSecurityType());
+ return sbuf.toString();
}
@Override
@@ -93,6 +199,10 @@
dest.writeString(mSsid);
dest.writeParcelable(mBssid, flags);
dest.writeString(mWpa2Passphrase);
+ dest.writeBoolean(mHiddenSsid);
+ dest.writeInt(mBand);
+ dest.writeInt(mChannel);
+ dest.writeInt(mSecurityType);
}
@Override
@@ -107,7 +217,7 @@
return new SoftApConfiguration(
in.readString(),
in.readParcelable(MacAddress.class.getClassLoader()),
- in.readString());
+ in.readString(), in.readBoolean(), in.readInt(), in.readInt(), in.readInt());
}
@Override
@@ -116,22 +226,68 @@
}
};
+ /**
+ * Return String set to be the SSID for the AP.
+ * {@link #setSsid(String)}.
+ */
@Nullable
public String getSsid() {
return mSsid;
}
+ /**
+ * Returns MAC address set to be BSSID for the AP.
+ * {@link #setBssid(MacAddress)}.
+ */
@Nullable
public MacAddress getBssid() {
return mBssid;
}
+ /**
+ * Returns String set to be passphrase for the WPA2-PSK AP.
+ * {@link #setWpa2Passphrase(String)}.
+ */
@Nullable
public String getWpa2Passphrase() {
return mWpa2Passphrase;
}
/**
+ * Returns Boolean set to be indicate hidden (true: doesn't broadcast its SSID) or
+ * not (false: broadcasts its SSID) for the AP.
+ * {@link #setHiddenSsid(boolean)}.
+ */
+ public boolean isHiddenSsid() {
+ return mHiddenSsid;
+ }
+
+ /**
+ * Returns {@link BandType} set to be the band for the AP.
+ * {@link #setBand(@BandType int)}.
+ */
+ public @BandType int getBand() {
+ return mBand;
+ }
+
+ /**
+ * Returns Integer set to be the channel for the AP.
+ * {@link #setChannel(int)}.
+ */
+ public int getChannel() {
+ return mChannel;
+ }
+
+ /**
+ * Get security type params which depends on which security passphrase to set.
+ *
+ * @return One of the security types from {@link SecurityType}.
+ */
+ public @SecurityType int getSecurityType() {
+ return mSecurityType;
+ }
+
+ /**
* Builds a {@link SoftApConfiguration}, which allows an app to configure various aspects of a
* Soft AP.
*
@@ -142,6 +298,21 @@
private String mSsid;
private MacAddress mBssid;
private String mWpa2Passphrase;
+ private boolean mHiddenSsid;
+ private int mBand;
+ private int mChannel;
+
+ private int setSecurityType() {
+ int securityType = SECURITY_TYPE_OPEN;
+ if (!TextUtils.isEmpty(mWpa2Passphrase)) { // WPA2-PSK network.
+ securityType = SECURITY_TYPE_WPA2_PSK;
+ }
+ return securityType;
+ }
+
+ private void clearAllPassphrase() {
+ mWpa2Passphrase = null;
+ }
/**
* Constructs a Builder with default values (see {@link Builder}).
@@ -150,6 +321,9 @@
mSsid = null;
mBssid = null;
mWpa2Passphrase = null;
+ mHiddenSsid = false;
+ mBand = BAND_2GHZ;
+ mChannel = 0;
}
/**
@@ -161,6 +335,9 @@
mSsid = other.mSsid;
mBssid = other.mBssid;
mWpa2Passphrase = other.mWpa2Passphrase;
+ mHiddenSsid = other.mHiddenSsid;
+ mBand = other.mBand;
+ mChannel = other.mChannel;
}
/**
@@ -170,11 +347,16 @@
*/
@NonNull
public SoftApConfiguration build() {
- return new SoftApConfiguration(mSsid, mBssid, mWpa2Passphrase);
+ return new SoftApConfiguration(mSsid, mBssid, mWpa2Passphrase,
+ mHiddenSsid, mBand, mChannel, setSecurityType());
}
/**
* Specifies an SSID for the AP.
+ * <p>
+ * Null SSID only support when configure a local-only hotspot.
+ * <p>
+ * <li>If not set, defaults to null.</li>
*
* @param ssid SSID of valid Unicode characters, or null to have the SSID automatically
* chosen by the framework.
@@ -193,7 +375,10 @@
/**
* Specifies a BSSID for the AP.
- *
+ * <p>
+ * Only supported when configuring a local-only hotspot.
+ * <p>
+ * <li>If not set, defaults to null.</li>
* @param bssid BSSID, or null to have the BSSID chosen by the framework. The caller is
* responsible for avoiding collisions.
* @return Builder for chaining.
@@ -203,7 +388,7 @@
@NonNull
public Builder setBssid(@Nullable MacAddress bssid) {
if (bssid != null) {
- Preconditions.checkArgument(!bssid.equals(MacAddress.ALL_ZEROS_ADDRESS));
+ Preconditions.checkArgument(!bssid.equals(WifiManager.ALL_ZEROS_MAC_ADDRESS));
Preconditions.checkArgument(!bssid.equals(MacAddress.BROADCAST_ADDRESS));
}
mBssid = bssid;
@@ -211,8 +396,9 @@
}
/**
- * Specifies that this AP should use WPA2-PSK with the given passphrase. When set to null
- * and no other encryption method is configured, an open network is created.
+ * Specifies that this AP should use WPA2-PSK with the given ASCII WPA2 passphrase.
+ * When set to null, an open network is created.
+ * <p>
*
* @param passphrase The passphrase to use, or null to unset a previously-set WPA2-PSK
* configuration.
@@ -222,10 +408,72 @@
@NonNull
public Builder setWpa2Passphrase(@Nullable String passphrase) {
if (passphrase != null) {
+ final CharsetEncoder asciiEncoder = StandardCharsets.US_ASCII.newEncoder();
+ if (!asciiEncoder.canEncode(passphrase)) {
+ throw new IllegalArgumentException("passphrase not ASCII encodable");
+ }
Preconditions.checkStringNotEmpty(passphrase);
}
+ clearAllPassphrase();
mWpa2Passphrase = passphrase;
return this;
}
+
+ /**
+ * Specifies whether the AP is hidden (doesn't broadcast its SSID) or
+ * not (broadcasts its SSID).
+ * <p>
+ * <li>If not set, defaults to false (i.e not a hidden network).</li>
+ *
+ * @param hiddenSsid true for a hidden SSID, false otherwise.
+ * @return Builder for chaining.
+ */
+ @NonNull
+ public Builder setHiddenSsid(boolean hiddenSsid) {
+ mHiddenSsid = hiddenSsid;
+ return this;
+ }
+
+ /**
+ * Specifies the band for the AP.
+ * <p>
+ * <li>If not set, defaults to BAND_2GHZ {@link @BandType}.</li>
+ *
+ * @param band One of the band types from {@link @BandType}.
+ * @return Builder for chaining.
+ */
+ @NonNull
+ public Builder setBand(@BandType int band) {
+ switch (band) {
+ case BAND_2GHZ:
+ break;
+ case BAND_5GHZ:
+ break;
+ case BAND_ANY:
+ break;
+ default:
+ throw new IllegalArgumentException("Invalid band type");
+ }
+ mBand = band;
+ return this;
+ }
+
+ /**
+ * Specifies the channel for the AP.
+ *
+ * The channel which AP resides on. Valid channels are country dependent.
+ * Use the special channel value 0 to have the framework auto-select a valid channel
+ * from the band configured with {@link #setBand(@BandType int)}.
+ *
+ * <p>
+ * <li>If not set, defaults to 0.</li>
+ * @param channel operating channel of the AP.
+ * @return Builder for chaining.
+ */
+ @NonNull
+ public Builder setChannel(int channel) {
+ mChannel = channel;
+ return this;
+ }
}
}
diff --git a/wifi/java/android/net/wifi/SynchronousExecutor.java b/wifi/java/android/net/wifi/SynchronousExecutor.java
new file mode 100644
index 0000000..9926b1b
--- /dev/null
+++ b/wifi/java/android/net/wifi/SynchronousExecutor.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2019 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.wifi;
+
+import java.util.concurrent.Executor;
+
+/**
+ * An executor implementation that runs synchronously on the current thread.
+ * @hide
+ */
+public class SynchronousExecutor implements Executor {
+ @Override
+ public void execute(Runnable r) {
+ r.run();
+ }
+}
diff --git a/wifi/java/android/net/wifi/WifiActivityEnergyInfo.java b/wifi/java/android/net/wifi/WifiActivityEnergyInfo.java
index 0f7fc2d..f0f31fa 100644
--- a/wifi/java/android/net/wifi/WifiActivityEnergyInfo.java
+++ b/wifi/java/android/net/wifi/WifiActivityEnergyInfo.java
@@ -16,10 +16,14 @@
package android.net.wifi;
+import android.annotation.IntDef;
+import android.annotation.NonNull;
+import android.annotation.SystemApi;
import android.os.Parcel;
import android.os.Parcelable;
-import java.util.Arrays;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
/**
* Record of energy and activity information from controller and
@@ -27,179 +31,197 @@
* real-time.
* @hide
*/
+@SystemApi
public final class WifiActivityEnergyInfo implements Parcelable {
- /**
- * @hide
- */
- public long mTimestamp;
+ private long mTimeSinceBootMillis;
+ @StackState
+ private int mStackState;
+ private long mControllerTxDurationMillis;
+ private long mControllerRxDurationMillis;
+ private long mControllerScanDurationMillis;
+ private long mControllerIdleDurationMillis;
+ private long mControllerEnergyUsedMicroJoules;
- /**
- * @hide
- */
- public int mStackState;
+ /** @hide */
+ @Retention(RetentionPolicy.SOURCE)
+ @IntDef(prefix = {"STACK_STATE_"}, value = {
+ STACK_STATE_INVALID,
+ STACK_STATE_STATE_ACTIVE,
+ STACK_STATE_STATE_SCANNING,
+ STACK_STATE_STATE_IDLE})
+ public @interface StackState {}
- /**
- * @hide
- */
- public long mControllerTxTimeMs;
-
- /**
- * @hide
- */
- public long[] mControllerTxTimePerLevelMs;
-
- /**
- * @hide
- */
- public long mControllerRxTimeMs;
-
- /**
- * @hide
- */
- public long mControllerScanTimeMs;
-
- /**
- * @hide
- */
- public long mControllerIdleTimeMs;
-
- /**
- * @hide
- */
- public long mControllerEnergyUsed;
-
+ /** Invalid Wifi stack state. */
public static final int STACK_STATE_INVALID = 0;
+ /** Wifi stack is active. */
public static final int STACK_STATE_STATE_ACTIVE = 1;
+ /** Wifi stack is scanning. */
public static final int STACK_STATE_STATE_SCANNING = 2;
+ /** Wifi stack is idle. */
public static final int STACK_STATE_STATE_IDLE = 3;
- public WifiActivityEnergyInfo(long timestamp, int stackState,
- long txTime, long[] txTimePerLevel, long rxTime, long scanTime,
- long idleTime, long energyUsed) {
- mTimestamp = timestamp;
+ /**
+ * Constructor.
+ *
+ * @param timeSinceBootMillis the time since boot, in milliseconds.
+ * @param stackState The current state of the Wifi Stack. One of {@link #STACK_STATE_INVALID},
+ * {@link #STACK_STATE_STATE_ACTIVE}, {@link #STACK_STATE_STATE_SCANNING},
+ * or {@link #STACK_STATE_STATE_IDLE}.
+ * @param txDurationMillis Cumulative milliseconds of active transmission.
+ * @param rxDurationMillis Cumulative milliseconds of active receive.
+ * @param scanDurationMillis Cumulative milliseconds when radio is awake due to scan.
+ * @param idleDurationMillis Cumulative milliseconds when radio is awake but not transmitting or
+ * receiving.
+ * @param energyUsedMicroJoules Cumulative energy consumed by Wifi, in microjoules.
+ */
+ public WifiActivityEnergyInfo(
+ long timeSinceBootMillis,
+ @StackState int stackState,
+ long txDurationMillis,
+ long rxDurationMillis,
+ long scanDurationMillis,
+ long idleDurationMillis,
+ long energyUsedMicroJoules) {
+ mTimeSinceBootMillis = timeSinceBootMillis;
mStackState = stackState;
- mControllerTxTimeMs = txTime;
- mControllerTxTimePerLevelMs = txTimePerLevel;
- mControllerRxTimeMs = rxTime;
- mControllerScanTimeMs = scanTime;
- mControllerIdleTimeMs = idleTime;
- mControllerEnergyUsed = energyUsed;
+ mControllerTxDurationMillis = txDurationMillis;
+ mControllerRxDurationMillis = rxDurationMillis;
+ mControllerScanDurationMillis = scanDurationMillis;
+ mControllerIdleDurationMillis = idleDurationMillis;
+ mControllerEnergyUsedMicroJoules = energyUsedMicroJoules;
}
@Override
public String toString() {
return "WifiActivityEnergyInfo{"
- + " timestamp=" + mTimestamp
- + " mStackState=" + mStackState
- + " mControllerTxTimeMs=" + mControllerTxTimeMs
- + " mControllerTxTimePerLevelMs=" + Arrays.toString(mControllerTxTimePerLevelMs)
- + " mControllerRxTimeMs=" + mControllerRxTimeMs
- + " mControllerScanTimeMs=" + mControllerScanTimeMs
- + " mControllerIdleTimeMs=" + mControllerIdleTimeMs
- + " mControllerEnergyUsed=" + mControllerEnergyUsed
- + " }";
+ + " mTimeSinceBootMillis=" + mTimeSinceBootMillis
+ + " mStackState=" + mStackState
+ + " mControllerTxDurationMillis=" + mControllerTxDurationMillis
+ + " mControllerRxDurationMillis=" + mControllerRxDurationMillis
+ + " mControllerScanDurationMillis=" + mControllerScanDurationMillis
+ + " mControllerIdleDurationMillis=" + mControllerIdleDurationMillis
+ + " mControllerEnergyUsedMicroJoules=" + mControllerEnergyUsedMicroJoules
+ + " }";
}
- public static final @android.annotation.NonNull Parcelable.Creator<WifiActivityEnergyInfo> CREATOR =
+ public static final @NonNull Parcelable.Creator<WifiActivityEnergyInfo> CREATOR =
new Parcelable.Creator<WifiActivityEnergyInfo>() {
public WifiActivityEnergyInfo createFromParcel(Parcel in) {
long timestamp = in.readLong();
int stackState = in.readInt();
long txTime = in.readLong();
- long[] txTimePerLevel = in.createLongArray();
long rxTime = in.readLong();
long scanTime = in.readLong();
long idleTime = in.readLong();
long energyUsed = in.readLong();
return new WifiActivityEnergyInfo(timestamp, stackState,
- txTime, txTimePerLevel, rxTime, scanTime, idleTime, energyUsed);
+ txTime, rxTime, scanTime, idleTime, energyUsed);
}
public WifiActivityEnergyInfo[] newArray(int size) {
return new WifiActivityEnergyInfo[size];
}
};
- public void writeToParcel(Parcel out, int flags) {
- out.writeLong(mTimestamp);
+ @Override
+ public void writeToParcel(@NonNull Parcel out, int flags) {
+ out.writeLong(mTimeSinceBootMillis);
out.writeInt(mStackState);
- out.writeLong(mControllerTxTimeMs);
- out.writeLongArray(mControllerTxTimePerLevelMs);
- out.writeLong(mControllerRxTimeMs);
- out.writeLong(mControllerScanTimeMs);
- out.writeLong(mControllerIdleTimeMs);
- out.writeLong(mControllerEnergyUsed);
+ out.writeLong(mControllerTxDurationMillis);
+ out.writeLong(mControllerRxDurationMillis);
+ out.writeLong(mControllerScanDurationMillis);
+ out.writeLong(mControllerIdleDurationMillis);
+ out.writeLong(mControllerEnergyUsedMicroJoules);
}
+ @Override
public int describeContents() {
return 0;
}
+ /** Get the timestamp (milliseconds since boot) of record creation. */
+ public long getTimeSinceBootMillis() {
+ return mTimeSinceBootMillis;
+ }
+
+ /** Set the timestamp (milliseconds since boot) of record creation. */
+ public void setTimeSinceBootMillis(long timeSinceBootMillis) {
+ mTimeSinceBootMillis = timeSinceBootMillis;
+ }
+
/**
- * @return bt stack reported state
+ * Get the Wifi stack reported state. One of {@link #STACK_STATE_INVALID},
+ * {@link #STACK_STATE_STATE_ACTIVE}, {@link #STACK_STATE_STATE_SCANNING},
+ * {@link #STACK_STATE_STATE_IDLE}.
*/
+ @StackState
public int getStackState() {
return mStackState;
}
/**
- * @return tx time in ms
+ * Set the Wifi stack reported state. One of {@link #STACK_STATE_INVALID},
+ * {@link #STACK_STATE_STATE_ACTIVE}, {@link #STACK_STATE_STATE_SCANNING},
+ * {@link #STACK_STATE_STATE_IDLE}.
*/
- public long getControllerTxTimeMillis() {
- return mControllerTxTimeMs;
+ public void setStackState(@StackState int stackState) {
+ mStackState = stackState;
}
- /**
- * @return tx time at power level provided in ms
- */
- public long getControllerTxTimeMillisAtLevel(int level) {
- if (level < mControllerTxTimePerLevelMs.length) {
- return mControllerTxTimePerLevelMs[level];
- }
- return 0;
+ /** Get the Wifi transmission duration, in milliseconds. */
+ public long getControllerTxDurationMillis() {
+ return mControllerTxDurationMillis;
}
- /**
- * @return rx time in ms
- */
- public long getControllerRxTimeMillis() {
- return mControllerRxTimeMs;
+ /** Set the Wifi transmission duration, in milliseconds. */
+ public void setControllerTxDurationMillis(long controllerTxDurationMillis) {
+ mControllerTxDurationMillis = controllerTxDurationMillis;
}
- /**
- * @return scan time in ms
- */
- public long getControllerScanTimeMillis() {
- return mControllerScanTimeMs;
+ /** Get the Wifi receive duration, in milliseconds. */
+ public long getControllerRxDurationMillis() {
+ return mControllerRxDurationMillis;
}
- /**
- * @return idle time in ms
- */
- public long getControllerIdleTimeMillis() {
- return mControllerIdleTimeMs;
+ /** Set the Wifi receive duration, in milliseconds. */
+ public void setControllerRxDurationMillis(long controllerRxDurationMillis) {
+ mControllerRxDurationMillis = controllerRxDurationMillis;
}
- /**
- * product of current(mA), voltage(V) and time(ms)
- * @return energy used
- */
- public long getControllerEnergyUsed() {
- return mControllerEnergyUsed;
- }
- /**
- * @return timestamp(wall clock) of record creation
- */
- public long getTimeStamp() {
- return mTimestamp;
+ /** Get the Wifi scan duration, in milliseconds. */
+ public long getControllerScanDurationMillis() {
+ return mControllerScanDurationMillis;
}
- /**
- * @return if the record is valid
- */
+ /** Set the Wifi scan duration, in milliseconds. */
+ public void setControllerScanDurationMillis(long controllerScanDurationMillis) {
+ mControllerScanDurationMillis = controllerScanDurationMillis;
+ }
+
+ /** Get the Wifi idle duration, in milliseconds. */
+ public long getControllerIdleDurationMillis() {
+ return mControllerIdleDurationMillis;
+ }
+
+ /** Set the Wifi idle duration, in milliseconds. */
+ public void setControllerIdleDurationMillis(long controllerIdleDurationMillis) {
+ mControllerIdleDurationMillis = controllerIdleDurationMillis;
+ }
+
+ /** Get the energy consumed by Wifi, in microjoules. */
+ public long getControllerEnergyUsedMicroJoules() {
+ return mControllerEnergyUsedMicroJoules;
+ }
+
+ /** Set the energy consumed by Wifi, in microjoules. */
+ public void setControllerEnergyUsedMicroJoules(long controllerEnergyUsedMicroJoules) {
+ mControllerEnergyUsedMicroJoules = controllerEnergyUsedMicroJoules;
+ }
+
+ /** Returns true if the record is valid, false otherwise. */
public boolean isValid() {
- return ((mControllerTxTimeMs >=0) &&
- (mControllerRxTimeMs >=0) &&
- (mControllerScanTimeMs >=0) &&
- (mControllerIdleTimeMs >=0));
+ return mControllerTxDurationMillis >= 0
+ && mControllerRxDurationMillis >= 0
+ && mControllerScanDurationMillis >= 0
+ && mControllerIdleDurationMillis >= 0;
}
-}
\ No newline at end of file
+}
diff --git a/wifi/java/android/net/wifi/WifiConfiguration.java b/wifi/java/android/net/wifi/WifiConfiguration.java
index 90343d4..d068fc6 100644
--- a/wifi/java/android/net/wifi/WifiConfiguration.java
+++ b/wifi/java/android/net/wifi/WifiConfiguration.java
@@ -38,7 +38,7 @@
import android.text.TextUtils;
import android.util.BackupUtils;
import android.util.Log;
-import android.util.TimeUtils;
+import android.util.SparseArray;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
@@ -48,6 +48,7 @@
import java.lang.annotation.RetentionPolicy;
import java.util.Arrays;
import java.util.BitSet;
+import java.util.Calendar;
import java.util.HashMap;
/**
@@ -86,7 +87,12 @@
public static final String pmfVarName = "ieee80211w";
/** {@hide} */
public static final String updateIdentiferVarName = "update_identifier";
- /** {@hide} */
+ /**
+ * The network ID for an invalid network.
+ *
+ * @hide
+ */
+ @SystemApi
public static final int INVALID_NETWORK_ID = -1;
/** {@hide} */
public static final int LOCAL_ONLY_NETWORK_ID = -2;
@@ -102,20 +108,41 @@
public static class KeyMgmt {
private KeyMgmt() { }
+ /** @hide */
+ @Retention(RetentionPolicy.SOURCE)
+ @IntDef(value = {
+ NONE,
+ WPA_PSK,
+ WPA_EAP,
+ IEEE8021X,
+ WPA2_PSK,
+ OSEN,
+ FT_PSK,
+ FT_EAP,
+ SAE,
+ OWE,
+ SUITE_B_192,
+ WPA_PSK_SHA256,
+ WPA_EAP_SHA256})
+ public @interface KeyMgmtScheme {}
+
/** WPA is not used; plaintext or static WEP could be used. */
public static final int NONE = 0;
/** WPA pre-shared key (requires {@code preSharedKey} to be specified). */
public static final int WPA_PSK = 1;
/** WPA using EAP authentication. Generally used with an external authentication server. */
public static final int WPA_EAP = 2;
- /** IEEE 802.1X using EAP authentication and (optionally) dynamically
- * generated WEP keys. */
+ /**
+ * IEEE 802.1X using EAP authentication and (optionally) dynamically
+ * generated WEP keys.
+ */
public static final int IEEE8021X = 3;
- /** WPA2 pre-shared key for use with soft access point
- * (requires {@code preSharedKey} to be specified).
- * @hide
- */
+ /**
+ * WPA2 pre-shared key for use with soft access point
+ * (requires {@code preSharedKey} to be specified).
+ * @hide
+ */
@SystemApi
public static final int WPA2_PSK = 4;
/**
@@ -462,16 +489,26 @@
*/
public String BSSID;
+ /** @hide */
+ @Retention(RetentionPolicy.SOURCE)
+ @IntDef(prefix = {"AP_BAND_"}, value = {
+ AP_BAND_2GHZ,
+ AP_BAND_5GHZ,
+ AP_BAND_ANY})
+ public @interface ApBand {}
+
/**
* 2GHz band.
* @hide
*/
+ @SystemApi
public static final int AP_BAND_2GHZ = 0;
/**
* 5GHz band.
* @hide
*/
+ @SystemApi
public static final int AP_BAND_5GHZ = 1;
/**
@@ -479,15 +516,18 @@
* operating country code and current radio conditions.
* @hide
*/
+ @SystemApi
public static final int AP_BAND_ANY = -1;
/**
- * The band which AP resides on
- * -1:Any 0:2G 1:5G
- * By default, 2G is chosen
+ * The band which the AP resides on.
+ * One of {@link #AP_BAND_2GHZ}, {@link #AP_BAND_5GHZ}, or {@link #AP_BAND_ANY}.
+ * By default, {@link #AP_BAND_2GHZ} is chosen.
+ *
* @hide
*/
- @UnsupportedAppUsage
+ @SystemApi
+ @ApBand
public int apBand = AP_BAND_2GHZ;
/**
@@ -515,6 +555,7 @@
* Optional SAE Password Id for use with WPA3-SAE. It is an ASCII string.
* @hide
*/
+ @SystemApi
public @Nullable String saePasswordId;
/**
@@ -553,9 +594,10 @@
public boolean hiddenSSID;
/**
- * This is a network that requries Protected Management Frames (PMF).
+ * True if the network requires Protected Management Frames (PMF), false otherwise.
* @hide
*/
+ @SystemApi
public boolean requirePMF;
/**
@@ -643,11 +685,12 @@
public long[] roamingConsortiumIds;
/**
+ * True if this network configuration is visible to and usable by other users on the
+ * same device, false otherwise.
+ *
* @hide
- * This network configuration is visible to and usable by other users on the
- * same device.
*/
- @UnsupportedAppUsage
+ @SystemApi
public boolean shared;
/**
@@ -740,54 +783,16 @@
/**
* @hide
- * Status of user approval for connection
- */
- public int userApproved = USER_UNSPECIFIED;
-
- /**
- * @hide
* Auto-join is allowed by user for this network.
* Default true.
*/
@SystemApi
public boolean allowAutojoin = true;
- /** The Below RSSI thresholds are used to configure AutoJoin
- * - GOOD/LOW/BAD thresholds are used so as to calculate link score
- * - UNWANTED_SOFT are used by the blacklisting logic so as to handle
- * the unwanted network message coming from CS
- * - UNBLACKLIST thresholds are used so as to tweak the speed at which
- * the network is unblacklisted (i.e. if
- * it is seen with good RSSI, it is blacklisted faster)
- * - INITIAL_AUTOJOIN_ATTEMPT, used to determine how close from
- * the network we need to be before autojoin kicks in
- */
/** @hide **/
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
public static int INVALID_RSSI = -127;
- // States for the userApproved field
- /**
- * @hide
- * User hasn't specified if connection is okay
- */
- public static final int USER_UNSPECIFIED = 0;
- /**
- * @hide
- * User has approved this for connection
- */
- public static final int USER_APPROVED = 1;
- /**
- * @hide
- * User has banned this from connection
- */
- public static final int USER_BANNED = 2;
- /**
- * @hide
- * Waiting for user input
- */
- public static final int USER_PENDING = 3;
-
/**
* @hide
* Number of reports indicating no Internet Access
@@ -861,21 +866,13 @@
* This boolean is cleared if we get a connect/save/ update or
* any wifiManager command that indicate the user interacted with the configuration
* since we will now consider that the configuration belong to him.
+ * @deprecated only kept for @UnsupportedAppUsage
* @hide
*/
@UnsupportedAppUsage
public boolean selfAdded;
/**
- * Set if the configuration was self added by the framework
- * This boolean is set once and never cleared. It is used
- * so as we never loose track of who created the
- * configuration in the first place.
- * @hide
- */
- public boolean didSelfAdd;
-
- /**
* Peer WifiConfiguration this WifiConfiguration was added for
* @hide
*/
@@ -906,44 +903,77 @@
public boolean trusted;
/**
- * This Wifi configuration is created from a {@link WifiNetworkSuggestion}
+ * True if this Wifi configuration is created from a {@link WifiNetworkSuggestion},
+ * false otherwise.
+ *
* @hide
*/
+ @SystemApi
public boolean fromWifiNetworkSuggestion;
/**
- * This Wifi configuration is created from a {@link WifiNetworkSpecifier}
+ * True if this Wifi configuration is created from a {@link WifiNetworkSpecifier},
+ * false otherwise.
+ *
* @hide
*/
+ @SystemApi
public boolean fromWifiNetworkSpecifier;
/**
- * Indicates if the creator of this configuration has expressed that it
- * should be considered metered.
+ * True if the creator of this configuration has expressed that it
+ * should be considered metered, false otherwise.
*
* @see #isMetered(WifiConfiguration, WifiInfo)
+ *
* @hide
*/
@SystemApi
public boolean meteredHint;
- /** {@hide} */
+ /** @hide */
+ @Retention(RetentionPolicy.SOURCE)
+ @IntDef(prefix = {"METERED_OVERRIDE_"}, value = {
+ METERED_OVERRIDE_NONE,
+ METERED_OVERRIDE_METERED,
+ METERED_OVERRIDE_NOT_METERED})
+ public @interface MeteredOverride {}
+
+ /**
+ * No metered override.
+ * @hide
+ */
+ @SystemApi
public static final int METERED_OVERRIDE_NONE = 0;
- /** {@hide} */
+ /**
+ * Override network to be metered.
+ * @hide
+ */
+ @SystemApi
public static final int METERED_OVERRIDE_METERED = 1;
- /** {@hide} */
+ /**
+ * Override network to be unmetered.
+ * @hide
+ */
+ @SystemApi
public static final int METERED_OVERRIDE_NOT_METERED = 2;
/**
* Indicates if the end user has expressed an explicit opinion about the
* meteredness of this network, such as through the Settings app.
+ * This value is one of {@link #METERED_OVERRIDE_NONE}, {@link #METERED_OVERRIDE_METERED},
+ * or {@link #METERED_OVERRIDE_NOT_METERED}.
* <p>
* This should always override any values from {@link #meteredHint} or
* {@link WifiInfo#getMeteredHint()}.
*
+ * By default this field is set to {@link #METERED_OVERRIDE_NONE}.
+ *
* @see #isMetered(WifiConfiguration, WifiInfo)
* @hide
*/
+ @SystemApi
+ @MeteredOverride
public int meteredOverride = METERED_OVERRIDE_NONE;
/**
@@ -952,7 +982,8 @@
*
* @hide
*/
- public static boolean isMetered(WifiConfiguration config, WifiInfo info) {
+ @SystemApi
+ public static boolean isMetered(@Nullable WifiConfiguration config, @Nullable WifiInfo info) {
boolean metered = false;
if (info != null && info.getMeteredHint()) {
metered = true;
@@ -1029,21 +1060,34 @@
@SystemApi
public int numAssociation;
+ /** @hide */
+ @Retention(RetentionPolicy.SOURCE)
+ @IntDef(prefix = {"RANDOMIZATION_"}, value = {
+ RANDOMIZATION_NONE,
+ RANDOMIZATION_PERSISTENT})
+ public @interface MacRandomizationSetting {}
+
/**
- * @hide
* Use factory MAC when connecting to this network
+ * @hide
*/
+ @SystemApi
public static final int RANDOMIZATION_NONE = 0;
/**
- * @hide
* Generate a randomized MAC once and reuse it for all connections to this network
+ * @hide
*/
+ @SystemApi
public static final int RANDOMIZATION_PERSISTENT = 1;
/**
+ * Level of MAC randomization for this network.
+ * One of {@link #RANDOMIZATION_NONE} or {@link #RANDOMIZATION_PERSISTENT}.
+ * By default this field is set to {@link #RANDOMIZATION_PERSISTENT}.
* @hide
- * Level of MAC randomization for this network
*/
+ @SystemApi
+ @MacRandomizationSetting
public int macRandomizationSetting = RANDOMIZATION_PERSISTENT;
/**
@@ -1107,145 +1151,250 @@
public static final int HOME_NETWORK_RSSI_BOOST = 5;
/**
+ * This class is used to contain all the information and API used for quality network selection.
* @hide
- * This class is used to contain all the information and API used for quality network selection
*/
+ @SystemApi
public static class NetworkSelectionStatus {
- /**
- * Quality Network Selection Status enable, temporary disabled, permanently disabled
- */
+ // Quality Network Selection Status enable, temporary disabled, permanently disabled
/**
* This network is allowed to join Quality Network Selection
+ * @hide
*/
public static final int NETWORK_SELECTION_ENABLED = 0;
/**
* network was temporary disabled. Can be re-enabled after a time period expire
+ * @hide
*/
public static final int NETWORK_SELECTION_TEMPORARY_DISABLED = 1;
/**
* network was permanently disabled.
+ * @hide
*/
public static final int NETWORK_SELECTION_PERMANENTLY_DISABLED = 2;
/**
* Maximum Network selection status
+ * @hide
*/
public static final int NETWORK_SELECTION_STATUS_MAX = 3;
/**
* Quality network selection status String (for debug purpose). Use Quality network
* selection status value as index to extec the corresponding debug string
+ * @hide
*/
public static final String[] QUALITY_NETWORK_SELECTION_STATUS = {
"NETWORK_SELECTION_ENABLED",
"NETWORK_SELECTION_TEMPORARY_DISABLED",
"NETWORK_SELECTION_PERMANENTLY_DISABLED"};
- //Quality Network disabled reasons
- /**
- * Default value. Means not disabled
- */
+ /** @hide */
+ @Retention(RetentionPolicy.SOURCE)
+ @IntDef(value = {
+ NETWORK_SELECTION_ENABLE,
+ DISABLED_ASSOCIATION_REJECTION,
+ DISABLED_AUTHENTICATION_FAILURE,
+ DISABLED_DHCP_FAILURE,
+ DISABLED_NO_INTERNET_TEMPORARY,
+ DISABLED_AUTHENTICATION_NO_CREDENTIALS,
+ DISABLED_NO_INTERNET_PERMANENT,
+ DISABLED_BY_WIFI_MANAGER,
+ DISABLED_BY_WRONG_PASSWORD,
+ DISABLED_AUTHENTICATION_NO_SUBSCRIPTION})
+ public @interface NetworkSelectionDisableReason {}
+
+ // Quality Network disabled reasons
+ /** Default value. Means not disabled. */
public static final int NETWORK_SELECTION_ENABLE = 0;
/**
- * The starting index for network selection disabled reasons
+ * The starting index for network selection disabled reasons.
+ * @hide
*/
public static final int NETWORK_SELECTION_DISABLED_STARTING_INDEX = 1;
/**
- * @deprecated it is not used any more.
- * This network is disabled because higher layer (>2) network is bad
+ * The starting index for network selection temporarily disabled reasons.
+ * @hide
*/
- public static final int DISABLED_BAD_LINK = 1;
+ public static final int TEMPORARILY_DISABLED_STARTING_INDEX = 1;
+ /** This network is disabled because of multiple association rejections. */
+ public static final int DISABLED_ASSOCIATION_REJECTION = 1;
+ /** This network is disabled because of multiple authentication failure. */
+ public static final int DISABLED_AUTHENTICATION_FAILURE = 2;
+ /** This network is disabled because of multiple DHCP failure. */
+ public static final int DISABLED_DHCP_FAILURE = 3;
+ /** This network is temporarily disabled because it has no Internet access. */
+ public static final int DISABLED_NO_INTERNET_TEMPORARY = 4;
/**
- * This network is disabled because multiple association rejects
+ * The starting index for network selection permanently disabled reasons.
+ * @hide
*/
- public static final int DISABLED_ASSOCIATION_REJECTION = 2;
+ public static final int PERMANENTLY_DISABLED_STARTING_INDEX = 5;
+ /** This network is disabled due to absence of user credentials */
+ public static final int DISABLED_AUTHENTICATION_NO_CREDENTIALS = 5;
/**
- * This network is disabled because multiple authentication failure
+ * This network is permanently disabled because it has no Internet access and the user does
+ * not want to stay connected.
*/
- public static final int DISABLED_AUTHENTICATION_FAILURE = 3;
- /**
- * This network is disabled because multiple DHCP failure
- */
- public static final int DISABLED_DHCP_FAILURE = 4;
- /**
- * This network is disabled because of security network but no credentials
- */
- public static final int DISABLED_DNS_FAILURE = 5;
- /**
- * This network is temporarily disabled because it has no Internet access.
- */
- public static final int DISABLED_NO_INTERNET_TEMPORARY = 6;
- /**
- * This network is disabled because we started WPS
- */
- public static final int DISABLED_WPS_START = 7;
- /**
- * This network is disabled because EAP-TLS failure
- */
- public static final int DISABLED_TLS_VERSION_MISMATCH = 8;
- // Values above are for temporary disablement; values below are for permanent disablement.
- /**
- * This network is disabled due to absence of user credentials
- */
- public static final int DISABLED_AUTHENTICATION_NO_CREDENTIALS = 9;
- /**
- * This network is permanently disabled because it has no Internet access and user does not
- * want to stay connected.
- */
- public static final int DISABLED_NO_INTERNET_PERMANENT = 10;
- /**
- * This network is disabled due to WifiManager disable it explicitly
- */
- public static final int DISABLED_BY_WIFI_MANAGER = 11;
- /**
- * This network is disabled due to user switching
- */
- public static final int DISABLED_DUE_TO_USER_SWITCH = 12;
- /**
- * This network is disabled due to wrong password
- */
- public static final int DISABLED_BY_WRONG_PASSWORD = 13;
- /**
- * This network is disabled because service is not subscribed
- */
- public static final int DISABLED_AUTHENTICATION_NO_SUBSCRIPTION = 14;
- /**
- * This Maximum disable reason value
- */
- public static final int NETWORK_SELECTION_DISABLED_MAX = 15;
+ public static final int DISABLED_NO_INTERNET_PERMANENT = 6;
+ /** This network is disabled due to WifiManager disabling it explicitly. */
+ public static final int DISABLED_BY_WIFI_MANAGER = 7;
+ /** This network is disabled due to wrong password. */
+ public static final int DISABLED_BY_WRONG_PASSWORD = 8;
+ /** This network is disabled because service is not subscribed. */
+ public static final int DISABLED_AUTHENTICATION_NO_SUBSCRIPTION = 9;
+ /** All other disable reasons should be strictly less than this value. */
+ public static final int NETWORK_SELECTION_DISABLED_MAX = 10;
/**
- * Quality network selection disable reason String (for debug purpose)
+ * Contains info about disable reasons.
+ * @hide
*/
- public static final String[] QUALITY_NETWORK_SELECTION_DISABLE_REASON = {
- "NETWORK_SELECTION_ENABLE",
- "NETWORK_SELECTION_DISABLED_BAD_LINK", // deprecated
- "NETWORK_SELECTION_DISABLED_ASSOCIATION_REJECTION ",
- "NETWORK_SELECTION_DISABLED_AUTHENTICATION_FAILURE",
- "NETWORK_SELECTION_DISABLED_DHCP_FAILURE",
- "NETWORK_SELECTION_DISABLED_DNS_FAILURE",
- "NETWORK_SELECTION_DISABLED_NO_INTERNET_TEMPORARY",
- "NETWORK_SELECTION_DISABLED_WPS_START",
- "NETWORK_SELECTION_DISABLED_TLS_VERSION",
- "NETWORK_SELECTION_DISABLED_AUTHENTICATION_NO_CREDENTIALS",
- "NETWORK_SELECTION_DISABLED_NO_INTERNET_PERMANENT",
- "NETWORK_SELECTION_DISABLED_BY_WIFI_MANAGER",
- "NETWORK_SELECTION_DISABLED_BY_USER_SWITCH",
- "NETWORK_SELECTION_DISABLED_BY_WRONG_PASSWORD",
- "NETWORK_SELECTION_DISABLED_AUTHENTICATION_NO_SUBSCRIPTION"
- };
+ public static final class DisableReasonInfo {
+ /**
+ * String representation for the disable reason.
+ * Note that these strings are persisted in
+ * {@link
+ * com.android.server.wifi.util.XmlUtil.NetworkSelectionStatusXmlUtil#writeToXml},
+ * so do not change the string values to maintain backwards compatibility.
+ */
+ public final String mReasonStr;
+ /**
+ * Network Selection disable reason threshold, used to debounce network failures before
+ * we disable them.
+ */
+ public final int mDisableThreshold;
+ /**
+ * Network Selection disable timeout for the error. After the timeout milliseconds,
+ * enable the network again.
+ */
+ public final int mDisableTimeoutMillis;
+
+ /**
+ * Constructor
+ * @param reasonStr string representation of the error
+ * @param disableThreshold number of failures before we disable the network
+ * @param disableTimeoutMillis the timeout, in milliseconds, before we re-enable the
+ * network after disabling it
+ */
+ public DisableReasonInfo(String reasonStr, int disableThreshold,
+ int disableTimeoutMillis) {
+ mReasonStr = reasonStr;
+ mDisableThreshold = disableThreshold;
+ mDisableTimeoutMillis = disableTimeoutMillis;
+ }
+ }
+
+ /**
+ * Quality network selection disable reason infos.
+ * @hide
+ */
+ public static final SparseArray<DisableReasonInfo> DISABLE_REASON_INFOS =
+ buildDisableReasonInfos();
+
+ private static SparseArray<DisableReasonInfo> buildDisableReasonInfos() {
+ SparseArray<DisableReasonInfo> reasons = new SparseArray<>();
+
+ reasons.append(NETWORK_SELECTION_ENABLE,
+ new DisableReasonInfo(
+ // Note that these strings are persisted in
+ // XmlUtil.NetworkSelectionStatusXmlUtil#writeToXml,
+ // so do not change the string values to maintain backwards
+ // compatibility.
+ "NETWORK_SELECTION_ENABLE",
+ -1,
+ Integer.MAX_VALUE));
+
+ reasons.append(DISABLED_ASSOCIATION_REJECTION,
+ new DisableReasonInfo(
+ // Note that there is a space at the end of this string. Cannot fix
+ // since this string is persisted.
+ "NETWORK_SELECTION_DISABLED_ASSOCIATION_REJECTION ",
+ 5,
+ 5 * 60 * 1000));
+
+ reasons.append(DISABLED_AUTHENTICATION_FAILURE,
+ new DisableReasonInfo(
+ "NETWORK_SELECTION_DISABLED_AUTHENTICATION_FAILURE",
+ 5,
+ 5 * 60 * 1000));
+
+ reasons.append(DISABLED_DHCP_FAILURE,
+ new DisableReasonInfo(
+ "NETWORK_SELECTION_DISABLED_DHCP_FAILURE",
+ 5,
+ 5 * 60 * 1000));
+
+ reasons.append(DISABLED_NO_INTERNET_TEMPORARY,
+ new DisableReasonInfo(
+ "NETWORK_SELECTION_DISABLED_NO_INTERNET_TEMPORARY",
+ 1,
+ 10 * 60 * 1000));
+
+ reasons.append(DISABLED_AUTHENTICATION_NO_CREDENTIALS,
+ new DisableReasonInfo(
+ "NETWORK_SELECTION_DISABLED_AUTHENTICATION_NO_CREDENTIALS",
+ 1,
+ Integer.MAX_VALUE));
+
+ reasons.append(DISABLED_NO_INTERNET_PERMANENT,
+ new DisableReasonInfo(
+ "NETWORK_SELECTION_DISABLED_NO_INTERNET_PERMANENT",
+ 1,
+ Integer.MAX_VALUE));
+
+ reasons.append(DISABLED_BY_WIFI_MANAGER,
+ new DisableReasonInfo(
+ "NETWORK_SELECTION_DISABLED_BY_WIFI_MANAGER",
+ 1,
+ Integer.MAX_VALUE));
+
+ reasons.append(DISABLED_BY_WRONG_PASSWORD,
+ new DisableReasonInfo(
+ "NETWORK_SELECTION_DISABLED_BY_WRONG_PASSWORD",
+ 1,
+ Integer.MAX_VALUE));
+
+ reasons.append(DISABLED_AUTHENTICATION_NO_SUBSCRIPTION,
+ new DisableReasonInfo(
+ "NETWORK_SELECTION_DISABLED_AUTHENTICATION_NO_SUBSCRIPTION",
+ 1,
+ Integer.MAX_VALUE));
+
+ return reasons;
+ }
+
+ /**
+ * Get the {@link NetworkSelectionDisableReason} int code by its string value.
+ * @return the NetworkSelectionDisableReason int code corresponding to the reason string,
+ * or -1 if the reason string is unrecognized.
+ * @hide
+ */
+ @NetworkSelectionDisableReason
+ public static int getDisableReasonByString(@NonNull String reasonString) {
+ for (int i = 0; i < DISABLE_REASON_INFOS.size(); i++) {
+ int key = DISABLE_REASON_INFOS.keyAt(i);
+ DisableReasonInfo value = DISABLE_REASON_INFOS.valueAt(i);
+ if (value != null && TextUtils.equals(reasonString, value.mReasonStr)) {
+ return key;
+ }
+ }
+ Log.e(TAG, "Unrecognized network disable reason: " + reasonString);
+ return -1;
+ }
/**
* Invalid time stamp for network selection disable
+ * @hide
*/
public static final long INVALID_NETWORK_SELECTION_DISABLE_TIMESTAMP = -1L;
/**
- * This constant indicates the current configuration has connect choice set
+ * This constant indicates the current configuration has connect choice set
*/
private static final int CONNECT_CHOICE_EXISTS = 1;
/**
- * This constant indicates the current configuration does not have connect choice set
+ * This constant indicates the current configuration does not have connect choice set
*/
private static final int CONNECT_CHOICE_NOT_EXISTS = -1;
@@ -1259,6 +1408,7 @@
/**
* Reason for disable this network
*/
+ @NetworkSelectionDisableReason
private int mNetworkSelectionDisableReason;
/**
@@ -1319,30 +1469,9 @@
private boolean mHasEverConnected;
/**
- * Boolean indicating whether {@link com.android.server.wifi.RecommendedNetworkEvaluator}
- * chose not to connect to this network in the last qualified network selection process.
- */
- private boolean mNotRecommended;
-
- /**
- * Set whether {@link com.android.server.wifi.RecommendedNetworkEvaluator} does not
- * recommend connecting to this network.
- */
- public void setNotRecommended(boolean notRecommended) {
- mNotRecommended = notRecommended;
- }
-
- /**
- * Returns whether {@link com.android.server.wifi.RecommendedNetworkEvaluator} does not
- * recommend connecting to this network.
- */
- public boolean isNotRecommended() {
- return mNotRecommended;
- }
-
- /**
* set whether this network is visible in latest Qualified Network Selection
* @param seen value set to candidate
+ * @hide
*/
public void setSeenInLastQualifiedNetworkSelection(boolean seen) {
mSeenInLastQualifiedNetworkSelection = seen;
@@ -1352,6 +1481,7 @@
* get whether this network is visible in latest Qualified Network Selection
* @return returns true -- network is visible in latest Qualified Network Selection
* false -- network is invisible in latest Qualified Network Selection
+ * @hide
*/
public boolean getSeenInLastQualifiedNetworkSelection() {
return mSeenInLastQualifiedNetworkSelection;
@@ -1359,6 +1489,7 @@
/**
* set the temporary candidate of current network selection procedure
* @param scanCandidate {@link ScanResult} the candidate set to mCandidate
+ * @hide
*/
public void setCandidate(ScanResult scanCandidate) {
mCandidate = scanCandidate;
@@ -1368,6 +1499,7 @@
* get the temporary candidate of current network selection procedure
* @return returns {@link ScanResult} temporary candidate of current network selection
* procedure
+ * @hide
*/
public ScanResult getCandidate() {
return mCandidate;
@@ -1376,6 +1508,7 @@
/**
* set the score of the temporary candidate of current network selection procedure
* @param score value set to mCandidateScore
+ * @hide
*/
public void setCandidateScore(int score) {
mCandidateScore = score;
@@ -1384,6 +1517,7 @@
/**
* get the score of the temporary candidate of current network selection procedure
* @return returns score of the temporary candidate of current network selection procedure
+ * @hide
*/
public int getCandidateScore() {
return mCandidateScore;
@@ -1391,7 +1525,8 @@
/**
* get user preferred choice over this configuration
- *@return returns configKey of user preferred choice over this configuration
+ * @return returns configKey of user preferred choice over this configuration
+ * @hide
*/
public String getConnectChoice() {
return mConnectChoice;
@@ -1400,6 +1535,7 @@
/**
* set user preferred choice over this configuration
* @param newConnectChoice, the configKey of user preferred choice over this configuration
+ * @hide
*/
public void setConnectChoice(String newConnectChoice) {
mConnectChoice = newConnectChoice;
@@ -1408,6 +1544,7 @@
/**
* get the timeStamp when user select a choice over this configuration
* @return returns when current connectChoice is set (time from System.currentTimeMillis)
+ * @hide
*/
public long getConnectChoiceTimestamp() {
return mConnectChoiceTimestamp;
@@ -1417,82 +1554,90 @@
* set the timeStamp when user select a choice over this configuration
* @param timeStamp, the timestamp set to connectChoiceTimestamp, expected timestamp should
* be obtained from System.currentTimeMillis
+ * @hide
*/
public void setConnectChoiceTimestamp(long timeStamp) {
mConnectChoiceTimestamp = timeStamp;
}
- /**
- * get current Quality network selection status
- * @return returns current Quality network selection status in String (for debug purpose)
- */
+ /** Get the current Quality network selection status as a String (for debugging). */
+ @NonNull
public String getNetworkStatusString() {
return QUALITY_NETWORK_SELECTION_STATUS[mStatus];
}
+ /** @hide */
public void setHasEverConnected(boolean value) {
mHasEverConnected = value;
}
+ /** True if the device has ever connected to this network, false otherwise. */
public boolean getHasEverConnected() {
return mHasEverConnected;
}
+ /** @hide */
public NetworkSelectionStatus() {
// previously stored configs will not have this parameter, so we default to false.
mHasEverConnected = false;
- };
+ }
/**
- * @param reason specific error reason
- * @return corresponding network disable reason String (for debug purpose)
+ * Get the network disable reason string for a reason code (for debugging).
+ * @param reason specific error reason. One of the {@link #NETWORK_SELECTION_ENABLE} or
+ * DISABLED_* constants e.g. {@link #DISABLED_ASSOCIATION_REJECTION}.
+ * @return network disable reason string, or null if the reason is invalid.
*/
- public static String getNetworkDisableReasonString(int reason) {
- if (reason >= NETWORK_SELECTION_ENABLE && reason < NETWORK_SELECTION_DISABLED_MAX) {
- return QUALITY_NETWORK_SELECTION_DISABLE_REASON[reason];
- } else {
+ @Nullable
+ public static String getNetworkDisableReasonString(
+ @NetworkSelectionDisableReason int reason) {
+ DisableReasonInfo info = DISABLE_REASON_INFOS.get(reason);
+ if (info == null) {
return null;
+ } else {
+ return info.mReasonStr;
}
}
/**
* get current network disable reason
* @return current network disable reason in String (for debug purpose)
+ * @hide
*/
public String getNetworkDisableReasonString() {
- return QUALITY_NETWORK_SELECTION_DISABLE_REASON[mNetworkSelectionDisableReason];
+ return getNetworkDisableReasonString(mNetworkSelectionDisableReason);
}
/**
* get current network network selection status
* @return return current network network selection status
+ * @hide
*/
public int getNetworkSelectionStatus() {
return mStatus;
}
- /**
- * @return whether current network is enabled to join network selection
- */
+
+ /** True if the current network is enabled to join network selection, false otherwise. */
public boolean isNetworkEnabled() {
return mStatus == NETWORK_SELECTION_ENABLED;
}
/**
* @return whether current network is temporary disabled
+ * @hide
*/
public boolean isNetworkTemporaryDisabled() {
return mStatus == NETWORK_SELECTION_TEMPORARY_DISABLED;
}
- /**
- * @return returns whether current network is permanently disabled
- */
+ /** True if the current network is permanently disabled, false otherwise. */
public boolean isNetworkPermanentlyDisabled() {
return mStatus == NETWORK_SELECTION_PERMANENTLY_DISABLED;
}
/**
- * set current networ work selection status
+ * set current network selection status
* @param status network selection status to set
+ * @hide
*/
public void setNetworkSelectionStatus(int status) {
if (status >= 0 && status < NETWORK_SELECTION_STATUS_MAX) {
@@ -1501,17 +1646,21 @@
}
/**
- * @return returns current network's disable reason
+ * Returns the current network's disable reason.
+ * One of the {@link #NETWORK_SELECTION_ENABLE} or DISABLED_* constants
+ * e.g. {@link #DISABLED_ASSOCIATION_REJECTION}.
*/
+ @NetworkSelectionDisableReason
public int getNetworkSelectionDisableReason() {
return mNetworkSelectionDisableReason;
}
/**
* set Network disable reason
- * @param reason Network disable reason
+ * @param reason Network disable reason
+ * @hide
*/
- public void setNetworkSelectionDisableReason(int reason) {
+ public void setNetworkSelectionDisableReason(@NetworkSelectionDisableReason int reason) {
if (reason >= 0 && reason < NETWORK_SELECTION_DISABLED_MAX) {
mNetworkSelectionDisableReason = reason;
} else {
@@ -1520,38 +1669,30 @@
}
/**
- * check whether network is disabled by this reason
- * @param reason a specific disable reason
- * @return true -- network is disabled for this reason
- * false -- network is not disabled for this reason
- */
- public boolean isDisabledByReason(int reason) {
- return mNetworkSelectionDisableReason == reason;
- }
-
- /**
* @param timeStamp Set when current network is disabled in millisecond since January 1,
* 1970 00:00:00.0 UTC
+ * @hide
*/
public void setDisableTime(long timeStamp) {
mTemporarilyDisabledTimestamp = timeStamp;
}
/**
- * @return returns when current network is disabled in millisecond since January 1,
- * 1970 00:00:00.0 UTC
+ * Returns when the current network was disabled, in milliseconds since January 1,
+ * 1970 00:00:00.0 UTC.
*/
public long getDisableTime() {
return mTemporarilyDisabledTimestamp;
}
/**
- * get the disable counter of a specific reason
- * @param reason specific failure reason
- * @exception throw IllegalArgumentException for illegal input
+ * Get the disable counter of a specific reason.
+ * @param reason specific failure reason. One of the {@link #NETWORK_SELECTION_ENABLE} or
+ * DISABLED_* constants e.g. {@link #DISABLED_ASSOCIATION_REJECTION}.
+ * @exception IllegalArgumentException for invalid reason
* @return counter number for specific error reason.
*/
- public int getDisableReasonCounter(int reason) {
+ public int getDisableReasonCounter(@NetworkSelectionDisableReason int reason) {
if (reason >= NETWORK_SELECTION_ENABLE && reason < NETWORK_SELECTION_DISABLED_MAX) {
return mNetworkSeclectionDisableCounter[reason];
} else {
@@ -1564,6 +1705,7 @@
* @param reason reason for disable error
* @param value the counter value for this specific reason
* @exception throw IllegalArgumentException for illegal input
+ * @hide
*/
public void setDisableReasonCounter(int reason, int value) {
if (reason >= NETWORK_SELECTION_ENABLE && reason < NETWORK_SELECTION_DISABLED_MAX) {
@@ -1577,6 +1719,7 @@
* increment the counter of a specific failure reason
* @param reason a specific failure reason
* @exception throw IllegalArgumentException for illegal input
+ * @hide
*/
public void incrementDisableReasonCounter(int reason) {
if (reason >= NETWORK_SELECTION_ENABLE && reason < NETWORK_SELECTION_DISABLED_MAX) {
@@ -1588,9 +1731,9 @@
/**
* clear the counter of a specific failure reason
- * @hide
* @param reason a specific failure reason
* @exception throw IllegalArgumentException for illegal input
+ * @hide
*/
public void clearDisableReasonCounter(int reason) {
if (reason >= NETWORK_SELECTION_ENABLE && reason < NETWORK_SELECTION_DISABLED_MAX) {
@@ -1602,6 +1745,7 @@
/**
* clear all the failure reason counters
+ * @hide
*/
public void clearDisableReasonCounter() {
Arrays.fill(mNetworkSeclectionDisableCounter, NETWORK_SELECTION_ENABLE);
@@ -1615,6 +1759,7 @@
/**
* get current network Selection BSSID
* @return current network Selection BSSID
+ * @hide
*/
public String getNetworkSelectionBSSID() {
return mNetworkSelectionBSSID;
@@ -1623,11 +1768,13 @@
/**
* set network Selection BSSID
* @param bssid The target BSSID for assocaition
+ * @hide
*/
public void setNetworkSelectionBSSID(String bssid) {
mNetworkSelectionBSSID = bssid;
}
+ /** @hide */
public void copy(NetworkSelectionStatus source) {
mStatus = source.mStatus;
mNetworkSelectionDisableReason = source.mNetworkSelectionDisableReason;
@@ -1644,9 +1791,9 @@
setConnectChoice(source.getConnectChoice());
setConnectChoiceTimestamp(source.getConnectChoiceTimestamp());
setHasEverConnected(source.getHasEverConnected());
- setNotRecommended(source.isNotRecommended());
}
+ /** @hide */
public void writeToParcel(Parcel dest) {
dest.writeInt(getNetworkSelectionStatus());
dest.writeInt(getNetworkSelectionDisableReason());
@@ -1664,9 +1811,9 @@
dest.writeInt(CONNECT_CHOICE_NOT_EXISTS);
}
dest.writeInt(getHasEverConnected() ? 1 : 0);
- dest.writeInt(isNotRecommended() ? 1 : 0);
}
+ /** @hide */
public void readFromParcel(Parcel in) {
setNetworkSelectionStatus(in.readInt());
setNetworkSelectionDisableReason(in.readInt());
@@ -1684,7 +1831,6 @@
setConnectChoiceTimestamp(INVALID_NETWORK_SELECTION_DISABLE_TIMESTAMP);
}
setHasEverConnected(in.readInt() != 0);
- setNotRecommended(in.readInt() != 0);
}
}
@@ -1699,8 +1845,16 @@
* This class is intended to store extra failure reason information for the most recent
* connection attempt, so that it may be surfaced to the settings UI
*/
+ @SystemApi
public static class RecentFailure {
+ private RecentFailure() {}
+
+ /** @hide */
+ @Retention(RetentionPolicy.SOURCE)
+ @IntDef(value = {NONE, STATUS_AP_UNABLE_TO_HANDLE_NEW_STA})
+ public @interface AssociationStatus {}
+
/**
* No recent failure, or no specific reason given for the recent connection failure
*/
@@ -1713,38 +1867,47 @@
/**
* Association Rejection Status code (NONE for success/non-association-rejection-fail)
*/
+ @AssociationStatus
private int mAssociationStatus = NONE;
/**
* @param status the association status code for the recent failure
+ * @hide
*/
- public void setAssociationStatus(int status) {
+ public void setAssociationStatus(@AssociationStatus int status) {
mAssociationStatus = status;
}
/**
* Sets the RecentFailure to NONE
+ * @hide
*/
public void clear() {
mAssociationStatus = NONE;
}
/**
- * Get the recent failure code
+ * Get the recent failure code. One of {@link #NONE} or
+ * {@link #STATUS_AP_UNABLE_TO_HANDLE_NEW_STA}.
*/
+ @AssociationStatus
public int getAssociationStatus() {
return mAssociationStatus;
}
}
/**
- * @hide
* RecentFailure member
+ * @hide
*/
- final public RecentFailure recentFailure = new RecentFailure();
+ @NonNull
+ @SystemApi
+ public final RecentFailure recentFailure = new RecentFailure();
/**
+ * Get the network selection status.
* @hide
- * @return network selection status
*/
+ @NonNull
+ @SystemApi
public NetworkSelectionStatus getNetworkSelectionStatus() {
return mNetworkSelectionStatus;
}
@@ -1787,8 +1950,6 @@
wepKeys[i] = null;
}
enterpriseConfig = new WifiEnterpriseConfig();
- selfAdded = false;
- didSelfAdd = false;
ephemeral = false;
osu = false;
trusted = true; // Networks are considered trusted by default.
@@ -1823,8 +1984,8 @@
public boolean isLinked(WifiConfiguration config) {
if (config != null) {
if (config.linkedConfigurations != null && linkedConfigurations != null) {
- if (config.linkedConfigurations.get(configKey()) != null
- && linkedConfigurations.get(config.configKey()) != null) {
+ if (config.linkedConfigurations.get(getKey()) != null
+ && linkedConfigurations.get(config.getKey()) != null) {
return true;
}
}
@@ -1845,6 +2006,16 @@
&& enterpriseConfig.getEapMethod() != WifiEnterpriseConfig.Eap.NONE;
}
+ private static String logTimeOfDay(long millis) {
+ Calendar c = Calendar.getInstance();
+ if (millis >= 0) {
+ c.setTimeInMillis(millis);
+ return String.format("%tm-%td %tH:%tM:%tS.%tL", c, c, c, c, c, c);
+ } else {
+ return Long.toString(millis);
+ }
+ }
+
@Override
public String toString() {
StringBuilder sbuf = new StringBuilder();
@@ -1881,7 +2052,7 @@
if (mNetworkSelectionStatus.getConnectChoice() != null) {
sbuf.append(" connect choice: ").append(mNetworkSelectionStatus.getConnectChoice());
sbuf.append(" connect choice set time: ")
- .append(TimeUtils.logTimeOfDay(
+ .append(logTimeOfDay(
mNetworkSelectionStatus.getConnectChoiceTimestamp()));
}
sbuf.append(" hasEverConnected: ")
@@ -1900,8 +2071,6 @@
if (this.creationTime != null) {
sbuf.append(" creation ").append(this.creationTime).append("\n");
}
- if (this.didSelfAdd) sbuf.append(" didSelfAdd");
- if (this.selfAdded) sbuf.append(" selfAdded");
if (this.validatedInternetAccess) sbuf.append(" validatedInternetAccess");
if (this.ephemeral) sbuf.append(" ephemeral");
if (this.osu) sbuf.append(" osu");
@@ -1910,9 +2079,9 @@
if (this.fromWifiNetworkSpecifier) sbuf.append(" fromWifiNetworkSpecifier");
if (this.meteredHint) sbuf.append(" meteredHint");
if (this.useExternalScores) sbuf.append(" useExternalScores");
- if (this.didSelfAdd || this.selfAdded || this.validatedInternetAccess
- || this.ephemeral || this.trusted || this.fromWifiNetworkSuggestion
- || this.fromWifiNetworkSpecifier || this.meteredHint || this.useExternalScores) {
+ if (this.validatedInternetAccess || this.ephemeral || this.trusted
+ || this.fromWifiNetworkSuggestion || this.fromWifiNetworkSpecifier
+ || this.meteredHint || this.useExternalScores) {
sbuf.append("\n");
}
if (this.meteredOverride != METERED_OVERRIDE_NONE) {
@@ -1922,7 +2091,7 @@
sbuf.append(" mRandomizedMacAddress: ").append(mRandomizedMacAddress).append("\n");
sbuf.append(" randomizedMacExpirationTimeMs: ")
.append(randomizedMacExpirationTimeMs == 0 ? "<none>"
- : TimeUtils.logTimeOfDay(randomizedMacExpirationTimeMs)).append("\n");
+ : logTimeOfDay(randomizedMacExpirationTimeMs)).append("\n");
sbuf.append(" KeyMgmt:");
for (int k = 0; k < this.allowedKeyManagement.size(); k++) {
if (this.allowedKeyManagement.get(k)) {
@@ -2040,14 +2209,13 @@
if (lastUpdateName != null) sbuf.append(" lname=" + lastUpdateName);
if (updateIdentifier != null) sbuf.append(" updateIdentifier=" + updateIdentifier);
sbuf.append(" lcuid=" + lastConnectUid);
- sbuf.append(" userApproved=" + userApprovedAsString(userApproved));
sbuf.append(" allowAutojoin=" + allowAutojoin);
sbuf.append(" noInternetAccessExpected=" + noInternetAccessExpected);
sbuf.append(" ");
if (this.lastConnected != 0) {
sbuf.append('\n');
- sbuf.append("lastConnected: ").append(TimeUtils.logTimeOfDay(this.lastConnected));
+ sbuf.append("lastConnected: ").append(logTimeOfDay(this.lastConnected));
sbuf.append(" ");
}
sbuf.append('\n');
@@ -2062,8 +2230,13 @@
return sbuf.toString();
}
- /** {@hide} */
- @UnsupportedAppUsage
+ /**
+ * Get the SSID in a human-readable format, with all additional formatting removed
+ * e.g. quotation marks around the SSID, "P" prefix
+ * @hide
+ */
+ @NonNull
+ @SystemApi
public String getPrintableSsid() {
if (SSID == null) return "";
final int length = SSID.length();
@@ -2071,7 +2244,7 @@
return SSID.substring(1, length - 1);
}
- /** The ascii-encoded string format is P"<ascii-encoded-string>"
+ /* The ascii-encoded string format is P"<ascii-encoded-string>"
* The decoding is implemented in the supplicant for a newly configured
* network.
*/
@@ -2084,20 +2257,6 @@
return SSID;
}
- /** @hide **/
- public static String userApprovedAsString(int userApproved) {
- switch (userApproved) {
- case USER_APPROVED:
- return "USER_APPROVED";
- case USER_BANNED:
- return "USER_BANNED";
- case USER_UNSPECIFIED:
- return "USER_UNSPECIFIED";
- default:
- return "INVALID";
- }
- }
-
/**
* Get an identifier for associating credentials with this config
* @param current configuration contains values for additional fields
@@ -2166,8 +2325,13 @@
}
}
- /** @hide */
- @UnsupportedAppUsage
+ /**
+ * Get the authentication type of the network.
+ * @return One of the {@link KeyMgmt} constants. e.g. {@link KeyMgmt#WPA2_PSK}.
+ * @hide
+ */
+ @SystemApi
+ @KeyMgmt.KeyMgmtScheme
public int getAuthType() {
if (allowedKeyManagement.cardinality() > 1) {
throw new IllegalStateException("More than one auth type set");
@@ -2190,31 +2354,18 @@
return KeyMgmt.NONE;
}
- /* @hide
- * Cache the config key, this seems useful as a speed up since a lot of
- * lookups in the config store are done and based on this key.
+ /**
+ * Return a String that can be used to uniquely identify this WifiConfiguration.
+ * <br />
+ * Note: Do not persist this value! This value is not guaranteed to remain backwards compatible.
*/
- String mCachedConfigKey;
-
- /** @hide
- * return the string used to calculate the hash in WifiConfigStore
- * and uniquely identify this WifiConfiguration
- */
- public String configKey(boolean allowCached) {
- String key;
- if (allowCached && mCachedConfigKey != null) {
- key = mCachedConfigKey;
- } else if (providerFriendlyName != null) {
- key = FQDN + KeyMgmt.strings[KeyMgmt.WPA_EAP];
- if (!shared) {
- key += "-" + Integer.toString(UserHandle.getUserId(creatorUid));
- }
- } else {
- key = getSsidAndSecurityTypeString();
- if (!shared) {
- key += "-" + Integer.toString(UserHandle.getUserId(creatorUid));
- }
- mCachedConfigKey = key;
+ @NonNull
+ public String getKey() {
+ String key = providerFriendlyName == null
+ ? getSsidAndSecurityTypeString()
+ : FQDN + KeyMgmt.strings[KeyMgmt.WPA_EAP];
+ if (!shared) {
+ key += "-" + UserHandle.getUserHandleForUid(creatorUid).getIdentifier();
}
return key;
}
@@ -2243,28 +2394,31 @@
return key;
}
- /** @hide
- * get configKey, force calculating the config string
- */
- public String configKey() {
- return configKey(false);
- }
-
/** @hide */
@UnsupportedAppUsage
public IpConfiguration getIpConfiguration() {
return mIpConfiguration;
}
- /** @hide */
- @UnsupportedAppUsage
- public void setIpConfiguration(IpConfiguration ipConfiguration) {
+ /**
+ * Set the {@link IpConfiguration} for this network.
+ * @param ipConfiguration the {@link IpConfiguration} to set, or null to use the default
+ * constructor {@link IpConfiguration#IpConfiguration()}.
+ * @hide
+ */
+ @SystemApi
+ public void setIpConfiguration(@Nullable IpConfiguration ipConfiguration) {
if (ipConfiguration == null) ipConfiguration = new IpConfiguration();
mIpConfiguration = ipConfiguration;
}
- /** @hide */
- @UnsupportedAppUsage
+ /**
+ * Get the {@link StaticIpConfiguration} for this network.
+ * @return the {@link StaticIpConfiguration}, or null if unset.
+ * @hide
+ */
+ @Nullable
+ @SystemApi
public StaticIpConfiguration getStaticIpConfiguration() {
return mIpConfiguration.getStaticIpConfiguration();
}
@@ -2275,28 +2429,36 @@
mIpConfiguration.setStaticIpConfiguration(staticIpConfiguration);
}
- /** @hide */
- @UnsupportedAppUsage
+ /**
+ * Get the {@link IpConfiguration.IpAssignment} for this network.
+ * @hide
+ */
+ @NonNull
+ @SystemApi
public IpConfiguration.IpAssignment getIpAssignment() {
- return mIpConfiguration.ipAssignment;
+ return mIpConfiguration.getIpAssignment();
}
/** @hide */
@UnsupportedAppUsage
public void setIpAssignment(IpConfiguration.IpAssignment ipAssignment) {
- mIpConfiguration.ipAssignment = ipAssignment;
+ mIpConfiguration.setIpAssignment(ipAssignment);
}
- /** @hide */
- @UnsupportedAppUsage
+ /**
+ * Get the {@link IpConfiguration.ProxySettings} for this network.
+ * @hide
+ */
+ @NonNull
+ @SystemApi
public IpConfiguration.ProxySettings getProxySettings() {
- return mIpConfiguration.proxySettings;
+ return mIpConfiguration.getProxySettings();
}
/** @hide */
@UnsupportedAppUsage
public void setProxySettings(IpConfiguration.ProxySettings proxySettings) {
- mIpConfiguration.proxySettings = proxySettings;
+ mIpConfiguration.setProxySettings(proxySettings);
}
/**
@@ -2305,10 +2467,10 @@
* WifiConfiguration, or {@code null} if no proxy is specified.
*/
public ProxyInfo getHttpProxy() {
- if (mIpConfiguration.proxySettings == IpConfiguration.ProxySettings.NONE) {
+ if (mIpConfiguration.getProxySettings() == IpConfiguration.ProxySettings.NONE) {
return null;
}
- return new ProxyInfo(mIpConfiguration.httpProxy);
+ return new ProxyInfo(mIpConfiguration.getHttpProxy());
}
/**
@@ -2333,12 +2495,12 @@
if (!Uri.EMPTY.equals(httpProxy.getPacFileUrl())) {
proxySettingCopy = IpConfiguration.ProxySettings.PAC;
// Construct a new PAC URL Proxy
- httpProxyCopy = new ProxyInfo(httpProxy.getPacFileUrl(), httpProxy.getPort());
+ httpProxyCopy = ProxyInfo.buildPacProxy(httpProxy.getPacFileUrl(), httpProxy.getPort());
} else {
proxySettingCopy = IpConfiguration.ProxySettings.STATIC;
// Construct a new HTTP Proxy
- httpProxyCopy = new ProxyInfo(httpProxy.getHost(), httpProxy.getPort(),
- httpProxy.getExclusionListAsString());
+ httpProxyCopy = ProxyInfo.buildDirectProxy(httpProxy.getHost(), httpProxy.getPort(),
+ Arrays.asList(httpProxy.getExclusionList()));
}
if (!httpProxyCopy.isValid()) {
throw new IllegalArgumentException("Invalid ProxyInfo: " + httpProxyCopy.toString());
@@ -2347,11 +2509,14 @@
mIpConfiguration.setHttpProxy(httpProxyCopy);
}
- /** @hide */
- @UnsupportedAppUsage
- public void setProxy(ProxySettings settings, ProxyInfo proxy) {
- mIpConfiguration.proxySettings = settings;
- mIpConfiguration.httpProxy = proxy;
+ /**
+ * Set the {@link ProxySettings} and {@link ProxyInfo} for this network.
+ * @hide
+ */
+ @SystemApi
+ public void setProxy(@NonNull ProxySettings settings, @NonNull ProxyInfo proxy) {
+ mIpConfiguration.setProxySettings(settings);
+ mIpConfiguration.setHttpProxy(proxy);
}
/** Implement the Parcelable interface {@hide} */
@@ -2414,8 +2579,6 @@
linkedConfigurations = new HashMap<String, Integer>();
linkedConfigurations.putAll(source.linkedConfigurations);
}
- mCachedConfigKey = null; //force null configKey
- selfAdded = source.selfAdded;
validatedInternetAccess = source.validatedInternetAccess;
isLegacyPasspointConfig = source.isLegacyPasspointConfig;
ephemeral = source.ephemeral;
@@ -2427,7 +2590,6 @@
meteredOverride = source.meteredOverride;
useExternalScores = source.useExternalScores;
- didSelfAdd = source.didSelfAdd;
lastConnectUid = source.lastConnectUid;
lastUpdateUid = source.lastUpdateUid;
creatorUid = source.creatorUid;
@@ -2440,7 +2602,6 @@
numScorerOverride = source.numScorerOverride;
numScorerOverrideAndSwitchedNetwork = source.numScorerOverrideAndSwitchedNetwork;
numAssociation = source.numAssociation;
- userApproved = source.userApproved;
allowAutojoin = source.allowAutojoin;
numNoInternetAccessReports = source.numNoInternetAccessReports;
noInternetAccessExpected = source.noInternetAccessExpected;
@@ -2498,8 +2659,6 @@
dest.writeParcelable(mIpConfiguration, flags);
dest.writeString(dhcpServer);
dest.writeString(defaultGwMacAddress);
- dest.writeInt(selfAdded ? 1 : 0);
- dest.writeInt(didSelfAdd ? 1 : 0);
dest.writeInt(validatedInternetAccess ? 1 : 0);
dest.writeInt(isLegacyPasspointConfig ? 1 : 0);
dest.writeInt(ephemeral ? 1 : 0);
@@ -2517,7 +2676,6 @@
dest.writeInt(numScorerOverride);
dest.writeInt(numScorerOverrideAndSwitchedNetwork);
dest.writeInt(numAssociation);
- dest.writeInt(userApproved);
dest.writeBoolean(allowAutojoin);
dest.writeInt(numNoInternetAccessReports);
dest.writeInt(noInternetAccessExpected ? 1 : 0);
@@ -2575,8 +2733,6 @@
config.setIpConfiguration(in.readParcelable(null));
config.dhcpServer = in.readString();
config.defaultGwMacAddress = in.readString();
- config.selfAdded = in.readInt() != 0;
- config.didSelfAdd = in.readInt() != 0;
config.validatedInternetAccess = in.readInt() != 0;
config.isLegacyPasspointConfig = in.readInt() != 0;
config.ephemeral = in.readInt() != 0;
@@ -2594,7 +2750,6 @@
config.numScorerOverride = in.readInt();
config.numScorerOverrideAndSwitchedNetwork = in.readInt();
config.numAssociation = in.readInt();
- config.userApproved = in.readInt();
config.allowAutojoin = in.readBoolean();
config.numNoInternetAccessReports = in.readInt();
config.noInternetAccessExpected = in.readInt() != 0;
@@ -2615,9 +2770,11 @@
};
/**
- * Serializes the object for backup
+ * Serialize the Soft AP configuration contained in this object for backup.
* @hide
*/
+ @NonNull
+ // TODO(b/144368124): this method should be removed once we migrate to SoftApConfiguration
public byte[] getBytesForBackup() throws IOException {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(baos);
@@ -2633,11 +2790,16 @@
}
/**
- * Deserializes a byte array into the WiFiConfiguration Object
+ * Deserialize a byte array containing Soft AP configuration into a WifiConfiguration object.
+ * @return The deserialized WifiConfiguration containing Soft AP configuration, or null if
+ * the version contains a bad dataset e.g. Version 1
+ * @throws BackupUtils.BadVersionException if the version is unrecognized
* @hide
*/
- public static WifiConfiguration getWifiConfigFromBackup(DataInputStream in) throws IOException,
- BackupUtils.BadVersionException {
+ @Nullable
+ // TODO(b/144368124): this method should be removed once we migrate to SoftApConfiguration
+ public static WifiConfiguration getWifiConfigFromBackup(@NonNull DataInputStream in)
+ throws IOException, BackupUtils.BadVersionException {
WifiConfiguration config = new WifiConfiguration();
int version = in.readInt();
if (version < 1 || version > BACKUP_VERSION) {
diff --git a/wifi/java/android/net/wifi/WifiEnterpriseConfig.java b/wifi/java/android/net/wifi/WifiEnterpriseConfig.java
index 7b99a2b..449f95e 100644
--- a/wifi/java/android/net/wifi/WifiEnterpriseConfig.java
+++ b/wifi/java/android/net/wifi/WifiEnterpriseConfig.java
@@ -16,7 +16,9 @@
package android.net.wifi;
import android.annotation.IntDef;
+import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.annotation.SystemApi;
import android.annotation.UnsupportedAppUsage;
import android.os.Parcel;
import android.os.Parcelable;
@@ -118,18 +120,21 @@
* Do not use OCSP stapling (TLS certificate status extension)
* @hide
*/
+ @SystemApi
public static final int OCSP_NONE = 0;
/**
* Try to use OCSP stapling, but not require response
* @hide
*/
+ @SystemApi
public static final int OCSP_REQUEST_CERT_STATUS = 1;
/**
* Require valid OCSP stapling response
* @hide
*/
+ @SystemApi
public static final int OCSP_REQUIRE_CERT_STATUS = 2;
/**
@@ -137,6 +142,7 @@
* certificate chain
* @hide
*/
+ @SystemApi
public static final int OCSP_REQUIRE_ALL_NON_TRUSTED_CERTS_STATUS = 3;
/** @hide */
@@ -147,8 +153,7 @@
OCSP_REQUIRE_ALL_NON_TRUSTED_CERTS_STATUS
})
@Retention(RetentionPolicy.SOURCE)
- public @interface Ocsp {
- }
+ public @interface Ocsp {}
/**
* Whether to use/require OCSP (Online Certificate Status Protocol) to check server certificate.
@@ -636,9 +641,11 @@
* <p> See the {@link android.security.KeyChain} for details on installing or choosing
* a certificate.
* </p>
- * @param aliases identifies the certificate
+ * @param aliases identifies the certificate. Can be null to indicate the absence of a
+ * certificate.
* @hide
*/
+ @SystemApi
public void setCaCertificateAliases(@Nullable String[] aliases) {
if (aliases == null) {
setFieldValue(CA_CERT_KEY, null, CA_CERT_PREFIX);
@@ -669,11 +676,13 @@
}
/**
- * Get CA certificate aliases
- * @return alias to the CA certificate
+ * Get CA certificate aliases.
+ * @return alias to the CA certificate, or null if unset.
* @hide
*/
- @Nullable public String[] getCaCertificateAliases() {
+ @Nullable
+ @SystemApi
+ public String[] getCaCertificateAliases() {
String value = getFieldValue(CA_CERT_KEY);
if (value.startsWith(CA_CERT_PREFIX)) {
// Backwards compatibility: parse the original alias prefix.
@@ -792,32 +801,36 @@
* like /etc/ssl/certs. If configured, these certificates are added to the
* list of trusted CAs. ca_cert may also be included in that case, but it is
* not required.
- * @param domain The path for CA certificate files
+ * @param path The path for CA certificate files, or null/empty string to clear.
* @hide
*/
- public void setCaPath(String path) {
+ @SystemApi
+ public void setCaPath(@Nullable String path) {
setFieldValue(CA_PATH_KEY, path);
}
/**
* Get the domain_suffix_match value. See setDomSuffixMatch.
- * @return The path for CA certificate files.
+ * @return The path for CA certificate files, or an empty string if unset.
* @hide
*/
+ @NonNull
+ @SystemApi
public String getCaPath() {
return getFieldValue(CA_PATH_KEY);
}
- /** Set Client certificate alias.
+ /**
+ * Set Client certificate alias.
*
* <p> See the {@link android.security.KeyChain} for details on installing or choosing
* a certificate
* </p>
- * @param alias identifies the certificate
+ * @param alias identifies the certificate, or null/empty string to clear.
* @hide
*/
- @UnsupportedAppUsage
- public void setClientCertificateAlias(String alias) {
+ @SystemApi
+ public void setClientCertificateAlias(@Nullable String alias) {
setFieldValue(CLIENT_CERT_KEY, alias, CLIENT_CERT_PREFIX);
setFieldValue(PRIVATE_KEY_ID_KEY, alias, Credentials.USER_PRIVATE_KEY);
// Also, set engine parameters
@@ -831,11 +844,12 @@
}
/**
- * Get client certificate alias
- * @return alias to the client certificate
+ * Get client certificate alias.
+ * @return alias to the client certificate, or an empty string if unset.
* @hide
*/
- @UnsupportedAppUsage
+ @NonNull
+ @SystemApi
public String getClientCertificateAlias() {
return getFieldValue(CLIENT_CERT_KEY, CLIENT_CERT_PREFIX);
}
@@ -1241,12 +1255,14 @@
}
/**
- * Set the ocsp type.
- * @param ocsp is one {@link ##OCSP_NONE}, {@link #OCSP_REQUEST_CERT_STATUS},
+ * Set the OCSP type.
+ * @param ocsp is one of {@link ##OCSP_NONE}, {@link #OCSP_REQUEST_CERT_STATUS},
* {@link #OCSP_REQUIRE_CERT_STATUS} or
* {@link #OCSP_REQUIRE_ALL_NON_TRUSTED_CERTS_STATUS}
+ * @throws IllegalArgumentException if the OCSP type is invalid
* @hide
*/
+ @SystemApi
public void setOcsp(@Ocsp int ocsp) {
if (ocsp >= OCSP_NONE && ocsp <= OCSP_REQUIRE_ALL_NON_TRUSTED_CERTS_STATUS) {
mOcsp = ocsp;
@@ -1256,10 +1272,10 @@
}
/**
- * Get the ocsp type.
- * @return ocsp type
+ * Get the OCSP type.
* @hide
*/
+ @SystemApi
public @Ocsp int getOcsp() {
return mOcsp;
}
diff --git a/wifi/java/android/net/wifi/WifiFrameworkInitializer.java b/wifi/java/android/net/wifi/WifiFrameworkInitializer.java
index 775043a..002820b 100644
--- a/wifi/java/android/net/wifi/WifiFrameworkInitializer.java
+++ b/wifi/java/android/net/wifi/WifiFrameworkInitializer.java
@@ -72,7 +72,10 @@
SystemServiceRegistry.registerContextAwareService(
Context.WIFI_SERVICE,
WifiManager.class,
- context -> new WifiManager(context, getInstanceLooper())
+ (context, serviceBinder) -> {
+ IWifiManager service = IWifiManager.Stub.asInterface(serviceBinder);
+ return new WifiManager(context, service, getInstanceLooper());
+ }
);
SystemServiceRegistry.registerStaticService(
Context.WIFI_P2P_SERVICE,
diff --git a/wifi/java/android/net/wifi/WifiManager.java b/wifi/java/android/net/wifi/WifiManager.java
index 942d795..15d897d 100644
--- a/wifi/java/android/net/wifi/WifiManager.java
+++ b/wifi/java/android/net/wifi/WifiManager.java
@@ -35,22 +35,19 @@
import android.content.pm.ParceledListSlice;
import android.net.ConnectivityManager;
import android.net.DhcpInfo;
+import android.net.MacAddress;
import android.net.Network;
-import android.net.NetworkCapabilities;
-import android.net.NetworkRequest;
import android.net.NetworkStack;
import android.net.wifi.hotspot2.IProvisioningCallback;
import android.net.wifi.hotspot2.OsuProvider;
import android.net.wifi.hotspot2.PasspointConfiguration;
import android.net.wifi.hotspot2.ProvisioningCallback;
import android.os.Binder;
-import android.os.Build;
import android.os.Handler;
import android.os.HandlerExecutor;
import android.os.IBinder;
import android.os.Looper;
import android.os.RemoteException;
-import android.os.ServiceManager;
import android.os.WorkSource;
import android.text.TextUtils;
import android.util.Log;
@@ -58,8 +55,6 @@
import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
-import com.android.internal.util.ArrayUtils;
-import com.android.server.net.NetworkPinner;
import dalvik.system.CloseGuard;
@@ -69,6 +64,7 @@
import java.net.InetAddress;
import java.util.ArrayList;
import java.util.Collections;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@@ -151,12 +147,11 @@
@Deprecated
public static final int ERROR_AUTH_FAILURE_EAP_FAILURE = 3;
- /**
- * Maximum number of active network suggestions allowed per app.
- * @hide
- */
- public static final int NETWORK_SUGGESTIONS_MAX_PER_APP =
- ActivityManager.isLowRamDeviceStatic() ? 256 : 1024;
+ /** @hide */
+ public static final int NETWORK_SUGGESTIONS_MAX_PER_APP_LOW_RAM = 256;
+
+ /** @hide */
+ public static final int NETWORK_SUGGESTIONS_MAX_PER_APP_HIGH_RAM = 1024;
/**
* Reason code if all of the network suggestions were successfully added or removed.
@@ -729,7 +724,9 @@
* had been reset.
* @hide
*/
- public static final String WIFI_NETWORK_SETTINGS_RESET_ACTION =
+ @SystemApi
+ @RequiresPermission(android.Manifest.permission.NETWORK_CARRIER_PROVISIONING)
+ public static final String ACTION_NETWORK_SETTINGS_RESET =
"android.net.wifi.action.NETWORK_SETTINGS_RESET";
/**
@@ -1190,6 +1187,10 @@
/** Indicates an invalid SSID. */
public static final String UNKNOWN_SSID = "<unknown ssid>";
+ /** @hide */
+ public static final MacAddress ALL_ZEROS_MAC_ADDRESS =
+ MacAddress.fromString("00:00:00:00:00:00");
+
/* Number of currently active WifiLocks and MulticastLocks */
@UnsupportedAppUsage
private int mActiveLockCount;
@@ -1211,46 +1212,24 @@
/**
* Create a new WifiManager instance.
* Applications will almost always want to use
- * {@link android.content.Context#getSystemService Context.getSystemService()} to retrieve
+ * {@link android.content.Context#getSystemService Context.getSystemService} to retrieve
* the standard {@link android.content.Context#WIFI_SERVICE Context.WIFI_SERVICE}.
*
* @param context the application context
+ * @param service the Binder interface
* @param looper the Looper used to deliver callbacks
- *
- * @hide
+ * @hide - hide this because it takes in a parameter of type IWifiManager, which
+ * is a system private class.
*/
- public WifiManager(@NonNull Context context, @NonNull Looper looper) {
+ public WifiManager(@NonNull Context context, @NonNull IWifiManager service,
+ @NonNull Looper looper) {
mContext = context;
+ mService = service;
mLooper = looper;
mTargetSdkVersion = context.getApplicationInfo().targetSdkVersion;
- }
-
- /**
- * This is used only for unit testing.
- * @hide
- */
- @VisibleForTesting
- public WifiManager(Context context, IWifiManager service, Looper looper) {
- this(context, looper);
- mService = service;
updateVerboseLoggingEnabledFromService();
}
- private IWifiManager getIWifiManager() {
- if (mService == null) {
- synchronized (this) {
- mService = IWifiManager.Stub.asInterface(
- ServiceManager.getService(Context.WIFI_SERVICE));
- if (mService != null) {
- updateVerboseLoggingEnabledFromService();
- } else {
- Log.e(TAG, "Wifi Service not running yet, ignoring WifiManager API call");
- }
- }
- }
- return mService;
- }
-
/**
* Return a list of all the networks configured for the current foreground
* user.
@@ -1290,10 +1269,8 @@
@RequiresPermission(allOf = {ACCESS_FINE_LOCATION, ACCESS_WIFI_STATE})
public List<WifiConfiguration> getConfiguredNetworks() {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) return Collections.emptyList();
ParceledListSlice<WifiConfiguration> parceledList =
- iWifiManager.getConfiguredNetworks(mContext.getOpPackageName(),
+ mService.getConfiguredNetworks(mContext.getOpPackageName(),
mContext.getFeatureId());
if (parceledList == null) {
return Collections.emptyList();
@@ -1309,10 +1286,8 @@
@RequiresPermission(allOf = {ACCESS_FINE_LOCATION, ACCESS_WIFI_STATE, READ_WIFI_CREDENTIAL})
public List<WifiConfiguration> getPrivilegedConfiguredNetworks() {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) return Collections.emptyList();
ParceledListSlice<WifiConfiguration> parceledList =
- iWifiManager.getPrivilegedConfiguredNetworks(mContext.getOpPackageName(),
+ mService.getPrivilegedConfiguredNetworks(mContext.getOpPackageName(),
mContext.getFeatureId());
if (parceledList == null) {
return Collections.emptyList();
@@ -1344,16 +1319,14 @@
@NonNull List<ScanResult> scanResults) {
List<Pair<WifiConfiguration, Map<Integer, List<ScanResult>>>> configs = new ArrayList<>();
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) return Collections.emptyList();
Map<String, Map<Integer, List<ScanResult>>> results =
- iWifiManager.getAllMatchingFqdnsForScanResults(
+ mService.getAllMatchingFqdnsForScanResults(
scanResults);
if (results.isEmpty()) {
return configs;
}
List<WifiConfiguration> wifiConfigurations =
- iWifiManager.getWifiConfigsForPasspointProfiles(
+ mService.getWifiConfigsForPasspointProfiles(
new ArrayList<>(results.keySet()));
for (WifiConfiguration configuration : wifiConfigurations) {
Map<Integer, List<ScanResult>> scanResultsPerNetworkType = results.get(
@@ -1388,12 +1361,10 @@
public Map<OsuProvider, List<ScanResult>> getMatchingOsuProviders(
@Nullable List<ScanResult> scanResults) {
if (scanResults == null) {
- return Collections.emptyMap();
+ return new HashMap<>();
}
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) return Collections.emptyMap();
- return iWifiManager.getMatchingOsuProviders(scanResults);
+ return mService.getMatchingOsuProviders(scanResults);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -1420,9 +1391,7 @@
public Map<OsuProvider, PasspointConfiguration> getMatchingPasspointConfigsForOsuProviders(
@NonNull Set<OsuProvider> osuProviders) {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) return Collections.emptyMap();
- return iWifiManager.getMatchingPasspointConfigsForOsuProviders(
+ return mService.getMatchingPasspointConfigsForOsuProviders(
new ArrayList<>(osuProviders));
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
@@ -1507,9 +1476,7 @@
*/
private int addOrUpdateNetwork(WifiConfiguration config) {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) return -1;
- return iWifiManager.addOrUpdateNetwork(config, mContext.getOpPackageName());
+ return mService.addOrUpdateNetwork(config, mContext.getOpPackageName());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -1756,11 +1723,7 @@
Binder binder = new Binder();
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) {
- throw new RemoteException("Wifi service is not running");
- }
- iWifiManager.registerNetworkRequestMatchCallback(
+ mService.registerNetworkRequestMatchCallback(
binder, new NetworkRequestMatchCallbackProxy(executor, callback),
callback.hashCode());
} catch (RemoteException e) {
@@ -1787,11 +1750,7 @@
Log.v(TAG, "unregisterNetworkRequestMatchCallback: callback=" + callback);
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) {
- throw new RemoteException("Wifi service is not running");
- }
- iWifiManager.unregisterNetworkRequestMatchCallback(callback.hashCode());
+ mService.unregisterNetworkRequestMatchCallback(callback.hashCode());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -1824,9 +1783,7 @@
public @NetworkSuggestionsStatusCode int addNetworkSuggestions(
@NonNull List<WifiNetworkSuggestion> networkSuggestions) {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) return STATUS_NETWORK_SUGGESTIONS_ERROR_INTERNAL;
- return iWifiManager.addNetworkSuggestions(
+ return mService.addNetworkSuggestions(
networkSuggestions, mContext.getOpPackageName(), mContext.getFeatureId());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
@@ -1835,8 +1792,9 @@
/**
* Remove some or all of the network suggestions that were previously provided by the app.
- * If the current network is a suggestion being removed and if it was only provided by this app
- * and is not a saved network then the framework will immediately disconnect.
+ * If one of the suggestions being removed was used to establish connection to the current
+ * network, then the device will immediately disconnect from that network.
+ *
* See {@link WifiNetworkSuggestion} for a detailed explanation of the parameters.
* See {@link WifiNetworkSuggestion#equals(Object)} for the equivalence evaluation used.
*
@@ -1850,9 +1808,7 @@
public @NetworkSuggestionsStatusCode int removeNetworkSuggestions(
@NonNull List<WifiNetworkSuggestion> networkSuggestions) {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) return STATUS_NETWORK_SUGGESTIONS_ERROR_INTERNAL;
- return iWifiManager.removeNetworkSuggestions(
+ return mService.removeNetworkSuggestions(
networkSuggestions, mContext.getOpPackageName());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
@@ -1868,9 +1824,7 @@
@RequiresPermission(ACCESS_WIFI_STATE)
public @NonNull List<WifiNetworkSuggestion> getNetworkSuggestions() {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) return Collections.emptyList();
- return iWifiManager.getNetworkSuggestions(mContext.getOpPackageName());
+ return mService.getNetworkSuggestions(mContext.getOpPackageName());
} catch (RemoteException e) {
throw e.rethrowAsRuntimeException();
}
@@ -1882,7 +1836,15 @@
* @see #removeNetworkSuggestions(List)
*/
public int getMaxNumberOfNetworkSuggestionsPerApp() {
- return NETWORK_SUGGESTIONS_MAX_PER_APP;
+ return getMaxNumberOfNetworkSuggestionsPerApp(
+ mContext.getSystemService(ActivityManager.class).isLowRamDevice());
+ }
+
+ /** @hide */
+ public static int getMaxNumberOfNetworkSuggestionsPerApp(boolean isLowRamDevice) {
+ return isLowRamDevice
+ ? NETWORK_SUGGESTIONS_MAX_PER_APP_LOW_RAM
+ : NETWORK_SUGGESTIONS_MAX_PER_APP_HIGH_RAM;
}
/**
@@ -1900,13 +1862,7 @@
*/
public void addOrUpdatePasspointConfiguration(PasspointConfiguration config) {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) {
- if (config == null) return;
- throw new RemoteException("Wifi service is not running");
- }
- if (!iWifiManager.addOrUpdatePasspointConfiguration(
- config, mContext.getOpPackageName())) {
+ if (!mService.addOrUpdatePasspointConfiguration(config, mContext.getOpPackageName())) {
throw new IllegalArgumentException();
}
} catch (RemoteException e) {
@@ -1930,13 +1886,7 @@
})
public void removePasspointConfiguration(String fqdn) {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) {
- if (TextUtils.isEmpty(fqdn)) return;
- throw new RemoteException("Wifi service is not running");
- }
- if (!iWifiManager.removePasspointConfiguration(
- fqdn, mContext.getOpPackageName())) {
+ if (!mService.removePasspointConfiguration(fqdn, mContext.getOpPackageName())) {
throw new IllegalArgumentException();
}
} catch (RemoteException e) {
@@ -1959,9 +1909,7 @@
})
public List<PasspointConfiguration> getPasspointConfigurations() {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) Collections.emptyList();
- return iWifiManager.getPasspointConfigurations(mContext.getOpPackageName());
+ return mService.getPasspointConfigurations(mContext.getOpPackageName());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -1981,12 +1929,7 @@
*/
public void queryPasspointIcon(long bssid, String fileName) {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) {
- if (bssid == 0L || TextUtils.isEmpty(fileName)) return;
- throw new RemoteException("Wifi service is not running");
- }
- iWifiManager.queryPasspointIcon(bssid, fileName);
+ mService.queryPasspointIcon(bssid, fileName);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -2000,9 +1943,7 @@
*/
public int matchProviderWithCurrentNetwork(String fqdn) {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) return -1;
- return iWifiManager.matchProviderWithCurrentNetwork(fqdn);
+ return mService.matchProviderWithCurrentNetwork(fqdn);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -2018,11 +1959,7 @@
*/
public void deauthenticateNetwork(long holdoff, boolean ess) {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) {
- throw new RemoteException("Wifi service is not running");
- }
- iWifiManager.deauthenticateNetwork(holdoff, ess);
+ mService.deauthenticateNetwork(holdoff, ess);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -2052,9 +1989,7 @@
@Deprecated
public boolean removeNetwork(int netId) {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) return false;
- return iWifiManager.removeNetwork(netId, mContext.getOpPackageName());
+ return mService.removeNetwork(netId, mContext.getOpPackageName());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -2097,31 +2032,11 @@
*/
@Deprecated
public boolean enableNetwork(int netId, boolean attemptConnect) {
- final boolean pin = attemptConnect && mTargetSdkVersion < Build.VERSION_CODES.LOLLIPOP;
- if (pin) {
- NetworkRequest request = new NetworkRequest.Builder()
- .clearCapabilities()
- .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN)
- .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
- .build();
- NetworkPinner.pin(mContext, request);
- }
-
- boolean success;
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) return false;
- success = iWifiManager.enableNetwork(
- netId, attemptConnect, mContext.getOpPackageName());
+ return mService.enableNetwork(netId, attemptConnect, mContext.getOpPackageName());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
-
- if (pin && !success) {
- NetworkPinner.unpin();
- }
-
- return success;
}
/**
@@ -2148,9 +2063,7 @@
@Deprecated
public boolean disableNetwork(int netId) {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) return false;
- return iWifiManager.disableNetwork(netId, mContext.getOpPackageName());
+ return mService.disableNetwork(netId, mContext.getOpPackageName());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -2173,9 +2086,7 @@
@Deprecated
public boolean disconnect() {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) return false;
- return iWifiManager.disconnect(mContext.getOpPackageName());
+ return mService.disconnect(mContext.getOpPackageName());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -2199,9 +2110,7 @@
@Deprecated
public boolean reconnect() {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) return false;
- return iWifiManager.reconnect(mContext.getOpPackageName());
+ return mService.reconnect(mContext.getOpPackageName());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -2225,9 +2134,7 @@
@Deprecated
public boolean reassociate() {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) return false;
- return iWifiManager.reassociate(mContext.getOpPackageName());
+ return mService.reassociate(mContext.getOpPackageName());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -2323,9 +2230,7 @@
private long getSupportedFeatures() {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) return 0L;
- return iWifiManager.getSupportedFeatures();
+ return mService.getSupportedFeatures();
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -2482,10 +2387,8 @@
*/
public WifiActivityEnergyInfo getControllerActivityEnergyInfo() {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) return null;
synchronized(this) {
- return iWifiManager.reportActivityInfo();
+ return mService.reportActivityInfo();
}
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
@@ -2524,11 +2427,9 @@
@RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS)
public boolean startScan(WorkSource workSource) {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) return false;
String packageName = mContext.getOpPackageName();
String featureId = mContext.getFeatureId();
- return iWifiManager.startScan(packageName, featureId);
+ return mService.startScan(packageName, featureId);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -2557,9 +2458,7 @@
*/
public WifiInfo getConnectionInfo() {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) return null;
- return iWifiManager.getConnectionInfo(mContext.getOpPackageName(),
+ return mService.getConnectionInfo(mContext.getOpPackageName(),
mContext.getFeatureId());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
@@ -2574,9 +2473,7 @@
*/
public List<ScanResult> getScanResults() {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) return Collections.emptyList();
- return iWifiManager.getScanResults(mContext.getOpPackageName(),
+ return mService.getScanResults(mContext.getOpPackageName(),
mContext.getFeatureId());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
@@ -2596,9 +2493,7 @@
@Deprecated
public boolean isScanAlwaysAvailable() {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) return false;
- return iWifiManager.isScanAlwaysAvailable();
+ return mService.isScanAlwaysAvailable();
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -2631,9 +2526,7 @@
@RequiresPermission(android.Manifest.permission.CONNECTIVITY_INTERNAL)
public String getCountryCode() {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) return null;
- return iWifiManager.getCountryCode();
+ return mService.getCountryCode();
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -2648,9 +2541,7 @@
@SystemApi
public boolean isDualBandSupported() {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) return false;
- return iWifiManager.isDualBandSupported();
+ return mService.isDualBandSupported();
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -2673,9 +2564,7 @@
@RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS)
public boolean isDualModeSupported() {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) return false;
- return iWifiManager.needs5GHzToAnyApBandConversion();
+ return mService.needs5GHzToAnyApBandConversion();
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -2688,9 +2577,7 @@
*/
public DhcpInfo getDhcpInfo() {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) return null;
- return iWifiManager.getDhcpInfo();
+ return mService.getDhcpInfo();
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -2717,9 +2604,7 @@
@Deprecated
public boolean setWifiEnabled(boolean enabled) {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) return false;
- return iWifiManager.setWifiEnabled(mContext.getOpPackageName(), enabled);
+ return mService.setWifiEnabled(mContext.getOpPackageName(), enabled);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -2734,9 +2619,7 @@
*/
public int getWifiState() {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) return WIFI_STATE_UNKNOWN;
- return iWifiManager.getWifiEnabledState();
+ return mService.getWifiEnabledState();
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -2764,11 +2647,7 @@
TxPacketCountListenerProxy listenerProxy =
new TxPacketCountListenerProxy(mLooper, listener);
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) {
- throw new RemoteException("Wifi service is not running");
- }
- iWifiManager.getTxPacketCount(mContext.getOpPackageName(), binder, listenerProxy,
+ mService.getTxPacketCount(mContext.getOpPackageName(), binder, listenerProxy,
listener.hashCode());
} catch (RemoteException e) {
listenerProxy.onFailure(ERROR);
@@ -2811,11 +2690,7 @@
*/
public int calculateSignalLevel(int rssi) {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) {
- throw new RemoteException("Wifi service is not running");
- }
- return iWifiManager.calculateSignalLevel(rssi);
+ return mService.calculateSignalLevel(rssi);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -2861,12 +2736,7 @@
})
public void updateInterfaceIpState(@Nullable String ifaceName, @IfaceIpMode int mode) {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) {
- if (TextUtils.isEmpty(ifaceName) || mode == IFACE_IP_MODE_UNSPECIFIED) return;
- throw new RemoteException("Wifi service is not running");
- }
- iWifiManager.updateInterfaceIpState(ifaceName, mode);
+ mService.updateInterfaceIpState(ifaceName, mode);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -2883,22 +2753,44 @@
*
* @hide
*/
- @SystemApi
@RequiresPermission(anyOf = {
android.Manifest.permission.NETWORK_STACK,
NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK
})
public boolean startSoftAp(@Nullable WifiConfiguration wifiConfig) {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) return false;
- return iWifiManager.startSoftAp(wifiConfig);
+ return mService.startSoftAp(wifiConfig);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
}
/**
+ * Start Soft AP (hotspot) mode for tethering purposes with the specified configuration.
+ * Note that starting Soft AP mode may disable station mode operation if the device does not
+ * support concurrency.
+ * @param softApConfig A valid SoftApConfiguration specifying the configuration of the SAP,
+ * or null to use the persisted Soft AP configuration that was previously
+ * set using {@link #setSoftApConfiguration(softApConfiguration)}.
+ * @return {@code true} if the operation succeeded, {@code false} otherwise
+ *
+ * @hide
+ */
+ @SystemApi
+ @RequiresPermission(anyOf = {
+ android.Manifest.permission.NETWORK_STACK,
+ NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK
+ })
+ public boolean startTetheredHotspot(@Nullable SoftApConfiguration softApConfig) {
+ try {
+ return mService.startTetheredHotspot(softApConfig);
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+
+
+ /**
* Stop SoftAp mode.
* Note that stopping softap mode will restore the previous wifi mode.
* @return {@code true} if the operation succeeds, {@code false} otherwise
@@ -2912,9 +2804,7 @@
})
public boolean stopSoftAp() {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) return false;
- return iWifiManager.stopSoftAp();
+ return mService.stopSoftAp();
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -3032,13 +2922,9 @@
LocalOnlyHotspotCallbackProxy proxy =
new LocalOnlyHotspotCallbackProxy(this, executor, callback);
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) {
- throw new RemoteException("Wifi service is not running");
- }
String packageName = mContext.getOpPackageName();
String featureId = mContext.getFeatureId();
- int returnCode = iWifiManager.startLocalOnlyHotspot(proxy, packageName, featureId,
+ int returnCode = mService.startLocalOnlyHotspot(proxy, packageName, featureId,
config);
if (returnCode != LocalOnlyHotspotCallback.REQUEST_REGISTERED) {
// Send message to the proxy to make sure we call back on the correct thread
@@ -3090,11 +2976,7 @@
}
mLOHSCallbackProxy = null;
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) {
- throw new RemoteException("Wifi service is not running");
- }
- iWifiManager.stopLocalOnlyHotspot();
+ mService.stopLocalOnlyHotspot();
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -3126,11 +3008,7 @@
mLOHSObserverProxy =
new LocalOnlyHotspotObserverProxy(this, executor, observer);
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) {
- throw new RemoteException("Wifi service is not running");
- }
- iWifiManager.startWatchLocalOnlyHotspot(mLOHSObserverProxy);
+ mService.startWatchLocalOnlyHotspot(mLOHSObserverProxy);
mLOHSObserverProxy.registered();
} catch (RemoteException e) {
mLOHSObserverProxy = null;
@@ -3153,11 +3031,7 @@
}
mLOHSObserverProxy = null;
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) {
- throw new RemoteException("Wifi service is not running");
- }
- iWifiManager.stopWatchLocalOnlyHotspot();
+ mService.stopWatchLocalOnlyHotspot();
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -3177,9 +3051,7 @@
@RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE)
public int getWifiApState() {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) return WIFI_AP_STATE_FAILED;
- return iWifiManager.getWifiApEnabledState();
+ return mService.getWifiApEnabledState();
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -3202,35 +3074,71 @@
* Gets the Wi-Fi AP Configuration.
* @return AP details in WifiConfiguration
*
+ * @deprecated This API is deprecated. Use {@link #getSoftApConfiguration()} instead.
* @hide
*/
@SystemApi
@RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE)
+ @Deprecated
public WifiConfiguration getWifiApConfiguration() {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) return null;
- return iWifiManager.getWifiApConfiguration();
+ return mService.getWifiApConfiguration();
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
}
/**
- * Sets the Wi-Fi AP Configuration. The AP configuration must either be open or
- * WPA2 PSK networks.
+ * Gets the Wi-Fi AP Configuration.
+ * @return AP details in {@link SoftApConfiguration}
+ *
+ * @hide
+ */
+ @NonNull
+ @SystemApi
+ @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE)
+ public SoftApConfiguration getSoftApConfiguration() {
+ try {
+ return mService.getSoftApConfiguration();
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+
+ /**
+ * Sets the Wi-Fi AP Configuration.
+ * @return {@code true} if the operation succeeded, {@code false} otherwise
+ *
+ * @deprecated This API is deprecated. Use {@link #setSoftApConfiguration(SoftApConfiguration)}
+ * instead.
+ * @hide
+ */
+ @SystemApi
+ @RequiresPermission(android.Manifest.permission.CHANGE_WIFI_STATE)
+ @Deprecated
+ public boolean setWifiApConfiguration(WifiConfiguration wifiConfig) {
+ try {
+ return mService.setWifiApConfiguration(wifiConfig, mContext.getOpPackageName());
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+
+ /**
+ * Sets the Wi-Fi AP Configuration.
+ *
+ * @param softApConfig A valid SoftApConfiguration specifying the configuration of the SAP.
+
* @return {@code true} if the operation succeeded, {@code false} otherwise
*
* @hide
*/
@SystemApi
- @RequiresPermission(android.Manifest.permission.CHANGE_WIFI_STATE)
- public boolean setWifiApConfiguration(WifiConfiguration wifiConfig) {
+ @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS)
+ public boolean setSoftApConfiguration(@NonNull SoftApConfiguration softApConfig) {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) return false;
- return iWifiManager.setWifiApConfiguration(
- wifiConfig, mContext.getOpPackageName());
+ return mService.setSoftApConfiguration(
+ softApConfig, mContext.getOpPackageName());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -3258,12 +3166,7 @@
*/
public void setTdlsEnabled(InetAddress remoteIPAddress, boolean enable) {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) {
- if (remoteIPAddress == null || !enable) return;
- throw new RemoteException("Wifi service is not running");
- }
- iWifiManager.enableTdls(remoteIPAddress.getHostAddress(), enable);
+ mService.enableTdls(remoteIPAddress.getHostAddress(), enable);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -3277,12 +3180,7 @@
*/
public void setTdlsEnabledWithMacAddress(String remoteMacAddress, boolean enable) {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) {
- if (TextUtils.isEmpty(remoteMacAddress) || !enable) return;
- throw new RemoteException("Wifi service is not running");
- }
- iWifiManager.enableTdlsWithMacAddress(remoteMacAddress, enable);
+ mService.enableTdlsWithMacAddress(remoteMacAddress, enable);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -3573,11 +3471,7 @@
Binder binder = new Binder();
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) {
- throw new RemoteException("Wifi service is not running");
- }
- iWifiManager.registerSoftApCallback(
+ mService.registerSoftApCallback(
binder, new SoftApCallbackProxy(executor, callback), callback.hashCode());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
@@ -3599,11 +3493,7 @@
Log.v(TAG, "unregisterSoftApCallback: callback=" + callback);
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) {
- throw new RemoteException("Wifi service is not running");
- }
- iWifiManager.unregisterSoftApCallback(callback.hashCode());
+ mService.unregisterSoftApCallback(callback.hashCode());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -3931,11 +3821,7 @@
binder = new Binder();
}
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) {
- throw new RemoteException("Wifi service is not running");
- }
- iWifiManager.connect(config, networkId, binder, listenerProxy,
+ mService.connect(config, networkId, binder, listenerProxy,
listener == null ? 0 : listener.hashCode());
} catch (RemoteException e) {
if (listenerProxy != null) listenerProxy.onFailure(ERROR);
@@ -4028,11 +3914,7 @@
binder = new Binder();
}
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) {
- throw new RemoteException("Wifi service is not running");
- }
- iWifiManager.save(config, binder, listenerProxy,
+ mService.save(config, binder, listenerProxy,
listener == null ? 0 : listener.hashCode());
} catch (RemoteException e) {
if (listenerProxy != null) listenerProxy.onFailure(ERROR);
@@ -4069,11 +3951,7 @@
binder = new Binder();
}
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) {
- throw new RemoteException("Wifi service is not running");
- }
- iWifiManager.forget(netId, binder, listenerProxy,
+ mService.forget(netId, binder, listenerProxy,
listener == null ? 0 : listener.hashCode());
} catch (RemoteException e) {
if (listenerProxy != null) listenerProxy.onFailure(ERROR);
@@ -4126,11 +4004,7 @@
@RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS)
public void allowAutojoin(int netId, boolean choice) {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) {
- throw new RemoteException("Wifi service is not running");
- }
- iWifiManager.allowAutojoin(netId, choice);
+ mService.allowAutojoin(netId, choice);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -4153,11 +4027,7 @@
throw new IllegalArgumentException("SSID cannot be null or empty!");
}
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) {
- throw new RemoteException("Wifi service is not running");
- }
- iWifiManager.disableEphemeralNetwork(ssid, mContext.getOpPackageName());
+ mService.disableEphemeralNetwork(ssid, mContext.getOpPackageName());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -4245,14 +4115,10 @@
synchronized (mBinder) {
if (mRefCounted ? (++mRefCount == 1) : (!mHeld)) {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) {
- throw new RemoteException("Wifi service is not running");
- }
- iWifiManager.acquireWifiLock(mBinder, mLockType, mTag, mWorkSource);
+ mService.acquireWifiLock(mBinder, mLockType, mTag, mWorkSource);
synchronized (WifiManager.this) {
if (mActiveLockCount >= MAX_ACTIVE_LOCKS) {
- iWifiManager.releaseWifiLock(mBinder);
+ mService.releaseWifiLock(mBinder);
throw new UnsupportedOperationException(
"Exceeded maximum number of wifi locks");
}
@@ -4282,11 +4148,7 @@
synchronized (mBinder) {
if (mRefCounted ? (--mRefCount == 0) : (mHeld)) {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) {
- throw new RemoteException("Wifi service is not running");
- }
- iWifiManager.releaseWifiLock(mBinder);
+ mService.releaseWifiLock(mBinder);
synchronized (WifiManager.this) {
mActiveLockCount--;
}
@@ -4349,11 +4211,7 @@
}
if (changed && mHeld) {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) {
- throw new RemoteException("Wifi service is not running");
- }
- iWifiManager.updateWifiLockWorkSource(mBinder, mWorkSource);
+ mService.updateWifiLockWorkSource(mBinder, mWorkSource);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -4381,11 +4239,7 @@
synchronized (mBinder) {
if (mHeld) {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) {
- throw new RemoteException("Wifi service is not running");
- }
- iWifiManager.releaseWifiLock(mBinder);
+ mService.releaseWifiLock(mBinder);
synchronized (WifiManager.this) {
mActiveLockCount--;
}
@@ -4498,14 +4352,10 @@
synchronized (mBinder) {
if (mRefCounted ? (++mRefCount == 1) : (!mHeld)) {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) {
- throw new RemoteException("Wifi service is not running");
- }
- iWifiManager.acquireMulticastLock(mBinder, mTag);
+ mService.acquireMulticastLock(mBinder, mTag);
synchronized (WifiManager.this) {
if (mActiveLockCount >= MAX_ACTIVE_LOCKS) {
- iWifiManager.releaseMulticastLock(mTag);
+ mService.releaseMulticastLock(mTag);
throw new UnsupportedOperationException(
"Exceeded maximum number of wifi locks");
}
@@ -4547,11 +4397,7 @@
synchronized (mBinder) {
if (mRefCounted ? (--mRefCount == 0) : (mHeld)) {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) {
- throw new RemoteException("Wifi service is not running");
- }
- iWifiManager.releaseMulticastLock(mTag);
+ mService.releaseMulticastLock(mTag);
synchronized (WifiManager.this) {
mActiveLockCount--;
}
@@ -4628,9 +4474,7 @@
*/
public boolean isMulticastEnabled() {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) return false;
- return iWifiManager.isMulticastEnabled();
+ return mService.isMulticastEnabled();
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -4643,9 +4487,7 @@
@UnsupportedAppUsage
public boolean initializeMulticastFiltering() {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) return false;
- iWifiManager.initializeMulticastFiltering();
+ mService.initializeMulticastFiltering();
return true;
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
@@ -4664,12 +4506,7 @@
@RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS)
public void enableVerboseLogging (int verbose) {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) {
- if (verbose == 0) return;
- throw new RemoteException("Wifi service is not running");
- }
- iWifiManager.enableVerboseLogging(verbose);
+ mService.enableVerboseLogging(verbose);
} catch (Exception e) {
//ignore any failure here
Log.e(TAG, "enableVerboseLogging " + e.toString());
@@ -4688,9 +4525,7 @@
@SystemApi
public int getVerboseLoggingLevel() {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) return -1;
- return iWifiManager.getVerboseLoggingLevel();
+ return mService.getVerboseLoggingLevel();
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -4706,11 +4541,7 @@
@RequiresPermission(android.Manifest.permission.CONNECTIVITY_INTERNAL)
public void factoryReset() {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) {
- throw new RemoteException("Wifi service is not running");
- }
- iWifiManager.factoryReset(mContext.getOpPackageName());
+ mService.factoryReset(mContext.getOpPackageName());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -4725,9 +4556,7 @@
@RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE)
public Network getCurrentNetwork() {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) return null;
- return iWifiManager.getCurrentNetwork();
+ return mService.getCurrentNetwork();
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -4759,12 +4588,7 @@
*/
public void enableWifiConnectivityManager(boolean enabled) {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) {
- if (enabled) return;
- throw new RemoteException("Wifi service is not running");
- }
- iWifiManager.enableWifiConnectivityManager(enabled);
+ mService.enableWifiConnectivityManager(enabled);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -4781,9 +4605,7 @@
@RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS)
public byte[] retrieveBackupData() {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) return new byte[0];
- return iWifiManager.retrieveBackupData();
+ return mService.retrieveBackupData();
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -4798,12 +4620,37 @@
@RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS)
public void restoreBackupData(@NonNull byte[] data) {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) {
- if (ArrayUtils.isEmpty(data)) return;
- throw new RemoteException("Wifi service is not running");
- }
- iWifiManager.restoreBackupData(data);
+ mService.restoreBackupData(data);
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+
+ /**
+ * Retrieve the soft ap config data to be backed to save current config data.
+ * @hide
+ */
+ @Nullable
+ @SystemApi
+ @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS)
+ public byte[] retrieveSoftApBackupData() {
+ try {
+ return mService.retrieveSoftApBackupData();
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+
+ /**
+ * Restore soft ap config from the backed up data.
+ * @hide
+ */
+ @Nullable
+ @SystemApi
+ @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS)
+ public void restoreSoftApBackupData(@NonNull byte[] data) {
+ try {
+ mService.restoreSoftApBackupData(data);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -4824,12 +4671,7 @@
public void restoreSupplicantBackupData(
@NonNull byte[] supplicantData, @NonNull byte[] ipConfigData) {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) {
- if (ArrayUtils.isEmpty(supplicantData) && ArrayUtils.isEmpty(ipConfigData)) return;
- throw new RemoteException("Wifi service is not running");
- }
- iWifiManager.restoreSupplicantBackupData(supplicantData, ipConfigData);
+ mService.restoreSupplicantBackupData(supplicantData, ipConfigData);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -4858,11 +4700,7 @@
throw new IllegalArgumentException("callback must not be null");
}
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) {
- throw new RemoteException("Wifi service is not running");
- }
- iWifiManager.startSubscriptionProvisioning(provider,
+ mService.startSubscriptionProvisioning(provider,
new ProvisioningCallbackProxy(executor, callback));
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
@@ -4996,11 +4834,7 @@
Binder binder = new Binder();
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) {
- throw new RemoteException("Wifi service is not running");
- }
- iWifiManager.registerTrafficStateCallback(
+ mService.registerTrafficStateCallback(
binder, new TrafficStateCallbackProxy(executor, callback), callback.hashCode());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
@@ -5021,11 +4855,7 @@
Log.v(TAG, "unregisterTrafficStateCallback: callback=" + callback);
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) {
- throw new RemoteException("Wifi service is not running");
- }
- iWifiManager.unregisterTrafficStateCallback(callback.hashCode());
+ mService.unregisterTrafficStateCallback(callback.hashCode());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -5083,9 +4913,7 @@
@RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS)
public String[] getFactoryMacAddresses() {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) return new String[0];
- return iWifiManager.getFactoryMacAddresses();
+ return mService.getFactoryMacAddresses();
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -5154,12 +4982,7 @@
@RequiresPermission(android.Manifest.permission.WIFI_SET_DEVICE_MOBILITY_STATE)
public void setDeviceMobilityState(@DeviceMobilityState int state) {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) {
- if (state == DEVICE_MOBILITY_STATE_UNKNOWN) return;
- throw new RemoteException("Wifi service is not running");
- }
- iWifiManager.setDeviceMobilityState(state);
+ mService.setDeviceMobilityState(state);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -5214,13 +5037,8 @@
@NonNull EasyConnectStatusCallback callback) {
Binder binder = new Binder();
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) {
- throw new RemoteException("Wifi service is not running");
- }
- iWifiManager.startDppAsConfiguratorInitiator(
- binder, enrolleeUri, selectedNetworkId, enrolleeNetworkRole,
- new EasyConnectCallbackProxy(executor, callback));
+ mService.startDppAsConfiguratorInitiator(binder, enrolleeUri, selectedNetworkId,
+ enrolleeNetworkRole, new EasyConnectCallbackProxy(executor, callback));
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -5245,11 +5063,7 @@
@NonNull EasyConnectStatusCallback callback) {
Binder binder = new Binder();
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) {
- throw new RemoteException("Wifi service is not running");
- }
- iWifiManager.startDppAsEnrolleeInitiator(binder, configuratorUri,
+ mService.startDppAsEnrolleeInitiator(binder, configuratorUri,
new EasyConnectCallbackProxy(executor, callback));
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
@@ -5270,12 +5084,8 @@
android.Manifest.permission.NETWORK_SETUP_WIZARD})
public void stopEasyConnectSession() {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) {
- throw new RemoteException("Wifi service is not running");
- }
/* Request lower layers to stop/abort and clear resources */
- iWifiManager.stopDppSession();
+ mService.stopDppSession();
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -5374,11 +5184,7 @@
Log.v(TAG, "addOnWifiUsabilityStatsListener: listener=" + listener);
}
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) {
- throw new RemoteException("Wifi service is not running");
- }
- iWifiManager.addOnWifiUsabilityStatsListener(new Binder(),
+ mService.addOnWifiUsabilityStatsListener(new Binder(),
new IOnWifiUsabilityStatsListener.Stub() {
@Override
public void onWifiUsabilityStats(int seqNum, boolean isSameBssidAndFreq,
@@ -5387,9 +5193,9 @@
Log.v(TAG, "OnWifiUsabilityStatsListener: "
+ "onWifiUsabilityStats: seqNum=" + seqNum);
}
- Binder.withCleanCallingIdentity(() ->
- executor.execute(() -> listener.onWifiUsabilityStats(seqNum,
- isSameBssidAndFreq, stats)));
+ Binder.clearCallingIdentity();
+ executor.execute(() -> listener.onWifiUsabilityStats(
+ seqNum, isSameBssidAndFreq, stats));
}
},
listener.hashCode()
@@ -5415,11 +5221,7 @@
Log.v(TAG, "removeOnWifiUsabilityStatsListener: listener=" + listener);
}
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) {
- throw new RemoteException("Wifi service is not running");
- }
- iWifiManager.removeOnWifiUsabilityStatsListener(listener.hashCode());
+ mService.removeOnWifiUsabilityStatsListener(listener.hashCode());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -5442,51 +5244,83 @@
@RequiresPermission(android.Manifest.permission.WIFI_UPDATE_USABILITY_STATS_SCORE)
public void updateWifiUsabilityScore(int seqNum, int score, int predictionHorizonSec) {
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) {
- throw new RemoteException("Wifi service is not running");
- }
- iWifiManager.updateWifiUsabilityScore(seqNum, score, predictionHorizonSec);
+ mService.updateWifiUsabilityScore(seqNum, score, predictionHorizonSec);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
}
/**
- * Interface for scan results listener. Should be implemented by applications and set when
- * calling {@link WifiManager#addScanResultsListener(Executor, ScanResultsListener)}.
+ * Abstract class for scan results callback. Should be extended by applications and set when
+ * calling {@link WifiManager#registerScanResultsCallback(Executor, ScanResultsCallback)}.
*/
- public interface ScanResultsListener {
+ public abstract static class ScanResultsCallback {
+ private final ScanResultsCallbackProxy mScanResultsCallbackProxy;
+
+ public ScanResultsCallback() {
+ mScanResultsCallbackProxy = new ScanResultsCallbackProxy();
+ }
/**
- * Called when new scan results available.
- * Caller should use {@link WifiManager#getScanResults()} to get the scan results.
+ * Called when new scan results are available.
+ * Clients should use {@link WifiManager#getScanResults()} to get the scan results.
*/
- void onScanResultsAvailable();
- }
+ public abstract void onScanResultsAvailable();
- private class ScanResultsListenerProxy extends IScanResultsListener.Stub {
- private final Executor mExecutor;
- private final ScanResultsListener mListener;
-
- ScanResultsListenerProxy(Executor executor, ScanResultsListener listener) {
- mExecutor = executor;
- mListener = listener;
+ /*package*/ @NonNull ScanResultsCallbackProxy getProxy() {
+ return mScanResultsCallbackProxy;
}
- @Override
- public void onScanResultsAvailable() {
- mExecutor.execute(mListener::onScanResultsAvailable);
+ private static class ScanResultsCallbackProxy extends IScanResultsCallback.Stub {
+ private final Object mLock = new Object();
+ @Nullable @GuardedBy("mLock") private Executor mExecutor;
+ @Nullable @GuardedBy("mLock") private ScanResultsCallback mCallback;
+
+ ScanResultsCallbackProxy() {
+ mCallback = null;
+ mExecutor = null;
+ }
+
+ /*package*/ void initProxy(@NonNull Executor executor,
+ @NonNull ScanResultsCallback callback) {
+ synchronized (mLock) {
+ mExecutor = executor;
+ mCallback = callback;
+ }
+ }
+
+ /*package*/ void cleanUpProxy() {
+ synchronized (mLock) {
+ mExecutor = null;
+ mCallback = null;
+ }
+ }
+
+ @Override
+ public void onScanResultsAvailable() {
+ ScanResultsCallback callback;
+ Executor executor;
+ synchronized (mLock) {
+ executor = mExecutor;
+ callback = mCallback;
+ }
+ if (callback == null || executor == null) {
+ return;
+ }
+ Binder.clearCallingIdentity();
+ executor.execute(callback::onScanResultsAvailable);
+ }
}
+
}
/**
- * Add a listener for Scan Results. See {@link ScanResultsListener}.
+ * Register a callback for Scan Results. See {@link ScanResultsCallback}.
* Caller will receive the event when scan results are available.
* Caller should use {@link WifiManager#getScanResults()} requires
* {@link android.Manifest.permission#ACCESS_FINE_LOCATION} to get the scan results.
- * Caller can remove a previously registered listener using
- * {@link WifiManager#removeScanResultsListener(ScanResultsListener)}
+ * Caller can remove a previously registered callback using
+ * {@link WifiManager#unregisterScanResultsCallback(ScanResultsCallback)}
* Same caller can add multiple listeners.
* <p>
* Applications should have the
@@ -5494,49 +5328,44 @@
* without the permission will trigger a {@link java.lang.SecurityException}.
* <p>
*
- * @param executor The executor to execute the listener of the {@code listener} object.
- * @param listener listener for Scan Results events
+ * @param executor The executor to execute the callback of the {@code callback} object.
+ * @param callback callback for Scan Results events
*/
@RequiresPermission(ACCESS_WIFI_STATE)
- public void addScanResultsListener(@NonNull @CallbackExecutor Executor executor,
- @NonNull ScanResultsListener listener) {
- if (listener == null) throw new IllegalArgumentException("listener cannot be null");
+ public void registerScanResultsCallback(@NonNull @CallbackExecutor Executor executor,
+ @NonNull ScanResultsCallback callback) {
if (executor == null) throw new IllegalArgumentException("executor cannot be null");
- Log.v(TAG, "addScanResultsListener: listener=" + listener + ", executor=" + executor);
+ if (callback == null) throw new IllegalArgumentException("callback cannot be null");
+
+ Log.v(TAG, "registerScanResultsCallback: callback=" + callback
+ + ", executor=" + executor);
+ ScanResultsCallback.ScanResultsCallbackProxy proxy = callback.getProxy();
+ proxy.initProxy(executor, callback);
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) {
- throw new RemoteException("Wifi service is not running");
- }
- iWifiManager.registerScanResultsListener(
- new Binder(),
- new ScanResultsListenerProxy(executor, listener),
- listener.hashCode());
+ mService.registerScanResultsCallback(proxy);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
}
/**
- * Allow callers to remove a previously added listener. After calling this method,
+ * Allow callers to unregister a previously registered callback. After calling this method,
* applications will no longer receive Scan Results events.
*
- * @param listener listener to remove for Scan Results events
+ * @param callback callback to unregister for Scan Results events
*/
@RequiresPermission(ACCESS_WIFI_STATE)
- public void removeScanResultsListener(@NonNull ScanResultsListener listener) {
- if (listener == null) throw new IllegalArgumentException("listener cannot be null");
- Log.v(TAG, "removeScanResultsListener: listener=" + listener);
-
+ public void unregisterScanResultsCallback(@NonNull ScanResultsCallback callback) {
+ if (callback == null) throw new IllegalArgumentException("callback cannot be null");
+ Log.v(TAG, "unregisterScanResultsCallback: Callback=" + callback);
+ ScanResultsCallback.ScanResultsCallbackProxy proxy = callback.getProxy();
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) {
- throw new RemoteException("Wifi service is not running");
- }
- iWifiManager.unregisterScanResultsListener(listener.hashCode());
+ mService.unregisterScanResultsCallback(proxy);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
+ } finally {
+ proxy.cleanUpProxy();
}
}
@@ -5608,11 +5437,7 @@
Log.v(TAG, "addSuggestionConnectionStatusListener listener=" + listener
+ ", executor=" + executor);
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) {
- throw new RemoteException("Wifi service is not running");
- }
- iWifiManager.registerSuggestionConnectionStatusListener(new Binder(),
+ mService.registerSuggestionConnectionStatusListener(new Binder(),
new SuggestionConnectionStatusListenerProxy(executor, listener),
listener.hashCode(), mContext.getOpPackageName(), mContext.getFeatureId());
} catch (RemoteException e) {
@@ -5633,11 +5458,7 @@
if (listener == null) throw new IllegalArgumentException("Listener cannot be null");
Log.v(TAG, "removeSuggestionConnectionStatusListener: listener=" + listener);
try {
- IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) {
- throw new RemoteException("Wifi service is not running");
- }
- iWifiManager.unregisterSuggestionConnectionStatusListener(listener.hashCode(),
+ mService.unregisterSuggestionConnectionStatusListener(listener.hashCode(),
mContext.getOpPackageName());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
diff --git a/wifi/java/android/net/wifi/WifiNetworkScoreCache.java b/wifi/java/android/net/wifi/WifiNetworkScoreCache.java
index b22ae070..be37c22 100755
--- a/wifi/java/android/net/wifi/WifiNetworkScoreCache.java
+++ b/wifi/java/android/net/wifi/WifiNetworkScoreCache.java
@@ -38,6 +38,7 @@
/**
* {@link INetworkScoreCache} implementation for Wifi Networks.
*
+ * TODO: This should not be part of wifi mainline module.
* @hide
*/
public class WifiNetworkScoreCache extends INetworkScoreCache.Stub {
diff --git a/wifi/java/android/net/wifi/WifiNetworkSpecifier.java b/wifi/java/android/net/wifi/WifiNetworkSpecifier.java
index ba9dd37..07afd7f 100644
--- a/wifi/java/android/net/wifi/WifiNetworkSpecifier.java
+++ b/wifi/java/android/net/wifi/WifiNetworkSpecifier.java
@@ -49,11 +49,11 @@
private static final String MATCH_ALL_SSID_PATTERN_PATH = ".*";
private static final String MATCH_EMPTY_SSID_PATTERN_PATH = "";
private static final Pair<MacAddress, MacAddress> MATCH_NO_BSSID_PATTERN1 =
- new Pair(MacAddress.BROADCAST_ADDRESS, MacAddress.BROADCAST_ADDRESS);
+ new Pair<>(MacAddress.BROADCAST_ADDRESS, MacAddress.BROADCAST_ADDRESS);
private static final Pair<MacAddress, MacAddress> MATCH_NO_BSSID_PATTERN2 =
- new Pair(MacAddress.ALL_ZEROS_ADDRESS, MacAddress.BROADCAST_ADDRESS);
+ new Pair<>(WifiManager.ALL_ZEROS_MAC_ADDRESS, MacAddress.BROADCAST_ADDRESS);
private static final Pair<MacAddress, MacAddress> MATCH_ALL_BSSID_PATTERN =
- new Pair(MacAddress.ALL_ZEROS_ADDRESS, MacAddress.ALL_ZEROS_ADDRESS);
+ new Pair<>(WifiManager.ALL_ZEROS_MAC_ADDRESS, WifiManager.ALL_ZEROS_MAC_ADDRESS);
private static final MacAddress MATCH_EXACT_BSSID_PATTERN_MASK =
MacAddress.BROADCAST_ADDRESS;
diff --git a/wifi/java/android/net/wifi/WifiNetworkSuggestion.java b/wifi/java/android/net/wifi/WifiNetworkSuggestion.java
index 246e96f..e78104d 100644
--- a/wifi/java/android/net/wifi/WifiNetworkSuggestion.java
+++ b/wifi/java/android/net/wifi/WifiNetworkSuggestion.java
@@ -116,6 +116,16 @@
*/
private int mCarrierId;
+ /**
+ * Whether this network is shared credential with user to allow user manually connect.
+ */
+ private boolean mIsUserAllowed;
+
+ /**
+ * Whether the setIsUserAllowedToManuallyConnect have been called.
+ */
+ private boolean mIsUserAllowedBeenSet;
+
public Builder() {
mSsid = null;
mBssid = null;
@@ -129,6 +139,8 @@
mIsAppInteractionRequired = false;
mIsUserInteractionRequired = false;
mIsMetered = false;
+ mIsUserAllowed = true;
+ mIsUserAllowedBeenSet = false;
mPriority = UNASSIGNED_PRIORITY;
mCarrierId = TelephonyManager.UNKNOWN_CARRIER_ID;
}
@@ -365,6 +377,27 @@
return this;
}
+ /**
+ * Specifies whether the network credentials provided with this suggestion can be used by
+ * the user to explicitly (manually) connect to this network. If true this network will
+ * appear in the Wi-Fi Picker (in Settings) and the user will be able to select and connect
+ * to it with the provided credentials. If false, the user will need to enter network
+ * credentials and the resulting configuration will become a user saved network.
+ * <p>
+ * <li>Note: Only valid for secure (non-open) networks.
+ * <li>If not set, defaults to true (i.e. allow user to manually connect) for secure
+ * networks and false for open networks.</li>
+ *
+ * @param isAllowed {@code true} to indicate that the credentials may be used by the user to
+ * manually connect to the network, {@code false} otherwise.
+ * @return Instance of {@link Builder} to enable chaining of the builder method.
+ */
+ public @NonNull Builder setIsUserAllowedToManuallyConnect(boolean isAllowed) {
+ mIsUserAllowed = isAllowed;
+ mIsUserAllowedBeenSet = true;
+ return this;
+ }
+
private void setSecurityParamsInWifiConfiguration(
@NonNull WifiConfiguration configuration) {
if (!TextUtils.isEmpty(mWpa2PskPassphrase)) { // WPA-PSK network.
@@ -512,10 +545,17 @@
}
if (mBssid != null
&& (mBssid.equals(MacAddress.BROADCAST_ADDRESS)
- || mBssid.equals(MacAddress.ALL_ZEROS_ADDRESS))) {
+ || mBssid.equals(WifiManager.ALL_ZEROS_MAC_ADDRESS))) {
throw new IllegalStateException("invalid bssid for suggestion");
}
wifiConfiguration = buildWifiConfiguration();
+ if (wifiConfiguration.isOpenNetwork()) {
+ if (mIsUserAllowedBeenSet && mIsUserAllowed) {
+ throw new IllegalStateException("Open network should not be "
+ + "setIsUserAllowedToManuallyConnect to true");
+ }
+ mIsUserAllowed = false;
+ }
}
return new WifiNetworkSuggestion(
@@ -523,6 +563,7 @@
mPasspointConfiguration,
mIsAppInteractionRequired,
mIsUserInteractionRequired,
+ mIsUserAllowed,
Process.myUid(),
ActivityThread.currentApplication().getApplicationContext().getOpPackageName());
}
@@ -564,12 +605,20 @@
*/
public final String suggestorPackageName;
+ /**
+ * Whether app share credential with the user, allow user use provided credential to
+ * connect network manually.
+ * @hide
+ */
+ public final boolean isUserAllowedToManuallyConnect;
+
/** @hide */
public WifiNetworkSuggestion() {
this.wifiConfiguration = null;
this.passpointConfiguration = null;
this.isAppInteractionRequired = false;
this.isUserInteractionRequired = false;
+ this.isUserAllowedToManuallyConnect = true;
this.suggestorUid = -1;
this.suggestorPackageName = null;
}
@@ -579,6 +628,7 @@
@Nullable PasspointConfiguration passpointConfiguration,
boolean isAppInteractionRequired,
boolean isUserInteractionRequired,
+ boolean isUserAllowedToManuallyConnect,
int suggestorUid, @NonNull String suggestorPackageName) {
checkNotNull(networkConfiguration);
checkNotNull(suggestorPackageName);
@@ -587,6 +637,7 @@
this.isAppInteractionRequired = isAppInteractionRequired;
this.isUserInteractionRequired = isUserInteractionRequired;
+ this.isUserAllowedToManuallyConnect = isUserAllowedToManuallyConnect;
this.suggestorUid = suggestorUid;
this.suggestorPackageName = suggestorPackageName;
}
@@ -600,6 +651,7 @@
in.readParcelable(null), // PasspointConfiguration
in.readBoolean(), // isAppInteractionRequired
in.readBoolean(), // isUserInteractionRequired
+ in.readBoolean(), // isSharedCredentialWithUser
in.readInt(), // suggestorUid
in.readString() // suggestorPackageName
);
@@ -622,6 +674,7 @@
dest.writeParcelable(passpointConfiguration, flags);
dest.writeBoolean(isAppInteractionRequired);
dest.writeBoolean(isUserInteractionRequired);
+ dest.writeBoolean(isUserAllowedToManuallyConnect);
dest.writeInt(suggestorUid);
dest.writeString(suggestorPackageName);
}
@@ -666,6 +719,7 @@
.append(", FQDN=").append(wifiConfiguration.FQDN)
.append(", isAppInteractionRequired=").append(isAppInteractionRequired)
.append(", isUserInteractionRequired=").append(isUserInteractionRequired)
+ .append(", isUserAllowedToManuallyConnect=").append(isUserAllowedToManuallyConnect)
.append(", suggestorUid=").append(suggestorUid)
.append(", suggestorPackageName=").append(suggestorPackageName)
.append("]");
diff --git a/wifi/java/android/net/wifi/WifiScanner.java b/wifi/java/android/net/wifi/WifiScanner.java
index 0de5066..c743b63 100644
--- a/wifi/java/android/net/wifi/WifiScanner.java
+++ b/wifi/java/android/net/wifi/WifiScanner.java
@@ -17,13 +17,16 @@
package android.net.wifi;
import android.Manifest;
+import android.annotation.CallbackExecutor;
import android.annotation.IntDef;
import android.annotation.NonNull;
+import android.annotation.Nullable;
import android.annotation.RequiresPermission;
import android.annotation.SuppressLint;
import android.annotation.SystemApi;
import android.annotation.SystemService;
import android.content.Context;
+import android.os.Binder;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
@@ -45,6 +48,7 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import java.util.concurrent.Executor;
/**
* This class provides a way to scan the Wifi universe around the device
@@ -55,6 +59,71 @@
public class WifiScanner {
/** @hide */
+ public static final int WIFI_BAND_INDEX_24_GHZ = 0;
+ /** @hide */
+ public static final int WIFI_BAND_INDEX_5_GHZ = 1;
+ /** @hide */
+ public static final int WIFI_BAND_INDEX_5_GHZ_DFS_ONLY = 2;
+ /** @hide */
+ public static final int WIFI_BAND_INDEX_6_GHZ = 3;
+ /** @hide */
+ public static final int WIFI_BAND_COUNT = 4;
+
+ /** @hide */
+ @Retention(RetentionPolicy.SOURCE)
+ @IntDef(prefix = {"WIFI_BAND_INDEX_"}, value = {
+ WIFI_BAND_INDEX_24_GHZ,
+ WIFI_BAND_INDEX_5_GHZ,
+ WIFI_BAND_INDEX_5_GHZ_DFS_ONLY,
+ WIFI_BAND_INDEX_6_GHZ})
+ public @interface WifiBandIndex {}
+
+ /** no band specified; use channel list instead */
+ public static final int WIFI_BAND_UNSPECIFIED = 0;
+ /** 2.4 GHz band */
+ public static final int WIFI_BAND_24_GHZ = 1 << WIFI_BAND_INDEX_24_GHZ;
+ /** 5 GHz band excluding DFS channels */
+ public static final int WIFI_BAND_5_GHZ = 1 << WIFI_BAND_INDEX_5_GHZ;
+ /** DFS channels from 5 GHz band only */
+ public static final int WIFI_BAND_5_GHZ_DFS_ONLY = 1 << WIFI_BAND_INDEX_5_GHZ_DFS_ONLY;
+ /** 6 GHz band */
+ public static final int WIFI_BAND_6_GHZ = 1 << WIFI_BAND_INDEX_6_GHZ;
+
+ /** @hide */
+ @Retention(RetentionPolicy.SOURCE)
+ @IntDef(prefix = {"WIFI_BAND_"}, value = {
+ WIFI_BAND_UNSPECIFIED,
+ WIFI_BAND_24_GHZ,
+ WIFI_BAND_5_GHZ,
+ WIFI_BAND_5_GHZ_DFS_ONLY,
+ WIFI_BAND_6_GHZ})
+ public @interface WifiBandBasic {}
+
+ /**
+ * Combination of bands
+ * Note that those are only the common band combinations,
+ * other combinations can be created by combining any of the basic bands above
+ */
+ /** Both 2.4 GHz band and 5 GHz band; no DFS channels */
+ public static final int WIFI_BAND_BOTH = WIFI_BAND_24_GHZ | WIFI_BAND_5_GHZ;
+ /**
+ * 2.4Ghz band + DFS channels from 5 GHz band only
+ * @hide
+ */
+ public static final int WIFI_BAND_24_GHZ_WITH_5GHZ_DFS =
+ WIFI_BAND_24_GHZ | WIFI_BAND_5_GHZ_DFS_ONLY;
+ /** 5 GHz band including DFS channels */
+ public static final int WIFI_BAND_5_GHZ_WITH_DFS = WIFI_BAND_5_GHZ | WIFI_BAND_5_GHZ_DFS_ONLY;
+ /** Both 2.4 GHz band and 5 GHz band; with DFS channels */
+ public static final int WIFI_BAND_BOTH_WITH_DFS =
+ WIFI_BAND_24_GHZ | WIFI_BAND_5_GHZ | WIFI_BAND_5_GHZ_DFS_ONLY;
+ /** 2.4 GHz band and 5 GHz band (no DFS channels) and 6 GHz */
+ public static final int WIFI_BAND_24_5_6_GHZ = WIFI_BAND_BOTH | WIFI_BAND_6_GHZ;
+ /** 2.4 GHz band and 5 GHz band; with DFS channels and 6 GHz */
+ public static final int WIFI_BAND_24_5_WITH_DFS_6_GHZ =
+ WIFI_BAND_BOTH_WITH_DFS | WIFI_BAND_6_GHZ;
+
+ /** @hide */
@Retention(RetentionPolicy.SOURCE)
@IntDef(prefix = {"WIFI_BAND_"}, value = {
WIFI_BAND_UNSPECIFIED,
@@ -64,33 +133,17 @@
WIFI_BAND_5_GHZ_DFS_ONLY,
WIFI_BAND_24_GHZ_WITH_5GHZ_DFS,
WIFI_BAND_5_GHZ_WITH_DFS,
- WIFI_BAND_BOTH_WITH_DFS})
+ WIFI_BAND_BOTH_WITH_DFS,
+ WIFI_BAND_6_GHZ,
+ WIFI_BAND_24_5_6_GHZ,
+ WIFI_BAND_24_5_WITH_DFS_6_GHZ})
public @interface WifiBand {}
- /** no band specified; use channel list instead */
- public static final int WIFI_BAND_UNSPECIFIED = 0;
- /** 2.4 GHz band */
- public static final int WIFI_BAND_24_GHZ = 1;
- /** 5 GHz band excluding DFS channels */
- public static final int WIFI_BAND_5_GHZ = 2;
- /** Both 2.4 GHz band and 5 GHz band; no DFS channels */
- public static final int WIFI_BAND_BOTH = 3;
- /** DFS channels from 5 GHz band only */
- public static final int WIFI_BAND_5_GHZ_DFS_ONLY = 4;
- /**
- * 2.4Ghz band + DFS channels from 5 GHz band only
- * @hide
- */
- public static final int WIFI_BAND_24_GHZ_WITH_5GHZ_DFS = 5;
- /** 5 GHz band including DFS channels */
- public static final int WIFI_BAND_5_GHZ_WITH_DFS = 6;
- /** Both 2.4 GHz band and 5 GHz band; with DFS channels */
- public static final int WIFI_BAND_BOTH_WITH_DFS = 7;
/**
* Max band value
* @hide
*/
- public static final int WIFI_BAND_MAX = 8;
+ public static final int WIFI_BAND_MAX = 0x10;
/** Minimum supported scanning period */
public static final int MIN_SCAN_PERIOD_MS = 1000;
@@ -135,7 +188,7 @@
@SystemApi
@NonNull
@RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE)
- public List<Integer> getAvailableChannels(@WifiBand int band) {
+ public List<Integer> getAvailableChannels(int band) {
try {
Bundle bundle = mService.getAvailableChannels(band, mContext.getOpPackageName(),
mContext.getFeatureId());
@@ -196,24 +249,29 @@
*/
public static final int REPORT_EVENT_NO_BATCH = (1 << 2);
+ /** @hide */
+ @Retention(RetentionPolicy.SOURCE)
+ @IntDef(prefix = {"SCAN_TYPE_"}, value = {
+ SCAN_TYPE_LOW_LATENCY,
+ SCAN_TYPE_LOW_POWER,
+ SCAN_TYPE_HIGH_ACCURACY})
+ public @interface ScanType {}
+
/**
- * This is used to indicate the purpose of the scan to the wifi chip in
- * {@link ScanSettings#type}.
- * On devices with multiple hardware radio chains (and hence different modes of scan),
- * this type serves as an indication to the hardware on what mode of scan to perform.
- * Only apps holding android.Manifest.permission.NETWORK_STACK permission can set this value.
- *
- * Note: This serves as an intent and not as a stipulation, the wifi chip
- * might honor or ignore the indication based on the current radio conditions. Always
- * use the {@link ScanResult#radioChainInfos} to figure out the radio chain configuration used
- * to receive the corresponding scan result.
+ * Optimize the scan for lower latency.
+ * @see ScanSettings#type
*/
- /** {@hide} */
- public static final int TYPE_LOW_LATENCY = 0;
- /** {@hide} */
- public static final int TYPE_LOW_POWER = 1;
- /** {@hide} */
- public static final int TYPE_HIGH_ACCURACY = 2;
+ public static final int SCAN_TYPE_LOW_LATENCY = 0;
+ /**
+ * Optimize the scan for lower power usage.
+ * @see ScanSettings#type
+ */
+ public static final int SCAN_TYPE_LOW_POWER = 1;
+ /**
+ * Optimize the scan for higher accuracy.
+ * @see ScanSettings#type
+ */
+ public static final int SCAN_TYPE_HIGH_ACCURACY = 2;
/** {@hide} */
public static final String SCAN_PARAMS_SCAN_SETTINGS_KEY = "ScanSettings";
@@ -228,18 +286,14 @@
* scan configuration parameters to be sent to {@link #startBackgroundScan}
*/
public static class ScanSettings implements Parcelable {
- /**
- * Hidden network to be scanned for.
- * {@hide}
- */
+ /** Hidden network to be scanned for. */
public static class HiddenNetwork {
/** SSID of the network */
- public String ssid;
+ @NonNull
+ public final String ssid;
- /**
- * Default constructor for HiddenNetwork.
- */
- public HiddenNetwork(String ssid) {
+ /** Default constructor for HiddenNetwork. */
+ public HiddenNetwork(@NonNull String ssid) {
this.ssid = ssid;
}
}
@@ -249,12 +303,12 @@
/** list of channels; used when band is set to WIFI_BAND_UNSPECIFIED */
public ChannelSpec[] channels;
/**
- * list of hidden networks to scan for. Explicit probe requests are sent out for such
+ * List of hidden networks to scan for. Explicit probe requests are sent out for such
* networks during scan. Only valid for single scan requests.
- * {@hide}
*/
+ @NonNull
@RequiresPermission(android.Manifest.permission.NETWORK_STACK)
- public HiddenNetwork[] hiddenNetworks;
+ public final List<HiddenNetwork> hiddenNetworks = new ArrayList<>();
/** period of background scan; in millisecond, 0 => single shot scan */
public int periodInMs;
/** must have a valid REPORT_EVENT value */
@@ -285,11 +339,24 @@
public boolean isPnoScan;
/**
* Indicate the type of scan to be performed by the wifi chip.
- * Default value: {@link #TYPE_LOW_LATENCY}.
- * {@hide}
+ *
+ * On devices with multiple hardware radio chains (and hence different modes of scan),
+ * this type serves as an indication to the hardware on what mode of scan to perform.
+ * Only apps holding {@link android.Manifest.permission.NETWORK_STACK} permission can set
+ * this value.
+ *
+ * Note: This serves as an intent and not as a stipulation, the wifi chip
+ * might honor or ignore the indication based on the current radio conditions. Always
+ * use the {@link ScanResult#radioChainInfos} to figure out the radio chain configuration
+ * used to receive the corresponding scan result.
+ *
+ * One of {@link #SCAN_TYPE_LOW_LATENCY}, {@link #SCAN_TYPE_LOW_POWER},
+ * {@link #SCAN_TYPE_HIGH_ACCURACY}.
+ * Default value: {@link #SCAN_TYPE_LOW_LATENCY}.
*/
+ @ScanType
@RequiresPermission(android.Manifest.permission.NETWORK_STACK)
- public int type = TYPE_LOW_LATENCY;
+ public int type = SCAN_TYPE_LOW_LATENCY;
/**
* This scan request may ignore location settings while receiving scans. This should only
* be used in emergency situations.
@@ -336,13 +403,9 @@
} else {
dest.writeInt(0);
}
- if (hiddenNetworks != null) {
- dest.writeInt(hiddenNetworks.length);
- for (int i = 0; i < hiddenNetworks.length; i++) {
- dest.writeString(hiddenNetworks[i].ssid);
- }
- } else {
- dest.writeInt(0);
+ dest.writeInt(hiddenNetworks.size());
+ for (HiddenNetwork hiddenNetwork : hiddenNetworks) {
+ dest.writeString(hiddenNetwork.ssid);
}
}
@@ -372,10 +435,10 @@
settings.channels[i] = spec;
}
int numNetworks = in.readInt();
- settings.hiddenNetworks = new HiddenNetwork[numNetworks];
+ settings.hiddenNetworks.clear();
for (int i = 0; i < numNetworks; i++) {
String ssid = in.readString();
- settings.hiddenNetworks[i] = new HiddenNetwork(ssid);;
+ settings.hiddenNetworks.add(new HiddenNetwork(ssid));
}
return settings;
}
@@ -384,7 +447,6 @@
return new ScanSettings[size];
}
};
-
}
/**
@@ -801,33 +863,44 @@
}
/**
- * Register a listener that will receive results from all single scans
- * Either the onSuccess/onFailure will be called once when the listener is registered. After
- * (assuming onSuccess was called) all subsequent single scan results will be delivered to the
- * listener. It is possible that onFullResult will not be called for all results of the first
- * scan if the listener was registered during the scan.
+ * Register a listener that will receive results from all single scans.
+ * Either the {@link ScanListener#onSuccess()} or {@link ScanListener#onFailure(int, String)}
+ * method will be called once when the listener is registered.
+ * Afterwards (assuming onSuccess was called), all subsequent single scan results will be
+ * delivered to the listener. It is possible that onFullResult will not be called for all
+ * results of the first scan if the listener was registered during the scan.
*
* @param listener specifies the object to report events to. This object is also treated as a
* key for this request, and must also be specified to cancel the request.
* Multiple requests should also not share this object.
- * {@hide}
*/
@RequiresPermission(Manifest.permission.NETWORK_STACK)
- public void registerScanListener(ScanListener listener) {
+ public void registerScanListener(@NonNull @CallbackExecutor Executor executor,
+ @NonNull ScanListener listener) {
+ Preconditions.checkNotNull(executor, "executor cannot be null");
Preconditions.checkNotNull(listener, "listener cannot be null");
- int key = addListener(listener);
+ int key = addListener(listener, executor);
if (key == INVALID_KEY) return;
validateChannel();
mAsyncChannel.sendMessage(CMD_REGISTER_SCAN_LISTENER, 0, key);
}
/**
+ * Overload of {@link #registerScanListener(Executor, ScanListener)} that executes the callback
+ * synchronously.
+ * @hide
+ */
+ @RequiresPermission(Manifest.permission.NETWORK_STACK)
+ public void registerScanListener(@NonNull ScanListener listener) {
+ registerScanListener(new SynchronousExecutor(), listener);
+ }
+
+ /**
* Deregister a listener for ongoing single scans
* @param listener specifies which scan to cancel; must be same object as passed in {@link
* #registerScanListener}
- * {@hide}
*/
- public void deregisterScanListener(ScanListener listener) {
+ public void unregisterScanListener(@NonNull ScanListener listener) {
Preconditions.checkNotNull(listener, "listener cannot be null");
int key = removeListener(listener);
if (key == INVALID_KEY) return;
@@ -1280,6 +1353,7 @@
private int mListenerKey = 1;
private final SparseArray mListenerMap = new SparseArray();
+ private final SparseArray<Executor> mExecutorMap = new SparseArray<>();
private final Object mListenerMapLock = new Object();
private AsyncChannel mAsyncChannel;
@@ -1327,10 +1401,14 @@
"No permission to access and change wifi or a bad initialization");
}
+ private int addListener(ActionListener listener) {
+ return addListener(listener, null);
+ }
+
// Add a listener into listener map. If the listener already exists, return INVALID_KEY and
// send an error message to internal handler; Otherwise add the listener to the listener map and
// return the key of the listener.
- private int addListener(ActionListener listener) {
+ private int addListener(ActionListener listener, Executor executor) {
synchronized (mListenerMapLock) {
boolean keyExists = (getListenerKey(listener) != INVALID_KEY);
// Note we need to put the listener into listener map even if it's a duplicate as the
@@ -1346,6 +1424,7 @@
message.sendToTarget();
return INVALID_KEY;
} else {
+ mExecutorMap.put(key, executor);
return key;
}
}
@@ -1363,11 +1442,22 @@
return key;
}
- private Object getListener(int key) {
- if (key == INVALID_KEY) return null;
+ private static class ListenerWithExecutor {
+ @Nullable final Object mListener;
+ @Nullable final Executor mExecutor;
+
+ ListenerWithExecutor(@Nullable Object listener, @Nullable Executor executor) {
+ mListener = listener;
+ mExecutor = executor;
+ }
+ }
+
+ private ListenerWithExecutor getListenerWithExecutor(int key) {
+ if (key == INVALID_KEY) return new ListenerWithExecutor(null, null);
synchronized (mListenerMapLock) {
Object listener = mListenerMap.get(key);
- return listener;
+ Executor executor = mExecutorMap.get(key);
+ return new ListenerWithExecutor(listener, executor);
}
}
@@ -1388,6 +1478,7 @@
synchronized (mListenerMapLock) {
Object listener = mListenerMap.get(key);
mListenerMap.remove(key);
+ mExecutorMap.remove(key);
return listener;
}
}
@@ -1400,6 +1491,7 @@
}
synchronized (mListenerMapLock) {
mListenerMap.remove(key);
+ mExecutorMap.remove(key);
return key;
}
}
@@ -1458,7 +1550,8 @@
return;
}
- Object listener = getListener(msg.arg2);
+ ListenerWithExecutor listenerWithExecutor = getListenerWithExecutor(msg.arg2);
+ Object listener = listenerWithExecutor.mListener;
if (listener == null) {
if (DBG) Log.d(TAG, "invalid listener key = " + msg.arg2);
@@ -1467,36 +1560,52 @@
if (DBG) Log.d(TAG, "listener key = " + msg.arg2);
}
+ Executor executor = listenerWithExecutor.mExecutor;
+ if (executor == null) {
+ executor = new SynchronousExecutor();
+ }
+
switch (msg.what) {
- /* ActionListeners grouped together */
- case CMD_OP_SUCCEEDED :
- ((ActionListener) listener).onSuccess();
- break;
- case CMD_OP_FAILED : {
- OperationResult result = (OperationResult)msg.obj;
- ((ActionListener) listener).onFailure(result.reason, result.description);
- removeListener(msg.arg2);
- }
- break;
- case CMD_SCAN_RESULT :
- ((ScanListener) listener).onResults(
- ((ParcelableScanData) msg.obj).getResults());
- return;
- case CMD_FULL_SCAN_RESULT :
+ /* ActionListeners grouped together */
+ case CMD_OP_SUCCEEDED: {
+ ActionListener actionListener = (ActionListener) listener;
+ Binder.clearCallingIdentity();
+ executor.execute(actionListener::onSuccess);
+ } break;
+ case CMD_OP_FAILED: {
+ OperationResult result = (OperationResult) msg.obj;
+ ActionListener actionListener = (ActionListener) listener;
+ removeListener(msg.arg2);
+ Binder.clearCallingIdentity();
+ executor.execute(() ->
+ actionListener.onFailure(result.reason, result.description));
+ } break;
+ case CMD_SCAN_RESULT: {
+ ScanListener scanListener = (ScanListener) listener;
+ ParcelableScanData parcelableScanData = (ParcelableScanData) msg.obj;
+ Binder.clearCallingIdentity();
+ executor.execute(() -> scanListener.onResults(parcelableScanData.getResults()));
+ } break;
+ case CMD_FULL_SCAN_RESULT: {
ScanResult result = (ScanResult) msg.obj;
- ((ScanListener) listener).onFullResult(result);
- return;
- case CMD_SINGLE_SCAN_COMPLETED:
+ ScanListener scanListener = ((ScanListener) listener);
+ Binder.clearCallingIdentity();
+ executor.execute(() -> scanListener.onFullResult(result));
+ } break;
+ case CMD_SINGLE_SCAN_COMPLETED: {
if (DBG) Log.d(TAG, "removing listener for single scan");
removeListener(msg.arg2);
- break;
- case CMD_PNO_NETWORK_FOUND:
- ((PnoScanListener) listener).onPnoNetworkFound(
- ((ParcelableScanResults) msg.obj).getResults());
- return;
- default:
+ } break;
+ case CMD_PNO_NETWORK_FOUND: {
+ PnoScanListener pnoScanListener = (PnoScanListener) listener;
+ ParcelableScanResults parcelableScanResults = (ParcelableScanResults) msg.obj;
+ Binder.clearCallingIdentity();
+ executor.execute(() ->
+ pnoScanListener.onPnoNetworkFound(parcelableScanResults.getResults()));
+ } break;
+ default: {
if (DBG) Log.d(TAG, "Ignoring message " + msg.what);
- return;
+ } break;
}
}
}
diff --git a/wifi/java/android/net/wifi/aware/TlvBufferUtils.java b/wifi/java/android/net/wifi/aware/TlvBufferUtils.java
index b3b5b29..2d3cc1e 100644
--- a/wifi/java/android/net/wifi/aware/TlvBufferUtils.java
+++ b/wifi/java/android/net/wifi/aware/TlvBufferUtils.java
@@ -18,8 +18,6 @@
import android.annotation.Nullable;
-import libcore.io.Memory;
-
import java.nio.BufferOverflowException;
import java.nio.ByteOrder;
import java.util.ArrayList;
@@ -266,7 +264,7 @@
public TlvConstructor putShort(int type, short data) {
checkLength(2);
addHeader(type, 2);
- Memory.pokeShort(mArray, mPosition, data, mByteOrder);
+ pokeShort(mArray, mPosition, data, mByteOrder);
mPosition += 2;
return this;
}
@@ -284,7 +282,7 @@
public TlvConstructor putInt(int type, int data) {
checkLength(4);
addHeader(type, 4);
- Memory.pokeInt(mArray, mPosition, data, mByteOrder);
+ pokeInt(mArray, mPosition, data, mByteOrder);
mPosition += 4;
return this;
}
@@ -349,14 +347,14 @@
if (mTypeSize == 1) {
mArray[mPosition] = (byte) type;
} else if (mTypeSize == 2) {
- Memory.pokeShort(mArray, mPosition, (short) type, mByteOrder);
+ pokeShort(mArray, mPosition, (short) type, mByteOrder);
}
mPosition += mTypeSize;
if (mLengthSize == 1) {
mArray[mPosition] = (byte) length;
} else if (mLengthSize == 2) {
- Memory.pokeShort(mArray, mPosition, (short) length, mByteOrder);
+ pokeShort(mArray, mPosition, (short) length, mByteOrder);
}
mPosition += mLengthSize;
}
@@ -445,7 +443,7 @@
throw new IllegalArgumentException(
"Accesing a short from a TLV element of length " + length);
}
- return Memory.peekShort(mRefArray, offset, byteOrder);
+ return peekShort(mRefArray, offset, byteOrder);
}
/**
@@ -460,7 +458,7 @@
throw new IllegalArgumentException(
"Accesing an int from a TLV element of length " + length);
}
- return Memory.peekInt(mRefArray, offset, byteOrder);
+ return peekInt(mRefArray, offset, byteOrder);
}
/**
@@ -590,7 +588,7 @@
if (mTypeSize == 1) {
type = mArray[mOffset];
} else if (mTypeSize == 2) {
- type = Memory.peekShort(mArray, mOffset, mByteOrder);
+ type = peekShort(mArray, mOffset, mByteOrder);
}
mOffset += mTypeSize;
@@ -598,7 +596,7 @@
if (mLengthSize == 1) {
length = mArray[mOffset];
} else if (mLengthSize == 2) {
- length = Memory.peekShort(mArray, mOffset, mByteOrder);
+ length = peekShort(mArray, mOffset, mByteOrder);
}
mOffset += mLengthSize;
@@ -661,10 +659,56 @@
if (lengthSize == 1) {
nextTlvIndex += lengthSize + array[nextTlvIndex];
} else {
- nextTlvIndex += lengthSize + Memory.peekShort(array, nextTlvIndex, byteOrder);
+ nextTlvIndex += lengthSize + peekShort(array, nextTlvIndex, byteOrder);
}
}
return nextTlvIndex == array.length;
}
+
+ private static void pokeShort(byte[] dst, int offset, short value, ByteOrder order) {
+ if (order == ByteOrder.BIG_ENDIAN) {
+ dst[offset++] = (byte) ((value >> 8) & 0xff);
+ dst[offset ] = (byte) ((value >> 0) & 0xff);
+ } else {
+ dst[offset++] = (byte) ((value >> 0) & 0xff);
+ dst[offset ] = (byte) ((value >> 8) & 0xff);
+ }
+ }
+
+ private static void pokeInt(byte[] dst, int offset, int value, ByteOrder order) {
+ if (order == ByteOrder.BIG_ENDIAN) {
+ dst[offset++] = (byte) ((value >> 24) & 0xff);
+ dst[offset++] = (byte) ((value >> 16) & 0xff);
+ dst[offset++] = (byte) ((value >> 8) & 0xff);
+ dst[offset ] = (byte) ((value >> 0) & 0xff);
+ } else {
+ dst[offset++] = (byte) ((value >> 0) & 0xff);
+ dst[offset++] = (byte) ((value >> 8) & 0xff);
+ dst[offset++] = (byte) ((value >> 16) & 0xff);
+ dst[offset ] = (byte) ((value >> 24) & 0xff);
+ }
+ }
+
+ private static short peekShort(byte[] src, int offset, ByteOrder order) {
+ if (order == ByteOrder.BIG_ENDIAN) {
+ return (short) ((src[offset] << 8) | (src[offset + 1] & 0xff));
+ } else {
+ return (short) ((src[offset + 1] << 8) | (src[offset] & 0xff));
+ }
+ }
+
+ private static int peekInt(byte[] src, int offset, ByteOrder order) {
+ if (order == ByteOrder.BIG_ENDIAN) {
+ return ((src[offset++] & 0xff) << 24)
+ | ((src[offset++] & 0xff) << 16)
+ | ((src[offset++] & 0xff) << 8)
+ | ((src[offset ] & 0xff) << 0);
+ } else {
+ return ((src[offset++] & 0xff) << 0)
+ | ((src[offset++] & 0xff) << 8)
+ | ((src[offset++] & 0xff) << 16)
+ | ((src[offset ] & 0xff) << 24);
+ }
+ }
}
diff --git a/wifi/java/android/net/wifi/aware/WifiAwareAgentNetworkSpecifier.java b/wifi/java/android/net/wifi/aware/WifiAwareAgentNetworkSpecifier.java
index 9164d04..5ec4c8b 100644
--- a/wifi/java/android/net/wifi/aware/WifiAwareAgentNetworkSpecifier.java
+++ b/wifi/java/android/net/wifi/aware/WifiAwareAgentNetworkSpecifier.java
@@ -207,14 +207,14 @@
@Override
public void writeToParcel(Parcel dest, int flags) {
- dest.writeBlob(mData);
+ dest.writeByteArray(mData);
}
public static final @android.annotation.NonNull Creator<ByteArrayWrapper> CREATOR =
new Creator<ByteArrayWrapper>() {
@Override
public ByteArrayWrapper createFromParcel(Parcel in) {
- return new ByteArrayWrapper(in.readBlob());
+ return new ByteArrayWrapper(in.createByteArray());
}
@Override
diff --git a/wifi/java/android/net/wifi/hotspot2/OsuProvider.java b/wifi/java/android/net/wifi/hotspot2/OsuProvider.java
index 3bef502..f0a0607 100644
--- a/wifi/java/android/net/wifi/hotspot2/OsuProvider.java
+++ b/wifi/java/android/net/wifi/hotspot2/OsuProvider.java
@@ -19,7 +19,6 @@
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SystemApi;
-import android.graphics.drawable.Icon;
import android.net.Uri;
import android.net.wifi.WifiSsid;
import android.os.Bundle;
@@ -86,23 +85,16 @@
*/
private final List<Integer> mMethodList;
- /**
- * Icon data for the OSU (Online Sign-Up) provider.
- */
- private final Icon mIcon;
-
/** @hide */
public OsuProvider(String osuSsid, Map<String, String> friendlyNames,
- String serviceDescription, Uri serverUri, String nai, List<Integer> methodList,
- Icon icon) {
+ String serviceDescription, Uri serverUri, String nai, List<Integer> methodList) {
this(WifiSsid.createFromByteArray(osuSsid.getBytes(StandardCharsets.UTF_8)),
- friendlyNames, serviceDescription, serverUri, nai, methodList, icon);
+ friendlyNames, serviceDescription, serverUri, nai, methodList);
}
/** @hide */
public OsuProvider(WifiSsid osuSsid, Map<String, String> friendlyNames,
- String serviceDescription, Uri serverUri, String nai, List<Integer> methodList,
- Icon icon) {
+ String serviceDescription, Uri serverUri, String nai, List<Integer> methodList) {
mOsuSsid = osuSsid;
mFriendlyNames = friendlyNames;
mServiceDescription = serviceDescription;
@@ -113,7 +105,6 @@
} else {
mMethodList = new ArrayList<>(methodList);
}
- mIcon = icon;
}
/**
@@ -130,7 +121,6 @@
mServerUri = null;
mNetworkAccessIdentifier = null;
mMethodList = new ArrayList<>();
- mIcon = null;
return;
}
@@ -144,7 +134,6 @@
} else {
mMethodList = new ArrayList<>(source.mMethodList);
}
- mIcon = source.mIcon;
}
/** @hide */
@@ -205,11 +194,6 @@
return mMethodList;
}
- /** @hide */
- public Icon getIcon() {
- return mIcon;
- }
-
@Override
public int describeContents() {
return 0;
@@ -222,7 +206,6 @@
dest.writeParcelable(mServerUri, flags);
dest.writeString(mNetworkAccessIdentifier);
dest.writeList(mMethodList);
- dest.writeParcelable(mIcon, flags);
Bundle bundle = new Bundle();
bundle.putSerializable("friendlyNameMap", (HashMap<String, String>) mFriendlyNames);
dest.writeBundle(bundle);
@@ -237,21 +220,16 @@
return false;
}
OsuProvider that = (OsuProvider) thatObject;
- return (mOsuSsid == null ? that.mOsuSsid == null : mOsuSsid.equals(that.mOsuSsid))
- && (mFriendlyNames == null) ? that.mFriendlyNames == null
- : mFriendlyNames.equals(that.mFriendlyNames)
+ return Objects.equals(mOsuSsid, that.mOsuSsid)
+ && Objects.equals(mFriendlyNames, that.mFriendlyNames)
&& TextUtils.equals(mServiceDescription, that.mServiceDescription)
- && (mServerUri == null ? that.mServerUri == null
- : mServerUri.equals(that.mServerUri))
+ && Objects.equals(mServerUri, that.mServerUri)
&& TextUtils.equals(mNetworkAccessIdentifier, that.mNetworkAccessIdentifier)
- && (mMethodList == null ? that.mMethodList == null
- : mMethodList.equals(that.mMethodList))
- && (mIcon == null ? that.mIcon == null : mIcon.sameAs(that.mIcon));
+ && Objects.equals(mMethodList, that.mMethodList);
}
@Override
public int hashCode() {
- // mIcon is not hashable, skip the variable.
return Objects.hash(mOsuSsid, mServiceDescription, mFriendlyNames,
mServerUri, mNetworkAccessIdentifier, mMethodList);
}
@@ -264,8 +242,7 @@
+ " mServiceDescription=" + mServiceDescription
+ " mServerUri=" + mServerUri
+ " mNetworkAccessIdentifier=" + mNetworkAccessIdentifier
- + " mMethodList=" + mMethodList
- + " mIcon=" + mIcon;
+ + " mMethodList=" + mMethodList;
}
public static final @android.annotation.NonNull Creator<OsuProvider> CREATOR =
@@ -278,12 +255,11 @@
String nai = in.readString();
List<Integer> methodList = new ArrayList<>();
in.readList(methodList, null);
- Icon icon = in.readParcelable(null);
Bundle bundle = in.readBundle();
Map<String, String> friendlyNamesMap = (HashMap) bundle.getSerializable(
"friendlyNameMap");
return new OsuProvider(osuSsid, friendlyNamesMap, serviceDescription,
- serverUri, nai, methodList, icon);
+ serverUri, nai, methodList);
}
@Override
diff --git a/wifi/java/android/net/wifi/p2p/WifiP2pConfig.java b/wifi/java/android/net/wifi/p2p/WifiP2pConfig.java
index 767055f..495b1bb 100644
--- a/wifi/java/android/net/wifi/p2p/WifiP2pConfig.java
+++ b/wifi/java/android/net/wifi/p2p/WifiP2pConfig.java
@@ -28,6 +28,7 @@
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.nio.charset.StandardCharsets;
import java.util.regex.PatternSyntaxException;
/**
@@ -244,6 +245,10 @@
private static final MacAddress MAC_ANY_ADDRESS =
MacAddress.fromString("02:00:00:00:00:00");
+ /**
+ * Maximum number of bytes allowed for a SSID.
+ */
+ private static final int MAX_SSID_BYTES = 32;
private MacAddress mDeviceAddress = MAC_ANY_ADDRESS;
private String mNetworkName = "";
@@ -295,6 +300,10 @@
throw new IllegalArgumentException(
"network name must be non-empty.");
}
+ if (networkName.getBytes(StandardCharsets.UTF_8).length > MAX_SSID_BYTES) {
+ throw new IllegalArgumentException(
+ "network name exceeds " + MAX_SSID_BYTES + " bytes.");
+ }
try {
if (!networkName.matches("^DIRECT-[a-zA-Z0-9]{2}.*")) {
throw new IllegalArgumentException(
diff --git a/wifi/java/android/net/wifi/p2p/WifiP2pDevice.java b/wifi/java/android/net/wifi/p2p/WifiP2pDevice.java
index 13b2520..98ec208 100644
--- a/wifi/java/android/net/wifi/p2p/WifiP2pDevice.java
+++ b/wifi/java/android/net/wifi/p2p/WifiP2pDevice.java
@@ -286,14 +286,12 @@
}
/**
- * Update device details. This will throw an exception if the device address does not match.
+ * Update this device's details using another {@link WifiP2pDevice} instance.
+ * This will throw an exception if the device address does not match.
*
- * @param device to be updated
+ * @param device another instance of {@link WifiP2pDevice} used to update this instance.
* @throws IllegalArgumentException if the device is null or the device address does not match
- *
- * @hide
*/
- @UnsupportedAppUsage
public void update(@NonNull WifiP2pDevice device) {
updateSupplicantDetails(device);
status = device.status;
diff --git a/wifi/java/android/net/wifi/rtt/package.html b/wifi/java/android/net/wifi/rtt/package.html
index e639282..4a32f52 100644
--- a/wifi/java/android/net/wifi/rtt/package.html
+++ b/wifi/java/android/net/wifi/rtt/package.html
@@ -37,5 +37,9 @@
<pre>
getPackageManager().hasSystemFeature(PackageManager.FEATURE_WIFI_RTT)
</pre>
+
+<p>For an example of this functionality, see
+<a href="{@docRoot}guide/topics/connectivity/wifi-rtt" class="external">Wi-Fi location: ranging
+with RTT</a>.</p>
</BODY>
</HTML>
diff --git a/wifi/java/com/android/server/wifi/BaseWifiService.java b/wifi/java/com/android/server/wifi/BaseWifiService.java
index ee03c11..bc86839 100644
--- a/wifi/java/com/android/server/wifi/BaseWifiService.java
+++ b/wifi/java/com/android/server/wifi/BaseWifiService.java
@@ -26,6 +26,7 @@
import android.net.wifi.ILocalOnlyHotspotCallback;
import android.net.wifi.INetworkRequestMatchCallback;
import android.net.wifi.IOnWifiUsabilityStatsListener;
+import android.net.wifi.IScanResultsCallback;
import android.net.wifi.IScanResultsListener;
import android.net.wifi.ISoftApCallback;
import android.net.wifi.ISuggestionConnectionStatusListener;
@@ -284,6 +285,11 @@
}
@Override
+ public boolean startTetheredHotspot(SoftApConfiguration softApConfig) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
public boolean stopSoftAp() {
throw new UnsupportedOperationException();
}
@@ -320,10 +326,21 @@
}
@Override
+ public SoftApConfiguration getSoftApConfiguration() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
public boolean setWifiApConfiguration(WifiConfiguration wifiConfig, String packageName) {
throw new UnsupportedOperationException();
}
+ @Override
+ public boolean setSoftApConfiguration(SoftApConfiguration softApConfig, String packageName) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
public void notifyUserOfApBandConversion(String packageName) {
throw new UnsupportedOperationException();
}
@@ -384,6 +401,16 @@
}
@Override
+ public byte[] retrieveSoftApBackupData() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void restoreSoftApBackupData(byte[] data) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
public void restoreSupplicantBackupData(byte[] supplicantData, byte[] ipConfigData) {
throw new UnsupportedOperationException();
}
@@ -512,18 +539,30 @@
throw new UnsupportedOperationException();
}
- @Override
+ /** @deprecated replaced by {@link #registerScanResultsCallback(IScanResultsCallback)} */
+ @Deprecated
public void registerScanResultsListener(
IBinder binder, IScanResultsListener listener, int listenerIdentifier) {
throw new UnsupportedOperationException();
}
- @Override
+ /** @deprecated replaced by {@link #unregisterScanResultsCallback(IScanResultsCallback)} */
+ @Deprecated
public void unregisterScanResultsListener(int listenerIdentifier) {
throw new UnsupportedOperationException();
}
@Override
+ public void registerScanResultsCallback(IScanResultsCallback callback) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void unregisterScanResultsCallback(IScanResultsCallback callback) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
public void registerSuggestionConnectionStatusListener(IBinder binder,
ISuggestionConnectionStatusListener listener,
int listenerIdentifier, String packageName, String featureId) {
diff --git a/wifi/tests/src/android/net/wifi/SoftApConfigurationTest.java b/wifi/tests/src/android/net/wifi/SoftApConfigurationTest.java
index 949b479..b8d3e41 100644
--- a/wifi/tests/src/android/net/wifi/SoftApConfigurationTest.java
+++ b/wifi/tests/src/android/net/wifi/SoftApConfigurationTest.java
@@ -46,6 +46,10 @@
assertThat(original.getSsid()).isEqualTo("ssid");
assertThat(original.getBssid()).isEqualTo(MacAddress.fromString("11:22:33:44:55:66"));
assertThat(original.getWpa2Passphrase()).isNull();
+ assertThat(original.getSecurityType()).isEqualTo(SoftApConfiguration.SECURITY_TYPE_OPEN);
+ assertThat(original.getBand()).isEqualTo(SoftApConfiguration.BAND_2GHZ);
+ assertThat(original.getChannel()).isEqualTo(0);
+ assertThat(original.isHiddenSsid()).isEqualTo(false);
SoftApConfiguration unparceled = parcelUnparcel(original);
assertThat(unparceled).isNotSameAs(original);
@@ -64,6 +68,39 @@
.setWpa2Passphrase("secretsecret")
.build();
assertThat(original.getWpa2Passphrase()).isEqualTo("secretsecret");
+ assertThat(original.getSecurityType()).isEqualTo(
+ SoftApConfiguration.SECURITY_TYPE_WPA2_PSK);
+ assertThat(original.getBand()).isEqualTo(SoftApConfiguration.BAND_2GHZ);
+ assertThat(original.getChannel()).isEqualTo(0);
+ assertThat(original.isHiddenSsid()).isEqualTo(false);
+
+
+ SoftApConfiguration unparceled = parcelUnparcel(original);
+ assertThat(unparceled).isNotSameAs(original);
+ assertThat(unparceled).isEqualTo(original);
+ assertThat(unparceled.hashCode()).isEqualTo(original.hashCode());
+
+ SoftApConfiguration copy = new SoftApConfiguration.Builder(original).build();
+ assertThat(copy).isNotSameAs(original);
+ assertThat(copy).isEqualTo(original);
+ assertThat(copy.hashCode()).isEqualTo(original.hashCode());
+ }
+
+ @Test
+ public void testWpa2WithBandAndChannelAndHiddenNetwork() {
+ SoftApConfiguration original = new SoftApConfiguration.Builder()
+ .setWpa2Passphrase("secretsecret")
+ .setBand(SoftApConfiguration.BAND_ANY)
+ .setChannel(149)
+ .setHiddenSsid(true)
+ .build();
+ assertThat(original.getWpa2Passphrase()).isEqualTo("secretsecret");
+ assertThat(original.getSecurityType()).isEqualTo(
+ SoftApConfiguration.SECURITY_TYPE_WPA2_PSK);
+ assertThat(original.getBand()).isEqualTo(SoftApConfiguration.BAND_ANY);
+ assertThat(original.getChannel()).isEqualTo(149);
+ assertThat(original.isHiddenSsid()).isEqualTo(true);
+
SoftApConfiguration unparceled = parcelUnparcel(original);
assertThat(unparceled).isNotSameAs(original);
diff --git a/wifi/tests/src/android/net/wifi/WifiConfigurationTest.java b/wifi/tests/src/android/net/wifi/WifiConfigurationTest.java
index 6d7e621..7e38e14 100644
--- a/wifi/tests/src/android/net/wifi/WifiConfigurationTest.java
+++ b/wifi/tests/src/android/net/wifi/WifiConfigurationTest.java
@@ -19,6 +19,7 @@
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import android.net.MacAddress;
@@ -90,37 +91,6 @@
}
@Test
- public void testNetworkSelectionStatusCopy() {
- NetworkSelectionStatus networkSelectionStatus = new NetworkSelectionStatus();
- networkSelectionStatus.setNotRecommended(true);
-
- NetworkSelectionStatus copy = new NetworkSelectionStatus();
- copy.copy(networkSelectionStatus);
-
- assertEquals(networkSelectionStatus.isNotRecommended(), copy.isNotRecommended());
- }
-
- @Test
- public void testNetworkSelectionStatusParcel() {
- NetworkSelectionStatus networkSelectionStatus = new NetworkSelectionStatus();
- networkSelectionStatus.setNotRecommended(true);
-
- Parcel parcelW = Parcel.obtain();
- networkSelectionStatus.writeToParcel(parcelW);
- byte[] bytes = parcelW.marshall();
- parcelW.recycle();
-
- Parcel parcelR = Parcel.obtain();
- parcelR.unmarshall(bytes, 0, bytes.length);
- parcelR.setDataPosition(0);
-
- NetworkSelectionStatus copy = new NetworkSelectionStatus();
- copy.readFromParcel(parcelR);
-
- assertEquals(networkSelectionStatus.isNotRecommended(), copy.isNotRecommended());
- }
-
- @Test
public void testIsOpenNetwork_IsOpen_NullWepKeys() {
WifiConfiguration config = new WifiConfiguration();
config.allowedKeyManagement.clear();
@@ -348,4 +318,18 @@
config.allowedKeyManagement.set(KeyMgmt.NONE);
assertEquals(mSsid + KeyMgmt.strings[KeyMgmt.NONE], config.getSsidAndSecurityTypeString());
}
+
+ /**
+ * Ensure that the {@link NetworkSelectionStatus.DisableReasonInfo}s are populated in
+ * {@link NetworkSelectionStatus#DISABLE_REASON_INFOS} for reason codes from 0 to
+ * {@link NetworkSelectionStatus#NETWORK_SELECTION_DISABLED_MAX} - 1.
+ */
+ @Test
+ public void testNetworkSelectionDisableReasonInfosPopulated() {
+ assertEquals(NetworkSelectionStatus.NETWORK_SELECTION_DISABLED_MAX,
+ NetworkSelectionStatus.DISABLE_REASON_INFOS.size());
+ for (int i = 0; i < NetworkSelectionStatus.NETWORK_SELECTION_DISABLED_MAX; i++) {
+ assertNotNull(NetworkSelectionStatus.DISABLE_REASON_INFOS.get(i));
+ }
+ }
}
diff --git a/wifi/tests/src/android/net/wifi/WifiManagerTest.java b/wifi/tests/src/android/net/wifi/WifiManagerTest.java
index 507d502..b3a73bc 100644
--- a/wifi/tests/src/android/net/wifi/WifiManagerTest.java
+++ b/wifi/tests/src/android/net/wifi/WifiManagerTest.java
@@ -50,6 +50,7 @@
import static org.mockito.Mockito.verifyZeroInteractions;
import static org.mockito.Mockito.when;
+import android.app.ActivityManager;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.net.DhcpInfo;
@@ -60,7 +61,7 @@
import android.net.wifi.WifiManager.NetworkRequestMatchCallback;
import android.net.wifi.WifiManager.NetworkRequestUserSelectionCallback;
import android.net.wifi.WifiManager.OnWifiUsabilityStatsListener;
-import android.net.wifi.WifiManager.ScanResultsListener;
+import android.net.wifi.WifiManager.ScanResultsCallback;
import android.net.wifi.WifiManager.SoftApCallback;
import android.net.wifi.WifiManager.SuggestionConnectionStatusListener;
import android.net.wifi.WifiManager.TrafficStateCallback;
@@ -112,15 +113,17 @@
@Mock TrafficStateCallback mTrafficStateCallback;
@Mock NetworkRequestMatchCallback mNetworkRequestMatchCallback;
@Mock OnWifiUsabilityStatsListener mOnWifiUsabilityStatsListener;
- @Mock ScanResultsListener mScanResultListener;
@Mock SuggestionConnectionStatusListener mListener;
- @Mock Executor mCallbackExecutor;
+ @Mock Runnable mRunnable;
@Mock Executor mExecutor;
+ @Mock Executor mAnotherExecutor;
+ @Mock ActivityManager mActivityManager;
private Handler mHandler;
private TestLooper mLooper;
private WifiManager mWifiManager;
private WifiNetworkSuggestion mWifiNetworkSuggestion;
+ private ScanResultsCallback mScanResultsCallback;
@Before
public void setUp() throws Exception {
@@ -133,6 +136,12 @@
mWifiManager = new WifiManager(mContext, mWifiService, mLooper.getLooper());
verify(mWifiService).getVerboseLoggingLevel();
mWifiNetworkSuggestion = new WifiNetworkSuggestion();
+ mScanResultsCallback = new ScanResultsCallback() {
+ @Override
+ public void onScanResultsAvailable() {
+ mRunnable.run();
+ }
+ };
}
/**
@@ -174,6 +183,33 @@
}
/**
+ * Check the call to startSoftAp calls WifiService to startSoftAp with the provided
+ * WifiConfiguration. Verify that the return value is propagated to the caller.
+ */
+ @Test
+ public void testStartTetheredHotspotCallsServiceWithSoftApConfig() throws Exception {
+ SoftApConfiguration mSoftApConfig = new SoftApConfiguration.Builder().build();
+ when(mWifiService.startTetheredHotspot(eq(mSoftApConfig))).thenReturn(true);
+ assertTrue(mWifiManager.startTetheredHotspot(mSoftApConfig));
+
+ when(mWifiService.startTetheredHotspot(eq(mSoftApConfig))).thenReturn(false);
+ assertFalse(mWifiManager.startTetheredHotspot(mSoftApConfig));
+ }
+
+ /**
+ * Check the call to startSoftAp calls WifiService to startSoftAp with a null config. Verify
+ * that the return value is propagated to the caller.
+ */
+ @Test
+ public void testStartTetheredHotspotCallsServiceWithNullConfig() throws Exception {
+ when(mWifiService.startTetheredHotspot(eq(null))).thenReturn(true);
+ assertTrue(mWifiManager.startTetheredHotspot(null));
+
+ when(mWifiService.startTetheredHotspot(eq(null))).thenReturn(false);
+ assertFalse(mWifiManager.startTetheredHotspot(null));
+ }
+
+ /**
* Test creation of a LocalOnlyHotspotReservation and verify that close properly calls
* WifiService.stopLocalOnlyHotspot.
*/
@@ -1141,6 +1177,43 @@
}
/**
+ * Verify that a successful call properly returns true.
+ */
+ @Test
+ public void testSetSoftApConfigurationSuccessReturnsTrue() throws Exception {
+ SoftApConfiguration apConfig = new SoftApConfiguration.Builder().build();
+
+ when(mWifiService.setSoftApConfiguration(eq(apConfig), eq(TEST_PACKAGE_NAME)))
+ .thenReturn(true);
+ assertTrue(mWifiManager.setSoftApConfiguration(apConfig));
+ }
+
+ /**
+ * Verify that a failed call properly returns false.
+ */
+ @Test
+ public void testSetSoftApConfigurationFailureReturnsFalse() throws Exception {
+ SoftApConfiguration apConfig = new SoftApConfiguration.Builder().build();
+
+ when(mWifiService.setSoftApConfiguration(eq(apConfig), eq(TEST_PACKAGE_NAME)))
+ .thenReturn(false);
+ assertFalse(mWifiManager.setSoftApConfiguration(apConfig));
+ }
+
+ /**
+ * Verify Exceptions are rethrown when underlying calls to WifiService throw exceptions.
+ */
+ @Test
+ public void testSetSoftApConfigurationRethrowsException() throws Exception {
+ doThrow(new SecurityException()).when(mWifiService).setSoftApConfiguration(any(), any());
+
+ try {
+ mWifiManager.setSoftApConfiguration(new SoftApConfiguration.Builder().build());
+ fail("setWifiApConfiguration should rethrow Exceptions from WifiService");
+ } catch (SecurityException e) { }
+ }
+
+ /**
* Check the call to startScan calls WifiService.
*/
@Test
@@ -1388,8 +1461,15 @@
*/
@Test
public void getMaxNumberOfNetworkSuggestionsPerApp() {
- assertEquals(WifiManager.NETWORK_SUGGESTIONS_MAX_PER_APP,
- mWifiManager.getMaxNumberOfNetworkSuggestionsPerApp());
+ when(mContext.getSystemServiceName(ActivityManager.class))
+ .thenReturn(Context.ACTIVITY_SERVICE);
+ when(mContext.getSystemService(Context.ACTIVITY_SERVICE))
+ .thenReturn(mActivityManager);
+ when(mActivityManager.isLowRamDevice()).thenReturn(true);
+ assertEquals(256, mWifiManager.getMaxNumberOfNetworkSuggestionsPerApp());
+
+ when(mActivityManager.isLowRamDevice()).thenReturn(false);
+ assertEquals(1024, mWifiManager.getMaxNumberOfNetworkSuggestionsPerApp());
}
/**
@@ -1430,15 +1510,6 @@
}
/**
- * Defined for testing purpose.
- */
- class SynchronousExecutor implements Executor {
- public void execute(Runnable r) {
- r.run();
- }
- }
-
- /**
* Test behavior of isEnhancedOpenSupported
*/
@Test
@@ -1622,7 +1693,7 @@
@Test
public void testGetControllerActivityEnergyInfo() throws Exception {
WifiActivityEnergyInfo activityEnergyInfo =
- new WifiActivityEnergyInfo(5, 3, 3, new long[]{5L, 5L, 5L}, 5, 5, 5, 5);
+ new WifiActivityEnergyInfo(5, 3, 3, 5, 5, 5, 5);
when(mWifiService.reportActivityInfo()).thenReturn(activityEnergyInfo);
assertEquals(activityEnergyInfo, mWifiManager.getControllerActivityEnergyInfo());
@@ -1778,65 +1849,81 @@
}
/**
- * Verify an IllegalArgumentException is thrown if listener is not provided.
+ * Verify an IllegalArgumentException is thrown if callback is not provided.
*/
@Test(expected = IllegalArgumentException.class)
- public void testAddScanResultsListenerWithNullListener() throws Exception {
- mWifiManager.addScanResultsListener(mCallbackExecutor, null);
+ public void testRegisterScanResultsCallbackWithNullCallback() throws Exception {
+ mWifiManager.registerScanResultsCallback(mExecutor, null);
}
/**
* Verify an IllegalArgumentException is thrown if executor is not provided.
*/
@Test(expected = IllegalArgumentException.class)
- public void testAddScanResultsListenerWithNullExecutor() throws Exception {
- mWifiManager.addScanResultsListener(null, mScanResultListener);
+ public void testRegisterCallbackWithNullExecutor() throws Exception {
+ mWifiManager.registerScanResultsCallback(null, mScanResultsCallback);
}
/**
- * Verify client provided listener is being called to the right listener.
+ * Verify client provided callback is being called to the right callback.
*/
@Test
- public void testAddScanResultsListenerAndReceiveEvent() throws Exception {
- ArgumentCaptor<IScanResultsListener.Stub> callbackCaptor =
- ArgumentCaptor.forClass(IScanResultsListener.Stub.class);
- Executor executor = new SynchronousExecutor();
- mWifiManager.addScanResultsListener(executor, mScanResultListener);
- verify(mWifiService).registerScanResultsListener(any(IBinder.class),
- callbackCaptor.capture(), anyInt());
+ public void testAddScanResultsCallbackAndReceiveEvent() throws Exception {
+ ArgumentCaptor<IScanResultsCallback.Stub> callbackCaptor =
+ ArgumentCaptor.forClass(IScanResultsCallback.Stub.class);
+ mWifiManager.registerScanResultsCallback(new SynchronousExecutor(), mScanResultsCallback);
+ verify(mWifiService).registerScanResultsCallback(callbackCaptor.capture());
callbackCaptor.getValue().onScanResultsAvailable();
- verify(mScanResultListener).onScanResultsAvailable();
+ verify(mRunnable).run();
}
/**
- * Verify client provided listener is being called on the right executor.
+ * Verify client provided callback is being called to the right executor.
*/
@Test
- public void testAddScanResultsListenerWithTheTargetExecutor() throws Exception {
- ArgumentCaptor<IScanResultsListener.Stub> callbackCaptor =
- ArgumentCaptor.forClass(IScanResultsListener.Stub.class);
- mWifiManager.addScanResultsListener(mExecutor, mScanResultListener);
- verify(mWifiService).registerScanResultsListener(any(IBinder.class),
- callbackCaptor.capture(), anyInt());
+ public void testRegisterScanResultsCallbackWithTheTargetExecutor() throws Exception {
+ ArgumentCaptor<IScanResultsCallback.Stub> callbackCaptor =
+ ArgumentCaptor.forClass(IScanResultsCallback.Stub.class);
+ mWifiManager.registerScanResultsCallback(mExecutor, mScanResultsCallback);
+ verify(mWifiService).registerScanResultsCallback(callbackCaptor.capture());
+ mWifiManager.registerScanResultsCallback(mAnotherExecutor, mScanResultsCallback);
callbackCaptor.getValue().onScanResultsAvailable();
- verify(mExecutor).execute(any(Runnable.class));
+ verify(mExecutor, never()).execute(any(Runnable.class));
+ verify(mAnotherExecutor).execute(any(Runnable.class));
}
/**
- * Verify client removeScanResultsListener.
+ * Verify client register unregister then register again, to ensure callback still works.
*/
@Test
- public void testRemoveScanResultsListener() throws Exception {
- mWifiManager.removeScanResultsListener(mScanResultListener);
- verify(mWifiService).unregisterScanResultsListener(anyInt());
+ public void testRegisterUnregisterThenRegisterAgainWithScanResultCallback() throws Exception {
+ ArgumentCaptor<IScanResultsCallback.Stub> callbackCaptor =
+ ArgumentCaptor.forClass(IScanResultsCallback.Stub.class);
+ mWifiManager.registerScanResultsCallback(new SynchronousExecutor(), mScanResultsCallback);
+ verify(mWifiService).registerScanResultsCallback(callbackCaptor.capture());
+ mWifiManager.unregisterScanResultsCallback(mScanResultsCallback);
+ callbackCaptor.getValue().onScanResultsAvailable();
+ verify(mRunnable, never()).run();
+ mWifiManager.registerScanResultsCallback(new SynchronousExecutor(), mScanResultsCallback);
+ callbackCaptor.getValue().onScanResultsAvailable();
+ verify(mRunnable).run();
}
/**
- * Verify client removeScanResultsListener with null listener will cause an exception.
+ * Verify client unregisterScanResultsCallback.
+ */
+ @Test
+ public void testUnregisterScanResultsCallback() throws Exception {
+ mWifiManager.unregisterScanResultsCallback(mScanResultsCallback);
+ verify(mWifiService).unregisterScanResultsCallback(any());
+ }
+
+ /**
+ * Verify client unregisterScanResultsCallback with null callback will cause an exception.
*/
@Test(expected = IllegalArgumentException.class)
- public void testRemoveScanResultsListenerWithNullListener() throws Exception {
- mWifiManager.removeScanResultsListener(null);
+ public void testUnregisterScanResultsCallbackWithNullCallback() throws Exception {
+ mWifiManager.unregisterScanResultsCallback(null);
}
/**
diff --git a/wifi/tests/src/android/net/wifi/WifiNetworkAgentSpecifierTest.java b/wifi/tests/src/android/net/wifi/WifiNetworkAgentSpecifierTest.java
index e6eece8..adc41f0 100644
--- a/wifi/tests/src/android/net/wifi/WifiNetworkAgentSpecifierTest.java
+++ b/wifi/tests/src/android/net/wifi/WifiNetworkAgentSpecifierTest.java
@@ -208,7 +208,7 @@
PatternMatcher ssidPattern =
new PatternMatcher(TEST_SSID_PATTERN, PatternMatcher.PATTERN_PREFIX);
Pair<MacAddress, MacAddress> bssidPattern =
- Pair.create(MacAddress.ALL_ZEROS_ADDRESS, MacAddress.ALL_ZEROS_ADDRESS);
+ Pair.create(WifiManager.ALL_ZEROS_MAC_ADDRESS, WifiManager.ALL_ZEROS_MAC_ADDRESS);
WifiConfiguration wificonfigurationNetworkSpecifier = new WifiConfiguration();
wificonfigurationNetworkSpecifier.allowedKeyManagement
.set(WifiConfiguration.KeyMgmt.WPA_PSK);
@@ -299,7 +299,7 @@
PatternMatcher ssidPattern =
new PatternMatcher(TEST_SSID_PATTERN, PatternMatcher.PATTERN_PREFIX);
Pair<MacAddress, MacAddress> bssidPattern =
- Pair.create(MacAddress.ALL_ZEROS_ADDRESS, MacAddress.ALL_ZEROS_ADDRESS);
+ Pair.create(WifiManager.ALL_ZEROS_MAC_ADDRESS, WifiManager.ALL_ZEROS_MAC_ADDRESS);
WifiConfiguration wificonfigurationNetworkSpecifier = new WifiConfiguration();
wificonfigurationNetworkSpecifier.allowedKeyManagement
.set(WifiConfiguration.KeyMgmt.WPA_PSK);
diff --git a/wifi/tests/src/android/net/wifi/WifiNetworkSpecifierTest.java b/wifi/tests/src/android/net/wifi/WifiNetworkSpecifierTest.java
index edb43d8..1619744 100644
--- a/wifi/tests/src/android/net/wifi/WifiNetworkSpecifierTest.java
+++ b/wifi/tests/src/android/net/wifi/WifiNetworkSpecifierTest.java
@@ -65,8 +65,10 @@
assertEquals(Process.myUid(), wifiNetworkSpecifier.requestorUid);
assertEquals(TEST_SSID, wifiNetworkSpecifier.ssidPatternMatcher.getPath());
assertEquals(PATTERN_PREFIX, wifiNetworkSpecifier.ssidPatternMatcher.getType());
- assertEquals(MacAddress.ALL_ZEROS_ADDRESS, wifiNetworkSpecifier.bssidPatternMatcher.first);
- assertEquals(MacAddress.ALL_ZEROS_ADDRESS, wifiNetworkSpecifier.bssidPatternMatcher.second);
+ assertEquals(WifiManager.ALL_ZEROS_MAC_ADDRESS,
+ wifiNetworkSpecifier.bssidPatternMatcher.first);
+ assertEquals(WifiManager.ALL_ZEROS_MAC_ADDRESS,
+ wifiNetworkSpecifier.bssidPatternMatcher.second);
assertTrue(wifiNetworkSpecifier.wifiConfiguration.allowedKeyManagement
.get(WifiConfiguration.KeyMgmt.NONE));
}
@@ -210,7 +212,8 @@
@Test(expected = IllegalStateException.class)
public void testWifiNetworkSpecifierBuilderWithMatchAllBssidPattern() {
new WifiNetworkSpecifier.Builder()
- .setBssidPattern(MacAddress.ALL_ZEROS_ADDRESS, MacAddress.ALL_ZEROS_ADDRESS)
+ .setBssidPattern(WifiManager.ALL_ZEROS_MAC_ADDRESS,
+ WifiManager.ALL_ZEROS_MAC_ADDRESS)
.build();
}
@@ -265,7 +268,7 @@
@Test(expected = IllegalStateException.class)
public void testWifiNetworkSpecifierBuilderWithMatchNoneBssidPattern3() {
new WifiNetworkSpecifier.Builder()
- .setBssid(MacAddress.ALL_ZEROS_ADDRESS)
+ .setBssid(WifiManager.ALL_ZEROS_MAC_ADDRESS)
.build();
}
@@ -513,7 +516,8 @@
WifiNetworkSpecifier specifier2 =
new WifiNetworkSpecifier(new PatternMatcher(TEST_SSID, PATTERN_LITERAL),
- Pair.create(MacAddress.ALL_ZEROS_ADDRESS, MacAddress.ALL_ZEROS_ADDRESS),
+ Pair.create(WifiManager.ALL_ZEROS_MAC_ADDRESS,
+ WifiManager.ALL_ZEROS_MAC_ADDRESS),
wifiConfiguration,
TEST_UID, TEST_PACKAGE_NAME);
diff --git a/wifi/tests/src/android/net/wifi/WifiNetworkSuggestionTest.java b/wifi/tests/src/android/net/wifi/WifiNetworkSuggestionTest.java
index 6990089..8a5a0fd 100644
--- a/wifi/tests/src/android/net/wifi/WifiNetworkSuggestionTest.java
+++ b/wifi/tests/src/android/net/wifi/WifiNetworkSuggestionTest.java
@@ -64,12 +64,13 @@
assertEquals(WifiConfiguration.METERED_OVERRIDE_NONE,
suggestion.wifiConfiguration.meteredOverride);
assertEquals(-1, suggestion.wifiConfiguration.priority);
+ assertEquals(false, suggestion.isUserAllowedToManuallyConnect);
}
/**
* Validate correctness of WifiNetworkSuggestion object created by
* {@link WifiNetworkSuggestion.Builder#build()} for WPA_EAP network which requires
- * app interaction and has a priority of zero set.
+ * app interaction, not share credential and has a priority of zero set.
*/
@Test
public void
@@ -78,6 +79,7 @@
.setSsid(TEST_SSID)
.setWpa2Passphrase(TEST_PRESHARED_KEY)
.setIsAppInteractionRequired(true)
+ .setIsUserAllowedToManuallyConnect(false)
.setPriority(0)
.build();
@@ -91,6 +93,7 @@
assertEquals(WifiConfiguration.METERED_OVERRIDE_NONE,
suggestion.wifiConfiguration.meteredOverride);
assertEquals(0, suggestion.wifiConfiguration.priority);
+ assertEquals(false, suggestion.isUserAllowedToManuallyConnect);
}
/**
@@ -118,6 +121,7 @@
assertEquals(WifiConfiguration.METERED_OVERRIDE_METERED,
suggestion.wifiConfiguration.meteredOverride);
assertEquals(-1, suggestion.wifiConfiguration.priority);
+ assertTrue(suggestion.isUserAllowedToManuallyConnect);
}
/**
@@ -138,6 +142,7 @@
.get(WifiConfiguration.KeyMgmt.OWE));
assertNull(suggestion.wifiConfiguration.preSharedKey);
assertTrue(suggestion.wifiConfiguration.requirePMF);
+ assertFalse(suggestion.isUserAllowedToManuallyConnect);
}
/**
@@ -149,6 +154,7 @@
WifiNetworkSuggestion suggestion = new WifiNetworkSuggestion.Builder()
.setSsid(TEST_SSID)
.setWpa3Passphrase(TEST_PRESHARED_KEY)
+ .setIsUserAllowedToManuallyConnect(true)
.build();
assertEquals("\"" + TEST_SSID + "\"", suggestion.wifiConfiguration.SSID);
@@ -157,6 +163,7 @@
assertEquals("\"" + TEST_PRESHARED_KEY + "\"",
suggestion.wifiConfiguration.preSharedKey);
assertTrue(suggestion.wifiConfiguration.requirePMF);
+ assertTrue(suggestion.isUserAllowedToManuallyConnect);
}
@@ -186,6 +193,7 @@
assertNull(suggestion.wifiConfiguration.preSharedKey);
// allowedSuiteBCiphers are set according to the loaded certificate and cannot be tested
// here.
+ assertTrue(suggestion.isUserAllowedToManuallyConnect);
}
/**
@@ -205,6 +213,7 @@
assertTrue(suggestion.isAppInteractionRequired);
assertEquals(suggestion.wifiConfiguration.meteredOverride,
WifiConfiguration.METERED_OVERRIDE_METERED);
+ assertTrue(suggestion.isUserAllowedToManuallyConnect);
}
/**
@@ -285,7 +294,7 @@
public void testWifiNetworkSuggestionBuilderWithInvalidAllZeroBssid() {
new WifiNetworkSuggestion.Builder()
.setSsid(TEST_SSID)
- .setBssid(MacAddress.ALL_ZEROS_ADDRESS)
+ .setBssid(WifiManager.ALL_ZEROS_MAC_ADDRESS)
.build();
}
@@ -439,7 +448,7 @@
configuration.BSSID = TEST_BSSID;
configuration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
WifiNetworkSuggestion suggestion = new WifiNetworkSuggestion(
- configuration, null, false, true, TEST_UID, TEST_PACKAGE_NAME);
+ configuration, null, false, true, true, TEST_UID, TEST_PACKAGE_NAME);
Parcel parcelW = Parcel.obtain();
suggestion.writeToParcel(parcelW, 0);
@@ -506,7 +515,7 @@
configuration.BSSID = TEST_BSSID;
configuration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
WifiNetworkSuggestion suggestion =
- new WifiNetworkSuggestion(configuration, null, true, false, TEST_UID,
+ new WifiNetworkSuggestion(configuration, null, true, false, true, TEST_UID,
TEST_PACKAGE_NAME);
WifiConfiguration configuration1 = new WifiConfiguration();
@@ -514,7 +523,7 @@
configuration1.BSSID = TEST_BSSID;
configuration1.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
WifiNetworkSuggestion suggestion1 =
- new WifiNetworkSuggestion(configuration1, null, false, true, TEST_UID,
+ new WifiNetworkSuggestion(configuration1, null, false, true, true, TEST_UID,
TEST_PACKAGE_NAME);
assertEquals(suggestion, suggestion1);
@@ -531,14 +540,14 @@
configuration.SSID = TEST_SSID;
configuration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
WifiNetworkSuggestion suggestion =
- new WifiNetworkSuggestion(configuration, null, false, false, TEST_UID,
+ new WifiNetworkSuggestion(configuration, null, false, false, true, TEST_UID,
TEST_PACKAGE_NAME);
WifiConfiguration configuration1 = new WifiConfiguration();
configuration1.SSID = TEST_SSID_1;
configuration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
WifiNetworkSuggestion suggestion1 =
- new WifiNetworkSuggestion(configuration1, null, false, false, TEST_UID,
+ new WifiNetworkSuggestion(configuration1, null, false, false, true, TEST_UID,
TEST_PACKAGE_NAME);
assertNotEquals(suggestion, suggestion1);
@@ -555,14 +564,14 @@
configuration.BSSID = TEST_BSSID;
configuration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
WifiNetworkSuggestion suggestion =
- new WifiNetworkSuggestion(configuration, null, false, false, TEST_UID,
+ new WifiNetworkSuggestion(configuration, null, false, false, true, TEST_UID,
TEST_PACKAGE_NAME);
WifiConfiguration configuration1 = new WifiConfiguration();
configuration1.SSID = TEST_SSID;
configuration1.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
WifiNetworkSuggestion suggestion1 =
- new WifiNetworkSuggestion(configuration1, null, false, false, TEST_UID,
+ new WifiNetworkSuggestion(configuration1, null, false, false, true, TEST_UID,
TEST_PACKAGE_NAME);
assertNotEquals(suggestion, suggestion1);
@@ -578,14 +587,14 @@
configuration.SSID = TEST_SSID;
configuration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
WifiNetworkSuggestion suggestion =
- new WifiNetworkSuggestion(configuration, null, false, false, TEST_UID,
+ new WifiNetworkSuggestion(configuration, null, false, false, true, TEST_UID,
TEST_PACKAGE_NAME);
WifiConfiguration configuration1 = new WifiConfiguration();
configuration1.SSID = TEST_SSID;
configuration1.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
WifiNetworkSuggestion suggestion1 =
- new WifiNetworkSuggestion(configuration1, null, false, false, TEST_UID,
+ new WifiNetworkSuggestion(configuration1, null, false, false, true, TEST_UID,
TEST_PACKAGE_NAME);
assertNotEquals(suggestion, suggestion1);
@@ -601,11 +610,11 @@
configuration.SSID = TEST_SSID;
configuration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
WifiNetworkSuggestion suggestion =
- new WifiNetworkSuggestion(configuration, null, false, false, TEST_UID,
+ new WifiNetworkSuggestion(configuration, null, false, false, true, TEST_UID,
TEST_PACKAGE_NAME);
WifiNetworkSuggestion suggestion1 =
- new WifiNetworkSuggestion(configuration, null, false, false, TEST_UID_OTHER,
+ new WifiNetworkSuggestion(configuration, null, false, false, true, TEST_UID_OTHER,
TEST_PACKAGE_NAME);
assertNotEquals(suggestion, suggestion1);
@@ -621,10 +630,10 @@
configuration.SSID = TEST_SSID;
configuration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
WifiNetworkSuggestion suggestion = new WifiNetworkSuggestion(
- configuration, null, false, false, TEST_UID, TEST_PACKAGE_NAME);
+ configuration, null, false, false, true, TEST_UID, TEST_PACKAGE_NAME);
WifiNetworkSuggestion suggestion1 = new WifiNetworkSuggestion(
- configuration, null, false, false, TEST_UID, TEST_PACKAGE_NAME_OTHER);
+ configuration, null, false, false, true, TEST_UID, TEST_PACKAGE_NAME_OTHER);
assertNotEquals(suggestion, suggestion1);
}
@@ -664,4 +673,17 @@
.build();
assertNotEquals(suggestion, suggestion1);
}
+
+ /**
+ * Ensure {@link WifiNetworkSuggestion.Builder#build()} throws an exception
+ * when {@link WifiNetworkSuggestion.Builder#setIsUserAllowedToManuallyConnect(boolean)} to
+ * true on a open network suggestion.
+ */
+ @Test(expected = IllegalStateException.class)
+ public void testSetIsUserAllowedToManuallyConnectToWithOpenNetwork() {
+ WifiNetworkSuggestion suggestion = new WifiNetworkSuggestion.Builder()
+ .setSsid(TEST_SSID)
+ .setIsUserAllowedToManuallyConnect(true)
+ .build();
+ }
}
diff --git a/wifi/tests/src/android/net/wifi/WifiScannerTest.java b/wifi/tests/src/android/net/wifi/WifiScannerTest.java
index f4fa38b..b1436c90 100644
--- a/wifi/tests/src/android/net/wifi/WifiScannerTest.java
+++ b/wifi/tests/src/android/net/wifi/WifiScannerTest.java
@@ -22,7 +22,9 @@
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.validateMockitoUsage;
@@ -33,6 +35,7 @@
import android.net.wifi.WifiScanner.PnoSettings;
import android.net.wifi.WifiScanner.PnoSettings.PnoNetwork;
import android.net.wifi.WifiScanner.ScanData;
+import android.net.wifi.WifiScanner.ScanListener;
import android.net.wifi.WifiScanner.ScanSettings;
import android.os.Bundle;
import android.os.Handler;
@@ -51,8 +54,10 @@
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
+import org.mockito.Spy;
import java.util.Arrays;
+import java.util.concurrent.Executor;
/**
* Unit tests for {@link android.net.wifi.WifiScanner}.
@@ -63,6 +68,13 @@
private Context mContext;
@Mock
private IWifiScanner mService;
+ @Spy
+ private Executor mExecutor = new SynchronousExecutor();
+ @Mock
+ private ScanListener mScanListener;
+ @Mock
+ private WifiScanner.ParcelableScanData mParcelableScanData;
+ private ScanData[] mScanData = {};
private static final boolean TEST_PNOSETTINGS_IS_CONNECTED = false;
private static final int TEST_PNOSETTINGS_MIN_5GHZ_RSSI = -60;
@@ -76,6 +88,7 @@
private static final String TEST_SSID_2 = "TEST2";
private static final int[] TEST_FREQUENCIES_1 = {};
private static final int[] TEST_FREQUENCIES_2 = {2500, 5124};
+ private static final String DESCRIPTION_NOT_AUTHORIZED = "Not authorized";
private WifiScanner mWifiScanner;
private TestLooper mLooper;
@@ -95,6 +108,7 @@
when(mService.getMessenger()).thenReturn(mBidirectionalAsyncChannelServer.getMessenger());
mWifiScanner = new WifiScanner(mContext, mService, mLooper.getLooper());
mLooper.dispatchAll();
+ when(mParcelableScanData.getResults()).thenReturn(mScanData);
}
/**
@@ -111,7 +125,7 @@
@Test
public void verifyScanSettingsParcelWithBand() throws Exception {
ScanSettings writeSettings = new ScanSettings();
- writeSettings.type = WifiScanner.TYPE_LOW_POWER;
+ writeSettings.type = WifiScanner.SCAN_TYPE_LOW_POWER;
writeSettings.band = WifiScanner.WIFI_BAND_BOTH_WITH_DFS;
ScanSettings readSettings = parcelWriteRead(writeSettings);
@@ -126,7 +140,7 @@
@Test
public void verifyScanSettingsParcelWithChannels() throws Exception {
ScanSettings writeSettings = new ScanSettings();
- writeSettings.type = WifiScanner.TYPE_HIGH_ACCURACY;
+ writeSettings.type = WifiScanner.SCAN_TYPE_HIGH_ACCURACY;
writeSettings.band = WifiScanner.WIFI_BAND_UNSPECIFIED;
writeSettings.channels = new WifiScanner.ChannelSpec[] {
new WifiScanner.ChannelSpec(5),
@@ -243,13 +257,13 @@
/**
- * Test behavior of {@link WifiScanner#startScan(ScanSettings, WifiScanner.ScanListener)}
+ * Test behavior of {@link WifiScanner#startScan(ScanSettings, ScanListener)}
* @throws Exception
*/
@Test
public void testStartScan() throws Exception {
ScanSettings scanSettings = new ScanSettings();
- WifiScanner.ScanListener scanListener = mock(WifiScanner.ScanListener.class);
+ ScanListener scanListener = mock(ScanListener.class);
mWifiScanner.startScan(scanSettings, scanListener);
mLooper.dispatchAll();
@@ -273,13 +287,13 @@
}
/**
- * Test behavior of {@link WifiScanner#stopScan(WifiScanner.ScanListener)}
+ * Test behavior of {@link WifiScanner#stopScan(ScanListener)}
* @throws Exception
*/
@Test
public void testStopScan() throws Exception {
ScanSettings scanSettings = new ScanSettings();
- WifiScanner.ScanListener scanListener = mock(WifiScanner.ScanListener.class);
+ ScanListener scanListener = mock(ScanListener.class);
mWifiScanner.startScan(scanSettings, scanListener);
mLooper.dispatchAll();
@@ -302,13 +316,13 @@
}
/**
- * Test behavior of {@link WifiScanner#startScan(ScanSettings, WifiScanner.ScanListener)}
+ * Test behavior of {@link WifiScanner#startScan(ScanSettings, ScanListener)}
* @throws Exception
*/
@Test
public void testStartScanListenerOnSuccess() throws Exception {
ScanSettings scanSettings = new ScanSettings();
- WifiScanner.ScanListener scanListener = mock(WifiScanner.ScanListener.class);
+ ScanListener scanListener = mock(ScanListener.class);
mWifiScanner.startScan(scanSettings, scanListener);
mLooper.dispatchAll();
@@ -332,13 +346,13 @@
}
/**
- * Test behavior of {@link WifiScanner#startScan(ScanSettings, WifiScanner.ScanListener)}
+ * Test behavior of {@link WifiScanner#startScan(ScanSettings, ScanListener)}
* @throws Exception
*/
@Test
public void testStartScanListenerOnResults() throws Exception {
ScanSettings scanSettings = new ScanSettings();
- WifiScanner.ScanListener scanListener = mock(WifiScanner.ScanListener.class);
+ ScanListener scanListener = mock(ScanListener.class);
mWifiScanner.startScan(scanSettings, scanListener);
mLooper.dispatchAll();
@@ -425,7 +439,7 @@
}
/**
- * Test behavior of {@link WifiScanner#stopPnoScan(WifiScanner.ScanListener)}
+ * Test behavior of {@link WifiScanner#stopPnoScan(ScanListener)}
* WifiScanner.PnoScanListener)}
* @throws Exception
*/
@@ -480,4 +494,134 @@
assertEquals(scanData.getResults().length, readScanData.getResults().length);
assertEquals(scanData.getResults()[0].SSID, readScanData.getResults()[0].SSID);
}
+
+ /** Tests that upon registration success, {@link ScanListener#onSuccess()} is called. */
+ @Test
+ public void testRegisterScanListenerSuccess() throws Exception {
+ mWifiScanner.registerScanListener(mExecutor, mScanListener);
+ mLooper.dispatchAll();
+
+ ArgumentCaptor<Message> messageArgumentCaptor = ArgumentCaptor.forClass(Message.class);
+ verify(mHandler).handleMessage(messageArgumentCaptor.capture());
+ Message sentMessage = messageArgumentCaptor.getValue();
+ assertNotNull(sentMessage);
+
+ assertEquals(1, mBidirectionalAsyncChannelServer.getClientMessengers().size());
+ Messenger scannerMessenger =
+ mBidirectionalAsyncChannelServer.getClientMessengers().iterator().next();
+
+ Message responseMessage = Message.obtain();
+ responseMessage.what = WifiScanner.CMD_OP_SUCCEEDED;
+ responseMessage.arg2 = sentMessage.arg2;
+ scannerMessenger.send(responseMessage);
+ mLooper.dispatchAll();
+
+ verify(mExecutor).execute(any());
+ verify(mScanListener).onSuccess();
+ }
+
+ /**
+ * Tests that upon registration failed, {@link ScanListener#onFailure(int, String)} is called.
+ */
+ @Test
+ public void testRegisterScanListenerFailed() throws Exception {
+ mWifiScanner.registerScanListener(mExecutor, mScanListener);
+ mLooper.dispatchAll();
+
+ ArgumentCaptor<Message> messageArgumentCaptor = ArgumentCaptor.forClass(Message.class);
+ verify(mHandler).handleMessage(messageArgumentCaptor.capture());
+ Message sentMessage = messageArgumentCaptor.getValue();
+ assertNotNull(sentMessage);
+
+ assertEquals(1, mBidirectionalAsyncChannelServer.getClientMessengers().size());
+ Messenger scannerMessenger =
+ mBidirectionalAsyncChannelServer.getClientMessengers().iterator().next();
+
+ {
+ Message responseMessage = Message.obtain();
+ responseMessage.what = WifiScanner.CMD_OP_FAILED;
+ responseMessage.arg2 = sentMessage.arg2;
+ responseMessage.obj = new WifiScanner.OperationResult(
+ WifiScanner.REASON_NOT_AUTHORIZED, DESCRIPTION_NOT_AUTHORIZED);
+ scannerMessenger.send(responseMessage);
+ mLooper.dispatchAll();
+ }
+
+ verify(mExecutor).execute(any());
+ verify(mScanListener).onFailure(
+ WifiScanner.REASON_NOT_AUTHORIZED, DESCRIPTION_NOT_AUTHORIZED);
+
+ // CMD_OP_FAILED should have caused the removal of the listener, verify this
+ {
+ Message responseMessage = Message.obtain();
+ responseMessage.what = WifiScanner.CMD_SCAN_RESULT;
+ responseMessage.arg2 = sentMessage.arg2;
+ responseMessage.obj = mParcelableScanData;
+ scannerMessenger.send(responseMessage);
+ mLooper.dispatchAll();
+ }
+ // execute() called once before, not called again
+ verify(mExecutor, times(1)).execute(any());
+ // onResults() never triggered
+ verify(mScanListener, never()).onResults(any());
+ }
+
+ /**
+ * Tests that when the ScanListener is triggered, {@link ScanListener#onResults(ScanData[])}
+ * is called.
+ */
+ @Test
+ public void testRegisterScanListenerReceiveScanResults() throws Exception {
+ mWifiScanner.registerScanListener(mExecutor, mScanListener);
+ mLooper.dispatchAll();
+
+ ArgumentCaptor<Message> messageArgumentCaptor = ArgumentCaptor.forClass(Message.class);
+ verify(mHandler).handleMessage(messageArgumentCaptor.capture());
+ Message sentMessage = messageArgumentCaptor.getValue();
+ assertNotNull(sentMessage);
+
+ assertEquals(1, mBidirectionalAsyncChannelServer.getClientMessengers().size());
+ Messenger scannerMessenger =
+ mBidirectionalAsyncChannelServer.getClientMessengers().iterator().next();
+
+ Message responseMessage = Message.obtain();
+ responseMessage.what = WifiScanner.CMD_SCAN_RESULT;
+ responseMessage.arg2 = sentMessage.arg2;
+ responseMessage.obj = mParcelableScanData;
+ scannerMessenger.send(responseMessage);
+ mLooper.dispatchAll();
+
+ verify(mExecutor).execute(any());
+ verify(mScanListener).onResults(mScanData);
+ }
+
+ /**
+ * Tests that after unregistering a scan listener, {@link ScanListener#onResults(ScanData[])}
+ * is not called.
+ */
+ @Test
+ public void testUnregisterScanListener() throws Exception {
+ mWifiScanner.registerScanListener(mExecutor, mScanListener);
+ mWifiScanner.unregisterScanListener(mScanListener);
+ mLooper.dispatchAll();
+
+ assertEquals(1, mBidirectionalAsyncChannelServer.getClientMessengers().size());
+ Messenger scannerMessenger =
+ mBidirectionalAsyncChannelServer.getClientMessengers().iterator().next();
+
+ ArgumentCaptor<Message> messageArgumentCaptor = ArgumentCaptor.forClass(Message.class);
+ verify(mHandler, times(2)).handleMessage(messageArgumentCaptor.capture());
+ Message sentMessage = messageArgumentCaptor.getValue();
+ assertNotNull(sentMessage);
+
+ Message responseMessage = Message.obtain();
+ responseMessage.what = WifiScanner.CMD_SCAN_RESULT;
+ responseMessage.obj = mParcelableScanData;
+ responseMessage.arg2 = sentMessage.arg2;
+ scannerMessenger.send(responseMessage);
+ mLooper.dispatchAll();
+
+ verify(mExecutor, never()).execute(any());
+ verify(mScanListener, never()).onResults(mScanData);
+ }
}
diff --git a/wifi/tests/src/android/net/wifi/hotspot2/OsuProviderTest.java b/wifi/tests/src/android/net/wifi/hotspot2/OsuProviderTest.java
index 43ee249..2ded849 100644
--- a/wifi/tests/src/android/net/wifi/hotspot2/OsuProviderTest.java
+++ b/wifi/tests/src/android/net/wifi/hotspot2/OsuProviderTest.java
@@ -19,7 +19,6 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
-import android.graphics.drawable.Icon;
import android.net.Uri;
import android.net.wifi.WifiSsid;
import android.os.Parcel;
@@ -56,7 +55,6 @@
private static final String TEST_NAI = "test.access.com";
private static final List<Integer> TEST_METHOD_LIST =
Arrays.asList(OsuProvider.METHOD_SOAP_XML_SPP);
- private static final Icon TEST_ICON = Icon.createWithData(new byte[10], 0, 10);
/**
* Verify parcel write and read consistency for the given {@link OsuProvider}.
@@ -82,7 +80,7 @@
*/
@Test
public void verifyParcelWithEmptyProviderInfo() throws Exception {
- verifyParcel(new OsuProvider((WifiSsid) null, null, null, null, null, null, null));
+ verifyParcel(new OsuProvider((WifiSsid) null, null, null, null, null, null));
}
/**
@@ -93,7 +91,7 @@
@Test
public void verifyParcelWithFullProviderInfo() throws Exception {
verifyParcel(new OsuProvider(TEST_SSID, TEST_FRIENDLY_NAMES,
- TEST_SERVICE_DESCRIPTION, TEST_SERVER_URI, TEST_NAI, TEST_METHOD_LIST, TEST_ICON));
+ TEST_SERVICE_DESCRIPTION, TEST_SERVER_URI, TEST_NAI, TEST_METHOD_LIST));
}
/**
@@ -102,7 +100,7 @@
*/
@Test
public void verifyCopyConstructorWithNullSource() throws Exception {
- OsuProvider expected = new OsuProvider((WifiSsid) null, null, null, null, null, null, null);
+ OsuProvider expected = new OsuProvider((WifiSsid) null, null, null, null, null, null);
assertEquals(expected, new OsuProvider(null));
}
@@ -114,7 +112,7 @@
@Test
public void verifyCopyConstructorWithValidSource() throws Exception {
OsuProvider source = new OsuProvider(TEST_SSID, TEST_FRIENDLY_NAMES,
- TEST_SERVICE_DESCRIPTION, TEST_SERVER_URI, TEST_NAI, TEST_METHOD_LIST, TEST_ICON);
+ TEST_SERVICE_DESCRIPTION, TEST_SERVER_URI, TEST_NAI, TEST_METHOD_LIST);
assertEquals(source, new OsuProvider(source));
}
@@ -126,7 +124,7 @@
@Test
public void verifyGetters() throws Exception {
OsuProvider provider = new OsuProvider(TEST_SSID, TEST_FRIENDLY_NAMES,
- TEST_SERVICE_DESCRIPTION, TEST_SERVER_URI, TEST_NAI, TEST_METHOD_LIST, TEST_ICON);
+ TEST_SERVICE_DESCRIPTION, TEST_SERVER_URI, TEST_NAI, TEST_METHOD_LIST);
assertTrue(TEST_SSID.equals(provider.getOsuSsid()));
assertTrue(TEST_FRIENDLY_NAME.equals(provider.getFriendlyName()));
@@ -135,6 +133,5 @@
assertTrue(TEST_SERVER_URI.equals(provider.getServerUri()));
assertTrue(TEST_NAI.equals(provider.getNetworkAccessIdentifier()));
assertTrue(TEST_METHOD_LIST.equals(provider.getMethodList()));
- assertTrue(TEST_ICON.sameAs(provider.getIcon()));
}
}
diff --git a/wifi/tests/src/android/net/wifi/p2p/WifiP2pConfigTest.java b/wifi/tests/src/android/net/wifi/p2p/WifiP2pConfigTest.java
index 41f109a..6199325 100644
--- a/wifi/tests/src/android/net/wifi/p2p/WifiP2pConfigTest.java
+++ b/wifi/tests/src/android/net/wifi/p2p/WifiP2pConfigTest.java
@@ -53,6 +53,13 @@
fail("Unexpected IllegalArgumentException");
}
+ // sunny case with maximum bytes for the network name
+ try {
+ b.setNetworkName("DIRECT-abcdefghijklmnopqrstuvwxy");
+ } catch (IllegalArgumentException e) {
+ fail("Unexpected IllegalArgumentException");
+ }
+
// less than 9 characters.
try {
b.setNetworkName("DIRECT-z");
@@ -77,6 +84,12 @@
b.setNetworkName("direct-a?");
fail("expected IllegalArgumentException");
} catch (IllegalArgumentException e) { }
+
+ // over maximum bytes
+ try {
+ b.setNetworkName("DIRECT-abcdefghijklmnopqrstuvwxyz");
+ fail("expected IllegalArgumentException");
+ } catch (IllegalArgumentException e) { }
}
/**